UNPKG

@aragon/apps-payroll

Version:

_**Code in Github:**_ [aragon-apps/apps/payroll](https://github.com/aragon/aragon-apps/tree/master/future-apps/payroll)

1,087 lines 41.4 kB
{ "contractName": "TimeHelpers", "abi": [], "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820a45591a005ad8a3b7e83474bb53feb29a1e731fe70048d21674a9064546805f50029", "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820a45591a005ad8a3b7e83474bb53feb29a1e731fe70048d21674a9064546805f50029", "sourceMap": "103:1266:37:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;103:1266:37;;;;;;;", "deployedSourceMap": "103:1266:37:-;;;;;", "source": "/*\n * SPDX-License-Identitifer: MIT\n */\n\npragma solidity ^0.4.24;\n\nimport \"./Uint256Helpers.sol\";\n\n\ncontract TimeHelpers {\n using Uint256Helpers for uint256;\n\n /**\n * @dev Returns the current block number.\n * Using a function rather than `block.number` allows us to easily mock the block number in\n * tests.\n */\n function getBlockNumber() internal view returns (uint256) {\n return block.number;\n }\n\n /**\n * @dev Returns the current block number, converted to uint64.\n * Using a function rather than `block.number` allows us to easily mock the block number in\n * tests.\n */\n function getBlockNumber64() internal view returns (uint64) {\n return getBlockNumber().toUint64();\n }\n\n /**\n * @dev Returns the current timestamp.\n * Using a function rather than `block.timestamp` allows us to easily mock it in\n * tests.\n */\n function getTimestamp() internal view returns (uint256) {\n return block.timestamp; // solium-disable-line security/no-block-members\n }\n\n /**\n * @dev Returns the current timestamp, converted to uint64.\n * Using a function rather than `block.timestamp` allows us to easily mock it in\n * tests.\n */\n function getTimestamp64() internal view returns (uint64) {\n return getTimestamp().toUint64();\n }\n}\n", "sourcePath": "@aragon/os/contracts/common/TimeHelpers.sol", "ast": { "absolutePath": "@aragon/os/contracts/common/TimeHelpers.sol", "exportedSymbols": { "TimeHelpers": [ 11200 ] }, "id": 11201, "nodeType": "SourceUnit", "nodes": [ { "id": 11155, "literals": [ "solidity", "^", "0.4", ".24" ], "nodeType": "PragmaDirective", "src": "44:24:37" }, { "absolutePath": "@aragon/os/contracts/common/Uint256Helpers.sol", "file": "./Uint256Helpers.sol", "id": 11156, "nodeType": "ImportDirective", "scope": 11201, "sourceUnit": 11232, "src": "70:30:37", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 11200, "linearizedBaseContracts": [ 11200 ], "name": "TimeHelpers", "nodeType": "ContractDefinition", "nodes": [ { "id": 11159, "libraryName": { "contractScope": null, "id": 11157, "name": "Uint256Helpers", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11231, "src": "136:14:37", "typeDescriptions": { "typeIdentifier": "t_contract$_Uint256Helpers_$11231", "typeString": "library Uint256Helpers" } }, "nodeType": "UsingForDirective", "src": "130:33:37", "typeName": { "id": 11158, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "155:7:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "body": { "id": 11167, "nodeType": "Block", "src": "405:36:37", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11164, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15143, "src": "422:5:37", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 11165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "number", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "422:12:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 11163, "id": 11166, "nodeType": "Return", "src": "415:19:37" } ] }, "documentation": "@dev Returns the current block number.\n Using a function rather than `block.number` allows us to easily mock the block number in\n tests.", "id": 11168, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getBlockNumber", "nodeType": "FunctionDefinition", "parameters": { "id": 11160, "nodeType": "ParameterList", "parameters": [], "src": "370:2:37" }, "payable": false, "returnParameters": { "id": 11163, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11162, "name": "", "nodeType": "VariableDeclaration", "scope": 11168, "src": "396:7:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11161, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "396:7:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "395:9:37" }, "scope": 11200, "src": "347:94:37", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { "id": 11178, "nodeType": "Block", "src": "705:51:37", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 11173, "name": "getBlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11168, "src": "722:14:37", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 11174, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "722:16:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 11175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint64", "nodeType": "MemberAccess", "referencedDeclaration": 11230, "src": "722:25:37", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)" } }, "id": 11176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "722:27:37", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "functionReturnParameters": 11172, "id": 11177, "nodeType": "Return", "src": "715:34:37" } ] }, "documentation": "@dev Returns the current block number, converted to uint64.\n Using a function rather than `block.number` allows us to easily mock the block number in\n tests.", "id": 11179, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getBlockNumber64", "nodeType": "FunctionDefinition", "parameters": { "id": 11169, "nodeType": "ParameterList", "parameters": [], "src": "671:2:37" }, "payable": false, "returnParameters": { "id": 11172, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11171, "name": "", "nodeType": "VariableDeclaration", "scope": 11179, "src": "697:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 11170, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "697:6:37", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "value": null, "visibility": "internal" } ], "src": "696:8:37" }, "scope": 11200, "src": "646:110:37", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { "id": 11187, "nodeType": "Block", "src": "982:88:37", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11184, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15143, "src": "999:5:37", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 11185, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "999:15:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 11183, "id": 11186, "nodeType": "Return", "src": "992:22:37" } ] }, "documentation": "@dev Returns the current timestamp.\n Using a function rather than `block.timestamp` allows us to easily mock it in\n tests.", "id": 11188, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getTimestamp", "nodeType": "FunctionDefinition", "parameters": { "id": 11180, "nodeType": "ParameterList", "parameters": [], "src": "947:2:37" }, "payable": false, "returnParameters": { "id": 11183, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11182, "name": "", "nodeType": "VariableDeclaration", "scope": 11188, "src": "973:7:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11181, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "973:7:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "972:9:37" }, "scope": 11200, "src": "926:144:37", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { "id": 11198, "nodeType": "Block", "src": "1318:49:37", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 11193, "name": "getTimestamp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11188, "src": "1335:12:37", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 11194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1335:14:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 11195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint64", "nodeType": "MemberAccess", "referencedDeclaration": 11230, "src": "1335:23:37", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)" } }, "id": 11196, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1335:25:37", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "functionReturnParameters": 11192, "id": 11197, "nodeType": "Return", "src": "1328:32:37" } ] }, "documentation": "@dev Returns the current timestamp, converted to uint64.\n Using a function rather than `block.timestamp` allows us to easily mock it in\n tests.", "id": 11199, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getTimestamp64", "nodeType": "FunctionDefinition", "parameters": { "id": 11189, "nodeType": "ParameterList", "parameters": [], "src": "1284:2:37" }, "payable": false, "returnParameters": { "id": 11192, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11191, "name": "", "nodeType": "VariableDeclaration", "scope": 11199, "src": "1310:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 11190, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1310:6:37", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "value": null, "visibility": "internal" } ], "src": "1309:8:37" }, "scope": 11200, "src": "1261:106:37", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], "scope": 11201, "src": "103:1266:37" } ], "src": "44:1326:37" }, "legacyAST": { "absolutePath": "@aragon/os/contracts/common/TimeHelpers.sol", "exportedSymbols": { "TimeHelpers": [ 11200 ] }, "id": 11201, "nodeType": "SourceUnit", "nodes": [ { "id": 11155, "literals": [ "solidity", "^", "0.4", ".24" ], "nodeType": "PragmaDirective", "src": "44:24:37" }, { "absolutePath": "@aragon/os/contracts/common/Uint256Helpers.sol", "file": "./Uint256Helpers.sol", "id": 11156, "nodeType": "ImportDirective", "scope": 11201, "sourceUnit": 11232, "src": "70:30:37", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 11200, "linearizedBaseContracts": [ 11200 ], "name": "TimeHelpers", "nodeType": "ContractDefinition", "nodes": [ { "id": 11159, "libraryName": { "contractScope": null, "id": 11157, "name": "Uint256Helpers", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11231, "src": "136:14:37", "typeDescriptions": { "typeIdentifier": "t_contract$_Uint256Helpers_$11231", "typeString": "library Uint256Helpers" } }, "nodeType": "UsingForDirective", "src": "130:33:37", "typeName": { "id": 11158, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "155:7:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "body": { "id": 11167, "nodeType": "Block", "src": "405:36:37", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11164, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15143, "src": "422:5:37", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 11165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "number", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "422:12:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 11163, "id": 11166, "nodeType": "Return", "src": "415:19:37" } ] }, "documentation": "@dev Returns the current block number.\n Using a function rather than `block.number` allows us to easily mock the block number in\n tests.", "id": 11168, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getBlockNumber", "nodeType": "FunctionDefinition", "parameters": { "id": 11160, "nodeType": "ParameterList", "parameters": [], "src": "370:2:37" }, "payable": false, "returnParameters": { "id": 11163, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11162, "name": "", "nodeType": "VariableDeclaration", "scope": 11168, "src": "396:7:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11161, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "396:7:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "395:9:37" }, "scope": 11200, "src": "347:94:37", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { "id": 11178, "nodeType": "Block", "src": "705:51:37", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 11173, "name": "getBlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11168, "src": "722:14:37", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 11174, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "722:16:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 11175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint64", "nodeType": "MemberAccess", "referencedDeclaration": 11230, "src": "722:25:37", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)" } }, "id": 11176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "722:27:37", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "functionReturnParameters": 11172, "id": 11177, "nodeType": "Return", "src": "715:34:37" } ] }, "documentation": "@dev Returns the current block number, converted to uint64.\n Using a function rather than `block.number` allows us to easily mock the block number in\n tests.", "id": 11179, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getBlockNumber64", "nodeType": "FunctionDefinition", "parameters": { "id": 11169, "nodeType": "ParameterList", "parameters": [], "src": "671:2:37" }, "payable": false, "returnParameters": { "id": 11172, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11171, "name": "", "nodeType": "VariableDeclaration", "scope": 11179, "src": "697:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 11170, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "697:6:37", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "value": null, "visibility": "internal" } ], "src": "696:8:37" }, "scope": 11200, "src": "646:110:37", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { "id": 11187, "nodeType": "Block", "src": "982:88:37", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11184, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15143, "src": "999:5:37", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 11185, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "999:15:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 11183, "id": 11186, "nodeType": "Return", "src": "992:22:37" } ] }, "documentation": "@dev Returns the current timestamp.\n Using a function rather than `block.timestamp` allows us to easily mock it in\n tests.", "id": 11188, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getTimestamp", "nodeType": "FunctionDefinition", "parameters": { "id": 11180, "nodeType": "ParameterList", "parameters": [], "src": "947:2:37" }, "payable": false, "returnParameters": { "id": 11183, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11182, "name": "", "nodeType": "VariableDeclaration", "scope": 11188, "src": "973:7:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11181, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "973:7:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "972:9:37" }, "scope": 11200, "src": "926:144:37", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { "id": 11198, "nodeType": "Block", "src": "1318:49:37", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 11193, "name": "getTimestamp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11188, "src": "1335:12:37", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 11194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1335:14:37", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 11195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint64", "nodeType": "MemberAccess", "referencedDeclaration": 11230, "src": "1335:23:37", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)" } }, "id": 11196, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1335:25:37", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "functionReturnParameters": 11192, "id": 11197, "nodeType": "Return", "src": "1328:32:37" } ] }, "documentation": "@dev Returns the current timestamp, converted to uint64.\n Using a function rather than `block.timestamp` allows us to easily mock it in\n tests.", "id": 11199, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getTimestamp64", "nodeType": "FunctionDefinition", "parameters": { "id": 11189, "nodeType": "ParameterList", "parameters": [], "src": "1284:2:37" }, "payable": false, "returnParameters": { "id": 11192, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11191, "name": "", "nodeType": "VariableDeclaration", "scope": 11199, "src": "1310:6:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 11190, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1310:6:37", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "value": null, "visibility": "internal" } ], "src": "1309:8:37" }, "scope": 11200, "src": "1261:106:37", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], "scope": 11201, "src": "103:1266:37" } ], "src": "44:1326:37" }, "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.1", "updatedAt": "2019-09-04T11:02:55.763Z" }