{ "contractName": "DailyLimitExtension", "abi": [ { "constant": true, "inputs": [], "name": "TRANSFER_FUNCTION_IDENTIFIER", "outputs": [ { "name": "", "type": "bytes4" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "NAME", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "gnosisSafe", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "dailyLimits", "outputs": [ { "name": "dailyLimit", "type": "uint256" }, { "name": "spentToday", "type": "uint256" }, { "name": "lastDay", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "VERSION", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [ { "name": "tokens", "type": "address[]" }, { "name": "_dailyLimits", "type": "uint256[]" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "constant": false, "inputs": [ { "name": "tokens", "type": "address[]" }, { "name": "_dailyLimits", "type": "uint256[]" } ], "name": "setup", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_masterCopy", "type": "address" } ], "name": "changeMasterCopy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "token", "type": "address" }, { "name": "dailyLimit", "type": "uint256" } ], "name": "changeDailyLimit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "sender", "type": "address" }, { "name": "to", "type": "address" }, { "name": "value", "type": "uint256" }, { "name": "data", "type": "bytes" }, { "name": "operation", "type": "uint8" } ], "name": "isExecutable", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "today", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x6060604052341561000f57600080fd5b604051610dbf380380610dbf833981016040528080518201919060200180518201919050506100518282610058640100000000026104e2176401000000009004565b5050610176565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156100a057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156101715781818151811015156100fd57fe5b9060200190602002015160026000858481518110151561011957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506100e6565b505050565b610c3a806101856000396000f3006060604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f8146101435780637de7edef146101aa57806381c5e03b146101e3578063a3f4df7e14610225578063a84173ae146102b3578063b74e452b14610308578063cde09ca914610331578063d7bffc92146103f9578063ffa1ad7414610454575b600080fd5b34156100b457600080fd5b610141600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506104e2565b005b341561014e57600080fd5b610156610600565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610624565b005b34156101ee57600080fd5b610223600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106e9565b005b341561023057600080fd5b610238610790565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027857808201518184015260208101905061025d565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102be57600080fd5b6102c66107c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561031357600080fd5b61031b6107ef565b6040518082815260200191505060405180910390f35b341561033c57600080fd5b6103df600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610807565b604051808215151515815260200191505060405180910390f35b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610afc565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561045f57600080fd5b610467610b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a757808201518184015260208101905061048c565b50505050905090810190601f1680156104d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561052a57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156105fb57818181518110151561058757fe5b906020019060200201516002600085848151811015156105a357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508080600101915050610570565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561068057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156106a657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561074557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601581526020017f4461696c79204c696d697420457874656e73696f6e000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062015180428115156107ff57fe5b064203905090565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e8b6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561093057600080fd5b6102c65a03f1151561094157600080fd5b50505060405180519050151561095657600080fd5b6000600281111561096357fe5b86600281111561096f57fe5b14151561097b57600080fd5b6000875114801561098c5750600088115b806109a45750600087511180156109a35750600088145b5b15156109af57600080fd5b6000875114156109c85760009350889250879150610a4d565b8893506020870151905060248701519250604487015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a4c57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a7357600080fd5b600082111515610a8257600080fd5b610a8c8483610b5f565b15610aea5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060019450610aef565b600094505b5050505095945050505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610bb06107ef565b1115610bd157610bbe6107ef565b8160020181905550600081600101819055505b80600001548382600101540111158015610bf45750806001015483826001015401115b15610c025760019150610c07565b600091505b50929150505600a165627a7a72305820f7f238174a987b01a6474c913fd8e1b521a4e9437201243a233835e7739be3730029", "deployedBytecode": "0x6060604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f8146101435780637de7edef146101aa57806381c5e03b146101e3578063a3f4df7e14610225578063a84173ae146102b3578063b74e452b14610308578063cde09ca914610331578063d7bffc92146103f9578063ffa1ad7414610454575b600080fd5b34156100b457600080fd5b610141600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506104e2565b005b341561014e57600080fd5b610156610600565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610624565b005b34156101ee57600080fd5b610223600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106e9565b005b341561023057600080fd5b610238610790565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027857808201518184015260208101905061025d565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102be57600080fd5b6102c66107c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561031357600080fd5b61031b6107ef565b6040518082815260200191505060405180910390f35b341561033c57600080fd5b6103df600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610807565b604051808215151515815260200191505060405180910390f35b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610afc565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561045f57600080fd5b610467610b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a757808201518184015260208101905061048c565b50505050905090810190601f1680156104d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561052a57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156105fb57818181518110151561058757fe5b906020019060200201516002600085848151811015156105a357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508080600101915050610570565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561068057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156106a657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561074557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601581526020017f4461696c79204c696d697420457874656e73696f6e000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062015180428115156107ff57fe5b064203905090565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e8b6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561093057600080fd5b6102c65a03f1151561094157600080fd5b50505060405180519050151561095657600080fd5b6000600281111561096357fe5b86600281111561096f57fe5b14151561097b57600080fd5b6000875114801561098c5750600088115b806109a45750600087511180156109a35750600088145b5b15156109af57600080fd5b6000875114156109c85760009350889250879150610a4d565b8893506020870151905060248701519250604487015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a4c57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a7357600080fd5b600082111515610a8257600080fd5b610a8c8483610b5f565b15610aea5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060019450610aef565b600094505b5050505095945050505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610bb06107ef565b1115610bd157610bbe6107ef565b8160020181905550600081600101819055505b80600001548382600101540111158015610bf45750806001015483826001015401115b15610c025760019150610c07565b600091505b50929150505600a165627a7a72305820f7f238174a987b01a6474c913fd8e1b521a4e9437201243a233835e7739be3730029", "sourceMap": "247:5028:5:-;;;1209:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1309:27;1315:6;1323:12;1309:5;;;;;:27;;;:::i;:::-;1209:134;;247:5028;;1585:424;1900:9;1838:1;1823:10;;;;;;;;;;;1815:24;;;1807:33;;;;;;;;1874:10;1850;;:35;;;;;;;;;;;;;;;;;;1912:1;1900:13;;1895:107;1919:6;:13;1915:1;:17;1895:107;;;1987:12;2000:1;1987:15;;;;;;;;;;;;;;;;;;1951:11;:22;1963:6;1970:1;1963:9;;;;;;;;;;;;;;;;;;1951:22;;;;;;;;;;;;;;;:33;;:51;;;;1934:3;;;;;;;1895:107;;;1585:424;;;:::o;247:5028::-;;;;;;;", "deployedSourceMap": "247:5028:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:424;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;401:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2155:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;2569:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;296:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;511:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5157:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:1338;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;355:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:424:5;1900:9;1838:1;1823:10;;;;;;;;;;;1815:24;;;1807:33;;;;;;;;1874:10;1850;;:35;;;;;;;;;;;;;;;;;;1912:1;1900:13;;1895:107;1919:6;:13;1915:1;:17;1895:107;;;1987:12;2000:1;1987:15;;;;;;;;;;;;;;;;;;1951:11;:22;1963:6;1970:1;1963:9;;;;;;;;;;;;;;;;;;1951:22;;;;;;;;;;;;;;;:33;;:51;;;;1934:3;;;;;;;1895:107;;;1585:424;;;:::o;401:67::-;;;:::o;2155:186::-;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;2298:1;2282:11;2274:25;;;;2266:34;;;;;;;;2323:11;2310:10;;:24;;;;;;;;;;;;;;;;;;2155:186;:::o;2569:162::-;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;2714:10;2682:11;:18;2694:5;2682:18;;;;;;;;;;;;;;;:29;;:42;;;;2569:162;;:::o;296:53::-;;;;;;;;;;;;;;;;;;;;:::o;511:28::-;;;;;;;;;;;;;:::o;5157:116::-;5219:4;5259:6;5253:3;:12;;;;;;;;5246:3;:20;5239:27;;5157:116;:::o;3233:1338::-;3397:4;3744:13;3767:16;3793:14;3980:25;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;3502:10;;;;;;;;;;;:18;;;3521:6;3502:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3494:35;;;;;;;;3560:25;3547:38;;;;;;;;:9;:38;;;;;;;;;3539:47;;;;;;;;3686:1;3671:4;:11;:16;:29;;;;;3699:1;3691:5;:9;3671:29;:62;;;;3718:1;3704:4;:11;:15;:29;;;;;3732:1;3723:5;:10;3704:29;3671:62;3663:71;;;;;;;;3836:1;3821:4;:11;:16;3817:470;;;3861:1;3853:9;;3887:2;3876:13;;3912:5;3903:14;;3817:470;;;3964:2;3956:10;;4084:4;4078;4074:3;4068:5;4046:44;;4135:4;4129;4125:3;4119:5;4107:34;;4184:4;4178;4174:3;4168:5;4158:32;;4247:28;4225:50;;;:18;:50;;;;4217:59;;;;;;;;3817:470;4316:1;4304:8;:13;;;;4296:22;;;;;;;;4345:1;4336:6;:10;4328:19;;;;;;;;4425:27;4438:5;4445:6;4425:12;:27::i;:::-;4421:122;;;4501:6;4468:11;:18;4480:5;4468:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;4528:4;4521:11;;;;4421:122;4559:5;4552:12;;874:1;3233:1338;;;;;;;;;;;:::o;617:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;355:40::-;;;;;;;;;;;;;;;;;;;;:::o;4577:488::-;4664:4;4684:29;4716:11;:18;4728:5;4716:18;;;;;;;;;;;;;;;4684:50;;4758:10;:18;;;4748:7;:5;:7::i;:::-;:28;4744:126;;;4813:7;:5;:7::i;:::-;4792:10;:18;;:28;;;;4858:1;4834:10;:21;;:25;;;;4744:126;4920:10;:21;;;4910:6;4886:10;:21;;;:30;:55;;:125;;;;;4990:10;:21;;;4981:6;4957:10;:21;;;:30;:54;4886:125;4879:157;;;5032:4;5025:11;;;;4879:157;5053:5;5046:12;;4577:488;;;;;;:::o", "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitExtension is Extension {\n\n string public constant NAME = \"Daily Limit Extension\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant TRANSFER_FUNCTION_IDENTIFIER = hex\"a9059cbb\";\n\n DailyLimitExtension masterCopy;\n GnosisSafe public gnosisSafe;\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smallest unit (e.g. Wei for Ether). \n /// First entry of array corresponds to first entry in token address array.\n function DailyLimitExtension(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setup(tokens, _dailyLimits);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n gnosisSafe = GnosisSafe(msg.sender);\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(DailyLimitExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n onlyGnosisSafe\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param sender Safe owner sending Safe transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @param operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n onlyGnosisSafe\n returns (bool)\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(gnosisSafe.isOwner(sender));\n require(operation == GnosisSafe.Operation.Call);\n // Data has to encode a token transfer or has to be empty.\n require(data.length == 0 && value > 0 || data.length > 0 && value == 0);\n address token;\n address receiver;\n uint256 amount;\n if (data.length == 0) {\n token = 0;\n receiver = to;\n amount = value;\n }\n else {\n token = to;\n bytes4 functionIdentifier;\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n }\n require(functionIdentifier == TRANSFER_FUNCTION_IDENTIFIER);\n }\n require(receiver != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n if (isUnderLimit(token, amount)) {\n dailyLimits[token].spentToday += amount;\n return true;\n }\n return false;\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol", "exportedSymbols": { "DailyLimitExtension": [ 1418 ] }, "id": 1419, "nodeType": "SourceUnit", "nodes": [ { "id": 1083, "literals": [ "solidity", "0.4", ".19" ], "nodeType": "PragmaDirective", "src": "0:23:5" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", "file": "../Extension.sol", "id": 1084, "nodeType": "ImportDirective", "scope": 1419, "sourceUnit": 19, "src": "24:26:5", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "../GnosisSafe.sol", "id": 1085, "nodeType": "ImportDirective", "scope": 1419, "sourceUnit": 964, "src": "51:27:5", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": [], "baseName": { "contractScope": null, "id": 1086, "name": "Extension", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 18, "src": "279:9:5", "typeDescriptions": { "typeIdentifier": "t_contract$_Extension_$18", "typeString": "contract Extension" } }, "id": 1087, "nodeType": "InheritanceSpecifier", "src": "279:9:5" } ], "contractDependencies": [ 18 ], "contractKind": "contract", "documentation": "@title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, "id": 1418, "linearizedBaseContracts": [ 1418, 18 ], "name": "DailyLimitExtension", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 1090, "name": "NAME", "nodeType": "VariableDeclaration", "scope": 1418, "src": "296:53:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" }, "typeName": { "id": 1088, "name": "string", "nodeType": "ElementaryTypeName", "src": "296:6:5", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string storage pointer" } }, "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d697420457874656e73696f6e", "id": 1089, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "326:23:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d825d71e418e7ec5e1c3c51592576f08c81f26d9ede420759434d9e0a688c12f", "typeString": "literal_string \"Daily Limit Extension\"" }, "value": "Daily Limit Extension" }, "visibility": "public" }, { "constant": true, "id": 1093, "name": "VERSION", "nodeType": "VariableDeclaration", "scope": 1418, "src": "355:40:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" }, "typeName": { "id": 1091, "name": "string", "nodeType": "ElementaryTypeName", "src": "355:6:5", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string storage pointer" } }, "value": { "argumentTypes": null, "hexValue": "302e302e31", "id": 1092, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "388:7:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", "typeString": "literal_string \"0.0.1\"" }, "value": "0.0.1" }, "visibility": "public" }, { "constant": true, "id": 1096, "name": "TRANSFER_FUNCTION_IDENTIFIER", "nodeType": "VariableDeclaration", "scope": 1418, "src": "401:67:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1094, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "401:6:5", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": { "argumentTypes": null, "hexValue": "a9059cbb", "id": 1095, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "455:13:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" }, "value": null }, "visibility": "public" }, { "constant": false, "id": 1098, "name": "masterCopy", "nodeType": "VariableDeclaration", "scope": 1418, "src": "475:30:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" }, "typeName": { "contractScope": null, "id": 1097, "name": "DailyLimitExtension", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1418, "src": "475:19:5", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1100, "name": "gnosisSafe", "nodeType": "VariableDeclaration", "scope": 1418, "src": "511:28:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" }, "typeName": { "contractScope": null, "id": 1099, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 963, "src": "511:10:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1104, "name": "dailyLimits", "nodeType": "VariableDeclaration", "scope": 1418, "src": "617:50:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" }, "typeName": { "id": 1103, "keyType": { "id": 1101, "name": "address", "nodeType": "ElementaryTypeName", "src": "626:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "617:31:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" }, "valueType": { "contractScope": null, "id": 1102, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1111, "src": "637:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } } }, "value": null, "visibility": "public" }, { "canonicalName": "DailyLimitExtension.DailyLimit", "id": 1111, "members": [ { "constant": false, "id": 1106, "name": "dailyLimit", "nodeType": "VariableDeclaration", "scope": 1111, "src": "702:18:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1105, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "702:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1108, "name": "spentToday", "nodeType": "VariableDeclaration", "scope": 1111, "src": "730:18:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1107, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "730:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1110, "name": "lastDay", "nodeType": "VariableDeclaration", "scope": 1111, "src": "758:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1109, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "758:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "name": "DailyLimit", "nodeType": "StructDefinition", "scope": 1418, "src": "674:106:5", "visibility": "public" }, { "body": { "id": 1123, "nodeType": "Block", "src": "812:70:5", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1114, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2089, "src": "830:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "830:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1117, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1100, "src": "852:10:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } ], "id": 1116, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "844:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1118, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "844:19:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "830:33:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1113, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "822:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "822:42:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1121, "nodeType": "ExpressionStatement", "src": "822:42:5" }, { "id": 1122, "nodeType": "PlaceholderStatement", "src": "874:1:5" } ] }, "id": 1124, "name": "onlyGnosisSafe", "nodeType": "ModifierDefinition", "parameters": { "id": 1112, "nodeType": "ParameterList", "parameters": [], "src": "809:2:5" }, "src": "786:96:5", "visibility": "internal" }, { "body": { "id": 1138, "nodeType": "Block", "src": "1299:44:5", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1134, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1127, "src": "1315:6:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { "argumentTypes": null, "id": 1135, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1130, "src": "1323:12:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } ], "id": 1133, "name": "setup", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1187, "src": "1309:5:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", "typeString": "function (address[] memory,uint256[] memory)" } }, "id": 1136, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1309:27:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1137, "nodeType": "ExpressionStatement", "src": "1309:27:5" } ] }, "id": 1139, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], "name": "DailyLimitExtension", "nodeType": "FunctionDefinition", "parameters": { "id": 1131, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1127, "name": "tokens", "nodeType": "VariableDeclaration", "scope": 1139, "src": "1238:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, "typeName": { "baseType": { "id": 1125, "name": "address", "nodeType": "ElementaryTypeName", "src": "1238:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1126, "length": null, "nodeType": "ArrayTypeName", "src": "1238:9:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[] storage pointer" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1130, "name": "_dailyLimits", "nodeType": "VariableDeclaration", "scope": 1139, "src": "1256:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" }, "typeName": { "baseType": { "id": 1128, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1256:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1129, "length": null, "nodeType": "ArrayTypeName", "src": "1256:9:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[] storage pointer" } }, "value": null, "visibility": "internal" } ], "src": "1237:42:5" }, "payable": false, "returnParameters": { "id": 1132, "nodeType": "ParameterList", "parameters": [], "src": "1299:0:5" }, "scope": 1418, "src": "1209:134:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1186, "nodeType": "Block", "src": "1661:348:5", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1150, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1100, "src": "1823:10:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } ], "id": 1149, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1815:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1151, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1815:19:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1152, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1838:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1815:24:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1148, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "1807:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1154, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1807:33:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1155, "nodeType": "ExpressionStatement", "src": "1807:33:5" }, { "expression": { "argumentTypes": null, "id": 1161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1156, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1100, "src": "1850:10:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1158, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2089, "src": "1874:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1874:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1157, "name": "GnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 963, "src": "1863:10:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", "typeString": "type(contract GnosisSafe)" } }, "id": 1160, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1863:22:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "src": "1850:35:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "id": 1162, "nodeType": "ExpressionStatement", "src": "1850:35:5" }, { "body": { "expression": { "argumentTypes": null, "id": 1183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1174, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1104, "src": "1951:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" } }, "id": 1178, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1175, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1142, "src": "1963:6:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1177, "indexExpression": { "argumentTypes": null, "id": 1176, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1164, "src": "1970:1:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1963:9:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1951:22:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", "typeString": "struct DailyLimitExtension.DailyLimit storage ref" } }, "id": 1179, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1106, "src": "1951:33:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1180, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1145, "src": "1987:12:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, "id": 1182, "indexExpression": { "argumentTypes": null, "id": 1181, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1164, "src": "2000:1:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1987:15:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1951:51:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1184, "nodeType": "ExpressionStatement", "src": "1951:51:5" }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1170, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1167, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1164, "src": "1915:1:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1168, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1142, "src": "1919:6:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1919:13:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1915:17:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1185, "initializationExpression": { "assignments": [ 1164 ], "declarations": [ { "constant": false, "id": 1164, "name": "i", "nodeType": "VariableDeclaration", "scope": 1187, "src": "1900:9:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1163, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1900:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1166, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1912:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "1900:13:5" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1934:3:5", "subExpression": { "argumentTypes": null, "id": 1171, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1164, "src": "1934:1:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1173, "nodeType": "ExpressionStatement", "src": "1934:3:5" }, "nodeType": "ForStatement", "src": "1895:107:5" } ] }, "id": 1187, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setup", "nodeType": "FunctionDefinition", "parameters": { "id": 1146, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1142, "name": "tokens", "nodeType": "VariableDeclaration", "scope": 1187, "src": "1600:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, "typeName": { "baseType": { "id": 1140, "name": "address", "nodeType": "ElementaryTypeName", "src": "1600:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1141, "length": null, "nodeType": "ArrayTypeName", "src": "1600:9:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[] storage pointer" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1145, "name": "_dailyLimits", "nodeType": "VariableDeclaration", "scope": 1187, "src": "1618:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" }, "typeName": { "baseType": { "id": 1143, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1618:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1144, "length": null, "nodeType": "ArrayTypeName", "src": "1618:9:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[] storage pointer" } }, "value": null, "visibility": "internal" } ], "src": "1599:42:5" }, "payable": false, "returnParameters": { "id": 1147, "nodeType": "ParameterList", "parameters": [], "src": "1661:0:5" }, "scope": 1418, "src": "1585:424:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1206, "nodeType": "Block", "src": "2256:85:5", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1196, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1189, "src": "2282:11:5", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } ], "id": 1195, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2274:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1197, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2274:20:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1198, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2298:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2274:25:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1194, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "2266:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2266:34:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1201, "nodeType": "ExpressionStatement", "src": "2266:34:5" }, { "expression": { "argumentTypes": null, "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1202, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "2310:10:5", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1203, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1189, "src": "2323:11:5", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } }, "src": "2310:24:5", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } }, "id": 1205, "nodeType": "ExpressionStatement", "src": "2310:24:5" } ] }, "id": 1207, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": [], "id": 1192, "modifierName": { "argumentTypes": null, "id": 1191, "name": "onlyGnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1124, "src": "2237:14:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2237:14:5" } ], "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { "id": 1190, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1189, "name": "_masterCopy", "nodeType": "VariableDeclaration", "scope": 1207, "src": "2181:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" }, "typeName": { "contractScope": null, "id": 1188, "name": "DailyLimitExtension", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1418, "src": "2181:19:5", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } }, "value": null, "visibility": "internal" } ], "src": "2180:33:5" }, "payable": false, "returnParameters": { "id": 1193, "nodeType": "ParameterList", "parameters": [], "src": "2256:0:5" }, "scope": 1418, "src": "2155:186:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1223, "nodeType": "Block", "src": "2672:59:5", "statements": [ { "expression": { "argumentTypes": null, "id": 1221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1216, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1104, "src": "2682:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" } }, "id": 1218, "indexExpression": { "argumentTypes": null, "id": 1217, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1209, "src": "2694:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2682:18:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", "typeString": "struct DailyLimitExtension.DailyLimit storage ref" } }, "id": 1219, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1106, "src": "2682:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1220, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1211, "src": "2714:10:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2682:42:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1222, "nodeType": "ExpressionStatement", "src": "2682:42:5" } ] }, "id": 1224, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": [], "id": 1214, "modifierName": { "argumentTypes": null, "id": 1213, "name": "onlyGnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1124, "src": "2653:14:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2653:14:5" } ], "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { "id": 1212, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1209, "name": "token", "nodeType": "VariableDeclaration", "scope": 1224, "src": "2595:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1208, "name": "address", "nodeType": "ElementaryTypeName", "src": "2595:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1211, "name": "dailyLimit", "nodeType": "VariableDeclaration", "scope": 1224, "src": "2610:18:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1210, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2610:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2594:35:5" }, "payable": false, "returnParameters": { "id": 1215, "nodeType": "ParameterList", "parameters": [], "src": "2672:0:5" }, "scope": 1418, "src": "2569:162:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1347, "nodeType": "Block", "src": "3407:1164:5", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1244, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1226, "src": "3521:6:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "id": 1242, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1100, "src": "3502:10:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "id": 1243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", "referencedDeclaration": 47, "src": "3502:18:5", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3502:26:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1241, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3494:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1246, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3494:35:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1247, "nodeType": "ExpressionStatement", "src": "3494:35:5" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" }, "id": 1253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1249, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1234, "src": "3547:9:5", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1250, "name": "GnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 963, "src": "3560:10:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", "typeString": "type(contract GnosisSafe)" } }, "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 61, "src": "3560:20:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", "typeString": "type(enum GnosisSafe.Operation)" } }, "id": 1252, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3560:25:5", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" } }, "src": "3547:38:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1248, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3539:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3539:47:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1255, "nodeType": "ExpressionStatement", "src": "3539:47:5" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1257, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "3671:4:5", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3671:11:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3686:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3671:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1261, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "3691:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3699:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3691:9:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3671:29:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1265, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "3704:4:5", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3704:11:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1267, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3718:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3704:15:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1269, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "3723:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3732:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3723:10:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3704:29:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3671:62:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1256, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3663:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1274, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3663:71:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1275, "nodeType": "ExpressionStatement", "src": "3663:71:5" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1277, "name": "token", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3744:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1276, "name": "address", "nodeType": "ElementaryTypeName", "src": "3744:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1278, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "3744:13:5" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1280, "name": "receiver", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3767:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1279, "name": "address", "nodeType": "ElementaryTypeName", "src": "3767:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1281, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "3767:16:5" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1283, "name": "amount", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3793:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1282, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3793:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1284, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "3793:14:5" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1285, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "3821:4:5", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3821:11:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1287, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3836:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3821:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 1316, "nodeType": "Block", "src": "3942:345:5", "statements": [ { "expression": { "argumentTypes": null, "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1302, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "3956:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1303, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1228, "src": "3964:2:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3956:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1305, "nodeType": "ExpressionStatement", "src": "3956:10:5" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1307, "name": "functionIdentifier", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3980:25:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1306, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3980:6:5", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": null, "visibility": "internal" } ], "id": 1308, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "3980:25:5" }, { "externalReferences": [ { "functionIdentifier": { "declaration": 1307, "isOffset": false, "isSlot": false, "src": "4046:18:5", "valueSize": 1 } }, { "amount": { "declaration": 1283, "isOffset": false, "isSlot": false, "src": "4158:6:5", "valueSize": 1 } }, { "data": { "declaration": 1232, "isOffset": false, "isSlot": false, "src": "4078:4:5", "valueSize": 1 } }, { "receiver": { "declaration": 1280, "isOffset": false, "isSlot": false, "src": "4107:8:5", "valueSize": 1 } }, { "data": { "declaration": 1232, "isOffset": false, "isSlot": false, "src": "4129:4:5", "valueSize": 1 } }, { "data": { "declaration": 1232, "isOffset": false, "isSlot": false, "src": "4178:4:5", "valueSize": 1 } } ], "id": 1309, "nodeType": "InlineAssembly", "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", "src": "4019:205:5" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 1313, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1311, "name": "functionIdentifier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1307, "src": "4225:18:5", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1312, "name": "TRANSFER_FUNCTION_IDENTIFIER", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "4247:28:5", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "4225:50:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1310, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "4217:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1314, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4217:59:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1315, "nodeType": "ExpressionStatement", "src": "4217:59:5" } ] }, "id": 1317, "nodeType": "IfStatement", "src": "3817:470:5", "trueBody": { "id": 1301, "nodeType": "Block", "src": "3839:89:5", "statements": [ { "expression": { "argumentTypes": null, "id": 1291, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1289, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "3853:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1290, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3861:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3853:9:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1292, "nodeType": "ExpressionStatement", "src": "3853:9:5" }, { "expression": { "argumentTypes": null, "id": 1295, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1293, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1280, "src": "3876:8:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1294, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1228, "src": "3887:2:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3876:13:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1296, "nodeType": "ExpressionStatement", "src": "3876:13:5" }, { "expression": { "argumentTypes": null, "id": 1299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1297, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1283, "src": "3903:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1298, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "3912:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3903:14:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1300, "nodeType": "ExpressionStatement", "src": "3903:14:5" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1319, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1280, "src": "4304:8:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1320, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4316:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4304:13:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1318, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "4296:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1322, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4296:22:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1323, "nodeType": "ExpressionStatement", "src": "4296:22:5" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1325, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1283, "src": "4336:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1326, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4345:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4336:10:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1324, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "4328:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1328, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4328:19:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1329, "nodeType": "ExpressionStatement", "src": "4328:19:5" }, { "condition": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1331, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "4438:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1332, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1283, "src": "4445:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1330, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1404, "src": "4425:12:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, "id": 1333, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4425:27:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1344, "nodeType": "IfStatement", "src": "4421:122:5", "trueBody": { "id": 1343, "nodeType": "Block", "src": "4454:89:5", "statements": [ { "expression": { "argumentTypes": null, "id": 1339, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1334, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1104, "src": "4468:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" } }, "id": 1336, "indexExpression": { "argumentTypes": null, "id": 1335, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "4480:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4468:18:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", "typeString": "struct DailyLimitExtension.DailyLimit storage ref" } }, "id": 1337, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1108, "src": "4468:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "argumentTypes": null, "id": 1338, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1283, "src": "4501:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4468:39:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1340, "nodeType": "ExpressionStatement", "src": "4468:39:5" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1341, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4528:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1240, "id": 1342, "nodeType": "Return", "src": "4521:11:5" } ] } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1345, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4559:5:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "functionReturnParameters": 1240, "id": 1346, "nodeType": "Return", "src": "4552:12:5" } ] }, "id": 1348, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": [], "id": 1237, "modifierName": { "argumentTypes": null, "id": 1236, "name": "onlyGnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1124, "src": "3365:14:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3365:14:5" } ], "name": "isExecutable", "nodeType": "FunctionDefinition", "parameters": { "id": 1235, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1226, "name": "sender", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3255:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1225, "name": "address", "nodeType": "ElementaryTypeName", "src": "3255:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1228, "name": "to", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3271:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1227, "name": "address", "nodeType": "ElementaryTypeName", "src": "3271:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1230, "name": "value", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3283:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1229, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3283:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1232, "name": "data", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3298:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, "typeName": { "id": 1231, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3298:5:5", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes storage pointer" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1234, "name": "operation", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3310:30:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" }, "typeName": { "contractScope": null, "id": 1233, "name": "GnosisSafe.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 61, "src": "3310:20:5", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" } }, "value": null, "visibility": "internal" } ], "src": "3254:87:5" }, "payable": false, "returnParameters": { "id": 1240, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1239, "name": "", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3397:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1238, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3397:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3396:6:5" }, "scope": 1418, "src": "3233:1338:5", "stateMutability": "nonpayable", "superFunction": 17, "visibility": "public" }, { "body": { "id": 1403, "nodeType": "Block", "src": "4674:391:5", "statements": [ { "assignments": [ 1358 ], "declarations": [ { "constant": false, "id": 1358, "name": "dailyLimit", "nodeType": "VariableDeclaration", "scope": 1404, "src": "4684:29:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" }, "typeName": { "contractScope": null, "id": 1357, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1111, "src": "4684:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "value": null, "visibility": "internal" } ], "id": 1362, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1359, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1104, "src": "4716:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" } }, "id": 1361, "indexExpression": { "argumentTypes": null, "id": 1360, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1350, "src": "4728:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4716:18:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", "typeString": "struct DailyLimitExtension.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "4684:50:5" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1363, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1417, "src": "4748:5:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1364, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4748:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1365, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4758:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1366, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", "referencedDeclaration": 1110, "src": "4758:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4748:28:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1382, "nodeType": "IfStatement", "src": "4744:126:5", "trueBody": { "id": 1381, "nodeType": "Block", "src": "4778:92:5", "statements": [ { "expression": { "argumentTypes": null, "id": 1373, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1368, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4792:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1370, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", "referencedDeclaration": 1110, "src": "4792:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1371, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1417, "src": "4813:5:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1372, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4813:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4792:28:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1374, "nodeType": "ExpressionStatement", "src": "4792:28:5" }, { "expression": { "argumentTypes": null, "id": 1379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1375, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4834:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1377, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1108, "src": "4834:21:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1378, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4858:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4834:25:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1380, "nodeType": "ExpressionStatement", "src": "4834:25:5" } ] } }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1383, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4886:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1384, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1108, "src": "4886:21:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 1385, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1352, "src": "4910:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4886:30:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1387, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4920:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1388, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1106, "src": "4920:21:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4886:55:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1390, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4957:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1391, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1108, "src": "4957:21:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 1392, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1352, "src": "4981:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4957:30:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1394, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4990:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1395, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1108, "src": "4990:21:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4957:54:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "4886:125:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1400, "nodeType": "IfStatement", "src": "4879:157:5", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1398, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5032:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1356, "id": 1399, "nodeType": "Return", "src": "5025:11:5" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1401, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5053:5:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "functionReturnParameters": 1356, "id": 1402, "nodeType": "Return", "src": "5046:12:5" } ] }, "id": 1404, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { "id": 1353, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1350, "name": "token", "nodeType": "VariableDeclaration", "scope": 1404, "src": "4599:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1349, "name": "address", "nodeType": "ElementaryTypeName", "src": "4599:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1352, "name": "amount", "nodeType": "VariableDeclaration", "scope": 1404, "src": "4614:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1351, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4614:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4598:31:5" }, "payable": false, "returnParameters": { "id": 1356, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1355, "name": "", "nodeType": "VariableDeclaration", "scope": 1404, "src": "4664:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1354, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4664:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4663:6:5" }, "scope": 1418, "src": "4577:488:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1416, "nodeType": "Block", "src": "5229:44:5", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1414, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1409, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2091, "src": "5246:3:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1412, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1410, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2091, "src": "5253:3:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1411, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5259:6:5", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", "typeString": "int_const 86400" }, "value": "1" }, "src": "5253:12:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 1413, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "5252:14:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5246:20:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1408, "id": 1415, "nodeType": "Return", "src": "5239:27:5" } ] }, "id": 1417, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "today", "nodeType": "FunctionDefinition", "parameters": { "id": 1405, "nodeType": "ParameterList", "parameters": [], "src": "5171:2:5" }, "payable": false, "returnParameters": { "id": 1408, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1407, "name": "", "nodeType": "VariableDeclaration", "scope": 1417, "src": "5219:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1406, "name": "uint", "nodeType": "ElementaryTypeName", "src": "5219:4:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "5218:6:5" }, "scope": 1418, "src": "5157:116:5", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 1419, "src": "247:5028:5" } ], "src": "0:5276:5" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol", "exportedSymbols": { "DailyLimitExtension": [ 1418 ] }, "id": 1419, "nodeType": "SourceUnit", "nodes": [ { "id": 1083, "literals": [ "solidity", "0.4", ".19" ], "nodeType": "PragmaDirective", "src": "0:23:5" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", "file": "../Extension.sol", "id": 1084, "nodeType": "ImportDirective", "scope": 1419, "sourceUnit": 19, "src": "24:26:5", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "../GnosisSafe.sol", "id": 1085, "nodeType": "ImportDirective", "scope": 1419, "sourceUnit": 964, "src": "51:27:5", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": [], "baseName": { "contractScope": null, "id": 1086, "name": "Extension", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 18, "src": "279:9:5", "typeDescriptions": { "typeIdentifier": "t_contract$_Extension_$18", "typeString": "contract Extension" } }, "id": 1087, "nodeType": "InheritanceSpecifier", "src": "279:9:5" } ], "contractDependencies": [ 18 ], "contractKind": "contract", "documentation": "@title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, "id": 1418, "linearizedBaseContracts": [ 1418, 18 ], "name": "DailyLimitExtension", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 1090, "name": "NAME", "nodeType": "VariableDeclaration", "scope": 1418, "src": "296:53:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" }, "typeName": { "id": 1088, "name": "string", "nodeType": "ElementaryTypeName", "src": "296:6:5", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string storage pointer" } }, "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d697420457874656e73696f6e", "id": 1089, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "326:23:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d825d71e418e7ec5e1c3c51592576f08c81f26d9ede420759434d9e0a688c12f", "typeString": "literal_string \"Daily Limit Extension\"" }, "value": "Daily Limit Extension" }, "visibility": "public" }, { "constant": true, "id": 1093, "name": "VERSION", "nodeType": "VariableDeclaration", "scope": 1418, "src": "355:40:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" }, "typeName": { "id": 1091, "name": "string", "nodeType": "ElementaryTypeName", "src": "355:6:5", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string storage pointer" } }, "value": { "argumentTypes": null, "hexValue": "302e302e31", "id": 1092, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "388:7:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", "typeString": "literal_string \"0.0.1\"" }, "value": "0.0.1" }, "visibility": "public" }, { "constant": true, "id": 1096, "name": "TRANSFER_FUNCTION_IDENTIFIER", "nodeType": "VariableDeclaration", "scope": 1418, "src": "401:67:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1094, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "401:6:5", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": { "argumentTypes": null, "hexValue": "a9059cbb", "id": 1095, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "455:13:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" }, "value": null }, "visibility": "public" }, { "constant": false, "id": 1098, "name": "masterCopy", "nodeType": "VariableDeclaration", "scope": 1418, "src": "475:30:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" }, "typeName": { "contractScope": null, "id": 1097, "name": "DailyLimitExtension", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1418, "src": "475:19:5", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1100, "name": "gnosisSafe", "nodeType": "VariableDeclaration", "scope": 1418, "src": "511:28:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" }, "typeName": { "contractScope": null, "id": 1099, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 963, "src": "511:10:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 1104, "name": "dailyLimits", "nodeType": "VariableDeclaration", "scope": 1418, "src": "617:50:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" }, "typeName": { "id": 1103, "keyType": { "id": 1101, "name": "address", "nodeType": "ElementaryTypeName", "src": "626:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "617:31:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" }, "valueType": { "contractScope": null, "id": 1102, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1111, "src": "637:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } } }, "value": null, "visibility": "public" }, { "canonicalName": "DailyLimitExtension.DailyLimit", "id": 1111, "members": [ { "constant": false, "id": 1106, "name": "dailyLimit", "nodeType": "VariableDeclaration", "scope": 1111, "src": "702:18:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1105, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "702:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1108, "name": "spentToday", "nodeType": "VariableDeclaration", "scope": 1111, "src": "730:18:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1107, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "730:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1110, "name": "lastDay", "nodeType": "VariableDeclaration", "scope": 1111, "src": "758:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1109, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "758:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "name": "DailyLimit", "nodeType": "StructDefinition", "scope": 1418, "src": "674:106:5", "visibility": "public" }, { "body": { "id": 1123, "nodeType": "Block", "src": "812:70:5", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1114, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2089, "src": "830:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "830:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1117, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1100, "src": "852:10:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } ], "id": 1116, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "844:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1118, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "844:19:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "830:33:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1113, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "822:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "822:42:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1121, "nodeType": "ExpressionStatement", "src": "822:42:5" }, { "id": 1122, "nodeType": "PlaceholderStatement", "src": "874:1:5" } ] }, "id": 1124, "name": "onlyGnosisSafe", "nodeType": "ModifierDefinition", "parameters": { "id": 1112, "nodeType": "ParameterList", "parameters": [], "src": "809:2:5" }, "src": "786:96:5", "visibility": "internal" }, { "body": { "id": 1138, "nodeType": "Block", "src": "1299:44:5", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1134, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1127, "src": "1315:6:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { "argumentTypes": null, "id": 1135, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1130, "src": "1323:12:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } ], "id": 1133, "name": "setup", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1187, "src": "1309:5:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", "typeString": "function (address[] memory,uint256[] memory)" } }, "id": 1136, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1309:27:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1137, "nodeType": "ExpressionStatement", "src": "1309:27:5" } ] }, "id": 1139, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], "name": "DailyLimitExtension", "nodeType": "FunctionDefinition", "parameters": { "id": 1131, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1127, "name": "tokens", "nodeType": "VariableDeclaration", "scope": 1139, "src": "1238:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, "typeName": { "baseType": { "id": 1125, "name": "address", "nodeType": "ElementaryTypeName", "src": "1238:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1126, "length": null, "nodeType": "ArrayTypeName", "src": "1238:9:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[] storage pointer" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1130, "name": "_dailyLimits", "nodeType": "VariableDeclaration", "scope": 1139, "src": "1256:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" }, "typeName": { "baseType": { "id": 1128, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1256:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1129, "length": null, "nodeType": "ArrayTypeName", "src": "1256:9:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[] storage pointer" } }, "value": null, "visibility": "internal" } ], "src": "1237:42:5" }, "payable": false, "returnParameters": { "id": 1132, "nodeType": "ParameterList", "parameters": [], "src": "1299:0:5" }, "scope": 1418, "src": "1209:134:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1186, "nodeType": "Block", "src": "1661:348:5", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1150, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1100, "src": "1823:10:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } ], "id": 1149, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1815:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1151, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1815:19:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1152, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1838:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1815:24:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1148, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "1807:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1154, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1807:33:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1155, "nodeType": "ExpressionStatement", "src": "1807:33:5" }, { "expression": { "argumentTypes": null, "id": 1161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1156, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1100, "src": "1850:10:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1158, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2089, "src": "1874:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1874:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1157, "name": "GnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 963, "src": "1863:10:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", "typeString": "type(contract GnosisSafe)" } }, "id": 1160, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1863:22:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "src": "1850:35:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "id": 1162, "nodeType": "ExpressionStatement", "src": "1850:35:5" }, { "body": { "expression": { "argumentTypes": null, "id": 1183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1174, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1104, "src": "1951:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" } }, "id": 1178, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1175, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1142, "src": "1963:6:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1177, "indexExpression": { "argumentTypes": null, "id": 1176, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1164, "src": "1970:1:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1963:9:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1951:22:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", "typeString": "struct DailyLimitExtension.DailyLimit storage ref" } }, "id": 1179, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1106, "src": "1951:33:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1180, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1145, "src": "1987:12:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, "id": 1182, "indexExpression": { "argumentTypes": null, "id": 1181, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1164, "src": "2000:1:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1987:15:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1951:51:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1184, "nodeType": "ExpressionStatement", "src": "1951:51:5" }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1170, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1167, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1164, "src": "1915:1:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1168, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1142, "src": "1919:6:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1919:13:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1915:17:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1185, "initializationExpression": { "assignments": [ 1164 ], "declarations": [ { "constant": false, "id": 1164, "name": "i", "nodeType": "VariableDeclaration", "scope": 1187, "src": "1900:9:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1163, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1900:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1166, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1912:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "1900:13:5" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1934:3:5", "subExpression": { "argumentTypes": null, "id": 1171, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1164, "src": "1934:1:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1173, "nodeType": "ExpressionStatement", "src": "1934:3:5" }, "nodeType": "ForStatement", "src": "1895:107:5" } ] }, "id": 1187, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setup", "nodeType": "FunctionDefinition", "parameters": { "id": 1146, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1142, "name": "tokens", "nodeType": "VariableDeclaration", "scope": 1187, "src": "1600:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, "typeName": { "baseType": { "id": 1140, "name": "address", "nodeType": "ElementaryTypeName", "src": "1600:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1141, "length": null, "nodeType": "ArrayTypeName", "src": "1600:9:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[] storage pointer" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1145, "name": "_dailyLimits", "nodeType": "VariableDeclaration", "scope": 1187, "src": "1618:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" }, "typeName": { "baseType": { "id": 1143, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1618:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1144, "length": null, "nodeType": "ArrayTypeName", "src": "1618:9:5", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[] storage pointer" } }, "value": null, "visibility": "internal" } ], "src": "1599:42:5" }, "payable": false, "returnParameters": { "id": 1147, "nodeType": "ParameterList", "parameters": [], "src": "1661:0:5" }, "scope": 1418, "src": "1585:424:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1206, "nodeType": "Block", "src": "2256:85:5", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1196, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1189, "src": "2282:11:5", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } ], "id": 1195, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2274:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1197, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2274:20:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1198, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2298:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2274:25:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1194, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "2266:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2266:34:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1201, "nodeType": "ExpressionStatement", "src": "2266:34:5" }, { "expression": { "argumentTypes": null, "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1202, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "2310:10:5", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1203, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1189, "src": "2323:11:5", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } }, "src": "2310:24:5", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } }, "id": 1205, "nodeType": "ExpressionStatement", "src": "2310:24:5" } ] }, "id": 1207, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": [], "id": 1192, "modifierName": { "argumentTypes": null, "id": 1191, "name": "onlyGnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1124, "src": "2237:14:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2237:14:5" } ], "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { "id": 1190, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1189, "name": "_masterCopy", "nodeType": "VariableDeclaration", "scope": 1207, "src": "2181:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" }, "typeName": { "contractScope": null, "id": 1188, "name": "DailyLimitExtension", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1418, "src": "2181:19:5", "typeDescriptions": { "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", "typeString": "contract DailyLimitExtension" } }, "value": null, "visibility": "internal" } ], "src": "2180:33:5" }, "payable": false, "returnParameters": { "id": 1193, "nodeType": "ParameterList", "parameters": [], "src": "2256:0:5" }, "scope": 1418, "src": "2155:186:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1223, "nodeType": "Block", "src": "2672:59:5", "statements": [ { "expression": { "argumentTypes": null, "id": 1221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1216, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1104, "src": "2682:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" } }, "id": 1218, "indexExpression": { "argumentTypes": null, "id": 1217, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1209, "src": "2694:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2682:18:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", "typeString": "struct DailyLimitExtension.DailyLimit storage ref" } }, "id": 1219, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1106, "src": "2682:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1220, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1211, "src": "2714:10:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2682:42:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1222, "nodeType": "ExpressionStatement", "src": "2682:42:5" } ] }, "id": 1224, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": [], "id": 1214, "modifierName": { "argumentTypes": null, "id": 1213, "name": "onlyGnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1124, "src": "2653:14:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2653:14:5" } ], "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { "id": 1212, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1209, "name": "token", "nodeType": "VariableDeclaration", "scope": 1224, "src": "2595:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1208, "name": "address", "nodeType": "ElementaryTypeName", "src": "2595:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1211, "name": "dailyLimit", "nodeType": "VariableDeclaration", "scope": 1224, "src": "2610:18:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1210, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2610:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2594:35:5" }, "payable": false, "returnParameters": { "id": 1215, "nodeType": "ParameterList", "parameters": [], "src": "2672:0:5" }, "scope": 1418, "src": "2569:162:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1347, "nodeType": "Block", "src": "3407:1164:5", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1244, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1226, "src": "3521:6:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "id": 1242, "name": "gnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1100, "src": "3502:10:5", "typeDescriptions": { "typeIdentifier": "t_contract$_GnosisSafe_$963", "typeString": "contract GnosisSafe" } }, "id": 1243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", "referencedDeclaration": 47, "src": "3502:18:5", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3502:26:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1241, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3494:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1246, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3494:35:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1247, "nodeType": "ExpressionStatement", "src": "3494:35:5" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" }, "id": 1253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1249, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1234, "src": "3547:9:5", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1250, "name": "GnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 963, "src": "3560:10:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", "typeString": "type(contract GnosisSafe)" } }, "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 61, "src": "3560:20:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", "typeString": "type(enum GnosisSafe.Operation)" } }, "id": 1252, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3560:25:5", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" } }, "src": "3547:38:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1248, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3539:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3539:47:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1255, "nodeType": "ExpressionStatement", "src": "3539:47:5" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1257, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "3671:4:5", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3671:11:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3686:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3671:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1261, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "3691:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3699:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3691:9:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3671:29:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1265, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "3704:4:5", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3704:11:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1267, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3718:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3704:15:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1269, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "3723:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3732:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3723:10:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3704:29:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3671:62:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1256, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "3663:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1274, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3663:71:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1275, "nodeType": "ExpressionStatement", "src": "3663:71:5" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1277, "name": "token", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3744:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1276, "name": "address", "nodeType": "ElementaryTypeName", "src": "3744:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1278, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "3744:13:5" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1280, "name": "receiver", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3767:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1279, "name": "address", "nodeType": "ElementaryTypeName", "src": "3767:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1281, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "3767:16:5" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1283, "name": "amount", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3793:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1282, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3793:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1284, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "3793:14:5" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1285, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1232, "src": "3821:4:5", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3821:11:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1287, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3836:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3821:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 1316, "nodeType": "Block", "src": "3942:345:5", "statements": [ { "expression": { "argumentTypes": null, "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1302, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "3956:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1303, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1228, "src": "3964:2:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3956:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1305, "nodeType": "ExpressionStatement", "src": "3956:10:5" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1307, "name": "functionIdentifier", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3980:25:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1306, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3980:6:5", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": null, "visibility": "internal" } ], "id": 1308, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "3980:25:5" }, { "externalReferences": [ { "functionIdentifier": { "declaration": 1307, "isOffset": false, "isSlot": false, "src": "4046:18:5", "valueSize": 1 } }, { "amount": { "declaration": 1283, "isOffset": false, "isSlot": false, "src": "4158:6:5", "valueSize": 1 } }, { "data": { "declaration": 1232, "isOffset": false, "isSlot": false, "src": "4078:4:5", "valueSize": 1 } }, { "receiver": { "declaration": 1280, "isOffset": false, "isSlot": false, "src": "4107:8:5", "valueSize": 1 } }, { "data": { "declaration": 1232, "isOffset": false, "isSlot": false, "src": "4129:4:5", "valueSize": 1 } }, { "data": { "declaration": 1232, "isOffset": false, "isSlot": false, "src": "4178:4:5", "valueSize": 1 } } ], "id": 1309, "nodeType": "InlineAssembly", "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", "src": "4019:205:5" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 1313, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1311, "name": "functionIdentifier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1307, "src": "4225:18:5", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1312, "name": "TRANSFER_FUNCTION_IDENTIFIER", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "4247:28:5", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "4225:50:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1310, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "4217:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1314, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4217:59:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1315, "nodeType": "ExpressionStatement", "src": "4217:59:5" } ] }, "id": 1317, "nodeType": "IfStatement", "src": "3817:470:5", "trueBody": { "id": 1301, "nodeType": "Block", "src": "3839:89:5", "statements": [ { "expression": { "argumentTypes": null, "id": 1291, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1289, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "3853:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1290, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3861:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3853:9:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1292, "nodeType": "ExpressionStatement", "src": "3853:9:5" }, { "expression": { "argumentTypes": null, "id": 1295, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1293, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1280, "src": "3876:8:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1294, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1228, "src": "3887:2:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3876:13:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1296, "nodeType": "ExpressionStatement", "src": "3876:13:5" }, { "expression": { "argumentTypes": null, "id": 1299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1297, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1283, "src": "3903:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1298, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1230, "src": "3912:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3903:14:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1300, "nodeType": "ExpressionStatement", "src": "3903:14:5" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1319, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1280, "src": "4304:8:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1320, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4316:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4304:13:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1318, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "4296:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1322, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4296:22:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1323, "nodeType": "ExpressionStatement", "src": "4296:22:5" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1325, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1283, "src": "4336:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1326, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4345:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4336:10:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1324, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2092, "src": "4328:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1328, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4328:19:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1329, "nodeType": "ExpressionStatement", "src": "4328:19:5" }, { "condition": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1331, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "4438:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1332, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1283, "src": "4445:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1330, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1404, "src": "4425:12:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, "id": 1333, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4425:27:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1344, "nodeType": "IfStatement", "src": "4421:122:5", "trueBody": { "id": 1343, "nodeType": "Block", "src": "4454:89:5", "statements": [ { "expression": { "argumentTypes": null, "id": 1339, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1334, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1104, "src": "4468:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" } }, "id": 1336, "indexExpression": { "argumentTypes": null, "id": 1335, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "4480:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4468:18:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", "typeString": "struct DailyLimitExtension.DailyLimit storage ref" } }, "id": 1337, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1108, "src": "4468:29:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "argumentTypes": null, "id": 1338, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1283, "src": "4501:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4468:39:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1340, "nodeType": "ExpressionStatement", "src": "4468:39:5" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1341, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4528:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1240, "id": 1342, "nodeType": "Return", "src": "4521:11:5" } ] } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1345, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4559:5:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "functionReturnParameters": 1240, "id": 1346, "nodeType": "Return", "src": "4552:12:5" } ] }, "id": 1348, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": [], "id": 1237, "modifierName": { "argumentTypes": null, "id": 1236, "name": "onlyGnosisSafe", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1124, "src": "3365:14:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3365:14:5" } ], "name": "isExecutable", "nodeType": "FunctionDefinition", "parameters": { "id": 1235, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1226, "name": "sender", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3255:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1225, "name": "address", "nodeType": "ElementaryTypeName", "src": "3255:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1228, "name": "to", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3271:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1227, "name": "address", "nodeType": "ElementaryTypeName", "src": "3271:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1230, "name": "value", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3283:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1229, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3283:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1232, "name": "data", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3298:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, "typeName": { "id": 1231, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3298:5:5", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes storage pointer" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1234, "name": "operation", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3310:30:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" }, "typeName": { "contractScope": null, "id": 1233, "name": "GnosisSafe.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 61, "src": "3310:20:5", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$61", "typeString": "enum GnosisSafe.Operation" } }, "value": null, "visibility": "internal" } ], "src": "3254:87:5" }, "payable": false, "returnParameters": { "id": 1240, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1239, "name": "", "nodeType": "VariableDeclaration", "scope": 1348, "src": "3397:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1238, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3397:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3396:6:5" }, "scope": 1418, "src": "3233:1338:5", "stateMutability": "nonpayable", "superFunction": 17, "visibility": "public" }, { "body": { "id": 1403, "nodeType": "Block", "src": "4674:391:5", "statements": [ { "assignments": [ 1358 ], "declarations": [ { "constant": false, "id": 1358, "name": "dailyLimit", "nodeType": "VariableDeclaration", "scope": 1404, "src": "4684:29:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" }, "typeName": { "contractScope": null, "id": 1357, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1111, "src": "4684:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "value": null, "visibility": "internal" } ], "id": 1362, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1359, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1104, "src": "4716:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" } }, "id": 1361, "indexExpression": { "argumentTypes": null, "id": 1360, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1350, "src": "4728:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4716:18:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", "typeString": "struct DailyLimitExtension.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "4684:50:5" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1363, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1417, "src": "4748:5:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1364, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4748:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1365, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4758:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1366, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", "referencedDeclaration": 1110, "src": "4758:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4748:28:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1382, "nodeType": "IfStatement", "src": "4744:126:5", "trueBody": { "id": 1381, "nodeType": "Block", "src": "4778:92:5", "statements": [ { "expression": { "argumentTypes": null, "id": 1373, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1368, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4792:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1370, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", "referencedDeclaration": 1110, "src": "4792:18:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1371, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1417, "src": "4813:5:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1372, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4813:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4792:28:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1374, "nodeType": "ExpressionStatement", "src": "4792:28:5" }, { "expression": { "argumentTypes": null, "id": 1379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1375, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4834:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1377, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1108, "src": "4834:21:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1378, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4858:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4834:25:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1380, "nodeType": "ExpressionStatement", "src": "4834:25:5" } ] } }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1383, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4886:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1384, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1108, "src": "4886:21:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 1385, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1352, "src": "4910:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4886:30:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1387, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4920:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1388, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1106, "src": "4920:21:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4886:55:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1390, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4957:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1391, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1108, "src": "4957:21:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 1392, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1352, "src": "4981:6:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4957:30:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1394, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1358, "src": "4990:10:5", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" } }, "id": 1395, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1108, "src": "4990:21:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4957:54:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "4886:125:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1400, "nodeType": "IfStatement", "src": "4879:157:5", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1398, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5032:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1356, "id": 1399, "nodeType": "Return", "src": "5025:11:5" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1401, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5053:5:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "functionReturnParameters": 1356, "id": 1402, "nodeType": "Return", "src": "5046:12:5" } ] }, "id": 1404, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { "id": 1353, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1350, "name": "token", "nodeType": "VariableDeclaration", "scope": 1404, "src": "4599:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1349, "name": "address", "nodeType": "ElementaryTypeName", "src": "4599:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1352, "name": "amount", "nodeType": "VariableDeclaration", "scope": 1404, "src": "4614:14:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1351, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4614:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4598:31:5" }, "payable": false, "returnParameters": { "id": 1356, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1355, "name": "", "nodeType": "VariableDeclaration", "scope": 1404, "src": "4664:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1354, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4664:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4663:6:5" }, "scope": 1418, "src": "4577:488:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1416, "nodeType": "Block", "src": "5229:44:5", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1414, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1409, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2091, "src": "5246:3:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1412, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1410, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2091, "src": "5253:3:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1411, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5259:6:5", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", "typeString": "int_const 86400" }, "value": "1" }, "src": "5253:12:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 1413, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "5252:14:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5246:20:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1408, "id": 1415, "nodeType": "Return", "src": "5239:27:5" } ] }, "id": 1417, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "today", "nodeType": "FunctionDefinition", "parameters": { "id": 1405, "nodeType": "ParameterList", "parameters": [], "src": "5171:2:5" }, "payable": false, "returnParameters": { "id": 1408, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1407, "name": "", "nodeType": "VariableDeclaration", "scope": 1417, "src": "5219:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1406, "name": "uint", "nodeType": "ElementaryTypeName", "src": "5219:4:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "5218:6:5" }, "scope": 1418, "src": "5157:116:5", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 1419, "src": "247:5028:5" } ], "src": "0:5276:5" }, "compiler": { "name": "solc", "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, "address": "0xa79d02e23d840830c4f6c623a2b60310769c3a4b", "transactionHash": "0xb3a98f4a3e8373b6de6b63eaf25e88a3593003119f1df8a30a020f4c9a6cc322" }, "42": { "events": {}, "links": {}, "address": "0xd563051ec0a4aa4756dd1f0d21ef2e6ef0fae3e2", "transactionHash": "0xdec49def750774a696ff6d1de86b27d3eac5967850d8f56e85f7c93bfaf17592" }, "1525342778744": { "events": {}, "links": {}, "address": "0x1b701c69619a38a7b779bef1f8a72dec2b9f402f", "transactionHash": "0xe329bfbfb0449b969df0e144a935e7f94e58f4e7188f6c6626faf1d7ee7ded84" } }, "schemaVersion": "2.0.0", "updatedAt": "2018-05-04T13:47:03.962Z" }