UNPKG

@tokamak-network/thanos-contracts

Version:
1 lines 78 kB
{"abi":[{"type":"constructor","inputs":[{"name":"_recipient","type":"address","internalType":"address payable"}],"stateMutability":"payable"}],"bytecode":{"object":"0x608060405260405160593803806059833981016040819052601e91602a565b806001600160a01b0316ff5b600060208284031215603b57600080fd5b81516001600160a01b0381168114605157600080fd5b939250505056fe","sourceMap":"283:165:243:-:0;;;357:89;;;;;;;;;;;;;;;;;;:::i;:::-;428:10;-1:-1:-1;;;;;415:24:243;;14:298:416;92:6;145:2;133:9;124:7;120:23;116:32;113:52;;;161:1;158;151:12;113:52;187:16;;-1:-1:-1;;;;;232:31:416;;222:42;;212:70;;278:1;275;268:12;212:70;301:5;14:298;-1:-1:-1;;;14:298:416:o","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600080fdfea164736f6c634300080f000a","sourceMap":"283:165:243:-:0;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_recipient\":\"Account to send ETH to.\"}}},\"title\":\"SafeSend\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Sends ETH to a recipient account without triggering any code.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/periphery/faucet/Faucet.sol\":\"SafeSend\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a\",\"dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq\"]},\"src/periphery/faucet/Faucet.sol\":{\"keccak256\":\"0xb5002cc0394afe46a9244b8f65a5b5601ee177be55867c52773a1bf789124cb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://673f34da6c815b00c8d9e2fb6c57e4a087d02f9aad453d626515cb21999558d9\",\"dweb:/ipfs/QmQ7hzya1TSV8iMuS64eYukSzNKebeAq7EPpnXMeV4phN9\"]},\"src/periphery/faucet/authmodules/IFaucetAuthModule.sol\":{\"keccak256\":\"0x1ae04232fda8aa0ae4fced4af75032bed7020576126cf04bd53ecb329673276d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a74059bfdfb5d091d7e3966e1e4157c20f97b4dc29b62a4a66e82d433fac850\",\"dweb:/ipfs/QmetdNihkTcus9YupsexJU7U3LSDM1EUAuVoNTH1Bebsjf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address payable","name":"_recipient","type":"address"}],"stateMutability":"payable","type":"constructor"}],"devdoc":{"kind":"dev","methods":{"constructor":{"params":{"_recipient":"Account to send ETH to."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/periphery/faucet/Faucet.sol":"SafeSend"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/libraries/SafeCall.sol":{"keccak256":"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f","urls":["bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a","dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq"],"license":"MIT"},"src/periphery/faucet/Faucet.sol":{"keccak256":"0xb5002cc0394afe46a9244b8f65a5b5601ee177be55867c52773a1bf789124cb3","urls":["bzz-raw://673f34da6c815b00c8d9e2fb6c57e4a087d02f9aad453d626515cb21999558d9","dweb:/ipfs/QmQ7hzya1TSV8iMuS64eYukSzNKebeAq7EPpnXMeV4phN9"],"license":"MIT"},"src/periphery/faucet/authmodules/IFaucetAuthModule.sol":{"keccak256":"0x1ae04232fda8aa0ae4fced4af75032bed7020576126cf04bd53ecb329673276d","urls":["bzz-raw://8a74059bfdfb5d091d7e3966e1e4157c20f97b4dc29b62a4a66e82d433fac850","dweb:/ipfs/QmetdNihkTcus9YupsexJU7U3LSDM1EUAuVoNTH1Bebsjf"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user","notice":"Sends ETH to a recipient account without triggering any code."},"devdoc":{"version":1,"kind":"dev","methods":{"constructor":{"params":{"_recipient":"Account to send ETH to."}}},"title":"SafeSend"},"ast":{"absolutePath":"src/periphery/faucet/Faucet.sol","id":118196,"exportedSymbols":{"Faucet":[118195],"IFaucetAuthModule":[118300],"SafeCall":[114740],"SafeSend":[117925]},"nodeType":"SourceUnit","src":"32:5293:243","nodes":[{"id":117908,"nodeType":"PragmaDirective","src":"32:23:243","nodes":[],"literals":["solidity","0.8",".15"]},{"id":117910,"nodeType":"ImportDirective","src":"57:72:243","nodes":[],"absolutePath":"src/periphery/faucet/authmodules/IFaucetAuthModule.sol","file":"./authmodules/IFaucetAuthModule.sol","nameLocation":"-1:-1:-1","scope":118196,"sourceUnit":118301,"symbolAliases":[{"foreign":{"id":117909,"name":"IFaucetAuthModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118300,"src":"66:17:243","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":117912,"nodeType":"ImportDirective","src":"130:56:243","nodes":[],"absolutePath":"src/libraries/SafeCall.sol","file":"../../libraries/SafeCall.sol","nameLocation":"-1:-1:-1","scope":118196,"sourceUnit":114741,"symbolAliases":[{"foreign":{"id":117911,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114740,"src":"139:8:243","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":117925,"nodeType":"ContractDefinition","src":"283:165:243","nodes":[{"id":117924,"nodeType":"FunctionDefinition","src":"357:89:243","nodes":[],"body":{"id":117923,"nodeType":"Block","src":"405:41:243","nodes":[],"statements":[{"expression":{"arguments":[{"id":117920,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117916,"src":"428:10:243","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":117919,"name":"selfdestruct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-21,"src":"415:12:243","typeDescriptions":{"typeIdentifier":"t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$","typeString":"function (address payable)"}},"id":117921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"415:24:243","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":117922,"nodeType":"ExpressionStatement","src":"415:24:243"}]},"documentation":{"id":117914,"nodeType":"StructuredDocumentation","src":"307:45:243","text":"@param _recipient Account to send ETH to."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":117917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117916,"mutability":"mutable","name":"_recipient","nameLocation":"385:10:243","nodeType":"VariableDeclaration","scope":117924,"src":"369:26:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":117915,"name":"address","nodeType":"ElementaryTypeName","src":"369:15:243","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"368:28:243"},"returnParameters":{"id":117918,"nodeType":"ParameterList","parameters":[],"src":"405:0:243"},"scope":117925,"stateMutability":"payable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[],"canonicalName":"SafeSend","contractDependencies":[],"contractKind":"contract","documentation":{"id":117913,"nodeType":"StructuredDocumentation","src":"188:95:243","text":"@title SafeSend\n @notice Sends ETH to a recipient account without triggering any code."},"fullyImplemented":true,"linearizedBaseContracts":[117925],"name":"SafeSend","nameLocation":"292:8:243","scope":118196,"usedErrors":[]},{"id":118195,"nodeType":"ContractDefinition","src":"522:4802:243","nodes":[{"id":117937,"nodeType":"EventDefinition","src":"848:105:243","nodes":[],"anonymous":false,"documentation":{"id":117927,"nodeType":"StructuredDocumentation","src":"544:299:243","text":"@notice Emitted on each drip.\n @param authModule The type of authentication that was used for verifying the drip.\n @param userId The id of the user that requested the drip.\n @param amount The amount of funds sent.\n @param recipient The recipient of the drip."},"eventSelector":"2cebdf1cc706a50e1b28bf2fc5cfbd7204747a3b82439b85721a474df3a355a4","name":"Drip","nameLocation":"854:4:243","parameters":{"id":117936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117929,"indexed":true,"mutability":"mutable","name":"authModule","nameLocation":"874:10:243","nodeType":"VariableDeclaration","scope":117937,"src":"859:25:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":117928,"name":"string","nodeType":"ElementaryTypeName","src":"859:6:243","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":117931,"indexed":true,"mutability":"mutable","name":"userId","nameLocation":"902:6:243","nodeType":"VariableDeclaration","scope":117937,"src":"886:22:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":117930,"name":"bytes32","nodeType":"ElementaryTypeName","src":"886:7:243","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":117933,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"918:6:243","nodeType":"VariableDeclaration","scope":117937,"src":"910:14:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":117932,"name":"uint256","nodeType":"ElementaryTypeName","src":"910:7:243","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":117935,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"942:9:243","nodeType":"VariableDeclaration","scope":117937,"src":"926:25:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":117934,"name":"address","nodeType":"ElementaryTypeName","src":"926:7:243","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"858:94:243"}},{"id":117946,"nodeType":"StructDefinition","src":"998:132:243","nodes":[],"canonicalName":"Faucet.DripParameters","members":[{"constant":false,"id":117939,"mutability":"mutable","name":"recipient","nameLocation":"1046:9:243","nodeType":"VariableDeclaration","scope":117946,"src":"1030:25:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":117938,"name":"address","nodeType":"ElementaryTypeName","src":"1030:15:243","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":117941,"mutability":"mutable","name":"data","nameLocation":"1071:4:243","nodeType":"VariableDeclaration","scope":117946,"src":"1065:10:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":117940,"name":"bytes","nodeType":"ElementaryTypeName","src":"1065:5:243","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":117943,"mutability":"mutable","name":"nonce","nameLocation":"1093:5:243","nodeType":"VariableDeclaration","scope":117946,"src":"1085:13:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":117942,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1085:7:243","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":117945,"mutability":"mutable","name":"gasLimit","nameLocation":"1115:8:243","nodeType":"VariableDeclaration","scope":117946,"src":"1108:15:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":117944,"name":"uint32","nodeType":"ElementaryTypeName","src":"1108:6:243","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"name":"DripParameters","nameLocation":"1005:14:243","scope":118195,"visibility":"public"},{"id":117954,"nodeType":"StructDefinition","src":"1183:104:243","nodes":[],"canonicalName":"Faucet.AuthParameters","members":[{"constant":false,"id":117949,"mutability":"mutable","name":"module","nameLocation":"1233:6:243","nodeType":"VariableDeclaration","scope":117954,"src":"1215:24:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFaucetAuthModule_$118300","typeString":"contract IFaucetAuthModule"},"typeName":{"id":117948,"nodeType":"UserDefinedTypeName","pathNode":{"id":117947,"name":"IFaucetAuthModule","nodeType":"IdentifierPath","referencedDeclaration":118300,"src":"1215:17:243"},"referencedDeclaration":118300,"src":"1215:17:243","typeDescriptions":{"typeIdentifier":"t_contract$_IFaucetAuthModule_$118300","typeString":"contract IFaucetAuthModule"}},"visibility":"internal"},{"constant":false,"id":117951,"mutability":"mutable","name":"id","nameLocation":"1257:2:243","nodeType":"VariableDeclaration","scope":117954,"src":"1249:10:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":117950,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1249:7:243","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":117953,"mutability":"mutable","name":"proof","nameLocation":"1275:5:243","nodeType":"VariableDeclaration","scope":117954,"src":"1269:11:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":117952,"name":"bytes","nodeType":"ElementaryTypeName","src":"1269:5:243","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"AuthParameters","nameLocation":"1190:14:243","scope":118195,"visibility":"public"},{"id":117963,"nodeType":"StructDefinition","src":"1353:115:243","nodes":[],"canonicalName":"Faucet.ModuleConfig","members":[{"constant":false,"id":117956,"mutability":"mutable","name":"name","nameLocation":"1390:4:243","nodeType":"VariableDeclaration","scope":117963,"src":"1383:11:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":117955,"name":"string","nodeType":"ElementaryTypeName","src":"1383:6:243","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":117958,"mutability":"mutable","name":"enabled","nameLocation":"1409:7:243","nodeType":"VariableDeclaration","scope":117963,"src":"1404:12:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":117957,"name":"bool","nodeType":"ElementaryTypeName","src":"1404:4:243","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":117960,"mutability":"mutable","name":"ttl","nameLocation":"1434:3:243","nodeType":"VariableDeclaration","scope":117963,"src":"1426:11:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":117959,"name":"uint256","nodeType":"ElementaryTypeName","src":"1426:7:243","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":117962,"mutability":"mutable","name":"amount","nameLocation":"1455:6:243","nodeType":"VariableDeclaration","scope":117963,"src":"1447:14:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":117961,"name":"uint256","nodeType":"ElementaryTypeName","src":"1447:7:243","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ModuleConfig","nameLocation":"1360:12:243","scope":118195,"visibility":"public"},{"id":117966,"nodeType":"VariableDeclaration","src":"1535:30:243","nodes":[],"constant":false,"documentation":{"id":117964,"nodeType":"StructuredDocumentation","src":"1474:56:243","text":"@notice Admin address that can configure the faucet."},"functionSelector":"2a0acc6a","mutability":"immutable","name":"ADMIN","nameLocation":"1560:5:243","scope":118195,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":117965,"name":"address","nodeType":"ElementaryTypeName","src":"1535:7:243","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":117973,"nodeType":"VariableDeclaration","src":"1647:57:243","nodes":[],"constant":false,"documentation":{"id":117967,"nodeType":"StructuredDocumentation","src":"1572:70:243","text":"@notice Mapping of authentication modules to their configurations."},"functionSelector":"a8ee49fe","mutability":"mutable","name":"modules","nameLocation":"1697:7:243","scope":118195,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IFaucetAuthModule_$118300_$_t_struct$_ModuleConfig_$117963_storage_$","typeString":"mapping(contract IFaucetAuthModule => struct Faucet.ModuleConfig)"},"typeName":{"id":117972,"keyType":{"id":117969,"nodeType":"UserDefinedTypeName","pathNode":{"id":117968,"name":"IFaucetAuthModule","nodeType":"IdentifierPath","referencedDeclaration":118300,"src":"1655:17:243"},"referencedDeclaration":118300,"src":"1655:17:243","typeDescriptions":{"typeIdentifier":"t_contract$_IFaucetAuthModule_$118300","typeString":"contract IFaucetAuthModule"}},"nodeType":"Mapping","src":"1647:42:243","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IFaucetAuthModule_$118300_$_t_struct$_ModuleConfig_$117963_storage_$","typeString":"mapping(contract IFaucetAuthModule => struct Faucet.ModuleConfig)"},"valueType":{"id":117971,"nodeType":"UserDefinedTypeName","pathNode":{"id":117970,"name":"ModuleConfig","nodeType":"IdentifierPath","referencedDeclaration":117963,"src":"1676:12:243"},"referencedDeclaration":117963,"src":"1676:12:243","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleConfig_$117963_storage_ptr","typeString":"struct Faucet.ModuleConfig"}}},"visibility":"public"},{"id":117981,"nodeType":"VariableDeclaration","src":"1806:73:243","nodes":[],"constant":false,"documentation":{"id":117974,"nodeType":"StructuredDocumentation","src":"1711:90:243","text":"@notice Mapping of authentication IDs to the next timestamp at which they can be used."},"functionSelector":"38757bfd","mutability":"mutable","name":"timeouts","nameLocation":"1871:8:243","scope":118195,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IFaucetAuthModule_$118300_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(contract IFaucetAuthModule => mapping(bytes32 => uint256))"},"typeName":{"id":117980,"keyType":{"id":117976,"nodeType":"UserDefinedTypeName","pathNode":{"id":117975,"name":"IFaucetAuthModule","nodeType":"IdentifierPath","referencedDeclaration":118300,"src":"1814:17:243"},"referencedDeclaration":118300,"src":"1814:17:243","typeDescriptions":{"typeIdentifier":"t_contract$_IFaucetAuthModule_$118300","typeString":"contract IFaucetAuthModule"}},"nodeType":"Mapping","src":"1806:57:243","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IFaucetAuthModule_$118300_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(contract IFaucetAuthModule => mapping(bytes32 => uint256))"},"valueType":{"id":117979,"keyType":{"id":117977,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1843:7:243","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1835:27:243","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":117978,"name":"uint256","nodeType":"ElementaryTypeName","src":"1854:7:243","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":117988,"nodeType":"VariableDeclaration","src":"1964:58:243","nodes":[],"constant":false,"documentation":{"id":117982,"nodeType":"StructuredDocumentation","src":"1886:73:243","text":"@notice Maps from id to nonces to whether or not they have been used."},"functionSelector":"1d5d26bc","mutability":"mutable","name":"nonces","nameLocation":"2016:6:243","scope":118195,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_bool_$_$","typeString":"mapping(bytes32 => mapping(bytes32 => bool))"},"typeName":{"id":117987,"keyType":{"id":117983,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1972:7:243","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1964:44:243","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_bool_$_$","typeString":"mapping(bytes32 => mapping(bytes32 => bool))"},"valueType":{"id":117986,"keyType":{"id":117984,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1991:7:243","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1983:24:243","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"valueType":{"id":117985,"name":"bool","nodeType":"ElementaryTypeName","src":"2002:4:243","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"public"},{"id":118001,"nodeType":"ModifierDefinition","src":"2095:127:243","nodes":[],"body":{"id":118000,"nodeType":"Block","src":"2118:104:243","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":117995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":117992,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2136:3:243","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":117993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2136:10:243","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":117994,"name":"ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117966,"src":"2150:5:243","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2136:19:243","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4661756365743a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642062792061646d696e","id":117996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2157:46:243","typeDescriptions":{"typeIdentifier":"t_stringliteral_11dc0a10cbbc1cc6b65f2557b3594efa38f24c7a8739675b3fb6ad92d74983c4","typeString":"literal_string \"Faucet: function can only be called by admin\""},"value":"Faucet: function can only be called by admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_11dc0a10cbbc1cc6b65f2557b3594efa38f24c7a8739675b3fb6ad92d74983c4","typeString":"literal_string \"Faucet: function can only be called by admin\""}],"id":117991,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2128:7:243","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":117997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2128:76:243","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":117998,"nodeType":"ExpressionStatement","src":"2128:76:243"},{"id":117999,"nodeType":"PlaceholderStatement","src":"2214:1:243"}]},"documentation":{"id":117989,"nodeType":"StructuredDocumentation","src":"2029:61:243","text":"@notice Modifier that makes a function admin priviledged."},"name":"priviledged","nameLocation":"2104:11:243","parameters":{"id":117990,"nodeType":"ParameterList","parameters":[],"src":"2115:2:243"},"virtual":false,"visibility":"internal"},{"id":118012,"nodeType":"FunctionDefinition","src":"2295:59:243","nodes":[],"body":{"id":118011,"nodeType":"Block","src":"2323:31:243","nodes":[],"statements":[{"expression":{"id":118009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":118007,"name":"ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117966,"src":"2333:5:243","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":118008,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118004,"src":"2341:6:243","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2333:14:243","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":118010,"nodeType":"ExpressionStatement","src":"2333:14:243"}]},"documentation":{"id":118002,"nodeType":"StructuredDocumentation","src":"2228:62:243","text":"@param _admin Admin address that can configure the faucet."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":118005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118004,"mutability":"mutable","name":"_admin","nameLocation":"2315:6:243","nodeType":"VariableDeclaration","scope":118012,"src":"2307:14:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118003,"name":"address","nodeType":"ElementaryTypeName","src":"2307:7:243","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2306:16:243"},"returnParameters":{"id":118006,"nodeType":"ParameterList","parameters":[],"src":"2323:0:243"},"scope":118195,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":118017,"nodeType":"FunctionDefinition","src":"2421:56:243","nodes":[],"body":{"id":118016,"nodeType":"Block","src":"2448:29:243","nodes":[],"statements":[]},"documentation":{"id":118013,"nodeType":"StructuredDocumentation","src":"2360:56:243","text":"@notice Allows users to donate ETH to this contract."},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":118014,"nodeType":"ParameterList","parameters":[],"src":"2428:2:243"},"returnParameters":{"id":118015,"nodeType":"ParameterList","parameters":[],"src":"2448:0:243"},"scope":118195,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":118036,"nodeType":"FunctionDefinition","src":"2651:141:243","nodes":[],"body":{"id":118035,"nodeType":"Block","src":"2733:59:243","nodes":[],"statements":[{"expression":{"arguments":[{"id":118032,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118020,"src":"2774:10:243","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":118029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2743:12:243","typeDescriptions":{"typeIdentifier":"t_function_creation_payable$_t_address_payable_$returns$_t_contract$_SafeSend_$117925_$","typeString":"function (address payable) payable returns (contract SafeSend)"},"typeName":{"id":118028,"nodeType":"UserDefinedTypeName","pathNode":{"id":118027,"name":"SafeSend","nodeType":"IdentifierPath","referencedDeclaration":117925,"src":"2747:8:243"},"referencedDeclaration":117925,"src":"2747:8:243","typeDescriptions":{"typeIdentifier":"t_contract$_SafeSend_$117925","typeString":"contract SafeSend"}}},"id":118031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":118030,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118022,"src":"2764:7:243","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2743:30:243","typeDescriptions":{"typeIdentifier":"t_function_creation_payable$_t_address_payable_$returns$_t_contract$_SafeSend_$117925_$value","typeString":"function (address payable) payable returns (contract SafeSend)"}},"id":118033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2743:42:243","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_SafeSend_$117925","typeString":"contract SafeSend"}},"id":118034,"nodeType":"ExpressionStatement","src":"2743:42:243"}]},"documentation":{"id":118018,"nodeType":"StructuredDocumentation","src":"2483:163:243","text":"@notice Allows the admin to withdraw funds.\n @param _recipient Address to receive the funds.\n @param _amount Amount of ETH in wei to withdraw."},"functionSelector":"f3fef3a3","implemented":true,"kind":"function","modifiers":[{"id":118025,"kind":"modifierInvocation","modifierName":{"id":118024,"name":"priviledged","nodeType":"IdentifierPath","referencedDeclaration":118001,"src":"2721:11:243"},"nodeType":"ModifierInvocation","src":"2721:11:243"}],"name":"withdraw","nameLocation":"2660:8:243","parameters":{"id":118023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118020,"mutability":"mutable","name":"_recipient","nameLocation":"2685:10:243","nodeType":"VariableDeclaration","scope":118036,"src":"2669:26:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":118019,"name":"address","nodeType":"ElementaryTypeName","src":"2669:15:243","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":118022,"mutability":"mutable","name":"_amount","nameLocation":"2705:7:243","nodeType":"VariableDeclaration","scope":118036,"src":"2697:15:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":118021,"name":"uint256","nodeType":"ElementaryTypeName","src":"2697:7:243","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2668:45:243"},"returnParameters":{"id":118026,"nodeType":"ParameterList","parameters":[],"src":"2733:0:243"},"scope":118195,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":118055,"nodeType":"FunctionDefinition","src":"2989:137:243","nodes":[],"body":{"id":118054,"nodeType":"Block","src":"3083:43:243","nodes":[],"statements":[{"expression":{"id":118052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":118048,"name":"modules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117973,"src":"3093:7:243","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IFaucetAuthModule_$118300_$_t_struct$_ModuleConfig_$117963_storage_$","typeString":"mapping(contract IFaucetAuthModule => struct Faucet.ModuleConfig storage ref)"}},"id":118050,"indexExpression":{"id":118049,"name":"_module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118040,"src":"3101:7:243","typeDescriptions":{"typeIdentifier":"t_contract$_IFaucetAuthModule_$118300","typeString":"contract IFaucetAuthModule"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3093:16:243","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleConfig_$117963_storage","typeString":"struct Faucet.ModuleConfig storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":118051,"name":"_config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118043,"src":"3112:7:243","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleConfig_$117963_memory_ptr","typeString":"struct Faucet.ModuleConfig memory"}},"src":"3093:26:243","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleConfig_$117963_storage","typeString":"struct Faucet.ModuleConfig storage ref"}},"id":118053,"nodeType":"ExpressionStatement","src":"3093:26:243"}]},"documentation":{"id":118037,"nodeType":"StructuredDocumentation","src":"2798:186:243","text":"@notice Allows the admin to configure an authentication module.\n @param _module Authentication module to configure.\n @param _config Configuration to set for the module."},"functionSelector":"1cb81b88","implemented":true,"kind":"function","modifiers":[{"id":118046,"kind":"modifierInvocation","modifierName":{"id":118045,"name":"priviledged","nodeType":"IdentifierPath","referencedDeclaration":118001,"src":"3071:11:243"},"nodeType":"ModifierInvocation","src":"3071:11:243"}],"name":"configure","nameLocation":"2998:9:243","parameters":{"id":118044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118040,"mutability":"mutable","name":"_module","nameLocation":"3026:7:243","nodeType":"VariableDeclaration","scope":118055,"src":"3008:25:243","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFaucetAuthModule_$118300","typeString":"contract IFaucetAuthModule"},"typeName":{"id":118039,"nodeType":"UserDefinedTypeName","pathNode":{"id":118038,"name":"IFaucetAuthModule","nodeType":"IdentifierPath","referencedDeclaration":118300,"src":"3008:17:243"},"referencedDeclaration":118300,"src":"3008:17:243","typeDescriptions":{"typeIdentifier":"t_contract$_IFaucetAuthModule_$118300","typeString":"contract IFaucetAuthModule"}},"visibility":"internal"},{"constant":false,"id":118043,"mutability":"mutable","name":"_config","nameLocation":"3055:7:243","nodeType":"VariableDeclaration","scope":118055,"src":"3035:27:243","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleConfig_$117963_memory_ptr","typeString":"struct Faucet.ModuleConfig"},"typeName":{"id":118042,"nodeType":"UserDefinedTypeName","pathNode":{"id":118041,"name":"ModuleConfig","nodeType":"IdentifierPath","referencedDeclaration":117963,"src":"3035:12:243"},"referencedDeclaration":117963,"src":"3035:12:243","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleConfig_$117963_storage_ptr","typeString":"struct Faucet.ModuleConfig"}},"visibility":"internal"}],"src":"3007:56:243"},"returnParameters":{"id":118047,"nodeType":"ParameterList","parameters":[],"src":"3083:0:243"},"scope":118195,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":118179,"nodeType":"FunctionDefinition","src":"3272:1759:243","nodes":[],"body":{"id":118178,"nodeType":"Block","src":"3353:1678:243","nodes":[],"statements":[{"assignments":[118067],"declarations":[{"constant":false,"id":118067,"mutability":"mutable","name":"config","nameLocation":"3423:6:243","nodeType":"VariableDeclaration","scope":118178,"src":"3403:26:243","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleConfig_$117963_memory_ptr","typeString":"struct Faucet.ModuleConfig"},"typeName":{"id":118066,"nodeType":"UserDefinedTypeName","pathNode":{"id":118065,"name":"ModuleConfig","nodeType":"IdentifierPath","referencedDeclaration":117963,"src":"3403:12:243"},"referencedDeclaration":117963,"src":"3403:12:243","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleConfig_$117963_storage_ptr","typeString":"struct Faucet.ModuleConfig"}},"visibility":"internal"}],"id":118072,"initialValue":{"baseExpression":{"id":118068,"name":"modules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117973,"src":"3432:7:243","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IFaucetAuthModule_$118300_$_t_struct$_ModuleConfig_$117963_storage_$","typeString":"mapping(contract IFaucetAuthModule => struct Faucet.ModuleConfig storage ref)"}},"id":118071,"indexExpression":{"expression":{"id":118069,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118062,"src":"3440:5:243","typeDescriptions":{"typeIdentifier":"t_struct$_AuthParameters_$117954_memory_ptr","typeString":"struct Faucet.AuthParameters memory"}},"id":118070,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"module","nodeType":"MemberAccess","referencedDeclaration":117949,"src":"3440:12:243","typeDescriptions":{"typeIdentifier":"t_contract$_IFaucetAuthModule_$118300","typeString":"contract IFaucetAuthModule"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3432:21:243","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleConfig_$117963_storage","typeString":"struct Faucet.ModuleConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3403:50:243"},{"expression":{"arguments":[{"expression":{"id":118074,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118067,"src":"3534:6:243","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleConfig_$117963_memory_ptr","typeString":"struct Faucet.ModuleConfig memory"}},"id":118075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"enabled","nodeType":"MemberAccess","referencedDeclaration":117958,"src":"3534:14:243","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4661756365743a2070726f76696465642061757468206d6f64756c65206973206e6f7420737570706f72746564206279207468697320666175636574","id":118076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3550:62:243","typeDescriptions":{"typeIdentifier":"t_stringliteral_a487bd17616eecf27b0cfc5721c4a6f239e71d3a78775f3783bebb377904f494","typeString":"literal_string \"Faucet: provided auth module is not supported by this faucet\""},"value":"Faucet: provided auth module is not supported by this faucet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a487bd17616eecf27b0cfc5721c4a6f239e71d3a78775f3783bebb377904f494","typeString":"literal_string \"Faucet: provided auth module is not supported by this faucet\""}],"id":118073,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3526:7:243","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":118077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3526:87:243","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":118078,"nodeType":"ExpressionStatement","src":"3526:87:243"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":118088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":118080,"name":"nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117988,"src":"3928:6:243","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_bool_$_$","typeString":"mapping(bytes32 => mapping(bytes32 => bool))"}},"id":118083,"indexExpression":{"expression":{"id":118081,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118062,"src":"3935:5:243","typeDescriptions":{"typeIdentifier":"t_struct$_AuthParameters_$117954_memory_ptr","typeString":"struct Faucet.AuthParameters memory"}},"id":118082,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"id","nodeType":"MemberAccess","referencedDeclaration":117951,"src":"3935:8:243","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3928:16:243","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":118086,"indexExpression":{"expression":{"id":118084,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118059,"src":"3945:7:243","typeDescriptions":{"typeIdentifier":"t_struct$_DripParameters_$117946_memory_ptr","typeString":"struct Faucet.DripParameters memory"}},"id":118085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":117943,"src":"3945:13:243","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3928:31:243","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":118087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3963:5:243","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3928:40:243","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4661756365743a206e6f6e63652068617320616c7265616479206265656e2075736564","id":118089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3970:37:243","typeDescriptions":{"typeIdentifier":"t_stringliteral_38a35c84541827923eff9aa90f61202cb382140ced78b1ed52388919b57b3f37","typeString":"literal_string \"Faucet: nonce has already been used\""},"value":"Faucet: nonce has already been used"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38a35c84541827923eff9aa90f61202cb382140ced78b1ed52388919b57b3f37","typeString":"literal_string \"Faucet: nonce has already been used\""}],"id":118079,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3920:7:243","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":118090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3920:88:243","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":118091,"nodeType":"ExpressionStatement","src":"3920:88:243"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":118102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":118093,"name":"timeouts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117981,"src":"4086:8:243","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IFaucetAuthModule_$118300_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(contract IFaucetAuthModule => mapping(bytes32 => uint256))"}},"id":118096,"indexExpression":{"expression":{"id":118094,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118062,"src":"4095:5:243","typeDescriptions":{"typeIdentifier":"t_struct$_AuthParameters_$117954_memory_ptr","typeString":"struct Faucet.AuthParameters memory"}},"id":118095,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"module","nodeType":"MemberAccess","referencedDeclaration":117949,"src":"4095:12:243","typeDescriptions":{"typeIdentifier":"t_contract$_IFaucetAuthModule_$118300","typeString":"contract IFaucetAuthModule"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4086:22:243","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":118099,"indexExpression":{"expression":{"id":118097,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118062,"src":"4109:5:243","typeDescriptions":{"typeIdentifier":"t_struct$_AuthParameters_$117954_memory_ptr","typeString":"struct Faucet.AuthParameters memory"}},"id":118098,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"id","nodeType":"MemberAccess","referencedDeclaration":117951,"src":"4109:8:243","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4086:32:243","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":118100,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"refer