{
  "contractName": "ThreeArguments",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "argumentOne",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int8",
          "name": "argumentTwo",
          "type": "int8"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "argumentThree",
          "type": "bool"
        }
      ],
      "name": "ThreeArgumentsCalled",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "argumentOne",
          "type": "string"
        },
        {
          "internalType": "int8",
          "name": "argumentTwo",
          "type": "int8"
        },
        {
          "internalType": "bool",
          "name": "argumentThree",
          "type": "bool"
        }
      ],
      "name": "threeArguments",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"argumentOne\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int8\",\"name\":\"argumentTwo\",\"type\":\"int8\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"argumentThree\",\"type\":\"bool\"}],\"name\":\"ThreeArgumentsCalled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"argumentOne\",\"type\":\"string\"},{\"internalType\":\"int8\",\"name\":\"argumentTwo\",\"type\":\"int8\"},{\"internalType\":\"bool\",\"name\":\"argumentThree\",\"type\":\"bool\"}],\"name\":\"threeArguments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/TestContracts.sol\":\"ThreeArguments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/TestContracts.sol\":{\"keccak256\":\"0x60ff2c8c9a1e197a3b3a19820b8670c07c6c0ed638d90c5b3cfcffefca5607af\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://02ae5df1a136ca8cb7ac665495ba9ba34dd72133584ac2ec003cca99b0cfac65\",\"dweb:/ipfs/QmWGgSiviNBpBcP3KKSn6VEZeF7mNQkNzF3DapEQiWAwHf\"]},\"project:/contracts/handlers/HandlerHelpers.sol\":{\"keccak256\":\"0x9418d0646c373e028595a4a3abf5ac93948ea64efa031f1531c70a0500882d09\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://43e30989056cc8c5f0d2a26cb3a7e8a5d0d51dd2c832fb8d751c353226254871\",\"dweb:/ipfs/QmRpXPeLz7Qjh5qxMW4PyC8qkjrpEJCeCiqfobZyg28y6S\"]},\"project:/contracts/interfaces/IERCHandler.sol\":{\"keccak256\":\"0x4384276611a789db6481e1158d92c280fe5990ec0c375df30dd5e8f8a97cbb4c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3af488536c6d8f6b3090ca9b5fa54718941604a30f58bd66db641a6599a9f296\",\"dweb:/ipfs/QmSm988tQV4XtkCQpTbf2SbdCHp8AcjYZhQLhftPFXrUf2\"]},\"project:/contracts/utils/SafeCast.sol\":{\"keccak256\":\"0x07a3b86654f9e1a2d49822e82c7b98b8fe68767c21968c95951079c3048e82dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21e7bc82101b94d832601e5e2707e25ed93e788e1a363196221748090aafbf30\",\"dweb:/ipfs/QmWcjBuFMXvGsicL3DgegAR6BEt7HnuN9SbSSUHEFWzybk\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5061015e806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639280b90514610030575b600080fd5b6100ab6004803603606081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193509150803560000b906020013515156100ad565b005b7fd589183661fa75f94e2db32f4eb7ebb50f4154c160e15eb43f772a46f360a3a88484848460405180806020018460000b815260200183151581526020018281038252868682818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a15050505056fea2646970667358221220c79e62e896763b9d0587b0dd715f64a4e39a597265d47b8858a4111b5ab6fbfc64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80639280b90514610030575b600080fd5b6100ab6004803603606081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193509150803560000b906020013515156100ad565b005b7fd589183661fa75f94e2db32f4eb7ebb50f4154c160e15eb43f772a46f360a3a88484848460405180806020018460000b815260200183151581526020018281038252868682818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a15050505056fea2646970667358221220c79e62e896763b9d0587b0dd715f64a4e39a597265d47b8858a4111b5ab6fbfc64736f6c634300060c0033",
  "immutableReferences": {},
  "sourceMap": "719:306:42:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "719:306:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;840:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;840:183:42;-1:-1:-1;840:183:42;;;;;;;;;;;:::i;:::-;;;955:61;976:11;;989;1002:13;955:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;955:61:42;;;;;;;;-1:-1:-1;955:61:42;;-1:-1:-1;;;;;;955:61:42;840:183;;;;:::o",
  "source": "// SPDX-License-Identifier: LGPL-3.0-only\npragma solidity 0.6.12;\n\nimport \"./utils/SafeCast.sol\";\nimport \"./handlers/HandlerHelpers.sol\";\n\ncontract NoArgument {\n    event NoArgumentCalled();\n\n    function noArgument() external {\n        emit NoArgumentCalled();\n    }\n}\n\ncontract OneArgument {\n    event OneArgumentCalled(uint256 indexed argumentOne);\n\n    function oneArgument(uint256 argumentOne) external {\n        emit OneArgumentCalled(argumentOne);\n    }\n}\n\ncontract TwoArguments {\n    event TwoArgumentsCalled(address[] argumentOne, bytes4 argumentTwo);\n\n    function twoArguments(address[] calldata argumentOne, bytes4 argumentTwo) external {\n        emit TwoArgumentsCalled(argumentOne, argumentTwo);\n    }\n}\n\ncontract ThreeArguments {\n    event ThreeArgumentsCalled(string argumentOne, int8 argumentTwo, bool argumentThree);\n\n    function threeArguments(string calldata argumentOne, int8 argumentTwo, bool argumentThree) external {\n        emit ThreeArgumentsCalled(argumentOne, argumentTwo, argumentThree);\n    }\n}\n\ncontract WithDepositer {\n    event WithDepositerCalled(address argumentOne, uint256 argumentTwo);\n\n    function withDepositer(address argumentOne, uint256 argumentTwo) external {\n        emit WithDepositerCalled(argumentOne, argumentTwo);\n    }\n}\n\ncontract SafeCaster {\n    using SafeCast for *;\n\n    function toUint200(uint input) external pure returns(uint200) {\n        return input.toUint200();\n    }\n}\n\ncontract ReturnData {\n    function returnData(string memory argument) external pure returns(bytes32 response) {\n        assembly {\n            response := mload(add(argument, 32))\n        }\n    }\n}\n\ncontract HandlerRevert is HandlerHelpers {\n    uint private _totalAmount;\n\n    constructor(\n        address          bridgeAddress\n    ) public HandlerHelpers(bridgeAddress) {\n    }\n\n    function executeProposal(bytes32, bytes calldata) external view {\n        if (_totalAmount == 0) {\n            revert('Something bad happened');\n        }\n        return;\n    }\n\n    function virtualIncreaseBalance(uint amount) external {\n        _totalAmount = amount;\n    }\n}\n",
  "sourcePath": "/home/sigo/w/deer/ethsub/packages/sol/contracts/TestContracts.sol",
  "ast": {
    "absolutePath": "project:/contracts/TestContracts.sol",
    "exportedSymbols": {
      "HandlerRevert": [
        8235
      ],
      "NoArgument": [
        8086
      ],
      "OneArgument": [
        8101
      ],
      "ReturnData": [
        8193
      ],
      "SafeCaster": [
        8183
      ],
      "ThreeArguments": [
        8148
      ],
      "TwoArguments": [
        8123
      ],
      "WithDepositer": [
        8168
      ]
    },
    "id": 8236,
    "license": "LGPL-3.0-only",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8074,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "42:23:42"
      },
      {
        "absolutePath": "project:/contracts/utils/SafeCast.sol",
        "file": "./utils/SafeCast.sol",
        "id": 8075,
        "nodeType": "ImportDirective",
        "scope": 8236,
        "sourceUnit": 10342,
        "src": "67:30:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/handlers/HandlerHelpers.sol",
        "file": "./handlers/HandlerHelpers.sol",
        "id": 8076,
        "nodeType": "ImportDirective",
        "scope": 8236,
        "sourceUnit": 9783,
        "src": "98:39:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8086,
        "linearizedBaseContracts": [
          8086
        ],
        "name": "NoArgument",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 8078,
            "name": "NoArgumentCalled",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 8077,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "187:2:42"
            },
            "src": "165:25:42"
          },
          {
            "body": {
              "id": 8084,
              "nodeType": "Block",
              "src": "227:40:42",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8081,
                      "name": "NoArgumentCalled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8078,
                      "src": "242:16:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 8082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "242:18:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8083,
                  "nodeType": "EmitStatement",
                  "src": "237:23:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "568959ca",
            "id": 8085,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "noArgument",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8079,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "215:2:42"
            },
            "returnParameters": {
              "id": 8080,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "227:0:42"
            },
            "scope": 8086,
            "src": "196:71:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 8236,
        "src": "139:130:42"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8101,
        "linearizedBaseContracts": [
          8101
        ],
        "name": "OneArgument",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 8090,
            "name": "OneArgumentCalled",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 8089,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8088,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "argumentOne",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8090,
                  "src": "322:27:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8087,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "322:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "321:29:42"
            },
            "src": "298:53:42"
          },
          {
            "body": {
              "id": 8099,
              "nodeType": "Block",
              "src": "408:52:42",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8096,
                        "name": "argumentOne",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8092,
                        "src": "441:11:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8095,
                      "name": "OneArgumentCalled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8090,
                      "src": "423:17:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 8097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "423:30:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8098,
                  "nodeType": "EmitStatement",
                  "src": "418:35:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "c95cf0d8",
            "id": 8100,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "oneArgument",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8093,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8092,
                  "mutability": "mutable",
                  "name": "argumentOne",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8100,
                  "src": "378:19:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8091,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "378:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "377:21:42"
            },
            "returnParameters": {
              "id": 8094,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "408:0:42"
            },
            "scope": 8101,
            "src": "357:103:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 8236,
        "src": "271:191:42"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8123,
        "linearizedBaseContracts": [
          8123
        ],
        "name": "TwoArguments",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 8108,
            "name": "TwoArgumentsCalled",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 8107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8104,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "argumentOne",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8108,
                  "src": "517:21:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8102,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "517:7:42",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 8103,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "517:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8106,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "argumentTwo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8108,
                  "src": "540:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 8105,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "540:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "516:43:42"
            },
            "src": "492:68:42"
          },
          {
            "body": {
              "id": 8121,
              "nodeType": "Block",
              "src": "649:66:42",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8117,
                        "name": "argumentOne",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8111,
                        "src": "683:11:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8118,
                        "name": "argumentTwo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8113,
                        "src": "696:11:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 8116,
                      "name": "TwoArgumentsCalled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8108,
                      "src": "664:18:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_bytes4_$returns$__$",
                        "typeString": "function (address[] memory,bytes4)"
                      }
                    },
                    "id": 8119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "664:44:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8120,
                  "nodeType": "EmitStatement",
                  "src": "659:49:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "72e0745c",
            "id": 8122,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "twoArguments",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8114,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8111,
                  "mutability": "mutable",
                  "name": "argumentOne",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8122,
                  "src": "588:30:42",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8109,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "588:7:42",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 8110,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "588:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8113,
                  "mutability": "mutable",
                  "name": "argumentTwo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8122,
                  "src": "620:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 8112,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "620:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "587:52:42"
            },
            "returnParameters": {
              "id": 8115,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "649:0:42"
            },
            "scope": 8123,
            "src": "566:149:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 8236,
        "src": "464:253:42"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8148,
        "linearizedBaseContracts": [
          8148
        ],
        "name": "ThreeArguments",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 8131,
            "name": "ThreeArgumentsCalled",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 8130,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8125,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "argumentOne",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8131,
                  "src": "776:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8124,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8127,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "argumentTwo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8131,
                  "src": "796:16:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 8126,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "796:4:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8129,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "argumentThree",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8131,
                  "src": "814:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8128,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "814:4:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "775:58:42"
            },
            "src": "749:85:42"
          },
          {
            "body": {
              "id": 8146,
              "nodeType": "Block",
              "src": "940:83:42",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8141,
                        "name": "argumentOne",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8133,
                        "src": "976:11:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8142,
                        "name": "argumentTwo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8135,
                        "src": "989:11:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8143,
                        "name": "argumentThree",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8137,
                        "src": "1002:13:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8140,
                      "name": "ThreeArgumentsCalled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8131,
                      "src": "955:20:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_int8_$_t_bool_$returns$__$",
                        "typeString": "function (string memory,int8,bool)"
                      }
                    },
                    "id": 8144,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "955:61:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8145,
                  "nodeType": "EmitStatement",
                  "src": "950:66:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "9280b905",
            "id": 8147,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "threeArguments",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8138,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8133,
                  "mutability": "mutable",
                  "name": "argumentOne",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8147,
                  "src": "864:27:42",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8132,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "864:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8135,
                  "mutability": "mutable",
                  "name": "argumentTwo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8147,
                  "src": "893:16:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 8134,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "893:4:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8137,
                  "mutability": "mutable",
                  "name": "argumentThree",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8147,
                  "src": "911:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8136,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "911:4:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "863:67:42"
            },
            "returnParameters": {
              "id": 8139,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "940:0:42"
            },
            "scope": 8148,
            "src": "840:183:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 8236,
        "src": "719:306:42"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8168,
        "linearizedBaseContracts": [
          8168
        ],
        "name": "WithDepositer",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 8154,
            "name": "WithDepositerCalled",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 8153,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8150,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "argumentOne",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8154,
                  "src": "1082:19:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8149,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1082:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8152,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "argumentTwo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8154,
                  "src": "1103:19:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8151,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1103:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1081:42:42"
            },
            "src": "1056:68:42"
          },
          {
            "body": {
              "id": 8166,
              "nodeType": "Block",
              "src": "1204:67:42",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8162,
                        "name": "argumentOne",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8156,
                        "src": "1239:11:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8163,
                        "name": "argumentTwo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8158,
                        "src": "1252:11:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8161,
                      "name": "WithDepositerCalled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8154,
                      "src": "1219:19:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 8164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1219:45:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8165,
                  "nodeType": "EmitStatement",
                  "src": "1214:50:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "0a357c4f",
            "id": 8167,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "withDepositer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8159,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8156,
                  "mutability": "mutable",
                  "name": "argumentOne",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8167,
                  "src": "1153:19:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8155,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1153:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8158,
                  "mutability": "mutable",
                  "name": "argumentTwo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8167,
                  "src": "1174:19:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8157,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1174:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1152:42:42"
            },
            "returnParameters": {
              "id": 8160,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1204:0:42"
            },
            "scope": 8168,
            "src": "1130:141:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 8236,
        "src": "1027:246:42"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8183,
        "linearizedBaseContracts": [
          8183
        ],
        "name": "SafeCaster",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 8170,
            "libraryName": {
              "contractScope": null,
              "id": 8169,
              "name": "SafeCast",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10341,
              "src": "1307:8:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeCast_$10341",
                "typeString": "library SafeCast"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1301:21:42",
            "typeName": null
          },
          {
            "body": {
              "id": 8181,
              "nodeType": "Block",
              "src": "1390:41:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8177,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8172,
                        "src": "1407:5:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8178,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint200",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10274,
                      "src": "1407:15:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint200_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256) pure returns (uint200)"
                      }
                    },
                    "id": 8179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1407:17:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint200",
                      "typeString": "uint200"
                    }
                  },
                  "functionReturnParameters": 8176,
                  "id": 8180,
                  "nodeType": "Return",
                  "src": "1400:24:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "720ad674",
            "id": 8182,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toUint200",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8173,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8172,
                  "mutability": "mutable",
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8182,
                  "src": "1347:10:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8171,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1347:4:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1346:12:42"
            },
            "returnParameters": {
              "id": 8176,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8175,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8182,
                  "src": "1381:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint200",
                    "typeString": "uint200"
                  },
                  "typeName": {
                    "id": 8174,
                    "name": "uint200",
                    "nodeType": "ElementaryTypeName",
                    "src": "1381:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint200",
                      "typeString": "uint200"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1380:9:42"
            },
            "scope": 8183,
            "src": "1328:103:42",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 8236,
        "src": "1275:158:42"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8193,
        "linearizedBaseContracts": [
          8193
        ],
        "name": "ReturnData",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 8191,
              "nodeType": "Block",
              "src": "1545:85:42",
              "statements": [
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1564:60:42",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1578:36:42",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "argument",
                                  "nodeType": "YulIdentifier",
                                  "src": "1600:8:42"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1610:2:42",
                                  "type": "",
                                  "value": "32"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1596:3:42"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1596:17:42"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "1590:5:42"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1590:24:42"
                        },
                        "variableNames": [
                          {
                            "name": "response",
                            "nodeType": "YulIdentifier",
                            "src": "1578:8:42"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 8185,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1600:8:42",
                      "valueSize": 1
                    },
                    {
                      "declaration": 8188,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1578:8:42",
                      "valueSize": 1
                    }
                  ],
                  "id": 8190,
                  "nodeType": "InlineAssembly",
                  "src": "1555:69:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "e5f92e86",
            "id": 8192,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "returnData",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8186,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8185,
                  "mutability": "mutable",
                  "name": "argument",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8192,
                  "src": "1481:22:42",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8184,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1481:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1480:24:42"
            },
            "returnParameters": {
              "id": 8189,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8188,
                  "mutability": "mutable",
                  "name": "response",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8192,
                  "src": "1527:16:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8187,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1527:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1526:18:42"
            },
            "scope": 8193,
            "src": "1461:169:42",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 8236,
        "src": "1435:197:42"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8194,
              "name": "HandlerHelpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9782,
              "src": "1660:14:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_HandlerHelpers_$9782",
                "typeString": "contract HandlerHelpers"
              }
            },
            "id": 8195,
            "nodeType": "InheritanceSpecifier",
            "src": "1660:14:42"
          }
        ],
        "contractDependencies": [
          9782,
          9840
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8235,
        "linearizedBaseContracts": [
          8235,
          9782,
          9840
        ],
        "name": "HandlerRevert",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 8197,
            "mutability": "mutable",
            "name": "_totalAmount",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 8235,
            "src": "1681:25:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 8196,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "1681:4:42",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 8205,
              "nodeType": "Block",
              "src": "1808:7:42",
              "statements": []
            },
            "documentation": null,
            "id": 8206,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8202,
                    "name": "bridgeAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8199,
                    "src": "1793:13:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 8203,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8201,
                  "name": "HandlerHelpers",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9782,
                  "src": "1778:14:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_HandlerHelpers_$9782_$",
                    "typeString": "type(contract HandlerHelpers)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1778:29:42"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8200,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8199,
                  "mutability": "mutable",
                  "name": "bridgeAddress",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8206,
                  "src": "1734:30:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8198,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1734:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1724:46:42"
            },
            "returnParameters": {
              "id": 8204,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1808:0:42"
            },
            "scope": 8235,
            "src": "1713:102:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8223,
              "nodeType": "Block",
              "src": "1885:112:42",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8213,
                      "name": "_totalAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8197,
                      "src": "1899:12:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 8214,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1915:1:42",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1899:17:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8221,
                  "nodeType": "IfStatement",
                  "src": "1895:80:42",
                  "trueBody": {
                    "id": 8220,
                    "nodeType": "Block",
                    "src": "1918:57:42",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "536f6d657468696e67206261642068617070656e6564",
                              "id": 8217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1939:24:42",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f85a089cb0eafef65592a90b12b4576b26df61a14d137db2e8ef3ee302d69507",
                                "typeString": "literal_string \"Something bad happened\""
                              },
                              "value": "Something bad happened"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_f85a089cb0eafef65592a90b12b4576b26df61a14d137db2e8ef3ee302d69507",
                                "typeString": "literal_string \"Something bad happened\""
                              }
                            ],
                            "id": 8216,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "1932:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 8218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1932:32:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8219,
                        "nodeType": "ExpressionStatement",
                        "src": "1932:32:42"
                      }
                    ]
                  }
                },
                {
                  "expression": null,
                  "functionReturnParameters": 8212,
                  "id": 8222,
                  "nodeType": "Return",
                  "src": "1984:7:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "e248cff2",
            "id": 8224,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "executeProposal",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8211,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8208,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8224,
                  "src": "1846:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8207,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1846:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8210,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8224,
                  "src": "1855:14:42",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8209,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1855:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1845:25:42"
            },
            "returnParameters": {
              "id": 8212,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1885:0:42"
            },
            "scope": 8235,
            "src": "1821:176:42",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8233,
              "nodeType": "Block",
              "src": "2057:38:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8229,
                      "name": "_totalAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8197,
                      "src": "2067:12:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8230,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8226,
                      "src": "2082:6:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2067:21:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 8232,
                  "nodeType": "ExpressionStatement",
                  "src": "2067:21:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "c238eea1",
            "id": 8234,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "virtualIncreaseBalance",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8227,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8226,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8234,
                  "src": "2035:11:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8225,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2035:4:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2034:13:42"
            },
            "returnParameters": {
              "id": 8228,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2057:0:42"
            },
            "scope": 8235,
            "src": "2003:92:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 8236,
        "src": "1634:463:42"
      }
    ],
    "src": "42:2056:42"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "project:/contracts/TestContracts.sol",
      "exportedSymbols": {
        "HandlerRevert": [
          8235
        ],
        "NoArgument": [
          8086
        ],
        "OneArgument": [
          8101
        ],
        "ReturnData": [
          8193
        ],
        "SafeCaster": [
          8183
        ],
        "ThreeArguments": [
          8148
        ],
        "TwoArguments": [
          8123
        ],
        "WithDepositer": [
          8168
        ]
      },
      "license": "LGPL-3.0-only"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.6",
            ".12"
          ]
        },
        "id": 8074,
        "name": "PragmaDirective",
        "src": "42:23:42"
      },
      {
        "attributes": {
          "SourceUnit": 10342,
          "absolutePath": "project:/contracts/utils/SafeCast.sol",
          "file": "./utils/SafeCast.sol",
          "scope": 8236,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 8075,
        "name": "ImportDirective",
        "src": "67:30:42"
      },
      {
        "attributes": {
          "SourceUnit": 9783,
          "absolutePath": "project:/contracts/handlers/HandlerHelpers.sol",
          "file": "./handlers/HandlerHelpers.sol",
          "scope": 8236,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 8076,
        "name": "ImportDirective",
        "src": "98:39:42"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            8086
          ],
          "name": "NoArgument",
          "scope": 8236
        },
        "children": [
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "NoArgumentCalled"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8077,
                "name": "ParameterList",
                "src": "187:2:42"
              }
            ],
            "id": 8078,
            "name": "EventDefinition",
            "src": "165:25:42"
          },
          {
            "attributes": {
              "documentation": null,
              "functionSelector": "568959ca",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "noArgument",
              "overrides": null,
              "scope": 8086,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8079,
                "name": "ParameterList",
                "src": "215:2:42"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8080,
                "name": "ParameterList",
                "src": "227:0:42"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8078,
                              "type": "function ()",
                              "value": "NoArgumentCalled"
                            },
                            "id": 8081,
                            "name": "Identifier",
                            "src": "242:16:42"
                          }
                        ],
                        "id": 8082,
                        "name": "FunctionCall",
                        "src": "242:18:42"
                      }
                    ],
                    "id": 8083,
                    "name": "EmitStatement",
                    "src": "237:23:42"
                  }
                ],
                "id": 8084,
                "name": "Block",
                "src": "227:40:42"
              }
            ],
            "id": 8085,
            "name": "FunctionDefinition",
            "src": "196:71:42"
          }
        ],
        "id": 8086,
        "name": "ContractDefinition",
        "src": "139:130:42"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            8101
          ],
          "name": "OneArgument",
          "scope": 8236
        },
        "children": [
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "OneArgumentCalled"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "argumentOne",
                      "overrides": null,
                      "scope": 8090,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8087,
                        "name": "ElementaryTypeName",
                        "src": "322:7:42"
                      }
                    ],
                    "id": 8088,
                    "name": "VariableDeclaration",
                    "src": "322:27:42"
                  }
                ],
                "id": 8089,
                "name": "ParameterList",
                "src": "321:29:42"
              }
            ],
            "id": 8090,
            "name": "EventDefinition",
            "src": "298:53:42"
          },
          {
            "attributes": {
              "documentation": null,
              "functionSelector": "c95cf0d8",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "oneArgument",
              "overrides": null,
              "scope": 8101,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "argumentOne",
                      "overrides": null,
                      "scope": 8100,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8091,
                        "name": "ElementaryTypeName",
                        "src": "378:7:42"
                      }
                    ],
                    "id": 8092,
                    "name": "VariableDeclaration",
                    "src": "378:19:42"
                  }
                ],
                "id": 8093,
                "name": "ParameterList",
                "src": "377:21:42"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8094,
                "name": "ParameterList",
                "src": "408:0:42"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8090,
                              "type": "function (uint256)",
                              "value": "OneArgumentCalled"
                            },
                            "id": 8095,
                            "name": "Identifier",
                            "src": "423:17:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8092,
                              "type": "uint256",
                              "value": "argumentOne"
                            },
                            "id": 8096,
                            "name": "Identifier",
                            "src": "441:11:42"
                          }
                        ],
                        "id": 8097,
                        "name": "FunctionCall",
                        "src": "423:30:42"
                      }
                    ],
                    "id": 8098,
                    "name": "EmitStatement",
                    "src": "418:35:42"
                  }
                ],
                "id": 8099,
                "name": "Block",
                "src": "408:52:42"
              }
            ],
            "id": 8100,
            "name": "FunctionDefinition",
            "src": "357:103:42"
          }
        ],
        "id": 8101,
        "name": "ContractDefinition",
        "src": "271:191:42"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            8123
          ],
          "name": "TwoArguments",
          "scope": 8236
        },
        "children": [
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "TwoArgumentsCalled"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "argumentOne",
                      "overrides": null,
                      "scope": 8108,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address[]",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "address[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 8102,
                            "name": "ElementaryTypeName",
                            "src": "517:7:42"
                          }
                        ],
                        "id": 8103,
                        "name": "ArrayTypeName",
                        "src": "517:9:42"
                      }
                    ],
                    "id": 8104,
                    "name": "VariableDeclaration",
                    "src": "517:21:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "argumentTwo",
                      "overrides": null,
                      "scope": 8108,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 8105,
                        "name": "ElementaryTypeName",
                        "src": "540:6:42"
                      }
                    ],
                    "id": 8106,
                    "name": "VariableDeclaration",
                    "src": "540:18:42"
                  }
                ],
                "id": 8107,
                "name": "ParameterList",
                "src": "516:43:42"
              }
            ],
            "id": 8108,
            "name": "EventDefinition",
            "src": "492:68:42"
          },
          {
            "attributes": {
              "documentation": null,
              "functionSelector": "72e0745c",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "twoArguments",
              "overrides": null,
              "scope": 8123,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "argumentOne",
                      "overrides": null,
                      "scope": 8122,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "address[]",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "address[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 8109,
                            "name": "ElementaryTypeName",
                            "src": "588:7:42"
                          }
                        ],
                        "id": 8110,
                        "name": "ArrayTypeName",
                        "src": "588:9:42"
                      }
                    ],
                    "id": 8111,
                    "name": "VariableDeclaration",
                    "src": "588:30:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "argumentTwo",
                      "overrides": null,
                      "scope": 8122,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 8112,
                        "name": "ElementaryTypeName",
                        "src": "620:6:42"
                      }
                    ],
                    "id": 8113,
                    "name": "VariableDeclaration",
                    "src": "620:18:42"
                  }
                ],
                "id": 8114,
                "name": "ParameterList",
                "src": "587:52:42"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8115,
                "name": "ParameterList",
                "src": "649:0:42"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8108,
                              "type": "function (address[] memory,bytes4)",
                              "value": "TwoArgumentsCalled"
                            },
                            "id": 8116,
                            "name": "Identifier",
                            "src": "664:18:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8111,
                              "type": "address[] calldata",
                              "value": "argumentOne"
                            },
                            "id": 8117,
                            "name": "Identifier",
                            "src": "683:11:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8113,
                              "type": "bytes4",
                              "value": "argumentTwo"
                            },
                            "id": 8118,
                            "name": "Identifier",
                            "src": "696:11:42"
                          }
                        ],
                        "id": 8119,
                        "name": "FunctionCall",
                        "src": "664:44:42"
                      }
                    ],
                    "id": 8120,
                    "name": "EmitStatement",
                    "src": "659:49:42"
                  }
                ],
                "id": 8121,
                "name": "Block",
                "src": "649:66:42"
              }
            ],
            "id": 8122,
            "name": "FunctionDefinition",
            "src": "566:149:42"
          }
        ],
        "id": 8123,
        "name": "ContractDefinition",
        "src": "464:253:42"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            8148
          ],
          "name": "ThreeArguments",
          "scope": 8236
        },
        "children": [
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "ThreeArgumentsCalled"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "argumentOne",
                      "overrides": null,
                      "scope": 8131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 8124,
                        "name": "ElementaryTypeName",
                        "src": "776:6:42"
                      }
                    ],
                    "id": 8125,
                    "name": "VariableDeclaration",
                    "src": "776:18:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "argumentTwo",
                      "overrides": null,
                      "scope": 8131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int8",
                          "type": "int8"
                        },
                        "id": 8126,
                        "name": "ElementaryTypeName",
                        "src": "796:4:42"
                      }
                    ],
                    "id": 8127,
                    "name": "VariableDeclaration",
                    "src": "796:16:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "argumentThree",
                      "overrides": null,
                      "scope": 8131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 8128,
                        "name": "ElementaryTypeName",
                        "src": "814:4:42"
                      }
                    ],
                    "id": 8129,
                    "name": "VariableDeclaration",
                    "src": "814:18:42"
                  }
                ],
                "id": 8130,
                "name": "ParameterList",
                "src": "775:58:42"
              }
            ],
            "id": 8131,
            "name": "EventDefinition",
            "src": "749:85:42"
          },
          {
            "attributes": {
              "documentation": null,
              "functionSelector": "9280b905",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "threeArguments",
              "overrides": null,
              "scope": 8148,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "argumentOne",
                      "overrides": null,
                      "scope": 8147,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "string",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 8132,
                        "name": "ElementaryTypeName",
                        "src": "864:6:42"
                      }
                    ],
                    "id": 8133,
                    "name": "VariableDeclaration",
                    "src": "864:27:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "argumentTwo",
                      "overrides": null,
                      "scope": 8147,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int8",
                          "type": "int8"
                        },
                        "id": 8134,
                        "name": "ElementaryTypeName",
                        "src": "893:4:42"
                      }
                    ],
                    "id": 8135,
                    "name": "VariableDeclaration",
                    "src": "893:16:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "argumentThree",
                      "overrides": null,
                      "scope": 8147,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 8136,
                        "name": "ElementaryTypeName",
                        "src": "911:4:42"
                      }
                    ],
                    "id": 8137,
                    "name": "VariableDeclaration",
                    "src": "911:18:42"
                  }
                ],
                "id": 8138,
                "name": "ParameterList",
                "src": "863:67:42"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8139,
                "name": "ParameterList",
                "src": "940:0:42"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                },
                                {
                                  "typeIdentifier": "t_int8",
                                  "typeString": "int8"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8131,
                              "type": "function (string memory,int8,bool)",
                              "value": "ThreeArgumentsCalled"
                            },
                            "id": 8140,
                            "name": "Identifier",
                            "src": "955:20:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8133,
                              "type": "string calldata",
                              "value": "argumentOne"
                            },
                            "id": 8141,
                            "name": "Identifier",
                            "src": "976:11:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8135,
                              "type": "int8",
                              "value": "argumentTwo"
                            },
                            "id": 8142,
                            "name": "Identifier",
                            "src": "989:11:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8137,
                              "type": "bool",
                              "value": "argumentThree"
                            },
                            "id": 8143,
                            "name": "Identifier",
                            "src": "1002:13:42"
                          }
                        ],
                        "id": 8144,
                        "name": "FunctionCall",
                        "src": "955:61:42"
                      }
                    ],
                    "id": 8145,
                    "name": "EmitStatement",
                    "src": "950:66:42"
                  }
                ],
                "id": 8146,
                "name": "Block",
                "src": "940:83:42"
              }
            ],
            "id": 8147,
            "name": "FunctionDefinition",
            "src": "840:183:42"
          }
        ],
        "id": 8148,
        "name": "ContractDefinition",
        "src": "719:306:42"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            8168
          ],
          "name": "WithDepositer",
          "scope": 8236
        },
        "children": [
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "WithDepositerCalled"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "argumentOne",
                      "overrides": null,
                      "scope": 8154,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 8149,
                        "name": "ElementaryTypeName",
                        "src": "1082:7:42"
                      }
                    ],
                    "id": 8150,
                    "name": "VariableDeclaration",
                    "src": "1082:19:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "argumentTwo",
                      "overrides": null,
                      "scope": 8154,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8151,
                        "name": "ElementaryTypeName",
                        "src": "1103:7:42"
                      }
                    ],
                    "id": 8152,
                    "name": "VariableDeclaration",
                    "src": "1103:19:42"
                  }
                ],
                "id": 8153,
                "name": "ParameterList",
                "src": "1081:42:42"
              }
            ],
            "id": 8154,
            "name": "EventDefinition",
            "src": "1056:68:42"
          },
          {
            "attributes": {
              "documentation": null,
              "functionSelector": "0a357c4f",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "withDepositer",
              "overrides": null,
              "scope": 8168,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "argumentOne",
                      "overrides": null,
                      "scope": 8167,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 8155,
                        "name": "ElementaryTypeName",
                        "src": "1153:7:42"
                      }
                    ],
                    "id": 8156,
                    "name": "VariableDeclaration",
                    "src": "1153:19:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "argumentTwo",
                      "overrides": null,
                      "scope": 8167,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8157,
                        "name": "ElementaryTypeName",
                        "src": "1174:7:42"
                      }
                    ],
                    "id": 8158,
                    "name": "VariableDeclaration",
                    "src": "1174:19:42"
                  }
                ],
                "id": 8159,
                "name": "ParameterList",
                "src": "1152:42:42"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8160,
                "name": "ParameterList",
                "src": "1204:0:42"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8154,
                              "type": "function (address,uint256)",
                              "value": "WithDepositerCalled"
                            },
                            "id": 8161,
                            "name": "Identifier",
                            "src": "1219:19:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8156,
                              "type": "address",
                              "value": "argumentOne"
                            },
                            "id": 8162,
                            "name": "Identifier",
                            "src": "1239:11:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8158,
                              "type": "uint256",
                              "value": "argumentTwo"
                            },
                            "id": 8163,
                            "name": "Identifier",
                            "src": "1252:11:42"
                          }
                        ],
                        "id": 8164,
                        "name": "FunctionCall",
                        "src": "1219:45:42"
                      }
                    ],
                    "id": 8165,
                    "name": "EmitStatement",
                    "src": "1214:50:42"
                  }
                ],
                "id": 8166,
                "name": "Block",
                "src": "1204:67:42"
              }
            ],
            "id": 8167,
            "name": "FunctionDefinition",
            "src": "1130:141:42"
          }
        ],
        "id": 8168,
        "name": "ContractDefinition",
        "src": "1027:246:42"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            8183
          ],
          "name": "SafeCaster",
          "scope": 8236
        },
        "children": [
          {
            "attributes": {
              "typeName": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeCast",
                  "referencedDeclaration": 10341,
                  "type": "library SafeCast"
                },
                "id": 8169,
                "name": "UserDefinedTypeName",
                "src": "1307:8:42"
              }
            ],
            "id": 8170,
            "name": "UsingForDirective",
            "src": "1301:21:42"
          },
          {
            "attributes": {
              "documentation": null,
              "functionSelector": "720ad674",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "toUint200",
              "overrides": null,
              "scope": 8183,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "input",
                      "overrides": null,
                      "scope": 8182,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 8171,
                        "name": "ElementaryTypeName",
                        "src": "1347:4:42"
                      }
                    ],
                    "id": 8172,
                    "name": "VariableDeclaration",
                    "src": "1347:10:42"
                  }
                ],
                "id": 8173,
                "name": "ParameterList",
                "src": "1346:12:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 8182,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint200",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint200",
                          "type": "uint200"
                        },
                        "id": 8174,
                        "name": "ElementaryTypeName",
                        "src": "1381:7:42"
                      }
                    ],
                    "id": 8175,
                    "name": "VariableDeclaration",
                    "src": "1381:7:42"
                  }
                ],
                "id": 8176,
                "name": "ParameterList",
                "src": "1380:9:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 8176
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint200",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "toUint200",
                              "referencedDeclaration": 10274,
                              "type": "function (uint256) pure returns (uint200)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8172,
                                  "type": "uint256",
                                  "value": "input"
                                },
                                "id": 8177,
                                "name": "Identifier",
                                "src": "1407:5:42"
                              }
                            ],
                            "id": 8178,
                            "name": "MemberAccess",
                            "src": "1407:15:42"
                          }
                        ],
                        "id": 8179,
                        "name": "FunctionCall",
                        "src": "1407:17:42"
                      }
                    ],
                    "id": 8180,
                    "name": "Return",
                    "src": "1400:24:42"
                  }
                ],
                "id": 8181,
                "name": "Block",
                "src": "1390:41:42"
              }
            ],
            "id": 8182,
            "name": "FunctionDefinition",
            "src": "1328:103:42"
          }
        ],
        "id": 8183,
        "name": "ContractDefinition",
        "src": "1275:158:42"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            8193
          ],
          "name": "ReturnData",
          "scope": 8236
        },
        "children": [
          {
            "attributes": {
              "documentation": null,
              "functionSelector": "e5f92e86",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "returnData",
              "overrides": null,
              "scope": 8193,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "argument",
                      "overrides": null,
                      "scope": 8192,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 8184,
                        "name": "ElementaryTypeName",
                        "src": "1481:6:42"
                      }
                    ],
                    "id": 8185,
                    "name": "VariableDeclaration",
                    "src": "1481:22:42"
                  }
                ],
                "id": 8186,
                "name": "ParameterList",
                "src": "1480:24:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "response",
                      "overrides": null,
                      "scope": 8192,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 8187,
                        "name": "ElementaryTypeName",
                        "src": "1527:7:42"
                      }
                    ],
                    "id": 8188,
                    "name": "VariableDeclaration",
                    "src": "1527:16:42"
                  }
                ],
                "id": 8189,
                "name": "ParameterList",
                "src": "1526:18:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 8185,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1600:8:42",
                          "valueSize": 1
                        },
                        {
                          "declaration": 8188,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1578:8:42",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    response := mload(add(argument, 32))\n}"
                    },
                    "children": [],
                    "id": 8190,
                    "name": "InlineAssembly",
                    "src": "1555:69:42"
                  }
                ],
                "id": 8191,
                "name": "Block",
                "src": "1545:85:42"
              }
            ],
            "id": 8192,
            "name": "FunctionDefinition",
            "src": "1461:169:42"
          }
        ],
        "id": 8193,
        "name": "ContractDefinition",
        "src": "1435:197:42"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            9782,
            9840
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            8235,
            9782,
            9840
          ],
          "name": "HandlerRevert",
          "scope": 8236
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "HandlerHelpers",
                  "referencedDeclaration": 9782,
                  "type": "contract HandlerHelpers"
                },
                "id": 8194,
                "name": "UserDefinedTypeName",
                "src": "1660:14:42"
              }
            ],
            "id": 8195,
            "name": "InheritanceSpecifier",
            "src": "1660:14:42"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_totalAmount",
              "overrides": null,
              "scope": 8235,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "value": null,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 8196,
                "name": "ElementaryTypeName",
                "src": "1681:4:42"
              }
            ],
            "id": 8197,
            "name": "VariableDeclaration",
            "src": "1681:25:42"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "name": "",
              "overrides": null,
              "scope": 8235,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "bridgeAddress",
                      "overrides": null,
                      "scope": 8206,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 8198,
                        "name": "ElementaryTypeName",
                        "src": "1734:7:42"
                      }
                    ],
                    "id": 8199,
                    "name": "VariableDeclaration",
                    "src": "1734:30:42"
                  }
                ],
                "id": 8200,
                "name": "ParameterList",
                "src": "1724:46:42"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8204,
                "name": "ParameterList",
                "src": "1808:0:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 9782,
                      "type": "type(contract HandlerHelpers)",
                      "value": "HandlerHelpers"
                    },
                    "id": 8201,
                    "name": "Identifier",
                    "src": "1778:14:42"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 8199,
                      "type": "address",
                      "value": "bridgeAddress"
                    },
                    "id": 8202,
                    "name": "Identifier",
                    "src": "1793:13:42"
                  }
                ],
                "id": 8203,
                "name": "ModifierInvocation",
                "src": "1778:29:42"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 8205,
                "name": "Block",
                "src": "1808:7:42"
              }
            ],
            "id": 8206,
            "name": "FunctionDefinition",
            "src": "1713:102:42"
          },
          {
            "attributes": {
              "documentation": null,
              "functionSelector": "e248cff2",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "executeProposal",
              "overrides": null,
              "scope": 8235,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 8224,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 8207,
                        "name": "ElementaryTypeName",
                        "src": "1846:7:42"
                      }
                    ],
                    "id": 8208,
                    "name": "VariableDeclaration",
                    "src": "1846:7:42"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 8224,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 8209,
                        "name": "ElementaryTypeName",
                        "src": "1855:5:42"
                      }
                    ],
                    "id": 8210,
                    "name": "VariableDeclaration",
                    "src": "1855:14:42"
                  }
                ],
                "id": 8211,
                "name": "ParameterList",
                "src": "1845:25:42"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8212,
                "name": "ParameterList",
                "src": "1885:0:42"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8197,
                              "type": "uint256",
                              "value": "_totalAmount"
                            },
                            "id": 8213,
                            "name": "Identifier",
                            "src": "1899:12:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 8214,
                            "name": "Literal",
                            "src": "1915:1:42"
                          }
                        ],
                        "id": 8215,
                        "name": "BinaryOperation",
                        "src": "1899:17:42"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_f85a089cb0eafef65592a90b12b4576b26df61a14d137db2e8ef3ee302d69507",
                                          "typeString": "literal_string \"Something bad happened\""
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        -19,
                                        -19
                                      ],
                                      "referencedDeclaration": -19,
                                      "type": "function (string memory) pure",
                                      "value": "revert"
                                    },
                                    "id": 8216,
                                    "name": "Identifier",
                                    "src": "1932:6:42"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "536f6d657468696e67206261642068617070656e6564",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "string",
                                      "type": "literal_string \"Something bad happened\"",
                                      "value": "Something bad happened"
                                    },
                                    "id": 8217,
                                    "name": "Literal",
                                    "src": "1939:24:42"
                                  }
                                ],
                                "id": 8218,
                                "name": "FunctionCall",
                                "src": "1932:32:42"
                              }
                            ],
                            "id": 8219,
                            "name": "ExpressionStatement",
                            "src": "1932:32:42"
                          }
                        ],
                        "id": 8220,
                        "name": "Block",
                        "src": "1918:57:42"
                      }
                    ],
                    "id": 8221,
                    "name": "IfStatement",
                    "src": "1895:80:42"
                  },
                  {
                    "attributes": {
                      "expression": null,
                      "functionReturnParameters": 8212
                    },
                    "id": 8222,
                    "name": "Return",
                    "src": "1984:7:42"
                  }
                ],
                "id": 8223,
                "name": "Block",
                "src": "1885:112:42"
              }
            ],
            "id": 8224,
            "name": "FunctionDefinition",
            "src": "1821:176:42"
          },
          {
            "attributes": {
              "documentation": null,
              "functionSelector": "c238eea1",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "virtualIncreaseBalance",
              "overrides": null,
              "scope": 8235,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "overrides": null,
                      "scope": 8234,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 8225,
                        "name": "ElementaryTypeName",
                        "src": "2035:4:42"
                      }
                    ],
                    "id": 8226,
                    "name": "VariableDeclaration",
                    "src": "2035:11:42"
                  }
                ],
                "id": 8227,
                "name": "ParameterList",
                "src": "2034:13:42"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8228,
                "name": "ParameterList",
                "src": "2057:0:42"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8197,
                              "type": "uint256",
                              "value": "_totalAmount"
                            },
                            "id": 8229,
                            "name": "Identifier",
                            "src": "2067:12:42"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8226,
                              "type": "uint256",
                              "value": "amount"
                            },
                            "id": 8230,
                            "name": "Identifier",
                            "src": "2082:6:42"
                          }
                        ],
                        "id": 8231,
                        "name": "Assignment",
                        "src": "2067:21:42"
                      }
                    ],
                    "id": 8232,
                    "name": "ExpressionStatement",
                    "src": "2067:21:42"
                  }
                ],
                "id": 8233,
                "name": "Block",
                "src": "2057:38:42"
              }
            ],
            "id": 8234,
            "name": "FunctionDefinition",
            "src": "2003:92:42"
          }
        ],
        "id": 8235,
        "name": "ContractDefinition",
        "src": "1634:463:42"
      }
    ],
    "id": 8236,
    "name": "SourceUnit",
    "src": "42:2056:42"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.3",
  "updatedAt": "2021-11-29T02:07:34.254Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}