{ "contractName": "GnosisSafePersonalEdition", "abi": [ { "constant": true, "inputs": [ { "name": "owner", "type": "address" } ], "name": "isOwner", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "to", "type": "address" }, { "name": "value", "type": "uint256" }, { "name": "data", "type": "bytes" }, { "name": "operation", "type": "uint8" } ], "name": "execTransactionFromModule", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "module", "type": "address" } ], "name": "enableModule", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_masterCopy", "type": "address" } ], "name": "changeMasterCopy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "SENTINEL_MODULES", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "prevOwner", "type": "address" }, { "name": "owner", "type": "address" }, { "name": "_threshold", "type": "uint8" } ], "name": "removeOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "SENTINEL_OWNERS", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_owners", "type": "address[]" }, { "name": "_threshold", "type": "uint8" }, { "name": "to", "type": "address" }, { "name": "data", "type": "bytes" } ], "name": "setup", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "getOwners", "outputs": [ { "name": "", "type": "address[]" } ], "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": "nonce", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getModules", "outputs": [ { "name": "", "type": "address[]" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_threshold", "type": "uint8" } ], "name": "changeThreshold", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "owner", "type": "address" }, { "name": "_threshold", "type": "uint8" } ], "name": "addOwnerWithThreshold", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "prevModule", "type": "address" }, { "name": "module", "type": "address" } ], "name": "disableModule", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "prevOwner", "type": "address" }, { "name": "oldOwner", "type": "address" }, { "name": "newOwner", "type": "address" } ], "name": "swapOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "getThreshold", "outputs": [ { "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "VERSION", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "payable": true, "stateMutability": "payable", "type": "fallback" }, { "anonymous": false, "inputs": [], "name": "ExecutionFailed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "name": "newContract", "type": "address" } ], "name": "ContractCreation", "type": "event" }, { "constant": false, "inputs": [ { "name": "to", "type": "address" }, { "name": "value", "type": "uint256" }, { "name": "data", "type": "bytes" }, { "name": "operation", "type": "uint8" }, { "name": "safeTxGas", "type": "uint256" }, { "name": "dataGas", "type": "uint256" }, { "name": "gasPrice", "type": "uint256" }, { "name": "v", "type": "uint8[]" }, { "name": "r", "type": "bytes32[]" }, { "name": "s", "type": "bytes32[]" } ], "name": "execPayTransaction", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "executionGas", "type": "uint256" }, { "name": "dataGas", "type": "uint256" } ], "name": "totalGasCosts", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": false, "inputs": [ { "name": "to", "type": "address" }, { "name": "value", "type": "uint256" }, { "name": "data", "type": "bytes" }, { "name": "operation", "type": "uint8" } ], "name": "requiredTxGas", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "to", "type": "address" }, { "name": "value", "type": "uint256" }, { "name": "data", "type": "bytes" }, { "name": "operation", "type": "uint8" }, { "name": "safeTxGas", "type": "uint256" }, { "name": "dataGas", "type": "uint256" }, { "name": "gasPrice", "type": "uint256" }, { "name": "_nonce", "type": "uint256" } ], "name": "getTransactionHash", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b50612b38806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a51b01c1461012a5780632f54bf6e146102b1578063468721a71461030c5780634db5d039146103c4578063610b5925146104a85780637de7edef146104eb57806385e332cd1461052e57806386040aa9146105855780638cff6355146105f5578063a04222e11461064c578063a0e67e2b14610725578063a3f4df7e14610791578063ad8a045014610821578063affed0e01461086c578063b2494df314610897578063b7f3358d14610903578063b91a667f14610933578063c4ca3a9c14610983578063e009cfde14610a37578063e318b52b14610a9a578063e75235b814610b1d578063ffa1ad7414610b4e575b005b34801561013657600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610bde565b005b3480156102bd57600080fd5b506102f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ccb565b604051808215151515815260200191505060405180910390f35b34801561031857600080fd5b506103aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610d4d565b604051808215151515815260200191505060405180910390f35b3480156103d057600080fd5b5061048a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610dea565b60405180826000191660001916815260200191505060405180910390f35b3480156104b457600080fd5b506104e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611021565b005b3480156104f757600080fd5b5061052c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129e565b005b34801561053a57600080fd5b50610543611341565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059157600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611346565b005b34801561060157600080fd5b5061060a6115cc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065857600080fd5b5061072360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506115d1565b005b34801561073157600080fd5b5061073a6115eb565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561077d578082015181840152602081019050610762565b505050509050019250505060405180910390f35b34801561079d57600080fd5b506107a6611786565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e65780820151818401526020810190506107cb565b50505050905090810190601f1680156108135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082d57600080fd5b5061085660048036038101908080359060200190929190803590602001909291905050506117bf565b6040518082815260200191505060405180910390f35b34801561087857600080fd5b506108816117d4565b6040518082815260200191505060405180910390f35b3480156108a357600080fd5b506108ac6117da565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108ef5780820151818401526020810190506108d4565b505050509050019250505060405180910390f35b34801561090f57600080fd5b50610931600480360381019080803560ff169060200190929190505050611a81565b005b34801561093f57600080fd5b50610981600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b00565b005b34801561098f57600080fd5b50610a21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611db8565b6040518082815260200191505060405180910390f35b348015610a4357600080fd5b50610a98600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1e565b005b348015610aa657600080fd5b50610b1b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612051565b005b348015610b2957600080fd5b50610b326123e6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b5a57600080fd5b50610b636123fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ba3578082015181840152602081019050610b88565b50505050905090810190601f168015610bd05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000805a9150610c01610bf98d8d8d8d8d8d8d600554610dea565b868686612436565b60056000815480929190600101919050555087612af85a0310151515610c2657600080fd5b610c338c8c8c8c8c6125fd565b1515610c66577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b610c725a8303886117bf565b90503273ffffffffffffffffffffffffffffffffffffffff166108fc8783029081150290604051600060405180830381858888f19350505050158015610cbc573d6000803e3d6000fd5b50505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610dd357600080fd5b610de0858585855a6125fd565b9050949350505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308b8b8b8b8b8b8b8b604051808c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140188815260200187805190602001908083835b602083101515610f8e5780518252602082019150602081019050602083039250610f69565b6001836020036101000a038019825116818451168082178552505050505050905001866002811115610fbc57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018581526020018481526020018381526020018281526020019b5050505050505050505050506040518091039020905098975050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561105b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156110af5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156110ba57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561113e57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156112fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138057600080fd5b8060ff166001600354031015151561139757600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561143057600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156115c7576115c681611a81565b5b505050565b600181565b6115db84846126fa565b6115e5828261298b565b50505050565b6060806000806003546040519080825280602002602001820160405280156116225781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561177d578083838151811015156116d257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061168d565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156118ee57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611849565b8260405190808252806020026020018201604052801561191d5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611a78578181848151811015156119cd57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611988565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abb57600080fd5b6003548160ff1611151515611acf57600080fd5b60018160ff1610151515611ae257600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b3a57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611b8e5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611b9957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c1d57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611db457611db381611a81565b5b5050565b6000803073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611df557600080fd5b5a9050611e05868686865a6125fd565b1515611e1057600080fd5b5a8103915050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e5857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ef157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120df5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120ea57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561216e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561220757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156125f457600187878381518110151561246e57fe5b90602001906020020151878481518110151561248657fe5b90602001906020020151878581518110151561249e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015612519573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156125aa57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156125e457600080fd5b8192508080600101915050612443565b50505050505050565b6000806000600281111561260d57fe5b84600281111561261957fe5b14156126325761262b87878786612aca565b91506126f0565b6001600281111561263f57fe5b84600281111561264b57fe5b14156126635761265c878685612ae3565b91506126ef565b61266c85612afa565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561271f57600080fd5b84518460ff161115151561273257600080fd5b60018460ff161015151561274557600080fd5b60019250600091505b84518210156128e257848281518110151561276557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156127c55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156127d057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561285457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250818060010192505061274e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a1057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ac657612aba82825a612ae3565b1515612ac557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820ae084368703023e0af23298ba3bdd986ab72eb9889663044cee13cf3e0ae154c0029", "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a51b01c1461012a5780632f54bf6e146102b1578063468721a71461030c5780634db5d039146103c4578063610b5925146104a85780637de7edef146104eb57806385e332cd1461052e57806386040aa9146105855780638cff6355146105f5578063a04222e11461064c578063a0e67e2b14610725578063a3f4df7e14610791578063ad8a045014610821578063affed0e01461086c578063b2494df314610897578063b7f3358d14610903578063b91a667f14610933578063c4ca3a9c14610983578063e009cfde14610a37578063e318b52b14610a9a578063e75235b814610b1d578063ffa1ad7414610b4e575b005b34801561013657600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610bde565b005b3480156102bd57600080fd5b506102f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ccb565b604051808215151515815260200191505060405180910390f35b34801561031857600080fd5b506103aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610d4d565b604051808215151515815260200191505060405180910390f35b3480156103d057600080fd5b5061048a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610dea565b60405180826000191660001916815260200191505060405180910390f35b3480156104b457600080fd5b506104e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611021565b005b3480156104f757600080fd5b5061052c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129e565b005b34801561053a57600080fd5b50610543611341565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059157600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611346565b005b34801561060157600080fd5b5061060a6115cc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065857600080fd5b5061072360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506115d1565b005b34801561073157600080fd5b5061073a6115eb565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561077d578082015181840152602081019050610762565b505050509050019250505060405180910390f35b34801561079d57600080fd5b506107a6611786565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e65780820151818401526020810190506107cb565b50505050905090810190601f1680156108135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082d57600080fd5b5061085660048036038101908080359060200190929190803590602001909291905050506117bf565b6040518082815260200191505060405180910390f35b34801561087857600080fd5b506108816117d4565b6040518082815260200191505060405180910390f35b3480156108a357600080fd5b506108ac6117da565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108ef5780820151818401526020810190506108d4565b505050509050019250505060405180910390f35b34801561090f57600080fd5b50610931600480360381019080803560ff169060200190929190505050611a81565b005b34801561093f57600080fd5b50610981600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b00565b005b34801561098f57600080fd5b50610a21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611db8565b6040518082815260200191505060405180910390f35b348015610a4357600080fd5b50610a98600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1e565b005b348015610aa657600080fd5b50610b1b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612051565b005b348015610b2957600080fd5b50610b326123e6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b5a57600080fd5b50610b636123fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ba3578082015181840152602081019050610b88565b50505050905090810190601f168015610bd05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000805a9150610c01610bf98d8d8d8d8d8d8d600554610dea565b868686612436565b60056000815480929190600101919050555087612af85a0310151515610c2657600080fd5b610c338c8c8c8c8c6125fd565b1515610c66577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b610c725a8303886117bf565b90503273ffffffffffffffffffffffffffffffffffffffff166108fc8783029081150290604051600060405180830381858888f19350505050158015610cbc573d6000803e3d6000fd5b50505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610dd357600080fd5b610de0858585855a6125fd565b9050949350505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308b8b8b8b8b8b8b8b604051808c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140188815260200187805190602001908083835b602083101515610f8e5780518252602082019150602081019050602083039250610f69565b6001836020036101000a038019825116818451168082178552505050505050905001866002811115610fbc57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018581526020018481526020018381526020018281526020019b5050505050505050505050506040518091039020905098975050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561105b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156110af5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156110ba57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561113e57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156112fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138057600080fd5b8060ff166001600354031015151561139757600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561143057600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156115c7576115c681611a81565b5b505050565b600181565b6115db84846126fa565b6115e5828261298b565b50505050565b6060806000806003546040519080825280602002602001820160405280156116225781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561177d578083838151811015156116d257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061168d565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156118ee57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611849565b8260405190808252806020026020018201604052801561191d5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611a78578181848151811015156119cd57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611988565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abb57600080fd5b6003548160ff1611151515611acf57600080fd5b60018160ff1610151515611ae257600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b3a57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611b8e5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611b9957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c1d57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611db457611db381611a81565b5b5050565b6000803073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611df557600080fd5b5a9050611e05868686865a6125fd565b1515611e1057600080fd5b5a8103915050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e5857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ef157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120df5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120ea57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561216e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561220757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156125f457600187878381518110151561246e57fe5b90602001906020020151878481518110151561248657fe5b90602001906020020151878581518110151561249e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015612519573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156125aa57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156125e457600080fd5b8192508080600101915050612443565b50505050505050565b6000806000600281111561260d57fe5b84600281111561261957fe5b14156126325761262b87878786612aca565b91506126f0565b6001600281111561263f57fe5b84600281111561264b57fe5b14156126635761265c878685612ae3565b91506126ef565b61266c85612afa565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561271f57600080fd5b84518460ff161115151561273257600080fd5b60018460ff161015151561274557600080fd5b60019250600091505b84518210156128e257848281518110151561276557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156127c55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156127d057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561285457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250818060010192505061274e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a1057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ac657612aba82825a612ae3565b1515612ac557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820ae084368703023e0af23298ba3bdd986ab72eb9889663044cee13cf3e0ae154c0029", "sourceMap": "314:5262:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:5262:2;;;;;;;", "deployedSourceMap": "314:5262:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1443:1003;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1443:1003:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5150:424:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5150:424:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5052:458:7;;;;;;;;;;;;;;;;;382:60:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;382:60:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;382:60:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2878:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2878:209:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:20:2;;;;;;;;;;;;;;;;;;;;;;;4423:738:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4423:738:6;;;;;;;;;;;;;;;;;4398:318:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3786:299:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3786:299:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887::6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;448:40:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;448:40:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;448:40:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1443:1003;1748:16;2137;1767:9;1748:28;;1786:103;1796:83;1815:2;1819:5;1826:4;1832:9;1843;1854:7;1863:8;1873:5;;1796:18;:83::i;:::-;1881:1;1884;1887;1786:9;:103::i;:::-;1950:5;;:7;;;;;;;;;;;;;2008:9;602:5;1975:9;:29;:42;;1967:51;;;;;;;;2033:46;2041:2;2045:5;2052:4;2058:9;2069;2033:7;:46::i;:::-;2032:47;2028:100;;;2100:17;;;;;;;;;;2028:100;2156:44;2181:9;2170:8;:20;2192:7;2156:13;:44::i;:::-;2137:63;;2400:9;:18;;:39;2430:8;2419;:19;2400:39;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2400:39:2;1443:1003;;;;;;;;;;;;:::o;4841:129:7:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:6:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;5150:424:2:-;5435:7;5480:4;5475:10;;5492:1;5487:7;;5496:4;5502:2;5506:5;5513:4;5519:9;5530;5541:7;5550:8;5560:6;5465:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5465:102:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5458:109;;5150:424;;;;;;;;;;:::o;1235:391:6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:4:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:6:-;550:3;499:55;:::o;2776:573:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:1:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:7:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;382:60:2:-;;;;;;;;;;;;;;;;;;;;:::o;2878:209::-;2987:7;545:5;602;3033:7;3018:12;:22;:42;:62;3011:69;;2878:209;;;;:::o;644:20::-;;;;:::o;4423:738:6:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3786:299:2:-;3925:7;3948:16;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3967:9:2;3948:28;;3994:46;4002:2;4006:5;4013:4;4019:9;4030;3994:7;:46::i;:::-;3986:55;;;;;;;;4069:9;4058:8;:20;4051:27;;3786:299;;;;;;;:::o;1887::6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;448:40:2:-;;;;;;;;;;;;;;;;;;;;:::o;4091:541::-;4257:17;4297:20;4327:9;4285:1;4257:30;;4397:1;4393:5;;4388:238;4404:9;;;;;;;;;;;4400:13;;:1;:13;4388:238;;;4449:33;4459:4;4465:1;4467;4465:4;;;;;;;;;;;;;;;;;;4471:1;4473;4471:4;;;;;;;;;;;;;;;;;;4477:1;4479;4477:4;;;;;;;;;;;;;;;;;;4449:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4449:33:2;;;;;;;;4434:48;;4528:1;4504:6;:20;4511:12;4504:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;4496:34;;;;;;;;4567:9;4552:24;;:12;:24;;;4544:33;;;;;;;;4603:12;4591:24;;4415:3;;;;;;;4388:238;;;4091:541;;;;;;;:::o;2905:548:6:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:7:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", "source": "pragma solidity 0.4.23;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 11000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execPayTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas);\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n\n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(gasCosts * gasPrice);\n }\n\n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method can only be used by the safe itself in a transaction. When estimating set `from` to the address of the safe.\n /// Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execPayTransaction`\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).\n function requiredTxGas(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n require(execute(to, value, data, operation, gasleft()));\n return startGas - gasleft();\n }\n\n function checkHash(bytes32 hash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(hash, v[i], r[i], s[i]);\n require(owners[currentOwner] != 0);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param safeTxGas Fas that should be used for the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Maximum gas price that should be used for this transaction.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas, \n uint256 dataGas, \n uint256 gasPrice, \n uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, _nonce);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ 324 ] }, "id": 325, "nodeType": "SourceUnit", "nodes": [ { "id": 41, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", "src": "0:23:2" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", "id": 42, "nodeType": "ImportDirective", "scope": 325, "sourceUnit": 40, "src": "24:26:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", "id": 43, "nodeType": "ImportDirective", "scope": 325, "sourceUnit": 581, "src": "51:26:2", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 44, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 580, "src": "352:10:2", "typeDescriptions": { "typeIdentifier": "t_contract$_MasterCopy_$580", "typeString": "contract MasterCopy" } }, "id": 45, "nodeType": "InheritanceSpecifier", "src": "352:10:2" }, { "arguments": null, "baseName": { "contractScope": null, "id": 46, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 39, "src": "364:10:2", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$39", "typeString": "contract GnosisSafe" } }, "id": 47, "nodeType": "InheritanceSpecifier", "src": "364:10:2" } ], "contractDependencies": [ 39, 580, 971, 1343, 1359 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, "id": 324, "linearizedBaseContracts": [ 324, 39, 1343, 971, 580, 1359 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 50, "name": "NAME", "nodeType": "VariableDeclaration", "scope": 324, "src": "382:60:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string" }, "typeName": { "id": 48, "name": "string", "nodeType": "ElementaryTypeName", "src": "382:6:2", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "476e6f736973205361666520506572736f6e616c2045646974696f6e", "id": 49, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "412:30:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154", "typeString": "literal_string \"Gnosis Safe Personal Edition\"" }, "value": "Gnosis Safe Personal Edition" }, "visibility": "public" }, { "constant": true, "id": 53, "name": "VERSION", "nodeType": "VariableDeclaration", "scope": 324, "src": "448:40:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string" }, "typeName": { "id": 51, "name": "string", "nodeType": "ElementaryTypeName", "src": "448:6:2", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "302e302e31", "id": 52, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "481:7:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", "typeString": "literal_string \"0.0.1\"" }, "value": "0.0.1" }, "visibility": "public" }, { "constant": true, "id": 56, "name": "BASE_TX_GAS_COSTS", "nodeType": "VariableDeclaration", "scope": 324, "src": "499:51:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 54, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "499:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": { "argumentTypes": null, "hexValue": "3231303030", "id": 55, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "545:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_21000_by_1", "typeString": "int_const 21000" }, "value": "21000" }, "visibility": "internal" }, { "constant": true, "id": 59, "name": "PAYMENT_GAS_COSTS", "nodeType": "VariableDeclaration", "scope": 324, "src": "556:51:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 57, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "556:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": { "argumentTypes": null, "hexValue": "3131303030", "id": 58, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "602:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_11000_by_1", "typeString": "int_const 11000" }, "value": "11000" }, "visibility": "internal" }, { "anonymous": false, "documentation": null, "id": 61, "name": "ExecutionFailed", "nodeType": "EventDefinition", "parameters": { "id": 60, "nodeType": "ParameterList", "parameters": [], "src": "635:2:2" }, "src": "614:24:2" }, { "constant": false, "id": 63, "name": "nonce", "nodeType": "VariableDeclaration", "scope": 324, "src": "644:20:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 62, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "644:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "public" }, { "body": { "id": 155, "nodeType": "Block", "src": "1738:708:2", "statements": [ { "assignments": [ 90 ], "declarations": [ { "constant": false, "id": 90, "name": "startGas", "nodeType": "VariableDeclaration", "scope": 156, "src": "1748:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 89, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1748:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 93, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 91, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2389, "src": "1767:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 92, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1767:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "1748:28:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 96, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 65, "src": "1815:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 97, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 67, "src": "1819:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 98, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 69, "src": "1826:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "argumentTypes": null, "id": 99, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 71, "src": "1832:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, "id": 100, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 73, "src": "1843:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 101, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 75, "src": "1854:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 102, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, "src": "1863:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 103, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 63, "src": "1873:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 95, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 323, "src": "1796:18:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,uint256) view returns (bytes32)" } }, "id": 104, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1796:83:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 105, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 80, "src": "1881:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, { "argumentTypes": null, "id": 106, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 83, "src": "1884:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, { "argumentTypes": null, "id": 107, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, "src": "1887:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" }, { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" }, { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } ], "id": 94, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 283, "src": "1786:9:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, "id": 108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1786:103:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 109, "nodeType": "ExpressionStatement", "src": "1786:103:2" }, { "expression": { "argumentTypes": null, "id": 111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1950:7:2", "subExpression": { "argumentTypes": null, "id": 110, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 63, "src": "1950:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 112, "nodeType": "ExpressionStatement", "src": "1950:7:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 114, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2389, "src": "1975:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 115, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1975:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "id": 116, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 59, "src": "1987:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1975:29:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 118, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 73, "src": "2008:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1975:42:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 113, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "1967:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1967:51:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 121, "nodeType": "ExpressionStatement", "src": "1967:51:2" }, { "condition": { "argumentTypes": null, "id": 129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2032:47:2", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 123, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 65, "src": "2041:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 124, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 67, "src": "2045:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 125, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 69, "src": "2052:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "argumentTypes": null, "id": 126, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 71, "src": "2058:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, "id": 127, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 73, "src": "2069:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 122, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 860, "src": "2033:7:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, "id": 128, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2033:46:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 134, "nodeType": "IfStatement", "src": "2028:100:2", "trueBody": { "id": 133, "nodeType": "Block", "src": "2081:47:2", "statements": [ { "eventCall": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 130, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 61, "src": "2100:15:2", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 131, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2100:17:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 132, "nodeType": "EmitStatement", "src": "2095:22:2" } ] } }, { "assignments": [ 136 ], "declarations": [ { "constant": false, "id": 136, "name": "gasCosts", "nodeType": "VariableDeclaration", "scope": 156, "src": "2137:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 135, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2137:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 144, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 141, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 138, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "2170:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 139, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2389, "src": "2181:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 140, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2181:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2170:20:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 142, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 75, "src": "2192:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 137, "name": "totalGasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "2156:13:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 143, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2156:44:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "2137:63:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 150, "name": "gasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "2419:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "id": 151, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, "src": "2430:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2419:19:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 145, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2408, "src": "2400:2:2", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, "id": 148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2400:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 149, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2400:18:2", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 153, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2400:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 154, "nodeType": "ExpressionStatement", "src": "2400:39:2" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", "id": 156, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "execPayTransaction", "nodeType": "FunctionDefinition", "parameters": { "id": 87, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 65, "name": "to", "nodeType": "VariableDeclaration", "scope": 156, "src": "1480:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 64, "name": "address", "nodeType": "ElementaryTypeName", "src": "1480:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 67, "name": "value", "nodeType": "VariableDeclaration", "scope": 156, "src": "1501:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 66, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1501:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 69, "name": "data", "nodeType": "VariableDeclaration", "scope": 156, "src": "1525:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 68, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1525:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 71, "name": "operation", "nodeType": "VariableDeclaration", "scope": 156, "src": "1546:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, "id": 70, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5, "src": "1546:14:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 73, "name": "safeTxGas", "nodeType": "VariableDeclaration", "scope": 156, "src": "1581:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 72, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1581:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 75, "name": "dataGas", "nodeType": "VariableDeclaration", "scope": 156, "src": "1608:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 74, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1608:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 77, "name": "gasPrice", "nodeType": "VariableDeclaration", "scope": 156, "src": "1633:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 76, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1633:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 80, "name": "v", "nodeType": "VariableDeclaration", "scope": 156, "src": "1659:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[]" }, "typeName": { "baseType": { "id": 78, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1659:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 79, "length": null, "nodeType": "ArrayTypeName", "src": "1659:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 83, "name": "r", "nodeType": "VariableDeclaration", "scope": 156, "src": "1679:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[]" }, "typeName": { "baseType": { "id": 81, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1679:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 82, "length": null, "nodeType": "ArrayTypeName", "src": "1679:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 86, "name": "s", "nodeType": "VariableDeclaration", "scope": 156, "src": "1701:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[]" }, "typeName": { "baseType": { "id": 84, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1701:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 85, "length": null, "nodeType": "ArrayTypeName", "src": "1701:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" } }, "value": null, "visibility": "internal" } ], "src": "1470:248:2" }, "payable": false, "returnParameters": { "id": 88, "nodeType": "ParameterList", "parameters": [], "src": "1738:0:2" }, "scope": 324, "src": "1443:1003:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 173, "nodeType": "Block", "src": "3001:86:2", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 165, "name": "executionGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 158, "src": "3018:12:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 166, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 160, "src": "3033:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3018:22:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 168, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 59, "src": "3043:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3018:42:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 170, "name": "BASE_TX_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 56, "src": "3063:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3018:62:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 164, "id": 172, "nodeType": "Return", "src": "3011:69:2" } ] }, "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", "id": 174, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "totalGasCosts", "nodeType": "FunctionDefinition", "parameters": { "id": 161, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 158, "name": "executionGas", "nodeType": "VariableDeclaration", "scope": 174, "src": "2901:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 157, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2901:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 160, "name": "dataGas", "nodeType": "VariableDeclaration", "scope": 174, "src": "2923:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 159, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2923:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2900:39:2" }, "payable": false, "returnParameters": { "id": 164, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 163, "name": "", "nodeType": "VariableDeclaration", "scope": 174, "src": "2987:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 162, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2987:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2986:9:2" }, "scope": 324, "src": "2878:209:2", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { "id": 210, "nodeType": "Block", "src": "3938:147:2", "statements": [ { "assignments": [ 190 ], "declarations": [ { "constant": false, "id": 190, "name": "startGas", "nodeType": "VariableDeclaration", "scope": 211, "src": "3948:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 189, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3948:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 193, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 191, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2389, "src": "3967:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3967:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "3948:28:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 196, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 176, "src": "4002:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 197, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 178, "src": "4006:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 198, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 180, "src": "4013:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "argumentTypes": null, "id": 199, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 182, "src": "4019:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 200, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2389, "src": "4030:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4030:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 195, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 860, "src": "3994:7:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, "id": 202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3994:46:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 194, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "3986:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 203, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3986:55:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 204, "nodeType": "ExpressionStatement", "src": "3986:55:2" }, { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 205, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 190, "src": "4058:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 206, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2389, "src": "4069:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 207, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4069:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4058:20:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 188, "id": 209, "nodeType": "Return", "src": "4051:27:2" } ] }, "documentation": "@dev Allows to estimate a Safe transaction. \n This method can only be used by the safe itself in a transaction. When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", "id": 211, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 185, "modifierName": { "argumentTypes": null, "id": 184, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "3897:10:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3897:10:2" } ], "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { "id": 183, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 176, "name": "to", "nodeType": "VariableDeclaration", "scope": 211, "src": "3809:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 175, "name": "address", "nodeType": "ElementaryTypeName", "src": "3809:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 178, "name": "value", "nodeType": "VariableDeclaration", "scope": 211, "src": "3821:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 177, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3821:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 180, "name": "data", "nodeType": "VariableDeclaration", "scope": 211, "src": "3836:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 179, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3836:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 182, "name": "operation", "nodeType": "VariableDeclaration", "scope": 211, "src": "3848:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, "id": 181, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5, "src": "3848:14:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, "value": null, "visibility": "internal" } ], "src": "3808:65:2" }, "payable": false, "returnParameters": { "id": 188, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 187, "name": "", "nodeType": "VariableDeclaration", "scope": 211, "src": "3925:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 186, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3925:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3924:9:2" }, "scope": 324, "src": "3786:299:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 282, "nodeType": "Block", "src": "4195:437:2", "statements": [ { "assignments": [ 226 ], "declarations": [ { "constant": false, "id": 226, "name": "lastOwner", "nodeType": "VariableDeclaration", "scope": 283, "src": "4257:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 225, "name": "address", "nodeType": "ElementaryTypeName", "src": "4257:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 230, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 228, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4285:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 227, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4277:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 229, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4277:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "4257:30:2" }, { "assignments": [], "declarations": [ { "constant": false, "id": 232, "name": "currentOwner", "nodeType": "VariableDeclaration", "scope": 283, "src": "4297:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 231, "name": "address", "nodeType": "ElementaryTypeName", "src": "4297:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 233, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "4297:20:2" }, { "assignments": [], "declarations": [ { "constant": false, "id": 235, "name": "i", "nodeType": "VariableDeclaration", "scope": 283, "src": "4327:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 234, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4327:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 236, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "4327:9:2" }, { "body": { "id": 280, "nodeType": "Block", "src": "4420:206:2", "statements": [ { "expression": { "argumentTypes": null, "id": 260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 247, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, "src": "4434:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 249, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, "src": "4459:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 250, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 216, "src": "4465:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, "id": 252, "indexExpression": { "argumentTypes": null, "id": 251, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "4467:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4465:4:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 253, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 219, "src": "4471:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, "id": 255, "indexExpression": { "argumentTypes": null, "id": 254, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "4473:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4471:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 256, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "4477:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, "id": 258, "indexExpression": { "argumentTypes": null, "id": 257, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "4479:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4477:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 248, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2388, "src": "4449:9:2", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, "id": 259, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4449:33:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4434:48:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 261, "nodeType": "ExpressionStatement", "src": "4434:48:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 263, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4504:6:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 265, "indexExpression": { "argumentTypes": null, "id": 264, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, "src": "4511:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4504:20:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4528:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4504:25:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 262, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "4496:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 268, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4496:34:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 269, "nodeType": "ExpressionStatement", "src": "4496:34:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 271, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, "src": "4552:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "id": 272, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, "src": "4567:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4552:24:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 270, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "4544:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 274, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4544:33:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 275, "nodeType": "ExpressionStatement", "src": "4544:33:2" }, { "expression": { "argumentTypes": null, "id": 278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 276, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, "src": "4591:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 277, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, "src": "4603:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4591:24:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 279, "nodeType": "ExpressionStatement", "src": "4591:24:2" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 241, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "4400:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 242, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "4404:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4400:13:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 281, "initializationExpression": { "expression": { "argumentTypes": null, "id": 239, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 237, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "4393:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 238, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4397:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4393:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 240, "nodeType": "ExpressionStatement", "src": "4393:5:2" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4415:3:2", "subExpression": { "argumentTypes": null, "id": 244, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "4415:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 246, "nodeType": "ExpressionStatement", "src": "4415:3:2" }, "nodeType": "ForStatement", "src": "4388:238:2" } ] }, "documentation": null, "id": 283, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { "id": 223, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 213, "name": "hash", "nodeType": "VariableDeclaration", "scope": 283, "src": "4110:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 212, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4110:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 216, "name": "v", "nodeType": "VariableDeclaration", "scope": 283, "src": "4124:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[]" }, "typeName": { "baseType": { "id": 214, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4124:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 215, "length": null, "nodeType": "ArrayTypeName", "src": "4124:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 219, "name": "r", "nodeType": "VariableDeclaration", "scope": 283, "src": "4135:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[]" }, "typeName": { "baseType": { "id": 217, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4135:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 218, "length": null, "nodeType": "ArrayTypeName", "src": "4135:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 222, "name": "s", "nodeType": "VariableDeclaration", "scope": 283, "src": "4148:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[]" }, "typeName": { "baseType": { "id": 220, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4148:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 221, "length": null, "nodeType": "ArrayTypeName", "src": "4148:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" } }, "value": null, "visibility": "internal" } ], "src": "4109:51:2" }, "payable": false, "returnParameters": { "id": 224, "nodeType": "ParameterList", "parameters": [], "src": "4195:0:2" }, "scope": 324, "src": "4091:541:2", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { "id": 322, "nodeType": "Block", "src": "5448:126:2", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30783139", "id": 306, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5480:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", "typeString": "int_const 25" }, "value": "0x19" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_25_by_1", "typeString": "int_const 25" } ], "id": 305, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5475:4:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, "id": 307, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5475:10:2", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 309, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5492:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 308, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5487:4:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, "id": 310, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5487:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, { "argumentTypes": null, "id": 311, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2423, "src": "5496:4:2", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", "typeString": "contract GnosisSafePersonalEdition" } }, { "argumentTypes": null, "id": 312, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 285, "src": "5502:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 313, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "5506:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 314, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 289, "src": "5513:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "argumentTypes": null, "id": 315, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 291, "src": "5519:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, "id": 316, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 293, "src": "5530:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 317, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 295, "src": "5541:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 318, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "5550:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 319, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 299, "src": "5560:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes1", "typeString": "bytes1" }, { "typeIdentifier": "t_bytes1", "typeString": "bytes1" }, { "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", "typeString": "contract GnosisSafePersonalEdition" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 304, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2390, "src": "5465:9:2", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, "id": 320, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5465:102:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "functionReturnParameters": 303, "id": 321, "nodeType": "Return", "src": "5458:109:2" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param _nonce Transaction nonce.\n @return Transaction hash.", "id": 323, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { "id": 300, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 285, "name": "to", "nodeType": "VariableDeclaration", "scope": 323, "src": "5187:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 284, "name": "address", "nodeType": "ElementaryTypeName", "src": "5187:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 287, "name": "value", "nodeType": "VariableDeclaration", "scope": 323, "src": "5208:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 286, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5208:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 289, "name": "data", "nodeType": "VariableDeclaration", "scope": 323, "src": "5232:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 288, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5232:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 291, "name": "operation", "nodeType": "VariableDeclaration", "scope": 323, "src": "5253:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, "id": 290, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5, "src": "5253:14:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 293, "name": "safeTxGas", "nodeType": "VariableDeclaration", "scope": 323, "src": "5288:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 292, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5288:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 295, "name": "dataGas", "nodeType": "VariableDeclaration", "scope": 323, "src": "5316:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 294, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5316:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 297, "name": "gasPrice", "nodeType": "VariableDeclaration", "scope": 323, "src": "5342:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 296, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5342:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 299, "name": "_nonce", "nodeType": "VariableDeclaration", "scope": 323, "src": "5369:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 298, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5369:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "5177:212:2" }, "payable": false, "returnParameters": { "id": 303, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 302, "name": "", "nodeType": "VariableDeclaration", "scope": 323, "src": "5435:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 301, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5435:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "5434:9:2" }, "scope": 324, "src": "5150:424:2", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 325, "src": "314:5262:2" } ], "src": "0:5577:2" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ 324 ] }, "id": 325, "nodeType": "SourceUnit", "nodes": [ { "id": 41, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", "src": "0:23:2" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", "id": 42, "nodeType": "ImportDirective", "scope": 325, "sourceUnit": 40, "src": "24:26:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", "id": 43, "nodeType": "ImportDirective", "scope": 325, "sourceUnit": 581, "src": "51:26:2", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 44, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 580, "src": "352:10:2", "typeDescriptions": { "typeIdentifier": "t_contract$_MasterCopy_$580", "typeString": "contract MasterCopy" } }, "id": 45, "nodeType": "InheritanceSpecifier", "src": "352:10:2" }, { "arguments": null, "baseName": { "contractScope": null, "id": 46, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 39, "src": "364:10:2", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$39", "typeString": "contract GnosisSafe" } }, "id": 47, "nodeType": "InheritanceSpecifier", "src": "364:10:2" } ], "contractDependencies": [ 39, 580, 971, 1343, 1359 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, "id": 324, "linearizedBaseContracts": [ 324, 39, 1343, 971, 580, 1359 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 50, "name": "NAME", "nodeType": "VariableDeclaration", "scope": 324, "src": "382:60:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string" }, "typeName": { "id": 48, "name": "string", "nodeType": "ElementaryTypeName", "src": "382:6:2", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "476e6f736973205361666520506572736f6e616c2045646974696f6e", "id": 49, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "412:30:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154", "typeString": "literal_string \"Gnosis Safe Personal Edition\"" }, "value": "Gnosis Safe Personal Edition" }, "visibility": "public" }, { "constant": true, "id": 53, "name": "VERSION", "nodeType": "VariableDeclaration", "scope": 324, "src": "448:40:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string" }, "typeName": { "id": 51, "name": "string", "nodeType": "ElementaryTypeName", "src": "448:6:2", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "302e302e31", "id": 52, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "481:7:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", "typeString": "literal_string \"0.0.1\"" }, "value": "0.0.1" }, "visibility": "public" }, { "constant": true, "id": 56, "name": "BASE_TX_GAS_COSTS", "nodeType": "VariableDeclaration", "scope": 324, "src": "499:51:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 54, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "499:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": { "argumentTypes": null, "hexValue": "3231303030", "id": 55, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "545:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_21000_by_1", "typeString": "int_const 21000" }, "value": "21000" }, "visibility": "internal" }, { "constant": true, "id": 59, "name": "PAYMENT_GAS_COSTS", "nodeType": "VariableDeclaration", "scope": 324, "src": "556:51:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 57, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "556:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": { "argumentTypes": null, "hexValue": "3131303030", "id": 58, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "602:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_11000_by_1", "typeString": "int_const 11000" }, "value": "11000" }, "visibility": "internal" }, { "anonymous": false, "documentation": null, "id": 61, "name": "ExecutionFailed", "nodeType": "EventDefinition", "parameters": { "id": 60, "nodeType": "ParameterList", "parameters": [], "src": "635:2:2" }, "src": "614:24:2" }, { "constant": false, "id": 63, "name": "nonce", "nodeType": "VariableDeclaration", "scope": 324, "src": "644:20:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 62, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "644:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "public" }, { "body": { "id": 155, "nodeType": "Block", "src": "1738:708:2", "statements": [ { "assignments": [ 90 ], "declarations": [ { "constant": false, "id": 90, "name": "startGas", "nodeType": "VariableDeclaration", "scope": 156, "src": "1748:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 89, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1748:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 93, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 91, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2389, "src": "1767:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 92, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1767:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "1748:28:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 96, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 65, "src": "1815:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 97, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 67, "src": "1819:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 98, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 69, "src": "1826:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "argumentTypes": null, "id": 99, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 71, "src": "1832:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, "id": 100, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 73, "src": "1843:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 101, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 75, "src": "1854:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 102, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, "src": "1863:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 103, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 63, "src": "1873:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 95, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 323, "src": "1796:18:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,uint256) view returns (bytes32)" } }, "id": 104, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1796:83:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 105, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 80, "src": "1881:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, { "argumentTypes": null, "id": 106, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 83, "src": "1884:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, { "argumentTypes": null, "id": 107, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, "src": "1887:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" }, { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" }, { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } ], "id": 94, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 283, "src": "1786:9:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, "id": 108, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1786:103:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 109, "nodeType": "ExpressionStatement", "src": "1786:103:2" }, { "expression": { "argumentTypes": null, "id": 111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1950:7:2", "subExpression": { "argumentTypes": null, "id": 110, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 63, "src": "1950:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 112, "nodeType": "ExpressionStatement", "src": "1950:7:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 114, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2389, "src": "1975:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 115, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1975:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "id": 116, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 59, "src": "1987:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1975:29:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 118, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 73, "src": "2008:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1975:42:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 113, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "1967:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1967:51:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 121, "nodeType": "ExpressionStatement", "src": "1967:51:2" }, { "condition": { "argumentTypes": null, "id": 129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2032:47:2", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 123, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 65, "src": "2041:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 124, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 67, "src": "2045:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 125, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 69, "src": "2052:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "argumentTypes": null, "id": 126, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 71, "src": "2058:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, "id": 127, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 73, "src": "2069:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 122, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 860, "src": "2033:7:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, "id": 128, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2033:46:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 134, "nodeType": "IfStatement", "src": "2028:100:2", "trueBody": { "id": 133, "nodeType": "Block", "src": "2081:47:2", "statements": [ { "eventCall": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 130, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 61, "src": "2100:15:2", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 131, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2100:17:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 132, "nodeType": "EmitStatement", "src": "2095:22:2" } ] } }, { "assignments": [ 136 ], "declarations": [ { "constant": false, "id": 136, "name": "gasCosts", "nodeType": "VariableDeclaration", "scope": 156, "src": "2137:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 135, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2137:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 144, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 141, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 138, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, "src": "2170:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 139, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2389, "src": "2181:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 140, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2181:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2170:20:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 142, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 75, "src": "2192:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 137, "name": "totalGasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 174, "src": "2156:13:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 143, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2156:44:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "2137:63:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 150, "name": "gasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "2419:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "id": 151, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, "src": "2430:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2419:19:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 145, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2408, "src": "2400:2:2", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, "id": 148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2400:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 149, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2400:18:2", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 153, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2400:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 154, "nodeType": "ExpressionStatement", "src": "2400:39:2" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", "id": 156, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "execPayTransaction", "nodeType": "FunctionDefinition", "parameters": { "id": 87, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 65, "name": "to", "nodeType": "VariableDeclaration", "scope": 156, "src": "1480:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 64, "name": "address", "nodeType": "ElementaryTypeName", "src": "1480:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 67, "name": "value", "nodeType": "VariableDeclaration", "scope": 156, "src": "1501:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 66, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1501:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 69, "name": "data", "nodeType": "VariableDeclaration", "scope": 156, "src": "1525:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 68, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1525:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 71, "name": "operation", "nodeType": "VariableDeclaration", "scope": 156, "src": "1546:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, "id": 70, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5, "src": "1546:14:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 73, "name": "safeTxGas", "nodeType": "VariableDeclaration", "scope": 156, "src": "1581:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 72, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1581:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 75, "name": "dataGas", "nodeType": "VariableDeclaration", "scope": 156, "src": "1608:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 74, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1608:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 77, "name": "gasPrice", "nodeType": "VariableDeclaration", "scope": 156, "src": "1633:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 76, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1633:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 80, "name": "v", "nodeType": "VariableDeclaration", "scope": 156, "src": "1659:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[]" }, "typeName": { "baseType": { "id": 78, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1659:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 79, "length": null, "nodeType": "ArrayTypeName", "src": "1659:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 83, "name": "r", "nodeType": "VariableDeclaration", "scope": 156, "src": "1679:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[]" }, "typeName": { "baseType": { "id": 81, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1679:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 82, "length": null, "nodeType": "ArrayTypeName", "src": "1679:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 86, "name": "s", "nodeType": "VariableDeclaration", "scope": 156, "src": "1701:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[]" }, "typeName": { "baseType": { "id": 84, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1701:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 85, "length": null, "nodeType": "ArrayTypeName", "src": "1701:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" } }, "value": null, "visibility": "internal" } ], "src": "1470:248:2" }, "payable": false, "returnParameters": { "id": 88, "nodeType": "ParameterList", "parameters": [], "src": "1738:0:2" }, "scope": 324, "src": "1443:1003:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 173, "nodeType": "Block", "src": "3001:86:2", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 165, "name": "executionGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 158, "src": "3018:12:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 166, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 160, "src": "3033:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3018:22:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 168, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 59, "src": "3043:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3018:42:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 170, "name": "BASE_TX_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 56, "src": "3063:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3018:62:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 164, "id": 172, "nodeType": "Return", "src": "3011:69:2" } ] }, "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", "id": 174, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "totalGasCosts", "nodeType": "FunctionDefinition", "parameters": { "id": 161, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 158, "name": "executionGas", "nodeType": "VariableDeclaration", "scope": 174, "src": "2901:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 157, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2901:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 160, "name": "dataGas", "nodeType": "VariableDeclaration", "scope": 174, "src": "2923:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 159, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2923:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2900:39:2" }, "payable": false, "returnParameters": { "id": 164, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 163, "name": "", "nodeType": "VariableDeclaration", "scope": 174, "src": "2987:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 162, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2987:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2986:9:2" }, "scope": 324, "src": "2878:209:2", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { "id": 210, "nodeType": "Block", "src": "3938:147:2", "statements": [ { "assignments": [ 190 ], "declarations": [ { "constant": false, "id": 190, "name": "startGas", "nodeType": "VariableDeclaration", "scope": 211, "src": "3948:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 189, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3948:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 193, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 191, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2389, "src": "3967:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3967:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "3948:28:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 196, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 176, "src": "4002:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 197, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 178, "src": "4006:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 198, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 180, "src": "4013:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "argumentTypes": null, "id": 199, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 182, "src": "4019:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 200, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2389, "src": "4030:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4030:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 195, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 860, "src": "3994:7:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, "id": 202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3994:46:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 194, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "3986:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 203, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3986:55:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 204, "nodeType": "ExpressionStatement", "src": "3986:55:2" }, { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 205, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 190, "src": "4058:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 206, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2389, "src": "4069:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 207, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4069:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4058:20:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 188, "id": 209, "nodeType": "Return", "src": "4051:27:2" } ] }, "documentation": "@dev Allows to estimate a Safe transaction. \n This method can only be used by the safe itself in a transaction. When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", "id": 211, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 185, "modifierName": { "argumentTypes": null, "id": 184, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "3897:10:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3897:10:2" } ], "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { "id": 183, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 176, "name": "to", "nodeType": "VariableDeclaration", "scope": 211, "src": "3809:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 175, "name": "address", "nodeType": "ElementaryTypeName", "src": "3809:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 178, "name": "value", "nodeType": "VariableDeclaration", "scope": 211, "src": "3821:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 177, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3821:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 180, "name": "data", "nodeType": "VariableDeclaration", "scope": 211, "src": "3836:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 179, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3836:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 182, "name": "operation", "nodeType": "VariableDeclaration", "scope": 211, "src": "3848:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, "id": 181, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5, "src": "3848:14:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, "value": null, "visibility": "internal" } ], "src": "3808:65:2" }, "payable": false, "returnParameters": { "id": 188, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 187, "name": "", "nodeType": "VariableDeclaration", "scope": 211, "src": "3925:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 186, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3925:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3924:9:2" }, "scope": 324, "src": "3786:299:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 282, "nodeType": "Block", "src": "4195:437:2", "statements": [ { "assignments": [ 226 ], "declarations": [ { "constant": false, "id": 226, "name": "lastOwner", "nodeType": "VariableDeclaration", "scope": 283, "src": "4257:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 225, "name": "address", "nodeType": "ElementaryTypeName", "src": "4257:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 230, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 228, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4285:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 227, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4277:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 229, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4277:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "4257:30:2" }, { "assignments": [], "declarations": [ { "constant": false, "id": 232, "name": "currentOwner", "nodeType": "VariableDeclaration", "scope": 283, "src": "4297:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 231, "name": "address", "nodeType": "ElementaryTypeName", "src": "4297:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 233, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "4297:20:2" }, { "assignments": [], "declarations": [ { "constant": false, "id": 235, "name": "i", "nodeType": "VariableDeclaration", "scope": 283, "src": "4327:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 234, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4327:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 236, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "4327:9:2" }, { "body": { "id": 280, "nodeType": "Block", "src": "4420:206:2", "statements": [ { "expression": { "argumentTypes": null, "id": 260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 247, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, "src": "4434:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 249, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, "src": "4459:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 250, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 216, "src": "4465:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, "id": 252, "indexExpression": { "argumentTypes": null, "id": 251, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "4467:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4465:4:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 253, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 219, "src": "4471:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, "id": 255, "indexExpression": { "argumentTypes": null, "id": 254, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "4473:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4471:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 256, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 222, "src": "4477:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, "id": 258, "indexExpression": { "argumentTypes": null, "id": 257, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "4479:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4477:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 248, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2388, "src": "4449:9:2", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, "id": 259, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4449:33:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4434:48:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 261, "nodeType": "ExpressionStatement", "src": "4434:48:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 263, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 985, "src": "4504:6:2", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, "id": 265, "indexExpression": { "argumentTypes": null, "id": 264, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, "src": "4511:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4504:20:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4528:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4504:25:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 262, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "4496:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 268, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4496:34:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 269, "nodeType": "ExpressionStatement", "src": "4496:34:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 271, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, "src": "4552:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "id": 272, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, "src": "4567:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4552:24:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 270, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "4544:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 274, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4544:33:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 275, "nodeType": "ExpressionStatement", "src": "4544:33:2" }, { "expression": { "argumentTypes": null, "id": 278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 276, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 226, "src": "4591:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 277, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, "src": "4603:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4591:24:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 279, "nodeType": "ExpressionStatement", "src": "4591:24:2" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 241, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "4400:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 242, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 989, "src": "4404:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4400:13:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 281, "initializationExpression": { "expression": { "argumentTypes": null, "id": 239, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 237, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "4393:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 238, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4397:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4393:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 240, "nodeType": "ExpressionStatement", "src": "4393:5:2" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4415:3:2", "subExpression": { "argumentTypes": null, "id": 244, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "4415:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 246, "nodeType": "ExpressionStatement", "src": "4415:3:2" }, "nodeType": "ForStatement", "src": "4388:238:2" } ] }, "documentation": null, "id": 283, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { "id": 223, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 213, "name": "hash", "nodeType": "VariableDeclaration", "scope": 283, "src": "4110:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 212, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4110:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 216, "name": "v", "nodeType": "VariableDeclaration", "scope": 283, "src": "4124:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[]" }, "typeName": { "baseType": { "id": 214, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4124:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 215, "length": null, "nodeType": "ArrayTypeName", "src": "4124:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 219, "name": "r", "nodeType": "VariableDeclaration", "scope": 283, "src": "4135:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[]" }, "typeName": { "baseType": { "id": 217, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4135:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 218, "length": null, "nodeType": "ArrayTypeName", "src": "4135:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 222, "name": "s", "nodeType": "VariableDeclaration", "scope": 283, "src": "4148:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[]" }, "typeName": { "baseType": { "id": 220, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4148:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 221, "length": null, "nodeType": "ArrayTypeName", "src": "4148:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" } }, "value": null, "visibility": "internal" } ], "src": "4109:51:2" }, "payable": false, "returnParameters": { "id": 224, "nodeType": "ParameterList", "parameters": [], "src": "4195:0:2" }, "scope": 324, "src": "4091:541:2", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { "id": 322, "nodeType": "Block", "src": "5448:126:2", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30783139", "id": 306, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5480:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", "typeString": "int_const 25" }, "value": "0x19" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_25_by_1", "typeString": "int_const 25" } ], "id": 305, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5475:4:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, "id": 307, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5475:10:2", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 309, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5492:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 308, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5487:4:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, "id": 310, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5487:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, { "argumentTypes": null, "id": 311, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2423, "src": "5496:4:2", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", "typeString": "contract GnosisSafePersonalEdition" } }, { "argumentTypes": null, "id": 312, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 285, "src": "5502:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 313, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "5506:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 314, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 289, "src": "5513:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "argumentTypes": null, "id": 315, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 291, "src": "5519:9:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, "id": 316, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 293, "src": "5530:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 317, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 295, "src": "5541:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 318, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 297, "src": "5550:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 319, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 299, "src": "5560:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes1", "typeString": "bytes1" }, { "typeIdentifier": "t_bytes1", "typeString": "bytes1" }, { "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", "typeString": "contract GnosisSafePersonalEdition" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 304, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2390, "src": "5465:9:2", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, "id": 320, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5465:102:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "functionReturnParameters": 303, "id": 321, "nodeType": "Return", "src": "5458:109:2" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param _nonce Transaction nonce.\n @return Transaction hash.", "id": 323, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { "id": 300, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 285, "name": "to", "nodeType": "VariableDeclaration", "scope": 323, "src": "5187:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 284, "name": "address", "nodeType": "ElementaryTypeName", "src": "5187:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 287, "name": "value", "nodeType": "VariableDeclaration", "scope": 323, "src": "5208:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 286, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5208:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 289, "name": "data", "nodeType": "VariableDeclaration", "scope": 323, "src": "5232:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 288, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5232:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 291, "name": "operation", "nodeType": "VariableDeclaration", "scope": 323, "src": "5253:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, "id": 290, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5, "src": "5253:14:2", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 293, "name": "safeTxGas", "nodeType": "VariableDeclaration", "scope": 323, "src": "5288:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 292, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5288:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 295, "name": "dataGas", "nodeType": "VariableDeclaration", "scope": 323, "src": "5316:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 294, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5316:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 297, "name": "gasPrice", "nodeType": "VariableDeclaration", "scope": 323, "src": "5342:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 296, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5342:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 299, "name": "_nonce", "nodeType": "VariableDeclaration", "scope": 323, "src": "5369:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 298, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5369:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "5177:212:2" }, "payable": false, "returnParameters": { "id": 303, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 302, "name": "", "nodeType": "VariableDeclaration", "scope": 323, "src": "5435:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 301, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5435:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "5434:9:2" }, "scope": 324, "src": "5150:424:2", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 325, "src": "314:5262:2" } ], "src": "0:5577:2" }, "compiler": { "name": "solc", "version": "0.4.23+commit.124ca40d.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, "address": "0xfa2be236995d09b0ee494b9e40637d661ff40494", "transactionHash": "0x1db063ae298dedb887690b77fc973264fd51dfbee9fdb699c430821998894113" }, "1525950336085": { "events": {}, "links": {}, "address": "0x1f8829f66b8ac7a6893109dd298007f5dd3bcadf", "transactionHash": "0x9a582bc25c7705ede926f13bef0ba8fa76176d0ec80dc0871e1b28d87382f545" }, "1526283540628": { "events": {}, "links": {}, "address": "0xad5d0371132b0959508b44c6221e6bc4de8df987", "transactionHash": "0x9a582bc25c7705ede926f13bef0ba8fa76176d0ec80dc0871e1b28d87382f545" }, "1526478212260": { "events": {}, "links": {}, "address": "0x6cd3878c8fce094d881e37ed48a6eb90bcea5ef7", "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" }, "1526973574996": { "events": {}, "links": {}, "address": "0x38a0e040615367af9cd0626ef96441785f82f5c8", "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" }, "1527316019334": { "events": {}, "links": {}, "address": "0x38c3ac4274e76c52a9b9f7f00ecf062750b1b4dc", "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" } }, "schemaVersion": "2.0.0", "updatedAt": "2018-05-26T06:28:28.339Z" }