{
  "contractName": "TimeHelpers",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@aragon/os/contracts/common/TimeHelpers.sol\":\"TimeHelpers\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@aragon/os/contracts/common/TimeHelpers.sol\":{\"keccak256\":\"0x95b785dc4319f6ce5255c9adf5e68a469a0f837f7b02e01b6bc974b4921d4024\",\"urls\":[\"bzzr://53f41920d95ed5cb7326de3062063c9296076809377fbadf2cbd26ab0c84ffd1\"]},\"@aragon/os/contracts/common/Uint256Helpers.sol\":{\"keccak256\":\"0x83033025a3f4402be3b7bcc9a23ce96ae4fadc7f251da8f139d73a13a3400b0c\",\"urls\":[\"bzzr://bd0e059eff36a66c3a28298ed5a2e1b058ce93057866ab36063e9f3095cef36f\"]}},\"version\":1}",
  "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820a45591a005ad8a3b7e83474bb53feb29a1e731fe70048d21674a9064546805f50029",
  "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820a45591a005ad8a3b7e83474bb53feb29a1e731fe70048d21674a9064546805f50029",
  "sourceMap": "103:1266:35:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;103:1266:35;;;;;;;",
  "deployedSourceMap": "103:1266:35:-;;;;;",
  "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": [
        6831
      ]
    },
    "id": 6832,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6786,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:35"
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Uint256Helpers.sol",
        "file": "./Uint256Helpers.sol",
        "id": 6787,
        "nodeType": "ImportDirective",
        "scope": 6832,
        "sourceUnit": 6863,
        "src": "70:30:35",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 6831,
        "linearizedBaseContracts": [
          6831
        ],
        "name": "TimeHelpers",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 6790,
            "libraryName": {
              "contractScope": null,
              "id": 6788,
              "name": "Uint256Helpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6862,
              "src": "136:14:35",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Uint256Helpers_$6862",
                "typeString": "library Uint256Helpers"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "130:33:35",
            "typeName": {
              "id": 6789,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "155:7:35",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "body": {
              "id": 6798,
              "nodeType": "Block",
              "src": "405:36:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 6795,
                      "name": "block",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10394,
                      "src": "422:5:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_block",
                        "typeString": "block"
                      }
                    },
                    "id": 6796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "number",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "422:12:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6794,
                  "id": 6797,
                  "nodeType": "Return",
                  "src": "415:19:35"
                }
              ]
            },
            "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": 6799,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBlockNumber",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6791,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "370:2:35"
            },
            "payable": false,
            "returnParameters": {
              "id": 6794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6793,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6799,
                  "src": "396:7:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6792,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "396:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "395:9:35"
            },
            "scope": 6831,
            "src": "347:94:35",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6809,
              "nodeType": "Block",
              "src": "705:51:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6804,
                          "name": "getBlockNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6799,
                          "src": "722:14:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 6805,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "722:16:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6806,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint64",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6861,
                      "src": "722:25:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256) pure returns (uint64)"
                      }
                    },
                    "id": 6807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "722:27:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 6803,
                  "id": 6808,
                  "nodeType": "Return",
                  "src": "715:34:35"
                }
              ]
            },
            "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": 6810,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBlockNumber64",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6800,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "671:2:35"
            },
            "payable": false,
            "returnParameters": {
              "id": 6803,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6802,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6810,
                  "src": "697:6:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 6801,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "697:6:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "696:8:35"
            },
            "scope": 6831,
            "src": "646:110:35",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6818,
              "nodeType": "Block",
              "src": "982:88:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 6815,
                      "name": "block",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10394,
                      "src": "999:5:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_block",
                        "typeString": "block"
                      }
                    },
                    "id": 6816,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "timestamp",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "999:15:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6814,
                  "id": 6817,
                  "nodeType": "Return",
                  "src": "992:22:35"
                }
              ]
            },
            "documentation": "@dev Returns the current timestamp.\n     Using a function rather than `block.timestamp` allows us to easily mock it in\n     tests.",
            "id": 6819,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTimestamp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6811,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "947:2:35"
            },
            "payable": false,
            "returnParameters": {
              "id": 6814,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6813,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6819,
                  "src": "973:7:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6812,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "973:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "972:9:35"
            },
            "scope": 6831,
            "src": "926:144:35",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6829,
              "nodeType": "Block",
              "src": "1318:49:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6824,
                          "name": "getTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6819,
                          "src": "1335:12:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 6825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1335:14:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6826,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint64",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6861,
                      "src": "1335:23:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256) pure returns (uint64)"
                      }
                    },
                    "id": 6827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1335:25:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 6823,
                  "id": 6828,
                  "nodeType": "Return",
                  "src": "1328:32:35"
                }
              ]
            },
            "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": 6830,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTimestamp64",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6820,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1284:2:35"
            },
            "payable": false,
            "returnParameters": {
              "id": 6823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6822,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6830,
                  "src": "1310:6:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 6821,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1310:6:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1309:8:35"
            },
            "scope": 6831,
            "src": "1261:106:35",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 6832,
        "src": "103:1266:35"
      }
    ],
    "src": "44:1326:35"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/common/TimeHelpers.sol",
    "exportedSymbols": {
      "TimeHelpers": [
        6831
      ]
    },
    "id": 6832,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6786,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:35"
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Uint256Helpers.sol",
        "file": "./Uint256Helpers.sol",
        "id": 6787,
        "nodeType": "ImportDirective",
        "scope": 6832,
        "sourceUnit": 6863,
        "src": "70:30:35",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 6831,
        "linearizedBaseContracts": [
          6831
        ],
        "name": "TimeHelpers",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 6790,
            "libraryName": {
              "contractScope": null,
              "id": 6788,
              "name": "Uint256Helpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6862,
              "src": "136:14:35",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Uint256Helpers_$6862",
                "typeString": "library Uint256Helpers"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "130:33:35",
            "typeName": {
              "id": 6789,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "155:7:35",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "body": {
              "id": 6798,
              "nodeType": "Block",
              "src": "405:36:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 6795,
                      "name": "block",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10394,
                      "src": "422:5:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_block",
                        "typeString": "block"
                      }
                    },
                    "id": 6796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "number",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "422:12:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6794,
                  "id": 6797,
                  "nodeType": "Return",
                  "src": "415:19:35"
                }
              ]
            },
            "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": 6799,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBlockNumber",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6791,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "370:2:35"
            },
            "payable": false,
            "returnParameters": {
              "id": 6794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6793,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6799,
                  "src": "396:7:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6792,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "396:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "395:9:35"
            },
            "scope": 6831,
            "src": "347:94:35",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6809,
              "nodeType": "Block",
              "src": "705:51:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6804,
                          "name": "getBlockNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6799,
                          "src": "722:14:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 6805,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "722:16:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6806,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint64",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6861,
                      "src": "722:25:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256) pure returns (uint64)"
                      }
                    },
                    "id": 6807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "722:27:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 6803,
                  "id": 6808,
                  "nodeType": "Return",
                  "src": "715:34:35"
                }
              ]
            },
            "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": 6810,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBlockNumber64",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6800,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "671:2:35"
            },
            "payable": false,
            "returnParameters": {
              "id": 6803,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6802,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6810,
                  "src": "697:6:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 6801,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "697:6:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "696:8:35"
            },
            "scope": 6831,
            "src": "646:110:35",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6818,
              "nodeType": "Block",
              "src": "982:88:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 6815,
                      "name": "block",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10394,
                      "src": "999:5:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_block",
                        "typeString": "block"
                      }
                    },
                    "id": 6816,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "timestamp",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "999:15:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6814,
                  "id": 6817,
                  "nodeType": "Return",
                  "src": "992:22:35"
                }
              ]
            },
            "documentation": "@dev Returns the current timestamp.\n     Using a function rather than `block.timestamp` allows us to easily mock it in\n     tests.",
            "id": 6819,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTimestamp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6811,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "947:2:35"
            },
            "payable": false,
            "returnParameters": {
              "id": 6814,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6813,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6819,
                  "src": "973:7:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6812,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "973:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "972:9:35"
            },
            "scope": 6831,
            "src": "926:144:35",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6829,
              "nodeType": "Block",
              "src": "1318:49:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6824,
                          "name": "getTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6819,
                          "src": "1335:12:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 6825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1335:14:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6826,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint64",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6861,
                      "src": "1335:23:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256) pure returns (uint64)"
                      }
                    },
                    "id": 6827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1335:25:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 6823,
                  "id": 6828,
                  "nodeType": "Return",
                  "src": "1328:32:35"
                }
              ]
            },
            "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": 6830,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTimestamp64",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6820,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1284:2:35"
            },
            "payable": false,
            "returnParameters": {
              "id": 6823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6822,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6830,
                  "src": "1310:6:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 6821,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1310:6:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1309:8:35"
            },
            "scope": 6831,
            "src": "1261:106:35",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 6832,
        "src": "103:1266:35"
      }
    ],
    "src": "44:1326:35"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-07T23:27:00.578Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}