diff --git a/build/contracts/ERC20Interface.json b/build/contracts/ERC20Interface.json new file mode 100644 index 0000000..77becc2 --- /dev/null +++ b/build/contracts/ERC20Interface.json @@ -0,0 +1,8175 @@ +{ + "contractName": "ERC20Interface", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "name": "_spender", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "remaining", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.4.24;\n \n// ----------------------------------------------------------------------------------------------\n// Sample fixed supply token contract\n// Enjoy. (c) BokkyPooBah 2017. The MIT Licence.\n// ----------------------------------------------------------------------------------------------\n \n// ERC Token Standard #20 Interface\n// https://github.com/ethereum/EIPs/issues/20\ncontract ERC20Interface {\n // Get the total token supply\n function totalSupply() public constant returns (uint256);\n\n // Get the account balance of another account with address _owner\n function balanceOf(address _owner) public constant returns (uint256 balance);\n\n // Send _value amount of tokens to address _to\n function transfer(address _to, uint256 _value) public returns (bool success);\n\n // Send _value amount of tokens from address _from to address _to\n function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);\n\n // Allow _spender to withdraw from your account, multiple times, up to the _value amount.\n // If this function is called again it overwrites the current allowance with _value.\n // this function is required for some DEX functionality\n function approve(address _spender, uint256 _value) public returns (bool success);\n\n // Returns the amount which _spender is still allowed to withdraw from _owner\n function allowance(address _owner, address _spender) public constant returns (uint256 remaining);\n\n // Triggered when tokens are transferred.\n event Transfer(address indexed _from, address indexed _to, uint256 _value);\n\n // Triggered whenever approve(address _spender, uint256 _value) is called.\n event Approval(address indexed _owner, address indexed _spender, uint256 _value);\n}\n \ncontract FixedSupplyToken is ERC20Interface {\n string public constant symbol = \"FIXED\";\n string public constant name = \"Example Fixed Supply Token\";\n uint8 public constant decimals = 18;\n uint256 _totalSupply = 1000000;\n \n // Owner of this contract\n address public owner;\n\n // Balances for each account\n mapping(address => uint256) balances;\n\n // Owner of account approves the transfer of an amount to another account\n mapping(address => mapping (address => uint256)) allowed;\n\n // Functions with this modifier can only be executed by the owner\n modifier onlyOwner() {\n if (msg.sender != owner) {\n revert();\n }\n _;\n }\n\n // Constructor\n constructor() public {\n owner = msg.sender;\n balances[owner] = _totalSupply;\n }\n\n function totalSupply() public constant returns (uint256) {\n return _totalSupply;\n }\n\n // What is the balance of a particular account?\n function balanceOf(address _owner) public constant returns (uint256 balance) {\n return balances[_owner];\n }\n\n // Transfer the balance from owner's account to another account\n function transfer(address _to, uint256 _amount) public returns (bool success) {\n if (balances[msg.sender] >= _amount && _amount > 0 && balances[_to] + _amount > balances[_to]) {\n balances[msg.sender] -= _amount;\n balances[_to] += _amount;\n emit Transfer(msg.sender, _to, _amount);\n return true;\n } else {\n return false;\n }\n }\n\n // Send _value amount of tokens from address _from to address _to\n // The transferFrom method is used for a withdraw workflow, allowing contracts to send\n // tokens on your behalf, for example to \"deposit\" to a contract address and/or to charge\n // fees in sub-currencies; the command should fail unless the _from account has\n // deliberately authorized the sender of the message via some mechanism; we propose\n // these standardized APIs for approval:\n function transferFrom(\n address _from,\n address _to,\n uint256 _amount\n ) public returns (bool success) {\n if (balances[_from] >= _amount && allowed[_from][msg.sender] >= _amount && _amount > 0 && balances[_to] + _amount > balances[_to]) {\n balances[_from] -= _amount;\n allowed[_from][msg.sender] -= _amount;\n balances[_to] += _amount;\n emit Transfer(_from, _to, _amount);\n return true;\n } else {\n return false;\n }\n }\n\n // Allow _spender to withdraw from your account, multiple times, up to the _value amount.\n // If this function is called again it overwrites the current allowance with _value.\n function approve(address _spender, uint256 _amount) public returns (bool success) {\n allowed[msg.sender][_spender] = _amount;\n emit Approval(msg.sender, _spender, _amount);\n return true;\n }\n\n function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {\n return allowed[_owner][_spender];\n }\n}\n", + "sourcePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/FixedSupplyToken.sol", + "ast": { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/FixedSupplyToken.sol", + "exportedSymbols": { + "ERC20Interface": [ + 87 + ], + "FixedSupplyToken": [ + 337 + ] + }, + "id": 338, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 20, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 87, + "linearizedBaseContracts": [ + 87 + ], + "name": "ERC20Interface", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 25, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 21, + "nodeType": "ParameterList", + "parameters": [], + "src": "476:2:1" + }, + "payable": false, + "returnParameters": { + "id": 24, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "504:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 22, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "504:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "503:9:1" + }, + "scope": 87, + "src": "456:57:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 32, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 27, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 32, + "src": "604:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 26, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "604:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "603:16:1" + }, + "payable": false, + "returnParameters": { + "id": 31, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 30, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 32, + "src": "645:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "645:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "644:17:1" + }, + "scope": 87, + "src": "585:77:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 41, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 37, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "733:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "733:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 36, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "746:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "746:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "732:29:1" + }, + "payable": false, + "returnParameters": { + "id": 40, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 39, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "778:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 38, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "778:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "777:14:1" + }, + "scope": 87, + "src": "715:77:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 52, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 48, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "886:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 42, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "886:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 45, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "901:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "901:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 47, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "914:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 46, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "914:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "885:44:1" + }, + "payable": false, + "returnParameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "946:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 49, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "946:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "945:14:1" + }, + "scope": 87, + "src": "864:96:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 61, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 57, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 54, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "1218:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 53, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1218:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 56, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "1236:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 55, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1236:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1217:34:1" + }, + "payable": false, + "returnParameters": { + "id": 60, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 59, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "1268:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 58, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1268:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1267:14:1" + }, + "scope": 87, + "src": "1201:81:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 70, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 66, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 63, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1385:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 62, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1385:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 65, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1401:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 64, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1401:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1384:34:1" + }, + "payable": false, + "returnParameters": { + "id": 69, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 68, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1444:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 67, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1443:19:1" + }, + "scope": 87, + "src": "1366:97:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 78, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 72, + "indexed": true, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "1526:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 71, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1526:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 74, + "indexed": true, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "1549:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 73, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1549:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 76, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "1570:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 75, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1570:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1525:60:1" + }, + "src": "1511:75:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 86, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 85, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 80, + "indexed": true, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1682:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 79, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1682:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 82, + "indexed": true, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1706:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 81, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1706:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 84, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1732:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 83, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1732:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1681:66:1" + }, + "src": "1667:81:1" + } + ], + "scope": 338, + "src": "396:1354:1" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 88, + "name": "ERC20Interface", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 87, + "src": "1782:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$87", + "typeString": "contract ERC20Interface" + } + }, + "id": 89, + "nodeType": "InheritanceSpecifier", + "src": "1782:14:1" + } + ], + "contractDependencies": [ + 87 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 337, + "linearizedBaseContracts": [ + 337, + 87 + ], + "name": "FixedSupplyToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 92, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1801:39:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 90, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1801:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4649584544", + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1833:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_30ea4be232861f7555116fcc950136f9a04cb61860a8c2bc4b1f7869fc756d12", + "typeString": "literal_string \"FIXED\"" + }, + "value": "FIXED" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 95, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1844:58:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 93, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1844:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4578616d706c6520466978656420537570706c7920546f6b656e", + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1874:28:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bb9c3319413d3ba6031e2ada8c5734434921f54973b7e9c9cdcde2469242268e", + "typeString": "literal_string \"Example Fixed Supply Token\"" + }, + "value": "Example Fixed Supply Token" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 98, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1906:35:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 96, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1906:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3138", + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1939:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 101, + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1945:30:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 99, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1945:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1968:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "2010:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2010:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 107, + "name": "balances", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "2066:36:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 106, + "keyType": { + "id": 104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2074:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2066:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2085:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "name": "allowed", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "2183:56:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 112, + "keyType": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2191:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2183:48:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 111, + "keyType": { + "id": 109, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2211:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2202:28:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2222:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 125, + "nodeType": "Block", + "src": "2333:65:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 115, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "2343:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2343:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 117, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2357:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2343:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 123, + "nodeType": "IfStatement", + "src": "2339:48:1", + "trueBody": { + "id": 122, + "nodeType": "Block", + "src": "2364:23:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 119, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "2372:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2372:8:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 121, + "nodeType": "ExpressionStatement", + "src": "2372:8:1" + } + ] + } + }, + { + "id": 124, + "nodeType": "PlaceholderStatement", + "src": "2392:1:1" + } + ] + }, + "documentation": null, + "id": 126, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 114, + "nodeType": "ParameterList", + "parameters": [], + "src": "2330:2:1" + }, + "src": "2312:86:1", + "visibility": "internal" + }, + { + "body": { + "id": 140, + "nodeType": "Block", + "src": "2440:65:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 129, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2446:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 130, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "2454:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2454:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2446:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 133, + "nodeType": "ExpressionStatement", + "src": "2446:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 134, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2470:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 136, + "indexExpression": { + "argumentTypes": null, + "id": 135, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2479:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2470:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 137, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2488:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2470:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "2470:30:1" + } + ] + }, + "documentation": null, + "id": 141, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 127, + "nodeType": "ParameterList", + "parameters": [], + "src": "2430:2:1" + }, + "payable": false, + "returnParameters": { + "id": 128, + "nodeType": "ParameterList", + "parameters": [], + "src": "2440:0:1" + }, + "scope": 337, + "src": "2419:86:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 148, + "nodeType": "Block", + "src": "2566:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 146, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2579:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 145, + "id": 147, + "nodeType": "Return", + "src": "2572:19:1" + } + ] + }, + "documentation": null, + "id": 149, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [], + "src": "2529:2:1" + }, + "payable": false, + "returnParameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 144, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "2557:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2557:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2556:9:1" + }, + "scope": 337, + "src": "2509:87:1", + "stateMutability": "view", + "superFunction": 25, + "visibility": "public" + }, + { + "body": { + "id": 160, + "nodeType": "Block", + "src": "2727:34:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 156, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2740:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 158, + "indexExpression": { + "argumentTypes": null, + "id": 157, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 151, + "src": "2749:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2740:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 155, + "id": 159, + "nodeType": "Return", + "src": "2733:23:1" + } + ] + }, + "documentation": null, + "id": 161, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 151, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "2669:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 150, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2669:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2668:16:1" + }, + "payable": false, + "returnParameters": { + "id": 155, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 154, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "2710:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2710:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2709:17:1" + }, + "scope": 337, + "src": "2650:111:1", + "stateMutability": "view", + "superFunction": 32, + "visibility": "public" + }, + { + "body": { + "id": 217, + "nodeType": "Block", + "src": "2909:284:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 170, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2919:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 173, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 171, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "2928:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2928:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2919:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 174, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2943:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2919:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 176, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2954:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2964:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2954:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2919:46:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 180, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2969:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 182, + "indexExpression": { + "argumentTypes": null, + "id": 181, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2978:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2969:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 183, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2985:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2969:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 185, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2995:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 187, + "indexExpression": { + "argumentTypes": null, + "id": 186, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3004:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2995:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2969:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2919:89:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 215, + "nodeType": "Block", + "src": "3160:29:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3177:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 169, + "id": 214, + "nodeType": "Return", + "src": "3170:12:1" + } + ] + }, + "id": 216, + "nodeType": "IfStatement", + "src": "2915:274:1", + "trueBody": { + "id": 212, + "nodeType": "Block", + "src": "3010:144:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 190, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3018:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 193, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 191, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3027:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3027:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3018:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 194, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3042:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3018:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 196, + "nodeType": "ExpressionStatement", + "src": "3018:31:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 197, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3057:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 199, + "indexExpression": { + "argumentTypes": null, + "id": 198, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3066:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3057:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 200, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3074:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3057:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 202, + "nodeType": "ExpressionStatement", + "src": "3057:24:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 204, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3103:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3103:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 206, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3115:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 207, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3120:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 203, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "3094:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3094:34:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 209, + "nodeType": "EmitStatement", + "src": "3089:39:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3143:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 169, + "id": 211, + "nodeType": "Return", + "src": "3136:11:1" + } + ] + } + } + ] + }, + "documentation": null, + "id": 218, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 163, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "2849:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 162, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2849:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 165, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "2862:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2862:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2848:30:1" + }, + "payable": false, + "returnParameters": { + "id": 169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 168, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "2895:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 167, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2895:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2894:14:1" + }, + "scope": 337, + "src": "2831:362:1", + "stateMutability": "nonpayable", + "superFunction": 41, + "visibility": "public" + }, + { + "body": { + "id": 291, + "nodeType": "Block", + "src": "3776:357:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 229, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3786:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 231, + "indexExpression": { + "argumentTypes": null, + "id": 230, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3795:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3786:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 232, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3805:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3786:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 234, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3816:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 236, + "indexExpression": { + "argumentTypes": null, + "id": 235, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3824:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3816:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 239, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 237, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3831:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3831:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3816:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 240, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3846:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3816:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3786:67:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 243, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3857:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3867:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3857:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3786:82:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 247, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3872:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 249, + "indexExpression": { + "argumentTypes": null, + "id": 248, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "3881:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3872:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 250, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3888:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3872:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 252, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3898:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 254, + "indexExpression": { + "argumentTypes": null, + "id": 253, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "3907:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3898:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3872:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3786:125:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 289, + "nodeType": "Block", + "src": "4103:27:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4118:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 228, + "id": 288, + "nodeType": "Return", + "src": "4111:12:1" + } + ] + }, + "id": 290, + "nodeType": "IfStatement", + "src": "3782:348:1", + "trueBody": { + "id": 286, + "nodeType": "Block", + "src": "3913:184:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 257, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3922:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 259, + "indexExpression": { + "argumentTypes": null, + "id": 258, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3931:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3922:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 260, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3941:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3922:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 262, + "nodeType": "ExpressionStatement", + "src": "3922:26:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 263, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3957:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 267, + "indexExpression": { + "argumentTypes": null, + "id": 264, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3965:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3957:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 268, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 265, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3972:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3972:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3957:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 269, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3987:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3957:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 271, + "nodeType": "ExpressionStatement", + "src": "3957:37:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 272, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "4003:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 274, + "indexExpression": { + "argumentTypes": null, + "id": 273, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "4012:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4003:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 275, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "4020:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4003:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 277, + "nodeType": "ExpressionStatement", + "src": "4003:24:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 279, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "4050:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 280, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "4057:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 281, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "4062:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 278, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "4041:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4041:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 283, + "nodeType": "EmitStatement", + "src": "4036:34:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4086:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 228, + "id": 285, + "nodeType": "Return", + "src": "4079:11:1" + } + ] + } + } + ] + }, + "documentation": null, + "id": 292, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 220, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3686:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 219, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3686:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 222, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3707:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3707:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 224, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3726:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3726:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3678:67:1" + }, + "payable": false, + "returnParameters": { + "id": 228, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 227, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3762:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 226, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3762:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3761:14:1" + }, + "scope": 337, + "src": "3657:476:1", + "stateMutability": "nonpayable", + "superFunction": 52, + "visibility": "public" + }, + { + "body": { + "id": 319, + "nodeType": "Block", + "src": "4398:117:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 301, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "4404:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 305, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 302, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "4412:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4412:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4404:19:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 306, + "indexExpression": { + "argumentTypes": null, + "id": 304, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 294, + "src": "4424:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4404:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 307, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "4436:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4404:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 309, + "nodeType": "ExpressionStatement", + "src": "4404:39:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 311, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "4463:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4463:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 313, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 294, + "src": "4475:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 314, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "4485:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 310, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4454:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4454:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 316, + "nodeType": "EmitStatement", + "src": "4449:44:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4506:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 300, + "id": 318, + "nodeType": "Return", + "src": "4499:11:1" + } + ] + }, + "documentation": null, + "id": 320, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 294, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "4333:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 293, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4333:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 296, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "4351:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 295, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4351:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4332:35:1" + }, + "payable": false, + "returnParameters": { + "id": 300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 299, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "4384:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 298, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4384:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4383:14:1" + }, + "scope": 337, + "src": "4316:199:1", + "stateMutability": "nonpayable", + "superFunction": 61, + "visibility": "public" + }, + { + "body": { + "id": 335, + "nodeType": "Block", + "src": "4616:43:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 329, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "4629:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 331, + "indexExpression": { + "argumentTypes": null, + "id": 330, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "4637:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4629:15:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 333, + "indexExpression": { + "argumentTypes": null, + "id": 332, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "4645:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4629:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 328, + "id": 334, + "nodeType": "Return", + "src": "4622:32:1" + } + ] + }, + "documentation": null, + "id": 336, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 322, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "4538:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4538:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 324, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "4554:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4554:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4537:34:1" + }, + "payable": false, + "returnParameters": { + "id": 328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 327, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "4597:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4597:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4596:19:1" + }, + "scope": 337, + "src": "4519:140:1", + "stateMutability": "view", + "superFunction": 70, + "visibility": "public" + } + ], + "scope": 338, + "src": "1753:2908:1" + } + ], + "src": "0:4662:1" + }, + "legacyAST": { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/FixedSupplyToken.sol", + "exportedSymbols": { + "ERC20Interface": [ + 87 + ], + "FixedSupplyToken": [ + 337 + ] + }, + "id": 338, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 20, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 87, + "linearizedBaseContracts": [ + 87 + ], + "name": "ERC20Interface", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 25, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 21, + "nodeType": "ParameterList", + "parameters": [], + "src": "476:2:1" + }, + "payable": false, + "returnParameters": { + "id": 24, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "504:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 22, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "504:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "503:9:1" + }, + "scope": 87, + "src": "456:57:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 32, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 27, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 32, + "src": "604:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 26, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "604:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "603:16:1" + }, + "payable": false, + "returnParameters": { + "id": 31, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 30, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 32, + "src": "645:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "645:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "644:17:1" + }, + "scope": 87, + "src": "585:77:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 41, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 37, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "733:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "733:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 36, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "746:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "746:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "732:29:1" + }, + "payable": false, + "returnParameters": { + "id": 40, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 39, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "778:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 38, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "778:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "777:14:1" + }, + "scope": 87, + "src": "715:77:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 52, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 48, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "886:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 42, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "886:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 45, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "901:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "901:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 47, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "914:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 46, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "914:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "885:44:1" + }, + "payable": false, + "returnParameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "946:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 49, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "946:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "945:14:1" + }, + "scope": 87, + "src": "864:96:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 61, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 57, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 54, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "1218:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 53, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1218:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 56, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "1236:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 55, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1236:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1217:34:1" + }, + "payable": false, + "returnParameters": { + "id": 60, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 59, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "1268:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 58, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1268:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1267:14:1" + }, + "scope": 87, + "src": "1201:81:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 70, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 66, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 63, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1385:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 62, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1385:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 65, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1401:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 64, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1401:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1384:34:1" + }, + "payable": false, + "returnParameters": { + "id": 69, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 68, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1444:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 67, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1443:19:1" + }, + "scope": 87, + "src": "1366:97:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 78, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 72, + "indexed": true, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "1526:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 71, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1526:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 74, + "indexed": true, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "1549:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 73, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1549:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 76, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "1570:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 75, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1570:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1525:60:1" + }, + "src": "1511:75:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 86, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 85, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 80, + "indexed": true, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1682:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 79, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1682:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 82, + "indexed": true, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1706:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 81, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1706:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 84, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1732:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 83, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1732:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1681:66:1" + }, + "src": "1667:81:1" + } + ], + "scope": 338, + "src": "396:1354:1" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 88, + "name": "ERC20Interface", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 87, + "src": "1782:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$87", + "typeString": "contract ERC20Interface" + } + }, + "id": 89, + "nodeType": "InheritanceSpecifier", + "src": "1782:14:1" + } + ], + "contractDependencies": [ + 87 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 337, + "linearizedBaseContracts": [ + 337, + 87 + ], + "name": "FixedSupplyToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 92, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1801:39:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 90, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1801:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4649584544", + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1833:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_30ea4be232861f7555116fcc950136f9a04cb61860a8c2bc4b1f7869fc756d12", + "typeString": "literal_string \"FIXED\"" + }, + "value": "FIXED" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 95, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1844:58:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 93, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1844:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4578616d706c6520466978656420537570706c7920546f6b656e", + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1874:28:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bb9c3319413d3ba6031e2ada8c5734434921f54973b7e9c9cdcde2469242268e", + "typeString": "literal_string \"Example Fixed Supply Token\"" + }, + "value": "Example Fixed Supply Token" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 98, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1906:35:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 96, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1906:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3138", + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1939:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 101, + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1945:30:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 99, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1945:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1968:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "2010:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2010:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 107, + "name": "balances", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "2066:36:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 106, + "keyType": { + "id": 104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2074:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2066:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2085:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "name": "allowed", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "2183:56:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 112, + "keyType": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2191:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2183:48:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 111, + "keyType": { + "id": 109, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2211:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2202:28:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2222:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 125, + "nodeType": "Block", + "src": "2333:65:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 115, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "2343:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2343:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 117, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2357:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2343:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 123, + "nodeType": "IfStatement", + "src": "2339:48:1", + "trueBody": { + "id": 122, + "nodeType": "Block", + "src": "2364:23:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 119, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "2372:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2372:8:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 121, + "nodeType": "ExpressionStatement", + "src": "2372:8:1" + } + ] + } + }, + { + "id": 124, + "nodeType": "PlaceholderStatement", + "src": "2392:1:1" + } + ] + }, + "documentation": null, + "id": 126, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 114, + "nodeType": "ParameterList", + "parameters": [], + "src": "2330:2:1" + }, + "src": "2312:86:1", + "visibility": "internal" + }, + { + "body": { + "id": 140, + "nodeType": "Block", + "src": "2440:65:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 129, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2446:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 130, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "2454:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2454:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2446:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 133, + "nodeType": "ExpressionStatement", + "src": "2446:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 134, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2470:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 136, + "indexExpression": { + "argumentTypes": null, + "id": 135, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2479:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2470:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 137, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2488:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2470:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "2470:30:1" + } + ] + }, + "documentation": null, + "id": 141, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 127, + "nodeType": "ParameterList", + "parameters": [], + "src": "2430:2:1" + }, + "payable": false, + "returnParameters": { + "id": 128, + "nodeType": "ParameterList", + "parameters": [], + "src": "2440:0:1" + }, + "scope": 337, + "src": "2419:86:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 148, + "nodeType": "Block", + "src": "2566:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 146, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2579:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 145, + "id": 147, + "nodeType": "Return", + "src": "2572:19:1" + } + ] + }, + "documentation": null, + "id": 149, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [], + "src": "2529:2:1" + }, + "payable": false, + "returnParameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 144, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "2557:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2557:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2556:9:1" + }, + "scope": 337, + "src": "2509:87:1", + "stateMutability": "view", + "superFunction": 25, + "visibility": "public" + }, + { + "body": { + "id": 160, + "nodeType": "Block", + "src": "2727:34:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 156, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2740:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 158, + "indexExpression": { + "argumentTypes": null, + "id": 157, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 151, + "src": "2749:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2740:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 155, + "id": 159, + "nodeType": "Return", + "src": "2733:23:1" + } + ] + }, + "documentation": null, + "id": 161, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 151, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "2669:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 150, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2669:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2668:16:1" + }, + "payable": false, + "returnParameters": { + "id": 155, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 154, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "2710:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2710:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2709:17:1" + }, + "scope": 337, + "src": "2650:111:1", + "stateMutability": "view", + "superFunction": 32, + "visibility": "public" + }, + { + "body": { + "id": 217, + "nodeType": "Block", + "src": "2909:284:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 170, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2919:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 173, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 171, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "2928:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2928:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2919:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 174, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2943:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2919:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 176, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2954:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2964:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2954:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2919:46:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 180, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2969:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 182, + "indexExpression": { + "argumentTypes": null, + "id": 181, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2978:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2969:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 183, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2985:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2969:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 185, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2995:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 187, + "indexExpression": { + "argumentTypes": null, + "id": 186, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3004:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2995:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2969:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2919:89:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 215, + "nodeType": "Block", + "src": "3160:29:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3177:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 169, + "id": 214, + "nodeType": "Return", + "src": "3170:12:1" + } + ] + }, + "id": 216, + "nodeType": "IfStatement", + "src": "2915:274:1", + "trueBody": { + "id": 212, + "nodeType": "Block", + "src": "3010:144:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 190, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3018:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 193, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 191, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3027:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3027:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3018:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 194, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3042:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3018:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 196, + "nodeType": "ExpressionStatement", + "src": "3018:31:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 197, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3057:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 199, + "indexExpression": { + "argumentTypes": null, + "id": 198, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3066:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3057:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 200, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3074:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3057:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 202, + "nodeType": "ExpressionStatement", + "src": "3057:24:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 204, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3103:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3103:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 206, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3115:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 207, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3120:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 203, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "3094:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3094:34:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 209, + "nodeType": "EmitStatement", + "src": "3089:39:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3143:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 169, + "id": 211, + "nodeType": "Return", + "src": "3136:11:1" + } + ] + } + } + ] + }, + "documentation": null, + "id": 218, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 163, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "2849:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 162, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2849:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 165, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "2862:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2862:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2848:30:1" + }, + "payable": false, + "returnParameters": { + "id": 169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 168, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "2895:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 167, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2895:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2894:14:1" + }, + "scope": 337, + "src": "2831:362:1", + "stateMutability": "nonpayable", + "superFunction": 41, + "visibility": "public" + }, + { + "body": { + "id": 291, + "nodeType": "Block", + "src": "3776:357:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 229, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3786:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 231, + "indexExpression": { + "argumentTypes": null, + "id": 230, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3795:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3786:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 232, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3805:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3786:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 234, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3816:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 236, + "indexExpression": { + "argumentTypes": null, + "id": 235, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3824:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3816:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 239, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 237, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3831:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3831:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3816:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 240, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3846:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3816:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3786:67:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 243, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3857:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3867:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3857:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3786:82:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 247, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3872:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 249, + "indexExpression": { + "argumentTypes": null, + "id": 248, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "3881:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3872:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 250, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3888:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3872:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 252, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3898:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 254, + "indexExpression": { + "argumentTypes": null, + "id": 253, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "3907:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3898:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3872:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3786:125:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 289, + "nodeType": "Block", + "src": "4103:27:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4118:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 228, + "id": 288, + "nodeType": "Return", + "src": "4111:12:1" + } + ] + }, + "id": 290, + "nodeType": "IfStatement", + "src": "3782:348:1", + "trueBody": { + "id": 286, + "nodeType": "Block", + "src": "3913:184:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 257, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3922:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 259, + "indexExpression": { + "argumentTypes": null, + "id": 258, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3931:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3922:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 260, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3941:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3922:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 262, + "nodeType": "ExpressionStatement", + "src": "3922:26:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 263, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3957:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 267, + "indexExpression": { + "argumentTypes": null, + "id": 264, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3965:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3957:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 268, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 265, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3972:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3972:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3957:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 269, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3987:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3957:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 271, + "nodeType": "ExpressionStatement", + "src": "3957:37:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 272, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "4003:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 274, + "indexExpression": { + "argumentTypes": null, + "id": 273, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "4012:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4003:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 275, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "4020:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4003:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 277, + "nodeType": "ExpressionStatement", + "src": "4003:24:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 279, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "4050:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 280, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "4057:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 281, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "4062:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 278, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "4041:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4041:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 283, + "nodeType": "EmitStatement", + "src": "4036:34:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4086:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 228, + "id": 285, + "nodeType": "Return", + "src": "4079:11:1" + } + ] + } + } + ] + }, + "documentation": null, + "id": 292, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 220, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3686:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 219, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3686:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 222, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3707:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3707:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 224, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3726:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3726:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3678:67:1" + }, + "payable": false, + "returnParameters": { + "id": 228, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 227, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3762:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 226, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3762:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3761:14:1" + }, + "scope": 337, + "src": "3657:476:1", + "stateMutability": "nonpayable", + "superFunction": 52, + "visibility": "public" + }, + { + "body": { + "id": 319, + "nodeType": "Block", + "src": "4398:117:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 301, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "4404:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 305, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 302, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "4412:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4412:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4404:19:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 306, + "indexExpression": { + "argumentTypes": null, + "id": 304, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 294, + "src": "4424:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4404:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 307, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "4436:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4404:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 309, + "nodeType": "ExpressionStatement", + "src": "4404:39:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 311, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "4463:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4463:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 313, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 294, + "src": "4475:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 314, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "4485:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 310, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4454:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4454:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 316, + "nodeType": "EmitStatement", + "src": "4449:44:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4506:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 300, + "id": 318, + "nodeType": "Return", + "src": "4499:11:1" + } + ] + }, + "documentation": null, + "id": 320, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 294, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "4333:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 293, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4333:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 296, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "4351:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 295, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4351:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4332:35:1" + }, + "payable": false, + "returnParameters": { + "id": 300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 299, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "4384:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 298, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4384:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4383:14:1" + }, + "scope": 337, + "src": "4316:199:1", + "stateMutability": "nonpayable", + "superFunction": 61, + "visibility": "public" + }, + { + "body": { + "id": 335, + "nodeType": "Block", + "src": "4616:43:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 329, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "4629:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 331, + "indexExpression": { + "argumentTypes": null, + "id": 330, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "4637:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4629:15:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 333, + "indexExpression": { + "argumentTypes": null, + "id": 332, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "4645:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4629:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 328, + "id": 334, + "nodeType": "Return", + "src": "4622:32:1" + } + ] + }, + "documentation": null, + "id": 336, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 322, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "4538:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4538:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 324, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "4554:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4554:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4537:34:1" + }, + "payable": false, + "returnParameters": { + "id": 328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 327, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "4597:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4597:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4596:19:1" + }, + "scope": 337, + "src": "4519:140:1", + "stateMutability": "view", + "superFunction": 70, + "visibility": "public" + } + ], + "scope": 338, + "src": "1753:2908:1" + } + ], + "src": "0:4662:1" + }, + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.1", + "updatedAt": "2018-11-08T20:46:35.582Z" +} \ No newline at end of file diff --git a/build/contracts/FixedSupplyToken.json b/build/contracts/FixedSupplyToken.json new file mode 100644 index 0000000..9c2e825 --- /dev/null +++ b/build/contracts/FixedSupplyToken.json @@ -0,0 +1,8237 @@ +{ + "contractName": "FixedSupplyToken", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "name": "_spender", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "remaining", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6080604052620f424060005534801561001757600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005460026000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c28806100d06000396000f3006080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100a9578063095ea7b31461013957806318160ddd1461019e57806323b872dd146101c9578063313ce5671461024e57806370a082311461027f5780638da5cb5b146102d657806395d89b411461032d578063a9059cbb146103bd578063dd62ed3e14610422575b600080fd5b3480156100b557600080fd5b506100be610499565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100fe5780820151818401526020810190506100e3565b50505050905090810190601f16801561012b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561014557600080fd5b50610184600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104d2565b604051808215151515815260200191505060405180910390f35b3480156101aa57600080fd5b506101b36105c4565b6040518082815260200191505060405180910390f35b3480156101d557600080fd5b50610234600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105cd565b604051808215151515815260200191505060405180910390f35b34801561025a57600080fd5b506102636108d4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561028b57600080fd5b506102c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108d9565b6040518082815260200191505060405180910390f35b3480156102e257600080fd5b506102eb610922565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561033957600080fd5b50610342610948565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610382578082015181840152602081019050610367565b50505050905090810190601f1680156103af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103c957600080fd5b50610408600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610981565b604051808215151515815260200191505060405180910390f35b34801561042e57600080fd5b50610483600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b75565b6040518082815260200191505060405180910390f35b6040805190810160405280601a81526020017f4578616d706c6520466978656420537570706c7920546f6b656e00000000000081525081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008054905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561069a575081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156106a65750600082115b80156107315750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401115b156108c85781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506108cd565b600090505b9392505050565b601281565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600581526020017f464958454400000000000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156109d25750600082115b8015610a5d5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401115b15610b6a5781600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610b6f565b600090505b92915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a7230582086ee6b70c038ef77e10326f20b52d1e83d6bd5dc95f81de41fac943df054e1dd0029", + "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100a9578063095ea7b31461013957806318160ddd1461019e57806323b872dd146101c9578063313ce5671461024e57806370a082311461027f5780638da5cb5b146102d657806395d89b411461032d578063a9059cbb146103bd578063dd62ed3e14610422575b600080fd5b3480156100b557600080fd5b506100be610499565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100fe5780820151818401526020810190506100e3565b50505050905090810190601f16801561012b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561014557600080fd5b50610184600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104d2565b604051808215151515815260200191505060405180910390f35b3480156101aa57600080fd5b506101b36105c4565b6040518082815260200191505060405180910390f35b3480156101d557600080fd5b50610234600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105cd565b604051808215151515815260200191505060405180910390f35b34801561025a57600080fd5b506102636108d4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561028b57600080fd5b506102c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108d9565b6040518082815260200191505060405180910390f35b3480156102e257600080fd5b506102eb610922565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561033957600080fd5b50610342610948565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610382578082015181840152602081019050610367565b50505050905090810190601f1680156103af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103c957600080fd5b50610408600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610981565b604051808215151515815260200191505060405180910390f35b34801561042e57600080fd5b50610483600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b75565b6040518082815260200191505060405180910390f35b6040805190810160405280601a81526020017f4578616d706c6520466978656420537570706c7920546f6b656e00000000000081525081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008054905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561069a575081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156106a65750600082115b80156107315750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401115b156108c85781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506108cd565b600090505b9392505050565b601281565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600581526020017f464958454400000000000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156109d25750600082115b8015610a5d5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401115b15610b6a5781600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610b6f565b600090505b92915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a7230582086ee6b70c038ef77e10326f20b52d1e83d6bd5dc95f81de41fac943df054e1dd0029", + "sourceMap": "1753:2908:1:-;;;1968:7;1945:30;;2419:86;8:9:-1;5:2;;;30:1;27;20:12;5:2;2419:86:1;2454:10;2446:5;;:18;;;;;;;;;;;;;;;;;;2488:12;;2470:8;:15;2479:5;;;;;;;;;;;2470:15;;;;;;;;;;;;;;;:30;;;;1753:2908;;;;;;", + "deployedSourceMap": "1753:2908:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1844:58;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1844:58:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1844:58:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4316:199;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4316:199:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2509:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2509:87:1;;;;;;;;;;;;;;;;;;;;;;;3657:476;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3657:476:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:35:1;;;;;;;;;;;;;;;;;;;;;;;;;;;2650:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2650:111:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2010:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2010:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;1801:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1801:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2831:362;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2831:362:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4519:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4519:140:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1844:58;;;;;;;;;;;;;;;;;;;;:::o;4316:199::-;4384:12;4436:7;4404;:19;4412:10;4404:19;;;;;;;;;;;;;;;:29;4424:8;4404:29;;;;;;;;;;;;;;;:39;;;;4475:8;4454:39;;4463:10;4454:39;;;4485:7;4454:39;;;;;;;;;;;;;;;;;;4506:4;4499:11;;4316:199;;;;:::o;2509:87::-;2557:7;2579:12;;2572:19;;2509:87;:::o;3657:476::-;3762:12;3805:7;3786:8;:15;3795:5;3786:15;;;;;;;;;;;;;;;;:26;;:67;;;;;3846:7;3816;:14;3824:5;3816:14;;;;;;;;;;;;;;;:26;3831:10;3816:26;;;;;;;;;;;;;;;;:37;;3786:67;:82;;;;;3867:1;3857:7;:11;3786:82;:125;;;;;3898:8;:13;3907:3;3898:13;;;;;;;;;;;;;;;;3888:7;3872:8;:13;3881:3;3872:13;;;;;;;;;;;;;;;;:23;:39;3786:125;3782:348;;;3941:7;3922:8;:15;3931:5;3922:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;3987:7;3957;:14;3965:5;3957:14;;;;;;;;;;;;;;;:26;3972:10;3957:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;4020:7;4003:8;:13;4012:3;4003:13;;;;;;;;;;;;;;;;:24;;;;;;;;;;;4057:3;4041:29;;4050:5;4041:29;;;4062:7;4041:29;;;;;;;;;;;;;;;;;;4086:4;4079:11;;;;3782:348;4118:5;4111:12;;3657:476;;;;;;:::o;1906:35::-;1939:2;1906:35;:::o;2650:111::-;2710:15;2740:8;:16;2749:6;2740:16;;;;;;;;;;;;;;;;2733:23;;2650:111;;;:::o;2010:20::-;;;;;;;;;;;;;:::o;1801:39::-;;;;;;;;;;;;;;;;;;;;:::o;2831:362::-;2895:12;2943:7;2919:8;:20;2928:10;2919:20;;;;;;;;;;;;;;;;:31;;:46;;;;;2964:1;2954:7;:11;2919:46;:89;;;;;2995:8;:13;3004:3;2995:13;;;;;;;;;;;;;;;;2985:7;2969:8;:13;2978:3;2969:13;;;;;;;;;;;;;;;;:23;:39;2919:89;2915:274;;;3042:7;3018:8;:20;3027:10;3018:20;;;;;;;;;;;;;;;;:31;;;;;;;;;;;3074:7;3057:8;:13;3066:3;3057:13;;;;;;;;;;;;;;;;:24;;;;;;;;;;;3115:3;3094:34;;3103:10;3094:34;;;3120:7;3094:34;;;;;;;;;;;;;;;;;;3143:4;3136:11;;;;2915:274;3177:5;3170:12;;2831:362;;;;;:::o;4519:140::-;4597:17;4629:7;:15;4637:6;4629:15;;;;;;;;;;;;;;;:25;4645:8;4629:25;;;;;;;;;;;;;;;;4622:32;;4519:140;;;;:::o", + "source": "pragma solidity ^0.4.24;\n \n// ----------------------------------------------------------------------------------------------\n// Sample fixed supply token contract\n// Enjoy. (c) BokkyPooBah 2017. The MIT Licence.\n// ----------------------------------------------------------------------------------------------\n \n// ERC Token Standard #20 Interface\n// https://github.com/ethereum/EIPs/issues/20\ncontract ERC20Interface {\n // Get the total token supply\n function totalSupply() public constant returns (uint256);\n\n // Get the account balance of another account with address _owner\n function balanceOf(address _owner) public constant returns (uint256 balance);\n\n // Send _value amount of tokens to address _to\n function transfer(address _to, uint256 _value) public returns (bool success);\n\n // Send _value amount of tokens from address _from to address _to\n function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);\n\n // Allow _spender to withdraw from your account, multiple times, up to the _value amount.\n // If this function is called again it overwrites the current allowance with _value.\n // this function is required for some DEX functionality\n function approve(address _spender, uint256 _value) public returns (bool success);\n\n // Returns the amount which _spender is still allowed to withdraw from _owner\n function allowance(address _owner, address _spender) public constant returns (uint256 remaining);\n\n // Triggered when tokens are transferred.\n event Transfer(address indexed _from, address indexed _to, uint256 _value);\n\n // Triggered whenever approve(address _spender, uint256 _value) is called.\n event Approval(address indexed _owner, address indexed _spender, uint256 _value);\n}\n \ncontract FixedSupplyToken is ERC20Interface {\n string public constant symbol = \"FIXED\";\n string public constant name = \"Example Fixed Supply Token\";\n uint8 public constant decimals = 18;\n uint256 _totalSupply = 1000000;\n \n // Owner of this contract\n address public owner;\n\n // Balances for each account\n mapping(address => uint256) balances;\n\n // Owner of account approves the transfer of an amount to another account\n mapping(address => mapping (address => uint256)) allowed;\n\n // Functions with this modifier can only be executed by the owner\n modifier onlyOwner() {\n if (msg.sender != owner) {\n revert();\n }\n _;\n }\n\n // Constructor\n constructor() public {\n owner = msg.sender;\n balances[owner] = _totalSupply;\n }\n\n function totalSupply() public constant returns (uint256) {\n return _totalSupply;\n }\n\n // What is the balance of a particular account?\n function balanceOf(address _owner) public constant returns (uint256 balance) {\n return balances[_owner];\n }\n\n // Transfer the balance from owner's account to another account\n function transfer(address _to, uint256 _amount) public returns (bool success) {\n if (balances[msg.sender] >= _amount && _amount > 0 && balances[_to] + _amount > balances[_to]) {\n balances[msg.sender] -= _amount;\n balances[_to] += _amount;\n emit Transfer(msg.sender, _to, _amount);\n return true;\n } else {\n return false;\n }\n }\n\n // Send _value amount of tokens from address _from to address _to\n // The transferFrom method is used for a withdraw workflow, allowing contracts to send\n // tokens on your behalf, for example to \"deposit\" to a contract address and/or to charge\n // fees in sub-currencies; the command should fail unless the _from account has\n // deliberately authorized the sender of the message via some mechanism; we propose\n // these standardized APIs for approval:\n function transferFrom(\n address _from,\n address _to,\n uint256 _amount\n ) public returns (bool success) {\n if (balances[_from] >= _amount && allowed[_from][msg.sender] >= _amount && _amount > 0 && balances[_to] + _amount > balances[_to]) {\n balances[_from] -= _amount;\n allowed[_from][msg.sender] -= _amount;\n balances[_to] += _amount;\n emit Transfer(_from, _to, _amount);\n return true;\n } else {\n return false;\n }\n }\n\n // Allow _spender to withdraw from your account, multiple times, up to the _value amount.\n // If this function is called again it overwrites the current allowance with _value.\n function approve(address _spender, uint256 _amount) public returns (bool success) {\n allowed[msg.sender][_spender] = _amount;\n emit Approval(msg.sender, _spender, _amount);\n return true;\n }\n\n function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {\n return allowed[_owner][_spender];\n }\n}\n", + "sourcePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/FixedSupplyToken.sol", + "ast": { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/FixedSupplyToken.sol", + "exportedSymbols": { + "ERC20Interface": [ + 87 + ], + "FixedSupplyToken": [ + 337 + ] + }, + "id": 338, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 20, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 87, + "linearizedBaseContracts": [ + 87 + ], + "name": "ERC20Interface", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 25, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 21, + "nodeType": "ParameterList", + "parameters": [], + "src": "476:2:1" + }, + "payable": false, + "returnParameters": { + "id": 24, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "504:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 22, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "504:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "503:9:1" + }, + "scope": 87, + "src": "456:57:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 32, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 27, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 32, + "src": "604:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 26, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "604:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "603:16:1" + }, + "payable": false, + "returnParameters": { + "id": 31, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 30, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 32, + "src": "645:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "645:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "644:17:1" + }, + "scope": 87, + "src": "585:77:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 41, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 37, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "733:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "733:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 36, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "746:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "746:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "732:29:1" + }, + "payable": false, + "returnParameters": { + "id": 40, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 39, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "778:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 38, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "778:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "777:14:1" + }, + "scope": 87, + "src": "715:77:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 52, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 48, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "886:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 42, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "886:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 45, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "901:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "901:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 47, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "914:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 46, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "914:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "885:44:1" + }, + "payable": false, + "returnParameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "946:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 49, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "946:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "945:14:1" + }, + "scope": 87, + "src": "864:96:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 61, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 57, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 54, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "1218:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 53, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1218:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 56, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "1236:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 55, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1236:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1217:34:1" + }, + "payable": false, + "returnParameters": { + "id": 60, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 59, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "1268:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 58, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1268:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1267:14:1" + }, + "scope": 87, + "src": "1201:81:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 70, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 66, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 63, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1385:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 62, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1385:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 65, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1401:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 64, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1401:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1384:34:1" + }, + "payable": false, + "returnParameters": { + "id": 69, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 68, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1444:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 67, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1443:19:1" + }, + "scope": 87, + "src": "1366:97:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 78, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 72, + "indexed": true, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "1526:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 71, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1526:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 74, + "indexed": true, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "1549:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 73, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1549:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 76, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "1570:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 75, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1570:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1525:60:1" + }, + "src": "1511:75:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 86, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 85, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 80, + "indexed": true, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1682:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 79, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1682:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 82, + "indexed": true, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1706:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 81, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1706:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 84, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1732:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 83, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1732:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1681:66:1" + }, + "src": "1667:81:1" + } + ], + "scope": 338, + "src": "396:1354:1" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 88, + "name": "ERC20Interface", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 87, + "src": "1782:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$87", + "typeString": "contract ERC20Interface" + } + }, + "id": 89, + "nodeType": "InheritanceSpecifier", + "src": "1782:14:1" + } + ], + "contractDependencies": [ + 87 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 337, + "linearizedBaseContracts": [ + 337, + 87 + ], + "name": "FixedSupplyToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 92, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1801:39:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 90, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1801:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4649584544", + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1833:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_30ea4be232861f7555116fcc950136f9a04cb61860a8c2bc4b1f7869fc756d12", + "typeString": "literal_string \"FIXED\"" + }, + "value": "FIXED" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 95, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1844:58:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 93, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1844:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4578616d706c6520466978656420537570706c7920546f6b656e", + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1874:28:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bb9c3319413d3ba6031e2ada8c5734434921f54973b7e9c9cdcde2469242268e", + "typeString": "literal_string \"Example Fixed Supply Token\"" + }, + "value": "Example Fixed Supply Token" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 98, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1906:35:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 96, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1906:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3138", + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1939:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 101, + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1945:30:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 99, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1945:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1968:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "2010:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2010:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 107, + "name": "balances", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "2066:36:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 106, + "keyType": { + "id": 104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2074:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2066:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2085:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "name": "allowed", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "2183:56:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 112, + "keyType": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2191:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2183:48:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 111, + "keyType": { + "id": 109, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2211:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2202:28:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2222:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 125, + "nodeType": "Block", + "src": "2333:65:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 115, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "2343:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2343:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 117, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2357:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2343:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 123, + "nodeType": "IfStatement", + "src": "2339:48:1", + "trueBody": { + "id": 122, + "nodeType": "Block", + "src": "2364:23:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 119, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "2372:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2372:8:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 121, + "nodeType": "ExpressionStatement", + "src": "2372:8:1" + } + ] + } + }, + { + "id": 124, + "nodeType": "PlaceholderStatement", + "src": "2392:1:1" + } + ] + }, + "documentation": null, + "id": 126, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 114, + "nodeType": "ParameterList", + "parameters": [], + "src": "2330:2:1" + }, + "src": "2312:86:1", + "visibility": "internal" + }, + { + "body": { + "id": 140, + "nodeType": "Block", + "src": "2440:65:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 129, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2446:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 130, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "2454:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2454:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2446:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 133, + "nodeType": "ExpressionStatement", + "src": "2446:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 134, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2470:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 136, + "indexExpression": { + "argumentTypes": null, + "id": 135, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2479:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2470:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 137, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2488:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2470:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "2470:30:1" + } + ] + }, + "documentation": null, + "id": 141, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 127, + "nodeType": "ParameterList", + "parameters": [], + "src": "2430:2:1" + }, + "payable": false, + "returnParameters": { + "id": 128, + "nodeType": "ParameterList", + "parameters": [], + "src": "2440:0:1" + }, + "scope": 337, + "src": "2419:86:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 148, + "nodeType": "Block", + "src": "2566:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 146, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2579:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 145, + "id": 147, + "nodeType": "Return", + "src": "2572:19:1" + } + ] + }, + "documentation": null, + "id": 149, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [], + "src": "2529:2:1" + }, + "payable": false, + "returnParameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 144, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "2557:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2557:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2556:9:1" + }, + "scope": 337, + "src": "2509:87:1", + "stateMutability": "view", + "superFunction": 25, + "visibility": "public" + }, + { + "body": { + "id": 160, + "nodeType": "Block", + "src": "2727:34:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 156, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2740:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 158, + "indexExpression": { + "argumentTypes": null, + "id": 157, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 151, + "src": "2749:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2740:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 155, + "id": 159, + "nodeType": "Return", + "src": "2733:23:1" + } + ] + }, + "documentation": null, + "id": 161, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 151, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "2669:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 150, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2669:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2668:16:1" + }, + "payable": false, + "returnParameters": { + "id": 155, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 154, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "2710:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2710:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2709:17:1" + }, + "scope": 337, + "src": "2650:111:1", + "stateMutability": "view", + "superFunction": 32, + "visibility": "public" + }, + { + "body": { + "id": 217, + "nodeType": "Block", + "src": "2909:284:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 170, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2919:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 173, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 171, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "2928:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2928:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2919:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 174, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2943:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2919:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 176, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2954:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2964:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2954:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2919:46:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 180, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2969:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 182, + "indexExpression": { + "argumentTypes": null, + "id": 181, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2978:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2969:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 183, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2985:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2969:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 185, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2995:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 187, + "indexExpression": { + "argumentTypes": null, + "id": 186, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3004:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2995:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2969:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2919:89:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 215, + "nodeType": "Block", + "src": "3160:29:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3177:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 169, + "id": 214, + "nodeType": "Return", + "src": "3170:12:1" + } + ] + }, + "id": 216, + "nodeType": "IfStatement", + "src": "2915:274:1", + "trueBody": { + "id": 212, + "nodeType": "Block", + "src": "3010:144:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 190, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3018:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 193, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 191, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3027:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3027:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3018:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 194, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3042:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3018:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 196, + "nodeType": "ExpressionStatement", + "src": "3018:31:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 197, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3057:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 199, + "indexExpression": { + "argumentTypes": null, + "id": 198, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3066:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3057:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 200, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3074:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3057:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 202, + "nodeType": "ExpressionStatement", + "src": "3057:24:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 204, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3103:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3103:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 206, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3115:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 207, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3120:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 203, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "3094:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3094:34:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 209, + "nodeType": "EmitStatement", + "src": "3089:39:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3143:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 169, + "id": 211, + "nodeType": "Return", + "src": "3136:11:1" + } + ] + } + } + ] + }, + "documentation": null, + "id": 218, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 163, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "2849:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 162, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2849:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 165, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "2862:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2862:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2848:30:1" + }, + "payable": false, + "returnParameters": { + "id": 169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 168, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "2895:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 167, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2895:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2894:14:1" + }, + "scope": 337, + "src": "2831:362:1", + "stateMutability": "nonpayable", + "superFunction": 41, + "visibility": "public" + }, + { + "body": { + "id": 291, + "nodeType": "Block", + "src": "3776:357:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 229, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3786:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 231, + "indexExpression": { + "argumentTypes": null, + "id": 230, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3795:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3786:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 232, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3805:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3786:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 234, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3816:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 236, + "indexExpression": { + "argumentTypes": null, + "id": 235, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3824:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3816:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 239, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 237, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3831:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3831:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3816:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 240, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3846:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3816:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3786:67:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 243, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3857:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3867:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3857:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3786:82:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 247, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3872:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 249, + "indexExpression": { + "argumentTypes": null, + "id": 248, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "3881:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3872:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 250, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3888:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3872:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 252, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3898:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 254, + "indexExpression": { + "argumentTypes": null, + "id": 253, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "3907:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3898:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3872:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3786:125:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 289, + "nodeType": "Block", + "src": "4103:27:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4118:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 228, + "id": 288, + "nodeType": "Return", + "src": "4111:12:1" + } + ] + }, + "id": 290, + "nodeType": "IfStatement", + "src": "3782:348:1", + "trueBody": { + "id": 286, + "nodeType": "Block", + "src": "3913:184:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 257, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3922:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 259, + "indexExpression": { + "argumentTypes": null, + "id": 258, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3931:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3922:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 260, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3941:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3922:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 262, + "nodeType": "ExpressionStatement", + "src": "3922:26:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 263, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3957:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 267, + "indexExpression": { + "argumentTypes": null, + "id": 264, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3965:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3957:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 268, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 265, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3972:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3972:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3957:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 269, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3987:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3957:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 271, + "nodeType": "ExpressionStatement", + "src": "3957:37:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 272, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "4003:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 274, + "indexExpression": { + "argumentTypes": null, + "id": 273, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "4012:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4003:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 275, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "4020:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4003:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 277, + "nodeType": "ExpressionStatement", + "src": "4003:24:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 279, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "4050:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 280, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "4057:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 281, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "4062:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 278, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "4041:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4041:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 283, + "nodeType": "EmitStatement", + "src": "4036:34:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4086:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 228, + "id": 285, + "nodeType": "Return", + "src": "4079:11:1" + } + ] + } + } + ] + }, + "documentation": null, + "id": 292, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 220, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3686:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 219, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3686:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 222, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3707:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3707:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 224, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3726:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3726:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3678:67:1" + }, + "payable": false, + "returnParameters": { + "id": 228, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 227, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3762:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 226, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3762:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3761:14:1" + }, + "scope": 337, + "src": "3657:476:1", + "stateMutability": "nonpayable", + "superFunction": 52, + "visibility": "public" + }, + { + "body": { + "id": 319, + "nodeType": "Block", + "src": "4398:117:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 301, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "4404:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 305, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 302, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "4412:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4412:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4404:19:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 306, + "indexExpression": { + "argumentTypes": null, + "id": 304, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 294, + "src": "4424:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4404:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 307, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "4436:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4404:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 309, + "nodeType": "ExpressionStatement", + "src": "4404:39:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 311, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "4463:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4463:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 313, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 294, + "src": "4475:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 314, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "4485:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 310, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4454:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4454:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 316, + "nodeType": "EmitStatement", + "src": "4449:44:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4506:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 300, + "id": 318, + "nodeType": "Return", + "src": "4499:11:1" + } + ] + }, + "documentation": null, + "id": 320, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 294, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "4333:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 293, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4333:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 296, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "4351:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 295, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4351:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4332:35:1" + }, + "payable": false, + "returnParameters": { + "id": 300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 299, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "4384:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 298, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4384:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4383:14:1" + }, + "scope": 337, + "src": "4316:199:1", + "stateMutability": "nonpayable", + "superFunction": 61, + "visibility": "public" + }, + { + "body": { + "id": 335, + "nodeType": "Block", + "src": "4616:43:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 329, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "4629:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 331, + "indexExpression": { + "argumentTypes": null, + "id": 330, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "4637:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4629:15:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 333, + "indexExpression": { + "argumentTypes": null, + "id": 332, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "4645:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4629:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 328, + "id": 334, + "nodeType": "Return", + "src": "4622:32:1" + } + ] + }, + "documentation": null, + "id": 336, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 322, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "4538:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4538:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 324, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "4554:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4554:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4537:34:1" + }, + "payable": false, + "returnParameters": { + "id": 328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 327, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "4597:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4597:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4596:19:1" + }, + "scope": 337, + "src": "4519:140:1", + "stateMutability": "view", + "superFunction": 70, + "visibility": "public" + } + ], + "scope": 338, + "src": "1753:2908:1" + } + ], + "src": "0:4662:1" + }, + "legacyAST": { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/FixedSupplyToken.sol", + "exportedSymbols": { + "ERC20Interface": [ + 87 + ], + "FixedSupplyToken": [ + 337 + ] + }, + "id": 338, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 20, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 87, + "linearizedBaseContracts": [ + 87 + ], + "name": "ERC20Interface", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 25, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 21, + "nodeType": "ParameterList", + "parameters": [], + "src": "476:2:1" + }, + "payable": false, + "returnParameters": { + "id": 24, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "504:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 22, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "504:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "503:9:1" + }, + "scope": 87, + "src": "456:57:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 32, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 27, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 32, + "src": "604:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 26, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "604:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "603:16:1" + }, + "payable": false, + "returnParameters": { + "id": 31, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 30, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 32, + "src": "645:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "645:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "644:17:1" + }, + "scope": 87, + "src": "585:77:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 41, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 37, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "733:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "733:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 36, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "746:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "746:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "732:29:1" + }, + "payable": false, + "returnParameters": { + "id": 40, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 39, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "778:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 38, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "778:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "777:14:1" + }, + "scope": 87, + "src": "715:77:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 52, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 48, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "886:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 42, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "886:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 45, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "901:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "901:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 47, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "914:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 46, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "914:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "885:44:1" + }, + "payable": false, + "returnParameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "946:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 49, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "946:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "945:14:1" + }, + "scope": 87, + "src": "864:96:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 61, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 57, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 54, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "1218:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 53, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1218:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 56, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "1236:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 55, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1236:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1217:34:1" + }, + "payable": false, + "returnParameters": { + "id": 60, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 59, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "1268:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 58, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1268:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1267:14:1" + }, + "scope": 87, + "src": "1201:81:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 70, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 66, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 63, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1385:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 62, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1385:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 65, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1401:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 64, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1401:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1384:34:1" + }, + "payable": false, + "returnParameters": { + "id": 69, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 68, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1444:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 67, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1443:19:1" + }, + "scope": 87, + "src": "1366:97:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 78, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 72, + "indexed": true, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "1526:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 71, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1526:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 74, + "indexed": true, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "1549:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 73, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1549:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 76, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "1570:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 75, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1570:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1525:60:1" + }, + "src": "1511:75:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 86, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 85, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 80, + "indexed": true, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1682:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 79, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1682:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 82, + "indexed": true, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1706:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 81, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1706:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 84, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1732:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 83, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1732:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1681:66:1" + }, + "src": "1667:81:1" + } + ], + "scope": 338, + "src": "396:1354:1" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 88, + "name": "ERC20Interface", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 87, + "src": "1782:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$87", + "typeString": "contract ERC20Interface" + } + }, + "id": 89, + "nodeType": "InheritanceSpecifier", + "src": "1782:14:1" + } + ], + "contractDependencies": [ + 87 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 337, + "linearizedBaseContracts": [ + 337, + 87 + ], + "name": "FixedSupplyToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 92, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1801:39:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 90, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1801:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4649584544", + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1833:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_30ea4be232861f7555116fcc950136f9a04cb61860a8c2bc4b1f7869fc756d12", + "typeString": "literal_string \"FIXED\"" + }, + "value": "FIXED" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 95, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1844:58:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 93, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1844:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4578616d706c6520466978656420537570706c7920546f6b656e", + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1874:28:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bb9c3319413d3ba6031e2ada8c5734434921f54973b7e9c9cdcde2469242268e", + "typeString": "literal_string \"Example Fixed Supply Token\"" + }, + "value": "Example Fixed Supply Token" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 98, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1906:35:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 96, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1906:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3138", + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1939:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 101, + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "1945:30:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 99, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1945:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1968:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "2010:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2010:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 107, + "name": "balances", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "2066:36:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 106, + "keyType": { + "id": 104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2074:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2066:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2085:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "name": "allowed", + "nodeType": "VariableDeclaration", + "scope": 337, + "src": "2183:56:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 112, + "keyType": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2191:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2183:48:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 111, + "keyType": { + "id": 109, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2211:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2202:28:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2222:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 125, + "nodeType": "Block", + "src": "2333:65:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 115, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "2343:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2343:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 117, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2357:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2343:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 123, + "nodeType": "IfStatement", + "src": "2339:48:1", + "trueBody": { + "id": 122, + "nodeType": "Block", + "src": "2364:23:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 119, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "2372:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2372:8:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 121, + "nodeType": "ExpressionStatement", + "src": "2372:8:1" + } + ] + } + }, + { + "id": 124, + "nodeType": "PlaceholderStatement", + "src": "2392:1:1" + } + ] + }, + "documentation": null, + "id": 126, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 114, + "nodeType": "ParameterList", + "parameters": [], + "src": "2330:2:1" + }, + "src": "2312:86:1", + "visibility": "internal" + }, + { + "body": { + "id": 140, + "nodeType": "Block", + "src": "2440:65:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 129, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2446:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 130, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "2454:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2454:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2446:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 133, + "nodeType": "ExpressionStatement", + "src": "2446:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 134, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2470:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 136, + "indexExpression": { + "argumentTypes": null, + "id": 135, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2479:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2470:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 137, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2488:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2470:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "2470:30:1" + } + ] + }, + "documentation": null, + "id": 141, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 127, + "nodeType": "ParameterList", + "parameters": [], + "src": "2430:2:1" + }, + "payable": false, + "returnParameters": { + "id": 128, + "nodeType": "ParameterList", + "parameters": [], + "src": "2440:0:1" + }, + "scope": 337, + "src": "2419:86:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 148, + "nodeType": "Block", + "src": "2566:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 146, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2579:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 145, + "id": 147, + "nodeType": "Return", + "src": "2572:19:1" + } + ] + }, + "documentation": null, + "id": 149, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [], + "src": "2529:2:1" + }, + "payable": false, + "returnParameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 144, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "2557:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2557:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2556:9:1" + }, + "scope": 337, + "src": "2509:87:1", + "stateMutability": "view", + "superFunction": 25, + "visibility": "public" + }, + { + "body": { + "id": 160, + "nodeType": "Block", + "src": "2727:34:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 156, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2740:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 158, + "indexExpression": { + "argumentTypes": null, + "id": 157, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 151, + "src": "2749:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2740:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 155, + "id": 159, + "nodeType": "Return", + "src": "2733:23:1" + } + ] + }, + "documentation": null, + "id": 161, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 151, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "2669:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 150, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2669:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2668:16:1" + }, + "payable": false, + "returnParameters": { + "id": 155, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 154, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "2710:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2710:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2709:17:1" + }, + "scope": 337, + "src": "2650:111:1", + "stateMutability": "view", + "superFunction": 32, + "visibility": "public" + }, + { + "body": { + "id": 217, + "nodeType": "Block", + "src": "2909:284:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 170, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2919:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 173, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 171, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "2928:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2928:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2919:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 174, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2943:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2919:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 176, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2954:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2964:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2954:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2919:46:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 180, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2969:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 182, + "indexExpression": { + "argumentTypes": null, + "id": 181, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2978:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2969:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 183, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2985:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2969:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 185, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "2995:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 187, + "indexExpression": { + "argumentTypes": null, + "id": 186, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3004:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2995:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2969:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2919:89:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 215, + "nodeType": "Block", + "src": "3160:29:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3177:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 169, + "id": 214, + "nodeType": "Return", + "src": "3170:12:1" + } + ] + }, + "id": 216, + "nodeType": "IfStatement", + "src": "2915:274:1", + "trueBody": { + "id": 212, + "nodeType": "Block", + "src": "3010:144:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 190, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3018:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 193, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 191, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3027:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3027:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3018:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 194, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3042:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3018:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 196, + "nodeType": "ExpressionStatement", + "src": "3018:31:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 197, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3057:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 199, + "indexExpression": { + "argumentTypes": null, + "id": 198, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3066:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3057:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 200, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3074:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3057:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 202, + "nodeType": "ExpressionStatement", + "src": "3057:24:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 204, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3103:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3103:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 206, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3115:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 207, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3120:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 203, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "3094:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3094:34:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 209, + "nodeType": "EmitStatement", + "src": "3089:39:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3143:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 169, + "id": 211, + "nodeType": "Return", + "src": "3136:11:1" + } + ] + } + } + ] + }, + "documentation": null, + "id": 218, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 163, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "2849:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 162, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2849:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 165, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "2862:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2862:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2848:30:1" + }, + "payable": false, + "returnParameters": { + "id": 169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 168, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "2895:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 167, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2895:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2894:14:1" + }, + "scope": 337, + "src": "2831:362:1", + "stateMutability": "nonpayable", + "superFunction": 41, + "visibility": "public" + }, + { + "body": { + "id": 291, + "nodeType": "Block", + "src": "3776:357:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 229, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3786:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 231, + "indexExpression": { + "argumentTypes": null, + "id": 230, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3795:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3786:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 232, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3805:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3786:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 234, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3816:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 236, + "indexExpression": { + "argumentTypes": null, + "id": 235, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3824:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3816:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 239, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 237, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3831:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3831:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3816:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 240, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3846:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3816:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3786:67:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 243, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3857:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3867:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3857:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3786:82:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 247, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3872:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 249, + "indexExpression": { + "argumentTypes": null, + "id": 248, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "3881:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3872:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 250, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3888:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3872:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 252, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3898:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 254, + "indexExpression": { + "argumentTypes": null, + "id": 253, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "3907:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3898:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3872:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3786:125:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 289, + "nodeType": "Block", + "src": "4103:27:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4118:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 228, + "id": 288, + "nodeType": "Return", + "src": "4111:12:1" + } + ] + }, + "id": 290, + "nodeType": "IfStatement", + "src": "3782:348:1", + "trueBody": { + "id": 286, + "nodeType": "Block", + "src": "3913:184:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 257, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3922:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 259, + "indexExpression": { + "argumentTypes": null, + "id": 258, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3931:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3922:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 260, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3941:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3922:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 262, + "nodeType": "ExpressionStatement", + "src": "3922:26:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 263, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "3957:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 267, + "indexExpression": { + "argumentTypes": null, + "id": 264, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "3965:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3957:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 268, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 265, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3972:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3972:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3957:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 269, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "3987:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3957:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 271, + "nodeType": "ExpressionStatement", + "src": "3957:37:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 272, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "4003:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 274, + "indexExpression": { + "argumentTypes": null, + "id": 273, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "4012:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4003:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 275, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "4020:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4003:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 277, + "nodeType": "ExpressionStatement", + "src": "4003:24:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 279, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "4050:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 280, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "4057:3:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 281, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "4062:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 278, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "4041:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4041:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 283, + "nodeType": "EmitStatement", + "src": "4036:34:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4086:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 228, + "id": 285, + "nodeType": "Return", + "src": "4079:11:1" + } + ] + } + } + ] + }, + "documentation": null, + "id": 292, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 220, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3686:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 219, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3686:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 222, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3707:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3707:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 224, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3726:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3726:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3678:67:1" + }, + "payable": false, + "returnParameters": { + "id": 228, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 227, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3762:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 226, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3762:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3761:14:1" + }, + "scope": 337, + "src": "3657:476:1", + "stateMutability": "nonpayable", + "superFunction": 52, + "visibility": "public" + }, + { + "body": { + "id": 319, + "nodeType": "Block", + "src": "4398:117:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 301, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "4404:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 305, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 302, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "4412:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4412:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4404:19:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 306, + "indexExpression": { + "argumentTypes": null, + "id": 304, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 294, + "src": "4424:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4404:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 307, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "4436:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4404:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 309, + "nodeType": "ExpressionStatement", + "src": "4404:39:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 311, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "4463:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4463:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 313, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 294, + "src": "4475:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 314, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "4485:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 310, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4454:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4454:39:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 316, + "nodeType": "EmitStatement", + "src": "4449:44:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4506:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 300, + "id": 318, + "nodeType": "Return", + "src": "4499:11:1" + } + ] + }, + "documentation": null, + "id": 320, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 294, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "4333:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 293, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4333:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 296, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "4351:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 295, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4351:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4332:35:1" + }, + "payable": false, + "returnParameters": { + "id": 300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 299, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "4384:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 298, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4384:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4383:14:1" + }, + "scope": 337, + "src": "4316:199:1", + "stateMutability": "nonpayable", + "superFunction": 61, + "visibility": "public" + }, + { + "body": { + "id": 335, + "nodeType": "Block", + "src": "4616:43:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 329, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "4629:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 331, + "indexExpression": { + "argumentTypes": null, + "id": 330, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "4637:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4629:15:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 333, + "indexExpression": { + "argumentTypes": null, + "id": 332, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "4645:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4629:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 328, + "id": 334, + "nodeType": "Return", + "src": "4622:32:1" + } + ] + }, + "documentation": null, + "id": 336, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 322, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "4538:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4538:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 324, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "4554:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4554:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4537:34:1" + }, + "payable": false, + "returnParameters": { + "id": 328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 327, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "4597:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4597:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4596:19:1" + }, + "scope": 337, + "src": "4519:140:1", + "stateMutability": "view", + "superFunction": 70, + "visibility": "public" + } + ], + "scope": 338, + "src": "1753:2908:1" + } + ], + "src": "0:4662:1" + }, + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.1", + "updatedAt": "2018-11-08T20:46:35.584Z" +} \ No newline at end of file diff --git a/build/contracts/Forwarder.json b/build/contracts/Forwarder.json new file mode 100644 index 0000000..740e30a --- /dev/null +++ b/build/contracts/Forwarder.json @@ -0,0 +1,2890 @@ +{ + "contractName": "Forwarder", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "parentAddress", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "from", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + } + ], + "name": "ForwarderDeposited", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "tokenContractAddress", + "type": "address" + } + ], + "name": "flushTokens", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "flush", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061052e806100606000396000f300608060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de31461014e5780633ef13367146101a55780636b9f96ea146101e8575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100bd573d6000803e3d6000fd5b507f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b34801561015a57600080fd5b506101636101ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b157600080fd5b506101e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610224565b005b3480156101f457600080fd5b506101fd610481565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561028457600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050506040513d602081101561034f57600080fd5b8101908080519060200190929190505050905060008114156103705761047b565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561043457600080fd5b505af1158015610448573d6000803e3d6000fd5b505050506040513d602081101561045e57600080fd5b8101908080519060200190929190505050151561047a57600080fd5b5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156104ff573d6000803e3d6000fd5b505600a165627a7a7230582054d5010a664c411a8134d4b84799364252897da4327ef033519b6bc1977723b10029", + "deployedBytecode": "0x608060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de31461014e5780633ef13367146101a55780636b9f96ea146101e8575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100bd573d6000803e3d6000fd5b507f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b34801561015a57600080fd5b506101636101ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b157600080fd5b506101e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610224565b005b3480156101f457600080fd5b506101fd610481565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561028457600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050506040513d602081101561034f57600080fd5b8101908080519060200190929190505050905060008114156103705761047b565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561043457600080fd5b505af1158015610448573d6000803e3d6000fd5b505050506040513d602081101561045e57600080fd5b8101908080519060200190929190505050151561047a57600080fd5b5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156104ff573d6000803e3d6000fd5b505600a165627a7a7230582054d5010a664c411a8134d4b84799364252897da4327ef033519b6bc1977723b10029", + "sourceMap": "144:1724:2:-;;;432:58;8:9:-1;5:2;;;30:1;27;20:12;5:2;432:58:2;475:10;459:13;;:26;;;;;;;;;;;;;;;;;;144:1724;;;;;;", + "deployedSourceMap": "144:1724:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;863:13;;;;;;;;;;;:22;;:33;886:9;863:33;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;863:33:2;964:51;983:10;995:9;1006:8;;964:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;144:1724;239:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;239:28:2;;;;;;;;;;;;;;;;;;;;;;;;;;;1206:395;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1206:395:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;1761:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1761:105:2;;;;;;239:28;;;;;;;;;;;;;:::o;1206:395::-;1281:23;1349:24;1395;643:13;;;;;;;;;;;629:27;;:10;:27;;;;625:56;;;666:8;;;625:56;1322:20;1281:62;;1384:4;1349:40;;1422:8;:18;;;1441:16;1422:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1422:36:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1422:36:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1422:36:2;;;;;;;;;;;;;;;;1395:63;;1488:1;1468:16;:21;1464:48;;;1499:7;;1464:48;1522:8;:17;;;1540:13;;;;;;;;;;;1555:16;1522:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1522:50:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1522:50:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1522:50:2;;;;;;;;;;;;;;;;1521:51;1517:80;;;1582:8;;;1517:80;686:1;1206:395;;;;:::o;1761:105::-;1816:13;;;;;;;;;;;:22;;:45;1847:4;1839:21;;;1816:45;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1816:45:2;1761:105::o", + "source": "pragma solidity ^0.4.24;\nimport \"./ERC20Interface.sol\";\n/**\n * Contract that will forward any incoming Ether to the creator of the contract\n */\ncontract Forwarder {\n // Address to which any funds sent to this contract will be forwarded\n address public parentAddress;\n event ForwarderDeposited(address from, uint value, bytes data);\n\n /**\n * Create the contract, and sets the destination address to that of the creator\n */\n constructor() public {\n parentAddress = msg.sender;\n }\n\n /**\n * Modifier that will execute internal code block only if the sender is the parent address\n */\n modifier onlyParent {\n if (msg.sender != parentAddress) {\n revert();\n }\n _;\n }\n\n /**\n * Default function; Gets called when Ether is deposited, and forwards it to the parent address\n */\n function() public payable {\n // throws on failure\n parentAddress.transfer(msg.value);\n // Fire off the deposited event if we can forward it\n emit ForwarderDeposited(msg.sender, msg.value, msg.data);\n }\n\n /**\n * Execute a token transfer of the full balance from the forwarder token to the parent address\n * @param tokenContractAddress the address of the erc20 token contract\n */\n function flushTokens(address tokenContractAddress) public onlyParent {\n ERC20Interface instance = ERC20Interface(tokenContractAddress);\n address forwarderAddress = address(this);\n uint256 forwarderBalance = instance.balanceOf(forwarderAddress);\n if (forwarderBalance == 0) {\n return;\n }\n if (!instance.transfer(parentAddress, forwarderBalance)) {\n revert();\n }\n }\n\n /**\n * It is possible that funds were sent to this address before the contract was deployed.\n * We can flush those funds to the parent address.\n */\n function flush() public {\n // throws on failure\n parentAddress.transfer(address(this).balance);\n }\n}\n", + "sourcePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/Forwarder.sol", + "ast": { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/Forwarder.sol", + "exportedSymbols": { + "Forwarder": [ + 450 + ] + }, + "id": 451, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 339, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:2" + }, + { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/ERC20Interface.sol", + "file": "./ERC20Interface.sol", + "id": 340, + "nodeType": "ImportDirective", + "scope": 451, + "sourceUnit": 19, + "src": "25:30:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "Contract that will forward any incoming Ether to the creator of the contract", + "fullyImplemented": true, + "id": 450, + "linearizedBaseContracts": [ + 450 + ], + "name": "Forwarder", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 342, + "name": "parentAddress", + "nodeType": "VariableDeclaration", + "scope": 450, + "src": "239:28:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 341, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "239:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 350, + "name": "ForwarderDeposited", + "nodeType": "EventDefinition", + "parameters": { + "id": 349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 344, + "indexed": false, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "296:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 343, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "296:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 346, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "310:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 345, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "310:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 348, + "indexed": false, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "322:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 347, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "322:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "295:38:2" + }, + "src": "271:63:2" + }, + { + "body": { + "id": 358, + "nodeType": "Block", + "src": "453:37:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 353, + "name": "parentAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 342, + "src": "459:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 354, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "475:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "475:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "459:26:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 357, + "nodeType": "ExpressionStatement", + "src": "459:26:2" + } + ] + }, + "documentation": "Create the contract, and sets the destination address to that of the creator", + "id": 359, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 351, + "nodeType": "ParameterList", + "parameters": [], + "src": "443:2:2" + }, + "payable": false, + "returnParameters": { + "id": 352, + "nodeType": "ParameterList", + "parameters": [], + "src": "453:0:2" + }, + "scope": 450, + "src": "432:58:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 371, + "nodeType": "Block", + "src": "619:73:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 361, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "629:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "629:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 363, + "name": "parentAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 342, + "src": "643:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "629:27:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 369, + "nodeType": "IfStatement", + "src": "625:56:2", + "trueBody": { + "id": 368, + "nodeType": "Block", + "src": "658:23:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 365, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "666:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "666:8:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 367, + "nodeType": "ExpressionStatement", + "src": "666:8:2" + } + ] + } + }, + { + "id": 370, + "nodeType": "PlaceholderStatement", + "src": "686:1:2" + } + ] + }, + "documentation": "Modifier that will execute internal code block only if the sender is the parent address", + "id": 372, + "name": "onlyParent", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 360, + "nodeType": "ParameterList", + "parameters": [], + "src": "619:0:2" + }, + "src": "599:93:2", + "visibility": "internal" + }, + { + "body": { + "id": 391, + "nodeType": "Block", + "src": "832:188:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 378, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "886:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "886:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 375, + "name": "parentAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 342, + "src": "863:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "863:22:2", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "863:33:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 381, + "nodeType": "ExpressionStatement", + "src": "863:33:2" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 383, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "983:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "983:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 385, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "995:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "995:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 387, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "1006:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1006:8:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 382, + "name": "ForwarderDeposited", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 350, + "src": "964:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "964:51:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 390, + "nodeType": "EmitStatement", + "src": "959:56:2" + } + ] + }, + "documentation": "Default function; Gets called when Ether is deposited, and forwards it to the parent address", + "id": 392, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 373, + "nodeType": "ParameterList", + "parameters": [], + "src": "814:2:2" + }, + "payable": true, + "returnParameters": { + "id": 374, + "nodeType": "ParameterList", + "parameters": [], + "src": "832:0:2" + }, + "scope": 450, + "src": "806:214:2", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 435, + "nodeType": "Block", + "src": "1275:326:2", + "statements": [ + { + "assignments": [ + 400 + ], + "declarations": [ + { + "constant": false, + "id": 400, + "name": "instance", + "nodeType": "VariableDeclaration", + "scope": 436, + "src": "1281:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + }, + "typeName": { + "contractScope": null, + "id": 399, + "name": "ERC20Interface", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "1281:14:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 404, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 402, + "name": "tokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 394, + "src": "1322:20:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 401, + "name": "ERC20Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "1307:14:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Interface_$18_$", + "typeString": "type(contract ERC20Interface)" + } + }, + "id": 403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1307:36:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1281:62:2" + }, + { + "assignments": [ + 406 + ], + "declarations": [ + { + "constant": false, + "id": 406, + "name": "forwarderAddress", + "nodeType": "VariableDeclaration", + "scope": 436, + "src": "1349:24:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 405, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1349:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 410, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 408, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1064, + "src": "1384:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + ], + "id": 407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1376:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1376:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1349:40:2" + }, + { + "assignments": [ + 412 + ], + "declarations": [ + { + "constant": false, + "id": 412, + "name": "forwarderBalance", + "nodeType": "VariableDeclaration", + "scope": 436, + "src": "1395:24:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1395:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 417, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 415, + "name": "forwarderAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 406, + "src": "1441:16:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 413, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "1422:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "id": 414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 17, + "src": "1422:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1422:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1395:63:2" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 418, + "name": "forwarderBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "1468:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1488:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1468:21:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 423, + "nodeType": "IfStatement", + "src": "1464:48:2", + "trueBody": { + "id": 422, + "nodeType": "Block", + "src": "1491:21:2", + "statements": [ + { + "expression": null, + "functionReturnParameters": 398, + "id": 421, + "nodeType": "Return", + "src": "1499:7:2" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1521:51:2", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 426, + "name": "parentAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 342, + "src": "1540:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 427, + "name": "forwarderBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "1555:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 424, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "1522:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "id": 425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10, + "src": "1522:17:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1522:50:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 434, + "nodeType": "IfStatement", + "src": "1517:80:2", + "trueBody": { + "id": 433, + "nodeType": "Block", + "src": "1574:23:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 430, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "1582:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1582:8:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 432, + "nodeType": "ExpressionStatement", + "src": "1582:8:2" + } + ] + } + } + ] + }, + "documentation": "Execute a token transfer of the full balance from the forwarder token to the parent address\n@param tokenContractAddress the address of the erc20 token contract", + "id": 436, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 397, + "modifierName": { + "argumentTypes": null, + "id": 396, + "name": "onlyParent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 372, + "src": "1264:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1264:10:2" + } + ], + "name": "flushTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 394, + "name": "tokenContractAddress", + "nodeType": "VariableDeclaration", + "scope": 436, + "src": "1227:28:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 393, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1227:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1226:30:2" + }, + "payable": false, + "returnParameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [], + "src": "1275:0:2" + }, + "scope": 450, + "src": "1206:395:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 448, + "nodeType": "Block", + "src": "1785:81:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 443, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1064, + "src": "1847:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + ], + "id": 442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1839:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1839:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1839:21:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 439, + "name": "parentAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 342, + "src": "1816:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1816:22:2", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1816:45:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 447, + "nodeType": "ExpressionStatement", + "src": "1816:45:2" + } + ] + }, + "documentation": "It is possible that funds were sent to this address before the contract was deployed.\nWe can flush those funds to the parent address.", + "id": 449, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "flush", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 437, + "nodeType": "ParameterList", + "parameters": [], + "src": "1775:2:2" + }, + "payable": false, + "returnParameters": { + "id": 438, + "nodeType": "ParameterList", + "parameters": [], + "src": "1785:0:2" + }, + "scope": 450, + "src": "1761:105:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 451, + "src": "144:1724:2" + } + ], + "src": "0:1869:2" + }, + "legacyAST": { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/Forwarder.sol", + "exportedSymbols": { + "Forwarder": [ + 450 + ] + }, + "id": 451, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 339, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:2" + }, + { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/ERC20Interface.sol", + "file": "./ERC20Interface.sol", + "id": 340, + "nodeType": "ImportDirective", + "scope": 451, + "sourceUnit": 19, + "src": "25:30:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "Contract that will forward any incoming Ether to the creator of the contract", + "fullyImplemented": true, + "id": 450, + "linearizedBaseContracts": [ + 450 + ], + "name": "Forwarder", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 342, + "name": "parentAddress", + "nodeType": "VariableDeclaration", + "scope": 450, + "src": "239:28:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 341, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "239:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 350, + "name": "ForwarderDeposited", + "nodeType": "EventDefinition", + "parameters": { + "id": 349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 344, + "indexed": false, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "296:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 343, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "296:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 346, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "310:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 345, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "310:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 348, + "indexed": false, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "322:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 347, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "322:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "295:38:2" + }, + "src": "271:63:2" + }, + { + "body": { + "id": 358, + "nodeType": "Block", + "src": "453:37:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 353, + "name": "parentAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 342, + "src": "459:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 354, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "475:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "475:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "459:26:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 357, + "nodeType": "ExpressionStatement", + "src": "459:26:2" + } + ] + }, + "documentation": "Create the contract, and sets the destination address to that of the creator", + "id": 359, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 351, + "nodeType": "ParameterList", + "parameters": [], + "src": "443:2:2" + }, + "payable": false, + "returnParameters": { + "id": 352, + "nodeType": "ParameterList", + "parameters": [], + "src": "453:0:2" + }, + "scope": 450, + "src": "432:58:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 371, + "nodeType": "Block", + "src": "619:73:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 361, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "629:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "629:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 363, + "name": "parentAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 342, + "src": "643:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "629:27:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 369, + "nodeType": "IfStatement", + "src": "625:56:2", + "trueBody": { + "id": 368, + "nodeType": "Block", + "src": "658:23:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 365, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "666:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "666:8:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 367, + "nodeType": "ExpressionStatement", + "src": "666:8:2" + } + ] + } + }, + { + "id": 370, + "nodeType": "PlaceholderStatement", + "src": "686:1:2" + } + ] + }, + "documentation": "Modifier that will execute internal code block only if the sender is the parent address", + "id": 372, + "name": "onlyParent", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 360, + "nodeType": "ParameterList", + "parameters": [], + "src": "619:0:2" + }, + "src": "599:93:2", + "visibility": "internal" + }, + { + "body": { + "id": 391, + "nodeType": "Block", + "src": "832:188:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 378, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "886:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "886:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 375, + "name": "parentAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 342, + "src": "863:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "863:22:2", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "863:33:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 381, + "nodeType": "ExpressionStatement", + "src": "863:33:2" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 383, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "983:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "983:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 385, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "995:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "995:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 387, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "1006:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1006:8:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 382, + "name": "ForwarderDeposited", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 350, + "src": "964:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "964:51:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 390, + "nodeType": "EmitStatement", + "src": "959:56:2" + } + ] + }, + "documentation": "Default function; Gets called when Ether is deposited, and forwards it to the parent address", + "id": 392, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 373, + "nodeType": "ParameterList", + "parameters": [], + "src": "814:2:2" + }, + "payable": true, + "returnParameters": { + "id": 374, + "nodeType": "ParameterList", + "parameters": [], + "src": "832:0:2" + }, + "scope": 450, + "src": "806:214:2", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 435, + "nodeType": "Block", + "src": "1275:326:2", + "statements": [ + { + "assignments": [ + 400 + ], + "declarations": [ + { + "constant": false, + "id": 400, + "name": "instance", + "nodeType": "VariableDeclaration", + "scope": 436, + "src": "1281:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + }, + "typeName": { + "contractScope": null, + "id": 399, + "name": "ERC20Interface", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "1281:14:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 404, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 402, + "name": "tokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 394, + "src": "1322:20:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 401, + "name": "ERC20Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "1307:14:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Interface_$18_$", + "typeString": "type(contract ERC20Interface)" + } + }, + "id": 403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1307:36:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1281:62:2" + }, + { + "assignments": [ + 406 + ], + "declarations": [ + { + "constant": false, + "id": 406, + "name": "forwarderAddress", + "nodeType": "VariableDeclaration", + "scope": 436, + "src": "1349:24:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 405, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1349:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 410, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 408, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1064, + "src": "1384:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + ], + "id": 407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1376:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1376:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1349:40:2" + }, + { + "assignments": [ + 412 + ], + "declarations": [ + { + "constant": false, + "id": 412, + "name": "forwarderBalance", + "nodeType": "VariableDeclaration", + "scope": 436, + "src": "1395:24:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1395:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 417, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 415, + "name": "forwarderAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 406, + "src": "1441:16:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 413, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "1422:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "id": 414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 17, + "src": "1422:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1422:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1395:63:2" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 418, + "name": "forwarderBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "1468:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1488:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1468:21:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 423, + "nodeType": "IfStatement", + "src": "1464:48:2", + "trueBody": { + "id": 422, + "nodeType": "Block", + "src": "1491:21:2", + "statements": [ + { + "expression": null, + "functionReturnParameters": 398, + "id": 421, + "nodeType": "Return", + "src": "1499:7:2" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1521:51:2", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 426, + "name": "parentAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 342, + "src": "1540:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 427, + "name": "forwarderBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "1555:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 424, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "1522:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "id": 425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10, + "src": "1522:17:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1522:50:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 434, + "nodeType": "IfStatement", + "src": "1517:80:2", + "trueBody": { + "id": 433, + "nodeType": "Block", + "src": "1574:23:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 430, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "1582:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1582:8:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 432, + "nodeType": "ExpressionStatement", + "src": "1582:8:2" + } + ] + } + } + ] + }, + "documentation": "Execute a token transfer of the full balance from the forwarder token to the parent address\n@param tokenContractAddress the address of the erc20 token contract", + "id": 436, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 397, + "modifierName": { + "argumentTypes": null, + "id": 396, + "name": "onlyParent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 372, + "src": "1264:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1264:10:2" + } + ], + "name": "flushTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 394, + "name": "tokenContractAddress", + "nodeType": "VariableDeclaration", + "scope": 436, + "src": "1227:28:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 393, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1227:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1226:30:2" + }, + "payable": false, + "returnParameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [], + "src": "1275:0:2" + }, + "scope": 450, + "src": "1206:395:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 448, + "nodeType": "Block", + "src": "1785:81:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 443, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1064, + "src": "1847:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + ], + "id": 442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1839:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1839:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1839:21:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 439, + "name": "parentAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 342, + "src": "1816:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1816:22:2", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1816:45:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 447, + "nodeType": "ExpressionStatement", + "src": "1816:45:2" + } + ] + }, + "documentation": "It is possible that funds were sent to this address before the contract was deployed.\nWe can flush those funds to the parent address.", + "id": 449, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "flush", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 437, + "nodeType": "ParameterList", + "parameters": [], + "src": "1775:2:2" + }, + "payable": false, + "returnParameters": { + "id": 438, + "nodeType": "ParameterList", + "parameters": [], + "src": "1785:0:2" + }, + "scope": 450, + "src": "1761:105:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 451, + "src": "144:1724:2" + } + ], + "src": "0:1869:2" + }, + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.1", + "updatedAt": "2018-11-08T20:46:35.585Z" +} \ No newline at end of file diff --git a/build/contracts/ForwarderTarget.json b/build/contracts/ForwarderTarget.json new file mode 100644 index 0000000..15ff3b2 --- /dev/null +++ b/build/contracts/ForwarderTarget.json @@ -0,0 +1,1280 @@ +{ + "contractName": "ForwarderTarget", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "data", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "name": "d", + "type": "uint256" + }, + { + "name": "b", + "type": "bool" + } + ], + "name": "setDataWithValue", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "d", + "type": "uint256" + }, + { + "name": "b", + "type": "bool" + } + ], + "name": "setData", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "createForwarder", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610757806100206000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806373d4a13a14610064578063a68a76cc1461008f578063aee1af08146100a6578063fb4634dd146100f7575b005b34801561007057600080fd5b5061007961013b565b6040518082815260200191505060405180910390f35b34801561009b57600080fd5b506100a4610141565b005b3480156100b257600080fd5b506100dd60048036038101908080359060200190929190803515159060200190929190505050610169565b604051808215151515815260200191505060405180910390f35b6101216004803603810190808035906020019092919080351515906020019092919050505061017b565b604051808215151515815260200191505060405180910390f35b60005481565b61014961018d565b604051809103906000f080158015610165573d6000803e3d6000fd5b5050565b60008260008190555081905092915050565b60008260008190555081905092915050565b60405161058e8061019e833901905600608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061052e806100606000396000f300608060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de31461014e5780633ef13367146101a55780636b9f96ea146101e8575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100bd573d6000803e3d6000fd5b507f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b34801561015a57600080fd5b506101636101ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b157600080fd5b506101e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610224565b005b3480156101f457600080fd5b506101fd610481565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561028457600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050506040513d602081101561034f57600080fd5b8101908080519060200190929190505050905060008114156103705761047b565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561043457600080fd5b505af1158015610448573d6000803e3d6000fd5b505050506040513d602081101561045e57600080fd5b8101908080519060200190929190505050151561047a57600080fd5b5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156104ff573d6000803e3d6000fd5b505600a165627a7a7230582054d5010a664c411a8134d4b84799364252897da4327ef033519b6bc1977723b10029a165627a7a72305820b172b7fcf443e8be931a5b609065664ea1365b49bbe6caba432deb84e1e12c9a0029", + "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806373d4a13a14610064578063a68a76cc1461008f578063aee1af08146100a6578063fb4634dd146100f7575b005b34801561007057600080fd5b5061007961013b565b6040518082815260200191505060405180910390f35b34801561009b57600080fd5b506100a4610141565b005b3480156100b257600080fd5b506100dd60048036038101908080359060200190929190803515159060200190929190505050610169565b604051808215151515815260200191505060405180910390f35b6101216004803603810190808035906020019092919080351515906020019092919050505061017b565b604051808215151515815260200191505060405180910390f35b60005481565b61014961018d565b604051809103906000f080158015610165573d6000803e3d6000fd5b5050565b60008260008190555081905092915050565b60008260008190555081905092915050565b60405161058e8061019e833901905600608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061052e806100606000396000f300608060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de31461014e5780633ef13367146101a55780636b9f96ea146101e8575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100bd573d6000803e3d6000fd5b507f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b34801561015a57600080fd5b506101636101ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b157600080fd5b506101e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610224565b005b3480156101f457600080fd5b506101fd610481565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561028457600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050506040513d602081101561034f57600080fd5b8101908080519060200190929190505050905060008114156103705761047b565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561043457600080fd5b505af1158015610448573d6000803e3d6000fd5b505050506040513d602081101561045e57600080fd5b8101908080519060200190929190505050151561047a57600080fd5b5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156104ff573d6000803e3d6000fd5b505600a165627a7a7230582054d5010a664c411a8134d4b84799364252897da4327ef033519b6bc1977723b10029a165627a7a72305820b172b7fcf443e8be931a5b609065664ea1365b49bbe6caba432deb84e1e12c9a0029", + "sourceMap": "149:415:3:-;;;202:26;8:9:-1;5:2;;;30:1;27;20:12;5:2;202:26:3;149:415;;;;;;", + "deployedSourceMap": "149:415:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;178:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;178:19:3;;;;;;;;;;;;;;;;;;;;;;;433:60;;8:9:-1;5:2;;;30:1;27;20:12;5:2;433:60:3;;;;;;341:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;341:88:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;232:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;178:19;;;;:::o;433:60::-;473:15;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;473:15:3;;433:60::o;341:88::-;390:4;409:1;402:4;:8;;;;423:1;416:8;;341:88;;;;:::o;232:105::-;298:4;317:1;310:4;:8;;;;331:1;324:8;;232:105;;;;:::o;149:415::-;;;;;;;;;;:::o", + "source": "pragma solidity ^0.4.24;\n\n\nimport \"./Forwarder.sol\";\n\n// This is a test target for a Forwarder.\n// It contains a public function with a side-effect.\ncontract ForwarderTarget {\n uint256 public data;\n\n constructor() public {\n }\n\n function setDataWithValue(uint d, bool b) payable public returns (bool) {\n data = d;\n return b;\n }\n\n function setData(uint d, bool b) public returns (bool) {\n data = d;\n return b;\n }\n\n function createForwarder() public {\n new Forwarder();\n }\n\n function() public payable {\n // accept unspendable balance\n }\n}\n", + "sourcePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/ForwarderTarget.sol", + "ast": { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/ForwarderTarget.sol", + "exportedSymbols": { + "ForwarderTarget": [ + 504 + ] + }, + "id": 505, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 452, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:3" + }, + { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/Forwarder.sol", + "file": "./Forwarder.sol", + "id": 453, + "nodeType": "ImportDirective", + "scope": 505, + "sourceUnit": 451, + "src": "27:25:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [ + 450 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 504, + "linearizedBaseContracts": [ + 504 + ], + "name": "ForwarderTarget", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 455, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 504, + "src": "178:19:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 454, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "178:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 458, + "nodeType": "Block", + "src": "223:5:3", + "statements": [] + }, + "documentation": null, + "id": 459, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 456, + "nodeType": "ParameterList", + "parameters": [], + "src": "213:2:3" + }, + "payable": false, + "returnParameters": { + "id": 457, + "nodeType": "ParameterList", + "parameters": [], + "src": "223:0:3" + }, + "scope": 504, + "src": "202:26:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 474, + "nodeType": "Block", + "src": "304:33:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 468, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 455, + "src": "310:4:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 469, + "name": "d", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 461, + "src": "317:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "310:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 471, + "nodeType": "ExpressionStatement", + "src": "310:8:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 472, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "331:1:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 467, + "id": 473, + "nodeType": "Return", + "src": "324:8:3" + } + ] + }, + "documentation": null, + "id": 475, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setDataWithValue", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 461, + "name": "d", + "nodeType": "VariableDeclaration", + "scope": 475, + "src": "258:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 460, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "258:4:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 463, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 475, + "src": "266:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 462, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "266:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "257:16:3" + }, + "payable": true, + "returnParameters": { + "id": 467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 466, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 475, + "src": "298:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 465, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "298:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "297:6:3" + }, + "scope": 504, + "src": "232:105:3", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 490, + "nodeType": "Block", + "src": "396:33:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 484, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 455, + "src": "402:4:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 485, + "name": "d", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 477, + "src": "409:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "402:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 487, + "nodeType": "ExpressionStatement", + "src": "402:8:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 488, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "423:1:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 483, + "id": 489, + "nodeType": "Return", + "src": "416:8:3" + } + ] + }, + "documentation": null, + "id": 491, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setData", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 477, + "name": "d", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "358:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 476, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "358:4:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 479, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "366:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 478, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "366:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "357:16:3" + }, + "payable": false, + "returnParameters": { + "id": 483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 482, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "390:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 481, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "390:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "389:6:3" + }, + "scope": 504, + "src": "341:88:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 498, + "nodeType": "Block", + "src": "467:26:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "473:13:3", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Forwarder_$450_$", + "typeString": "function () returns (contract Forwarder)" + }, + "typeName": { + "contractScope": null, + "id": 494, + "name": "Forwarder", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 450, + "src": "477:9:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + } + }, + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "473:15:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + }, + "id": 497, + "nodeType": "ExpressionStatement", + "src": "473:15:3" + } + ] + }, + "documentation": null, + "id": 499, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createForwarder", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [], + "src": "457:2:3" + }, + "payable": false, + "returnParameters": { + "id": 493, + "nodeType": "ParameterList", + "parameters": [], + "src": "467:0:3" + }, + "scope": 504, + "src": "433:60:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 502, + "nodeType": "Block", + "src": "523:39:3", + "statements": [] + }, + "documentation": null, + "id": 503, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 500, + "nodeType": "ParameterList", + "parameters": [], + "src": "505:2:3" + }, + "payable": true, + "returnParameters": { + "id": 501, + "nodeType": "ParameterList", + "parameters": [], + "src": "523:0:3" + }, + "scope": 504, + "src": "497:65:3", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 505, + "src": "149:415:3" + } + ], + "src": "0:565:3" + }, + "legacyAST": { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/ForwarderTarget.sol", + "exportedSymbols": { + "ForwarderTarget": [ + 504 + ] + }, + "id": 505, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 452, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:3" + }, + { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/Forwarder.sol", + "file": "./Forwarder.sol", + "id": 453, + "nodeType": "ImportDirective", + "scope": 505, + "sourceUnit": 451, + "src": "27:25:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [ + 450 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 504, + "linearizedBaseContracts": [ + 504 + ], + "name": "ForwarderTarget", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 455, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 504, + "src": "178:19:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 454, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "178:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 458, + "nodeType": "Block", + "src": "223:5:3", + "statements": [] + }, + "documentation": null, + "id": 459, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 456, + "nodeType": "ParameterList", + "parameters": [], + "src": "213:2:3" + }, + "payable": false, + "returnParameters": { + "id": 457, + "nodeType": "ParameterList", + "parameters": [], + "src": "223:0:3" + }, + "scope": 504, + "src": "202:26:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 474, + "nodeType": "Block", + "src": "304:33:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 468, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 455, + "src": "310:4:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 469, + "name": "d", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 461, + "src": "317:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "310:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 471, + "nodeType": "ExpressionStatement", + "src": "310:8:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 472, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "331:1:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 467, + "id": 473, + "nodeType": "Return", + "src": "324:8:3" + } + ] + }, + "documentation": null, + "id": 475, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setDataWithValue", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 461, + "name": "d", + "nodeType": "VariableDeclaration", + "scope": 475, + "src": "258:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 460, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "258:4:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 463, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 475, + "src": "266:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 462, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "266:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "257:16:3" + }, + "payable": true, + "returnParameters": { + "id": 467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 466, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 475, + "src": "298:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 465, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "298:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "297:6:3" + }, + "scope": 504, + "src": "232:105:3", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 490, + "nodeType": "Block", + "src": "396:33:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 484, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 455, + "src": "402:4:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 485, + "name": "d", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 477, + "src": "409:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "402:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 487, + "nodeType": "ExpressionStatement", + "src": "402:8:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 488, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "423:1:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 483, + "id": 489, + "nodeType": "Return", + "src": "416:8:3" + } + ] + }, + "documentation": null, + "id": 491, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setData", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 477, + "name": "d", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "358:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 476, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "358:4:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 479, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "366:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 478, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "366:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "357:16:3" + }, + "payable": false, + "returnParameters": { + "id": 483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 482, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "390:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 481, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "390:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "389:6:3" + }, + "scope": 504, + "src": "341:88:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 498, + "nodeType": "Block", + "src": "467:26:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "473:13:3", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Forwarder_$450_$", + "typeString": "function () returns (contract Forwarder)" + }, + "typeName": { + "contractScope": null, + "id": 494, + "name": "Forwarder", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 450, + "src": "477:9:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + } + }, + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "473:15:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + }, + "id": 497, + "nodeType": "ExpressionStatement", + "src": "473:15:3" + } + ] + }, + "documentation": null, + "id": 499, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createForwarder", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [], + "src": "457:2:3" + }, + "payable": false, + "returnParameters": { + "id": 493, + "nodeType": "ParameterList", + "parameters": [], + "src": "467:0:3" + }, + "scope": 504, + "src": "433:60:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 502, + "nodeType": "Block", + "src": "523:39:3", + "statements": [] + }, + "documentation": null, + "id": 503, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 500, + "nodeType": "ParameterList", + "parameters": [], + "src": "505:2:3" + }, + "payable": true, + "returnParameters": { + "id": 501, + "nodeType": "ParameterList", + "parameters": [], + "src": "523:0:3" + }, + "scope": 504, + "src": "497:65:3", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 505, + "src": "149:415:3" + } + ], + "src": "0:565:3" + }, + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.1", + "updatedAt": "2018-11-08T20:46:35.586Z" +} \ No newline at end of file diff --git a/build/contracts/WalletSimple.json b/build/contracts/WalletSimple.json new file mode 100644 index 0000000..55f4743 --- /dev/null +++ b/build/contracts/WalletSimple.json @@ -0,0 +1,13806 @@ +{ + "contractName": "WalletSimple", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "signers", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "safeMode", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "allowedSigners", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "from", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "msgSender", + "type": "address" + } + ], + "name": "SafeModeActivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "msgSender", + "type": "address" + }, + { + "indexed": false, + "name": "otherSigner", + "type": "address" + }, + { + "indexed": false, + "name": "operation", + "type": "bytes32" + }, + { + "indexed": false, + "name": "toAddress", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "data", + "type": "bytes" + } + ], + "name": "Transacted", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "signer", + "type": "address" + } + ], + "name": "isSigner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "createForwarder", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "toAddress", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "expireTime", + "type": "uint256" + }, + { + "name": "sequenceId", + "type": "uint256" + }, + { + "name": "signature", + "type": "bytes" + } + ], + "name": "sendMultiSig", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "toAddress", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "tokenContractAddress", + "type": "address" + }, + { + "name": "expireTime", + "type": "uint256" + }, + { + "name": "sequenceId", + "type": "uint256" + }, + { + "name": "signature", + "type": "bytes" + } + ], + "name": "sendMultiSigToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "forwarderAddress", + "type": "address" + }, + { + "name": "tokenContractAddress", + "type": "address" + } + ], + "name": "flushForwarderTokens", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "activateSafeMode", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getNextSequenceId", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040526000600160006101000a81548160ff02191690831515021790555034801561002b57600080fd5b506040516116ec3803806116ec833981018060405281019080805182019291905050506003815114151561005e57600080fd5b806000908051906020019061007492919061007b565b5050610148565b8280548282559060005260206000209081019282156100f4579160200282015b828111156100f35782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061009b565b5b5090506101019190610105565b5090565b61014591905b8082111561014157600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161010b565b5090565b90565b611595806101576000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630dcd7a6c146101335780632079fb9a146101fa5780632da034091461026757806339125215146102ca5780637df73e27146103b7578063a0b7967b14610412578063a68a76cc1461043d578063abe3219c14610494578063fc0f392d146104c3575b6000341115610131577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a15b005b34801561013f57600080fd5b506101f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506104da565b005b34801561020657600080fd5b5061022560048036038101908080359060200190929190505050610737565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027357600080fd5b506102c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610775565b005b3480156102d657600080fd5b506103b5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610846565b005b3480156103c357600080fd5b506103f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bad565b604051808215151515815260200191505060405180910390f35b34801561041e57600080fd5b50610427610c50565b6040518082815260200191505060405180910390f35b34801561044957600080fd5b50610452610caa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104a057600080fd5b506104a9610cd6565b604051808215151515815260200191505060405180910390f35b3480156104cf57600080fd5b506104d8610ce9565b005b6000806104e633610bad565b15156104f157600080fd5b878787878760405160200180807f45524332300000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001955050505050506040516020818303038152906040526040518082805190602001908083835b60208310151561060457805182526020820191506020810190506020830392506105df565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091506106408883858888610d7c565b508590508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156106e757600080fd5b505af11580156106fb573d6000803e3d6000fd5b505050506040513d602081101561071157600080fd5b8101908080519060200190929190505050151561072d57600080fd5b5050505050505050565b60008181548110151561074657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061078033610bad565b151561078b57600080fd5b8290508073ffffffffffffffffffffffffffffffffffffffff16633ef13367836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561082957600080fd5b505af115801561083d573d6000803e3d6000fd5b50505050505050565b60008061085233610bad565b151561085d57600080fd5b878787878760405160200180807f45544845520000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561090957805182526020820191506020810190506020830392506108e4565b6001836020036101000a038019825116818451168082178552505050505050905001838152602001828152602001955050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610982578051825260208201915060208101905060208303925061095d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091506109be8883858888610d7c565b90508773ffffffffffffffffffffffffffffffffffffffff16878760405180828051906020019080838360005b83811015610a065780820151818401526020810190506109eb565b50505050905090810190601f168015610a335780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515610a5357600080fd5b7f59bed9ab5d78073465dd642a9e3e76dfdb7d53bcae9d09df7d0b8f5234d5a8063382848b8b8b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b64578082015181840152602081019050610b49565b50505050905090810190601f168015610b915780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050505050565b600080600090505b600080549050811015610c45578273ffffffffffffffffffffffffffffffffffffffff16600082815481101515610be857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c385760019150610c4a565b8080600101915050610bb5565b600091505b50919050565b6000806000809150600090505b600a811015610c9f5781600282600a81101515610c7657fe5b01541115610c9257600281600a81101515610c8d57fe5b015491505b8080600101915050610c5d565b600182019250505090565b6000610cb4610fcb565b604051809103906000f080158015610cd0573d6000803e3d6000fd5b50905090565b600160009054906101000a900460ff1681565b610cf233610bad565b1515610cfd57600080fd5b60018060006101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600080610d898686610e27565b9050600160009054906101000a900460ff168015610dad5750610dab87610bad565b155b15610db757600080fd5b42841015610dc457600080fd5b610dcd83610ef4565b610dd681610bad565b1515610de157600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e1a57600080fd5b8091505095945050505050565b60008060008060418551141515610e3d57600080fd5b602085015192506040850151915060ff6041860151169050601b8160ff161015610e6857601b810190505b600186828585604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610edf573d6000803e3d6000fd5b50505060206040510351935050505092915050565b600080610f0033610bad565b1515610f0b57600080fd5b60009150600090505b600a811015610f735782600282600a81101515610f2d57fe5b01541415610f3a57600080fd5b600282600a81101515610f4957fe5b0154600282600a81101515610f5a57fe5b01541015610f66578091505b8080600101915050610f14565b600282600a81101515610f8257fe5b0154831015610f9057600080fd5b612710600283600a81101515610fa257fe5b015401831115610fb157600080fd5b82600283600a81101515610fc157fe5b0181905550505050565b60405161058e80610fdc833901905600608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061052e806100606000396000f300608060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de31461014e5780633ef13367146101a55780636b9f96ea146101e8575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100bd573d6000803e3d6000fd5b507f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b34801561015a57600080fd5b506101636101ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b157600080fd5b506101e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610224565b005b3480156101f457600080fd5b506101fd610481565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561028457600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050506040513d602081101561034f57600080fd5b8101908080519060200190929190505050905060008114156103705761047b565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561043457600080fd5b505af1158015610448573d6000803e3d6000fd5b505050506040513d602081101561045e57600080fd5b8101908080519060200190929190505050151561047a57600080fd5b5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156104ff573d6000803e3d6000fd5b505600a165627a7a7230582054d5010a664c411a8134d4b84799364252897da4327ef033519b6bc1977723b10029a165627a7a7230582081764c02bb895f6deab648a36ac5ebbdcf0c5c5cc161d1933b0c37b3ecb941fc0029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630dcd7a6c146101335780632079fb9a146101fa5780632da034091461026757806339125215146102ca5780637df73e27146103b7578063a0b7967b14610412578063a68a76cc1461043d578063abe3219c14610494578063fc0f392d146104c3575b6000341115610131577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a15b005b34801561013f57600080fd5b506101f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506104da565b005b34801561020657600080fd5b5061022560048036038101908080359060200190929190505050610737565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027357600080fd5b506102c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610775565b005b3480156102d657600080fd5b506103b5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610846565b005b3480156103c357600080fd5b506103f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bad565b604051808215151515815260200191505060405180910390f35b34801561041e57600080fd5b50610427610c50565b6040518082815260200191505060405180910390f35b34801561044957600080fd5b50610452610caa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104a057600080fd5b506104a9610cd6565b604051808215151515815260200191505060405180910390f35b3480156104cf57600080fd5b506104d8610ce9565b005b6000806104e633610bad565b15156104f157600080fd5b878787878760405160200180807f45524332300000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001955050505050506040516020818303038152906040526040518082805190602001908083835b60208310151561060457805182526020820191506020810190506020830392506105df565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091506106408883858888610d7c565b508590508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156106e757600080fd5b505af11580156106fb573d6000803e3d6000fd5b505050506040513d602081101561071157600080fd5b8101908080519060200190929190505050151561072d57600080fd5b5050505050505050565b60008181548110151561074657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061078033610bad565b151561078b57600080fd5b8290508073ffffffffffffffffffffffffffffffffffffffff16633ef13367836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561082957600080fd5b505af115801561083d573d6000803e3d6000fd5b50505050505050565b60008061085233610bad565b151561085d57600080fd5b878787878760405160200180807f45544845520000000000000000000000000000000000000000000000000000008152506005018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561090957805182526020820191506020810190506020830392506108e4565b6001836020036101000a038019825116818451168082178552505050505050905001838152602001828152602001955050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610982578051825260208201915060208101905060208303925061095d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091506109be8883858888610d7c565b90508773ffffffffffffffffffffffffffffffffffffffff16878760405180828051906020019080838360005b83811015610a065780820151818401526020810190506109eb565b50505050905090810190601f168015610a335780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515610a5357600080fd5b7f59bed9ab5d78073465dd642a9e3e76dfdb7d53bcae9d09df7d0b8f5234d5a8063382848b8b8b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b64578082015181840152602081019050610b49565b50505050905090810190601f168015610b915780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050505050565b600080600090505b600080549050811015610c45578273ffffffffffffffffffffffffffffffffffffffff16600082815481101515610be857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c385760019150610c4a565b8080600101915050610bb5565b600091505b50919050565b6000806000809150600090505b600a811015610c9f5781600282600a81101515610c7657fe5b01541115610c9257600281600a81101515610c8d57fe5b015491505b8080600101915050610c5d565b600182019250505090565b6000610cb4610fcb565b604051809103906000f080158015610cd0573d6000803e3d6000fd5b50905090565b600160009054906101000a900460ff1681565b610cf233610bad565b1515610cfd57600080fd5b60018060006101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600080610d898686610e27565b9050600160009054906101000a900460ff168015610dad5750610dab87610bad565b155b15610db757600080fd5b42841015610dc457600080fd5b610dcd83610ef4565b610dd681610bad565b1515610de157600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e1a57600080fd5b8091505095945050505050565b60008060008060418551141515610e3d57600080fd5b602085015192506040850151915060ff6041860151169050601b8160ff161015610e6857601b810190505b600186828585604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610edf573d6000803e3d6000fd5b50505060206040510351935050505092915050565b600080610f0033610bad565b1515610f0b57600080fd5b60009150600090505b600a811015610f735782600282600a81101515610f2d57fe5b01541415610f3a57600080fd5b600282600a81101515610f4957fe5b0154600282600a81101515610f5a57fe5b01541015610f66578091505b8080600101915050610f14565b600282600a81101515610f8257fe5b0154831015610f9057600080fd5b612710600283600a81101515610fa257fe5b015401831115610fb157600080fd5b82600283600a81101515610fc157fe5b0181905550505050565b60405161058e80610fdc833901905600608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061052e806100606000396000f300608060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de31461014e5780633ef13367146101a55780636b9f96ea146101e8575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100bd573d6000803e3d6000fd5b507f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b34801561015a57600080fd5b506101636101ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101b157600080fd5b506101e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610224565b005b3480156101f457600080fd5b506101fd610481565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561028457600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050506040513d602081101561034f57600080fd5b8101908080519060200190929190505050905060008114156103705761047b565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561043457600080fd5b505af1158015610448573d6000803e3d6000fd5b505050506040513d602081101561045e57600080fd5b8101908080519060200190929190505050151561047a57600080fd5b5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156104ff573d6000803e3d6000fd5b505600a165627a7a7230582054d5010a664c411a8134d4b84799364252897da4327ef033519b6bc1977723b10029a165627a7a7230582081764c02bb895f6deab648a36ac5ebbdcf0c5c5cc161d1933b0c37b3ecb941fc0029", + "sourceMap": "1120:10164:4:-;;;1847:5;1824:28;;;;;;;;;;;;;;;;;;;;2383:175;8:9:-1;5:2;;;30:1;27;20:12;5:2;2383:175:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:1;2438:14;:21;:26;;2434:90;;;2509:8;;;2434:90;2539:14;2529:7;:24;;;;;;;;;;;;:::i;:::-;;2383:175;1120:10164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "1120:10164:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3335:1;3323:9;:13;3319:137;;;3407:42;3417:10;3429:9;3440:8;;3407:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3319:137;1120:10164;5717:594;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5717:594:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1735:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1735:24:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6636:226;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6636:226:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4377:663;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4377:663:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2731:254;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2731:254:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10980:302;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10980:302:4;;;;;;;;;;;;;;;;;;;;;;;3615:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3615:85:4;;;;;;;;;;;;;;;;;;;;;;;;;;;1824:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1824:28:4;;;;;;;;;;;;;;;;;;;;;;;;;;;8496:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8496:112:4;;;;;;5717:594;5951:21;6172:23;3142:20;3151:10;3142:8;:20::i;:::-;3141:21;3137:50;;;3172:8;;;3137:50;6011:9;6022:5;6029:20;6051:10;6063;5985:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5985:89:4;;;5975:100;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5975:100:4;;;;;;;;;;;;;;;;5951:124;;6086:75;6101:9;6112:13;6127:9;6138:10;6150;6086:14;:75::i;:::-;;6213:20;6172:62;;6245:8;:17;;;6263:9;6274:5;6245:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6245:35:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6245:35:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6245:35:4;;;;;;;;;;;;;;;;6244:36;6240:67;;;6292:8;;;6240:67;5717:594;;;;;;;;:::o;1735:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6636:226::-;6759:19;3142:20;3151:10;3142:8;:20::i;:::-;3141:21;3137:50;;;3172:8;;;3137:50;6791:16;6759:49;;6814:9;:21;;;6836:20;6814:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6814:43:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6814:43:4;;;;6636:226;;;:::o;4377:663::-;4588:21;4707:19;3142:20;3151:10;3142:8;:20::i;:::-;3141:21;3137:50;;;3172:8;;;3137:50;4648:9;4659:5;4666:4;4672:10;4684;4622:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4622:73:4;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4622:73:4;;;4612:84;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4612:84:4;;;;;;;;;;;;;;;;4588:108;;4729:75;4744:9;4755:13;4770:9;4781:10;4793;4729:14;:75::i;:::-;4707:97;;4854:9;:14;;4875:5;4882:4;4854:33;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4854:33:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4852:36;4848:103;;;4936:8;;;4848:103;4961:74;4972:10;4984:11;4997:13;5012:9;5023:5;5030:4;4961:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4961:74:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4377:663;;;;;;;;:::o;2731:254::-;2786:4;2856:6;2865:1;2856:10;;2851:112;2872:7;:14;;;;2868:1;:18;2851:112;;;2919:6;2905:20;;:7;2913:1;2905:10;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;2901:56;;;2944:4;2937:11;;;;2901:56;2888:3;;;;;;;2851:112;;;2975:5;2968:12;;2731:254;;;;;:::o;10980:302::-;11030:4;11042:22;11079:6;11067:1;11042:26;;11088:1;11079:10;;11074:170;1975:2;11091:1;:27;11074:170;;;11160:17;11137;11155:1;11137:20;;;;;;;;;;;:40;11133:105;;;11209:17;11227:1;11209:20;;;;;;;;;;;11189:40;;11133:105;11120:3;;;;;;;11074:170;;;11276:1;11256:17;:21;11249:28;;10980:302;;;:::o;3615:85::-;3658:7;3680:15;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3680:15:4;3673:22;;3615:85;:::o;1824:28::-;;;;;;;;;;;;;:::o;8496:112::-;3142:20;3151:10;3142:8;:20::i;:::-;3141:21;3137:50;;;3172:8;;;3137:50;8559:4;8548:8;;:15;;;;;;;;;;;;;;;;;;8574:29;8592:10;8574:29;;;;;;;;;;;;;;;;;;;;;;8496:112::o;7348:1014::-;7516:7;7532:19;7554:53;7582:13;7597:9;7554:27;:53::i;:::-;7532:75;;7706:8;;;;;;;;;;;:32;;;;;7719:19;7728:9;7719:8;:19::i;:::-;7718:20;7706:32;7702:135;;;7822:8;;;7702:135;7910:15;7897:10;:28;7893:86;;;7964:8;;;7893:86;8066:31;8086:10;8066:19;:31::i;:::-;8109:21;8118:11;8109:8;:21::i;:::-;8108:22;8104:130;;;8219:8;;;8104:130;8258:10;8243:25;;:11;:25;;;8239:94;;;8318:8;;;8239:94;8346:11;8339:18;;7348:1014;;;;;;;;:::o;8799:641::-;8910:7;9076:9;9091;9106:7;8949:2;8929:9;:16;:22;;8925:51;;;8961:8;;;8925:51;9162:2;9151:9;9147:18;9141:25;9136:30;;9199:2;9188:9;9184:18;9178:25;9173:30;;9246:3;9240:2;9229:9;9225:18;9219:25;9215:35;9210:40;;9269:2;9265:1;:6;;;9261:129;;;9286:2;9281:7;;;;9261:129;9402:33;9412:13;9427:1;9430;9433;9402:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9402:33:4;;;;;;;;9395:40;;8799:641;;;;;;;:::o;9799:1010::-;9934:21;9970:6;3142:20;3151:10;3142:8;:20::i;:::-;3141:21;3137:50;;;3172:8;;;3137:50;9958:1;9934:25;;9979:1;9970:10;;9965:302;1975:2;9982:1;:27;9965:302;;;10052:10;10028:17;10046:1;10028:20;;;;;;;;;;;:34;10024:127;;;10134:8;;;10024:127;10185:17;10203:16;10185:35;;;;;;;;;;;10162:17;10180:1;10162:20;;;;;;;;;;;:58;10158:103;;;10251:1;10232:20;;10158:103;10011:3;;;;;;;9965:302;;;10289:17;10307:16;10289:35;;;;;;;;;;;10276:10;:48;10272:222;;;10479:8;;;10272:222;10555:5;10517:17;10535:16;10517:35;;;;;;;;;;;:43;10503:10;:58;10499:252;;;10736:8;;;10499:252;10794:10;10756:17;10774:16;10756:35;;;;;;;;;;:48;;;;9799:1010;;;:::o;1120:10164::-;;;;;;;;;;:::o", + "source": "pragma solidity ^0.4.24;\nimport \"./Forwarder.sol\";\nimport \"./ERC20Interface.sol\";\n/**\n *\n * WalletSimple\n * ============\n *\n * Basic multi-signer wallet designed for use in a co-signing environment where 2 signatures are required to move funds.\n * Typically used in a 2-of-3 signing configuration. Uses ecrecover to allow for 2 signatures in a single transaction.\n *\n * The first signature is created on the operation hash (see Data Formats) and passed to sendMultiSig/sendMultiSigToken\n * The signer is determined by verifyMultiSig().\n *\n * The second signature is created by the submitter of the transaction and determined by msg.signer.\n *\n * Data Formats\n * ============\n *\n * The signature is created with ethereumjs-util.ecsign(operationHash).\n * Like the eth_sign RPC call, it packs the values as a 65-byte array of [r, s, v].\n * Unlike eth_sign, the message is not prefixed.\n *\n * The operationHash the result of keccak256(prefix, toAddress, value, data, expireTime).\n * For ether transactions, `prefix` is \"ETHER\".\n * For token transaction, `prefix` is \"ERC20\" and `data` is the tokenContractAddress.\n *\n *\n */\ncontract WalletSimple {\n // Events\n event Deposited(address from, uint value, bytes data);\n event SafeModeActivated(address msgSender);\n event Transacted(\n address msgSender, // Address of the sender of the message initiating the transaction\n address otherSigner, // Address of the signer (second signature) used to initiate the transaction\n bytes32 operation, // Operation hash (see Data Formats)\n address toAddress, // The address the transaction was sent to\n uint value, // Amount of Wei sent to the address\n bytes data // Data sent when invoking the transaction\n );\n\n // Public fields\n address[] public signers; // The addresses that can co-sign transactions on the wallet\n bool public safeMode = false; // When active, wallet may only send to signer addresses\n\n // Internal fields\n uint constant SEQUENCE_ID_WINDOW_SIZE = 10;\n uint[10] recentSequenceIds;\n\n /**\n * Set up a simple multi-sig wallet by specifying the signers allowed to be used on this wallet.\n * 2 signers will be required to send a transaction from this wallet.\n * Note: The sender is NOT automatically added to the list of signers.\n * Signers CANNOT be changed once they are set\n *\n * @param allowedSigners An array of signers on the wallet\n */\n constructor(address[] allowedSigners) public {\n if (allowedSigners.length != 3) {\n // Invalid number of signers\n revert();\n }\n signers = allowedSigners;\n }\n\n /**\n * Determine if an address is a signer on this wallet\n * @param signer address to check\n * returns boolean indicating whether address is signer or not\n */\n function isSigner(address signer) public view returns (bool) {\n // Iterate through all signers on the wallet and\n for (uint i = 0; i < signers.length; i++) {\n if (signers[i] == signer) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Modifier that will execute internal code block only if the sender is an authorized signer on this wallet\n */\n modifier onlySigner {\n if (!isSigner(msg.sender)) {\n revert();\n }\n _;\n }\n\n /**\n * Gets called when a transaction is received without calling a method\n */\n function() public payable {\n if (msg.value > 0) {\n // Fire deposited event if we are receiving funds\n emit Deposited(msg.sender, msg.value, msg.data);\n }\n }\n\n /**\n * Create a new contract (and also address) that forwards funds to this contract\n * returns address of newly created forwarder address\n */\n function createForwarder() public returns (address) {\n return new Forwarder();\n }\n\n /**\n * Execute a multi-signature transaction from this wallet using 2 signers: one from msg.sender and the other from ecrecover.\n * Sequence IDs are numbers starting from 1. They are used to prevent replay attacks and may not be repeated.\n *\n * @param toAddress the destination address to send an outgoing transaction\n * @param value the amount in Wei to be sent\n * @param data the data to send to the toAddress when invoking the transaction\n * @param expireTime the number of seconds since 1970 for which this transaction is valid\n * @param sequenceId the unique sequence id obtainable from getNextSequenceId\n * @param signature see Data Formats\n */\n function sendMultiSig(\n address toAddress,\n uint value,\n bytes data,\n uint expireTime,\n uint sequenceId,\n bytes signature\n ) public onlySigner {\n // Verify the other signer\n bytes32 operationHash = keccak256(abi.encodePacked(\"ETHER\", toAddress, value, data, expireTime, sequenceId));\n \n address otherSigner = verifyMultiSig(toAddress, operationHash, signature, expireTime, sequenceId);\n\n // Success, send the transaction\n if (!(toAddress.call.value(value)(data))) {\n // Failed executing transaction\n revert();\n }\n emit Transacted(msg.sender, otherSigner, operationHash, toAddress, value, data);\n }\n \n /**\n * Execute a multi-signature token transfer from this wallet using 2 signers: one from msg.sender and the other from ecrecover.\n * Sequence IDs are numbers starting from 1. They are used to prevent replay attacks and may not be repeated.\n *\n * @param toAddress the destination address to send an outgoing transaction\n * @param value the amount in tokens to be sent\n * @param tokenContractAddress the address of the erc20 token contract\n * @param expireTime the number of seconds since 1970 for which this transaction is valid\n * @param sequenceId the unique sequence id obtainable from getNextSequenceId\n * @param signature see Data Formats\n */\n function sendMultiSigToken(\n address toAddress,\n uint value,\n address tokenContractAddress,\n uint expireTime,\n uint sequenceId,\n bytes signature\n ) public onlySigner {\n // Verify the other signer\n bytes32 operationHash = keccak256(abi.encodePacked(\"ERC20\", toAddress, value, tokenContractAddress, expireTime, sequenceId));\n \n verifyMultiSig(toAddress, operationHash, signature, expireTime, sequenceId);\n \n ERC20Interface instance = ERC20Interface(tokenContractAddress);\n if (!instance.transfer(toAddress, value)) {\n revert();\n }\n }\n \n /**\n * Execute a token flush from one of the forwarder addresses. This transfer needs only a single signature and can be done by any signer\n *\n * @param forwarderAddress the address of the forwarder address to flush the tokens from\n * @param tokenContractAddress the address of the erc20 token contract\n */\n function flushForwarderTokens(\n address forwarderAddress, \n address tokenContractAddress\n ) public onlySigner {\n Forwarder forwarder = Forwarder(forwarderAddress);\n forwarder.flushTokens(tokenContractAddress);\n }\n\n /**\n * Do common multisig verification for both eth sends and erc20token transfers\n *\n * @param toAddress the destination address to send an outgoing transaction\n * @param operationHash see Data Formats\n * @param signature see Data Formats\n * @param expireTime the number of seconds since 1970 for which this transaction is valid\n * @param sequenceId the unique sequence id obtainable from getNextSequenceId\n * returns address that has created the signature\n */\n function verifyMultiSig(\n address toAddress,\n bytes32 operationHash,\n bytes signature,\n uint expireTime,\n uint sequenceId\n ) private returns (address) {\n\n address otherSigner = recoverAddressFromSignature(operationHash, signature);\n\n // Verify if we are in safe mode. In safe mode, the wallet can only send to signers\n if (safeMode && !isSigner(toAddress)) {\n // We are in safe mode and the toAddress is not a signer. Disallow!\n revert();\n }\n // Verify that the transaction has not expired\n if (expireTime < block.timestamp) {\n // Transaction expired\n revert();\n }\n\n // Try to insert the sequence ID. Will revert if the sequence id was invalid\n tryInsertSequenceId(sequenceId);\n\n if (!isSigner(otherSigner)) {\n // Other signer not on this wallet or operation does not match arguments\n revert();\n }\n if (otherSigner == msg.sender) {\n // Cannot approve own transaction\n revert();\n }\n\n return otherSigner;\n }\n\n /**\n * Irrevocably puts contract into safe mode. When in this mode, transactions may only be sent to signing addresses.\n */\n function activateSafeMode() public onlySigner {\n safeMode = true;\n emit SafeModeActivated(msg.sender);\n }\n\n /**\n * Gets signer's address using ecrecover\n * @param operationHash see Data Formats\n * @param signature see Data Formats\n * returns address recovered from the signature\n */\n function recoverAddressFromSignature(\n bytes32 operationHash,\n bytes signature\n ) private pure returns (address) {\n if (signature.length != 65) {\n revert();\n }\n // We need to unpack the signature, which is given as an array of 65 bytes (like eth.sign)\n bytes32 r;\n bytes32 s;\n uint8 v;\n assembly {\n r := mload(add(signature, 32))\n s := mload(add(signature, 64))\n v := and(mload(add(signature, 65)), 255)\n }\n if (v < 27) {\n v += 27; // Ethereum versions are 27 or 28 as opposed to 0 or 1 which is submitted by some signing libs\n }\n return ecrecover(operationHash, v, r, s);\n }\n\n /**\n * Verify that the sequence id has not been used before and inserts it. Throws if the sequence ID was not accepted.\n * We collect a window of up to 10 recent sequence ids, and allow any sequence id that is not in the window and\n * greater than the minimum element in the window.\n * @param sequenceId to insert into array of stored ids\n */\n function tryInsertSequenceId(uint sequenceId) private onlySigner {\n // Keep a pointer to the lowest value element in the window\n uint lowestValueIndex = 0;\n for (uint i = 0; i < SEQUENCE_ID_WINDOW_SIZE; i++) {\n if (recentSequenceIds[i] == sequenceId) {\n // This sequence ID has been used before. Disallow!\n revert();\n }\n if (recentSequenceIds[i] < recentSequenceIds[lowestValueIndex]) {\n lowestValueIndex = i;\n }\n }\n if (sequenceId < recentSequenceIds[lowestValueIndex]) {\n // The sequence ID being used is lower than the lowest value in the window\n // so we cannot accept it as it may have been used before\n revert();\n }\n if (sequenceId > (recentSequenceIds[lowestValueIndex] + 10000)) {\n // Block sequence IDs which are much higher than the lowest value\n // This prevents people blocking the contract by using very large sequence IDs quickly\n revert();\n }\n recentSequenceIds[lowestValueIndex] = sequenceId;\n }\n\n /**\n * Gets the next available sequence ID for signing when using executeAndConfirm\n * returns the sequenceId one higher than the highest currently stored\n */\n function getNextSequenceId() public view returns (uint) {\n uint highestSequenceId = 0;\n for (uint i = 0; i < SEQUENCE_ID_WINDOW_SIZE; i++) {\n if (recentSequenceIds[i] > highestSequenceId) {\n highestSequenceId = recentSequenceIds[i];\n }\n }\n return highestSequenceId + 1;\n }\n}\n", + "sourcePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/WalletSimple.sol", + "ast": { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/WalletSimple.sol", + "exportedSymbols": { + "WalletSimple": [ + 1030 + ] + }, + "id": 1031, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 506, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:4" + }, + { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/Forwarder.sol", + "file": "./Forwarder.sol", + "id": 507, + "nodeType": "ImportDirective", + "scope": 1031, + "sourceUnit": 451, + "src": "25:25:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/ERC20Interface.sol", + "file": "./ERC20Interface.sol", + "id": 508, + "nodeType": "ImportDirective", + "scope": 1031, + "sourceUnit": 19, + "src": "51:30:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [ + 450 + ], + "contractKind": "contract", + "documentation": " * WalletSimple\n============\n * Basic multi-signer wallet designed for use in a co-signing environment where 2 signatures are required to move funds.\nTypically used in a 2-of-3 signing configuration. Uses ecrecover to allow for 2 signatures in a single transaction.\n * The first signature is created on the operation hash (see Data Formats) and passed to sendMultiSig/sendMultiSigToken\nThe signer is determined by verifyMultiSig().\n * The second signature is created by the submitter of the transaction and determined by msg.signer.\n * Data Formats\n============\n * The signature is created with ethereumjs-util.ecsign(operationHash).\nLike the eth_sign RPC call, it packs the values as a 65-byte array of [r, s, v].\nUnlike eth_sign, the message is not prefixed.\n * The operationHash the result of keccak256(prefix, toAddress, value, data, expireTime).\nFor ether transactions, `prefix` is \"ETHER\".\nFor token transaction, `prefix` is \"ERC20\" and `data` is the tokenContractAddress.\n *", + "fullyImplemented": true, + "id": 1030, + "linearizedBaseContracts": [ + 1030 + ], + "name": "WalletSimple", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 516, + "name": "Deposited", + "nodeType": "EventDefinition", + "parameters": { + "id": 515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 510, + "indexed": false, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 516, + "src": "1174:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1174:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 512, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 516, + "src": "1188:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 511, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1188:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 514, + "indexed": false, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 516, + "src": "1200:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 513, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1200:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1173:38:4" + }, + "src": "1158:54:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 520, + "name": "SafeModeActivated", + "nodeType": "EventDefinition", + "parameters": { + "id": 519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 518, + "indexed": false, + "name": "msgSender", + "nodeType": "VariableDeclaration", + "scope": 520, + "src": "1239:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1239:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1238:19:4" + }, + "src": "1215:43:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 534, + "name": "Transacted", + "nodeType": "EventDefinition", + "parameters": { + "id": 533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 522, + "indexed": false, + "name": "msgSender", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "1283:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1283:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 524, + "indexed": false, + "name": "otherSigner", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "1373:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 523, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1373:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 526, + "indexed": false, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "1475:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 525, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1475:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 528, + "indexed": false, + "name": "toAddress", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "1535:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 527, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1535:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 530, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "1601:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 529, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1601:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 532, + "indexed": false, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "1654:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 531, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1654:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1277:434:4" + }, + "src": "1261:451:4" + }, + { + "constant": false, + "id": 537, + "name": "signers", + "nodeType": "VariableDeclaration", + "scope": 1030, + "src": "1735:24:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1735:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 536, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1735:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 540, + "name": "safeMode", + "nodeType": "VariableDeclaration", + "scope": 1030, + "src": "1824:28:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 538, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1824:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1847:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 543, + "name": "SEQUENCE_ID_WINDOW_SIZE", + "nodeType": "VariableDeclaration", + "scope": 1030, + "src": "1935:42:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 541, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1935:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3130", + "id": 542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1975:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 547, + "name": "recentSequenceIds", + "nodeType": "VariableDeclaration", + "scope": 1030, + "src": "1981:26:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10]" + }, + "typeName": { + "baseType": { + "id": 544, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1981:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 546, + "length": { + "argumentTypes": null, + "hexValue": "3130", + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1986:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + }, + "value": "10" + }, + "nodeType": "ArrayTypeName", + "src": "1981:8:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage_ptr", + "typeString": "uint256[10]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 566, + "nodeType": "Block", + "src": "2428:130:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 553, + "name": "allowedSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "2438:14:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2438:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2463:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "2438:26:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 561, + "nodeType": "IfStatement", + "src": "2434:90:4", + "trueBody": { + "id": 560, + "nodeType": "Block", + "src": "2466:58:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 557, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "2509:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2509:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 559, + "nodeType": "ExpressionStatement", + "src": "2509:8:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 562, + "name": "signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "2529:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 563, + "name": "allowedSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "2539:14:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "2529:24:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 565, + "nodeType": "ExpressionStatement", + "src": "2529:24:4" + } + ] + }, + "documentation": "Set up a simple multi-sig wallet by specifying the signers allowed to be used on this wallet.\n2 signers will be required to send a transaction from this wallet.\nNote: The sender is NOT automatically added to the list of signers.\nSigners CANNOT be changed once they are set\n * @param allowedSigners An array of signers on the wallet", + "id": 567, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 551, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 550, + "name": "allowedSigners", + "nodeType": "VariableDeclaration", + "scope": 567, + "src": "2395:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 548, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2395:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 549, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2395:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2394:26:4" + }, + "payable": false, + "returnParameters": { + "id": 552, + "nodeType": "ParameterList", + "parameters": [], + "src": "2428:0:4" + }, + "scope": 1030, + "src": "2383:175:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 598, + "nodeType": "Block", + "src": "2792:193:4", + "statements": [ + { + "body": { + "id": 594, + "nodeType": "Block", + "src": "2893:70:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 585, + "name": "signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "2905:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 587, + "indexExpression": { + "argumentTypes": null, + "id": 586, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "2913:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2905:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 588, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 569, + "src": "2919:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2905:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 593, + "nodeType": "IfStatement", + "src": "2901:56:4", + "trueBody": { + "id": 592, + "nodeType": "Block", + "src": "2927:30:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2944:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 573, + "id": 591, + "nodeType": "Return", + "src": "2937:11:4" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 578, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "2868:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 579, + "name": "signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "2872:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 580, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2872:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2868:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 595, + "initializationExpression": { + "assignments": [ + 575 + ], + "declarations": [ + { + "constant": false, + "id": 575, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 599, + "src": "2856:6:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 574, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2856:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 577, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2865:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2856:10:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2888:3:4", + "subExpression": { + "argumentTypes": null, + "id": 582, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "2888:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 584, + "nodeType": "ExpressionStatement", + "src": "2888:3:4" + }, + "nodeType": "ForStatement", + "src": "2851:112:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2975:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 573, + "id": 597, + "nodeType": "Return", + "src": "2968:12:4" + } + ] + }, + "documentation": "Determine if an address is a signer on this wallet\n@param signer address to check\nreturns boolean indicating whether address is signer or not", + "id": 599, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 569, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 599, + "src": "2749:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2749:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2748:16:4" + }, + "payable": false, + "returnParameters": { + "id": 573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 572, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 599, + "src": "2786:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 571, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2786:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2785:6:4" + }, + "scope": 1030, + "src": "2731:254:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 612, + "nodeType": "Block", + "src": "3131:67:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3141:21:4", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 602, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3151:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3151:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 601, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "3142:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3142:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 610, + "nodeType": "IfStatement", + "src": "3137:50:4", + "trueBody": { + "id": 609, + "nodeType": "Block", + "src": "3164:23:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 606, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "3172:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3172:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 608, + "nodeType": "ExpressionStatement", + "src": "3172:8:4" + } + ] + } + }, + { + "id": 611, + "nodeType": "PlaceholderStatement", + "src": "3192:1:4" + } + ] + }, + "documentation": "Modifier that will execute internal code block only if the sender is an authorized signer on this wallet", + "id": 613, + "name": "onlySigner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 600, + "nodeType": "ParameterList", + "parameters": [], + "src": "3131:0:4" + }, + "src": "3111:87:4", + "visibility": "internal" + }, + { + "body": { + "id": 631, + "nodeType": "Block", + "src": "3313:147:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 616, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3323:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3323:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3335:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3323:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 630, + "nodeType": "IfStatement", + "src": "3319:137:4", + "trueBody": { + "id": 629, + "nodeType": "Block", + "src": "3338:118:4", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 621, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3417:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3417:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 623, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3429:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3429:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 625, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3440:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3440:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 620, + "name": "Deposited", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "3407:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3407:42:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 628, + "nodeType": "EmitStatement", + "src": "3402:47:4" + } + ] + } + } + ] + }, + "documentation": "Gets called when a transaction is received without calling a method", + "id": 632, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 614, + "nodeType": "ParameterList", + "parameters": [], + "src": "3295:2:4" + }, + "payable": true, + "returnParameters": { + "id": 615, + "nodeType": "ParameterList", + "parameters": [], + "src": "3313:0:4" + }, + "scope": 1030, + "src": "3287:173:4", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 641, + "nodeType": "Block", + "src": "3667:33:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "3680:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Forwarder_$450_$", + "typeString": "function () returns (contract Forwarder)" + }, + "typeName": { + "contractScope": null, + "id": 637, + "name": "Forwarder", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 450, + "src": "3684:9:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + } + }, + "id": 639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3680:15:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + }, + "functionReturnParameters": 636, + "id": 640, + "nodeType": "Return", + "src": "3673:22:4" + } + ] + }, + "documentation": "Create a new contract (and also address) that forwards funds to this contract\nreturns address of newly created forwarder address", + "id": 642, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createForwarder", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 633, + "nodeType": "ParameterList", + "parameters": [], + "src": "3639:2:4" + }, + "payable": false, + "returnParameters": { + "id": 636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 635, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 642, + "src": "3658:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3658:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3657:9:4" + }, + "scope": 1030, + "src": "3615:85:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 707, + "nodeType": "Block", + "src": "4551:489:4", + "statements": [ + { + "assignments": [ + 660 + ], + "declarations": [ + { + "constant": false, + "id": 660, + "name": "operationHash", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4588:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 659, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4588:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 672, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4554484552", + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4639:7:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_10516e70ec8c5048d00c1cd49852831bc8997d009e9f6718ca31f63fc81f1f25", + "typeString": "literal_string \"ETHER\"" + }, + "value": "ETHER" + }, + { + "argumentTypes": null, + "id": 665, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 644, + "src": "4648:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 666, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 646, + "src": "4659:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 667, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "4666:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 668, + "name": "expireTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "4672:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 669, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 652, + "src": "4684:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_10516e70ec8c5048d00c1cd49852831bc8997d009e9f6718ca31f63fc81f1f25", + "typeString": "literal_string \"ETHER\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 662, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "4622:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4622:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4622:73:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 661, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "4612:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4612:84:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4588:108:4" + }, + { + "assignments": [ + 674 + ], + "declarations": [ + { + "constant": false, + "id": 674, + "name": "otherSigner", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4707:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 673, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4707:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 682, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 676, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 644, + "src": "4744:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 677, + "name": "operationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "4755:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 678, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 654, + "src": "4770:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 679, + "name": "expireTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "4781:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 680, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 652, + "src": "4793:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 675, + "name": "verifyMultiSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 854, + "src": "4729:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$", + "typeString": "function (address,bytes32,bytes memory,uint256,uint256) returns (address)" + } + }, + "id": 681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4729:75:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4707:97:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4852:36:4", + "subExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 688, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "4882:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "arguments": [ + { + "argumentTypes": null, + "id": 686, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 646, + "src": "4875:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 683, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 644, + "src": "4854:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4854:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$__$returns$_t_bool_$", + "typeString": "function () payable returns (bool)" + } + }, + "id": 685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4854:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_barecall_payable$__$returns$_t_bool_$value_$", + "typeString": "function (uint256) returns (function () payable returns (bool))" + } + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4854:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$__$returns$_t_bool_$value", + "typeString": "function () payable returns (bool)" + } + }, + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4854:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 690, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4853:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 696, + "nodeType": "IfStatement", + "src": "4848:103:4", + "trueBody": { + "id": 695, + "nodeType": "Block", + "src": "4890:61:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 692, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "4936:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4936:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 694, + "nodeType": "ExpressionStatement", + "src": "4936:8:4" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 698, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "4972:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4972:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 700, + "name": "otherSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 674, + "src": "4984:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 701, + "name": "operationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "4997:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 702, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 644, + "src": "5012:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 703, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 646, + "src": "5023:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 704, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "5030:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 697, + "name": "Transacted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "4961:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,bytes32,address,uint256,bytes memory)" + } + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4961:74:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 706, + "nodeType": "EmitStatement", + "src": "4956:79:4" + } + ] + }, + "documentation": "Execute a multi-signature transaction from this wallet using 2 signers: one from msg.sender and the other from ecrecover.\nSequence IDs are numbers starting from 1. They are used to prevent replay attacks and may not be repeated.\n * @param toAddress the destination address to send an outgoing transaction\n@param value the amount in Wei to be sent\n@param data the data to send to the toAddress when invoking the transaction\n@param expireTime the number of seconds since 1970 for which this transaction is valid\n@param sequenceId the unique sequence id obtainable from getNextSequenceId\n@param signature see Data Formats", + "id": 708, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 657, + "modifierName": { + "argumentTypes": null, + "id": 656, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "4540:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4540:10:4" + } + ], + "name": "sendMultiSig", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 644, + "name": "toAddress", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4406:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 643, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4406:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 646, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4431:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 645, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4431:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 648, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4449:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 647, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4449:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 650, + "name": "expireTime", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4467:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 649, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4467:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 652, + "name": "sequenceId", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4490:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 651, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4490:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 654, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4513:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 653, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4513:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4398:134:4" + }, + "payable": false, + "returnParameters": { + "id": 658, + "nodeType": "ParameterList", + "parameters": [], + "src": "4551:0:4" + }, + "scope": 1030, + "src": "4377:663:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 764, + "nodeType": "Block", + "src": "5914:397:4", + "statements": [ + { + "assignments": [ + 726 + ], + "declarations": [ + { + "constant": false, + "id": 726, + "name": "operationHash", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5951:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 725, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5951:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 738, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4552433230", + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6002:7:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8ae85d849167ff996c04040c44924fd364217285e4cad818292c7ac37c0a345b", + "typeString": "literal_string \"ERC20\"" + }, + "value": "ERC20" + }, + { + "argumentTypes": null, + "id": 731, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 710, + "src": "6011:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 732, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "6022:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 733, + "name": "tokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "6029:20:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 734, + "name": "expireTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 716, + "src": "6051:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 735, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 718, + "src": "6063:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8ae85d849167ff996c04040c44924fd364217285e4cad818292c7ac37c0a345b", + "typeString": "literal_string \"ERC20\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 728, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "5985:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5985:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5985:89:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 727, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "5975:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5975:100:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5951:124:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 740, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 710, + "src": "6101:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 741, + "name": "operationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 726, + "src": "6112:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 742, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 720, + "src": "6127:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 743, + "name": "expireTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 716, + "src": "6138:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 744, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 718, + "src": "6150:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 739, + "name": "verifyMultiSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 854, + "src": "6086:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$", + "typeString": "function (address,bytes32,bytes memory,uint256,uint256) returns (address)" + } + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6086:75:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 746, + "nodeType": "ExpressionStatement", + "src": "6086:75:4" + }, + { + "assignments": [ + 748 + ], + "declarations": [ + { + "constant": false, + "id": 748, + "name": "instance", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "6172:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + }, + "typeName": { + "contractScope": null, + "id": 747, + "name": "ERC20Interface", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "6172:14:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 752, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 750, + "name": "tokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "6213:20:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 749, + "name": "ERC20Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "6198:14:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Interface_$18_$", + "typeString": "type(contract ERC20Interface)" + } + }, + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6198:36:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6172:62:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6244:36:4", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 755, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 710, + "src": "6263:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 756, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "6274:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 753, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 748, + "src": "6245:8:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10, + "src": "6245:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6245:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 763, + "nodeType": "IfStatement", + "src": "6240:67:4", + "trueBody": { + "id": 762, + "nodeType": "Block", + "src": "6282:25:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 759, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "6292:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6292:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 761, + "nodeType": "ExpressionStatement", + "src": "6292:8:4" + } + ] + } + } + ] + }, + "documentation": "Execute a multi-signature token transfer from this wallet using 2 signers: one from msg.sender and the other from ecrecover.\nSequence IDs are numbers starting from 1. They are used to prevent replay attacks and may not be repeated.\n * @param toAddress the destination address to send an outgoing transaction\n@param value the amount in tokens to be sent\n@param tokenContractAddress the address of the erc20 token contract\n@param expireTime the number of seconds since 1970 for which this transaction is valid\n@param sequenceId the unique sequence id obtainable from getNextSequenceId\n@param signature see Data Formats", + "id": 765, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 723, + "modifierName": { + "argumentTypes": null, + "id": 722, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "5903:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5903:10:4" + } + ], + "name": "sendMultiSigToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 710, + "name": "toAddress", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5751:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 709, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5751:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 712, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5776:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 711, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5776:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 714, + "name": "tokenContractAddress", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5794:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5794:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 716, + "name": "expireTime", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5830:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 715, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5830:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 718, + "name": "sequenceId", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5853:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 717, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5853:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 720, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5876:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 719, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5876:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5743:152:4" + }, + "payable": false, + "returnParameters": { + "id": 724, + "nodeType": "ParameterList", + "parameters": [], + "src": "5914:0:4" + }, + "scope": 1030, + "src": "5717:594:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 786, + "nodeType": "Block", + "src": "6753:109:4", + "statements": [ + { + "assignments": [ + 775 + ], + "declarations": [ + { + "constant": false, + "id": 775, + "name": "forwarder", + "nodeType": "VariableDeclaration", + "scope": 787, + "src": "6759:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + }, + "typeName": { + "contractScope": null, + "id": 774, + "name": "Forwarder", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 450, + "src": "6759:9:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 779, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 777, + "name": "forwarderAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 767, + "src": "6791:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 776, + "name": "Forwarder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 450, + "src": "6781:9:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Forwarder_$450_$", + "typeString": "type(contract Forwarder)" + } + }, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6781:27:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6759:49:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 783, + "name": "tokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 769, + "src": "6836:20:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 780, + "name": "forwarder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 775, + "src": "6814:9:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + }, + "id": 782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "flushTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 436, + "src": "6814:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6814:43:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 785, + "nodeType": "ExpressionStatement", + "src": "6814:43:4" + } + ] + }, + "documentation": "Execute a token flush from one of the forwarder addresses. This transfer needs only a single signature and can be done by any signer\n * @param forwarderAddress the address of the forwarder address to flush the tokens from\n@param tokenContractAddress the address of the erc20 token contract", + "id": 787, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 772, + "modifierName": { + "argumentTypes": null, + "id": 771, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "6742:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6742:10:4" + } + ], + "name": "flushForwarderTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 770, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 767, + "name": "forwarderAddress", + "nodeType": "VariableDeclaration", + "scope": 787, + "src": "6671:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 766, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6671:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 769, + "name": "tokenContractAddress", + "nodeType": "VariableDeclaration", + "scope": 787, + "src": "6702:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 768, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6702:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6665:69:4" + }, + "payable": false, + "returnParameters": { + "id": 773, + "nodeType": "ParameterList", + "parameters": [], + "src": "6753:0:4" + }, + "scope": 1030, + "src": "6636:226:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 853, + "nodeType": "Block", + "src": "7525:837:4", + "statements": [ + { + "assignments": [ + 803 + ], + "declarations": [ + { + "constant": false, + "id": 803, + "name": "otherSigner", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7532:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 802, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7532:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 808, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 805, + "name": "operationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 791, + "src": "7582:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 806, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "7597:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 804, + "name": "recoverAddressFromSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 914, + "src": "7554:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7554:53:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7532:75:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 809, + "name": "safeMode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "7706:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7718:20:4", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 811, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 789, + "src": "7728:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 810, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "7719:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7719:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7706:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 819, + "nodeType": "IfStatement", + "src": "7702:135:4", + "trueBody": { + "id": 818, + "nodeType": "Block", + "src": "7740:97:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 815, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "7822:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7822:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 817, + "nodeType": "ExpressionStatement", + "src": "7822:8:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 820, + "name": "expireTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 795, + "src": "7897:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 821, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "7910:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7910:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7897:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 828, + "nodeType": "IfStatement", + "src": "7893:86:4", + "trueBody": { + "id": 827, + "nodeType": "Block", + "src": "7927:52:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 824, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "7964:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7964:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 826, + "nodeType": "ExpressionStatement", + "src": "7964:8:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 830, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 797, + "src": "8086:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 829, + "name": "tryInsertSequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 990, + "src": "8066:19:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8066:31:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 832, + "nodeType": "ExpressionStatement", + "src": "8066:31:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "8108:22:4", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 834, + "name": "otherSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "8118:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 833, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "8109:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8109:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 841, + "nodeType": "IfStatement", + "src": "8104:130:4", + "trueBody": { + "id": 840, + "nodeType": "Block", + "src": "8132:102:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 837, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "8219:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8219:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 839, + "nodeType": "ExpressionStatement", + "src": "8219:8:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 842, + "name": "otherSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "8243:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 843, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "8258:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8258:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8243:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 850, + "nodeType": "IfStatement", + "src": "8239:94:4", + "trueBody": { + "id": 849, + "nodeType": "Block", + "src": "8270:63:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 846, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "8318:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8318:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 848, + "nodeType": "ExpressionStatement", + "src": "8318:8:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 851, + "name": "otherSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "8346:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 801, + "id": 852, + "nodeType": "Return", + "src": "8339:18:4" + } + ] + }, + "documentation": "Do common multisig verification for both eth sends and erc20token transfers\n * @param toAddress the destination address to send an outgoing transaction\n@param operationHash see Data Formats\n@param signature see Data Formats\n@param expireTime the number of seconds since 1970 for which this transaction is valid\n@param sequenceId the unique sequence id obtainable from getNextSequenceId\nreturns address that has created the signature", + "id": 854, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "verifyMultiSig", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 789, + "name": "toAddress", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7379:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 788, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7379:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 791, + "name": "operationHash", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7404:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 790, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7404:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 793, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7433:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 792, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7433:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 795, + "name": "expireTime", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7456:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 794, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7456:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 797, + "name": "sequenceId", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7479:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 796, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7479:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7371:127:4" + }, + "payable": false, + "returnParameters": { + "id": 801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 800, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7516:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7516:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7515:9:4" + }, + "scope": 1030, + "src": "7348:1014:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 868, + "nodeType": "Block", + "src": "8542:66:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 859, + "name": "safeMode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "8548:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8559:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "8548:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 862, + "nodeType": "ExpressionStatement", + "src": "8548:15:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 864, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "8592:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8592:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 863, + "name": "SafeModeActivated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 520, + "src": "8574:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8574:29:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 867, + "nodeType": "EmitStatement", + "src": "8569:34:4" + } + ] + }, + "documentation": "Irrevocably puts contract into safe mode. When in this mode, transactions may only be sent to signing addresses.", + "id": 869, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 857, + "modifierName": { + "argumentTypes": null, + "id": 856, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "8531:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8531:10:4" + } + ], + "name": "activateSafeMode", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 855, + "nodeType": "ParameterList", + "parameters": [], + "src": "8521:2:4" + }, + "payable": false, + "returnParameters": { + "id": 858, + "nodeType": "ParameterList", + "parameters": [], + "src": "8542:0:4" + }, + "scope": 1030, + "src": "8496:112:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 913, + "nodeType": "Block", + "src": "8919:521:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 878, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 873, + "src": "8929:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8929:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3635", + "id": 880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8949:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "src": "8929:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 886, + "nodeType": "IfStatement", + "src": "8925:51:4", + "trueBody": { + "id": 885, + "nodeType": "Block", + "src": "8953:23:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 882, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "8961:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8961:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 884, + "nodeType": "ExpressionStatement", + "src": "8961:8:4" + } + ] + } + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 888, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 914, + "src": "9076:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 887, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9076:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 889, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9076:9:4" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 891, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 914, + "src": "9091:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 890, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9091:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 892, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9091:9:4" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 894, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 914, + "src": "9106:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 893, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9106:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 895, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9106:7:4" + }, + { + "externalReferences": [ + { + "r": { + "declaration": 888, + "isOffset": false, + "isSlot": false, + "src": "9136:1:4", + "valueSize": 1 + } + }, + { + "v": { + "declaration": 894, + "isOffset": false, + "isSlot": false, + "src": "9210:1:4", + "valueSize": 1 + } + }, + { + "signature": { + "declaration": 873, + "isOffset": false, + "isSlot": false, + "src": "9151:9:4", + "valueSize": 1 + } + }, + { + "s": { + "declaration": 891, + "isOffset": false, + "isSlot": false, + "src": "9173:1:4", + "valueSize": 1 + } + }, + { + "signature": { + "declaration": 873, + "isOffset": false, + "isSlot": false, + "src": "9188:9:4", + "valueSize": 1 + } + }, + { + "signature": { + "declaration": 873, + "isOffset": false, + "isSlot": false, + "src": "9229:9:4", + "valueSize": 1 + } + } + ], + "id": 896, + "nodeType": "InlineAssembly", + "operations": "{\n r := mload(add(signature, 32))\n s := mload(add(signature, 64))\n v := and(mload(add(signature, 65)), 255)\n}", + "src": "9119:144:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 897, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "9265:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3237", + "id": 898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9269:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "9265:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 905, + "nodeType": "IfStatement", + "src": "9261:129:4", + "trueBody": { + "id": 904, + "nodeType": "Block", + "src": "9273:117:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 900, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "9281:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3237", + "id": 901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9286:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "9281:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 903, + "nodeType": "ExpressionStatement", + "src": "9281:7:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 907, + "name": "operationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 871, + "src": "9412:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 908, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "9427:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 909, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 888, + "src": "9430:1:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 910, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "9433:1:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 906, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "9402:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9402:33:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 877, + "id": 912, + "nodeType": "Return", + "src": "9395:40:4" + } + ] + }, + "documentation": "Gets signer's address using ecrecover\n@param operationHash see Data Formats\n@param signature see Data Formats\nreturns address recovered from the signature", + "id": 914, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "recoverAddressFromSignature", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 874, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 871, + "name": "operationHash", + "nodeType": "VariableDeclaration", + "scope": 914, + "src": "8841:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 870, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8841:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 873, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 914, + "src": "8868:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 872, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8868:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8835:52:4" + }, + "payable": false, + "returnParameters": { + "id": 877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 876, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 914, + "src": "8910:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 875, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8910:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8909:9:4" + }, + "scope": 1030, + "src": "8799:641:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 989, + "nodeType": "Block", + "src": "9864:945:4", + "statements": [ + { + "assignments": [ + 922 + ], + "declarations": [ + { + "constant": false, + "id": 922, + "name": "lowestValueIndex", + "nodeType": "VariableDeclaration", + "scope": 990, + "src": "9934:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 921, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9934:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 924, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9958:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9934:25:4" + }, + { + "body": { + "id": 958, + "nodeType": "Block", + "src": "10016:251:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 935, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10028:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 937, + "indexExpression": { + "argumentTypes": null, + "id": 936, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "10046:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10028:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 938, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 916, + "src": "10052:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10028:34:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 944, + "nodeType": "IfStatement", + "src": "10024:127:4", + "trueBody": { + "id": 943, + "nodeType": "Block", + "src": "10064:87:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 940, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "10134:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10134:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 942, + "nodeType": "ExpressionStatement", + "src": "10134:8:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 945, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10162:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 947, + "indexExpression": { + "argumentTypes": null, + "id": 946, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "10180:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10162:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 948, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10185:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 950, + "indexExpression": { + "argumentTypes": null, + "id": 949, + "name": "lowestValueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "10203:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10185:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10162:58:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 957, + "nodeType": "IfStatement", + "src": "10158:103:4", + "trueBody": { + "id": 956, + "nodeType": "Block", + "src": "10222:39:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 952, + "name": "lowestValueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "10232:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 953, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "10251:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10232:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 955, + "nodeType": "ExpressionStatement", + "src": "10232:20:4" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 929, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "9982:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 930, + "name": "SEQUENCE_ID_WINDOW_SIZE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "9986:23:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9982:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 959, + "initializationExpression": { + "assignments": [ + 926 + ], + "declarations": [ + { + "constant": false, + "id": 926, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 990, + "src": "9970:6:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 925, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9970:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 928, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 927, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9979:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9970:10:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10011:3:4", + "subExpression": { + "argumentTypes": null, + "id": 932, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "10011:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 934, + "nodeType": "ExpressionStatement", + "src": "10011:3:4" + }, + "nodeType": "ForStatement", + "src": "9965:302:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 960, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 916, + "src": "10276:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 961, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10289:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 963, + "indexExpression": { + "argumentTypes": null, + "id": 962, + "name": "lowestValueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "10307:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10289:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10276:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 969, + "nodeType": "IfStatement", + "src": "10272:222:4", + "trueBody": { + "id": 968, + "nodeType": "Block", + "src": "10326:168:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 965, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "10479:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10479:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 967, + "nodeType": "ExpressionStatement", + "src": "10479:8:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 970, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 916, + "src": "10503:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 971, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10517:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 973, + "indexExpression": { + "argumentTypes": null, + "id": 972, + "name": "lowestValueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "10535:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10517:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130303030", + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10555:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + }, + "src": "10517:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 976, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10516:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10503:58:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 982, + "nodeType": "IfStatement", + "src": "10499:252:4", + "trueBody": { + "id": 981, + "nodeType": "Block", + "src": "10563:188:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 978, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "10736:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10736:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 980, + "nodeType": "ExpressionStatement", + "src": "10736:8:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 983, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10756:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 985, + "indexExpression": { + "argumentTypes": null, + "id": 984, + "name": "lowestValueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "10774:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10756:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 986, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 916, + "src": "10794:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10756:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 988, + "nodeType": "ExpressionStatement", + "src": "10756:48:4" + } + ] + }, + "documentation": "Verify that the sequence id has not been used before and inserts it. Throws if the sequence ID was not accepted.\nWe collect a window of up to 10 recent sequence ids, and allow any sequence id that is not in the window and\ngreater than the minimum element in the window.\n@param sequenceId to insert into array of stored ids", + "id": 990, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 919, + "modifierName": { + "argumentTypes": null, + "id": 918, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "9853:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9853:10:4" + } + ], + "name": "tryInsertSequenceId", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 917, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 916, + "name": "sequenceId", + "nodeType": "VariableDeclaration", + "scope": 990, + "src": "9828:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 915, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9828:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9827:17:4" + }, + "payable": false, + "returnParameters": { + "id": 920, + "nodeType": "ParameterList", + "parameters": [], + "src": "9864:0:4" + }, + "scope": 1030, + "src": "9799:1010:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 1028, + "nodeType": "Block", + "src": "11036:246:4", + "statements": [ + { + "assignments": [ + 996 + ], + "declarations": [ + { + "constant": false, + "id": 996, + "name": "highestSequenceId", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "11042:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 995, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11042:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 998, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11067:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "11042:26:4" + }, + { + "body": { + "id": 1022, + "nodeType": "Block", + "src": "11125:119:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1009, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "11137:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 1011, + "indexExpression": { + "argumentTypes": null, + "id": 1010, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1000, + "src": "11155:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11137:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1012, + "name": "highestSequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 996, + "src": "11160:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11137:40:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1021, + "nodeType": "IfStatement", + "src": "11133:105:4", + "trueBody": { + "id": 1020, + "nodeType": "Block", + "src": "11179:59:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1014, + "name": "highestSequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 996, + "src": "11189:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1015, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "11209:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 1017, + "indexExpression": { + "argumentTypes": null, + "id": 1016, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1000, + "src": "11227:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11209:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11189:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1019, + "nodeType": "ExpressionStatement", + "src": "11189:40:4" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1003, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1000, + "src": "11091:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 1004, + "name": "SEQUENCE_ID_WINDOW_SIZE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "11095:23:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11091:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1023, + "initializationExpression": { + "assignments": [ + 1000 + ], + "declarations": [ + { + "constant": false, + "id": 1000, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "11079:6:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 999, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11079:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1002, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11088:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "11079:10:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "11120:3:4", + "subExpression": { + "argumentTypes": null, + "id": 1006, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1000, + "src": "11120:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1008, + "nodeType": "ExpressionStatement", + "src": "11120:3:4" + }, + "nodeType": "ForStatement", + "src": "11074:170:4" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1024, + "name": "highestSequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 996, + "src": "11256:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11276:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11256:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 994, + "id": 1027, + "nodeType": "Return", + "src": "11249:28:4" + } + ] + }, + "documentation": "Gets the next available sequence ID for signing when using executeAndConfirm\nreturns the sequenceId one higher than the highest currently stored", + "id": 1029, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getNextSequenceId", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 991, + "nodeType": "ParameterList", + "parameters": [], + "src": "11006:2:4" + }, + "payable": false, + "returnParameters": { + "id": 994, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 993, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "11030:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 992, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11030:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11029:6:4" + }, + "scope": 1030, + "src": "10980:302:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1031, + "src": "1120:10164:4" + } + ], + "src": "0:11285:4" + }, + "legacyAST": { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/WalletSimple.sol", + "exportedSymbols": { + "WalletSimple": [ + 1030 + ] + }, + "id": 1031, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 506, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:4" + }, + { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/Forwarder.sol", + "file": "./Forwarder.sol", + "id": 507, + "nodeType": "ImportDirective", + "scope": 1031, + "sourceUnit": 451, + "src": "25:25:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/primoz/Documents/GitProjects/eth-multisig-PK/eth-multisig-v2/contracts/ERC20Interface.sol", + "file": "./ERC20Interface.sol", + "id": 508, + "nodeType": "ImportDirective", + "scope": 1031, + "sourceUnit": 19, + "src": "51:30:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [ + 450 + ], + "contractKind": "contract", + "documentation": " * WalletSimple\n============\n * Basic multi-signer wallet designed for use in a co-signing environment where 2 signatures are required to move funds.\nTypically used in a 2-of-3 signing configuration. Uses ecrecover to allow for 2 signatures in a single transaction.\n * The first signature is created on the operation hash (see Data Formats) and passed to sendMultiSig/sendMultiSigToken\nThe signer is determined by verifyMultiSig().\n * The second signature is created by the submitter of the transaction and determined by msg.signer.\n * Data Formats\n============\n * The signature is created with ethereumjs-util.ecsign(operationHash).\nLike the eth_sign RPC call, it packs the values as a 65-byte array of [r, s, v].\nUnlike eth_sign, the message is not prefixed.\n * The operationHash the result of keccak256(prefix, toAddress, value, data, expireTime).\nFor ether transactions, `prefix` is \"ETHER\".\nFor token transaction, `prefix` is \"ERC20\" and `data` is the tokenContractAddress.\n *", + "fullyImplemented": true, + "id": 1030, + "linearizedBaseContracts": [ + 1030 + ], + "name": "WalletSimple", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 516, + "name": "Deposited", + "nodeType": "EventDefinition", + "parameters": { + "id": 515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 510, + "indexed": false, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 516, + "src": "1174:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1174:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 512, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 516, + "src": "1188:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 511, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1188:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 514, + "indexed": false, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 516, + "src": "1200:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 513, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1200:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1173:38:4" + }, + "src": "1158:54:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 520, + "name": "SafeModeActivated", + "nodeType": "EventDefinition", + "parameters": { + "id": 519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 518, + "indexed": false, + "name": "msgSender", + "nodeType": "VariableDeclaration", + "scope": 520, + "src": "1239:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1239:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1238:19:4" + }, + "src": "1215:43:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 534, + "name": "Transacted", + "nodeType": "EventDefinition", + "parameters": { + "id": 533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 522, + "indexed": false, + "name": "msgSender", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "1283:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1283:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 524, + "indexed": false, + "name": "otherSigner", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "1373:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 523, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1373:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 526, + "indexed": false, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "1475:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 525, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1475:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 528, + "indexed": false, + "name": "toAddress", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "1535:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 527, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1535:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 530, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "1601:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 529, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1601:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 532, + "indexed": false, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "1654:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 531, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1654:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1277:434:4" + }, + "src": "1261:451:4" + }, + { + "constant": false, + "id": 537, + "name": "signers", + "nodeType": "VariableDeclaration", + "scope": 1030, + "src": "1735:24:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1735:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 536, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1735:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 540, + "name": "safeMode", + "nodeType": "VariableDeclaration", + "scope": 1030, + "src": "1824:28:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 538, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1824:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1847:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 543, + "name": "SEQUENCE_ID_WINDOW_SIZE", + "nodeType": "VariableDeclaration", + "scope": 1030, + "src": "1935:42:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 541, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1935:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3130", + "id": 542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1975:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 547, + "name": "recentSequenceIds", + "nodeType": "VariableDeclaration", + "scope": 1030, + "src": "1981:26:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10]" + }, + "typeName": { + "baseType": { + "id": 544, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1981:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 546, + "length": { + "argumentTypes": null, + "hexValue": "3130", + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1986:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + }, + "value": "10" + }, + "nodeType": "ArrayTypeName", + "src": "1981:8:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage_ptr", + "typeString": "uint256[10]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 566, + "nodeType": "Block", + "src": "2428:130:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 553, + "name": "allowedSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "2438:14:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2438:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2463:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "2438:26:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 561, + "nodeType": "IfStatement", + "src": "2434:90:4", + "trueBody": { + "id": 560, + "nodeType": "Block", + "src": "2466:58:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 557, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "2509:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2509:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 559, + "nodeType": "ExpressionStatement", + "src": "2509:8:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 562, + "name": "signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "2529:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 563, + "name": "allowedSigners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "2539:14:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "2529:24:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 565, + "nodeType": "ExpressionStatement", + "src": "2529:24:4" + } + ] + }, + "documentation": "Set up a simple multi-sig wallet by specifying the signers allowed to be used on this wallet.\n2 signers will be required to send a transaction from this wallet.\nNote: The sender is NOT automatically added to the list of signers.\nSigners CANNOT be changed once they are set\n * @param allowedSigners An array of signers on the wallet", + "id": 567, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 551, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 550, + "name": "allowedSigners", + "nodeType": "VariableDeclaration", + "scope": 567, + "src": "2395:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 548, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2395:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 549, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2395:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2394:26:4" + }, + "payable": false, + "returnParameters": { + "id": 552, + "nodeType": "ParameterList", + "parameters": [], + "src": "2428:0:4" + }, + "scope": 1030, + "src": "2383:175:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 598, + "nodeType": "Block", + "src": "2792:193:4", + "statements": [ + { + "body": { + "id": 594, + "nodeType": "Block", + "src": "2893:70:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 585, + "name": "signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "2905:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 587, + "indexExpression": { + "argumentTypes": null, + "id": 586, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "2913:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2905:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 588, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 569, + "src": "2919:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2905:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 593, + "nodeType": "IfStatement", + "src": "2901:56:4", + "trueBody": { + "id": 592, + "nodeType": "Block", + "src": "2927:30:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2944:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 573, + "id": 591, + "nodeType": "Return", + "src": "2937:11:4" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 578, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "2868:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 579, + "name": "signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "2872:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 580, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2872:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2868:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 595, + "initializationExpression": { + "assignments": [ + 575 + ], + "declarations": [ + { + "constant": false, + "id": 575, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 599, + "src": "2856:6:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 574, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2856:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 577, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2865:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2856:10:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2888:3:4", + "subExpression": { + "argumentTypes": null, + "id": 582, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "2888:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 584, + "nodeType": "ExpressionStatement", + "src": "2888:3:4" + }, + "nodeType": "ForStatement", + "src": "2851:112:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2975:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 573, + "id": 597, + "nodeType": "Return", + "src": "2968:12:4" + } + ] + }, + "documentation": "Determine if an address is a signer on this wallet\n@param signer address to check\nreturns boolean indicating whether address is signer or not", + "id": 599, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 569, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 599, + "src": "2749:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2749:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2748:16:4" + }, + "payable": false, + "returnParameters": { + "id": 573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 572, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 599, + "src": "2786:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 571, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2786:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2785:6:4" + }, + "scope": 1030, + "src": "2731:254:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 612, + "nodeType": "Block", + "src": "3131:67:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3141:21:4", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 602, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3151:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3151:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 601, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "3142:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3142:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 610, + "nodeType": "IfStatement", + "src": "3137:50:4", + "trueBody": { + "id": 609, + "nodeType": "Block", + "src": "3164:23:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 606, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "3172:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3172:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 608, + "nodeType": "ExpressionStatement", + "src": "3172:8:4" + } + ] + } + }, + { + "id": 611, + "nodeType": "PlaceholderStatement", + "src": "3192:1:4" + } + ] + }, + "documentation": "Modifier that will execute internal code block only if the sender is an authorized signer on this wallet", + "id": 613, + "name": "onlySigner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 600, + "nodeType": "ParameterList", + "parameters": [], + "src": "3131:0:4" + }, + "src": "3111:87:4", + "visibility": "internal" + }, + { + "body": { + "id": 631, + "nodeType": "Block", + "src": "3313:147:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 616, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3323:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3323:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3335:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3323:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 630, + "nodeType": "IfStatement", + "src": "3319:137:4", + "trueBody": { + "id": 629, + "nodeType": "Block", + "src": "3338:118:4", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 621, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3417:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3417:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 623, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3429:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3429:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 625, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "3440:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3440:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 620, + "name": "Deposited", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "3407:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3407:42:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 628, + "nodeType": "EmitStatement", + "src": "3402:47:4" + } + ] + } + } + ] + }, + "documentation": "Gets called when a transaction is received without calling a method", + "id": 632, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 614, + "nodeType": "ParameterList", + "parameters": [], + "src": "3295:2:4" + }, + "payable": true, + "returnParameters": { + "id": 615, + "nodeType": "ParameterList", + "parameters": [], + "src": "3313:0:4" + }, + "scope": 1030, + "src": "3287:173:4", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 641, + "nodeType": "Block", + "src": "3667:33:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "3680:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Forwarder_$450_$", + "typeString": "function () returns (contract Forwarder)" + }, + "typeName": { + "contractScope": null, + "id": 637, + "name": "Forwarder", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 450, + "src": "3684:9:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + } + }, + "id": 639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3680:15:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + }, + "functionReturnParameters": 636, + "id": 640, + "nodeType": "Return", + "src": "3673:22:4" + } + ] + }, + "documentation": "Create a new contract (and also address) that forwards funds to this contract\nreturns address of newly created forwarder address", + "id": 642, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createForwarder", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 633, + "nodeType": "ParameterList", + "parameters": [], + "src": "3639:2:4" + }, + "payable": false, + "returnParameters": { + "id": 636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 635, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 642, + "src": "3658:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3658:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3657:9:4" + }, + "scope": 1030, + "src": "3615:85:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 707, + "nodeType": "Block", + "src": "4551:489:4", + "statements": [ + { + "assignments": [ + 660 + ], + "declarations": [ + { + "constant": false, + "id": 660, + "name": "operationHash", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4588:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 659, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4588:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 672, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4554484552", + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4639:7:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_10516e70ec8c5048d00c1cd49852831bc8997d009e9f6718ca31f63fc81f1f25", + "typeString": "literal_string \"ETHER\"" + }, + "value": "ETHER" + }, + { + "argumentTypes": null, + "id": 665, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 644, + "src": "4648:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 666, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 646, + "src": "4659:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 667, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "4666:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 668, + "name": "expireTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "4672:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 669, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 652, + "src": "4684:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_10516e70ec8c5048d00c1cd49852831bc8997d009e9f6718ca31f63fc81f1f25", + "typeString": "literal_string \"ETHER\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 662, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "4622:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4622:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4622:73:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 661, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "4612:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4612:84:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4588:108:4" + }, + { + "assignments": [ + 674 + ], + "declarations": [ + { + "constant": false, + "id": 674, + "name": "otherSigner", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4707:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 673, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4707:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 682, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 676, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 644, + "src": "4744:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 677, + "name": "operationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "4755:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 678, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 654, + "src": "4770:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 679, + "name": "expireTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "4781:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 680, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 652, + "src": "4793:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 675, + "name": "verifyMultiSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 854, + "src": "4729:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$", + "typeString": "function (address,bytes32,bytes memory,uint256,uint256) returns (address)" + } + }, + "id": 681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4729:75:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4707:97:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4852:36:4", + "subExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 688, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "4882:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "arguments": [ + { + "argumentTypes": null, + "id": 686, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 646, + "src": "4875:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 683, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 644, + "src": "4854:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4854:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$__$returns$_t_bool_$", + "typeString": "function () payable returns (bool)" + } + }, + "id": 685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4854:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_barecall_payable$__$returns$_t_bool_$value_$", + "typeString": "function (uint256) returns (function () payable returns (bool))" + } + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4854:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$__$returns$_t_bool_$value", + "typeString": "function () payable returns (bool)" + } + }, + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4854:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 690, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4853:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 696, + "nodeType": "IfStatement", + "src": "4848:103:4", + "trueBody": { + "id": 695, + "nodeType": "Block", + "src": "4890:61:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 692, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "4936:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4936:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 694, + "nodeType": "ExpressionStatement", + "src": "4936:8:4" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 698, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "4972:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4972:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 700, + "name": "otherSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 674, + "src": "4984:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 701, + "name": "operationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "4997:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 702, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 644, + "src": "5012:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 703, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 646, + "src": "5023:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 704, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "5030:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 697, + "name": "Transacted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "4961:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,bytes32,address,uint256,bytes memory)" + } + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4961:74:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 706, + "nodeType": "EmitStatement", + "src": "4956:79:4" + } + ] + }, + "documentation": "Execute a multi-signature transaction from this wallet using 2 signers: one from msg.sender and the other from ecrecover.\nSequence IDs are numbers starting from 1. They are used to prevent replay attacks and may not be repeated.\n * @param toAddress the destination address to send an outgoing transaction\n@param value the amount in Wei to be sent\n@param data the data to send to the toAddress when invoking the transaction\n@param expireTime the number of seconds since 1970 for which this transaction is valid\n@param sequenceId the unique sequence id obtainable from getNextSequenceId\n@param signature see Data Formats", + "id": 708, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 657, + "modifierName": { + "argumentTypes": null, + "id": 656, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "4540:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4540:10:4" + } + ], + "name": "sendMultiSig", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 644, + "name": "toAddress", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4406:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 643, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4406:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 646, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4431:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 645, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4431:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 648, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4449:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 647, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4449:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 650, + "name": "expireTime", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4467:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 649, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4467:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 652, + "name": "sequenceId", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4490:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 651, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4490:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 654, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 708, + "src": "4513:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 653, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4513:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4398:134:4" + }, + "payable": false, + "returnParameters": { + "id": 658, + "nodeType": "ParameterList", + "parameters": [], + "src": "4551:0:4" + }, + "scope": 1030, + "src": "4377:663:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 764, + "nodeType": "Block", + "src": "5914:397:4", + "statements": [ + { + "assignments": [ + 726 + ], + "declarations": [ + { + "constant": false, + "id": 726, + "name": "operationHash", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5951:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 725, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5951:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 738, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4552433230", + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6002:7:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8ae85d849167ff996c04040c44924fd364217285e4cad818292c7ac37c0a345b", + "typeString": "literal_string \"ERC20\"" + }, + "value": "ERC20" + }, + { + "argumentTypes": null, + "id": 731, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 710, + "src": "6011:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 732, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "6022:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 733, + "name": "tokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "6029:20:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 734, + "name": "expireTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 716, + "src": "6051:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 735, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 718, + "src": "6063:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8ae85d849167ff996c04040c44924fd364217285e4cad818292c7ac37c0a345b", + "typeString": "literal_string \"ERC20\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 728, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "5985:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5985:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5985:89:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 727, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "5975:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5975:100:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5951:124:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 740, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 710, + "src": "6101:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 741, + "name": "operationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 726, + "src": "6112:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 742, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 720, + "src": "6127:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 743, + "name": "expireTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 716, + "src": "6138:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 744, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 718, + "src": "6150:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 739, + "name": "verifyMultiSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 854, + "src": "6086:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$", + "typeString": "function (address,bytes32,bytes memory,uint256,uint256) returns (address)" + } + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6086:75:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 746, + "nodeType": "ExpressionStatement", + "src": "6086:75:4" + }, + { + "assignments": [ + 748 + ], + "declarations": [ + { + "constant": false, + "id": 748, + "name": "instance", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "6172:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + }, + "typeName": { + "contractScope": null, + "id": 747, + "name": "ERC20Interface", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "6172:14:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 752, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 750, + "name": "tokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "6213:20:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 749, + "name": "ERC20Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "6198:14:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Interface_$18_$", + "typeString": "type(contract ERC20Interface)" + } + }, + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6198:36:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6172:62:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6244:36:4", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 755, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 710, + "src": "6263:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 756, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "6274:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 753, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 748, + "src": "6245:8:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$18", + "typeString": "contract ERC20Interface" + } + }, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10, + "src": "6245:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6245:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 763, + "nodeType": "IfStatement", + "src": "6240:67:4", + "trueBody": { + "id": 762, + "nodeType": "Block", + "src": "6282:25:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 759, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "6292:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6292:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 761, + "nodeType": "ExpressionStatement", + "src": "6292:8:4" + } + ] + } + } + ] + }, + "documentation": "Execute a multi-signature token transfer from this wallet using 2 signers: one from msg.sender and the other from ecrecover.\nSequence IDs are numbers starting from 1. They are used to prevent replay attacks and may not be repeated.\n * @param toAddress the destination address to send an outgoing transaction\n@param value the amount in tokens to be sent\n@param tokenContractAddress the address of the erc20 token contract\n@param expireTime the number of seconds since 1970 for which this transaction is valid\n@param sequenceId the unique sequence id obtainable from getNextSequenceId\n@param signature see Data Formats", + "id": 765, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 723, + "modifierName": { + "argumentTypes": null, + "id": 722, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "5903:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5903:10:4" + } + ], + "name": "sendMultiSigToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 710, + "name": "toAddress", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5751:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 709, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5751:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 712, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5776:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 711, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5776:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 714, + "name": "tokenContractAddress", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5794:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5794:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 716, + "name": "expireTime", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5830:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 715, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5830:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 718, + "name": "sequenceId", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5853:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 717, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5853:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 720, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "5876:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 719, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5876:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5743:152:4" + }, + "payable": false, + "returnParameters": { + "id": 724, + "nodeType": "ParameterList", + "parameters": [], + "src": "5914:0:4" + }, + "scope": 1030, + "src": "5717:594:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 786, + "nodeType": "Block", + "src": "6753:109:4", + "statements": [ + { + "assignments": [ + 775 + ], + "declarations": [ + { + "constant": false, + "id": 775, + "name": "forwarder", + "nodeType": "VariableDeclaration", + "scope": 787, + "src": "6759:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + }, + "typeName": { + "contractScope": null, + "id": 774, + "name": "Forwarder", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 450, + "src": "6759:9:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 779, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 777, + "name": "forwarderAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 767, + "src": "6791:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 776, + "name": "Forwarder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 450, + "src": "6781:9:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Forwarder_$450_$", + "typeString": "type(contract Forwarder)" + } + }, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6781:27:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6759:49:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 783, + "name": "tokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 769, + "src": "6836:20:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 780, + "name": "forwarder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 775, + "src": "6814:9:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Forwarder_$450", + "typeString": "contract Forwarder" + } + }, + "id": 782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "flushTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 436, + "src": "6814:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6814:43:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 785, + "nodeType": "ExpressionStatement", + "src": "6814:43:4" + } + ] + }, + "documentation": "Execute a token flush from one of the forwarder addresses. This transfer needs only a single signature and can be done by any signer\n * @param forwarderAddress the address of the forwarder address to flush the tokens from\n@param tokenContractAddress the address of the erc20 token contract", + "id": 787, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 772, + "modifierName": { + "argumentTypes": null, + "id": 771, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "6742:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6742:10:4" + } + ], + "name": "flushForwarderTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 770, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 767, + "name": "forwarderAddress", + "nodeType": "VariableDeclaration", + "scope": 787, + "src": "6671:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 766, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6671:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 769, + "name": "tokenContractAddress", + "nodeType": "VariableDeclaration", + "scope": 787, + "src": "6702:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 768, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6702:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6665:69:4" + }, + "payable": false, + "returnParameters": { + "id": 773, + "nodeType": "ParameterList", + "parameters": [], + "src": "6753:0:4" + }, + "scope": 1030, + "src": "6636:226:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 853, + "nodeType": "Block", + "src": "7525:837:4", + "statements": [ + { + "assignments": [ + 803 + ], + "declarations": [ + { + "constant": false, + "id": 803, + "name": "otherSigner", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7532:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 802, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7532:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 808, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 805, + "name": "operationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 791, + "src": "7582:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 806, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "7597:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 804, + "name": "recoverAddressFromSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 914, + "src": "7554:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7554:53:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7532:75:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 809, + "name": "safeMode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "7706:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7718:20:4", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 811, + "name": "toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 789, + "src": "7728:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 810, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "7719:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7719:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7706:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 819, + "nodeType": "IfStatement", + "src": "7702:135:4", + "trueBody": { + "id": 818, + "nodeType": "Block", + "src": "7740:97:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 815, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "7822:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7822:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 817, + "nodeType": "ExpressionStatement", + "src": "7822:8:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 820, + "name": "expireTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 795, + "src": "7897:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 821, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "7910:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7910:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7897:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 828, + "nodeType": "IfStatement", + "src": "7893:86:4", + "trueBody": { + "id": 827, + "nodeType": "Block", + "src": "7927:52:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 824, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "7964:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7964:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 826, + "nodeType": "ExpressionStatement", + "src": "7964:8:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 830, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 797, + "src": "8086:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 829, + "name": "tryInsertSequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 990, + "src": "8066:19:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8066:31:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 832, + "nodeType": "ExpressionStatement", + "src": "8066:31:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "8108:22:4", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 834, + "name": "otherSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "8118:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 833, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "8109:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8109:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 841, + "nodeType": "IfStatement", + "src": "8104:130:4", + "trueBody": { + "id": 840, + "nodeType": "Block", + "src": "8132:102:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 837, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "8219:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8219:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 839, + "nodeType": "ExpressionStatement", + "src": "8219:8:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 842, + "name": "otherSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "8243:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 843, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "8258:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8258:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8243:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 850, + "nodeType": "IfStatement", + "src": "8239:94:4", + "trueBody": { + "id": 849, + "nodeType": "Block", + "src": "8270:63:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 846, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "8318:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8318:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 848, + "nodeType": "ExpressionStatement", + "src": "8318:8:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 851, + "name": "otherSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "8346:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 801, + "id": 852, + "nodeType": "Return", + "src": "8339:18:4" + } + ] + }, + "documentation": "Do common multisig verification for both eth sends and erc20token transfers\n * @param toAddress the destination address to send an outgoing transaction\n@param operationHash see Data Formats\n@param signature see Data Formats\n@param expireTime the number of seconds since 1970 for which this transaction is valid\n@param sequenceId the unique sequence id obtainable from getNextSequenceId\nreturns address that has created the signature", + "id": 854, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "verifyMultiSig", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 789, + "name": "toAddress", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7379:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 788, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7379:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 791, + "name": "operationHash", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7404:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 790, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7404:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 793, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7433:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 792, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7433:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 795, + "name": "expireTime", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7456:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 794, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7456:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 797, + "name": "sequenceId", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7479:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 796, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7479:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7371:127:4" + }, + "payable": false, + "returnParameters": { + "id": 801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 800, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 854, + "src": "7516:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7516:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7515:9:4" + }, + "scope": 1030, + "src": "7348:1014:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 868, + "nodeType": "Block", + "src": "8542:66:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 859, + "name": "safeMode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "8548:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8559:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "8548:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 862, + "nodeType": "ExpressionStatement", + "src": "8548:15:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 864, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "8592:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8592:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 863, + "name": "SafeModeActivated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 520, + "src": "8574:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8574:29:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 867, + "nodeType": "EmitStatement", + "src": "8569:34:4" + } + ] + }, + "documentation": "Irrevocably puts contract into safe mode. When in this mode, transactions may only be sent to signing addresses.", + "id": 869, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 857, + "modifierName": { + "argumentTypes": null, + "id": 856, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "8531:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8531:10:4" + } + ], + "name": "activateSafeMode", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 855, + "nodeType": "ParameterList", + "parameters": [], + "src": "8521:2:4" + }, + "payable": false, + "returnParameters": { + "id": 858, + "nodeType": "ParameterList", + "parameters": [], + "src": "8542:0:4" + }, + "scope": 1030, + "src": "8496:112:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 913, + "nodeType": "Block", + "src": "8919:521:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 878, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 873, + "src": "8929:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8929:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3635", + "id": 880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8949:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "src": "8929:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 886, + "nodeType": "IfStatement", + "src": "8925:51:4", + "trueBody": { + "id": 885, + "nodeType": "Block", + "src": "8953:23:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 882, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "8961:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8961:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 884, + "nodeType": "ExpressionStatement", + "src": "8961:8:4" + } + ] + } + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 888, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 914, + "src": "9076:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 887, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9076:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 889, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9076:9:4" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 891, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 914, + "src": "9091:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 890, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9091:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 892, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9091:9:4" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 894, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 914, + "src": "9106:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 893, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9106:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 895, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9106:7:4" + }, + { + "externalReferences": [ + { + "r": { + "declaration": 888, + "isOffset": false, + "isSlot": false, + "src": "9136:1:4", + "valueSize": 1 + } + }, + { + "v": { + "declaration": 894, + "isOffset": false, + "isSlot": false, + "src": "9210:1:4", + "valueSize": 1 + } + }, + { + "signature": { + "declaration": 873, + "isOffset": false, + "isSlot": false, + "src": "9151:9:4", + "valueSize": 1 + } + }, + { + "s": { + "declaration": 891, + "isOffset": false, + "isSlot": false, + "src": "9173:1:4", + "valueSize": 1 + } + }, + { + "signature": { + "declaration": 873, + "isOffset": false, + "isSlot": false, + "src": "9188:9:4", + "valueSize": 1 + } + }, + { + "signature": { + "declaration": 873, + "isOffset": false, + "isSlot": false, + "src": "9229:9:4", + "valueSize": 1 + } + } + ], + "id": 896, + "nodeType": "InlineAssembly", + "operations": "{\n r := mload(add(signature, 32))\n s := mload(add(signature, 64))\n v := and(mload(add(signature, 65)), 255)\n}", + "src": "9119:144:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 897, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "9265:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3237", + "id": 898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9269:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "9265:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 905, + "nodeType": "IfStatement", + "src": "9261:129:4", + "trueBody": { + "id": 904, + "nodeType": "Block", + "src": "9273:117:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 900, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "9281:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3237", + "id": 901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9286:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "9281:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 903, + "nodeType": "ExpressionStatement", + "src": "9281:7:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 907, + "name": "operationHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 871, + "src": "9412:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 908, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "9427:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 909, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 888, + "src": "9430:1:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 910, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "9433:1:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 906, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "9402:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9402:33:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 877, + "id": 912, + "nodeType": "Return", + "src": "9395:40:4" + } + ] + }, + "documentation": "Gets signer's address using ecrecover\n@param operationHash see Data Formats\n@param signature see Data Formats\nreturns address recovered from the signature", + "id": 914, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "recoverAddressFromSignature", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 874, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 871, + "name": "operationHash", + "nodeType": "VariableDeclaration", + "scope": 914, + "src": "8841:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 870, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8841:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 873, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 914, + "src": "8868:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 872, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8868:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8835:52:4" + }, + "payable": false, + "returnParameters": { + "id": 877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 876, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 914, + "src": "8910:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 875, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8910:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8909:9:4" + }, + "scope": 1030, + "src": "8799:641:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 989, + "nodeType": "Block", + "src": "9864:945:4", + "statements": [ + { + "assignments": [ + 922 + ], + "declarations": [ + { + "constant": false, + "id": 922, + "name": "lowestValueIndex", + "nodeType": "VariableDeclaration", + "scope": 990, + "src": "9934:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 921, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9934:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 924, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9958:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9934:25:4" + }, + { + "body": { + "id": 958, + "nodeType": "Block", + "src": "10016:251:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 935, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10028:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 937, + "indexExpression": { + "argumentTypes": null, + "id": 936, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "10046:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10028:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 938, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 916, + "src": "10052:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10028:34:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 944, + "nodeType": "IfStatement", + "src": "10024:127:4", + "trueBody": { + "id": 943, + "nodeType": "Block", + "src": "10064:87:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 940, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "10134:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10134:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 942, + "nodeType": "ExpressionStatement", + "src": "10134:8:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 945, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10162:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 947, + "indexExpression": { + "argumentTypes": null, + "id": 946, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "10180:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10162:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 948, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10185:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 950, + "indexExpression": { + "argumentTypes": null, + "id": 949, + "name": "lowestValueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "10203:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10185:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10162:58:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 957, + "nodeType": "IfStatement", + "src": "10158:103:4", + "trueBody": { + "id": 956, + "nodeType": "Block", + "src": "10222:39:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 952, + "name": "lowestValueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "10232:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 953, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "10251:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10232:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 955, + "nodeType": "ExpressionStatement", + "src": "10232:20:4" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 929, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "9982:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 930, + "name": "SEQUENCE_ID_WINDOW_SIZE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "9986:23:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9982:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 959, + "initializationExpression": { + "assignments": [ + 926 + ], + "declarations": [ + { + "constant": false, + "id": 926, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 990, + "src": "9970:6:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 925, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9970:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 928, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 927, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9979:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9970:10:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10011:3:4", + "subExpression": { + "argumentTypes": null, + "id": 932, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "10011:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 934, + "nodeType": "ExpressionStatement", + "src": "10011:3:4" + }, + "nodeType": "ForStatement", + "src": "9965:302:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 960, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 916, + "src": "10276:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 961, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10289:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 963, + "indexExpression": { + "argumentTypes": null, + "id": 962, + "name": "lowestValueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "10307:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10289:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10276:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 969, + "nodeType": "IfStatement", + "src": "10272:222:4", + "trueBody": { + "id": 968, + "nodeType": "Block", + "src": "10326:168:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 965, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "10479:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10479:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 967, + "nodeType": "ExpressionStatement", + "src": "10479:8:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 970, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 916, + "src": "10503:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 971, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10517:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 973, + "indexExpression": { + "argumentTypes": null, + "id": 972, + "name": "lowestValueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "10535:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10517:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130303030", + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10555:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + }, + "src": "10517:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 976, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10516:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10503:58:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 982, + "nodeType": "IfStatement", + "src": "10499:252:4", + "trueBody": { + "id": 981, + "nodeType": "Block", + "src": "10563:188:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 978, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1050, + 1051 + ], + "referencedDeclaration": 1050, + "src": "10736:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10736:8:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 980, + "nodeType": "ExpressionStatement", + "src": "10736:8:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 983, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10756:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 985, + "indexExpression": { + "argumentTypes": null, + "id": 984, + "name": "lowestValueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "10774:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10756:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 986, + "name": "sequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 916, + "src": "10794:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10756:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 988, + "nodeType": "ExpressionStatement", + "src": "10756:48:4" + } + ] + }, + "documentation": "Verify that the sequence id has not been used before and inserts it. Throws if the sequence ID was not accepted.\nWe collect a window of up to 10 recent sequence ids, and allow any sequence id that is not in the window and\ngreater than the minimum element in the window.\n@param sequenceId to insert into array of stored ids", + "id": 990, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 919, + "modifierName": { + "argumentTypes": null, + "id": 918, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "9853:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "9853:10:4" + } + ], + "name": "tryInsertSequenceId", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 917, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 916, + "name": "sequenceId", + "nodeType": "VariableDeclaration", + "scope": 990, + "src": "9828:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 915, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9828:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9827:17:4" + }, + "payable": false, + "returnParameters": { + "id": 920, + "nodeType": "ParameterList", + "parameters": [], + "src": "9864:0:4" + }, + "scope": 1030, + "src": "9799:1010:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 1028, + "nodeType": "Block", + "src": "11036:246:4", + "statements": [ + { + "assignments": [ + 996 + ], + "declarations": [ + { + "constant": false, + "id": 996, + "name": "highestSequenceId", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "11042:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 995, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11042:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 998, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11067:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "11042:26:4" + }, + { + "body": { + "id": 1022, + "nodeType": "Block", + "src": "11125:119:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1009, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "11137:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 1011, + "indexExpression": { + "argumentTypes": null, + "id": 1010, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1000, + "src": "11155:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11137:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1012, + "name": "highestSequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 996, + "src": "11160:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11137:40:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1021, + "nodeType": "IfStatement", + "src": "11133:105:4", + "trueBody": { + "id": 1020, + "nodeType": "Block", + "src": "11179:59:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1014, + "name": "highestSequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 996, + "src": "11189:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1015, + "name": "recentSequenceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "11209:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$10_storage", + "typeString": "uint256[10] storage ref" + } + }, + "id": 1017, + "indexExpression": { + "argumentTypes": null, + "id": 1016, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1000, + "src": "11227:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11209:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11189:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1019, + "nodeType": "ExpressionStatement", + "src": "11189:40:4" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1003, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1000, + "src": "11091:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 1004, + "name": "SEQUENCE_ID_WINDOW_SIZE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "11095:23:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11091:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1023, + "initializationExpression": { + "assignments": [ + 1000 + ], + "declarations": [ + { + "constant": false, + "id": 1000, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "11079:6:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 999, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11079:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1002, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11088:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "11079:10:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "11120:3:4", + "subExpression": { + "argumentTypes": null, + "id": 1006, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1000, + "src": "11120:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1008, + "nodeType": "ExpressionStatement", + "src": "11120:3:4" + }, + "nodeType": "ForStatement", + "src": "11074:170:4" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1024, + "name": "highestSequenceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 996, + "src": "11256:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11276:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11256:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 994, + "id": 1027, + "nodeType": "Return", + "src": "11249:28:4" + } + ] + }, + "documentation": "Gets the next available sequence ID for signing when using executeAndConfirm\nreturns the sequenceId one higher than the highest currently stored", + "id": 1029, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getNextSequenceId", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 991, + "nodeType": "ParameterList", + "parameters": [], + "src": "11006:2:4" + }, + "payable": false, + "returnParameters": { + "id": 994, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 993, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "11030:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 992, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11030:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11029:6:4" + }, + "scope": 1030, + "src": "10980:302:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1031, + "src": "1120:10164:4" + } + ], + "src": "0:11285:4" + }, + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.1", + "updatedAt": "2018-11-08T20:46:35.586Z" +} \ No newline at end of file diff --git a/contracts/FixedSupplyToken.sol b/contracts/FixedSupplyToken.sol index 5ed038d..d6b09f9 100644 --- a/contracts/FixedSupplyToken.sol +++ b/contracts/FixedSupplyToken.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.11; +pragma solidity ^0.4.24; // ---------------------------------------------------------------------------------------------- // Sample fixed supply token contract @@ -59,7 +59,7 @@ contract FixedSupplyToken is ERC20Interface { } // Constructor - function FixedSupplyToken() public { + constructor() public { owner = msg.sender; balances[owner] = _totalSupply; } @@ -78,7 +78,7 @@ contract FixedSupplyToken is ERC20Interface { if (balances[msg.sender] >= _amount && _amount > 0 && balances[_to] + _amount > balances[_to]) { balances[msg.sender] -= _amount; balances[_to] += _amount; - Transfer(msg.sender, _to, _amount); + emit Transfer(msg.sender, _to, _amount); return true; } else { return false; @@ -100,7 +100,7 @@ contract FixedSupplyToken is ERC20Interface { balances[_from] -= _amount; allowed[_from][msg.sender] -= _amount; balances[_to] += _amount; - Transfer(_from, _to, _amount); + emit Transfer(_from, _to, _amount); return true; } else { return false; @@ -111,11 +111,11 @@ contract FixedSupplyToken is ERC20Interface { // If this function is called again it overwrites the current allowance with _value. function approve(address _spender, uint256 _amount) public returns (bool success) { allowed[msg.sender][_spender] = _amount; - Approval(msg.sender, _spender, _amount); + emit Approval(msg.sender, _spender, _amount); return true; } function allowance(address _owner, address _spender) public constant returns (uint256 remaining) { return allowed[_owner][_spender]; } -} \ No newline at end of file +} diff --git a/contracts/Forwarder.sol b/contracts/Forwarder.sol index cdfac0d..b127808 100644 --- a/contracts/Forwarder.sol +++ b/contracts/Forwarder.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.18; +pragma solidity ^0.4.24; import "./ERC20Interface.sol"; /** * Contract that will forward any incoming Ether to the creator of the contract @@ -11,7 +11,7 @@ contract Forwarder { /** * Create the contract, and sets the destination address to that of the creator */ - function Forwarder() public { + constructor() public { parentAddress = msg.sender; } @@ -32,7 +32,7 @@ contract Forwarder { // throws on failure parentAddress.transfer(msg.value); // Fire off the deposited event if we can forward it - ForwarderDeposited(msg.sender, msg.value, msg.data); + emit ForwarderDeposited(msg.sender, msg.value, msg.data); } /** @@ -41,8 +41,8 @@ contract Forwarder { */ function flushTokens(address tokenContractAddress) public onlyParent { ERC20Interface instance = ERC20Interface(tokenContractAddress); - var forwarderAddress = address(this); - var forwarderBalance = instance.balanceOf(forwarderAddress); + address forwarderAddress = address(this); + uint256 forwarderBalance = instance.balanceOf(forwarderAddress); if (forwarderBalance == 0) { return; } @@ -57,6 +57,6 @@ contract Forwarder { */ function flush() public { // throws on failure - parentAddress.transfer(this.balance); + parentAddress.transfer(address(this).balance); } } diff --git a/contracts/ForwarderTarget.sol b/contracts/ForwarderTarget.sol index 674a543..09395f0 100644 --- a/contracts/ForwarderTarget.sol +++ b/contracts/ForwarderTarget.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.18; +pragma solidity ^0.4.24; import "./Forwarder.sol"; @@ -6,9 +6,9 @@ import "./Forwarder.sol"; // This is a test target for a Forwarder. // It contains a public function with a side-effect. contract ForwarderTarget { - uint public data; + uint256 public data; - function ForwarderTarget() public { + constructor() public { } function setDataWithValue(uint d, bool b) payable public returns (bool) { diff --git a/contracts/WalletSimple.sol b/contracts/WalletSimple.sol index 1edebf8..6d15c6f 100644 --- a/contracts/WalletSimple.sol +++ b/contracts/WalletSimple.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.18; +pragma solidity ^0.4.24; import "./Forwarder.sol"; import "./ERC20Interface.sol"; /** @@ -56,7 +56,7 @@ contract WalletSimple { * * @param allowedSigners An array of signers on the wallet */ - function WalletSimple(address[] allowedSigners) public { + constructor(address[] allowedSigners) public { if (allowedSigners.length != 3) { // Invalid number of signers revert(); @@ -95,7 +95,7 @@ contract WalletSimple { function() public payable { if (msg.value > 0) { // Fire deposited event if we are receiving funds - Deposited(msg.sender, msg.value, msg.data); + emit Deposited(msg.sender, msg.value, msg.data); } } @@ -127,16 +127,16 @@ contract WalletSimple { bytes signature ) public onlySigner { // Verify the other signer - var operationHash = keccak256("ETHER", toAddress, value, data, expireTime, sequenceId); + bytes32 operationHash = keccak256(abi.encodePacked("ETHER", toAddress, value, data, expireTime, sequenceId)); - var otherSigner = verifyMultiSig(toAddress, operationHash, signature, expireTime, sequenceId); + address otherSigner = verifyMultiSig(toAddress, operationHash, signature, expireTime, sequenceId); // Success, send the transaction if (!(toAddress.call.value(value)(data))) { // Failed executing transaction revert(); } - Transacted(msg.sender, otherSigner, operationHash, toAddress, value, data); + emit Transacted(msg.sender, otherSigner, operationHash, toAddress, value, data); } /** @@ -159,7 +159,7 @@ contract WalletSimple { bytes signature ) public onlySigner { // Verify the other signer - var operationHash = keccak256("ERC20", toAddress, value, tokenContractAddress, expireTime, sequenceId); + bytes32 operationHash = keccak256(abi.encodePacked("ERC20", toAddress, value, tokenContractAddress, expireTime, sequenceId)); verifyMultiSig(toAddress, operationHash, signature, expireTime, sequenceId); @@ -201,7 +201,7 @@ contract WalletSimple { uint sequenceId ) private returns (address) { - var otherSigner = recoverAddressFromSignature(operationHash, signature); + address otherSigner = recoverAddressFromSignature(operationHash, signature); // Verify if we are in safe mode. In safe mode, the wallet can only send to signers if (safeMode && !isSigner(toAddress)) { @@ -234,7 +234,7 @@ contract WalletSimple { */ function activateSafeMode() public onlySigner { safeMode = true; - SafeModeActivated(msg.sender); + emit SafeModeActivated(msg.sender); } /**