{ "contractName": "OwnerManager", "abi": [ { "constant": true, "inputs": [], "name": "SENTINEL_OWNERS", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "owner", "type": "address" }, { "name": "_threshold", "type": "uint8" } ], "name": "addOwnerWithThreshold", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "prevOwner", "type": "address" }, { "name": "owner", "type": "address" }, { "name": "_threshold", "type": "uint8" } ], "name": "removeOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "prevOwner", "type": "address" }, { "name": "oldOwner", "type": "address" }, { "name": "newOwner", "type": "address" } ], "name": "swapOwner", "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": "getThreshold", "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": "0x608060405234801561001057600080fd5b50610efa806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820372e97755cf66d7d4dedc8cf9b71ad26a96c66a3db678bac90c5e04bea67c8ab0029", "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820372e97755cf66d7d4dedc8cf9b71ad26a96c66a3db678bac90c5e04bea67c8ab0029", "sourceMap": "240:5272:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:5272:7;;;;;;;", "deployedSourceMap": "240:5272:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:7;;;;;;;;;;;;;;;;;4398:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2776:573::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;5052:458::-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;4398:318::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3683:526::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::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 - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address public constant SENTINEL_OWNERS = address(0x1);\n\n mapping(address => address) internal owners;\n uint256 ownerCount;\n uint8 internal threshold;\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 address currentOwner = SENTINEL_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 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[currentOwner] = owner;\n currentOwner = owner;\n }\n owners[currentOwner] = SENTINEL_OWNERS;\n ownerCount = _owners.length;\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 addOwnerWithThreshold(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[owner] = owners[SENTINEL_OWNERS];\n owners[SENTINEL_OWNERS] = owner;\n ownerCount++;\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 prevOwner Owner that pointed to the owner to be removed in the linked list\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(address prevOwner, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(ownerCount - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == owner);\n owners[prevOwner] = owners[owner];\n owners[owner] = 0;\n ownerCount--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to swap/replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function swapOwner(address prevOwner, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0 && newOwner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[newOwner] == 0);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == oldOwner);\n owners[newOwner] = owners[oldOwner];\n owners[prevOwner] = newOwner;\n owners[oldOwner] = 0;\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 <= ownerCount);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function getThreshold()\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 owners[owner] != 0;\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 address[] memory array = new address[](ownerCount);\n\n // populate return array\n uint256 index = 0;\n address currentOwner = owners[SENTINEL_OWNERS];\n while(currentOwner != SENTINEL_OWNERS) {\n array[index] = currentOwner;\n currentOwner = owners[currentOwner];\n index ++;\n }\n return array;\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": [ 1343 ] }, "id": 1344, "nodeType": "SourceUnit", "nodes": [ { "id": 973, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", "src": "0:23:7" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", "id": 974, "nodeType": "ImportDirective", "scope": 1344, "sourceUnit": 1360, "src": "24:30:7", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 975, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1359, "src": "265:14:7", "typeDescriptions": { "typeIdentifier": "t_contract$_SelfAuthorized_$1359", "typeString": "contract SelfAuthorized" } }, "id": 976, "nodeType": "InheritanceSpecifier", "src": "265:14:7" } ], "contractDependencies": [ 1359 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, "id": 1343, "linearizedBaseContracts": [ 1343, 1359 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 981, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", "scope": 1343, "src": "287:54:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 977, "name": "address", "nodeType": "ElementaryTypeName", "src": "287:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "307831", "id": 979, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "337:3:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "0x1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "id": 978, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "329:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 980, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "329:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "public" }, { "constant": false, "id": 985, "name": "owners", "nodeType": "VariableDeclaration", "scope": 1343, "src": "348:43:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "typeName": { "id": 984, "keyType": { "id": 982, "name": "address", "nodeType": "ElementaryTypeName", "src": "356:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "348:27:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { "id": 983, "name": "address", "nodeType": "ElementaryTypeName", "src": "367:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 987, "name": "ownerCount", "nodeType": "VariableDeclaration", "scope": 1343, "src": "397:18:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 986, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "397:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 989, "name": "threshold", "nodeType": "VariableDeclaration", "scope": 1343, "src": "421:24:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 988, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "421:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "body": { "id": 1082, "nodeType": "Block", "src": "720:946:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1000, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 998, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "862:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 999, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "875:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "862:14:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 997, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "854:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1001, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "854:23:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1002, "nodeType": "ExpressionStatement", "src": "854:23:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1004, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "970:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1005, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 992, "src": "984:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "984:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "970:28:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1003, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "962:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1008, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "962:37:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1009, "nodeType": "ExpressionStatement", "src": "962:37:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1013, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1011, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "1069:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1012, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1083:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "1069:15:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1010, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "1061:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1061:24:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1015, "nodeType": "ExpressionStatement", "src": "1061:24:7" }, { "assignments": [ 1017 ], "declarations": [ { "constant": false, "id": 1017, "name": "currentOwner", "nodeType": "VariableDeclaration", "scope": 1083, "src": "1132:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1016, "name": "address", "nodeType": "ElementaryTypeName", "src": "1132:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1019, "initialValue": { "argumentTypes": null, "id": 1018, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "1155:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1132:38:7" }, { "body": { "id": 1065, "nodeType": "Block", "src": "1225:318:7", "statements": [ { "assignments": [ 1032 ], "declarations": [ { "constant": false, "id": 1032, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1083, "src": "1284:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1031, "name": "address", "nodeType": "ElementaryTypeName", "src": "1284:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1036, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1033, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 992, "src": "1300:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1035, "indexExpression": { "argumentTypes": null, "id": 1034, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "1308:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1300:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1284:26:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1040, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1038, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1332:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1039, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1341:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1332:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1041, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1346:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1042, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "1355:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1346:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1332:38:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1037, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "1324:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1045, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1324:47:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1046, "nodeType": "ExpressionStatement", "src": "1324:47:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1048, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "1437:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1050, "indexExpression": { "argumentTypes": null, "id": 1049, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1444:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1437:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1051, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1454:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1437:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1047, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "1429:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1053, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1429:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1054, "nodeType": "ExpressionStatement", "src": "1429:27:7" }, { "expression": { "argumentTypes": null, "id": 1059, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1055, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "1470:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1057, "indexExpression": { "argumentTypes": null, "id": 1056, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1017, "src": "1477:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1470:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1058, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1493:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1470:28:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1060, "nodeType": "ExpressionStatement", "src": "1470:28:7" }, { "expression": { "argumentTypes": null, "id": 1063, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1061, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1017, "src": "1512:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1062, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1527:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1512:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1064, "nodeType": "ExpressionStatement", "src": "1512:20:7" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1027, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1024, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "1200:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1025, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 992, "src": "1204:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1026, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1204:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1200:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1066, "initializationExpression": { "assignments": [ 1021 ], "declarations": [ { "constant": false, "id": 1021, "name": "i", "nodeType": "VariableDeclaration", "scope": 1083, "src": "1185:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1020, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1185:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1023, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1022, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1197:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "1185:13:7" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1220:3:7", "subExpression": { "argumentTypes": null, "id": 1028, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "1220:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1030, "nodeType": "ExpressionStatement", "src": "1220:3:7" }, "nodeType": "ForStatement", "src": "1180:363:7" }, { "expression": { "argumentTypes": null, "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1067, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "1552:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1069, "indexExpression": { "argumentTypes": null, "id": 1068, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1017, "src": "1559:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1552:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1070, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "1575:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1552:38:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1072, "nodeType": "ExpressionStatement", "src": "1552:38:7" }, { "expression": { "argumentTypes": null, "id": 1076, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1073, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 987, "src": "1600:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1074, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 992, "src": "1613:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1075, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1613:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1600:27:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1077, "nodeType": "ExpressionStatement", "src": "1600:27:7" }, { "expression": { "argumentTypes": null, "id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1078, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "1637:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1079, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "1649:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "1637:22:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1081, "nodeType": "ExpressionStatement", "src": "1637:22:7" } ] }, "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": 1083, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { "id": 995, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 992, "name": "_owners", "nodeType": "VariableDeclaration", "scope": 1083, "src": "662:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 990, "name": "address", "nodeType": "ElementaryTypeName", "src": "662:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 991, "length": null, "nodeType": "ArrayTypeName", "src": "662:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 994, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1083, "src": "681:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 993, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "681:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "661:37:7" }, "payable": false, "returnParameters": { "id": 996, "nodeType": "ParameterList", "parameters": [], "src": "720:0:7" }, "scope": 1343, "src": "641:1025:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1135, "nodeType": "Block", "src": "2008:426:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1095, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1093, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1085, "src": "2067:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1094, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2076:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2067:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1098, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1096, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1085, "src": "2081:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1097, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "2090:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2081:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2067:38:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1092, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2059:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2059:47:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1101, "nodeType": "ExpressionStatement", "src": "2059:47:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1103, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "2164:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1105, "indexExpression": { "argumentTypes": null, "id": 1104, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1085, "src": "2171:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2164:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2181:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2164:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1102, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2156:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2156:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1109, "nodeType": "ExpressionStatement", "src": "2156:27:7" }, { "expression": { "argumentTypes": null, "id": 1116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1110, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "2193:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1112, "indexExpression": { "argumentTypes": null, "id": 1111, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1085, "src": "2200:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2193:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1113, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "2209:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1115, "indexExpression": { "argumentTypes": null, "id": 1114, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "2216:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2209:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2193:39:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1117, "nodeType": "ExpressionStatement", "src": "2193:39:7" }, { "expression": { "argumentTypes": null, "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1118, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "2242:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1120, "indexExpression": { "argumentTypes": null, "id": 1119, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "2249:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2242:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1121, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1085, "src": "2268:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2242:31:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1123, "nodeType": "ExpressionStatement", "src": "2242:31:7" }, { "expression": { "argumentTypes": null, "id": 1125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2283:12:7", "subExpression": { "argumentTypes": null, "id": 1124, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 987, "src": "2283:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1126, "nodeType": "ExpressionStatement", "src": "2283:12:7" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1127, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "2363:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1128, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1087, "src": "2376:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2363:23:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1134, "nodeType": "IfStatement", "src": "2359:68:7", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1131, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1087, "src": "2416:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1130, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1271, "src": "2400:15:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2400:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1133, "nodeType": "ExpressionStatement", "src": "2400:27:7" } } ] }, "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": 1136, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1090, "modifierName": { "argumentTypes": null, "id": 1089, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "1993:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "1993:10:7" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1088, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1085, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1136, "src": "1937:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1084, "name": "address", "nodeType": "ElementaryTypeName", "src": "1937:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1087, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1136, "src": "1952:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1086, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1952:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1936:33:7" }, "payable": false, "returnParameters": { "id": 1091, "nodeType": "ParameterList", "parameters": [], "src": "2008:0:7" }, "scope": 1343, "src": "1906:528:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1188, "nodeType": "Block", "src": "2887:462:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1150, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1148, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 987, "src": "2982:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1149, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2995:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2982:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 1151, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1142, "src": "3000:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2982:28:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1147, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2974:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2974:37:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1154, "nodeType": "ExpressionStatement", "src": "2974:37:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1156, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "3091:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1158, "indexExpression": { "argumentTypes": null, "id": 1157, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3098:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3091:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1159, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1140, "src": "3112:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3091:26:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1155, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "3083:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1161, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3083:35:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1162, "nodeType": "ExpressionStatement", "src": "3083:35:7" }, { "expression": { "argumentTypes": null, "id": 1169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1163, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "3128:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1165, "indexExpression": { "argumentTypes": null, "id": 1164, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3135:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3128:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1166, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "3148:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1168, "indexExpression": { "argumentTypes": null, "id": 1167, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1140, "src": "3155:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3148:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3128:33:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1170, "nodeType": "ExpressionStatement", "src": "3128:33:7" }, { "expression": { "argumentTypes": null, "id": 1175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1171, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "3171:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1173, "indexExpression": { "argumentTypes": null, "id": 1172, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1140, "src": "3178:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3171:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1174, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3187:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3171:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1176, "nodeType": "ExpressionStatement", "src": "3171:17:7" }, { "expression": { "argumentTypes": null, "id": 1178, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "3198:12:7", "subExpression": { "argumentTypes": null, "id": 1177, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 987, "src": "3198:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1179, "nodeType": "ExpressionStatement", "src": "3198:12:7" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1180, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "3278:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1181, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1142, "src": "3291:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "3278:23:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1187, "nodeType": "IfStatement", "src": "3274:68:7", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1184, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1142, "src": "3331:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1183, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1271, "src": "3315:15:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, "id": 1185, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3315:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1186, "nodeType": "ExpressionStatement", "src": "3315:27:7" } } ] }, "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 prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.", "id": 1189, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1145, "modifierName": { "argumentTypes": null, "id": 1144, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "2872:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2872:10:7" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1143, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1138, "name": "prevOwner", "nodeType": "VariableDeclaration", "scope": 1189, "src": "2797:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1137, "name": "address", "nodeType": "ElementaryTypeName", "src": "2797:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1140, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1189, "src": "2816:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1139, "name": "address", "nodeType": "ElementaryTypeName", "src": "2816:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1142, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1189, "src": "2831:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1141, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2831:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "2796:52:7" }, "payable": false, "returnParameters": { "id": 1146, "nodeType": "ParameterList", "parameters": [], "src": "2887:0:7" }, "scope": 1343, "src": "2776:573:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1246, "nodeType": "Block", "src": "3795:414:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1207, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1201, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "3854:8:7", "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": "3866:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3854:13:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1204, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "3871:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1205, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "3883:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3871:27:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3854:44:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1200, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "3846:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3846:53:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1209, "nodeType": "ExpressionStatement", "src": "3846:53:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1211, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "3957:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1213, "indexExpression": { "argumentTypes": null, "id": 1212, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "3964:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3957:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3977:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3957:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1210, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "3949:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3949:30:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1217, "nodeType": "ExpressionStatement", "src": "3949:30:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1219, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4059:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1221, "indexExpression": { "argumentTypes": null, "id": 1220, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1191, "src": "4066:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4059:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1222, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1193, "src": "4080:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4059:29:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1218, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "4051:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1224, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4051:38:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1225, "nodeType": "ExpressionStatement", "src": "4051:38:7" }, { "expression": { "argumentTypes": null, "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1226, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4099:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1228, "indexExpression": { "argumentTypes": null, "id": 1227, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "4106:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4099:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1229, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4118:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1231, "indexExpression": { "argumentTypes": null, "id": 1230, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1193, "src": "4125:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4118:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4099:35:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1233, "nodeType": "ExpressionStatement", "src": "4099:35:7" }, { "expression": { "argumentTypes": null, "id": 1238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1234, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4144:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1236, "indexExpression": { "argumentTypes": null, "id": 1235, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1191, "src": "4151:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4144:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1237, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "4164:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4144:28:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1239, "nodeType": "ExpressionStatement", "src": "4144:28:7" }, { "expression": { "argumentTypes": null, "id": 1244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1240, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4182:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1242, "indexExpression": { "argumentTypes": null, "id": 1241, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1193, "src": "4189:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4182:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4201:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4182:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1245, "nodeType": "ExpressionStatement", "src": "4182:20:7" } ] }, "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", "id": 1247, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1198, "modifierName": { "argumentTypes": null, "id": 1197, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "3780:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3780:10:7" } ], "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1196, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1191, "name": "prevOwner", "nodeType": "VariableDeclaration", "scope": 1247, "src": "3702:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1190, "name": "address", "nodeType": "ElementaryTypeName", "src": "3702:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1193, "name": "oldOwner", "nodeType": "VariableDeclaration", "scope": 1247, "src": "3721:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1192, "name": "address", "nodeType": "ElementaryTypeName", "src": "3721:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1195, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 1247, "src": "3739:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1194, "name": "address", "nodeType": "ElementaryTypeName", "src": "3739:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "3701:55:7" }, "payable": false, "returnParameters": { "id": 1199, "nodeType": "ParameterList", "parameters": [], "src": "3795:0:7" }, "scope": 1343, "src": "3683:526:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1270, "nodeType": "Block", "src": "4479:237:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1255, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1249, "src": "4566:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 1256, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 987, "src": "4580:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4566:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1254, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "4558:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4558:33:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1259, "nodeType": "ExpressionStatement", "src": "4558:33:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1261, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1249, "src": "4661:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4675:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "4661:15:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1260, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "4653:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4653:24:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1265, "nodeType": "ExpressionStatement", "src": "4653:24:7" }, { "expression": { "argumentTypes": null, "id": 1268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1266, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "4687:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1267, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1249, "src": "4699:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4687:22:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1269, "nodeType": "ExpressionStatement", "src": "4687:22:7" } ] }, "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": 1271, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1252, "modifierName": { "argumentTypes": null, "id": 1251, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4464:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4464:10:7" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1250, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1249, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1271, "src": "4423:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1248, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4423:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "4422:18:7" }, "payable": false, "returnParameters": { "id": 1253, "nodeType": "ParameterList", "parameters": [], "src": "4479:0:7" }, "scope": 1343, "src": "4398:318:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1278, "nodeType": "Block", "src": "4802:33:7", "statements": [ { "expression": { "argumentTypes": null, "id": 1276, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "4819:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "functionReturnParameters": 1275, "id": 1277, "nodeType": "Return", "src": "4812:16:7" } ] }, "documentation": null, "id": 1279, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1272, "nodeType": "ParameterList", "parameters": [], "src": "4743:2:7" }, "payable": false, "returnParameters": { "id": 1275, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1274, "name": "", "nodeType": "VariableDeclaration", "scope": 1279, "src": "4791:5:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1273, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4791:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "4790:7:7" }, "scope": 1343, "src": "4722:113:7", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1292, "nodeType": "Block", "src": "4928:42:7", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1286, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4945:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1288, "indexExpression": { "argumentTypes": null, "id": 1287, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1281, "src": "4952:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4945:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1289, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4962:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4945:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1285, "id": 1291, "nodeType": "Return", "src": "4938:25:7" } ] }, "documentation": null, "id": 1293, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1282, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1281, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1293, "src": "4858:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1280, "name": "address", "nodeType": "ElementaryTypeName", "src": "4858:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "4857:15:7" }, "payable": false, "returnParameters": { "id": 1285, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1284, "name": "", "nodeType": "VariableDeclaration", "scope": 1293, "src": "4918:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1283, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4918:4:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4917:6:7" }, "scope": 1343, "src": "4841:129:7", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1341, "nodeType": "Block", "src": "5133:377:7", "statements": [ { "assignments": [ 1302 ], "declarations": [ { "constant": false, "id": 1302, "name": "array", "nodeType": "VariableDeclaration", "scope": 1342, "src": "5143:22:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1300, "name": "address", "nodeType": "ElementaryTypeName", "src": "5143:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1301, "length": null, "nodeType": "ArrayTypeName", "src": "5143:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "id": 1308, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1306, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 987, "src": "5182:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1305, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "5168:13:7", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { "id": 1303, "name": "address", "nodeType": "ElementaryTypeName", "src": "5172:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1304, "length": null, "nodeType": "ArrayTypeName", "src": "5172:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5168:25:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "5143:50:7" }, { "assignments": [ 1310 ], "declarations": [ { "constant": false, "id": 1310, "name": "index", "nodeType": "VariableDeclaration", "scope": 1342, "src": "5237:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1309, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5237:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1312, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1311, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5253:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "5237:17:7" }, { "assignments": [ 1314 ], "declarations": [ { "constant": false, "id": 1314, "name": "currentOwner", "nodeType": "VariableDeclaration", "scope": 1342, "src": "5264:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1313, "name": "address", "nodeType": "ElementaryTypeName", "src": "5264:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1318, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1315, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "5287:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1317, "indexExpression": { "argumentTypes": null, "id": 1316, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "5294:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5287:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "5264:46:7" }, { "body": { "id": 1337, "nodeType": "Block", "src": "5359:123:7", "statements": [ { "expression": { "argumentTypes": null, "id": 1326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1322, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "5373:5:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1324, "indexExpression": { "argumentTypes": null, "id": 1323, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1310, "src": "5379:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5373:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1325, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1314, "src": "5388:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "5373:27:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1327, "nodeType": "ExpressionStatement", "src": "5373:27:7" }, { "expression": { "argumentTypes": null, "id": 1332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1328, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1314, "src": "5414:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1329, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "5429:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1331, "indexExpression": { "argumentTypes": null, "id": 1330, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1314, "src": "5436:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5429:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "5414:35:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1333, "nodeType": "ExpressionStatement", "src": "5414:35:7" }, { "expression": { "argumentTypes": null, "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "5463:8:7", "subExpression": { "argumentTypes": null, "id": 1334, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1310, "src": "5463:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1336, "nodeType": "ExpressionStatement", "src": "5463:8:7" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1319, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1314, "src": "5326:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1320, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "5342:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "5326:31:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1338, "nodeType": "WhileStatement", "src": "5320:162:7" }, { "expression": { "argumentTypes": null, "id": 1339, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "5498:5:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "functionReturnParameters": 1298, "id": 1340, "nodeType": "Return", "src": "5491:12:7" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", "id": 1342, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { "id": 1294, "nodeType": "ParameterList", "parameters": [], "src": "5070:2:7" }, "payable": false, "returnParameters": { "id": 1298, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1297, "name": "", "nodeType": "VariableDeclaration", "scope": 1342, "src": "5118:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1295, "name": "address", "nodeType": "ElementaryTypeName", "src": "5118:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1296, "length": null, "nodeType": "ArrayTypeName", "src": "5118:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "5117:11:7" }, "scope": 1343, "src": "5052:458:7", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 1344, "src": "240:5272:7" } ], "src": "0:5513:7" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ 1343 ] }, "id": 1344, "nodeType": "SourceUnit", "nodes": [ { "id": 973, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", "src": "0:23:7" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", "id": 974, "nodeType": "ImportDirective", "scope": 1344, "sourceUnit": 1360, "src": "24:30:7", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 975, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1359, "src": "265:14:7", "typeDescriptions": { "typeIdentifier": "t_contract$_SelfAuthorized_$1359", "typeString": "contract SelfAuthorized" } }, "id": 976, "nodeType": "InheritanceSpecifier", "src": "265:14:7" } ], "contractDependencies": [ 1359 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, "id": 1343, "linearizedBaseContracts": [ 1343, 1359 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 981, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", "scope": 1343, "src": "287:54:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 977, "name": "address", "nodeType": "ElementaryTypeName", "src": "287:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "307831", "id": 979, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "337:3:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "0x1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "id": 978, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "329:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 980, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "329:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "public" }, { "constant": false, "id": 985, "name": "owners", "nodeType": "VariableDeclaration", "scope": 1343, "src": "348:43:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "typeName": { "id": 984, "keyType": { "id": 982, "name": "address", "nodeType": "ElementaryTypeName", "src": "356:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "348:27:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { "id": 983, "name": "address", "nodeType": "ElementaryTypeName", "src": "367:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 987, "name": "ownerCount", "nodeType": "VariableDeclaration", "scope": 1343, "src": "397:18:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 986, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "397:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 989, "name": "threshold", "nodeType": "VariableDeclaration", "scope": 1343, "src": "421:24:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 988, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "421:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "body": { "id": 1082, "nodeType": "Block", "src": "720:946:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1000, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 998, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "862:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 999, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "875:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "862:14:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 997, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "854:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1001, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "854:23:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1002, "nodeType": "ExpressionStatement", "src": "854:23:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1004, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "970:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1005, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 992, "src": "984:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "984:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "970:28:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1003, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "962:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1008, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "962:37:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1009, "nodeType": "ExpressionStatement", "src": "962:37:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1013, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1011, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "1069:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1012, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1083:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "1069:15:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1010, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "1061:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1061:24:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1015, "nodeType": "ExpressionStatement", "src": "1061:24:7" }, { "assignments": [ 1017 ], "declarations": [ { "constant": false, "id": 1017, "name": "currentOwner", "nodeType": "VariableDeclaration", "scope": 1083, "src": "1132:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1016, "name": "address", "nodeType": "ElementaryTypeName", "src": "1132:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1019, "initialValue": { "argumentTypes": null, "id": 1018, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "1155:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1132:38:7" }, { "body": { "id": 1065, "nodeType": "Block", "src": "1225:318:7", "statements": [ { "assignments": [ 1032 ], "declarations": [ { "constant": false, "id": 1032, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1083, "src": "1284:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1031, "name": "address", "nodeType": "ElementaryTypeName", "src": "1284:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1036, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1033, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 992, "src": "1300:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1035, "indexExpression": { "argumentTypes": null, "id": 1034, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "1308:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1300:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1284:26:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1040, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1038, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1332:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1039, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1341:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1332:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1041, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1346:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1042, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "1355:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1346:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1332:38:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1037, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "1324:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1045, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1324:47:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1046, "nodeType": "ExpressionStatement", "src": "1324:47:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1048, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "1437:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1050, "indexExpression": { "argumentTypes": null, "id": 1049, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1444:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1437:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1051, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1454:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1437:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1047, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "1429:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1053, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1429:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1054, "nodeType": "ExpressionStatement", "src": "1429:27:7" }, { "expression": { "argumentTypes": null, "id": 1059, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1055, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "1470:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1057, "indexExpression": { "argumentTypes": null, "id": 1056, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1017, "src": "1477:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1470:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1058, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1493:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1470:28:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1060, "nodeType": "ExpressionStatement", "src": "1470:28:7" }, { "expression": { "argumentTypes": null, "id": 1063, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1061, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1017, "src": "1512:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1062, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1527:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1512:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1064, "nodeType": "ExpressionStatement", "src": "1512:20:7" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1027, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1024, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "1200:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1025, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 992, "src": "1204:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1026, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1204:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1200:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1066, "initializationExpression": { "assignments": [ 1021 ], "declarations": [ { "constant": false, "id": 1021, "name": "i", "nodeType": "VariableDeclaration", "scope": 1083, "src": "1185:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1020, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1185:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1023, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1022, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1197:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "1185:13:7" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1220:3:7", "subExpression": { "argumentTypes": null, "id": 1028, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "1220:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1030, "nodeType": "ExpressionStatement", "src": "1220:3:7" }, "nodeType": "ForStatement", "src": "1180:363:7" }, { "expression": { "argumentTypes": null, "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1067, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "1552:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1069, "indexExpression": { "argumentTypes": null, "id": 1068, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1017, "src": "1559:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1552:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1070, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "1575:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1552:38:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1072, "nodeType": "ExpressionStatement", "src": "1552:38:7" }, { "expression": { "argumentTypes": null, "id": 1076, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1073, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 987, "src": "1600:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1074, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 992, "src": "1613:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1075, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1613:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1600:27:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1077, "nodeType": "ExpressionStatement", "src": "1600:27:7" }, { "expression": { "argumentTypes": null, "id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1078, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "1637:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1079, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 994, "src": "1649:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "1637:22:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1081, "nodeType": "ExpressionStatement", "src": "1637:22:7" } ] }, "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": 1083, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { "id": 995, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 992, "name": "_owners", "nodeType": "VariableDeclaration", "scope": 1083, "src": "662:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 990, "name": "address", "nodeType": "ElementaryTypeName", "src": "662:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 991, "length": null, "nodeType": "ArrayTypeName", "src": "662:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 994, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1083, "src": "681:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 993, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "681:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "661:37:7" }, "payable": false, "returnParameters": { "id": 996, "nodeType": "ParameterList", "parameters": [], "src": "720:0:7" }, "scope": 1343, "src": "641:1025:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1135, "nodeType": "Block", "src": "2008:426:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1095, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1093, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1085, "src": "2067:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1094, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2076:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2067:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1098, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1096, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1085, "src": "2081:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1097, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "2090:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2081:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2067:38:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1092, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2059:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2059:47:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1101, "nodeType": "ExpressionStatement", "src": "2059:47:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1103, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "2164:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1105, "indexExpression": { "argumentTypes": null, "id": 1104, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1085, "src": "2171:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2164:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2181:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2164:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1102, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2156:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2156:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1109, "nodeType": "ExpressionStatement", "src": "2156:27:7" }, { "expression": { "argumentTypes": null, "id": 1116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1110, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "2193:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1112, "indexExpression": { "argumentTypes": null, "id": 1111, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1085, "src": "2200:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2193:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1113, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "2209:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1115, "indexExpression": { "argumentTypes": null, "id": 1114, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "2216:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2209:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2193:39:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1117, "nodeType": "ExpressionStatement", "src": "2193:39:7" }, { "expression": { "argumentTypes": null, "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1118, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "2242:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1120, "indexExpression": { "argumentTypes": null, "id": 1119, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "2249:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2242:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1121, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1085, "src": "2268:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2242:31:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1123, "nodeType": "ExpressionStatement", "src": "2242:31:7" }, { "expression": { "argumentTypes": null, "id": 1125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2283:12:7", "subExpression": { "argumentTypes": null, "id": 1124, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 987, "src": "2283:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1126, "nodeType": "ExpressionStatement", "src": "2283:12:7" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1127, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "2363:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1128, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1087, "src": "2376:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2363:23:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1134, "nodeType": "IfStatement", "src": "2359:68:7", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1131, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1087, "src": "2416:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1130, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1271, "src": "2400:15:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2400:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1133, "nodeType": "ExpressionStatement", "src": "2400:27:7" } } ] }, "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": 1136, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1090, "modifierName": { "argumentTypes": null, "id": 1089, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "1993:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "1993:10:7" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1088, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1085, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1136, "src": "1937:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1084, "name": "address", "nodeType": "ElementaryTypeName", "src": "1937:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1087, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1136, "src": "1952:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1086, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1952:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1936:33:7" }, "payable": false, "returnParameters": { "id": 1091, "nodeType": "ParameterList", "parameters": [], "src": "2008:0:7" }, "scope": 1343, "src": "1906:528:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1188, "nodeType": "Block", "src": "2887:462:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1150, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1148, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 987, "src": "2982:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1149, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2995:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2982:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 1151, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1142, "src": "3000:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2982:28:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1147, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2974:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2974:37:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1154, "nodeType": "ExpressionStatement", "src": "2974:37:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1156, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "3091:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1158, "indexExpression": { "argumentTypes": null, "id": 1157, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3098:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3091:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1159, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1140, "src": "3112:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3091:26:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1155, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "3083:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1161, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3083:35:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1162, "nodeType": "ExpressionStatement", "src": "3083:35:7" }, { "expression": { "argumentTypes": null, "id": 1169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1163, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "3128:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1165, "indexExpression": { "argumentTypes": null, "id": 1164, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1138, "src": "3135:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3128:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1166, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "3148:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1168, "indexExpression": { "argumentTypes": null, "id": 1167, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1140, "src": "3155:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3148:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3128:33:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1170, "nodeType": "ExpressionStatement", "src": "3128:33:7" }, { "expression": { "argumentTypes": null, "id": 1175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1171, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "3171:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1173, "indexExpression": { "argumentTypes": null, "id": 1172, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1140, "src": "3178:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3171:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1174, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3187:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3171:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1176, "nodeType": "ExpressionStatement", "src": "3171:17:7" }, { "expression": { "argumentTypes": null, "id": 1178, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "3198:12:7", "subExpression": { "argumentTypes": null, "id": 1177, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 987, "src": "3198:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1179, "nodeType": "ExpressionStatement", "src": "3198:12:7" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1180, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "3278:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1181, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1142, "src": "3291:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "3278:23:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1187, "nodeType": "IfStatement", "src": "3274:68:7", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1184, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1142, "src": "3331:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1183, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1271, "src": "3315:15:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, "id": 1185, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3315:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1186, "nodeType": "ExpressionStatement", "src": "3315:27:7" } } ] }, "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 prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.", "id": 1189, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1145, "modifierName": { "argumentTypes": null, "id": 1144, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "2872:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2872:10:7" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1143, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1138, "name": "prevOwner", "nodeType": "VariableDeclaration", "scope": 1189, "src": "2797:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1137, "name": "address", "nodeType": "ElementaryTypeName", "src": "2797:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1140, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1189, "src": "2816:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1139, "name": "address", "nodeType": "ElementaryTypeName", "src": "2816:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1142, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1189, "src": "2831:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1141, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2831:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "2796:52:7" }, "payable": false, "returnParameters": { "id": 1146, "nodeType": "ParameterList", "parameters": [], "src": "2887:0:7" }, "scope": 1343, "src": "2776:573:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1246, "nodeType": "Block", "src": "3795:414:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1207, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1201, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "3854:8:7", "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": "3866:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3854:13:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1204, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "3871:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1205, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "3883:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3871:27:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3854:44:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1200, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "3846:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3846:53:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1209, "nodeType": "ExpressionStatement", "src": "3846:53:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1211, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "3957:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1213, "indexExpression": { "argumentTypes": null, "id": 1212, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "3964:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3957:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3977:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3957:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1210, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "3949:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3949:30:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1217, "nodeType": "ExpressionStatement", "src": "3949:30:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1219, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4059:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1221, "indexExpression": { "argumentTypes": null, "id": 1220, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1191, "src": "4066:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4059:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1222, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1193, "src": "4080:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4059:29:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1218, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "4051:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1224, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4051:38:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1225, "nodeType": "ExpressionStatement", "src": "4051:38:7" }, { "expression": { "argumentTypes": null, "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1226, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4099:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1228, "indexExpression": { "argumentTypes": null, "id": 1227, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "4106:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4099:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1229, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4118:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1231, "indexExpression": { "argumentTypes": null, "id": 1230, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1193, "src": "4125:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4118:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4099:35:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1233, "nodeType": "ExpressionStatement", "src": "4099:35:7" }, { "expression": { "argumentTypes": null, "id": 1238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1234, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4144:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1236, "indexExpression": { "argumentTypes": null, "id": 1235, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1191, "src": "4151:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4144:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1237, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1195, "src": "4164:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4144:28:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1239, "nodeType": "ExpressionStatement", "src": "4144:28:7" }, { "expression": { "argumentTypes": null, "id": 1244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1240, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4182:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1242, "indexExpression": { "argumentTypes": null, "id": 1241, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1193, "src": "4189:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4182:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4201:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4182:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1245, "nodeType": "ExpressionStatement", "src": "4182:20:7" } ] }, "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", "id": 1247, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1198, "modifierName": { "argumentTypes": null, "id": 1197, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "3780:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3780:10:7" } ], "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1196, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1191, "name": "prevOwner", "nodeType": "VariableDeclaration", "scope": 1247, "src": "3702:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1190, "name": "address", "nodeType": "ElementaryTypeName", "src": "3702:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1193, "name": "oldOwner", "nodeType": "VariableDeclaration", "scope": 1247, "src": "3721:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1192, "name": "address", "nodeType": "ElementaryTypeName", "src": "3721:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1195, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 1247, "src": "3739:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1194, "name": "address", "nodeType": "ElementaryTypeName", "src": "3739:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "3701:55:7" }, "payable": false, "returnParameters": { "id": 1199, "nodeType": "ParameterList", "parameters": [], "src": "3795:0:7" }, "scope": 1343, "src": "3683:526:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1270, "nodeType": "Block", "src": "4479:237:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1255, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1249, "src": "4566:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 1256, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 987, "src": "4580:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4566:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1254, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "4558:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4558:33:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1259, "nodeType": "ExpressionStatement", "src": "4558:33:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1261, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1249, "src": "4661:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4675:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "4661:15:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1260, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "4653:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4653:24:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1265, "nodeType": "ExpressionStatement", "src": "4653:24:7" }, { "expression": { "argumentTypes": null, "id": 1268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1266, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "4687:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1267, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1249, "src": "4699:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4687:22:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1269, "nodeType": "ExpressionStatement", "src": "4687:22:7" } ] }, "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": 1271, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1252, "modifierName": { "argumentTypes": null, "id": 1251, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4464:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4464:10:7" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1250, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1249, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1271, "src": "4423:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1248, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4423:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "4422:18:7" }, "payable": false, "returnParameters": { "id": 1253, "nodeType": "ParameterList", "parameters": [], "src": "4479:0:7" }, "scope": 1343, "src": "4398:318:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1278, "nodeType": "Block", "src": "4802:33:7", "statements": [ { "expression": { "argumentTypes": null, "id": 1276, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "4819:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "functionReturnParameters": 1275, "id": 1277, "nodeType": "Return", "src": "4812:16:7" } ] }, "documentation": null, "id": 1279, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1272, "nodeType": "ParameterList", "parameters": [], "src": "4743:2:7" }, "payable": false, "returnParameters": { "id": 1275, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1274, "name": "", "nodeType": "VariableDeclaration", "scope": 1279, "src": "4791:5:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1273, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4791:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "4790:7:7" }, "scope": 1343, "src": "4722:113:7", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1292, "nodeType": "Block", "src": "4928:42:7", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1286, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4945:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1288, "indexExpression": { "argumentTypes": null, "id": 1287, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1281, "src": "4952:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4945:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1289, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4962:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4945:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1285, "id": 1291, "nodeType": "Return", "src": "4938:25:7" } ] }, "documentation": null, "id": 1293, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1282, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1281, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1293, "src": "4858:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1280, "name": "address", "nodeType": "ElementaryTypeName", "src": "4858:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "4857:15:7" }, "payable": false, "returnParameters": { "id": 1285, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1284, "name": "", "nodeType": "VariableDeclaration", "scope": 1293, "src": "4918:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1283, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4918:4:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4917:6:7" }, "scope": 1343, "src": "4841:129:7", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1341, "nodeType": "Block", "src": "5133:377:7", "statements": [ { "assignments": [ 1302 ], "declarations": [ { "constant": false, "id": 1302, "name": "array", "nodeType": "VariableDeclaration", "scope": 1342, "src": "5143:22:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1300, "name": "address", "nodeType": "ElementaryTypeName", "src": "5143:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1301, "length": null, "nodeType": "ArrayTypeName", "src": "5143:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "id": 1308, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1306, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 987, "src": "5182:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1305, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "5168:13:7", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { "id": 1303, "name": "address", "nodeType": "ElementaryTypeName", "src": "5172:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1304, "length": null, "nodeType": "ArrayTypeName", "src": "5172:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5168:25:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "5143:50:7" }, { "assignments": [ 1310 ], "declarations": [ { "constant": false, "id": 1310, "name": "index", "nodeType": "VariableDeclaration", "scope": 1342, "src": "5237:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1309, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5237:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1312, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1311, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5253:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "5237:17:7" }, { "assignments": [ 1314 ], "declarations": [ { "constant": false, "id": 1314, "name": "currentOwner", "nodeType": "VariableDeclaration", "scope": 1342, "src": "5264:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1313, "name": "address", "nodeType": "ElementaryTypeName", "src": "5264:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1318, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1315, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "5287:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1317, "indexExpression": { "argumentTypes": null, "id": 1316, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "5294:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5287:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "5264:46:7" }, { "body": { "id": 1337, "nodeType": "Block", "src": "5359:123:7", "statements": [ { "expression": { "argumentTypes": null, "id": 1326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1322, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "5373:5:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1324, "indexExpression": { "argumentTypes": null, "id": 1323, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1310, "src": "5379:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5373:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1325, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1314, "src": "5388:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "5373:27:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1327, "nodeType": "ExpressionStatement", "src": "5373:27:7" }, { "expression": { "argumentTypes": null, "id": 1332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1328, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1314, "src": "5414:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1329, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "5429:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1331, "indexExpression": { "argumentTypes": null, "id": 1330, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1314, "src": "5436:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5429:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "5414:35:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1333, "nodeType": "ExpressionStatement", "src": "5414:35:7" }, { "expression": { "argumentTypes": null, "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "5463:8:7", "subExpression": { "argumentTypes": null, "id": 1334, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1310, "src": "5463:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1336, "nodeType": "ExpressionStatement", "src": "5463:8:7" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1319, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1314, "src": "5326:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1320, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 981, "src": "5342:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "5326:31:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1338, "nodeType": "WhileStatement", "src": "5320:162:7" }, { "expression": { "argumentTypes": null, "id": 1339, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1302, "src": "5498:5:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "functionReturnParameters": 1298, "id": 1340, "nodeType": "Return", "src": "5491:12:7" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", "id": 1342, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { "id": 1294, "nodeType": "ParameterList", "parameters": [], "src": "5070:2:7" }, "payable": false, "returnParameters": { "id": 1298, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1297, "name": "", "nodeType": "VariableDeclaration", "scope": 1342, "src": "5118:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1295, "name": "address", "nodeType": "ElementaryTypeName", "src": "5118:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1296, "length": null, "nodeType": "ArrayTypeName", "src": "5118:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "5117:11:7" }, "scope": 1343, "src": "5052:458:7", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 1344, "src": "240:5272:7" } ], "src": "0:5513:7" }, "compiler": { "name": "solc", "version": "0.4.23+commit.124ca40d.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", "updatedAt": "2018-05-16T10:51:14.752Z" }