{ "contractName": "DailyLimitModule", "abi": [ { "constant": true, "inputs": [], "name": "TRANSFER_FUNCTION_IDENTIFIER", "outputs": [ { "name": "", "type": "bytes4" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "manager", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_masterCopy", "type": "address" } ], "name": "changeMasterCopy", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "NAME", "outputs": [ { "name": "", "type": "string" } ], "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" }, { "constant": false, "inputs": [ { "name": "tokens", "type": "address[]" }, { "name": "_dailyLimits", "type": "uint256[]" } ], "name": "setup", "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": "to", "type": "address" }, { "name": "value", "type": "uint256" }, { "name": "data", "type": "bytes" } ], "name": "executeDailyLimit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "today", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b50610d72806100206000396000f3006080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f814610152578063481c6a75146101bb5780637de7edef1461021257806381c5e03b14610255578063a3f4df7e146102a2578063b74e452b14610332578063d7bffc921461035d578063fce7379a146103c2578063ffa1ad7414610455575b600080fd5b3480156100b557600080fd5b5061015060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e5565b005b34801561015e57600080fd5b50610167610584565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101c757600080fd5b506101d06105a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021e57600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105ce565b005b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610693565b005b3480156102ae57600080fd5b506102b761073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b50610347610773565b6040518082815260200191505060405180910390f35b34801561036957600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103ce57600080fd5b50610453600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107b5565b005b34801561046157600080fd5b5061046a6107c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104aa57808201518184015260208101905061048f565b50505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104ef6107ff565b600090505b825181101561057f57818181518110151561050b57fe5b9060200190602002015160026000858481518110151561052757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104f4565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561062a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561065057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ef57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561078357fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c133848484610889565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561084657600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050506040513d602081101561097657600080fd5b8101908080519060200190929190505050151561099257600080fd5b600085511480156109a35750600086115b806109bb5750600085511180156109ba5750600086145b5b15156109c657600080fd5b6000855114156109df5760009350869250859150610a64565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a6357600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a8a57600080fd5b600082111515610a9957600080fd5b610aa38483610c97565b1515610aae57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bb857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bf8578082015181840152602081019050610bdd565b50505050905090810190601f168015610c255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b81019080805190602001909291905050501515610c8d57600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610ce8610773565b1115610d0957610cf6610773565b8160020181905550600081600101819055505b80600001548382600101540111158015610d2c5750806001015483826001015401115b15610d3a5760019150610d3f565b600091505b50929150505600a165627a7a723058202b262db46605128446bbaae57646d72dc1cd47e08c0421acebf8b1657c881b990029", "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f814610152578063481c6a75146101bb5780637de7edef1461021257806381c5e03b14610255578063a3f4df7e146102a2578063b74e452b14610332578063d7bffc921461035d578063fce7379a146103c2578063ffa1ad7414610455575b600080fd5b3480156100b557600080fd5b5061015060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e5565b005b34801561015e57600080fd5b50610167610584565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101c757600080fd5b506101d06105a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021e57600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105ce565b005b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610693565b005b3480156102ae57600080fd5b506102b761073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b50610347610773565b6040518082815260200191505060405180910390f35b34801561036957600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103ce57600080fd5b50610453600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107b5565b005b34801561046157600080fd5b5061046a6107c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104aa57808201518184015260208101905061048f565b50505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104ef6107ff565b600090505b825181101561057f57818181518110151561050b57fe5b9060200190602002015160026000858481518110151561052757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104f4565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561062a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561065057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ef57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561078357fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c133848484610889565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561084657600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050506040513d602081101561097657600080fd5b8101908080519060200190929190505050151561099257600080fd5b600085511480156109a35750600086115b806109bb5750600085511180156109ba5750600086145b5b15156109c657600080fd5b6000855114156109df5760009350869250859150610a64565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a6357600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a8a57600080fd5b600082111515610a9957600080fd5b610aa38483610c97565b1515610aae57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bb857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bf8578082015181840152602081019050610bdd565b50505050905090810190601f168015610c255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b81019080805190602001909291905050501515610c8d57600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610ce8610773565b1115610d0957610cf6610773565b8160020181905550600081600101819055505b80600001548382600101540111158015610d2c5750806001015483826001015401115b15610d3a5760019150610d3f565b600091505b50929150505600a165627a7a723058202b262db46605128446bbaae57646d72dc1cd47e08c0421acebf8b1657c881b990029", "sourceMap": "296:3862:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3862:10;;;;;;;", "deployedSourceMap": "296:3862:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;991:222:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;441:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;441:67:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1441:158:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441:158:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;339:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4040:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4040:116:10;;;;;;;;;;;;;;;;;;;;;;;586:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;586:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3308:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3308:146:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;395:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;1104:9;1077:12;:10;:12::i;:::-;1116:1;1104:13;;1099:107;1123:6;:13;1119:1;:17;1099:107;;;1191:12;1204:1;1191:15;;;;;;;;;;;;;;;;;;1155:11;:22;1167:6;1174:1;1167:9;;;;;;;;;;;;;;;;;;1155:22;;;;;;;;;;;;;;;:33;;:51;;;;1138:3;;;;;;;1099:107;;;991:222;;;:::o;441:67::-;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1441:158:10:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1582:10:10;1550:11;:18;1562:5;1550:18;;;;;;;;;;;;;;;:29;;:42;;;;1441:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;4040:116::-;4102:4;4142:6;4136:3;:12;;;;;;;;4129:3;:20;4122:27;;4040:116;:::o;586:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3308:146::-;3403:44;3419:10;3431:2;3435:5;3442:4;3403:15;:44::i;:::-;3308:146;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;1605:1319:10:-;1997:13;2020:16;2046:14;2233:25;1814:7;;;;;;;;;;;1801:29;;;1831:6;1801:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1801:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1801:37:10;;;;;;;;;;;;;;;;1793:46;;;;;;;;1939:1;1924:4;:11;:16;:29;;;;;1952:1;1944:5;:9;1924:29;:62;;;;1971:1;1957:4;:11;:15;:29;;;;;1985:1;1976:5;:10;1957:29;1924:62;1916:71;;;;;;;;2089:1;2074:4;:11;:16;2070:538;;;2114:1;2106:9;;2140:2;2129:13;;2165:5;2156:14;;2070:538;;;2217:2;2209:10;;2405:4;2399;2395:15;2389:22;2367:44;;2456:4;2450;2446:15;2440:22;2428:34;;2505:4;2499;2495:15;2489:22;2479:32;;2568:28;2546:50;;;:18;:50;;;;2538:59;;;;;;;;2070:538;2637:1;2625:8;:13;;;;2617:22;;;;;;;;2666:1;2657:6;:10;2649:19;;;;;;;;2750:27;2763:5;2770:6;2750:12;:27::i;:::-;2742:36;;;;;;;;2821:6;2788:11;:18;2800:5;2788:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2845:7;;;;;;;;;;;:33;;;2879:2;2883:5;2890:4;2896:19;2845:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2845:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2845:71:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2845:71:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2845:71:10;;;;;;;;;;;;;;;;2837:80;;;;;;;;1605:1319;;;;;;;;:::o;3460:488::-;3547:4;3567:29;3599:11;:18;3611:5;3599:18;;;;;;;;;;;;;;;3567:50;;3641:10;:18;;;3631:7;:5;:7::i;:::-;:28;3627:126;;;3696:7;:5;:7::i;:::-;3675:10;:18;;:28;;;;3741:1;3717:10;:21;;:25;;;;3627:126;3803:10;:21;;;3793:6;3769:10;:21;;;:30;:55;;:125;;;;;3873:10;:21;;;3864:6;3840:10;:21;;;:30;:54;3769:125;3762:157;;;3915:4;3908:11;;;;3762:157;3936:5;3929:12;;3460:488;;;;;;:::o", "source": "pragma solidity 0.4.23;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant TRANSFER_FUNCTION_IDENTIFIER = hex\"a9059cbb\";\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 /// @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 setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\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 authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n function executeInternal(address sender, address to, uint256 value, bytes data)\n internal\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(sender));\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 // solium-disable-next-line security/no-inline-assembly\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 require(isUnderLimit(token, amount));\n dailyLimits[token].spentToday += amount;\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call));\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit 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 /// @return Returns if transaction can be executed.\n function executeDailyLimit(address to, uint256 value, bytes data)\n public\n {\n executeInternal(msg.sender, to, value, data);\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/modules/DailyLimitModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ 1694 ] }, "id": 1695, "nodeType": "SourceUnit", "nodes": [ { "id": 1406, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", "src": "0:23:10" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", "id": 1407, "nodeType": "ImportDirective", "scope": 1695, "sourceUnit": 622, "src": "24:23:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", "id": 1408, "nodeType": "ImportDirective", "scope": 1695, "sourceUnit": 972, "src": "48:30:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", "id": 1409, "nodeType": "ImportDirective", "scope": 1695, "sourceUnit": 1344, "src": "79:29:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", "id": 1410, "nodeType": "ImportDirective", "scope": 1695, "sourceUnit": 7, "src": "109:21:10", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1411, "name": "Module", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 621, "src": "325:6:10", "typeDescriptions": { "typeIdentifier": "t_contract$_Module_$621", "typeString": "contract Module" } }, "id": 1412, "nodeType": "InheritanceSpecifier", "src": "325:6:10" } ], "contractDependencies": [ 580, 621, 1359 ], "contractKind": "contract", "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, "id": 1694, "linearizedBaseContracts": [ 1694, 621, 580, 1359 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 1415, "name": "NAME", "nodeType": "VariableDeclaration", "scope": 1694, "src": "339:50:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string" }, "typeName": { "id": 1413, "name": "string", "nodeType": "ElementaryTypeName", "src": "339:6:10", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", "id": 1414, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "369:20:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3", "typeString": "literal_string \"Daily Limit Module\"" }, "value": "Daily Limit Module" }, "visibility": "public" }, { "constant": true, "id": 1418, "name": "VERSION", "nodeType": "VariableDeclaration", "scope": 1694, "src": "395:40:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string" }, "typeName": { "id": 1416, "name": "string", "nodeType": "ElementaryTypeName", "src": "395:6:10", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "302e302e31", "id": 1417, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "428:7:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", "typeString": "literal_string \"0.0.1\"" }, "value": "0.0.1" }, "visibility": "public" }, { "constant": true, "id": 1421, "name": "TRANSFER_FUNCTION_IDENTIFIER", "nodeType": "VariableDeclaration", "scope": 1694, "src": "441:67:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1419, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "441:6:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": { "argumentTypes": null, "hexValue": "a9059cbb", "id": 1420, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "495:13:10", "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": 1425, "name": "dailyLimits", "nodeType": "VariableDeclaration", "scope": 1694, "src": "586:50:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { "id": 1424, "keyType": { "id": 1422, "name": "address", "nodeType": "ElementaryTypeName", "src": "595:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "586:31:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, "id": 1423, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1432, "src": "606:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } }, "value": null, "visibility": "public" }, { "canonicalName": "DailyLimitModule.DailyLimit", "id": 1432, "members": [ { "constant": false, "id": 1427, "name": "dailyLimit", "nodeType": "VariableDeclaration", "scope": 1432, "src": "671:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1426, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "671:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1429, "name": "spentToday", "nodeType": "VariableDeclaration", "scope": 1432, "src": "699:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1428, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "699:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1431, "name": "lastDay", "nodeType": "VariableDeclaration", "scope": 1432, "src": "727:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1430, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "727:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "name": "DailyLimit", "nodeType": "StructDefinition", "scope": 1694, "src": "643:106:10", "visibility": "public" }, { "body": { "id": 1467, "nodeType": "Block", "src": "1067:146:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1441, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 620, "src": "1077:10:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 1442, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1077:12:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1443, "nodeType": "ExpressionStatement", "src": "1077:12:10" }, { "body": { "expression": { "argumentTypes": null, "id": 1464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1455, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1425, "src": "1155:11:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, "id": 1459, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1456, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1435, "src": "1167:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1458, "indexExpression": { "argumentTypes": null, "id": 1457, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1445, "src": "1174:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1167:9:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1155:22:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "id": 1460, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1427, "src": "1155:33:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1461, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1438, "src": "1191:12:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, "id": 1463, "indexExpression": { "argumentTypes": null, "id": 1462, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1445, "src": "1204:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1191:15:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1155:51:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1465, "nodeType": "ExpressionStatement", "src": "1155:51:10" }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1448, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1445, "src": "1119:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1449, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1435, "src": "1123:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1450, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1123:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1119:17:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1466, "initializationExpression": { "assignments": [ 1445 ], "declarations": [ { "constant": false, "id": 1445, "name": "i", "nodeType": "VariableDeclaration", "scope": 1468, "src": "1104:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1444, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1104:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1447, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1446, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1116:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "1104:13:10" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1453, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1138:3:10", "subExpression": { "argumentTypes": null, "id": 1452, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1445, "src": "1138:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1454, "nodeType": "ExpressionStatement", "src": "1138:3:10" }, "nodeType": "ForStatement", "src": "1099:107:10" } ] }, "documentation": "@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).", "id": 1468, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setup", "nodeType": "FunctionDefinition", "parameters": { "id": 1439, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1435, "name": "tokens", "nodeType": "VariableDeclaration", "scope": 1468, "src": "1006:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1433, "name": "address", "nodeType": "ElementaryTypeName", "src": "1006:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1434, "length": null, "nodeType": "ArrayTypeName", "src": "1006:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1438, "name": "_dailyLimits", "nodeType": "VariableDeclaration", "scope": 1468, "src": "1024:22:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]" }, "typeName": { "baseType": { "id": 1436, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1024:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1437, "length": null, "nodeType": "ArrayTypeName", "src": "1024:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" } }, "value": null, "visibility": "internal" } ], "src": "1005:42:10" }, "payable": false, "returnParameters": { "id": 1440, "nodeType": "ParameterList", "parameters": [], "src": "1067:0:10" }, "scope": 1694, "src": "991:222:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1484, "nodeType": "Block", "src": "1540:59:10", "statements": [ { "expression": { "argumentTypes": null, "id": 1482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1477, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1425, "src": "1550:11:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, "id": 1479, "indexExpression": { "argumentTypes": null, "id": 1478, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1470, "src": "1562:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1550:18:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "id": 1480, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1427, "src": "1550:29:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1481, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1472, "src": "1582:10:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1550:42:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1483, "nodeType": "ExpressionStatement", "src": "1550:42:10" } ] }, "documentation": "@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.", "id": 1485, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1475, "modifierName": { "argumentTypes": null, "id": 1474, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 601, "src": "1525:10:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "1525:10:10" } ], "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { "id": 1473, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1470, "name": "token", "nodeType": "VariableDeclaration", "scope": 1485, "src": "1467:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1469, "name": "address", "nodeType": "ElementaryTypeName", "src": "1467:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1472, "name": "dailyLimit", "nodeType": "VariableDeclaration", "scope": 1485, "src": "1482:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1471, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1482:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1466:35:10" }, "payable": false, "returnParameters": { "id": 1476, "nodeType": "ParameterList", "parameters": [], "src": "1540:0:10" }, "scope": 1694, "src": "1441:158:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1605, "nodeType": "Block", "src": "1706:1218:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1501, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1487, "src": "1831:6:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1498, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 588, "src": "1814:7:10", "typeDescriptions": { "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } ], "id": 1497, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1343, "src": "1801:12:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", "typeString": "type(contract OwnerManager)" } }, "id": 1499, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1801:21:10", "typeDescriptions": { "typeIdentifier": "t_contract$_OwnerManager_$1343", "typeString": "contract OwnerManager" } }, "id": 1500, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1293, "src": "1801:29:10", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, "id": 1502, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1801:37:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1496, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "1793:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1503, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1793:46:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1504, "nodeType": "ExpressionStatement", "src": "1793:46:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1506, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1493, "src": "1924:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1924:11:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1508, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1939:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1924:16:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1512, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1510, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1491, "src": "1944:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1511, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1952:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1944:9:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1924:29:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1514, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1493, "src": "1957:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1957:11:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1516, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1971:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1957:15:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1520, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1518, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1491, "src": "1976:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1519, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1985:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1976:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1957:29:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1924:62:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1505, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "1916:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1523, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1916:71:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1524, "nodeType": "ExpressionStatement", "src": "1916:71:10" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1526, "name": "token", "nodeType": "VariableDeclaration", "scope": 1606, "src": "1997:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1525, "name": "address", "nodeType": "ElementaryTypeName", "src": "1997:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1527, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "1997:13:10" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1529, "name": "receiver", "nodeType": "VariableDeclaration", "scope": 1606, "src": "2020:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1528, "name": "address", "nodeType": "ElementaryTypeName", "src": "2020:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1530, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "2020:16:10" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1532, "name": "amount", "nodeType": "VariableDeclaration", "scope": 1606, "src": "2046:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1531, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2046:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1533, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "2046:14:10" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1534, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1493, "src": "2074:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2074:11:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1536, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2089:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2074:16:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 1565, "nodeType": "Block", "src": "2195:413:10", "statements": [ { "expression": { "argumentTypes": null, "id": 1553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1551, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1526, "src": "2209:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1552, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1489, "src": "2217:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2209:10:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1554, "nodeType": "ExpressionStatement", "src": "2209:10:10" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1556, "name": "functionIdentifier", "nodeType": "VariableDeclaration", "scope": 1606, "src": "2233:25:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1555, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2233:6:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": null, "visibility": "internal" } ], "id": 1557, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "2233:25:10" }, { "externalReferences": [ { "functionIdentifier": { "declaration": 1556, "isOffset": false, "isSlot": false, "src": "2367:18:10", "valueSize": 1 } }, { "data": { "declaration": 1493, "isOffset": false, "isSlot": false, "src": "2399:4:10", "valueSize": 1 } }, { "receiver": { "declaration": 1529, "isOffset": false, "isSlot": false, "src": "2428:8:10", "valueSize": 1 } }, { "amount": { "declaration": 1532, "isOffset": false, "isSlot": false, "src": "2479:6:10", "valueSize": 1 } }, { "data": { "declaration": 1493, "isOffset": false, "isSlot": false, "src": "2450:4:10", "valueSize": 1 } }, { "data": { "declaration": 1493, "isOffset": false, "isSlot": false, "src": "2499:4:10", "valueSize": 1 } } ], "id": 1558, "nodeType": "InlineAssembly", "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", "src": "2340:205:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 1562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1560, "name": "functionIdentifier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1556, "src": "2546:18:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1561, "name": "TRANSFER_FUNCTION_IDENTIFIER", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1421, "src": "2568:28:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "2546:50:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1559, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2538:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1563, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2538:59:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1564, "nodeType": "ExpressionStatement", "src": "2538:59:10" } ] }, "id": 1566, "nodeType": "IfStatement", "src": "2070:538:10", "trueBody": { "id": 1550, "nodeType": "Block", "src": "2092:89:10", "statements": [ { "expression": { "argumentTypes": null, "id": 1540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1538, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1526, "src": "2106:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2114:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2106:9:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1541, "nodeType": "ExpressionStatement", "src": "2106:9:10" }, { "expression": { "argumentTypes": null, "id": 1544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1542, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "2129:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1543, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1489, "src": "2140:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2129:13:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1545, "nodeType": "ExpressionStatement", "src": "2129:13:10" }, { "expression": { "argumentTypes": null, "id": 1548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1546, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "2156:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1547, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1491, "src": "2165:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2156:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1549, "nodeType": "ExpressionStatement", "src": "2156:14:10" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1568, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "2625:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1569, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2637:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2625:13:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1567, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2617:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1571, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2617:22:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1572, "nodeType": "ExpressionStatement", "src": "2617:22:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1574, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "2657:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1575, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2666:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2657:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1573, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2649:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1577, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2649:19:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1578, "nodeType": "ExpressionStatement", "src": "2649:19:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1581, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1526, "src": "2763:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1582, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "2770:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1580, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1680, "src": "2750:12:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, "id": 1583, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2750:27:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1579, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2742:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1584, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2742:36:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1585, "nodeType": "ExpressionStatement", "src": "2742:36:10" }, { "expression": { "argumentTypes": null, "id": 1591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1586, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1425, "src": "2788:11:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, "id": 1588, "indexExpression": { "argumentTypes": null, "id": 1587, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1526, "src": "2800:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2788:18:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "id": 1589, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1429, "src": "2788:29:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "argumentTypes": null, "id": 1590, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "2821:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2788:39:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1592, "nodeType": "ExpressionStatement", "src": "2788:39:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1596, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1489, "src": "2879:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1597, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1491, "src": "2883:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1598, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1493, "src": "2890:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1599, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, "src": "2896:4:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", "typeString": "type(contract Enum)" } }, "id": 1600, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 5, "src": "2896:14:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", "typeString": "type(enum Enum.Operation)" } }, "id": 1601, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2896:19:10", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, "id": 1594, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 588, "src": "2845:7:10", "typeDescriptions": { "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } }, "id": 1595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", "referencedDeclaration": 798, "src": "2845:33:10", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, "id": 1602, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2845:71:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1593, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2837:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1603, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2837:80:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1604, "nodeType": "ExpressionStatement", "src": "2837:80:10" } ] }, "documentation": null, "id": 1606, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "executeInternal", "nodeType": "FunctionDefinition", "parameters": { "id": 1494, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1487, "name": "sender", "nodeType": "VariableDeclaration", "scope": 1606, "src": "1630:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1486, "name": "address", "nodeType": "ElementaryTypeName", "src": "1630:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1489, "name": "to", "nodeType": "VariableDeclaration", "scope": 1606, "src": "1646:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1488, "name": "address", "nodeType": "ElementaryTypeName", "src": "1646:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1491, "name": "value", "nodeType": "VariableDeclaration", "scope": 1606, "src": "1658:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1490, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1658:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1493, "name": "data", "nodeType": "VariableDeclaration", "scope": 1606, "src": "1673:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 1492, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1673:5:10", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "1629:55:10" }, "payable": false, "returnParameters": { "id": 1495, "nodeType": "ParameterList", "parameters": [], "src": "1706:0:10" }, "scope": 1694, "src": "1605:1319:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1623, "nodeType": "Block", "src": "3393:61:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1616, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2396, "src": "3419:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3419:10:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1618, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1608, "src": "3431:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1619, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1610, "src": "3435:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1620, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1612, "src": "3442:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 1615, "name": "executeInternal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1606, "src": "3403:15:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, "id": 1621, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3403:44:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1622, "nodeType": "ExpressionStatement", "src": "3403:44:10" } ] }, "documentation": "@dev Returns if Safe transaction is a valid daily limit 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 @return Returns if transaction can be executed.", "id": 1624, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { "id": 1613, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1608, "name": "to", "nodeType": "VariableDeclaration", "scope": 1624, "src": "3335:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1607, "name": "address", "nodeType": "ElementaryTypeName", "src": "3335:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1610, "name": "value", "nodeType": "VariableDeclaration", "scope": 1624, "src": "3347:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1609, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3347:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1612, "name": "data", "nodeType": "VariableDeclaration", "scope": 1624, "src": "3362:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 1611, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3362:5:10", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "3334:39:10" }, "payable": false, "returnParameters": { "id": 1614, "nodeType": "ParameterList", "parameters": [], "src": "3393:0:10" }, "scope": 1694, "src": "3308:146:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1679, "nodeType": "Block", "src": "3557:391:10", "statements": [ { "assignments": [ 1634 ], "declarations": [ { "constant": false, "id": 1634, "name": "dailyLimit", "nodeType": "VariableDeclaration", "scope": 1680, "src": "3567:29:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, "id": 1633, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1432, "src": "3567:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, "value": null, "visibility": "internal" } ], "id": 1638, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1635, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1425, "src": "3599:11:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, "id": 1637, "indexExpression": { "argumentTypes": null, "id": 1636, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1626, "src": "3611:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3599:18:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "3567:50:10" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1639, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1693, "src": "3631:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1640, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3631:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1641, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3641:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", "referencedDeclaration": 1431, "src": "3641:18:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3631:28:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1658, "nodeType": "IfStatement", "src": "3627:126:10", "trueBody": { "id": 1657, "nodeType": "Block", "src": "3661:92:10", "statements": [ { "expression": { "argumentTypes": null, "id": 1649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1644, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3675:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1646, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", "referencedDeclaration": 1431, "src": "3675:18:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1647, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1693, "src": "3696:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3696:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3675:28:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1650, "nodeType": "ExpressionStatement", "src": "3675:28:10" }, { "expression": { "argumentTypes": null, "id": 1655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1651, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3717:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1653, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1429, "src": "3717:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3741:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3717:25:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1656, "nodeType": "ExpressionStatement", "src": "3717:25:10" } ] } }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1662, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1659, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3769:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1660, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1429, "src": "3769:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 1661, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "3793:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3769:30:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1663, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3803:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1664, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1427, "src": "3803:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3769:55:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1669, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1666, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3840:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1667, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1429, "src": "3840:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 1668, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "3864:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3840:30:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1670, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3873:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1429, "src": "3873:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3840:54:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3769:125:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1676, "nodeType": "IfStatement", "src": "3762:157:10", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1674, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3915:4:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1632, "id": 1675, "nodeType": "Return", "src": "3908:11:10" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1677, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3936:5:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "functionReturnParameters": 1632, "id": 1678, "nodeType": "Return", "src": "3929:12:10" } ] }, "documentation": null, "id": 1680, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { "id": 1629, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1626, "name": "token", "nodeType": "VariableDeclaration", "scope": 1680, "src": "3482:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1625, "name": "address", "nodeType": "ElementaryTypeName", "src": "3482:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1628, "name": "amount", "nodeType": "VariableDeclaration", "scope": 1680, "src": "3497:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1627, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3497:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3481:31:10" }, "payable": false, "returnParameters": { "id": 1632, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1631, "name": "", "nodeType": "VariableDeclaration", "scope": 1680, "src": "3547:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1630, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3547:4:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3546:6:10" }, "scope": 1694, "src": "3460:488:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1692, "nodeType": "Block", "src": "4112:44:10", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1685, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2398, "src": "4129:3:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1688, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1686, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2398, "src": "4136:3:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1687, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4142:6:10", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", "typeString": "int_const 86400" }, "value": "1" }, "src": "4136:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 1689, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4135:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4129:20:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1684, "id": 1691, "nodeType": "Return", "src": "4122:27:10" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", "id": 1693, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "today", "nodeType": "FunctionDefinition", "parameters": { "id": 1681, "nodeType": "ParameterList", "parameters": [], "src": "4054:2:10" }, "payable": false, "returnParameters": { "id": 1684, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1683, "name": "", "nodeType": "VariableDeclaration", "scope": 1693, "src": "4102:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1682, "name": "uint", "nodeType": "ElementaryTypeName", "src": "4102:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4101:6:10" }, "scope": 1694, "src": "4040:116:10", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 1695, "src": "296:3862:10" } ], "src": "0:4159:10" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ 1694 ] }, "id": 1695, "nodeType": "SourceUnit", "nodes": [ { "id": 1406, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", "src": "0:23:10" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", "id": 1407, "nodeType": "ImportDirective", "scope": 1695, "sourceUnit": 622, "src": "24:23:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", "id": 1408, "nodeType": "ImportDirective", "scope": 1695, "sourceUnit": 972, "src": "48:30:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", "id": 1409, "nodeType": "ImportDirective", "scope": 1695, "sourceUnit": 1344, "src": "79:29:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", "id": 1410, "nodeType": "ImportDirective", "scope": 1695, "sourceUnit": 7, "src": "109:21:10", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1411, "name": "Module", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 621, "src": "325:6:10", "typeDescriptions": { "typeIdentifier": "t_contract$_Module_$621", "typeString": "contract Module" } }, "id": 1412, "nodeType": "InheritanceSpecifier", "src": "325:6:10" } ], "contractDependencies": [ 580, 621, 1359 ], "contractKind": "contract", "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, "id": 1694, "linearizedBaseContracts": [ 1694, 621, 580, 1359 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 1415, "name": "NAME", "nodeType": "VariableDeclaration", "scope": 1694, "src": "339:50:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string" }, "typeName": { "id": 1413, "name": "string", "nodeType": "ElementaryTypeName", "src": "339:6:10", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", "id": 1414, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "369:20:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3", "typeString": "literal_string \"Daily Limit Module\"" }, "value": "Daily Limit Module" }, "visibility": "public" }, { "constant": true, "id": 1418, "name": "VERSION", "nodeType": "VariableDeclaration", "scope": 1694, "src": "395:40:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string" }, "typeName": { "id": 1416, "name": "string", "nodeType": "ElementaryTypeName", "src": "395:6:10", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "302e302e31", "id": 1417, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "428:7:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", "typeString": "literal_string \"0.0.1\"" }, "value": "0.0.1" }, "visibility": "public" }, { "constant": true, "id": 1421, "name": "TRANSFER_FUNCTION_IDENTIFIER", "nodeType": "VariableDeclaration", "scope": 1694, "src": "441:67:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1419, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "441:6:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": { "argumentTypes": null, "hexValue": "a9059cbb", "id": 1420, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "495:13:10", "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": 1425, "name": "dailyLimits", "nodeType": "VariableDeclaration", "scope": 1694, "src": "586:50:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { "id": 1424, "keyType": { "id": 1422, "name": "address", "nodeType": "ElementaryTypeName", "src": "595:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "586:31:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, "id": 1423, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1432, "src": "606:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } }, "value": null, "visibility": "public" }, { "canonicalName": "DailyLimitModule.DailyLimit", "id": 1432, "members": [ { "constant": false, "id": 1427, "name": "dailyLimit", "nodeType": "VariableDeclaration", "scope": 1432, "src": "671:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1426, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "671:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1429, "name": "spentToday", "nodeType": "VariableDeclaration", "scope": 1432, "src": "699:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1428, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "699:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1431, "name": "lastDay", "nodeType": "VariableDeclaration", "scope": 1432, "src": "727:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1430, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "727:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "name": "DailyLimit", "nodeType": "StructDefinition", "scope": 1694, "src": "643:106:10", "visibility": "public" }, { "body": { "id": 1467, "nodeType": "Block", "src": "1067:146:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1441, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 620, "src": "1077:10:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 1442, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1077:12:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1443, "nodeType": "ExpressionStatement", "src": "1077:12:10" }, { "body": { "expression": { "argumentTypes": null, "id": 1464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1455, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1425, "src": "1155:11:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, "id": 1459, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1456, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1435, "src": "1167:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1458, "indexExpression": { "argumentTypes": null, "id": 1457, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1445, "src": "1174:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1167:9:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1155:22:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "id": 1460, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1427, "src": "1155:33:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1461, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1438, "src": "1191:12:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, "id": 1463, "indexExpression": { "argumentTypes": null, "id": 1462, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1445, "src": "1204:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1191:15:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1155:51:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1465, "nodeType": "ExpressionStatement", "src": "1155:51:10" }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1448, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1445, "src": "1119:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1449, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1435, "src": "1123:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 1450, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1123:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1119:17:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1466, "initializationExpression": { "assignments": [ 1445 ], "declarations": [ { "constant": false, "id": 1445, "name": "i", "nodeType": "VariableDeclaration", "scope": 1468, "src": "1104:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1444, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1104:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1447, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 1446, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1116:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "1104:13:10" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 1453, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1138:3:10", "subExpression": { "argumentTypes": null, "id": 1452, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1445, "src": "1138:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1454, "nodeType": "ExpressionStatement", "src": "1138:3:10" }, "nodeType": "ForStatement", "src": "1099:107:10" } ] }, "documentation": "@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).", "id": 1468, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setup", "nodeType": "FunctionDefinition", "parameters": { "id": 1439, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1435, "name": "tokens", "nodeType": "VariableDeclaration", "scope": 1468, "src": "1006:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 1433, "name": "address", "nodeType": "ElementaryTypeName", "src": "1006:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1434, "length": null, "nodeType": "ArrayTypeName", "src": "1006:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1438, "name": "_dailyLimits", "nodeType": "VariableDeclaration", "scope": 1468, "src": "1024:22:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]" }, "typeName": { "baseType": { "id": 1436, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1024:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1437, "length": null, "nodeType": "ArrayTypeName", "src": "1024:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" } }, "value": null, "visibility": "internal" } ], "src": "1005:42:10" }, "payable": false, "returnParameters": { "id": 1440, "nodeType": "ParameterList", "parameters": [], "src": "1067:0:10" }, "scope": 1694, "src": "991:222:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1484, "nodeType": "Block", "src": "1540:59:10", "statements": [ { "expression": { "argumentTypes": null, "id": 1482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1477, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1425, "src": "1550:11:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, "id": 1479, "indexExpression": { "argumentTypes": null, "id": 1478, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1470, "src": "1562:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1550:18:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "id": 1480, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1427, "src": "1550:29:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1481, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1472, "src": "1582:10:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1550:42:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1483, "nodeType": "ExpressionStatement", "src": "1550:42:10" } ] }, "documentation": "@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.", "id": 1485, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, "id": 1475, "modifierName": { "argumentTypes": null, "id": 1474, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 601, "src": "1525:10:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "1525:10:10" } ], "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { "id": 1473, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1470, "name": "token", "nodeType": "VariableDeclaration", "scope": 1485, "src": "1467:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1469, "name": "address", "nodeType": "ElementaryTypeName", "src": "1467:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1472, "name": "dailyLimit", "nodeType": "VariableDeclaration", "scope": 1485, "src": "1482:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1471, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1482:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1466:35:10" }, "payable": false, "returnParameters": { "id": 1476, "nodeType": "ParameterList", "parameters": [], "src": "1540:0:10" }, "scope": 1694, "src": "1441:158:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1605, "nodeType": "Block", "src": "1706:1218:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1501, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1487, "src": "1831:6:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1498, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 588, "src": "1814:7:10", "typeDescriptions": { "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } ], "id": 1497, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1343, "src": "1801:12:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", "typeString": "type(contract OwnerManager)" } }, "id": 1499, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1801:21:10", "typeDescriptions": { "typeIdentifier": "t_contract$_OwnerManager_$1343", "typeString": "contract OwnerManager" } }, "id": 1500, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", "referencedDeclaration": 1293, "src": "1801:29:10", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, "id": 1502, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1801:37:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1496, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "1793:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1503, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1793:46:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1504, "nodeType": "ExpressionStatement", "src": "1793:46:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1506, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1493, "src": "1924:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1924:11:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1508, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1939:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1924:16:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1512, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1510, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1491, "src": "1944:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1511, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1952:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1944:9:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1924:29:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1514, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1493, "src": "1957:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1957:11:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1516, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1971:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1957:15:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1520, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1518, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1491, "src": "1976:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1519, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1985:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1976:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1957:29:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1924:62:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1505, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "1916:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1523, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1916:71:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1524, "nodeType": "ExpressionStatement", "src": "1916:71:10" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1526, "name": "token", "nodeType": "VariableDeclaration", "scope": 1606, "src": "1997:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1525, "name": "address", "nodeType": "ElementaryTypeName", "src": "1997:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1527, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "1997:13:10" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1529, "name": "receiver", "nodeType": "VariableDeclaration", "scope": 1606, "src": "2020:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1528, "name": "address", "nodeType": "ElementaryTypeName", "src": "2020:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1530, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "2020:16:10" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1532, "name": "amount", "nodeType": "VariableDeclaration", "scope": 1606, "src": "2046:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1531, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2046:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1533, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "2046:14:10" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1534, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1493, "src": "2074:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2074:11:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1536, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2089:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2074:16:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 1565, "nodeType": "Block", "src": "2195:413:10", "statements": [ { "expression": { "argumentTypes": null, "id": 1553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1551, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1526, "src": "2209:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1552, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1489, "src": "2217:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2209:10:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1554, "nodeType": "ExpressionStatement", "src": "2209:10:10" }, { "assignments": [], "declarations": [ { "constant": false, "id": 1556, "name": "functionIdentifier", "nodeType": "VariableDeclaration", "scope": 1606, "src": "2233:25:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1555, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2233:6:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": null, "visibility": "internal" } ], "id": 1557, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "2233:25:10" }, { "externalReferences": [ { "functionIdentifier": { "declaration": 1556, "isOffset": false, "isSlot": false, "src": "2367:18:10", "valueSize": 1 } }, { "data": { "declaration": 1493, "isOffset": false, "isSlot": false, "src": "2399:4:10", "valueSize": 1 } }, { "receiver": { "declaration": 1529, "isOffset": false, "isSlot": false, "src": "2428:8:10", "valueSize": 1 } }, { "amount": { "declaration": 1532, "isOffset": false, "isSlot": false, "src": "2479:6:10", "valueSize": 1 } }, { "data": { "declaration": 1493, "isOffset": false, "isSlot": false, "src": "2450:4:10", "valueSize": 1 } }, { "data": { "declaration": 1493, "isOffset": false, "isSlot": false, "src": "2499:4:10", "valueSize": 1 } } ], "id": 1558, "nodeType": "InlineAssembly", "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", "src": "2340:205:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 1562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1560, "name": "functionIdentifier", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1556, "src": "2546:18:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1561, "name": "TRANSFER_FUNCTION_IDENTIFIER", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1421, "src": "2568:28:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "2546:50:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1559, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2538:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1563, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2538:59:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1564, "nodeType": "ExpressionStatement", "src": "2538:59:10" } ] }, "id": 1566, "nodeType": "IfStatement", "src": "2070:538:10", "trueBody": { "id": 1550, "nodeType": "Block", "src": "2092:89:10", "statements": [ { "expression": { "argumentTypes": null, "id": 1540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1538, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1526, "src": "2106:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2114:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2106:9:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1541, "nodeType": "ExpressionStatement", "src": "2106:9:10" }, { "expression": { "argumentTypes": null, "id": 1544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1542, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "2129:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1543, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1489, "src": "2140:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2129:13:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1545, "nodeType": "ExpressionStatement", "src": "2129:13:10" }, { "expression": { "argumentTypes": null, "id": 1548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1546, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "2156:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1547, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1491, "src": "2165:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2156:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1549, "nodeType": "ExpressionStatement", "src": "2156:14:10" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1568, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1529, "src": "2625:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1569, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2637:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2625:13:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1567, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2617:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1571, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2617:22:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1572, "nodeType": "ExpressionStatement", "src": "2617:22:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1574, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "2657:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1575, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2666:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2657:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1573, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2649:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1577, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2649:19:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1578, "nodeType": "ExpressionStatement", "src": "2649:19:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1581, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1526, "src": "2763:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1582, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "2770:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1580, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1680, "src": "2750:12:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, "id": 1583, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2750:27:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1579, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2742:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1584, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2742:36:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1585, "nodeType": "ExpressionStatement", "src": "2742:36:10" }, { "expression": { "argumentTypes": null, "id": 1591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1586, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1425, "src": "2788:11:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, "id": 1588, "indexExpression": { "argumentTypes": null, "id": 1587, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1526, "src": "2800:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2788:18:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "id": 1589, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1429, "src": "2788:29:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "argumentTypes": null, "id": 1590, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1532, "src": "2821:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2788:39:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1592, "nodeType": "ExpressionStatement", "src": "2788:39:10" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1596, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1489, "src": "2879:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1597, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1491, "src": "2883:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1598, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1493, "src": "2890:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1599, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, "src": "2896:4:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", "typeString": "type(contract Enum)" } }, "id": 1600, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 5, "src": "2896:14:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", "typeString": "type(enum Enum.Operation)" } }, "id": 1601, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2896:19:10", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, "id": 1594, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 588, "src": "2845:7:10", "typeDescriptions": { "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } }, "id": 1595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", "referencedDeclaration": 798, "src": "2845:33:10", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, "id": 1602, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2845:71:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1593, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2399, 2400 ], "referencedDeclaration": 2399, "src": "2837:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1603, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2837:80:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1604, "nodeType": "ExpressionStatement", "src": "2837:80:10" } ] }, "documentation": null, "id": 1606, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "executeInternal", "nodeType": "FunctionDefinition", "parameters": { "id": 1494, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1487, "name": "sender", "nodeType": "VariableDeclaration", "scope": 1606, "src": "1630:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1486, "name": "address", "nodeType": "ElementaryTypeName", "src": "1630:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1489, "name": "to", "nodeType": "VariableDeclaration", "scope": 1606, "src": "1646:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1488, "name": "address", "nodeType": "ElementaryTypeName", "src": "1646:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1491, "name": "value", "nodeType": "VariableDeclaration", "scope": 1606, "src": "1658:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1490, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1658:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1493, "name": "data", "nodeType": "VariableDeclaration", "scope": 1606, "src": "1673:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 1492, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1673:5:10", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "1629:55:10" }, "payable": false, "returnParameters": { "id": 1495, "nodeType": "ParameterList", "parameters": [], "src": "1706:0:10" }, "scope": 1694, "src": "1605:1319:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1623, "nodeType": "Block", "src": "3393:61:10", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1616, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2396, "src": "3419:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3419:10:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1618, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1608, "src": "3431:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1619, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1610, "src": "3435:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1620, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1612, "src": "3442:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 1615, "name": "executeInternal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1606, "src": "3403:15:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, "id": 1621, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3403:44:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1622, "nodeType": "ExpressionStatement", "src": "3403:44:10" } ] }, "documentation": "@dev Returns if Safe transaction is a valid daily limit 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 @return Returns if transaction can be executed.", "id": 1624, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { "id": 1613, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1608, "name": "to", "nodeType": "VariableDeclaration", "scope": 1624, "src": "3335:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1607, "name": "address", "nodeType": "ElementaryTypeName", "src": "3335:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1610, "name": "value", "nodeType": "VariableDeclaration", "scope": 1624, "src": "3347:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1609, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3347:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1612, "name": "data", "nodeType": "VariableDeclaration", "scope": 1624, "src": "3362:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 1611, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3362:5:10", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "3334:39:10" }, "payable": false, "returnParameters": { "id": 1614, "nodeType": "ParameterList", "parameters": [], "src": "3393:0:10" }, "scope": 1694, "src": "3308:146:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 1679, "nodeType": "Block", "src": "3557:391:10", "statements": [ { "assignments": [ 1634 ], "declarations": [ { "constant": false, "id": 1634, "name": "dailyLimit", "nodeType": "VariableDeclaration", "scope": 1680, "src": "3567:29:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, "id": 1633, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1432, "src": "3567:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, "value": null, "visibility": "internal" } ], "id": 1638, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1635, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1425, "src": "3599:11:10", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, "id": 1637, "indexExpression": { "argumentTypes": null, "id": 1636, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1626, "src": "3611:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3599:18:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "3567:50:10" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1639, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1693, "src": "3631:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1640, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3631:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1641, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3641:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", "referencedDeclaration": 1431, "src": "3641:18:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3631:28:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1658, "nodeType": "IfStatement", "src": "3627:126:10", "trueBody": { "id": 1657, "nodeType": "Block", "src": "3661:92:10", "statements": [ { "expression": { "argumentTypes": null, "id": 1649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1644, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3675:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1646, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", "referencedDeclaration": 1431, "src": "3675:18:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1647, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1693, "src": "3696:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 1648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3696:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3675:28:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1650, "nodeType": "ExpressionStatement", "src": "3675:28:10" }, { "expression": { "argumentTypes": null, "id": 1655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1651, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3717:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1653, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1429, "src": "3717:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 1654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3741:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3717:25:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1656, "nodeType": "ExpressionStatement", "src": "3717:25:10" } ] } }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1662, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1659, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3769:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1660, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1429, "src": "3769:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 1661, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "3793:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3769:30:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1663, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3803:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1664, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", "referencedDeclaration": 1427, "src": "3803:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3769:55:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1669, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1666, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3840:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1667, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1429, "src": "3840:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 1668, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "3864:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3840:30:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1670, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1634, "src": "3873:10:10", "typeDescriptions": { "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, "id": 1671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", "referencedDeclaration": 1429, "src": "3873:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3840:54:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3769:125:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1676, "nodeType": "IfStatement", "src": "3762:157:10", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1674, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3915:4:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1632, "id": 1675, "nodeType": "Return", "src": "3908:11:10" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", "id": 1677, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3936:5:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "functionReturnParameters": 1632, "id": 1678, "nodeType": "Return", "src": "3929:12:10" } ] }, "documentation": null, "id": 1680, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { "id": 1629, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1626, "name": "token", "nodeType": "VariableDeclaration", "scope": 1680, "src": "3482:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1625, "name": "address", "nodeType": "ElementaryTypeName", "src": "3482:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1628, "name": "amount", "nodeType": "VariableDeclaration", "scope": 1680, "src": "3497:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1627, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3497:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3481:31:10" }, "payable": false, "returnParameters": { "id": 1632, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1631, "name": "", "nodeType": "VariableDeclaration", "scope": 1680, "src": "3547:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1630, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3547:4:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3546:6:10" }, "scope": 1694, "src": "3460:488:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1692, "nodeType": "Block", "src": "4112:44:10", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1685, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2398, "src": "4129:3:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1688, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1686, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2398, "src": "4136:3:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 1687, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4142:6:10", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", "typeString": "int_const 86400" }, "value": "1" }, "src": "4136:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 1689, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4135:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4129:20:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1684, "id": 1691, "nodeType": "Return", "src": "4122:27:10" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", "id": 1693, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "today", "nodeType": "FunctionDefinition", "parameters": { "id": 1681, "nodeType": "ParameterList", "parameters": [], "src": "4054:2:10" }, "payable": false, "returnParameters": { "id": 1684, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1683, "name": "", "nodeType": "VariableDeclaration", "scope": 1693, "src": "4102:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1682, "name": "uint", "nodeType": "ElementaryTypeName", "src": "4102:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4101:6:10" }, "scope": 1694, "src": "4040:116:10", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], "scope": 1695, "src": "296:3862:10" } ], "src": "0:4159:10" }, "compiler": { "name": "solc", "version": "0.4.23+commit.124ca40d.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, "address": "0x831ec5aaad91423fb78d3e1ad1fcf9d5006774df", "transactionHash": "0xdae4c3a40843ab9bf9e62becc882075695bb8c0bcc3f3a3aa3016559b63f90e4" }, "1525950336085": { "events": {}, "links": {}, "address": "0xe52c225329d3fb9f6933bd52e7067a24d20f7983", "transactionHash": "0xaffd9cdbf1bd14f5f349af2782a1b4dbebd9ac97abedbcfb9aee5fb1707afe96" }, "1526283540628": { "events": {}, "links": {}, "address": "0x452dd8d6f81786c3ad3ec3cbcf024687659c682a", "transactionHash": "0xaffd9cdbf1bd14f5f349af2782a1b4dbebd9ac97abedbcfb9aee5fb1707afe96" }, "1526478212260": { "events": {}, "links": {}, "address": "0x180cb429f1d8b3e99b718640d3895155e2190452", "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" }, "1526973574996": { "events": {}, "links": {}, "address": "0xdf2e7bbb8f57db7d8b11f9d8a77b0754979111c1", "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" } }, "schemaVersion": "2.0.0", "updatedAt": "2018-05-22T07:20:22.997Z" }