{ "contractName": "SocialRecoveryExtension", "abi": [ { "constant": true, "inputs": [], "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", "outputs": [ { "name": "", "type": "bytes4" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "threshold", "outputs": [ { "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "isFriend", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "NAME", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "gnosisSafe", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "bytes32" }, { "name": "", "type": "address" } ], "name": "isConfirmed", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "friends", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "bytes32" } ], "name": "isExecuted", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "VERSION", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [ { "name": "_friends", "type": "address[]" }, { "name": "_threshold", "type": "uint8" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "constant": false, "inputs": [ { "name": "_friends", "type": "address[]" }, { "name": "_threshold", "type": "uint8" } ], "name": "setup", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_masterCopy", "type": "address" } ], "name": "changeMasterCopy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "dataHash", "type": "bytes32" } ], "name": "confirmTransaction", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "sender", "type": "address" }, { "name": "to", "type": "address" }, { "name": "value", "type": "uint256" }, { "name": "data", "type": "bytes" }, { "name": "operation", "type": "uint8" } ], "name": "isExecutable", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "dataHash", "type": "bytes32" } ], "name": "isConfirmedByRequiredFriends", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "data", "type": "bytes" } ], "name": "getDataHash", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x606060405234156200001057600080fd5b6040516200140738038062001407833981016040528080518201919060200180519060200190919050506200005a82826200006264010000000002620006a2176401000000009004565b505062000360565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515620000ab57600080fd5b82518260ff1611151515620000bf57600080fd5b60028260ff1610151515620000d357600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156200025257600083828151811015156200013457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156200016257600080fd5b6003600084838151811015156200017557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515620001d457600080fd5b6001600360008584815181101515620001e957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062000119565b82600290805190602001906200026a9291906200028b565b5081600160146101000a81548160ff021916908360ff160217905550505050565b82805482825590600052602060002090810192821562000307579160200282015b82811115620003065782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620002ac565b5b5090506200031691906200031a565b5090565b6200035d91905b808211156200035957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000321565b5090565b90565b61109780620003706000396000f3006060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014757806342cde4e8146101ad57806368125a1b146101dc57806379716e431461022d5780637de7edef146102545780639ca89d0d1461028d578063a3f4df7e146102cc578063a84173ae1461035a578063ae68b056146103af578063b79ffaff14610428578063cde09ca914610486578063ce1468281461054e578063e52cb36a146105b1578063ffa1ad74146105f0575b600080fd5b34156100eb57600080fd5b6100f361067e565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b341561015257600080fd5b6101ab60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff169060200190919050506106a2565b005b34156101b857600080fd5b6101c06108bf565b604051808260ff1660ff16815260200191505060405180910390f35b34156101e757600080fd5b610213600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d2565b604051808215151515815260200191505060405180910390f35b341561023857600080fd5b6102526004808035600019169060200190919050506108f2565b005b341561025f57600080fd5b61028b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f3565b005b341561029857600080fd5b6102b2600480803560001916906020019091905050610ab8565b604051808215151515815260200191505060405180910390f35b34156102d757600080fd5b6102df610bb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036557600080fd5b61036d610bf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103ba57600080fd5b61040a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610c17565b60405180826000191660001916815260200191505060405180910390f35b341561043357600080fd5b61046c60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c83565b604051808215151515815260200191505060405180910390f35b341561049157600080fd5b610534600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610cb2565b604051808215151515815260200191505060405180910390f35b341561055957600080fd5b61056f6004808035906020019091905050610f06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105bc57600080fd5b6105d6600480803560001916906020019091905050610f45565b604051808215151515815260200191505060405180910390f35b34156105fb57600080fd5b610603610f65565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610643578082015181840152602081019050610628565b50505050905090810190601f1680156106705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106ea57600080fd5b82518260ff16111515156106fd57600080fd5b60028260ff161015151561071057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b8251811015610888576000838281518110151561076f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561079c57600080fd5b6003600084838151811015156107ae57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561080c57600080fd5b600160036000858481518110151561082057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610756565b826002908051906020019061089e929190610f9e565b5081600160146101000a81548160ff021916908360ff160217905550505050565b600160149054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561094a57600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561097f57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a4f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a7557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610bac576005600085600019166000191681526020019081526020016000206000600283815481101515610afa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7c5781806001019250505b600160149054906101000a900460ff1660ff16821415610b9f5760019250610bb1565b8080600101915050610ac1565b600092505b5050919050565b6040805190810160405280601981526020017f536f6369616c205265636f7665727920457874656e73696f6e0000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816040518082805190602001908083835b602083101515610c4f5780518252602082019150602081019050602083039250610c2a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1357600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d6b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515610dc757600080fd5b600086141515610dd657600080fd5b60006002811115610de357fe5b846002811115610def57fe5b141515610dfb57600080fd5b602085015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610e6e57600080fd5b610e7785610c17565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015610eb45750610eb381610ab8565b5b15610ef657600160046000836000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019250610efb565b600092505b505095945050505050565b600281815481101515610f1557fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b828054828255906000526020600020908101928215611017579160200282015b828111156110165782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610fbe565b5b5090506110249190611028565b5090565b61106891905b8082111561106457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161102e565b5090565b905600a165627a7a72305820f9a7137ea400c3cdaa59bb893ba2ca5055de1db780c2f3b4099da379d1b4ee460029", "deployedBytecode": "0x6060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014757806342cde4e8146101ad57806368125a1b146101dc57806379716e431461022d5780637de7edef146102545780639ca89d0d1461028d578063a3f4df7e146102cc578063a84173ae1461035a578063ae68b056146103af578063b79ffaff14610428578063cde09ca914610486578063ce1468281461054e578063e52cb36a146105b1578063ffa1ad74146105f0575b600080fd5b34156100eb57600080fd5b6100f361067e565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b341561015257600080fd5b6101ab60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff169060200190919050506106a2565b005b34156101b857600080fd5b6101c06108bf565b604051808260ff1660ff16815260200191505060405180910390f35b34156101e757600080fd5b610213600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d2565b604051808215151515815260200191505060405180910390f35b341561023857600080fd5b6102526004808035600019169060200190919050506108f2565b005b341561025f57600080fd5b61028b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f3565b005b341561029857600080fd5b6102b2600480803560001916906020019091905050610ab8565b604051808215151515815260200191505060405180910390f35b34156102d757600080fd5b6102df610bb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036557600080fd5b61036d610bf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103ba57600080fd5b61040a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610c17565b60405180826000191660001916815260200191505060405180910390f35b341561043357600080fd5b61046c60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c83565b604051808215151515815260200191505060405180910390f35b341561049157600080fd5b610534600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610cb2565b604051808215151515815260200191505060405180910390f35b341561055957600080fd5b61056f6004808035906020019091905050610f06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105bc57600080fd5b6105d6600480803560001916906020019091905050610f45565b604051808215151515815260200191505060405180910390f35b34156105fb57600080fd5b610603610f65565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610643578082015181840152602081019050610628565b50505050905090810190601f1680156106705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106ea57600080fd5b82518260ff16111515156106fd57600080fd5b60028260ff161015151561071057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b8251811015610888576000838281518110151561076f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561079c57600080fd5b6003600084838151811015156107ae57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561080c57600080fd5b600160036000858481518110151561082057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610756565b826002908051906020019061089e929190610f9e565b5081600160146101000a81548160ff021916908360ff160217905550505050565b600160149054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561094a57600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561097f57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a4f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a7557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610bac576005600085600019166000191681526020019081526020016000206000600283815481101515610afa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7c5781806001019250505b600160149054906101000a900460ff1660ff16821415610b9f5760019250610bb1565b8080600101915050610ac1565b600092505b5050919050565b6040805190810160405280601981526020017f536f6369616c205265636f7665727920457874656e73696f6e0000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816040518082805190602001908083835b602083101515610c4f5780518252602082019150602081019050602083039250610c2a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1357600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d6b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515610dc757600080fd5b600086141515610dd657600080fd5b60006002811115610de357fe5b846002811115610def57fe5b141515610dfb57600080fd5b602085015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610e6e57600080fd5b610e7785610c17565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015610eb45750610eb381610ab8565b5b15610ef657600160046000836000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019250610efb565b600092505b505095945050505050565b600281815481101515610f1557fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b828054828255906000526020600020908101928215611017579160200282015b828111156110165782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610fbe565b5b5090506110249190611028565b5090565b61106891905b8082111561106457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161102e565b5090565b905600a165627a7a72305820f9a7137ea400c3cdaa59bb893ba2ca5055de1db780c2f3b4099da379d1b4ee460029", "sourceMap": "257:4890:6:-;;;1386:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1486:27;1492:8;1502:10;1486:5;;;;;:27;;;:::i;:::-;1386:134;;257:4890;;1717:669;2142:9;1966:1;1951:10;;;;;;;;;;;1943:24;;;1935:33;;;;;;;;2000:8;:15;1986:10;:29;;;;1978:38;;;;;;;;2048:1;2034:10;:15;;;;2026:24;;;;;;;;2084:10;2060;;:35;;;;;;;;;;;;;;;;;;2154:1;2142:13;;2137:183;2161:8;:15;2157:1;:19;2137:183;;;2220:1;2205:8;2214:1;2205:11;;;;;;;;;;;;;;;;;;:16;;;;2197:25;;;;;;;;2245:8;:21;2254:8;2263:1;2254:11;;;;;;;;;;;;;;;;;;2245:21;;;;;;;;;;;;;;;;;;;;;;;;;2244:22;2236:31;;;;;;;;2305:4;2281:8;:21;2290:8;2299:1;2290:11;;;;;;;;;;;;;;;;;;2281:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2178:3;;;;;;;2137:183;;;2339:8;2329:7;:18;;;;;;;;;;;;:::i;:::-;;2369:10;2357:9;;:22;;;;;;;;;;;;;;;;;;1717:669;;;:::o;257:4890::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", "deployedSourceMap": "257:4890:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1717:669;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;572:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2835:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2532:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;4481:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;310:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:28:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5015:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;939:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3404:916;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;600:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;804:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;373:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:72:6;;;:::o;1717:669::-;2142:9;1966:1;1951:10;;;;;;;;;;;1943:24;;;1935:33;;;;;;;;2000:8;:15;1986:10;:29;;;;1978:38;;;;;;;;2048:1;2034:10;:15;;;;2026:24;;;;;;;;2084:10;2060;;:35;;;;;;;;;;;;;;;;;;2154:1;2142:13;;2137:183;2161:8;:15;2157:1;:19;2137:183;;;2220:1;2205:8;2214:1;2205:11;;;;;;;;;;;;;;;;;;:16;;;;2197:25;;;;;;;;2245:8;:21;2254:8;2263:1;2254:11;;;;;;;;;;;;;;;;;;2245:21;;;;;;;;;;;;;;;;;;;;;;;;;2244:22;2236:31;;;;;;;;2305:4;2281:8;:21;2290:8;2299:1;2290:11;;;;;;;;;;;;;;;;;;2281:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2178:3;;;;;;;2137:183;;;2339:8;2329:7;:18;;;;;;;;;;;;:::i;:::-;;2369:10;2357:9;;:22;;;;;;;;;;;;;;;;;;1717:669;;;:::o;572:22::-;;;;;;;;;;;;;:::o;695:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;2835:181::-;1153:8;:20;1162:10;1153:20;;;;;;;;;;;;;;;;;;;;;;;;;1145:29;;;;;;;;2938:10;:20;2949:8;2938:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:21;2929:30;;;;;;;;3005:4;2969:11;:21;2981:8;2969:21;;;;;;;;;;;;;;;;;:33;2991:10;2969:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;2835:181;:::o;2532:190::-;1077:10;;;;;;;;;;;1055:33;;:10;:33;;;1047:42;;;;;;;;2679:1;2663:11;2655:25;;;;2647:34;;;;;;;;2704:11;2691:10;;:24;;;;;;;;;;;;;;;;;;2532:190;:::o;4481:405::-;4582:4;4602:25;4642:9;4654:1;4642:13;;4637:221;4661:7;:14;;;;4657:1;:18;4637:221;;;4700:11;:21;4712:8;4700:21;;;;;;;;;;;;;;;;;:33;4722:7;4730:1;4722:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;4700:33;;;;;;;;;;;;;;;;;;;;;;;;;4696:74;;;4751:19;;;;;;;4696:74;4809:9;;;;;;;;;;;4788:30;;:17;:30;4784:63;;;4843:4;4836:11;;;;4784:63;4677:3;;;;;;;4637:221;;;4874:5;4867:12;;4481:405;;;;;;:::o;310:57::-;;;;;;;;;;;;;;;;;;;;:::o;538:28::-;;;;;;;;;;;;;:::o;5015:130::-;5093:7;5133:4;5123:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;5116:22:6;;5015:130;;;:::o;939:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3404:916::-;3568:4;3890:25;4085:16;1077:10;;;;;;;;;;;1055:33;;:10;:33;;;1047:42;;;;;;;;3660:8;:16;3669:6;3660:16;;;;;;;;;;;;;;;;;;;;;;;;;3652:25;;;;;;;;3709:10;;;;;;;;;;;3695:25;;:2;:25;;;3687:34;;;;;;;;3748:1;3739:5;:10;3731:19;;;;;;;;3781:25;3768:38;;;;;;;;:9;:38;;;;;;;;;3760:47;;;;;;;;3986:4;3980;3976:3;3970:5;3948:44;;4041:33;4019:55;;;:18;:55;;;;4011:64;;;;;;;;4104:17;4116:4;4104:11;:17::i;:::-;4085:36;;4139:10;:20;4150:8;4139:20;;;;;;;;;;;;;;;;;;;;;;;;;;;4138:21;:75;;;;;4175:38;4204:8;4175:28;:38::i;:::-;4138:75;4131:161;;;4252:4;4229:10;:20;4240:8;4229:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;4277:4;4270:11;;;;4131:161;4308:5;4301:12;;1099:1;3404:916;;;;;;;;;:::o;600:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;804:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;373:40::-;;;;;;;;;;;;;;;;;;;;:::o;257:4890::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryExtension is Extension {\n\n string public constant NAME = \"Social Recovery Extension\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant REPLACE_OWNER_FUNCTION_IDENTIFIER = hex\"54e99c6e\";\n\n SocialRecoveryExtension masterCopy;\n GnosisSafe public gnosisSafe;\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n modifier onlyFriend() {\n require(isFriend[msg.sender]);\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function SocialRecoveryExtension(address[] _friends, uint8 _threshold)\n public\n {\n setup(_friends, _threshold);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n require(_threshold <= _friends.length);\n require(_threshold >= 2);\n gnosisSafe = GnosisSafe(msg.sender);\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n require(_friends[i] != 0);\n require(!isFriend[_friends[i]]);\n isFriend[_friends[i]] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(SocialRecoveryExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param sender Friend's address.\n /// @param to Gnosis Safe address.\n /// @param value No Ether should be send.\n /// @param data Encoded owner replacement transaction.\n /// @param operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n onlyGnosisSafe\n returns (bool)\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[sender]);\n require(to == address(gnosisSafe));\n require(value == 0);\n require(operation == GnosisSafe.Operation.Call);\n // Validate that transaction is a owner replacement transaction.\n bytes4 functionIdentifier;\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n }\n require(functionIdentifier == REPLACE_OWNER_FUNCTION_IDENTIFIER);\n bytes32 dataHash = getDataHash(data);\n if ( !isExecuted[dataHash]\n && isConfirmedByRequiredFriends(dataHash)) {\n isExecuted[dataHash] = true;\n return true;\n }\n return false;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n view\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol", "exportedSymbols": { "SocialRecoveryExtension": [ 1759 ] }, "id": 1760, "nodeType": "SourceUnit", "nodes": [ { "id": 1420, "literals": [ "solidity", "0.4", ".19" ], "nodeType": "PragmaDirective", "src": "0:23:6" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", "file": "../Extension.sol", "id": 1421, "nodeType": "ImportDirective", "scope": 1760, "sourceUnit": 19, "src": "24:26:6", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "../GnosisSafe.sol", "id": 1422, "nodeType": "ImportDirective", "scope": 1760, "sourceUnit": 964, "src": "51:27:6", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": [], "baseName": { "contractScope": null, "id": 1423, "name": "Extension", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 18, "src": "293:9:6", "typeDescriptions": { "typeIdentifier": "t_contract$_Extension_$18", "typeString": "contract Extension" } }, "id": 1424, "nodeType": "InheritanceSpecifier", "src": "293:9:6" } ], "contractDependencies": [ 18 ], "contractKind": "contract", "documentation": "@title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", "fullyImplemented": true, "id": 1759, "linearizedBaseContracts": [ 1759, 18 ], "name": "SocialRecoveryExtension", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 1427, "name": "NAME", "nodeType": "VariableDeclaration", "scope": 1759, "src": "310:57:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" }, "typeName": { "id": 1425, "name": "string", "nodeType": "ElementaryTypeName", "src": "310:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string storage pointer" } }, "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f7665727920457874656e73696f6e", "id": 1426, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "340:27:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_995be5b755f102e2c36520d5037cfd901f504498d7c57ded40542623e7cc2eda", "typeString": "literal_string \"Social Recovery Extension\"" }, "value": "Social Recovery Extension" }, "visibility": "public" }, { "constant": true, "id": 1430, "name": "VERSION", "nodeType": "VariableDeclaration", "scope": 1759, "src": "373:40:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" }, "typeName": { "id": 1428, "name": "string", "nodeType": "ElementaryTypeName", "src": "373:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string storage pointer" } }, "value": { "argumentTypes": null, "hexValue": "302e302e31", "id": 1429, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "406:7:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", "typeString": "literal_string \"0.0.1\"" }, "value": "0.0.1" }, "visibility": "public" }, { "constant": true, "id": 1433, "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", "nodeType": "VariableDeclaration", "scope": 1759, "src": "419:72:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1431, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "419:6:6", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": { "argumentTypes": null, "hexValue": "54e99c6e", "id": 1432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "478:13:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911", "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)" }, "value": null }, "visibility": "public" }, { "constant": false, "id": 1435, "name": "masterCopy", "nodeType": "VariableDeclaration", "scope": 1759, "src": "498:34:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" }, "typeName": { "contractScope": null, "id": 1434, "name": "SocialRecoveryExtension", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1759, "src": "498:23:6", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1437, "name": "gnosisSafe", "nodeType": "VariableDeclaration", "scope": 1759, "src": "538:28:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" }, "typeName": { "contractScope": null, "id": 1436, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 963, "src": "538:10:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1439, "name": "threshold", "nodeType": "VariableDeclaration", "scope": 1759, "src": "572:22:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1438, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "572:5:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1442, "name": "friends", "nodeType": "VariableDeclaration", "scope": 1759, "src": "600:24:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" }, "typeName": { "baseType": { "id": 1440, "name": "address", "nodeType": "ElementaryTypeName", "src": "600:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1441, "length": null, "nodeType": "ArrayTypeName", "src": "600:9:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[] storage pointer" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1446, "name": "isFriend", "nodeType": "VariableDeclaration", "scope": 1759, "src": "695:41:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "typeName": { "id": 1445, "keyType": { "id": 1443, "name": "address", "nodeType": "ElementaryTypeName", "src": "704:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "695:25:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 1444, "name": "bool", "nodeType": "ElementaryTypeName", "src": "715:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1450, "name": "isExecuted", "nodeType": "VariableDeclaration", "scope": 1759, "src": "804:43:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "typeName": { "id": 1449, "keyType": { "id": 1447, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "813:7:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "804:25:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { "id": 1448, "name": "bool", "nodeType": "ElementaryTypeName", "src": "824:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1456, "name": "isConfirmed", "nodeType": "VariableDeclaration", "scope": 1759, "src": "939:65:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { "id": 1455, "keyType": { "id": 1451, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "948:7:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "939:46:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { "id": 1454, "keyType": { "id": 1452, "name": "address", "nodeType": "ElementaryTypeName", "src": "968:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "959:25:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 1453, "name": "bool", "nodeType": "ElementaryTypeName", "src": "979:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } } }, "value": null, "visibility": "public" }, { "body": { "id": 1468, "nodeType": "Block", "src": "1037:70:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1459, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2089, "src": "1055:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1055:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1462, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1437, "src": "1077:10:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } ], "id": 1461, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1069:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1463, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1069:19:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1055:33:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1458, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "1047:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1465, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1047:42:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1466, "nodeType": "ExpressionStatement", "src": "1047:42:6" }, { "id": 1467, "nodeType": "PlaceholderStatement", "src": "1099:1:6" } ] }, "id": 1469, "name": "onlyGnosisSafe", "nodeType": "ModifierDefinition", "parameters": { "id": 1457, "nodeType": "ParameterList", "parameters": [], "src": "1034:2:6" }, "src": "1011:96:6", "visibility": "internal" }, { "body": { "id": 1479, "nodeType": "Block", "src": "1135:57:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1472, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1446, "src": "1153:8:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1475, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1473, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2089, "src": "1162:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1474, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1162:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1153:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1471, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "1145:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1476, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1145:29:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1477, "nodeType": "ExpressionStatement", "src": "1145:29:6" }, { "id": 1478, "nodeType": "PlaceholderStatement", "src": "1184:1:6" } ] }, "id": 1480, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { "id": 1470, "nodeType": "ParameterList", "parameters": [], "src": "1132:2:6" }, "src": "1113:79:6", "visibility": "internal" }, { "body": { "id": 1493, "nodeType": "Block", "src": "1476:44:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1489, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1483, "src": "1492:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { "argumentTypes": null, "id": 1490, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1485, "src": "1502:10:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1488, "name": "setup", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1577, "src": "1486:5:6", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", "typeString": "function (address[] memory,uint8)" } }, "id": 1491, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1486:27:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1492, "nodeType": "ExpressionStatement", "src": "1486:27:6" } ] }, "id": 1494, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], "name": "SocialRecoveryExtension", "nodeType": "FunctionDefinition", "parameters": { "id": 1486, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1483, "name": "_friends", "nodeType": "VariableDeclaration", "scope": 1494, "src": "1419:18:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, "typeName": { "baseType": { "id": 1481, "name": "address", "nodeType": "ElementaryTypeName", "src": "1419:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1482, "length": null, "nodeType": "ArrayTypeName", "src": "1419:9:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[] storage pointer" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1485, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1494, "src": "1439:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1484, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1439:5:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1418:38:6" }, "payable": false, "returnParameters": { "id": 1487, "nodeType": "ParameterList", "parameters": [], "src": "1476:0:6" }, "scope": 1759, "src": "1386:134:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1576, "nodeType": "Block", "src": "1789:597:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1504, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1437, "src": "1951:10:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } ], "id": 1503, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1943:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1505, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1943:19:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1966:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1943:24:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1502, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "1935:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1508, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1935:33:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1509, "nodeType": "ExpressionStatement", "src": "1935:33:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1511, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1499, "src": "1986:10:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1512, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "2000:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2000:15:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1986:29:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1510, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "1978:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1515, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1978:38:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1516, "nodeType": "ExpressionStatement", "src": "1978:38:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1520, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1518, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1499, "src": "2034:10:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "32", "id": 1519, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2048:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "src": "2034:15:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1517, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "2026:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2026:24:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1522, "nodeType": "ExpressionStatement", "src": "2026:24:6" }, { "expression": { "argumentTypes": null, "id": 1528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1523, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1437, "src": "2060:10:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1525, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2089, "src": "2084:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2084:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1524, "name": "GnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 963, "src": "2073:10:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", "typeString": "type(contract GnosisSafe)" } }, "id": 1527, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2073:22:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "src": "2060:35:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "id": 1529, "nodeType": "ExpressionStatement", "src": "2060:35:6" }, { "body": { "id": 1566, "nodeType": "Block", "src": "2183:137:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1542, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "2205:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1544, "indexExpression": { "argumentTypes": null, "id": 1543, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1531, "src": "2214:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2205:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1545, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2220:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2205:16:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1541, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "2197:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1547, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2197:25:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1548, "nodeType": "ExpressionStatement", "src": "2197:25:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2244:22:6", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1550, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1446, "src": "2245:8:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1554, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1551, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "2254:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1553, "indexExpression": { "argumentTypes": null, "id": 1552, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1531, "src": "2263:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2254:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2245:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1549, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "2236:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2236:31:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1557, "nodeType": "ExpressionStatement", "src": "2236:31:6" }, { "expression": { "argumentTypes": null, "id": 1564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1558, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1446, "src": "2281:8:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1562, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1559, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "2290:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1561, "indexExpression": { "argumentTypes": null, "id": 1560, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1531, "src": "2299:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2290:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2281:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1563, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2305:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "2281:28:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1565, "nodeType": "ExpressionStatement", "src": "2281:28:6" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1534, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1531, "src": "2157:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1535, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "2161:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1536, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2161:15:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2157:19:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1567, "initializationExpression": { "assignments": [ 1531 ], "declarations": [ { "constant": false, "id": 1531, "name": "i", "nodeType": "VariableDeclaration", "scope": 1577, "src": "2142:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1530, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2142:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1533, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1532, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2154:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "2142:13:6" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2178:3:6", "subExpression": { "argumentTypes": null, "id": 1538, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1531, "src": "2178:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1540, "nodeType": "ExpressionStatement", "src": "2178:3:6" }, "nodeType": "ForStatement", "src": "2137:183:6" }, { "expression": { "argumentTypes": null, "id": 1570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1568, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1442, "src": "2329:7:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1569, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "2339:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "src": "2329:18:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1571, "nodeType": "ExpressionStatement", "src": "2329:18:6" }, { "expression": { "argumentTypes": null, "id": 1574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1572, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1439, "src": "2357:9:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1573, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1499, "src": "2369:10:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2357:22:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1575, "nodeType": "ExpressionStatement", "src": "2357:22:6" } ] }, "id": 1577, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setup", "nodeType": "FunctionDefinition", "parameters": { "id": 1500, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1497, "name": "_friends", "nodeType": "VariableDeclaration", "scope": 1577, "src": "1732:18:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, "typeName": { "baseType": { "id": 1495, "name": "address", "nodeType": "ElementaryTypeName", "src": "1732:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1496, "length": null, "nodeType": "ArrayTypeName", "src": "1732:9:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[] storage pointer" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1499, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1577, "src": "1752:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1498, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1752:5:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1731:38:6" }, "payable": false, "returnParameters": { "id": 1501, "nodeType": "ParameterList", "parameters": [], "src": "1789:0:6" }, "scope": 1759, "src": "1717:669:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1596, "nodeType": "Block", "src": "2637:85:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1586, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1579, "src": "2663:11:6", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } ], "id": 1585, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2655:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2655:20:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1588, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2679:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2655:25:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1584, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "2647:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2647:34:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1591, "nodeType": "ExpressionStatement", "src": "2647:34:6" }, { "expression": { "argumentTypes": null, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1592, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1435, "src": "2691:10:6", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1593, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1579, "src": "2704:11:6", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } }, "src": "2691:24:6", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } }, "id": 1595, "nodeType": "ExpressionStatement", "src": "2691:24:6" } ] }, "id": 1597, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": [], "id": 1582, "modifierName": { "argumentTypes": null, "id": 1581, "name": "onlyGnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1469, "src": "2618:14:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2618:14:6" } ], "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { "id": 1580, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1579, "name": "_masterCopy", "nodeType": "VariableDeclaration", "scope": 1597, "src": "2558:35:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" }, "typeName": { "contractScope": null, "id": 1578, "name": "SocialRecoveryExtension", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1759, "src": "2558:23:6", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } }, "value": null, "visibility": "internal" } ], "src": "2557:37:6" }, "payable": false, "returnParameters": { "id": 1583, "nodeType": "ParameterList", "parameters": [], "src": "2637:0:6" }, "scope": 1759, "src": "2532:190:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1620, "nodeType": "Block", "src": "2919:97:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2937:21:6", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1605, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1450, "src": "2938:10:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 1607, "indexExpression": { "argumentTypes": null, "id": 1606, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1599, "src": "2949:8:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2938:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1604, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "2929:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2929:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1610, "nodeType": "ExpressionStatement", "src": "2929:30:6" }, { "expression": { "argumentTypes": null, "id": 1618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1611, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1456, "src": "2969:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, "id": 1615, "indexExpression": { "argumentTypes": null, "id": 1612, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1599, "src": "2981:8:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2969:21:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1616, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1613, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2089, "src": "2991:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2991:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2969:33:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1617, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3005:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "2969:40:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1619, "nodeType": "ExpressionStatement", "src": "2969:40:6" } ] }, "id": 1621, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": [], "id": 1602, "modifierName": { "argumentTypes": null, "id": 1601, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1480, "src": "2904:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2904:10:6" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { "id": 1600, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1599, "name": "dataHash", "nodeType": "VariableDeclaration", "scope": 1621, "src": "2863:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1598, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2863:7:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "2862:18:6" }, "payable": false, "returnParameters": { "id": 1603, "nodeType": "ParameterList", "parameters": [], "src": "2919:0:6" }, "scope": 1759, "src": "2835:181:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1702, "nodeType": "Block", "src": "3578:742:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1639, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1446, "src": "3660:8:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1641, "indexExpression": { "argumentTypes": null, "id": 1640, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1623, "src": "3669:6:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3660:16:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1638, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3652:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3652:25:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1643, "nodeType": "ExpressionStatement", "src": "3652:25:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1645, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1625, "src": "3695:2:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1647, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1437, "src": "3709:10:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } ], "id": 1646, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3701:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3701:19:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3695:25:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1644, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3687:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1650, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3687:34:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1651, "nodeType": "ExpressionStatement", "src": "3687:34:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1653, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "3739:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3748:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3739:10:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1652, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3731:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1656, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3731:19:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1657, "nodeType": "ExpressionStatement", "src": "3731:19:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" }, "id": 1663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1659, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1631, "src": "3768:9:6", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1660, "name": "GnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 963, "src": "3781:10:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", "typeString": "type(contract GnosisSafe)" } }, "id": 1661, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 61, "src": "3781:20:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", "typeString": "type(enum GnosisSafe.Operation)" } }, "id": 1662, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3781:25:6", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" } }, "src": "3768:38:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1658, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3760:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1664, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3760:47:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1665, "nodeType": "ExpressionStatement", "src": "3760:47:6" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1667, "name": "functionIdentifier", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3890:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1666, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3890:6:6", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": null, "visibility": "internal" } ], "id": 1668, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "3890:25:6" }, { "externalReferences": [ { "functionIdentifier": { "declaration": 1667, "isOffset": false, "isSlot": false, "src": "3948:18:6", "valueSize": 1 } }, { "data": { "declaration": 1629, "isOffset": false, "isSlot": false, "src": "3980:4:6", "valueSize": 1 } } ], "id": 1669, "nodeType": "InlineAssembly", "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", "src": "3925:93:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 1673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1671, "name": "functionIdentifier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1667, "src": "4019:18:6", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1672, "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1433, "src": "4041:33:6", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "4019:55:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1670, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "4011:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1674, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4011:64:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1675, "nodeType": "ExpressionStatement", "src": "4011:64:6" }, { "assignments": [ 1677 ], "declarations": [ { "constant": false, "id": 1677, "name": "dataHash", "nodeType": "VariableDeclaration", "scope": 1703, "src": "4085:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1676, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4085:7:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 1681, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1679, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1629, "src": "4116:4:6", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 1678, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1758, "src": "4104:11:6", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) view returns (bytes32)" } }, "id": 1680, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4104:17:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "4085:36:6" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1689, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1685, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "4138:21:6", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1682, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1450, "src": "4139:10:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 1684, "indexExpression": { "argumentTypes": null, "id": 1683, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1677, "src": "4150:8:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4139:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1687, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1677, "src": "4204:8:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 1686, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1746, "src": "4175:28:6", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, "id": 1688, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4175:38:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "4138:75:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1699, "nodeType": "IfStatement", "src": "4131:161:6", "trueBody": { "id": 1698, "nodeType": "Block", "src": "4215:77:6", "statements": [ { "expression": { "argumentTypes": null, "id": 1694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1690, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1450, "src": "4229:10:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 1692, "indexExpression": { "argumentTypes": null, "id": 1691, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1677, "src": "4240:8:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4229:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4252:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "4229:27:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1695, "nodeType": "ExpressionStatement", "src": "4229:27:6" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1696, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4277:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1637, "id": 1697, "nodeType": "Return", "src": "4270:11:6" } ] } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1700, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4308:5:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "functionReturnParameters": 1637, "id": 1701, "nodeType": "Return", "src": "4301:12:6" } ] }, "id": 1703, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": [], "id": 1634, "modifierName": { "argumentTypes": null, "id": 1633, "name": "onlyGnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1469, "src": "3536:14:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3536:14:6" } ], "name": "isExecutable", "nodeType": "FunctionDefinition", "parameters": { "id": 1632, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1623, "name": "sender", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3426:14:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1622, "name": "address", "nodeType": "ElementaryTypeName", "src": "3426:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1625, "name": "to", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3442:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1624, "name": "address", "nodeType": "ElementaryTypeName", "src": "3442:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1627, "name": "value", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3454:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1626, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3454:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1629, "name": "data", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3469:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, "typeName": { "id": 1628, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3469:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes storage pointer" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1631, "name": "operation", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3481:30:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" }, "typeName": { "contractScope": null, "id": 1630, "name": "GnosisSafe.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 61, "src": "3481:20:6", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" } }, "value": null, "visibility": "internal" } ], "src": "3425:87:6" }, "payable": false, "returnParameters": { "id": 1637, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1636, "name": "", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3568:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1635, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3568:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3567:6:6" }, "scope": 1759, "src": "3404:916:6", "stateMutability": "nonpayable", "superFunction": 17, "visibility": "public" }, { "body": { "id": 1745, "nodeType": "Block", "src": "4592:294:6", "statements": [ { "assignments": [], "declarations": [ { "constant": false, "id": 1711, "name": "confirmationCount", "nodeType": "VariableDeclaration", "scope": 1746, "src": "4602:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1710, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4602:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1712, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "4602:25:6" }, { "body": { "id": 1741, "nodeType": "Block", "src": "4682:176:6", "statements": [ { "condition": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1724, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1456, "src": "4700:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, "id": 1726, "indexExpression": { "argumentTypes": null, "id": 1725, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1705, "src": "4712:8:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4700:21:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1730, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1727, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1442, "src": "4722:7:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1729, "indexExpression": { "argumentTypes": null, "id": 1728, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1714, "src": "4730:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4722:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4700:33:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1734, "nodeType": "IfStatement", "src": "4696:74:6", "trueBody": { "expression": { "argumentTypes": null, "id": 1732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4751:19:6", "subExpression": { "argumentTypes": null, "id": 1731, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1711, "src": "4751:17:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1733, "nodeType": "ExpressionStatement", "src": "4751:19:6" } }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1735, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1711, "src": "4788:17:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1736, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1439, "src": "4809:9:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4788:30:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1740, "nodeType": "IfStatement", "src": "4784:63:6", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1738, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4843:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1709, "id": 1739, "nodeType": "Return", "src": "4836:11:6" } } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1720, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1717, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1714, "src": "4657:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1718, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1442, "src": "4661:7:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1719, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4661:14:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4657:18:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1742, "initializationExpression": { "assignments": [ 1714 ], "declarations": [ { "constant": false, "id": 1714, "name": "i", "nodeType": "VariableDeclaration", "scope": 1746, "src": "4642:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1713, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4642:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1716, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4654:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "4642:13:6" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1722, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4677:3:6", "subExpression": { "argumentTypes": null, "id": 1721, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1714, "src": "4677:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1723, "nodeType": "ExpressionStatement", "src": "4677:3:6" }, "nodeType": "ForStatement", "src": "4637:221:6" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1743, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4874:5:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "functionReturnParameters": 1709, "id": 1744, "nodeType": "Return", "src": "4867:12:6" } ] }, "id": 1746, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { "id": 1706, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1705, "name": "dataHash", "nodeType": "VariableDeclaration", "scope": 1746, "src": "4519:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1704, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4519:7:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "4518:18:6" }, "payable": false, "returnParameters": { "id": 1709, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1708, "name": "", "nodeType": "VariableDeclaration", "scope": 1746, "src": "4582:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1707, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4582:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4581:6:6" }, "scope": 1759, "src": "4481:405:6", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1757, "nodeType": "Block", "src": "5106:39:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1754, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1748, "src": "5133:4:6", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 1753, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2083, "src": "5123:9:6", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, "id": 1755, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5123:15:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "functionReturnParameters": 1752, "id": 1756, "nodeType": "Return", "src": "5116:22:6" } ] }, "id": 1758, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { "id": 1749, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1748, "name": "data", "nodeType": "VariableDeclaration", "scope": 1758, "src": "5036:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, "typeName": { "id": 1747, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5036:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes storage pointer" } }, "value": null, "visibility": "internal" } ], "src": "5035:12:6" }, "payable": false, "returnParameters": { "id": 1752, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1751, "name": "", "nodeType": "VariableDeclaration", "scope": 1758, "src": "5093:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1750, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5093:7:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "5092:9:6" }, "scope": 1759, "src": "5015:130:6", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 1760, "src": "257:4890:6" } ], "src": "0:5148:6" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol", "exportedSymbols": { "SocialRecoveryExtension": [ 1759 ] }, "id": 1760, "nodeType": "SourceUnit", "nodes": [ { "id": 1420, "literals": [ "solidity", "0.4", ".19" ], "nodeType": "PragmaDirective", "src": "0:23:6" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", "file": "../Extension.sol", "id": 1421, "nodeType": "ImportDirective", "scope": 1760, "sourceUnit": 19, "src": "24:26:6", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "../GnosisSafe.sol", "id": 1422, "nodeType": "ImportDirective", "scope": 1760, "sourceUnit": 964, "src": "51:27:6", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": [], "baseName": { "contractScope": null, "id": 1423, "name": "Extension", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 18, "src": "293:9:6", "typeDescriptions": { "typeIdentifier": "t_contract$_Extension_$18", "typeString": "contract Extension" } }, "id": 1424, "nodeType": "InheritanceSpecifier", "src": "293:9:6" } ], "contractDependencies": [ 18 ], "contractKind": "contract", "documentation": "@title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", "fullyImplemented": true, "id": 1759, "linearizedBaseContracts": [ 1759, 18 ], "name": "SocialRecoveryExtension", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 1427, "name": "NAME", "nodeType": "VariableDeclaration", "scope": 1759, "src": "310:57:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" }, "typeName": { "id": 1425, "name": "string", "nodeType": "ElementaryTypeName", "src": "310:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string storage pointer" } }, "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f7665727920457874656e73696f6e", "id": 1426, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "340:27:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_995be5b755f102e2c36520d5037cfd901f504498d7c57ded40542623e7cc2eda", "typeString": "literal_string \"Social Recovery Extension\"" }, "value": "Social Recovery Extension" }, "visibility": "public" }, { "constant": true, "id": 1430, "name": "VERSION", "nodeType": "VariableDeclaration", "scope": 1759, "src": "373:40:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" }, "typeName": { "id": 1428, "name": "string", "nodeType": "ElementaryTypeName", "src": "373:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string storage pointer" } }, "value": { "argumentTypes": null, "hexValue": "302e302e31", "id": 1429, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "406:7:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", "typeString": "literal_string \"0.0.1\"" }, "value": "0.0.1" }, "visibility": "public" }, { "constant": true, "id": 1433, "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", "nodeType": "VariableDeclaration", "scope": 1759, "src": "419:72:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1431, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "419:6:6", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": { "argumentTypes": null, "hexValue": "54e99c6e", "id": 1432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "478:13:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911", "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)" }, "value": null }, "visibility": "public" }, { "constant": false, "id": 1435, "name": "masterCopy", "nodeType": "VariableDeclaration", "scope": 1759, "src": "498:34:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" }, "typeName": { "contractScope": null, "id": 1434, "name": "SocialRecoveryExtension", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1759, "src": "498:23:6", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1437, "name": "gnosisSafe", "nodeType": "VariableDeclaration", "scope": 1759, "src": "538:28:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" }, "typeName": { "contractScope": null, "id": 1436, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 963, "src": "538:10:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1439, "name": "threshold", "nodeType": "VariableDeclaration", "scope": 1759, "src": "572:22:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1438, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "572:5:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1442, "name": "friends", "nodeType": "VariableDeclaration", "scope": 1759, "src": "600:24:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" }, "typeName": { "baseType": { "id": 1440, "name": "address", "nodeType": "ElementaryTypeName", "src": "600:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1441, "length": null, "nodeType": "ArrayTypeName", "src": "600:9:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[] storage pointer" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1446, "name": "isFriend", "nodeType": "VariableDeclaration", "scope": 1759, "src": "695:41:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "typeName": { "id": 1445, "keyType": { "id": 1443, "name": "address", "nodeType": "ElementaryTypeName", "src": "704:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "695:25:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 1444, "name": "bool", "nodeType": "ElementaryTypeName", "src": "715:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1450, "name": "isExecuted", "nodeType": "VariableDeclaration", "scope": 1759, "src": "804:43:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "typeName": { "id": 1449, "keyType": { "id": 1447, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "813:7:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "804:25:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { "id": 1448, "name": "bool", "nodeType": "ElementaryTypeName", "src": "824:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1456, "name": "isConfirmed", "nodeType": "VariableDeclaration", "scope": 1759, "src": "939:65:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { "id": 1455, "keyType": { "id": 1451, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "948:7:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "939:46:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { "id": 1454, "keyType": { "id": 1452, "name": "address", "nodeType": "ElementaryTypeName", "src": "968:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "959:25:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 1453, "name": "bool", "nodeType": "ElementaryTypeName", "src": "979:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } } }, "value": null, "visibility": "public" }, { "body": { "id": 1468, "nodeType": "Block", "src": "1037:70:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1459, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2089, "src": "1055:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1055:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1462, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1437, "src": "1077:10:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } ], "id": 1461, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1069:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1463, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1069:19:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1055:33:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1458, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "1047:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1465, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1047:42:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1466, "nodeType": "ExpressionStatement", "src": "1047:42:6" }, { "id": 1467, "nodeType": "PlaceholderStatement", "src": "1099:1:6" } ] }, "id": 1469, "name": "onlyGnosisSafe", "nodeType": "ModifierDefinition", "parameters": { "id": 1457, "nodeType": "ParameterList", "parameters": [], "src": "1034:2:6" }, "src": "1011:96:6", "visibility": "internal" }, { "body": { "id": 1479, "nodeType": "Block", "src": "1135:57:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1472, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1446, "src": "1153:8:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1475, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1473, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2089, "src": "1162:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1474, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1162:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1153:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1471, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "1145:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1476, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1145:29:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1477, "nodeType": "ExpressionStatement", "src": "1145:29:6" }, { "id": 1478, "nodeType": "PlaceholderStatement", "src": "1184:1:6" } ] }, "id": 1480, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { "id": 1470, "nodeType": "ParameterList", "parameters": [], "src": "1132:2:6" }, "src": "1113:79:6", "visibility": "internal" }, { "body": { "id": 1493, "nodeType": "Block", "src": "1476:44:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1489, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1483, "src": "1492:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { "argumentTypes": null, "id": 1490, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1485, "src": "1502:10:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1488, "name": "setup", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1577, "src": "1486:5:6", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", "typeString": "function (address[] memory,uint8)" } }, "id": 1491, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1486:27:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1492, "nodeType": "ExpressionStatement", "src": "1486:27:6" } ] }, "id": 1494, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], "name": "SocialRecoveryExtension", "nodeType": "FunctionDefinition", "parameters": { "id": 1486, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1483, "name": "_friends", "nodeType": "VariableDeclaration", "scope": 1494, "src": "1419:18:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, "typeName": { "baseType": { "id": 1481, "name": "address", "nodeType": "ElementaryTypeName", "src": "1419:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1482, "length": null, "nodeType": "ArrayTypeName", "src": "1419:9:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[] storage pointer" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1485, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1494, "src": "1439:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1484, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1439:5:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1418:38:6" }, "payable": false, "returnParameters": { "id": 1487, "nodeType": "ParameterList", "parameters": [], "src": "1476:0:6" }, "scope": 1759, "src": "1386:134:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1576, "nodeType": "Block", "src": "1789:597:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1504, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1437, "src": "1951:10:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } ], "id": 1503, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1943:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1505, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1943:19:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1966:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1943:24:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1502, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "1935:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1508, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1935:33:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1509, "nodeType": "ExpressionStatement", "src": "1935:33:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1511, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1499, "src": "1986:10:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1512, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "2000:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2000:15:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1986:29:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1510, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "1978:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1515, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1978:38:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1516, "nodeType": "ExpressionStatement", "src": "1978:38:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1520, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1518, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1499, "src": "2034:10:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "hexValue": "32", "id": 1519, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2048:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "src": "2034:15:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1517, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "2026:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2026:24:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1522, "nodeType": "ExpressionStatement", "src": "2026:24:6" }, { "expression": { "argumentTypes": null, "id": 1528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1523, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1437, "src": "2060:10:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1525, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2089, "src": "2084:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2084:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1524, "name": "GnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 963, "src": "2073:10:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", "typeString": "type(contract GnosisSafe)" } }, "id": 1527, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2073:22:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "src": "2060:35:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "id": 1529, "nodeType": "ExpressionStatement", "src": "2060:35:6" }, { "body": { "id": 1566, "nodeType": "Block", "src": "2183:137:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1542, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "2205:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1544, "indexExpression": { "argumentTypes": null, "id": 1543, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1531, "src": "2214:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2205:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1545, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2220:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2205:16:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1541, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "2197:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1547, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2197:25:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1548, "nodeType": "ExpressionStatement", "src": "2197:25:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2244:22:6", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1550, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1446, "src": "2245:8:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1554, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1551, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "2254:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1553, "indexExpression": { "argumentTypes": null, "id": 1552, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1531, "src": "2263:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2254:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2245:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1549, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "2236:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2236:31:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1557, "nodeType": "ExpressionStatement", "src": "2236:31:6" }, { "expression": { "argumentTypes": null, "id": 1564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1558, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1446, "src": "2281:8:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1562, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1559, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "2290:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1561, "indexExpression": { "argumentTypes": null, "id": 1560, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1531, "src": "2299:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2290:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2281:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1563, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2305:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "2281:28:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1565, "nodeType": "ExpressionStatement", "src": "2281:28:6" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1534, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1531, "src": "2157:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1535, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "2161:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1536, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2161:15:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2157:19:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1567, "initializationExpression": { "assignments": [ 1531 ], "declarations": [ { "constant": false, "id": 1531, "name": "i", "nodeType": "VariableDeclaration", "scope": 1577, "src": "2142:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1530, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2142:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1533, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1532, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2154:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "2142:13:6" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2178:3:6", "subExpression": { "argumentTypes": null, "id": 1538, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1531, "src": "2178:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1540, "nodeType": "ExpressionStatement", "src": "2178:3:6" }, "nodeType": "ForStatement", "src": "2137:183:6" }, { "expression": { "argumentTypes": null, "id": 1570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1568, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1442, "src": "2329:7:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1569, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "2339:8:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "src": "2329:18:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1571, "nodeType": "ExpressionStatement", "src": "2329:18:6" }, { "expression": { "argumentTypes": null, "id": 1574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1572, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1439, "src": "2357:9:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1573, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1499, "src": "2369:10:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2357:22:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1575, "nodeType": "ExpressionStatement", "src": "2357:22:6" } ] }, "id": 1577, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setup", "nodeType": "FunctionDefinition", "parameters": { "id": 1500, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1497, "name": "_friends", "nodeType": "VariableDeclaration", "scope": 1577, "src": "1732:18:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, "typeName": { "baseType": { "id": 1495, "name": "address", "nodeType": "ElementaryTypeName", "src": "1732:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1496, "length": null, "nodeType": "ArrayTypeName", "src": "1732:9:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[] storage pointer" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1499, "name": "_threshold", "nodeType": "VariableDeclaration", "scope": 1577, "src": "1752:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1498, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1752:5:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1731:38:6" }, "payable": false, "returnParameters": { "id": 1501, "nodeType": "ParameterList", "parameters": [], "src": "1789:0:6" }, "scope": 1759, "src": "1717:669:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1596, "nodeType": "Block", "src": "2637:85:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1586, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1579, "src": "2663:11:6", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } ], "id": 1585, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2655:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2655:20:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1588, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2679:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2655:25:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1584, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "2647:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2647:34:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1591, "nodeType": "ExpressionStatement", "src": "2647:34:6" }, { "expression": { "argumentTypes": null, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1592, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1435, "src": "2691:10:6", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1593, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1579, "src": "2704:11:6", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } }, "src": "2691:24:6", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } }, "id": 1595, "nodeType": "ExpressionStatement", "src": "2691:24:6" } ] }, "id": 1597, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": [], "id": 1582, "modifierName": { "argumentTypes": null, "id": 1581, "name": "onlyGnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1469, "src": "2618:14:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2618:14:6" } ], "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { "id": 1580, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1579, "name": "_masterCopy", "nodeType": "VariableDeclaration", "scope": 1597, "src": "2558:35:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" }, "typeName": { "contractScope": null, "id": 1578, "name": "SocialRecoveryExtension", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1759, "src": "2558:23:6", "typeDescriptions": { "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", "typeString": "contract SocialRecoveryExtension" } }, "value": null, "visibility": "internal" } ], "src": "2557:37:6" }, "payable": false, "returnParameters": { "id": 1583, "nodeType": "ParameterList", "parameters": [], "src": "2637:0:6" }, "scope": 1759, "src": "2532:190:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1620, "nodeType": "Block", "src": "2919:97:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2937:21:6", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1605, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1450, "src": "2938:10:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 1607, "indexExpression": { "argumentTypes": null, "id": 1606, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1599, "src": "2949:8:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2938:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1604, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "2929:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2929:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1610, "nodeType": "ExpressionStatement", "src": "2929:30:6" }, { "expression": { "argumentTypes": null, "id": 1618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1611, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1456, "src": "2969:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, "id": 1615, "indexExpression": { "argumentTypes": null, "id": 1612, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1599, "src": "2981:8:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2969:21:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1616, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1613, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2089, "src": "2991:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2991:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2969:33:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1617, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3005:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "2969:40:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1619, "nodeType": "ExpressionStatement", "src": "2969:40:6" } ] }, "id": 1621, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": [], "id": 1602, "modifierName": { "argumentTypes": null, "id": 1601, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1480, "src": "2904:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2904:10:6" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { "id": 1600, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1599, "name": "dataHash", "nodeType": "VariableDeclaration", "scope": 1621, "src": "2863:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1598, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2863:7:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "2862:18:6" }, "payable": false, "returnParameters": { "id": 1603, "nodeType": "ParameterList", "parameters": [], "src": "2919:0:6" }, "scope": 1759, "src": "2835:181:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1702, "nodeType": "Block", "src": "3578:742:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1639, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1446, "src": "3660:8:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1641, "indexExpression": { "argumentTypes": null, "id": 1640, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1623, "src": "3669:6:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3660:16:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1638, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3652:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3652:25:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1643, "nodeType": "ExpressionStatement", "src": "3652:25:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1645, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1625, "src": "3695:2:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1647, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1437, "src": "3709:10:6", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } ], "id": 1646, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3701:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3701:19:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3695:25:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1644, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3687:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1650, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3687:34:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1651, "nodeType": "ExpressionStatement", "src": "3687:34:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1653, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "3739:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3748:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3739:10:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1652, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3731:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1656, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3731:19:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1657, "nodeType": "ExpressionStatement", "src": "3731:19:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" }, "id": 1663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1659, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1631, "src": "3768:9:6", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1660, "name": "GnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 963, "src": "3781:10:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", "typeString": "type(contract GnosisSafe)" } }, "id": 1661, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 61, "src": "3781:20:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", "typeString": "type(enum GnosisSafe.Operation)" } }, "id": 1662, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3781:25:6", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" } }, "src": "3768:38:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1658, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3760:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1664, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3760:47:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1665, "nodeType": "ExpressionStatement", "src": "3760:47:6" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1667, "name": "functionIdentifier", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3890:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1666, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3890:6:6", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": null, "visibility": "internal" } ], "id": 1668, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "3890:25:6" }, { "externalReferences": [ { "functionIdentifier": { "declaration": 1667, "isOffset": false, "isSlot": false, "src": "3948:18:6", "valueSize": 1 } }, { "data": { "declaration": 1629, "isOffset": false, "isSlot": false, "src": "3980:4:6", "valueSize": 1 } } ], "id": 1669, "nodeType": "InlineAssembly", "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", "src": "3925:93:6" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 1673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1671, "name": "functionIdentifier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1667, "src": "4019:18:6", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1672, "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1433, "src": "4041:33:6", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "4019:55:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1670, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "4011:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1674, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4011:64:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1675, "nodeType": "ExpressionStatement", "src": "4011:64:6" }, { "assignments": [ 1677 ], "declarations": [ { "constant": false, "id": 1677, "name": "dataHash", "nodeType": "VariableDeclaration", "scope": 1703, "src": "4085:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1676, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4085:7:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 1681, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1679, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1629, "src": "4116:4:6", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 1678, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1758, "src": "4104:11:6", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) view returns (bytes32)" } }, "id": 1680, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4104:17:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "4085:36:6" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1689, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1685, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "4138:21:6", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1682, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1450, "src": "4139:10:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 1684, "indexExpression": { "argumentTypes": null, "id": 1683, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1677, "src": "4150:8:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4139:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1687, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1677, "src": "4204:8:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 1686, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1746, "src": "4175:28:6", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, "id": 1688, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4175:38:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "4138:75:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1699, "nodeType": "IfStatement", "src": "4131:161:6", "trueBody": { "id": 1698, "nodeType": "Block", "src": "4215:77:6", "statements": [ { "expression": { "argumentTypes": null, "id": 1694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1690, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1450, "src": "4229:10:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 1692, "indexExpression": { "argumentTypes": null, "id": 1691, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1677, "src": "4240:8:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4229:20:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4252:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "4229:27:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1695, "nodeType": "ExpressionStatement", "src": "4229:27:6" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1696, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4277:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1637, "id": 1697, "nodeType": "Return", "src": "4270:11:6" } ] } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1700, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4308:5:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "functionReturnParameters": 1637, "id": 1701, "nodeType": "Return", "src": "4301:12:6" } ] }, "id": 1703, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": [], "id": 1634, "modifierName": { "argumentTypes": null, "id": 1633, "name": "onlyGnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1469, "src": "3536:14:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3536:14:6" } ], "name": "isExecutable", "nodeType": "FunctionDefinition", "parameters": { "id": 1632, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1623, "name": "sender", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3426:14:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1622, "name": "address", "nodeType": "ElementaryTypeName", "src": "3426:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1625, "name": "to", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3442:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1624, "name": "address", "nodeType": "ElementaryTypeName", "src": "3442:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1627, "name": "value", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3454:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1626, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3454:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1629, "name": "data", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3469:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, "typeName": { "id": 1628, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3469:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes storage pointer" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1631, "name": "operation", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3481:30:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" }, "typeName": { "contractScope": null, "id": 1630, "name": "GnosisSafe.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 61, "src": "3481:20:6", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" } }, "value": null, "visibility": "internal" } ], "src": "3425:87:6" }, "payable": false, "returnParameters": { "id": 1637, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1636, "name": "", "nodeType": "VariableDeclaration", "scope": 1703, "src": "3568:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1635, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3568:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3567:6:6" }, "scope": 1759, "src": "3404:916:6", "stateMutability": "nonpayable", "superFunction": 17, "visibility": "public" }, { "body": { "id": 1745, "nodeType": "Block", "src": "4592:294:6", "statements": [ { "assignments": [], "declarations": [ { "constant": false, "id": 1711, "name": "confirmationCount", "nodeType": "VariableDeclaration", "scope": 1746, "src": "4602:25:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1710, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4602:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1712, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "4602:25:6" }, { "body": { "id": 1741, "nodeType": "Block", "src": "4682:176:6", "statements": [ { "condition": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1724, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1456, "src": "4700:11:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, "id": 1726, "indexExpression": { "argumentTypes": null, "id": 1725, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1705, "src": "4712:8:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4700:21:6", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1730, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1727, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1442, "src": "4722:7:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1729, "indexExpression": { "argumentTypes": null, "id": 1728, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1714, "src": "4730:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4722:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4700:33:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1734, "nodeType": "IfStatement", "src": "4696:74:6", "trueBody": { "expression": { "argumentTypes": null, "id": 1732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4751:19:6", "subExpression": { "argumentTypes": null, "id": 1731, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1711, "src": "4751:17:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1733, "nodeType": "ExpressionStatement", "src": "4751:19:6" } }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1735, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1711, "src": "4788:17:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1736, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1439, "src": "4809:9:6", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4788:30:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1740, "nodeType": "IfStatement", "src": "4784:63:6", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1738, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4843:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1709, "id": 1739, "nodeType": "Return", "src": "4836:11:6" } } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1720, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1717, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1714, "src": "4657:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1718, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1442, "src": "4661:7:6", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 1719, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4661:14:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4657:18:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1742, "initializationExpression": { "assignments": [ 1714 ], "declarations": [ { "constant": false, "id": 1714, "name": "i", "nodeType": "VariableDeclaration", "scope": 1746, "src": "4642:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1713, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4642:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1716, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4654:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "4642:13:6" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1722, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4677:3:6", "subExpression": { "argumentTypes": null, "id": 1721, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1714, "src": "4677:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1723, "nodeType": "ExpressionStatement", "src": "4677:3:6" }, "nodeType": "ForStatement", "src": "4637:221:6" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1743, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4874:5:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "functionReturnParameters": 1709, "id": 1744, "nodeType": "Return", "src": "4867:12:6" } ] }, "id": 1746, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { "id": 1706, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1705, "name": "dataHash", "nodeType": "VariableDeclaration", "scope": 1746, "src": "4519:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1704, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4519:7:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "4518:18:6" }, "payable": false, "returnParameters": { "id": 1709, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1708, "name": "", "nodeType": "VariableDeclaration", "scope": 1746, "src": "4582:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1707, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4582:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4581:6:6" }, "scope": 1759, "src": "4481:405:6", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 1757, "nodeType": "Block", "src": "5106:39:6", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1754, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1748, "src": "5133:4:6", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 1753, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2083, "src": "5123:9:6", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, "id": 1755, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5123:15:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "functionReturnParameters": 1752, "id": 1756, "nodeType": "Return", "src": "5116:22:6" } ] }, "id": 1758, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { "id": 1749, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1748, "name": "data", "nodeType": "VariableDeclaration", "scope": 1758, "src": "5036:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, "typeName": { "id": 1747, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5036:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes storage pointer" } }, "value": null, "visibility": "internal" } ], "src": "5035:12:6" }, "payable": false, "returnParameters": { "id": 1752, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1751, "name": "", "nodeType": "VariableDeclaration", "scope": 1758, "src": "5093:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1750, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5093:7:6", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "5092:9:6" }, "scope": 1759, "src": "5015:130:6", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 1760, "src": "257:4890:6" } ], "src": "0:5148:6" }, "compiler": { "name": "solc", "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, "address": "0x0297aeb84568d3ab9d7b382240250dd0db22e05d", "transactionHash": "0x85a0a0d054ba5a10091dabe072894eb0bc5f45b84927e8313094a600cabff0c6" }, "42": { "events": {}, "links": {}, "address": "0x1f3c28359e6018304b28fa46f5ef87f4b295939c", "transactionHash": "0x9c32de35cd9321dbb7c9bb2aa35fd3a4199b08db6aae909ace4a5bf93392fd87" }, "1525342778744": { "events": {}, "links": {}, "address": "0x38ba6d49ff8d62e729429947e2381f8e1b01933b", "transactionHash": "0x6ade3e6ed704785b52fedb81d093263eeaccdcb3dd3883a7c040679c6c8096fc" } }, "schemaVersion": "2.0.0", "updatedAt": "2018-05-04T13:47:03.966Z" }