safe-react/safe-contracts/build/contracts/OwnerManager.json

7844 lines
327 KiB
JSON

{
"contractName": "OwnerManager",
"abi": [
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "owners",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "_threshold",
"type": "uint8"
}
],
"name": "addOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "ownerIndex",
"type": "uint256"
},
{
"name": "owner",
"type": "address"
},
{
"name": "_threshold",
"type": "uint8"
}
],
"name": "removeOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "oldOwnerIndex",
"type": "uint256"
},
{
"name": "oldOwner",
"type": "address"
},
{
"name": "newOwner",
"type": "address"
}
],
"name": "replaceOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_threshold",
"type": "uint8"
}
],
"name": "changeThreshold",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "threshold",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
}
],
"name": "isOwner",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getOwners",
"outputs": [
{
"name": "",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b50610b4e806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146100935780630e5229b0146101005780632f54bf6e1461015057806342cde4e8146101ab57806354e99c6e146101dc578063842b954e14610249578063a0e67e2b146102a3578063b7f3358d1461030f575b600080fd5b34801561009f57600080fd5b506100be6004803603810190808035906020019092919050505061033f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010c57600080fd5b5061014e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061037d565b005b34801561015c57600080fd5b50610191600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610520565b604051808215151515815260200191505060405180910390f35b3480156101b757600080fd5b506101c0610576565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101e857600080fd5b5061024760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058d565b005b34801561025557600080fd5b506102a160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506107c6565b005b3480156102af57600080fd5b506102b86109c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102fb5780820151818401526020810190506102e0565b505050509050019250505060405180910390f35b34801561031b57600080fd5b5061033d600480360381019080803560ff169060200190929190505050610a4f565b005b60008181548110151561034e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103b757600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156103dd57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561043657600080fd5b60008290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600160009054906101000a900460ff1660ff1614151561051c5761051b81610a4f565b5b5050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160009054906101000a900460ff16905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105c757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156105ed57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561064657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561066c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106b957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060008481548110151561077957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561080057600080fd5b8060ff166001600080549050031015151561081a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561084057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561088d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006001600080549050038154811015156108fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008481548110151561093657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054809190600190036109939190610ad1565b508060ff16600160009054906101000a900460ff1660ff161415156109bc576109bb81610a4f565b5b505050565b60606000805480602002602001604051908101604052809291908181526020018280548015610a4557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109fb575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8957600080fd5b6000805490508160ff1611151515610aa057600080fd5b60018160ff1610151515610ab357600080fd5b80600160006101000a81548160ff021916908360ff16021790555050565b815481835581811115610af857818360005260206000209182019101610af79190610afd565b5b505050565b610b1f91905b80821115610b1b576000816000905550600101610b03565b5090565b905600a165627a7a72305820e78155e74b906f83eb64e436f45d07ae88b2195944595ca816ddbec6abb1ecb90029",
"deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146100935780630e5229b0146101005780632f54bf6e1461015057806342cde4e8146101ab57806354e99c6e146101dc578063842b954e14610249578063a0e67e2b146102a3578063b7f3358d1461030f575b600080fd5b34801561009f57600080fd5b506100be6004803603810190808035906020019092919050505061033f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010c57600080fd5b5061014e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061037d565b005b34801561015c57600080fd5b50610191600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610520565b604051808215151515815260200191505060405180910390f35b3480156101b757600080fd5b506101c0610576565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101e857600080fd5b5061024760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058d565b005b34801561025557600080fd5b506102a160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506107c6565b005b3480156102af57600080fd5b506102b86109c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102fb5780820151818401526020810190506102e0565b505050509050019250505060405180910390f35b34801561031b57600080fd5b5061033d600480360381019080803560ff169060200190929190505050610a4f565b005b60008181548110151561034e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103b757600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156103dd57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561043657600080fd5b60008290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600160009054906101000a900460ff1660ff1614151561051c5761051b81610a4f565b5b5050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160009054906101000a900460ff16905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105c757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156105ed57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561064657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561066c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106b957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060008481548110151561077957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561080057600080fd5b8060ff166001600080549050031015151561081a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561084057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561088d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006001600080549050038154811015156108fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008481548110151561093657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054809190600190036109939190610ad1565b508060ff16600160009054906101000a900460ff1660ff161415156109bc576109bb81610a4f565b5b505050565b60606000805480602002602001604051908101604052809291908181526020018280548015610a4557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109fb575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8957600080fd5b6000805490508160ff1611151515610aa057600080fd5b60018160ff1610151515610ab357600080fd5b80600160006101000a81548160ff021916908360ff16021790555050565b815481835581811115610af857818360005260206000209182019101610af79190610afd565b5b505050565b610b1f91905b80821115610b1b576000816000905550600101610b03565b5090565b905600a165627a7a72305820e78155e74b906f83eb64e436f45d07ae88b2195944595ca816ddbec6abb1ecb90029",
"sourceMap": "240:4632:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:4632:10;;;;;;;",
"deployedSourceMap": "240:4632:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4759:111:10;;;;;;;;;;;;;;;;;4109:321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;4552:125::-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;3419:501::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;2499:599::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;4759:111::-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;4109:321::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;240:4632::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
"source": "pragma solidity 0.4.23;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - <stefan@gnosis.pm>\n/// @author Richard Meissner - <richard@gnosis.pm>\ncontract OwnerManager is SelfAuthorized {\n\n address[] public owners;\n uint8 public threshold;\n\n // isOwner mapping allows to check if an address is a Safe owner.\n mapping (address => bool) public isOwner;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n isOwner[owner] = true;\n }\n owners = _owners;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwner(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n owners.push(owner);\n isOwner[owner] = true;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param ownerIndex Array index position of owner address to be removed.\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(uint256 ownerIndex, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(owners.length - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[ownerIndex] == owner);\n isOwner[owner] = false;\n owners[ownerIndex] = owners[owners.length - 1];\n owners.length--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param oldOwnerIndex Array index position of owner address to be replaced.\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function replaceOwner(uint256 oldOwnerIndex, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0);\n // No duplicate owners allowed.\n require(!isOwner[newOwner]);\n // Validate owner address corresponds to owner index.\n require(owners[oldOwnerIndex] == oldOwner);\n isOwner[oldOwner] = false;\n isOwner[newOwner] = true;\n owners[oldOwnerIndex] = newOwner;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function threshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return isOwner[owner];\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n return owners;\n }\n}\n",
"sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol",
"ast": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol",
"exportedSymbols": {
"OwnerManager": [
1438
]
},
"id": 1439,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1144,
"literals": [
"solidity",
"0.4",
".23"
],
"nodeType": "PragmaDirective",
"src": "0:23:10"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol",
"file": "./SelfAuthorized.sol",
"id": 1145,
"nodeType": "ImportDirective",
"scope": 1439,
"sourceUnit": 1560,
"src": "24:30:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1146,
"name": "SelfAuthorized",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1559,
"src": "265:14:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SelfAuthorized_$1559",
"typeString": "contract SelfAuthorized"
}
},
"id": 1147,
"nodeType": "InheritanceSpecifier",
"src": "265:14:10"
}
],
"contractDependencies": [
1559
],
"contractKind": "contract",
"documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - <stefan@gnosis.pm>\n @author Richard Meissner - <richard@gnosis.pm>",
"fullyImplemented": true,
"id": 1438,
"linearizedBaseContracts": [
1438,
1559
],
"name": "OwnerManager",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"id": 1150,
"name": "owners",
"nodeType": "VariableDeclaration",
"scope": 1438,
"src": "287:23:10",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 1148,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "287:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1149,
"length": null,
"nodeType": "ArrayTypeName",
"src": "287:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1152,
"name": "threshold",
"nodeType": "VariableDeclaration",
"scope": 1438,
"src": "316:22:10",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1151,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "316:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1156,
"name": "isOwner",
"nodeType": "VariableDeclaration",
"scope": 1438,
"src": "415:40:10",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 1155,
"keyType": {
"id": 1153,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "424:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "415:25:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 1154,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "435:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 1229,
"nodeType": "Block",
"src": "730:767:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1167,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1165,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [
1152
],
"referencedDeclaration": 1152,
"src": "872:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1166,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "885:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "872:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1164,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "864:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1168,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "864:23:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1169,
"nodeType": "ExpressionStatement",
"src": "864:23:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1174,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1171,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1161,
"src": "980:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1172,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1159,
"src": "994:7:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1173,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "994:14:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "980:28:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1170,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "972:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1175,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "972:37:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1176,
"nodeType": "ExpressionStatement",
"src": "972:37:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1180,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1178,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1161,
"src": "1079:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1179,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1093:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "1079:15:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1177,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "1071:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1181,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1071:24:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1182,
"nodeType": "ExpressionStatement",
"src": "1071:24:10"
},
{
"body": {
"id": 1219,
"nodeType": "Block",
"src": "1187:246:10",
"statements": [
{
"assignments": [
1195
],
"declarations": [
{
"constant": false,
"id": 1195,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1230,
"src": "1246:13:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1194,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1246:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1199,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1196,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1159,
"src": "1262:7:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1198,
"indexExpression": {
"argumentTypes": null,
"id": 1197,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1184,
"src": "1270:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1262:10:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1246:26:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1203,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1201,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "1294:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1202,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1303:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1294:10:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1200,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "1286:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1204,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1286:19:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1205,
"nodeType": "ExpressionStatement",
"src": "1286:19:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1210,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "1371:15:10",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1207,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "1372:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1209,
"indexExpression": {
"argumentTypes": null,
"id": 1208,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "1380:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1372:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1206,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "1363:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1211,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1363:24:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1212,
"nodeType": "ExpressionStatement",
"src": "1363:24:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1217,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1213,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "1401:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1215,
"indexExpression": {
"argumentTypes": null,
"id": 1214,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "1409:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "1401:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1216,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1418:4:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "1401:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1218,
"nodeType": "ExpressionStatement",
"src": "1401:21:10"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1190,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1187,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1184,
"src": "1162:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1188,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1159,
"src": "1166:7:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1189,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1166:14:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1162:18:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1220,
"initializationExpression": {
"assignments": [
1184
],
"declarations": [
{
"constant": false,
"id": 1184,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1230,
"src": "1147:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1183,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1147:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1186,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1185,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1159:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "1147:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1192,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "1182:3:10",
"subExpression": {
"argumentTypes": null,
"id": 1191,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1184,
"src": "1182:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1193,
"nodeType": "ExpressionStatement",
"src": "1182:3:10"
},
"nodeType": "ForStatement",
"src": "1142:291:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1223,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1221,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "1442:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1222,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1159,
"src": "1451:7:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"src": "1442:16:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1224,
"nodeType": "ExpressionStatement",
"src": "1442:16:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1227,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1225,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [
1152
],
"referencedDeclaration": 1152,
"src": "1468:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1226,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1161,
"src": "1480:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "1468:22:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1228,
"nodeType": "ExpressionStatement",
"src": "1468:22:10"
}
]
},
"documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.",
"id": 1230,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setupOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1162,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1159,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 1230,
"src": "672:17:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 1157,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "672:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1158,
"length": null,
"nodeType": "ArrayTypeName",
"src": "672:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1161,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1230,
"src": "691:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1160,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "691:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "671:37:10"
},
"payable": false,
"returnParameters": {
"id": 1163,
"nodeType": "ParameterList",
"parameters": [],
"src": "730:0:10"
},
"scope": 1438,
"src": "651:846:10",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 1272,
"nodeType": "Block",
"src": "1826:342:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1242,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1240,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "1885:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1241,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1894:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1885:10:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1239,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "1877:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1877:19:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1244,
"nodeType": "ExpressionStatement",
"src": "1877:19:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1249,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "1954:15:10",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1246,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "1955:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1248,
"indexExpression": {
"argumentTypes": null,
"id": 1247,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "1963:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1955:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1245,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "1946:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1946:24:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1251,
"nodeType": "ExpressionStatement",
"src": "1946:24:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1255,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "1992:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 1252,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "1980:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1254,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1980:11:10",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) returns (uint256)"
}
},
"id": 1256,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1980:18:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1257,
"nodeType": "ExpressionStatement",
"src": "1980:18:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1262,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1258,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "2008:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1260,
"indexExpression": {
"argumentTypes": null,
"id": 1259,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "2016:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2008:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1261,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2025:4:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "2008:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1263,
"nodeType": "ExpressionStatement",
"src": "2008:21:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1266,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1264,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [
1152
],
"referencedDeclaration": 1152,
"src": "2097:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1265,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1234,
"src": "2110:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2097:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1271,
"nodeType": "IfStatement",
"src": "2093:68:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1268,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1234,
"src": "2150:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1267,
"name": "changeThreshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1408,
"src": "2134:15:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
"typeString": "function (uint8)"
}
},
"id": 1269,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2134:27:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1270,
"nodeType": "ExpressionStatement",
"src": "2134:27:10"
}
}
]
},
"documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.",
"id": 1273,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1237,
"modifierName": {
"argumentTypes": null,
"id": 1236,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1558,
"src": "1811:10:10",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "1811:10:10"
}
],
"name": "addOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1235,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1232,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1273,
"src": "1755:13:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1231,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1755:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1234,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1273,
"src": "1770:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1233,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1770:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1754:33:10"
},
"payable": false,
"returnParameters": {
"id": 1238,
"nodeType": "ParameterList",
"parameters": [],
"src": "1826:0:10"
},
"scope": 1438,
"src": "1737:431:10",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1331,
"nodeType": "Block",
"src": "2611:487:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1290,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1288,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1285,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "2706:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1286,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2706:13:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1287,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2722:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2706:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"id": 1289,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1279,
"src": "2727:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2706:31:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1284,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "2698:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1291,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2698:40:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1292,
"nodeType": "ExpressionStatement",
"src": "2698:40:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1298,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1294,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "2818:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1296,
"indexExpression": {
"argumentTypes": null,
"id": 1295,
"name": "ownerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1275,
"src": "2825:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2818:18:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1297,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1277,
"src": "2840:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2818:27:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1293,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "2810:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1299,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2810:36:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1300,
"nodeType": "ExpressionStatement",
"src": "2810:36:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1305,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1301,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "2856:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1303,
"indexExpression": {
"argumentTypes": null,
"id": 1302,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1277,
"src": "2864:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2856:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1304,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2873:5:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "2856:22:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1306,
"nodeType": "ExpressionStatement",
"src": "2856:22:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1316,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1307,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "2888:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1309,
"indexExpression": {
"argumentTypes": null,
"id": 1308,
"name": "ownerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1275,
"src": "2895:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2888:18:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1310,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "2909:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1315,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1311,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "2916:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1312,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2916:13:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1313,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2932:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2916:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2909:25:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2888:46:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1317,
"nodeType": "ExpressionStatement",
"src": "2888:46:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1321,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "--",
"prefix": false,
"src": "2944:15:10",
"subExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1318,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "2944:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1320,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2944:13:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1322,
"nodeType": "ExpressionStatement",
"src": "2944:15:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1325,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1323,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [
1152
],
"referencedDeclaration": 1152,
"src": "3027:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1324,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1279,
"src": "3040:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "3027:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1330,
"nodeType": "IfStatement",
"src": "3023:68:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1327,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1279,
"src": "3080:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1326,
"name": "changeThreshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1408,
"src": "3064:15:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
"typeString": "function (uint8)"
}
},
"id": 1328,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3064:27:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1329,
"nodeType": "ExpressionStatement",
"src": "3064:27:10"
}
}
]
},
"documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param ownerIndex Array index position of owner address to be removed.\n @param owner Owner address to be removed.\n @param _threshold New threshold.",
"id": 1332,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1282,
"modifierName": {
"argumentTypes": null,
"id": 1281,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1558,
"src": "2596:10:10",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2596:10:10"
}
],
"name": "removeOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1280,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1275,
"name": "ownerIndex",
"nodeType": "VariableDeclaration",
"scope": 1332,
"src": "2520:18:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1274,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2520:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1277,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1332,
"src": "2540:13:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1276,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2540:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1279,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1332,
"src": "2555:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1278,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2555:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2519:53:10"
},
"payable": false,
"returnParameters": {
"id": 1283,
"nodeType": "ParameterList",
"parameters": [],
"src": "2611:0:10"
},
"scope": 1438,
"src": "2499:599:10",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1382,
"nodeType": "Block",
"src": "3538:382:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1346,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1344,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1338,
"src": "3597:8:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1345,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3609:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3597:13:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1343,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "3589:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1347,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3589:22:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1348,
"nodeType": "ExpressionStatement",
"src": "3589:22:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1353,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "3669:18:10",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1350,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "3670:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1352,
"indexExpression": {
"argumentTypes": null,
"id": 1351,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1338,
"src": "3678:8:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3670:17:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1349,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "3661:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1354,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3661:27:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1355,
"nodeType": "ExpressionStatement",
"src": "3661:27:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1361,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1357,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "3768:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1359,
"indexExpression": {
"argumentTypes": null,
"id": 1358,
"name": "oldOwnerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1334,
"src": "3775:13:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3768:21:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1360,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1336,
"src": "3793:8:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3768:33:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1356,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "3760:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1362,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3760:42:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1363,
"nodeType": "ExpressionStatement",
"src": "3760:42:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1368,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1364,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "3812:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1366,
"indexExpression": {
"argumentTypes": null,
"id": 1365,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1336,
"src": "3820:8:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3812:17:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1367,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3832:5:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "3812:25:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1369,
"nodeType": "ExpressionStatement",
"src": "3812:25:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1374,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1370,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "3847:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1372,
"indexExpression": {
"argumentTypes": null,
"id": 1371,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1338,
"src": "3855:8:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3847:17:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1373,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3867:4:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "3847:24:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1375,
"nodeType": "ExpressionStatement",
"src": "3847:24:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1380,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1376,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "3881:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1378,
"indexExpression": {
"argumentTypes": null,
"id": 1377,
"name": "oldOwnerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1334,
"src": "3888:13:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3881:21:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1379,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1338,
"src": "3905:8:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3881:32:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1381,
"nodeType": "ExpressionStatement",
"src": "3881:32:10"
}
]
},
"documentation": "@dev Allows to replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param oldOwnerIndex Array index position of owner address to be replaced.\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.",
"id": 1383,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1341,
"modifierName": {
"argumentTypes": null,
"id": 1340,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1558,
"src": "3523:10:10",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3523:10:10"
}
],
"name": "replaceOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1339,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1334,
"name": "oldOwnerIndex",
"nodeType": "VariableDeclaration",
"scope": 1383,
"src": "3441:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1333,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3441:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1336,
"name": "oldOwner",
"nodeType": "VariableDeclaration",
"scope": 1383,
"src": "3464:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1335,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3464:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1338,
"name": "newOwner",
"nodeType": "VariableDeclaration",
"scope": 1383,
"src": "3482:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1337,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3482:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3440:59:10"
},
"payable": false,
"returnParameters": {
"id": 1342,
"nodeType": "ParameterList",
"parameters": [],
"src": "3538:0:10"
},
"scope": 1438,
"src": "3419:501:10",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1407,
"nodeType": "Block",
"src": "4190:240:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1394,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1391,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1385,
"src": "4277:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1392,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "4291:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1393,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4291:13:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4277:27:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1390,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "4269:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1395,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4269:36:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1396,
"nodeType": "ExpressionStatement",
"src": "4269:36:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1400,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1398,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1385,
"src": "4375:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1399,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4389:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "4375:15:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1397,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "4367:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1401,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4367:24:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1402,
"nodeType": "ExpressionStatement",
"src": "4367:24:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1405,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1403,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [
1152
],
"referencedDeclaration": 1152,
"src": "4401:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1404,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1385,
"src": "4413:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4401:22:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1406,
"nodeType": "ExpressionStatement",
"src": "4401:22:10"
}
]
},
"documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.",
"id": 1408,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1388,
"modifierName": {
"argumentTypes": null,
"id": 1387,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1558,
"src": "4175:10:10",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "4175:10:10"
}
],
"name": "changeThreshold",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1386,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1385,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1408,
"src": "4134:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1384,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4134:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4133:18:10"
},
"payable": false,
"returnParameters": {
"id": 1389,
"nodeType": "ParameterList",
"parameters": [],
"src": "4190:0:10"
},
"scope": 1438,
"src": "4109:321:10",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1415,
"nodeType": "Block",
"src": "4513:33:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1413,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [
1152
],
"referencedDeclaration": 1152,
"src": "4530:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"functionReturnParameters": 1412,
"id": 1414,
"nodeType": "Return",
"src": "4523:16:10"
}
]
},
"documentation": null,
"id": 1416,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "threshold",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1409,
"nodeType": "ParameterList",
"parameters": [],
"src": "4454:2:10"
},
"payable": false,
"returnParameters": {
"id": 1412,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1411,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1416,
"src": "4502:5:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1410,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4502:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4501:7:10"
},
"scope": 1438,
"src": "4436:110:10",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1427,
"nodeType": "Block",
"src": "4639:38:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1423,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "4656:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1425,
"indexExpression": {
"argumentTypes": null,
"id": 1424,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1418,
"src": "4664:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4656:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 1422,
"id": 1426,
"nodeType": "Return",
"src": "4649:21:10"
}
]
},
"documentation": null,
"id": 1428,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "isOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1419,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1418,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1428,
"src": "4569:13:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1417,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4569:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4568:15:10"
},
"payable": false,
"returnParameters": {
"id": 1422,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1421,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1428,
"src": "4629:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1420,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4629:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4628:6:10"
},
"scope": 1438,
"src": "4552:125:10",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1436,
"nodeType": "Block",
"src": "4840:30:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1434,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "4857:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 1433,
"id": 1435,
"nodeType": "Return",
"src": "4850:13:10"
}
]
},
"documentation": "@dev Returns array of owners.\n @return Array of Safe owners.",
"id": 1437,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1429,
"nodeType": "ParameterList",
"parameters": [],
"src": "4777:2:10"
},
"payable": false,
"returnParameters": {
"id": 1433,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1432,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1437,
"src": "4825:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 1430,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4825:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1431,
"length": null,
"nodeType": "ArrayTypeName",
"src": "4825:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4824:11:10"
},
"scope": 1438,
"src": "4759:111:10",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1439,
"src": "240:4632:10"
}
],
"src": "0:4873:10"
},
"legacyAST": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol",
"exportedSymbols": {
"OwnerManager": [
1438
]
},
"id": 1439,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1144,
"literals": [
"solidity",
"0.4",
".23"
],
"nodeType": "PragmaDirective",
"src": "0:23:10"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol",
"file": "./SelfAuthorized.sol",
"id": 1145,
"nodeType": "ImportDirective",
"scope": 1439,
"sourceUnit": 1560,
"src": "24:30:10",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1146,
"name": "SelfAuthorized",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1559,
"src": "265:14:10",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SelfAuthorized_$1559",
"typeString": "contract SelfAuthorized"
}
},
"id": 1147,
"nodeType": "InheritanceSpecifier",
"src": "265:14:10"
}
],
"contractDependencies": [
1559
],
"contractKind": "contract",
"documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - <stefan@gnosis.pm>\n @author Richard Meissner - <richard@gnosis.pm>",
"fullyImplemented": true,
"id": 1438,
"linearizedBaseContracts": [
1438,
1559
],
"name": "OwnerManager",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"id": 1150,
"name": "owners",
"nodeType": "VariableDeclaration",
"scope": 1438,
"src": "287:23:10",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 1148,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "287:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1149,
"length": null,
"nodeType": "ArrayTypeName",
"src": "287:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1152,
"name": "threshold",
"nodeType": "VariableDeclaration",
"scope": 1438,
"src": "316:22:10",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1151,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "316:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1156,
"name": "isOwner",
"nodeType": "VariableDeclaration",
"scope": 1438,
"src": "415:40:10",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 1155,
"keyType": {
"id": 1153,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "424:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "415:25:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 1154,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "435:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 1229,
"nodeType": "Block",
"src": "730:767:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1167,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1165,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [
1152
],
"referencedDeclaration": 1152,
"src": "872:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1166,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "885:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "872:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1164,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "864:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1168,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "864:23:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1169,
"nodeType": "ExpressionStatement",
"src": "864:23:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1174,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1171,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1161,
"src": "980:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1172,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1159,
"src": "994:7:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1173,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "994:14:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "980:28:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1170,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "972:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1175,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "972:37:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1176,
"nodeType": "ExpressionStatement",
"src": "972:37:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1180,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1178,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1161,
"src": "1079:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1179,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1093:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "1079:15:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1177,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "1071:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1181,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1071:24:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1182,
"nodeType": "ExpressionStatement",
"src": "1071:24:10"
},
{
"body": {
"id": 1219,
"nodeType": "Block",
"src": "1187:246:10",
"statements": [
{
"assignments": [
1195
],
"declarations": [
{
"constant": false,
"id": 1195,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1230,
"src": "1246:13:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1194,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1246:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1199,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1196,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1159,
"src": "1262:7:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1198,
"indexExpression": {
"argumentTypes": null,
"id": 1197,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1184,
"src": "1270:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1262:10:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1246:26:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1203,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1201,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "1294:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1202,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1303:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1294:10:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1200,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "1286:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1204,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1286:19:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1205,
"nodeType": "ExpressionStatement",
"src": "1286:19:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1210,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "1371:15:10",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1207,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "1372:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1209,
"indexExpression": {
"argumentTypes": null,
"id": 1208,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "1380:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1372:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1206,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "1363:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1211,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1363:24:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1212,
"nodeType": "ExpressionStatement",
"src": "1363:24:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1217,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1213,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "1401:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1215,
"indexExpression": {
"argumentTypes": null,
"id": 1214,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "1409:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "1401:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1216,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1418:4:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "1401:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1218,
"nodeType": "ExpressionStatement",
"src": "1401:21:10"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1190,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1187,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1184,
"src": "1162:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1188,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1159,
"src": "1166:7:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1189,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1166:14:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1162:18:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1220,
"initializationExpression": {
"assignments": [
1184
],
"declarations": [
{
"constant": false,
"id": 1184,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1230,
"src": "1147:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1183,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1147:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1186,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1185,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1159:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "1147:13:10"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1192,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "1182:3:10",
"subExpression": {
"argumentTypes": null,
"id": 1191,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1184,
"src": "1182:1:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1193,
"nodeType": "ExpressionStatement",
"src": "1182:3:10"
},
"nodeType": "ForStatement",
"src": "1142:291:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1223,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1221,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "1442:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1222,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1159,
"src": "1451:7:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"src": "1442:16:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1224,
"nodeType": "ExpressionStatement",
"src": "1442:16:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1227,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1225,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [
1152
],
"referencedDeclaration": 1152,
"src": "1468:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1226,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1161,
"src": "1480:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "1468:22:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1228,
"nodeType": "ExpressionStatement",
"src": "1468:22:10"
}
]
},
"documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.",
"id": 1230,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setupOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1162,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1159,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 1230,
"src": "672:17:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 1157,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "672:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1158,
"length": null,
"nodeType": "ArrayTypeName",
"src": "672:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1161,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1230,
"src": "691:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1160,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "691:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "671:37:10"
},
"payable": false,
"returnParameters": {
"id": 1163,
"nodeType": "ParameterList",
"parameters": [],
"src": "730:0:10"
},
"scope": 1438,
"src": "651:846:10",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 1272,
"nodeType": "Block",
"src": "1826:342:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1242,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1240,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "1885:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1241,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1894:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1885:10:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1239,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "1877:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1877:19:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1244,
"nodeType": "ExpressionStatement",
"src": "1877:19:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1249,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "1954:15:10",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1246,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "1955:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1248,
"indexExpression": {
"argumentTypes": null,
"id": 1247,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "1963:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1955:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1245,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "1946:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1946:24:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1251,
"nodeType": "ExpressionStatement",
"src": "1946:24:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1255,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "1992:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 1252,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "1980:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1254,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1980:11:10",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) returns (uint256)"
}
},
"id": 1256,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1980:18:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1257,
"nodeType": "ExpressionStatement",
"src": "1980:18:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1262,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1258,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "2008:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1260,
"indexExpression": {
"argumentTypes": null,
"id": 1259,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "2016:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2008:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1261,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2025:4:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "2008:21:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1263,
"nodeType": "ExpressionStatement",
"src": "2008:21:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1266,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1264,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [
1152
],
"referencedDeclaration": 1152,
"src": "2097:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1265,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1234,
"src": "2110:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2097:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1271,
"nodeType": "IfStatement",
"src": "2093:68:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1268,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1234,
"src": "2150:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1267,
"name": "changeThreshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1408,
"src": "2134:15:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
"typeString": "function (uint8)"
}
},
"id": 1269,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2134:27:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1270,
"nodeType": "ExpressionStatement",
"src": "2134:27:10"
}
}
]
},
"documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.",
"id": 1273,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1237,
"modifierName": {
"argumentTypes": null,
"id": 1236,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1558,
"src": "1811:10:10",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "1811:10:10"
}
],
"name": "addOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1235,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1232,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1273,
"src": "1755:13:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1231,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1755:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1234,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1273,
"src": "1770:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1233,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1770:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1754:33:10"
},
"payable": false,
"returnParameters": {
"id": 1238,
"nodeType": "ParameterList",
"parameters": [],
"src": "1826:0:10"
},
"scope": 1438,
"src": "1737:431:10",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1331,
"nodeType": "Block",
"src": "2611:487:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1290,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1288,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1285,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "2706:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1286,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2706:13:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1287,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2722:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2706:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"id": 1289,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1279,
"src": "2727:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2706:31:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1284,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "2698:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1291,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2698:40:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1292,
"nodeType": "ExpressionStatement",
"src": "2698:40:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1298,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1294,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "2818:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1296,
"indexExpression": {
"argumentTypes": null,
"id": 1295,
"name": "ownerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1275,
"src": "2825:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2818:18:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1297,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1277,
"src": "2840:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2818:27:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1293,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "2810:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1299,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2810:36:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1300,
"nodeType": "ExpressionStatement",
"src": "2810:36:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1305,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1301,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "2856:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1303,
"indexExpression": {
"argumentTypes": null,
"id": 1302,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1277,
"src": "2864:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2856:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1304,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2873:5:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "2856:22:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1306,
"nodeType": "ExpressionStatement",
"src": "2856:22:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1316,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1307,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "2888:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1309,
"indexExpression": {
"argumentTypes": null,
"id": 1308,
"name": "ownerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1275,
"src": "2895:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2888:18:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1310,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "2909:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1315,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1311,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "2916:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1312,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2916:13:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1313,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2932:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2916:17:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2909:25:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2888:46:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1317,
"nodeType": "ExpressionStatement",
"src": "2888:46:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1321,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "--",
"prefix": false,
"src": "2944:15:10",
"subExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1318,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "2944:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1320,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2944:13:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1322,
"nodeType": "ExpressionStatement",
"src": "2944:15:10"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1325,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1323,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [
1152
],
"referencedDeclaration": 1152,
"src": "3027:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1324,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1279,
"src": "3040:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "3027:23:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1330,
"nodeType": "IfStatement",
"src": "3023:68:10",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1327,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1279,
"src": "3080:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1326,
"name": "changeThreshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1408,
"src": "3064:15:10",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
"typeString": "function (uint8)"
}
},
"id": 1328,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3064:27:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1329,
"nodeType": "ExpressionStatement",
"src": "3064:27:10"
}
}
]
},
"documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param ownerIndex Array index position of owner address to be removed.\n @param owner Owner address to be removed.\n @param _threshold New threshold.",
"id": 1332,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1282,
"modifierName": {
"argumentTypes": null,
"id": 1281,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1558,
"src": "2596:10:10",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2596:10:10"
}
],
"name": "removeOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1280,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1275,
"name": "ownerIndex",
"nodeType": "VariableDeclaration",
"scope": 1332,
"src": "2520:18:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1274,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2520:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1277,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1332,
"src": "2540:13:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1276,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2540:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1279,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1332,
"src": "2555:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1278,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2555:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2519:53:10"
},
"payable": false,
"returnParameters": {
"id": 1283,
"nodeType": "ParameterList",
"parameters": [],
"src": "2611:0:10"
},
"scope": 1438,
"src": "2499:599:10",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1382,
"nodeType": "Block",
"src": "3538:382:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1346,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1344,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1338,
"src": "3597:8:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1345,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3609:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3597:13:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1343,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "3589:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1347,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3589:22:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1348,
"nodeType": "ExpressionStatement",
"src": "3589:22:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1353,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "3669:18:10",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1350,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "3670:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1352,
"indexExpression": {
"argumentTypes": null,
"id": 1351,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1338,
"src": "3678:8:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3670:17:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1349,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "3661:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1354,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3661:27:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1355,
"nodeType": "ExpressionStatement",
"src": "3661:27:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1361,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1357,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "3768:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1359,
"indexExpression": {
"argumentTypes": null,
"id": 1358,
"name": "oldOwnerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1334,
"src": "3775:13:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3768:21:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1360,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1336,
"src": "3793:8:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3768:33:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1356,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "3760:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1362,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3760:42:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1363,
"nodeType": "ExpressionStatement",
"src": "3760:42:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1368,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1364,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "3812:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1366,
"indexExpression": {
"argumentTypes": null,
"id": 1365,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1336,
"src": "3820:8:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3812:17:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1367,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3832:5:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "3812:25:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1369,
"nodeType": "ExpressionStatement",
"src": "3812:25:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1374,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1370,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "3847:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1372,
"indexExpression": {
"argumentTypes": null,
"id": 1371,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1338,
"src": "3855:8:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3847:17:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1373,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3867:4:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "3847:24:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1375,
"nodeType": "ExpressionStatement",
"src": "3847:24:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1380,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1376,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "3881:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1378,
"indexExpression": {
"argumentTypes": null,
"id": 1377,
"name": "oldOwnerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1334,
"src": "3888:13:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3881:21:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1379,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1338,
"src": "3905:8:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3881:32:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1381,
"nodeType": "ExpressionStatement",
"src": "3881:32:10"
}
]
},
"documentation": "@dev Allows to replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param oldOwnerIndex Array index position of owner address to be replaced.\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.",
"id": 1383,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1341,
"modifierName": {
"argumentTypes": null,
"id": 1340,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1558,
"src": "3523:10:10",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3523:10:10"
}
],
"name": "replaceOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1339,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1334,
"name": "oldOwnerIndex",
"nodeType": "VariableDeclaration",
"scope": 1383,
"src": "3441:21:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1333,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3441:7:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1336,
"name": "oldOwner",
"nodeType": "VariableDeclaration",
"scope": 1383,
"src": "3464:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1335,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3464:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1338,
"name": "newOwner",
"nodeType": "VariableDeclaration",
"scope": 1383,
"src": "3482:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1337,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3482:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3440:59:10"
},
"payable": false,
"returnParameters": {
"id": 1342,
"nodeType": "ParameterList",
"parameters": [],
"src": "3538:0:10"
},
"scope": 1438,
"src": "3419:501:10",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1407,
"nodeType": "Block",
"src": "4190:240:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1394,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1391,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1385,
"src": "4277:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1392,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "4291:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1393,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4291:13:10",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4277:27:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1390,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "4269:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1395,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4269:36:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1396,
"nodeType": "ExpressionStatement",
"src": "4269:36:10"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1400,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1398,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1385,
"src": "4375:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1399,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4389:1:10",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "4375:15:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1397,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2468,
2469
],
"referencedDeclaration": 2468,
"src": "4367:7:10",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1401,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4367:24:10",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1402,
"nodeType": "ExpressionStatement",
"src": "4367:24:10"
},
{
"expression": {
"argumentTypes": null,
"id": 1405,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1403,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [
1152
],
"referencedDeclaration": 1152,
"src": "4401:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1404,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1385,
"src": "4413:10:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4401:22:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1406,
"nodeType": "ExpressionStatement",
"src": "4401:22:10"
}
]
},
"documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.",
"id": 1408,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1388,
"modifierName": {
"argumentTypes": null,
"id": 1387,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1558,
"src": "4175:10:10",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "4175:10:10"
}
],
"name": "changeThreshold",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1386,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1385,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1408,
"src": "4134:16:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1384,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4134:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4133:18:10"
},
"payable": false,
"returnParameters": {
"id": 1389,
"nodeType": "ParameterList",
"parameters": [],
"src": "4190:0:10"
},
"scope": 1438,
"src": "4109:321:10",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1415,
"nodeType": "Block",
"src": "4513:33:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1413,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [
1152
],
"referencedDeclaration": 1152,
"src": "4530:9:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"functionReturnParameters": 1412,
"id": 1414,
"nodeType": "Return",
"src": "4523:16:10"
}
]
},
"documentation": null,
"id": 1416,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "threshold",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1409,
"nodeType": "ParameterList",
"parameters": [],
"src": "4454:2:10"
},
"payable": false,
"returnParameters": {
"id": 1412,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1411,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1416,
"src": "4502:5:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1410,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4502:5:10",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4501:7:10"
},
"scope": 1438,
"src": "4436:110:10",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1427,
"nodeType": "Block",
"src": "4639:38:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1423,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [
1156
],
"referencedDeclaration": 1156,
"src": "4656:7:10",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1425,
"indexExpression": {
"argumentTypes": null,
"id": 1424,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1418,
"src": "4664:5:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4656:14:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 1422,
"id": 1426,
"nodeType": "Return",
"src": "4649:21:10"
}
]
},
"documentation": null,
"id": 1428,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "isOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1419,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1418,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1428,
"src": "4569:13:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1417,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4569:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4568:15:10"
},
"payable": false,
"returnParameters": {
"id": 1422,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1421,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1428,
"src": "4629:4:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1420,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4629:4:10",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4628:6:10"
},
"scope": 1438,
"src": "4552:125:10",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1436,
"nodeType": "Block",
"src": "4840:30:10",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1434,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1150,
"src": "4857:6:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 1433,
"id": 1435,
"nodeType": "Return",
"src": "4850:13:10"
}
]
},
"documentation": "@dev Returns array of owners.\n @return Array of Safe owners.",
"id": 1437,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1429,
"nodeType": "ParameterList",
"parameters": [],
"src": "4777:2:10"
},
"payable": false,
"returnParameters": {
"id": 1433,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1432,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1437,
"src": "4825:9:10",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 1430,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4825:7:10",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1431,
"length": null,
"nodeType": "ArrayTypeName",
"src": "4825:9:10",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4824:11:10"
},
"scope": 1438,
"src": "4759:111:10",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1439,
"src": "240:4632:10"
}
],
"src": "0:4873:10"
},
"compiler": {
"name": "solc",
"version": "0.4.23+commit.124ca40d.Emscripten.clang"
},
"networks": {},
"schemaVersion": "2.0.0",
"updatedAt": "2018-05-10T10:43:07.899Z"
}