{ "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": "0x608060405234801561001057600080fd5b506116f7806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b506101736108bc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca6108c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff169060200190929190505050610a5a565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610c75565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061107a565b005b34801561033057600080fd5b506103396116c1565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff16600180540310151515610544576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156105985750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610733576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff166002541415156108b7576108b681610a5a565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156108f85781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610a51578083838151811015156109a757fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610962565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001548160ff1611151515610bc6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff1610151515610c68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660028190555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610d925750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610e06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ef2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff166002541415156110765761107581610a5a565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111975750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156112f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801561134b5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60006002549050905600a165627a7a72305820ab89c9f36885e8fc69145ea0fcbca9fe59b42935c3b4603105f10c7cdb27e0680029", "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b506101736108bc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca6108c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff169060200190929190505050610a5a565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610c75565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061107a565b005b34801561033057600080fd5b506103396116c1565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff16600180540310151515610544576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156105985750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610733576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff166002541415156108b7576108b681610a5a565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156108f85781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610a51578083838151811015156109a757fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610962565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001548160ff1611151515610bc6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff1610151515610c68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660028190555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610d925750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610e06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ef2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff166002541415156110765761107581610a5a565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111975750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156112f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801561134b5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60006002549050905600a165627a7a72305820ab89c9f36885e8fc69145ea0fcbca9fe59b42935c3b4603105f10c7cdb27e0680029", "sourceMap": "240:6041:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:6041:7;;;;;;;", "deployedSourceMap": "240:6041:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5610:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5610:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3026:781;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3026:781:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;5821:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5821: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;5821:458:7;;;;;;;;;;;;;;;;;5081:397;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5081:397:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:593;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2091:593:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4141:751;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4141:751:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5484:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5484:120:7;;;;;;;;;;;;;;;;;;;;;;;;;;;5610:129;5687:4;5731:1;5714:6;:13;5721:5;5714:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5707:25;;5610:129;;;:::o;3026:781::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3250:10:7;3232:28;;3245:1;3232:10;;:14;:28;;3224:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3425:1;3416:5;:10;;;;:38;;;;;337:3;3430:24;;:5;:24;;;;3416:38;3408:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3528:5;3507:26;;:6;:17;3514:9;3507:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3499:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3606:6;:13;3613:5;3606:13;;;;;;;;;;;;;;;;;;;;;;;;;3586:6;:17;3593:9;3586:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3645:1;3629:6;:13;3636:5;3629:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3656:10;;:12;;;;;;;;;;;;;;3749:10;3736:23;;:9;;:23;;3732:68;;;3773:27;3789:10;3773:15;:27::i;:::-;3732:68;3026:781;;;:::o;287:54::-;337:3;287:54;:::o;5821:458::-;5887:9;5912:22;6006:13;6033:20;5951:10;;5937: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;5937:25:7;;;;5912:50;;6022:1;6006:17;;6056:6;:23;337:3;6056:23;;;;;;;;;;;;;;;;;;;;;;;;;6033:46;;6089:162;337:3;6095:31;;:12;:31;;;;6089:162;;;6157:12;6142:5;6148;6142:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;6198:6;:20;6205:12;6198:20;;;;;;;;;;;;;;;;;;;;;;;;;6183:35;;6232:8;;;;;;;6089:162;;;6267:5;6260:12;;5821:458;;;;:::o;5081:397::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5263:10:7;;5249;:24;;;;5241:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5397:1;5383:10;:15;;;;5375:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5461:10;5449:22;;:9;:22;;;;5081:397;:::o;2091:593::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2261:1:7;2252:5;:10;;;;:38;;;;;337:3;2266:24;;:5;:24;;;;2252:38;2244:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:1;2383:6;:13;2390:5;2383:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2375:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:6;:23;337:3;2459:23;;;;;;;;;;;;;;;;;;;;;;;;;2443:6;:13;2450:5;2443:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2518:5;2492:6;:23;337:3;2492:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2533:10;;:12;;;;;;;;;;;;;2626:10;2613:23;;:9;;:23;;2609:68;;;2650:27;2666:10;2650:15;:27::i;:::-;2609:68;2091:593;;:::o;4141:751::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4324:1:7;4312:8;:13;;;;:44;;;;;337:3;4329:27;;:8;:27;;;;4312:44;4304:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4469:1;4449:6;:16;4456:8;4449:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4441:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4615:1;4603:8;:13;;;;:44;;;;;337:3;4620:27;;:8;:27;;;;4603:44;4595:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4721:8;4700:29;;:6;:17;4707:9;4700:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4692:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4801:6;:16;4808:8;4801:16;;;;;;;;;;;;;;;;;;;;;;;;;4782:6;:16;4789:8;4782:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4847:8;4827:6;:17;4834:9;4827:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4884:1;4865:6;:16;4872:8;4865:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4141:751;;;:::o;5484:120::-;5553:5;5587:9;;5574:23;;5484:120;:::o", "source": "pragma solidity 0.4.24;\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 uint256 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, \"Owners have already been setup\");\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length, \"Threshold cannot exceed owner count\");\n // There has to be at least one Safe owner.\n require(_threshold >= 1, \"Threshold needs to be greater than 0\");\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, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[owner] == 0, \"Duplicate owner address provided\");\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, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[owner] == 0, \"Address is already an owner\");\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, \"New owner count needs to be larger than new threshold\");\n // Validate owner address and check that it corresponds to owner index.\n require(owner != 0 && owner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n require(owners[prevOwner] == owner, \"Invalid prevOwner, owner pair provided\");\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, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[newOwner] == 0, \"Address is already an owner\");\n // Validate oldOwner address and check that it corresponds to owner index.\n require(oldOwner != 0 && oldOwner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n require(owners[prevOwner] == oldOwner, \"Invalid prevOwner, owner pair provided\");\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, \"Threshold cannot exceed owner count\");\n // There has to be at least one Safe owner.\n require(_threshold >= 1, \"Threshold needs to be greater than 0\");\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint8)\n {\n return uint8(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": [ 1432 ] }, "id": 1433, "nodeType": "SourceUnit", "nodes": [ { "id": 1024, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", "src": "0:23:7" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", "id": 1025, "nodeType": "ImportDirective", "scope": 1433, "sourceUnit": 1450, "src": "24:30:7", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1026, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1449, "src": "265:14:7", "typeDescriptions": { "typeIdentifier": "t_contract$_SelfAuthorized_$1449", "typeString": "contract SelfAuthorized" } }, "id": 1027, "nodeType": "InheritanceSpecifier", "src": "265:14:7" } ], "contractDependencies": [ 1449 ], "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": 1432, "linearizedBaseContracts": [ 1432, 1449 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 1032, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", "scope": 1432, "src": "287:54:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1028, "name": "address", "nodeType": "ElementaryTypeName", "src": "287:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "307831", "id": 1030, "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": 1029, "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": 1031, "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": 1036, "name": "owners", "nodeType": "VariableDeclaration", "scope": 1432, "src": "348:43:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "typeName": { "id": 1035, "keyType": { "id": 1033, "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": 1034, "name": "address", "nodeType": "ElementaryTypeName", "src": "367:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1038, "name": "ownerCount", "nodeType": "VariableDeclaration", "scope": 1432, "src": "397:18:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1037, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "397:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1040, "name": "threshold", "nodeType": "VariableDeclaration", "scope": 1432, "src": "421:26:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1039, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "421:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "body": { "id": 1138, "nodeType": "Block", "src": "722:1129:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1051, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1049, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1040, "src": "864:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1050, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "877:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "864:14:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4f776e657273206861766520616c7265616479206265656e207365747570", "id": 1052, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "880:32:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", "typeString": "literal_string \"Owners have already been setup\"" }, "value": "Owners have already been setup" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", "typeString": "literal_string \"Owners have already been setup\"" } ], "id": 1048, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "856:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1053, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "856:57:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1054, "nodeType": "ExpressionStatement", "src": "856:57:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1059, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1056, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1045, "src": "1006:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1057, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "1020:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1058, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1020:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1006:28:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", "id": 1060, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1036:37:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", "typeString": "literal_string \"Threshold cannot exceed owner count\"" }, "value": "Threshold cannot exceed owner count" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], "id": 1055, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "998:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1061, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "998:76:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1062, "nodeType": "ExpressionStatement", "src": "998:76:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1066, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1064, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1045, "src": "1144:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1065, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1158:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "1144:15:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", "id": 1067, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1161:38:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", "typeString": "literal_string \"Threshold needs to be greater than 0\"" }, "value": "Threshold needs to be greater than 0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], "id": 1063, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "1136:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1136:64:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1069, "nodeType": "ExpressionStatement", "src": "1136:64:7" }, { "assignments": [ 1071 ], "declarations": [ { "constant": false, "id": 1071, "name": "currentOwner", "nodeType": "VariableDeclaration", "scope": 1139, "src": "1247:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1070, "name": "address", "nodeType": "ElementaryTypeName", "src": "1247:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1073, "initialValue": { "argumentTypes": null, "id": 1072, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1270:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1247:38:7" }, { "body": { "id": 1121, "nodeType": "Block", "src": "1340:388:7", "statements": [ { "assignments": [ 1086 ], "declarations": [ { "constant": false, "id": 1086, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1139, "src": "1399:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1085, "name": "address", "nodeType": "ElementaryTypeName", "src": "1399:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1090, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1087, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "1415:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1089, "indexExpression": { "argumentTypes": null, "id": 1088, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1075, "src": "1423:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1415:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1399:26:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1098, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1094, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1092, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "1447:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1093, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1456:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1447:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1097, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1095, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "1461:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1096, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1470:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1461:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1447:38:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", "id": 1099, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1487:32:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" }, "value": "Invalid owner address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" } ], "id": 1091, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "1439:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1439:81:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1101, "nodeType": "ExpressionStatement", "src": "1439:81: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": 1036, "src": "1586: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": 1086, "src": "1593:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1586: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": "1603:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1586:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4475706c6963617465206f776e657220616464726573732070726f7669646564", "id": 1108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1606:34:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", "typeString": "literal_string \"Duplicate owner address provided\"" }, "value": "Duplicate owner address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", "typeString": "literal_string \"Duplicate owner address provided\"" } ], "id": 1102, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "1578:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1578:63:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1110, "nodeType": "ExpressionStatement", "src": "1578:63:7" }, { "expression": { "argumentTypes": null, "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1111, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "1655:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1113, "indexExpression": { "argumentTypes": null, "id": 1112, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1071, "src": "1662:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1655:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1114, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "1678:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1655:28:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1116, "nodeType": "ExpressionStatement", "src": "1655:28:7" }, { "expression": { "argumentTypes": null, "id": 1119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1117, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1071, "src": "1697:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1118, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "1712:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1697:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1120, "nodeType": "ExpressionStatement", "src": "1697:20:7" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1081, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1078, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1075, "src": "1315:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1079, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "1319:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1319:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1315:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1122, "initializationExpression": { "assignments": [ 1075 ], "declarations": [ { "constant": false, "id": 1075, "name": "i", "nodeType": "VariableDeclaration", "scope": 1139, "src": "1300:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1074, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1300:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1077, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1076, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1312:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "1300:13:7" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1083, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1335:3:7", "subExpression": { "argumentTypes": null, "id": 1082, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1075, "src": "1335:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1084, "nodeType": "ExpressionStatement", "src": "1335:3:7" }, "nodeType": "ForStatement", "src": "1295:433:7" }, { "expression": { "argumentTypes": null, "id": 1127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1123, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "1737:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1125, "indexExpression": { "argumentTypes": null, "id": 1124, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1071, "src": "1744:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1737:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1126, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1760:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1737:38:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1128, "nodeType": "ExpressionStatement", "src": "1737:38:7" }, { "expression": { "argumentTypes": null, "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1129, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1038, "src": "1785:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1130, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "1798:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1798:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1785:27:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1133, "nodeType": "ExpressionStatement", "src": "1785:27:7" }, { "expression": { "argumentTypes": null, "id": 1136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1134, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1040, "src": "1822:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1135, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1045, "src": "1834:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "1822:22:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1137, "nodeType": "ExpressionStatement", "src": "1822: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": 1139, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { "id": 1046, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1043, "name": "_owners", "nodeType": "VariableDeclaration", "scope": 1139, "src": "664:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1041, "name": "address", "nodeType": "ElementaryTypeName", "src": "664:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1042, "length": null, "nodeType": "ArrayTypeName", "src": "664:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1045, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1139, "src": "683:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1044, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "683:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "663:37:7" }, "payable": false, "returnParameters": { "id": 1047, "nodeType": "ParameterList", "parameters": [], "src": "722:0:7" }, "scope": 1432, "src": "643:1208:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1193, "nodeType": "Block", "src": "2193:491:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1151, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1149, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "2252:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1150, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2261:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2252:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1152, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "2266:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1153, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "2275:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2266:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2252:38:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", "id": 1156, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2292:32:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" }, "value": "Invalid owner address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" } ], "id": 1148, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "2244:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1157, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2244:81:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1158, "nodeType": "ExpressionStatement", "src": "2244:81:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1160, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "2383:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1162, "indexExpression": { "argumentTypes": null, "id": 1161, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "2390:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2383:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1163, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2400:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2383:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", "id": 1165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2403:29:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", "typeString": "literal_string \"Address is already an owner\"" }, "value": "Address is already an owner" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", "typeString": "literal_string \"Address is already an owner\"" } ], "id": 1159, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "2375:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2375:58:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1167, "nodeType": "ExpressionStatement", "src": "2375:58:7" }, { "expression": { "argumentTypes": null, "id": 1174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1168, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "2443:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1170, "indexExpression": { "argumentTypes": null, "id": 1169, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "2450:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2443:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1171, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "2459:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1173, "indexExpression": { "argumentTypes": null, "id": 1172, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "2466:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2459:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2443:39:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1175, "nodeType": "ExpressionStatement", "src": "2443:39:7" }, { "expression": { "argumentTypes": null, "id": 1180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1176, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "2492:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1178, "indexExpression": { "argumentTypes": null, "id": 1177, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "2499:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2492:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1179, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "2518:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2492:31:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1181, "nodeType": "ExpressionStatement", "src": "2492:31:7" }, { "expression": { "argumentTypes": null, "id": 1183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2533:12:7", "subExpression": { "argumentTypes": null, "id": 1182, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1038, "src": "2533:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1184, "nodeType": "ExpressionStatement", "src": "2533:12:7" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1185, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1040, "src": "2613:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1186, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1143, "src": "2626:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2613:23:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1192, "nodeType": "IfStatement", "src": "2609:68:7", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1189, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1143, "src": "2666:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1188, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "2650:15:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, "id": 1190, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2650:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1191, "nodeType": "ExpressionStatement", "src": "2650: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": 1194, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1146, "modifierName": { "argumentTypes": null, "id": 1145, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1448, "src": "2178:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2178:10:7" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1144, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1141, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1194, "src": "2122:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1140, "name": "address", "nodeType": "ElementaryTypeName", "src": "2122:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1143, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1194, "src": "2137:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1142, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2137:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "2121:33:7" }, "payable": false, "returnParameters": { "id": 1147, "nodeType": "ParameterList", "parameters": [], "src": "2193:0:7" }, "scope": 1432, "src": "2091:593:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1259, "nodeType": "Block", "src": "3137:670:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1206, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1038, "src": "3232:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1207, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3245:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3232:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 1209, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "3250:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "3232:28:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4e6577206f776e657220636f756e74206e6565647320746f206265206c6172676572207468616e206e6577207468726573686f6c64", "id": 1211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3262:55:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" }, "value": "New owner count needs to be larger than new threshold" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" } ], "id": 1205, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "3224:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1212, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3224:94:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1213, "nodeType": "ExpressionStatement", "src": "3224:94:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1215, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1198, "src": "3416:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1216, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3425:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3416:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1218, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1198, "src": "3430:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1219, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "3439:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3430:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3416:38:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", "id": 1222, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3456:32:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" }, "value": "Invalid owner address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" } ], "id": 1214, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "3408:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3408:81:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1224, "nodeType": "ExpressionStatement", "src": "3408:81:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1226, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "3507:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1228, "indexExpression": { "argumentTypes": null, "id": 1227, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1196, "src": "3514:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3507:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1229, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1198, "src": "3528:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3507:26:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", "id": 1231, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3535:40:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" }, "value": "Invalid prevOwner, owner pair provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], "id": 1225, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "3499:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3499:77:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1233, "nodeType": "ExpressionStatement", "src": "3499:77:7" }, { "expression": { "argumentTypes": null, "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1234, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "3586: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": 1196, "src": "3593:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3586:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1237, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "3606:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1239, "indexExpression": { "argumentTypes": null, "id": 1238, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1198, "src": "3613:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3606:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3586:33:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1241, "nodeType": "ExpressionStatement", "src": "3586:33:7" }, { "expression": { "argumentTypes": null, "id": 1246, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1242, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "3629:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1244, "indexExpression": { "argumentTypes": null, "id": 1243, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1198, "src": "3636:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3629:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1245, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3645:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3629:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1247, "nodeType": "ExpressionStatement", "src": "3629:17:7" }, { "expression": { "argumentTypes": null, "id": 1249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "3656:12:7", "subExpression": { "argumentTypes": null, "id": 1248, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1038, "src": "3656:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1250, "nodeType": "ExpressionStatement", "src": "3656:12:7" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1251, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1040, "src": "3736:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1252, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "3749:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "3736:23:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1258, "nodeType": "IfStatement", "src": "3732:68:7", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1255, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "3789:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1254, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "3773:15:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, "id": 1256, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3773:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1257, "nodeType": "ExpressionStatement", "src": "3773: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": 1260, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1203, "modifierName": { "argumentTypes": null, "id": 1202, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1448, "src": "3122:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3122:10:7" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1201, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1196, "name": "prevOwner", "nodeType": "VariableDeclaration", "scope": 1260, "src": "3047:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1195, "name": "address", "nodeType": "ElementaryTypeName", "src": "3047:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1198, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1260, "src": "3066:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1197, "name": "address", "nodeType": "ElementaryTypeName", "src": "3066:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1200, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1260, "src": "3081:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1199, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3081:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "3046:52:7" }, "payable": false, "returnParameters": { "id": 1204, "nodeType": "ParameterList", "parameters": [], "src": "3137:0:7" }, "scope": 1432, "src": "3026:781:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1331, "nodeType": "Block", "src": "4253:639:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1272, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "4312:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1273, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4324:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4312:13:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1275, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "4329:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1276, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "4341:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4329:27:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "4312:44:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", "id": 1279, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4358:32:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" }, "value": "Invalid owner address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" } ], "id": 1271, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "4304:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1280, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4304:87:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1281, "nodeType": "ExpressionStatement", "src": "4304:87:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1283, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4449:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1285, "indexExpression": { "argumentTypes": null, "id": 1284, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "4456:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4449:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1286, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4469:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4449:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", "id": 1288, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4472:29:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", "typeString": "literal_string \"Address is already an owner\"" }, "value": "Address is already an owner" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", "typeString": "literal_string \"Address is already an owner\"" } ], "id": 1282, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "4441:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1289, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4441:61:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1290, "nodeType": "ExpressionStatement", "src": "4441:61:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1292, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1264, "src": "4603:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4615:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4603:13:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1295, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1264, "src": "4620:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1296, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "4632:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4620:27:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "4603:44:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", "id": 1299, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4649:32:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" }, "value": "Invalid owner address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" } ], "id": 1291, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "4595:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1300, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4595:87:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1301, "nodeType": "ExpressionStatement", "src": "4595:87:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1303, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4700:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1305, "indexExpression": { "argumentTypes": null, "id": 1304, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1262, "src": "4707:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4700:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1306, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1264, "src": "4721:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4700:29:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", "id": 1308, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4731:40:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" }, "value": "Invalid prevOwner, owner pair provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], "id": 1302, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "4692:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1309, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4692:80:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1310, "nodeType": "ExpressionStatement", "src": "4692:80:7" }, { "expression": { "argumentTypes": null, "id": 1317, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1311, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4782:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1313, "indexExpression": { "argumentTypes": null, "id": 1312, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "4789:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4782:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1314, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4801:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1316, "indexExpression": { "argumentTypes": null, "id": 1315, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1264, "src": "4808:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4801:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4782:35:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1318, "nodeType": "ExpressionStatement", "src": "4782:35:7" }, { "expression": { "argumentTypes": null, "id": 1323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1319, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4827:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1321, "indexExpression": { "argumentTypes": null, "id": 1320, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1262, "src": "4834:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4827:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1322, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "4847:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4827:28:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1324, "nodeType": "ExpressionStatement", "src": "4827:28:7" }, { "expression": { "argumentTypes": null, "id": 1329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1325, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4865:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1327, "indexExpression": { "argumentTypes": null, "id": 1326, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1264, "src": "4872:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4865:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4884:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4865:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1330, "nodeType": "ExpressionStatement", "src": "4865: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": 1332, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1269, "modifierName": { "argumentTypes": null, "id": 1268, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1448, "src": "4238:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4238:10:7" } ], "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1267, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1262, "name": "prevOwner", "nodeType": "VariableDeclaration", "scope": 1332, "src": "4160:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1261, "name": "address", "nodeType": "ElementaryTypeName", "src": "4160:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1264, "name": "oldOwner", "nodeType": "VariableDeclaration", "scope": 1332, "src": "4179:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1263, "name": "address", "nodeType": "ElementaryTypeName", "src": "4179:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1266, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 1332, "src": "4197:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1265, "name": "address", "nodeType": "ElementaryTypeName", "src": "4197:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "4159:55:7" }, "payable": false, "returnParameters": { "id": 1270, "nodeType": "ParameterList", "parameters": [], "src": "4253:0:7" }, "scope": 1432, "src": "4141:751:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1357, "nodeType": "Block", "src": "5162:316:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1340, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1334, "src": "5249:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 1341, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1038, "src": "5263:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5249:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", "id": 1343, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5275:37:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", "typeString": "literal_string \"Threshold cannot exceed owner count\"" }, "value": "Threshold cannot exceed owner count" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], "id": 1339, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "5241:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1344, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5241:72:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1345, "nodeType": "ExpressionStatement", "src": "5241:72:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1347, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1334, "src": "5383:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5397:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "5383:15:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", "id": 1350, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5400:38:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", "typeString": "literal_string \"Threshold needs to be greater than 0\"" }, "value": "Threshold needs to be greater than 0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], "id": 1346, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "5375:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1351, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5375:64:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1352, "nodeType": "ExpressionStatement", "src": "5375:64:7" }, { "expression": { "argumentTypes": null, "id": 1355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1353, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1040, "src": "5449:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1354, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1334, "src": "5461:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5449:22:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1356, "nodeType": "ExpressionStatement", "src": "5449: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": 1358, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1337, "modifierName": { "argumentTypes": null, "id": 1336, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1448, "src": "5147:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "5147:10:7" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1335, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1334, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1358, "src": "5106:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1333, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5106:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "5105:18:7" }, "payable": false, "returnParameters": { "id": 1338, "nodeType": "ParameterList", "parameters": [], "src": "5162:0:7" }, "scope": 1432, "src": "5081:397:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1367, "nodeType": "Block", "src": "5564:40:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1364, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1040, "src": "5587:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1363, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5581:5:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)" }, "typeName": "uint8" }, "id": 1365, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5581:16:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "functionReturnParameters": 1362, "id": 1366, "nodeType": "Return", "src": "5574:23:7" } ] }, "documentation": null, "id": 1368, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1359, "nodeType": "ParameterList", "parameters": [], "src": "5505:2:7" }, "payable": false, "returnParameters": { "id": 1362, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1361, "name": "", "nodeType": "VariableDeclaration", "scope": 1368, "src": "5553:5:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1360, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5553:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "5552:7:7" }, "scope": 1432, "src": "5484:120:7", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1381, "nodeType": "Block", "src": "5697:42:7", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1375, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "5714:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1377, "indexExpression": { "argumentTypes": null, "id": 1376, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1370, "src": "5721:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5714:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1378, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5731:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "5714:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1374, "id": 1380, "nodeType": "Return", "src": "5707:25:7" } ] }, "documentation": null, "id": 1382, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1371, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1370, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1382, "src": "5627:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1369, "name": "address", "nodeType": "ElementaryTypeName", "src": "5627:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "5626:15:7" }, "payable": false, "returnParameters": { "id": 1374, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1373, "name": "", "nodeType": "VariableDeclaration", "scope": 1382, "src": "5687:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1372, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5687:4:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "5686:6:7" }, "scope": 1432, "src": "5610:129:7", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1430, "nodeType": "Block", "src": "5902:377:7", "statements": [ { "assignments": [ 1391 ], "declarations": [ { "constant": false, "id": 1391, "name": "array", "nodeType": "VariableDeclaration", "scope": 1431, "src": "5912:22:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1389, "name": "address", "nodeType": "ElementaryTypeName", "src": "5912:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1390, "length": null, "nodeType": "ArrayTypeName", "src": "5912:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "id": 1397, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1395, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1038, "src": "5951:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1394, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "5937: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": 1392, "name": "address", "nodeType": "ElementaryTypeName", "src": "5941:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1393, "length": null, "nodeType": "ArrayTypeName", "src": "5941:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, "id": 1396, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5937:25:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "5912:50:7" }, { "assignments": [ 1399 ], "declarations": [ { "constant": false, "id": 1399, "name": "index", "nodeType": "VariableDeclaration", "scope": 1431, "src": "6006:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1398, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6006:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1401, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1400, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6022:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "6006:17:7" }, { "assignments": [ 1403 ], "declarations": [ { "constant": false, "id": 1403, "name": "currentOwner", "nodeType": "VariableDeclaration", "scope": 1431, "src": "6033:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1402, "name": "address", "nodeType": "ElementaryTypeName", "src": "6033:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1407, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1404, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "6056:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1406, "indexExpression": { "argumentTypes": null, "id": 1405, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "6063:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6056:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6033:46:7" }, { "body": { "id": 1426, "nodeType": "Block", "src": "6128:123:7", "statements": [ { "expression": { "argumentTypes": null, "id": 1415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1411, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1391, "src": "6142:5:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1413, "indexExpression": { "argumentTypes": null, "id": 1412, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1399, "src": "6148:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6142:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1414, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1403, "src": "6157:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6142:27:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1416, "nodeType": "ExpressionStatement", "src": "6142:27:7" }, { "expression": { "argumentTypes": null, "id": 1421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1417, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1403, "src": "6183:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1418, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "6198:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1420, "indexExpression": { "argumentTypes": null, "id": 1419, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1403, "src": "6205:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6198:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6183:35:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1422, "nodeType": "ExpressionStatement", "src": "6183:35:7" }, { "expression": { "argumentTypes": null, "id": 1424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "6232:8:7", "subExpression": { "argumentTypes": null, "id": 1423, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1399, "src": "6232:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1425, "nodeType": "ExpressionStatement", "src": "6232:8:7" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1410, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1408, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1403, "src": "6095:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1409, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "6111:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6095:31:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1427, "nodeType": "WhileStatement", "src": "6089:162:7" }, { "expression": { "argumentTypes": null, "id": 1428, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1391, "src": "6267:5:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "functionReturnParameters": 1387, "id": 1429, "nodeType": "Return", "src": "6260:12:7" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", "id": 1431, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { "id": 1383, "nodeType": "ParameterList", "parameters": [], "src": "5839:2:7" }, "payable": false, "returnParameters": { "id": 1387, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1386, "name": "", "nodeType": "VariableDeclaration", "scope": 1431, "src": "5887:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1384, "name": "address", "nodeType": "ElementaryTypeName", "src": "5887:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1385, "length": null, "nodeType": "ArrayTypeName", "src": "5887:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "5886:11:7" }, "scope": 1432, "src": "5821:458:7", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 1433, "src": "240:6041:7" } ], "src": "0:6282:7" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ 1432 ] }, "id": 1433, "nodeType": "SourceUnit", "nodes": [ { "id": 1024, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", "src": "0:23:7" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", "id": 1025, "nodeType": "ImportDirective", "scope": 1433, "sourceUnit": 1450, "src": "24:30:7", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1026, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1449, "src": "265:14:7", "typeDescriptions": { "typeIdentifier": "t_contract$_SelfAuthorized_$1449", "typeString": "contract SelfAuthorized" } }, "id": 1027, "nodeType": "InheritanceSpecifier", "src": "265:14:7" } ], "contractDependencies": [ 1449 ], "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": 1432, "linearizedBaseContracts": [ 1432, 1449 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 1032, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", "scope": 1432, "src": "287:54:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1028, "name": "address", "nodeType": "ElementaryTypeName", "src": "287:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "307831", "id": 1030, "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": 1029, "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": 1031, "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": 1036, "name": "owners", "nodeType": "VariableDeclaration", "scope": 1432, "src": "348:43:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "typeName": { "id": 1035, "keyType": { "id": 1033, "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": 1034, "name": "address", "nodeType": "ElementaryTypeName", "src": "367:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1038, "name": "ownerCount", "nodeType": "VariableDeclaration", "scope": 1432, "src": "397:18:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1037, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "397:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1040, "name": "threshold", "nodeType": "VariableDeclaration", "scope": 1432, "src": "421:26:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1039, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "421:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "body": { "id": 1138, "nodeType": "Block", "src": "722:1129:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1051, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1049, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1040, "src": "864:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1050, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "877:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "864:14:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4f776e657273206861766520616c7265616479206265656e207365747570", "id": 1052, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "880:32:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", "typeString": "literal_string \"Owners have already been setup\"" }, "value": "Owners have already been setup" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", "typeString": "literal_string \"Owners have already been setup\"" } ], "id": 1048, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "856:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1053, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "856:57:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1054, "nodeType": "ExpressionStatement", "src": "856:57:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1059, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1056, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1045, "src": "1006:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1057, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "1020:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1058, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1020:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1006:28:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", "id": 1060, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1036:37:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", "typeString": "literal_string \"Threshold cannot exceed owner count\"" }, "value": "Threshold cannot exceed owner count" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], "id": 1055, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "998:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1061, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "998:76:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1062, "nodeType": "ExpressionStatement", "src": "998:76:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1066, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1064, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1045, "src": "1144:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1065, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1158:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "1144:15:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", "id": 1067, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1161:38:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", "typeString": "literal_string \"Threshold needs to be greater than 0\"" }, "value": "Threshold needs to be greater than 0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], "id": 1063, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "1136:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1136:64:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1069, "nodeType": "ExpressionStatement", "src": "1136:64:7" }, { "assignments": [ 1071 ], "declarations": [ { "constant": false, "id": 1071, "name": "currentOwner", "nodeType": "VariableDeclaration", "scope": 1139, "src": "1247:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1070, "name": "address", "nodeType": "ElementaryTypeName", "src": "1247:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1073, "initialValue": { "argumentTypes": null, "id": 1072, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1270:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1247:38:7" }, { "body": { "id": 1121, "nodeType": "Block", "src": "1340:388:7", "statements": [ { "assignments": [ 1086 ], "declarations": [ { "constant": false, "id": 1086, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1139, "src": "1399:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1085, "name": "address", "nodeType": "ElementaryTypeName", "src": "1399:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1090, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1087, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "1415:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1089, "indexExpression": { "argumentTypes": null, "id": 1088, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1075, "src": "1423:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1415:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1399:26:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1098, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1094, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1092, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "1447:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1093, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1456:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1447:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1097, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1095, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "1461:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1096, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1470:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1461:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1447:38:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", "id": 1099, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1487:32:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" }, "value": "Invalid owner address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" } ], "id": 1091, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "1439:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1439:81:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1101, "nodeType": "ExpressionStatement", "src": "1439:81: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": 1036, "src": "1586: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": 1086, "src": "1593:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1586: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": "1603:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1586:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4475706c6963617465206f776e657220616464726573732070726f7669646564", "id": 1108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1606:34:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", "typeString": "literal_string \"Duplicate owner address provided\"" }, "value": "Duplicate owner address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", "typeString": "literal_string \"Duplicate owner address provided\"" } ], "id": 1102, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "1578:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1578:63:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1110, "nodeType": "ExpressionStatement", "src": "1578:63:7" }, { "expression": { "argumentTypes": null, "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1111, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "1655:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1113, "indexExpression": { "argumentTypes": null, "id": 1112, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1071, "src": "1662:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1655:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1114, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "1678:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1655:28:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1116, "nodeType": "ExpressionStatement", "src": "1655:28:7" }, { "expression": { "argumentTypes": null, "id": 1119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1117, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1071, "src": "1697:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1118, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "1712:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1697:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1120, "nodeType": "ExpressionStatement", "src": "1697:20:7" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1081, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1078, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1075, "src": "1315:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1079, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "1319:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1319:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1315:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1122, "initializationExpression": { "assignments": [ 1075 ], "declarations": [ { "constant": false, "id": 1075, "name": "i", "nodeType": "VariableDeclaration", "scope": 1139, "src": "1300:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1074, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1300:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1077, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1076, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1312:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "1300:13:7" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1083, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1335:3:7", "subExpression": { "argumentTypes": null, "id": 1082, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1075, "src": "1335:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1084, "nodeType": "ExpressionStatement", "src": "1335:3:7" }, "nodeType": "ForStatement", "src": "1295:433:7" }, { "expression": { "argumentTypes": null, "id": 1127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1123, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "1737:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1125, "indexExpression": { "argumentTypes": null, "id": 1124, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1071, "src": "1744:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1737:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1126, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "1760:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1737:38:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1128, "nodeType": "ExpressionStatement", "src": "1737:38:7" }, { "expression": { "argumentTypes": null, "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1129, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1038, "src": "1785:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1130, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1043, "src": "1798:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1798:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1785:27:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1133, "nodeType": "ExpressionStatement", "src": "1785:27:7" }, { "expression": { "argumentTypes": null, "id": 1136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1134, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1040, "src": "1822:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1135, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1045, "src": "1834:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "1822:22:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1137, "nodeType": "ExpressionStatement", "src": "1822: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": 1139, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { "id": 1046, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1043, "name": "_owners", "nodeType": "VariableDeclaration", "scope": 1139, "src": "664:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1041, "name": "address", "nodeType": "ElementaryTypeName", "src": "664:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1042, "length": null, "nodeType": "ArrayTypeName", "src": "664:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1045, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1139, "src": "683:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1044, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "683:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "663:37:7" }, "payable": false, "returnParameters": { "id": 1047, "nodeType": "ParameterList", "parameters": [], "src": "722:0:7" }, "scope": 1432, "src": "643:1208:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1193, "nodeType": "Block", "src": "2193:491:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1151, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1149, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "2252:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1150, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2261:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2252:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1152, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "2266:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1153, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "2275:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2266:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2252:38:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", "id": 1156, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2292:32:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" }, "value": "Invalid owner address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" } ], "id": 1148, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "2244:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1157, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2244:81:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1158, "nodeType": "ExpressionStatement", "src": "2244:81:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1160, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "2383:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1162, "indexExpression": { "argumentTypes": null, "id": 1161, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "2390:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2383:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1163, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2400:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2383:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", "id": 1165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2403:29:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", "typeString": "literal_string \"Address is already an owner\"" }, "value": "Address is already an owner" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", "typeString": "literal_string \"Address is already an owner\"" } ], "id": 1159, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "2375:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2375:58:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1167, "nodeType": "ExpressionStatement", "src": "2375:58:7" }, { "expression": { "argumentTypes": null, "id": 1174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1168, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "2443:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1170, "indexExpression": { "argumentTypes": null, "id": 1169, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "2450:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2443:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1171, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "2459:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1173, "indexExpression": { "argumentTypes": null, "id": 1172, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "2466:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2459:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2443:39:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1175, "nodeType": "ExpressionStatement", "src": "2443:39:7" }, { "expression": { "argumentTypes": null, "id": 1180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1176, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "2492:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1178, "indexExpression": { "argumentTypes": null, "id": 1177, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "2499:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2492:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1179, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "2518:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2492:31:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1181, "nodeType": "ExpressionStatement", "src": "2492:31:7" }, { "expression": { "argumentTypes": null, "id": 1183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2533:12:7", "subExpression": { "argumentTypes": null, "id": 1182, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1038, "src": "2533:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1184, "nodeType": "ExpressionStatement", "src": "2533:12:7" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1185, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1040, "src": "2613:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1186, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1143, "src": "2626:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2613:23:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1192, "nodeType": "IfStatement", "src": "2609:68:7", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1189, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1143, "src": "2666:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1188, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "2650:15:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, "id": 1190, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2650:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1191, "nodeType": "ExpressionStatement", "src": "2650: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": 1194, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1146, "modifierName": { "argumentTypes": null, "id": 1145, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1448, "src": "2178:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2178:10:7" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1144, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1141, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1194, "src": "2122:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1140, "name": "address", "nodeType": "ElementaryTypeName", "src": "2122:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1143, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1194, "src": "2137:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1142, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2137:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "2121:33:7" }, "payable": false, "returnParameters": { "id": 1147, "nodeType": "ParameterList", "parameters": [], "src": "2193:0:7" }, "scope": 1432, "src": "2091:593:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1259, "nodeType": "Block", "src": "3137:670:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1206, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1038, "src": "3232:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1207, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3245:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3232:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 1209, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "3250:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "3232:28:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4e6577206f776e657220636f756e74206e6565647320746f206265206c6172676572207468616e206e6577207468726573686f6c64", "id": 1211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3262:55:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" }, "value": "New owner count needs to be larger than new threshold" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" } ], "id": 1205, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "3224:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1212, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3224:94:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1213, "nodeType": "ExpressionStatement", "src": "3224:94:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1215, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1198, "src": "3416:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1216, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3425:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3416:10:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1218, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1198, "src": "3430:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1219, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "3439:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3430:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3416:38:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", "id": 1222, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3456:32:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" }, "value": "Invalid owner address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" } ], "id": 1214, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "3408:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3408:81:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1224, "nodeType": "ExpressionStatement", "src": "3408:81:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1226, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "3507:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1228, "indexExpression": { "argumentTypes": null, "id": 1227, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1196, "src": "3514:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3507:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1229, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1198, "src": "3528:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3507:26:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", "id": 1231, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3535:40:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" }, "value": "Invalid prevOwner, owner pair provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], "id": 1225, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "3499:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3499:77:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1233, "nodeType": "ExpressionStatement", "src": "3499:77:7" }, { "expression": { "argumentTypes": null, "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1234, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "3586: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": 1196, "src": "3593:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3586:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1237, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "3606:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1239, "indexExpression": { "argumentTypes": null, "id": 1238, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1198, "src": "3613:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3606:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3586:33:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1241, "nodeType": "ExpressionStatement", "src": "3586:33:7" }, { "expression": { "argumentTypes": null, "id": 1246, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1242, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "3629:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1244, "indexExpression": { "argumentTypes": null, "id": 1243, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1198, "src": "3636:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3629:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1245, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3645:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3629:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1247, "nodeType": "ExpressionStatement", "src": "3629:17:7" }, { "expression": { "argumentTypes": null, "id": 1249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "3656:12:7", "subExpression": { "argumentTypes": null, "id": 1248, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1038, "src": "3656:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1250, "nodeType": "ExpressionStatement", "src": "3656:12:7" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1251, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1040, "src": "3736:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1252, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "3749:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "3736:23:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1258, "nodeType": "IfStatement", "src": "3732:68:7", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1255, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "3789:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1254, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "3773:15:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, "id": 1256, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3773:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1257, "nodeType": "ExpressionStatement", "src": "3773: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": 1260, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1203, "modifierName": { "argumentTypes": null, "id": 1202, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1448, "src": "3122:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3122:10:7" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1201, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1196, "name": "prevOwner", "nodeType": "VariableDeclaration", "scope": 1260, "src": "3047:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1195, "name": "address", "nodeType": "ElementaryTypeName", "src": "3047:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1198, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1260, "src": "3066:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1197, "name": "address", "nodeType": "ElementaryTypeName", "src": "3066:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1200, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1260, "src": "3081:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1199, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3081:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "3046:52:7" }, "payable": false, "returnParameters": { "id": 1204, "nodeType": "ParameterList", "parameters": [], "src": "3137:0:7" }, "scope": 1432, "src": "3026:781:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1331, "nodeType": "Block", "src": "4253:639:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1272, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "4312:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1273, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4324:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4312:13:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1275, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "4329:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1276, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "4341:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4329:27:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "4312:44:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", "id": 1279, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4358:32:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" }, "value": "Invalid owner address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" } ], "id": 1271, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "4304:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1280, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4304:87:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1281, "nodeType": "ExpressionStatement", "src": "4304:87:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1283, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4449:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1285, "indexExpression": { "argumentTypes": null, "id": 1284, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "4456:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4449:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1286, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4469:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4449:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", "id": 1288, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4472:29:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", "typeString": "literal_string \"Address is already an owner\"" }, "value": "Address is already an owner" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", "typeString": "literal_string \"Address is already an owner\"" } ], "id": 1282, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "4441:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1289, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4441:61:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1290, "nodeType": "ExpressionStatement", "src": "4441:61:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1292, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1264, "src": "4603:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4615:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4603:13:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1295, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1264, "src": "4620:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1296, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "4632:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4620:27:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "4603:44:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", "id": 1299, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4649:32:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" }, "value": "Invalid owner address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", "typeString": "literal_string \"Invalid owner address provided\"" } ], "id": 1291, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "4595:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1300, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4595:87:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1301, "nodeType": "ExpressionStatement", "src": "4595:87:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1303, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4700:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1305, "indexExpression": { "argumentTypes": null, "id": 1304, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1262, "src": "4707:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4700:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1306, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1264, "src": "4721:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4700:29:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", "id": 1308, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4731:40:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" }, "value": "Invalid prevOwner, owner pair provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], "id": 1302, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "4692:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1309, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4692:80:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1310, "nodeType": "ExpressionStatement", "src": "4692:80:7" }, { "expression": { "argumentTypes": null, "id": 1317, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1311, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4782:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1313, "indexExpression": { "argumentTypes": null, "id": 1312, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "4789:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4782:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1314, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4801:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1316, "indexExpression": { "argumentTypes": null, "id": 1315, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1264, "src": "4808:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4801:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4782:35:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1318, "nodeType": "ExpressionStatement", "src": "4782:35:7" }, { "expression": { "argumentTypes": null, "id": 1323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1319, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4827:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1321, "indexExpression": { "argumentTypes": null, "id": 1320, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1262, "src": "4834:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4827:17:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1322, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1266, "src": "4847:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4827:28:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1324, "nodeType": "ExpressionStatement", "src": "4827:28:7" }, { "expression": { "argumentTypes": null, "id": 1329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1325, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4865:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1327, "indexExpression": { "argumentTypes": null, "id": 1326, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1264, "src": "4872:8:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4865:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4884:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4865:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1330, "nodeType": "ExpressionStatement", "src": "4865: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": 1332, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1269, "modifierName": { "argumentTypes": null, "id": 1268, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1448, "src": "4238:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4238:10:7" } ], "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1267, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1262, "name": "prevOwner", "nodeType": "VariableDeclaration", "scope": 1332, "src": "4160:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1261, "name": "address", "nodeType": "ElementaryTypeName", "src": "4160:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1264, "name": "oldOwner", "nodeType": "VariableDeclaration", "scope": 1332, "src": "4179:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1263, "name": "address", "nodeType": "ElementaryTypeName", "src": "4179:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1266, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 1332, "src": "4197:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1265, "name": "address", "nodeType": "ElementaryTypeName", "src": "4197:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "4159:55:7" }, "payable": false, "returnParameters": { "id": 1270, "nodeType": "ParameterList", "parameters": [], "src": "4253:0:7" }, "scope": 1432, "src": "4141:751:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1357, "nodeType": "Block", "src": "5162:316:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1340, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1334, "src": "5249:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 1341, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1038, "src": "5263:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5249:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", "id": 1343, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5275:37:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", "typeString": "literal_string \"Threshold cannot exceed owner count\"" }, "value": "Threshold cannot exceed owner count" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], "id": 1339, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "5241:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1344, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5241:72:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1345, "nodeType": "ExpressionStatement", "src": "5241:72:7" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1347, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1334, "src": "5383:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5397:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "5383:15:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", "id": 1350, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5400:38:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", "typeString": "literal_string \"Threshold needs to be greater than 0\"" }, "value": "Threshold needs to be greater than 0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], "id": 1346, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1776, 1777 ], "referencedDeclaration": 1777, "src": "5375:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1351, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5375:64:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1352, "nodeType": "ExpressionStatement", "src": "5375:64:7" }, { "expression": { "argumentTypes": null, "id": 1355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1353, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1040, "src": "5449:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1354, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1334, "src": "5461:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5449:22:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1356, "nodeType": "ExpressionStatement", "src": "5449: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": 1358, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1337, "modifierName": { "argumentTypes": null, "id": 1336, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1448, "src": "5147:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "5147:10:7" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1335, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1334, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1358, "src": "5106:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1333, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5106:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "5105:18:7" }, "payable": false, "returnParameters": { "id": 1338, "nodeType": "ParameterList", "parameters": [], "src": "5162:0:7" }, "scope": 1432, "src": "5081:397:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1367, "nodeType": "Block", "src": "5564:40:7", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1364, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1040, "src": "5587:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1363, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5581:5:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)" }, "typeName": "uint8" }, "id": 1365, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5581:16:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "functionReturnParameters": 1362, "id": 1366, "nodeType": "Return", "src": "5574:23:7" } ] }, "documentation": null, "id": 1368, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { "id": 1359, "nodeType": "ParameterList", "parameters": [], "src": "5505:2:7" }, "payable": false, "returnParameters": { "id": 1362, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1361, "name": "", "nodeType": "VariableDeclaration", "scope": 1368, "src": "5553:5:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1360, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5553:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "5552:7:7" }, "scope": 1432, "src": "5484:120:7", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1381, "nodeType": "Block", "src": "5697:42:7", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1375, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "5714:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1377, "indexExpression": { "argumentTypes": null, "id": 1376, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1370, "src": "5721:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5714:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1378, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5731:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "5714:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1374, "id": 1380, "nodeType": "Return", "src": "5707:25:7" } ] }, "documentation": null, "id": 1382, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1371, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1370, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1382, "src": "5627:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1369, "name": "address", "nodeType": "ElementaryTypeName", "src": "5627:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "5626:15:7" }, "payable": false, "returnParameters": { "id": 1374, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1373, "name": "", "nodeType": "VariableDeclaration", "scope": 1382, "src": "5687:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1372, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5687:4:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "5686:6:7" }, "scope": 1432, "src": "5610:129:7", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1430, "nodeType": "Block", "src": "5902:377:7", "statements": [ { "assignments": [ 1391 ], "declarations": [ { "constant": false, "id": 1391, "name": "array", "nodeType": "VariableDeclaration", "scope": 1431, "src": "5912:22:7", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1389, "name": "address", "nodeType": "ElementaryTypeName", "src": "5912:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1390, "length": null, "nodeType": "ArrayTypeName", "src": "5912:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "id": 1397, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1395, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1038, "src": "5951:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1394, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "5937: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": 1392, "name": "address", "nodeType": "ElementaryTypeName", "src": "5941:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1393, "length": null, "nodeType": "ArrayTypeName", "src": "5941:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, "id": 1396, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5937:25:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "5912:50:7" }, { "assignments": [ 1399 ], "declarations": [ { "constant": false, "id": 1399, "name": "index", "nodeType": "VariableDeclaration", "scope": 1431, "src": "6006:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1398, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6006:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1401, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1400, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6022:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "6006:17:7" }, { "assignments": [ 1403 ], "declarations": [ { "constant": false, "id": 1403, "name": "currentOwner", "nodeType": "VariableDeclaration", "scope": 1431, "src": "6033:20:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1402, "name": "address", "nodeType": "ElementaryTypeName", "src": "6033:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1407, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1404, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "6056:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1406, "indexExpression": { "argumentTypes": null, "id": 1405, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "6063:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6056:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6033:46:7" }, { "body": { "id": 1426, "nodeType": "Block", "src": "6128:123:7", "statements": [ { "expression": { "argumentTypes": null, "id": 1415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1411, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1391, "src": "6142:5:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1413, "indexExpression": { "argumentTypes": null, "id": 1412, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1399, "src": "6148:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6142:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1414, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1403, "src": "6157:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6142:27:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1416, "nodeType": "ExpressionStatement", "src": "6142:27:7" }, { "expression": { "argumentTypes": null, "id": 1421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1417, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1403, "src": "6183:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1418, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "6198:6:7", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 1420, "indexExpression": { "argumentTypes": null, "id": 1419, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1403, "src": "6205:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6198:20:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6183:35:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1422, "nodeType": "ExpressionStatement", "src": "6183:35:7" }, { "expression": { "argumentTypes": null, "id": 1424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "6232:8:7", "subExpression": { "argumentTypes": null, "id": 1423, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1399, "src": "6232:5:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1425, "nodeType": "ExpressionStatement", "src": "6232:8:7" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1410, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1408, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1403, "src": "6095:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 1409, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "6111:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6095:31:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1427, "nodeType": "WhileStatement", "src": "6089:162:7" }, { "expression": { "argumentTypes": null, "id": 1428, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1391, "src": "6267:5:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "functionReturnParameters": 1387, "id": 1429, "nodeType": "Return", "src": "6260:12:7" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", "id": 1431, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { "id": 1383, "nodeType": "ParameterList", "parameters": [], "src": "5839:2:7" }, "payable": false, "returnParameters": { "id": 1387, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1386, "name": "", "nodeType": "VariableDeclaration", "scope": 1431, "src": "5887:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1384, "name": "address", "nodeType": "ElementaryTypeName", "src": "5887:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1385, "length": null, "nodeType": "ArrayTypeName", "src": "5887:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "5886:11:7" }, "scope": 1432, "src": "5821:458:7", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 1433, "src": "240:6041:7" } ], "src": "0:6282:7" }, "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", "updatedAt": "2018-06-20T07:57:27.022Z" }