{
  "abi": [
    {
      "inputs": [],
      "name": "blockNumber",
      "outputs": [
        {
          "internalType": "Blocknumber",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "x",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "shift",
          "type": "uint8"
        }
      ],
      "name": "intToBytes",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "ChainId",
          "name": "x",
          "type": "bytes5"
        }
      ],
      "name": "toInt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Blocknumber",
          "name": "x",
          "type": "uint32"
        }
      ],
      "name": "toInt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Timestamp",
          "name": "x",
          "type": "uint40"
        }
      ],
      "name": "toInt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "43": "contracts/shared/IBaseTypes.sol"
  },
  "ast": {
    "absolutePath": "contracts/shared/IBaseTypes.sol",
    "exportedSymbols": {
      "Blocknumber": [
        4713
      ],
      "ChainId": [
        4447
      ],
      "IBaseTypes": [
        4753
      ],
      "Timestamp": [
        4530
      ],
      "blockTimestamp": [
        4700
      ],
      "eqChainId": [
        4474
      ],
      "eqTimestamp": [
        4649
      ],
      "gtTimestamp": [
        4561
      ],
      "gteTimestamp": [
        4583
      ],
      "ltTimestamp": [
        4605
      ],
      "lteTimestamp": [
        4627
      ],
      "neqChainId": [
        4496
      ],
      "neqTimestamp": [
        4671
      ],
      "thisChainId": [
        4528
      ],
      "toChainId": [
        4516
      ],
      "toTimestamp": [
        4688
      ],
      "zeroTimestamp": [
        4711
      ]
    },
    "id": 4754,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4445,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:24:43"
      },
      {
        "canonicalName": "ChainId",
        "id": 4447,
        "name": "ChainId",
        "nameLocation": "205:7:43",
        "nodeType": "UserDefinedValueTypeDefinition",
        "src": "200:23:43",
        "underlyingType": {
          "id": 4446,
          "name": "bytes5",
          "nodeType": "ElementaryTypeName",
          "src": "216:6:43",
          "typeDescriptions": {
            "typeIdentifier": "t_bytes5",
            "typeString": "bytes5"
          }
        }
      },
      {
        "functionList": [
          {
            "definition": {
              "id": 4448,
              "name": "eqChainId",
              "nameLocations": [
                "237:9:43"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4474,
              "src": "237:9:43"
            },
            "operator": "=="
          },
          {
            "definition": {
              "id": 4449,
              "name": "neqChainId",
              "nameLocations": [
                "258:10:43"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4496,
              "src": "258:10:43"
            },
            "operator": "!="
          }
        ],
        "global": true,
        "id": 4452,
        "nodeType": "UsingForDirective",
        "src": "225:75:43",
        "typeName": {
          "id": 4451,
          "nodeType": "UserDefinedTypeName",
          "pathNode": {
            "id": 4450,
            "name": "ChainId",
            "nameLocations": [
              "285:7:43"
            ],
            "nodeType": "IdentifierPath",
            "referencedDeclaration": 4447,
            "src": "285:7:43"
          },
          "referencedDeclaration": 4447,
          "src": "285:7:43",
          "typeDescriptions": {
            "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
            "typeString": "ChainId"
          }
        }
      },
      {
        "body": {
          "id": 4473,
          "nodeType": "Block",
          "src": "369:50:43",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_bytes5",
                  "typeString": "bytes5"
                },
                "id": 4471,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 4465,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4455,
                      "src": "393:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                        "typeString": "ChainId"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                        "typeString": "ChainId"
                      }
                    ],
                    "expression": {
                      "id": 4463,
                      "name": "ChainId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4447,
                      "src": "378:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_ChainId_$4447_$",
                        "typeString": "type(ChainId)"
                      }
                    },
                    "id": 4464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "386:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "378:14:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ChainId_$4447_$returns$_t_bytes5_$",
                      "typeString": "function (ChainId) pure returns (bytes5)"
                    }
                  },
                  "id": 4466,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "378:17:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes5",
                    "typeString": "bytes5"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "==",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 4469,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4458,
                      "src": "414:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                        "typeString": "ChainId"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                        "typeString": "ChainId"
                      }
                    ],
                    "expression": {
                      "id": 4467,
                      "name": "ChainId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4447,
                      "src": "399:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_ChainId_$4447_$",
                        "typeString": "type(ChainId)"
                      }
                    },
                    "id": 4468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "407:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "399:14:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ChainId_$4447_$returns$_t_bytes5_$",
                      "typeString": "function (ChainId) pure returns (bytes5)"
                    }
                  },
                  "id": 4470,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "399:17:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes5",
                    "typeString": "bytes5"
                  }
                },
                "src": "378:38:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 4462,
              "id": 4472,
              "nodeType": "Return",
              "src": "371:45:43"
            }
          ]
        },
        "id": 4474,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "eqChainId",
        "nameLocation": "311:9:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4459,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4455,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "329:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4474,
              "src": "321:9:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                "typeString": "ChainId"
              },
              "typeName": {
                "id": 4454,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4453,
                  "name": "ChainId",
                  "nameLocations": [
                    "321:7:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4447,
                  "src": "321:7:43"
                },
                "referencedDeclaration": 4447,
                "src": "321:7:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                  "typeString": "ChainId"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 4458,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "340:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4474,
              "src": "332:9:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                "typeString": "ChainId"
              },
              "typeName": {
                "id": 4457,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4456,
                  "name": "ChainId",
                  "nameLocations": [
                    "332:7:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4447,
                  "src": "332:7:43"
                },
                "referencedDeclaration": 4447,
                "src": "332:7:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                  "typeString": "ChainId"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "320:22:43"
        },
        "returnParameters": {
          "id": 4462,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4461,
              "mutability": "mutable",
              "name": "isSame",
              "nameLocation": "361:6:43",
              "nodeType": "VariableDeclaration",
              "scope": 4474,
              "src": "356:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 4460,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "356:4:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "355:13:43"
        },
        "scope": 4754,
        "src": "302:117:43",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 4495,
          "nodeType": "Block",
          "src": "493:50:43",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_bytes5",
                  "typeString": "bytes5"
                },
                "id": 4493,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 4487,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "517:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                        "typeString": "ChainId"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                        "typeString": "ChainId"
                      }
                    ],
                    "expression": {
                      "id": 4485,
                      "name": "ChainId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4447,
                      "src": "502:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_ChainId_$4447_$",
                        "typeString": "type(ChainId)"
                      }
                    },
                    "id": 4486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "510:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "502:14:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ChainId_$4447_$returns$_t_bytes5_$",
                      "typeString": "function (ChainId) pure returns (bytes5)"
                    }
                  },
                  "id": 4488,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "502:17:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes5",
                    "typeString": "bytes5"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "!=",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 4491,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4480,
                      "src": "538:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                        "typeString": "ChainId"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                        "typeString": "ChainId"
                      }
                    ],
                    "expression": {
                      "id": 4489,
                      "name": "ChainId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4447,
                      "src": "523:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_ChainId_$4447_$",
                        "typeString": "type(ChainId)"
                      }
                    },
                    "id": 4490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "531:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "523:14:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ChainId_$4447_$returns$_t_bytes5_$",
                      "typeString": "function (ChainId) pure returns (bytes5)"
                    }
                  },
                  "id": 4492,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "523:17:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes5",
                    "typeString": "bytes5"
                  }
                },
                "src": "502:38:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 4484,
              "id": 4494,
              "nodeType": "Return",
              "src": "495:45:43"
            }
          ]
        },
        "id": 4496,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "neqChainId",
        "nameLocation": "429:10:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4481,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4477,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "448:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4496,
              "src": "440:9:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                "typeString": "ChainId"
              },
              "typeName": {
                "id": 4476,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4475,
                  "name": "ChainId",
                  "nameLocations": [
                    "440:7:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4447,
                  "src": "440:7:43"
                },
                "referencedDeclaration": 4447,
                "src": "440:7:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                  "typeString": "ChainId"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 4480,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "459:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4496,
              "src": "451:9:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                "typeString": "ChainId"
              },
              "typeName": {
                "id": 4479,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4478,
                  "name": "ChainId",
                  "nameLocations": [
                    "451:7:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4447,
                  "src": "451:7:43"
                },
                "referencedDeclaration": 4447,
                "src": "451:7:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                  "typeString": "ChainId"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "439:22:43"
        },
        "returnParameters": {
          "id": 4484,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4483,
              "mutability": "mutable",
              "name": "isDifferent",
              "nameLocation": "480:11:43",
              "nodeType": "VariableDeclaration",
              "scope": 4496,
              "src": "475:16:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 4482,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "475:4:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "474:18:43"
        },
        "scope": 4754,
        "src": "420:123:43",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 4515,
          "nodeType": "Block",
          "src": "603:48:43",
          "statements": [
            {
              "expression": {
                "arguments": [
                  {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 4510,
                            "name": "chainId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4498,
                            "src": "639:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 4509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "632:6:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint40_$",
                            "typeString": "type(uint40)"
                          },
                          "typeName": {
                            "id": 4508,
                            "name": "uint40",
                            "nodeType": "ElementaryTypeName",
                            "src": "632:6:43",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 4511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "632:15:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      ],
                      "id": 4507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "625:6:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes5_$",
                        "typeString": "type(bytes5)"
                      },
                      "typeName": {
                        "id": 4506,
                        "name": "bytes5",
                        "nodeType": "ElementaryTypeName",
                        "src": "625:6:43",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 4512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "625:23:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes5",
                      "typeString": "bytes5"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_bytes5",
                      "typeString": "bytes5"
                    }
                  ],
                  "expression": {
                    "id": 4504,
                    "name": "ChainId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4447,
                    "src": "612:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_ChainId_$4447_$",
                      "typeString": "type(ChainId)"
                    }
                  },
                  "id": 4505,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "620:4:43",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "612:12:43",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_bytes5_$returns$_t_userDefinedValueType$_ChainId_$4447_$",
                    "typeString": "function (bytes5) pure returns (ChainId)"
                  }
                },
                "id": 4513,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "612:37:43",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                  "typeString": "ChainId"
                }
              },
              "functionReturnParameters": 4503,
              "id": 4514,
              "nodeType": "Return",
              "src": "605:44:43"
            }
          ]
        },
        "id": 4516,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "toChainId",
        "nameLocation": "554:9:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4499,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4498,
              "mutability": "mutable",
              "name": "chainId",
              "nameLocation": "572:7:43",
              "nodeType": "VariableDeclaration",
              "scope": 4516,
              "src": "564:15:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4497,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "564:7:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "563:17:43"
        },
        "returnParameters": {
          "id": 4503,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4502,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 4516,
              "src": "594:7:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                "typeString": "ChainId"
              },
              "typeName": {
                "id": 4501,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4500,
                  "name": "ChainId",
                  "nameLocations": [
                    "594:7:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4447,
                  "src": "594:7:43"
                },
                "referencedDeclaration": 4447,
                "src": "594:7:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                  "typeString": "ChainId"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "593:9:43"
        },
        "scope": 4754,
        "src": "545:106:43",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 4527,
          "nodeType": "Block",
          "src": "697:36:43",
          "statements": [
            {
              "expression": {
                "arguments": [
                  {
                    "expression": {
                      "id": 4523,
                      "name": "block",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -4,
                      "src": "716:5:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_block",
                        "typeString": "block"
                      }
                    },
                    "id": 4524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "722:7:43",
                    "memberName": "chainid",
                    "nodeType": "MemberAccess",
                    "src": "716:13:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "id": 4522,
                  "name": "toChainId",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4516,
                  "src": "706:9:43",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_ChainId_$4447_$",
                    "typeString": "function (uint256) pure returns (ChainId)"
                  }
                },
                "id": 4525,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "706:24:43",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                  "typeString": "ChainId"
                }
              },
              "functionReturnParameters": 4521,
              "id": 4526,
              "nodeType": "Return",
              "src": "699:31:43"
            }
          ]
        },
        "id": 4528,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "thisChainId",
        "nameLocation": "661:11:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4517,
          "nodeType": "ParameterList",
          "parameters": [],
          "src": "672:2:43"
        },
        "returnParameters": {
          "id": 4521,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4520,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 4528,
              "src": "688:7:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                "typeString": "ChainId"
              },
              "typeName": {
                "id": 4519,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4518,
                  "name": "ChainId",
                  "nameLocations": [
                    "688:7:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4447,
                  "src": "688:7:43"
                },
                "referencedDeclaration": 4447,
                "src": "688:7:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                  "typeString": "ChainId"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "687:9:43"
        },
        "scope": 4754,
        "src": "652:81:43",
        "stateMutability": "view",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "canonicalName": "Timestamp",
        "id": 4530,
        "name": "Timestamp",
        "nameLocation": "740:9:43",
        "nodeType": "UserDefinedValueTypeDefinition",
        "src": "735:25:43",
        "underlyingType": {
          "id": 4529,
          "name": "uint40",
          "nodeType": "ElementaryTypeName",
          "src": "753:6:43",
          "typeDescriptions": {
            "typeIdentifier": "t_uint40",
            "typeString": "uint40"
          }
        }
      },
      {
        "functionList": [
          {
            "definition": {
              "id": 4531,
              "name": "gtTimestamp",
              "nameLocations": [
                "774:11:43"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4561,
              "src": "774:11:43"
            },
            "operator": ">"
          },
          {
            "definition": {
              "id": 4532,
              "name": "gteTimestamp",
              "nameLocations": [
                "796:12:43"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4583,
              "src": "796:12:43"
            },
            "operator": ">="
          },
          {
            "definition": {
              "id": 4533,
              "name": "ltTimestamp",
              "nameLocations": [
                "820:11:43"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4605,
              "src": "820:11:43"
            },
            "operator": "<"
          },
          {
            "definition": {
              "id": 4534,
              "name": "lteTimestamp",
              "nameLocations": [
                "842:12:43"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4627,
              "src": "842:12:43"
            },
            "operator": "<="
          },
          {
            "definition": {
              "id": 4535,
              "name": "eqTimestamp",
              "nameLocations": [
                "866:11:43"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4649,
              "src": "866:11:43"
            },
            "operator": "=="
          },
          {
            "definition": {
              "id": 4536,
              "name": "neqTimestamp",
              "nameLocations": [
                "889:12:43"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4671,
              "src": "889:12:43"
            },
            "operator": "!="
          }
        ],
        "global": true,
        "id": 4539,
        "nodeType": "UsingForDirective",
        "src": "762:173:43",
        "typeName": {
          "id": 4538,
          "nodeType": "UserDefinedTypeName",
          "pathNode": {
            "id": 4537,
            "name": "Timestamp",
            "nameLocations": [
              "918:9:43"
            ],
            "nodeType": "IdentifierPath",
            "referencedDeclaration": 4530,
            "src": "918:9:43"
          },
          "referencedDeclaration": 4530,
          "src": "918:9:43",
          "typeDescriptions": {
            "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
            "typeString": "Timestamp"
          }
        }
      },
      {
        "body": {
          "id": 4560,
          "nodeType": "Block",
          "src": "1003:53:43",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                },
                "id": 4558,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 4552,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4542,
                      "src": "1029:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    ],
                    "expression": {
                      "id": 4550,
                      "name": "Timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "1012:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                        "typeString": "type(Timestamp)"
                      }
                    },
                    "id": 4551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1022:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1012:16:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$4530_$returns$_t_uint40_$",
                      "typeString": "function (Timestamp) pure returns (uint40)"
                    }
                  },
                  "id": 4553,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1012:19:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": ">",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 4556,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4545,
                      "src": "1051:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    ],
                    "expression": {
                      "id": 4554,
                      "name": "Timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "1034:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                        "typeString": "type(Timestamp)"
                      }
                    },
                    "id": 4555,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1044:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1034:16:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$4530_$returns$_t_uint40_$",
                      "typeString": "function (Timestamp) pure returns (uint40)"
                    }
                  },
                  "id": 4557,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1034:19:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "src": "1012:41:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 4549,
              "id": 4559,
              "nodeType": "Return",
              "src": "1005:48:43"
            }
          ]
        },
        "id": 4561,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "gtTimestamp",
        "nameLocation": "946:11:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4546,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4542,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "968:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4561,
              "src": "958:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4541,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4540,
                  "name": "Timestamp",
                  "nameLocations": [
                    "958:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "958:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "958:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 4545,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "981:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4561,
              "src": "971:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4544,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4543,
                  "name": "Timestamp",
                  "nameLocations": [
                    "971:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "971:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "971:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "957:26:43"
        },
        "returnParameters": {
          "id": 4549,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4548,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 4561,
              "src": "997:4:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 4547,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "997:4:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "996:6:43"
        },
        "scope": 4754,
        "src": "937:119:43",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 4582,
          "nodeType": "Block",
          "src": "1124:54:43",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                },
                "id": 4580,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 4574,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4564,
                      "src": "1150:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    ],
                    "expression": {
                      "id": 4572,
                      "name": "Timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "1133:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                        "typeString": "type(Timestamp)"
                      }
                    },
                    "id": 4573,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1143:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1133:16:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$4530_$returns$_t_uint40_$",
                      "typeString": "function (Timestamp) pure returns (uint40)"
                    }
                  },
                  "id": 4575,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1133:19:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": ">=",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 4578,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4567,
                      "src": "1173:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    ],
                    "expression": {
                      "id": 4576,
                      "name": "Timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "1156:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                        "typeString": "type(Timestamp)"
                      }
                    },
                    "id": 4577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1166:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1156:16:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$4530_$returns$_t_uint40_$",
                      "typeString": "function (Timestamp) pure returns (uint40)"
                    }
                  },
                  "id": 4579,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1156:19:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "src": "1133:42:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 4571,
              "id": 4581,
              "nodeType": "Return",
              "src": "1126:49:43"
            }
          ]
        },
        "id": 4583,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "gteTimestamp",
        "nameLocation": "1066:12:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4568,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4564,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1089:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4583,
              "src": "1079:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4563,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4562,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1079:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1079:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1079:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 4567,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "1102:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4583,
              "src": "1092:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4566,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4565,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1092:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1092:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1092:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1078:26:43"
        },
        "returnParameters": {
          "id": 4571,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4570,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 4583,
              "src": "1118:4:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 4569,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1118:4:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1117:6:43"
        },
        "scope": 4754,
        "src": "1057:121:43",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 4604,
          "nodeType": "Block",
          "src": "1246:53:43",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                },
                "id": 4602,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 4596,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4586,
                      "src": "1272:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    ],
                    "expression": {
                      "id": 4594,
                      "name": "Timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "1255:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                        "typeString": "type(Timestamp)"
                      }
                    },
                    "id": 4595,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1265:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1255:16:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$4530_$returns$_t_uint40_$",
                      "typeString": "function (Timestamp) pure returns (uint40)"
                    }
                  },
                  "id": 4597,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1255:19:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "<",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 4600,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4589,
                      "src": "1294:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    ],
                    "expression": {
                      "id": 4598,
                      "name": "Timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "1277:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                        "typeString": "type(Timestamp)"
                      }
                    },
                    "id": 4599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1287:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1277:16:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$4530_$returns$_t_uint40_$",
                      "typeString": "function (Timestamp) pure returns (uint40)"
                    }
                  },
                  "id": 4601,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1277:19:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "src": "1255:41:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 4593,
              "id": 4603,
              "nodeType": "Return",
              "src": "1248:48:43"
            }
          ]
        },
        "id": 4605,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "ltTimestamp",
        "nameLocation": "1189:11:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4590,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4586,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1211:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4605,
              "src": "1201:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4585,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4584,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1201:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1201:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1201:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 4589,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "1224:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4605,
              "src": "1214:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4588,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4587,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1214:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1214:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1214:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1200:26:43"
        },
        "returnParameters": {
          "id": 4593,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4592,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 4605,
              "src": "1240:4:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 4591,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1240:4:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1239:6:43"
        },
        "scope": 4754,
        "src": "1180:119:43",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 4626,
          "nodeType": "Block",
          "src": "1367:54:43",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                },
                "id": 4624,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 4618,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4608,
                      "src": "1393:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    ],
                    "expression": {
                      "id": 4616,
                      "name": "Timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "1376:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                        "typeString": "type(Timestamp)"
                      }
                    },
                    "id": 4617,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1386:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1376:16:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$4530_$returns$_t_uint40_$",
                      "typeString": "function (Timestamp) pure returns (uint40)"
                    }
                  },
                  "id": 4619,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1376:19:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "<=",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 4622,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4611,
                      "src": "1416:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    ],
                    "expression": {
                      "id": 4620,
                      "name": "Timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "1399:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                        "typeString": "type(Timestamp)"
                      }
                    },
                    "id": 4621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1409:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1399:16:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$4530_$returns$_t_uint40_$",
                      "typeString": "function (Timestamp) pure returns (uint40)"
                    }
                  },
                  "id": 4623,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1399:19:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "src": "1376:42:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 4615,
              "id": 4625,
              "nodeType": "Return",
              "src": "1369:49:43"
            }
          ]
        },
        "id": 4627,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "lteTimestamp",
        "nameLocation": "1309:12:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4612,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4608,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1332:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4627,
              "src": "1322:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4607,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4606,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1322:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1322:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1322:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 4611,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "1345:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4627,
              "src": "1335:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4610,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4609,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1335:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1335:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1335:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1321:26:43"
        },
        "returnParameters": {
          "id": 4615,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4614,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 4627,
              "src": "1361:4:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 4613,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1361:4:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1360:6:43"
        },
        "scope": 4754,
        "src": "1300:121:43",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 4648,
          "nodeType": "Block",
          "src": "1489:54:43",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                },
                "id": 4646,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 4640,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4630,
                      "src": "1515:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    ],
                    "expression": {
                      "id": 4638,
                      "name": "Timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "1498:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                        "typeString": "type(Timestamp)"
                      }
                    },
                    "id": 4639,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1508:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1498:16:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$4530_$returns$_t_uint40_$",
                      "typeString": "function (Timestamp) pure returns (uint40)"
                    }
                  },
                  "id": 4641,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1498:19:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "==",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 4644,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4633,
                      "src": "1538:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    ],
                    "expression": {
                      "id": 4642,
                      "name": "Timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "1521:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                        "typeString": "type(Timestamp)"
                      }
                    },
                    "id": 4643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1531:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1521:16:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$4530_$returns$_t_uint40_$",
                      "typeString": "function (Timestamp) pure returns (uint40)"
                    }
                  },
                  "id": 4645,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1521:19:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "src": "1498:42:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 4637,
              "id": 4647,
              "nodeType": "Return",
              "src": "1491:49:43"
            }
          ]
        },
        "id": 4649,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "eqTimestamp",
        "nameLocation": "1432:11:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4634,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4630,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1454:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4649,
              "src": "1444:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4629,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4628,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1444:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1444:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1444:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 4633,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "1467:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4649,
              "src": "1457:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4632,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4631,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1457:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1457:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1457:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1443:26:43"
        },
        "returnParameters": {
          "id": 4637,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4636,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 4649,
              "src": "1483:4:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 4635,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1483:4:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1482:6:43"
        },
        "scope": 4754,
        "src": "1423:120:43",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 4670,
          "nodeType": "Block",
          "src": "1611:54:43",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                },
                "id": 4668,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 4662,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4652,
                      "src": "1637:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    ],
                    "expression": {
                      "id": 4660,
                      "name": "Timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "1620:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                        "typeString": "type(Timestamp)"
                      }
                    },
                    "id": 4661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1630:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1620:16:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$4530_$returns$_t_uint40_$",
                      "typeString": "function (Timestamp) pure returns (uint40)"
                    }
                  },
                  "id": 4663,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1620:19:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "!=",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 4666,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4655,
                      "src": "1660:1:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                        "typeString": "Timestamp"
                      }
                    ],
                    "expression": {
                      "id": 4664,
                      "name": "Timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "1643:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                        "typeString": "type(Timestamp)"
                      }
                    },
                    "id": 4665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1653:6:43",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1643:16:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Timestamp_$4530_$returns$_t_uint40_$",
                      "typeString": "function (Timestamp) pure returns (uint40)"
                    }
                  },
                  "id": 4667,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1643:19:43",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "src": "1620:42:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 4659,
              "id": 4669,
              "nodeType": "Return",
              "src": "1613:49:43"
            }
          ]
        },
        "id": 4671,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "neqTimestamp",
        "nameLocation": "1553:12:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4656,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4652,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1576:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4671,
              "src": "1566:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4651,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4650,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1566:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1566:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1566:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 4655,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "1589:1:43",
              "nodeType": "VariableDeclaration",
              "scope": 4671,
              "src": "1579:11:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4654,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4653,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1579:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1579:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1579:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1565:26:43"
        },
        "returnParameters": {
          "id": 4659,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4658,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 4671,
              "src": "1605:4:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 4657,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1605:4:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1604:6:43"
        },
        "scope": 4754,
        "src": "1544:121:43",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 4687,
          "nodeType": "Block",
          "src": "1731:44:43",
          "statements": [
            {
              "expression": {
                "arguments": [
                  {
                    "arguments": [
                      {
                        "id": 4683,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4673,
                        "src": "1762:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1755:6:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint40_$",
                        "typeString": "type(uint40)"
                      },
                      "typeName": {
                        "id": 4681,
                        "name": "uint40",
                        "nodeType": "ElementaryTypeName",
                        "src": "1755:6:43",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 4684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1755:17:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  ],
                  "expression": {
                    "id": 4679,
                    "name": "Timestamp",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4530,
                    "src": "1740:9:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$4530_$",
                      "typeString": "type(Timestamp)"
                    }
                  },
                  "id": 4680,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "1750:4:43",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "1740:14:43",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint40_$returns$_t_userDefinedValueType$_Timestamp_$4530_$",
                    "typeString": "function (uint40) pure returns (Timestamp)"
                  }
                },
                "id": 4685,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1740:33:43",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "functionReturnParameters": 4678,
              "id": 4686,
              "nodeType": "Return",
              "src": "1733:40:43"
            }
          ]
        },
        "id": 4688,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "toTimestamp",
        "nameLocation": "1676:11:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4674,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4673,
              "mutability": "mutable",
              "name": "timestamp",
              "nameLocation": "1696:9:43",
              "nodeType": "VariableDeclaration",
              "scope": 4688,
              "src": "1688:17:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 4672,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1688:7:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1687:19:43"
        },
        "returnParameters": {
          "id": 4678,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4677,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 4688,
              "src": "1720:9:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4676,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4675,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1720:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1720:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1720:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1719:11:43"
        },
        "scope": 4754,
        "src": "1667:108:43",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 4699,
          "nodeType": "Block",
          "src": "1873:40:43",
          "statements": [
            {
              "expression": {
                "arguments": [
                  {
                    "expression": {
                      "id": 4695,
                      "name": "block",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -4,
                      "src": "1894:5:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_block",
                        "typeString": "block"
                      }
                    },
                    "id": 4696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "1900:9:43",
                    "memberName": "timestamp",
                    "nodeType": "MemberAccess",
                    "src": "1894:15:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "id": 4694,
                  "name": "toTimestamp",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4688,
                  "src": "1882:11:43",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_Timestamp_$4530_$",
                    "typeString": "function (uint256) pure returns (Timestamp)"
                  }
                },
                "id": 4697,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1882:28:43",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "functionReturnParameters": 4693,
              "id": 4698,
              "nodeType": "Return",
              "src": "1875:35:43"
            }
          ]
        },
        "id": 4700,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "blockTimestamp",
        "nameLocation": "1832:14:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4689,
          "nodeType": "ParameterList",
          "parameters": [],
          "src": "1846:2:43"
        },
        "returnParameters": {
          "id": 4693,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4692,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 4700,
              "src": "1862:9:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4691,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4690,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1862:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1862:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1862:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1861:11:43"
        },
        "scope": 4754,
        "src": "1823:90:43",
        "stateMutability": "view",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 4710,
          "nodeType": "Block",
          "src": "1964:26:43",
          "statements": [
            {
              "expression": {
                "arguments": [
                  {
                    "hexValue": "30",
                    "id": 4707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1985:1:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    }
                  ],
                  "id": 4706,
                  "name": "toTimestamp",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4688,
                  "src": "1973:11:43",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_userDefinedValueType$_Timestamp_$4530_$",
                    "typeString": "function (uint256) pure returns (Timestamp)"
                  }
                },
                "id": 4708,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "1973:14:43",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "functionReturnParameters": 4705,
              "id": 4709,
              "nodeType": "Return",
              "src": "1966:21:43"
            }
          ]
        },
        "id": 4711,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "zeroTimestamp",
        "nameLocation": "1924:13:43",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 4701,
          "nodeType": "ParameterList",
          "parameters": [],
          "src": "1937:2:43"
        },
        "returnParameters": {
          "id": 4705,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 4704,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 4711,
              "src": "1953:9:43",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                "typeString": "Timestamp"
              },
              "typeName": {
                "id": 4703,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 4702,
                  "name": "Timestamp",
                  "nameLocations": [
                    "1953:9:43"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4530,
                  "src": "1953:9:43"
                },
                "referencedDeclaration": 4530,
                "src": "1953:9:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                  "typeString": "Timestamp"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1952:11:43"
        },
        "scope": 4754,
        "src": "1915:75:43",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "canonicalName": "Blocknumber",
        "id": 4713,
        "name": "Blocknumber",
        "nameLocation": "1997:11:43",
        "nodeType": "UserDefinedValueTypeDefinition",
        "src": "1992:27:43",
        "underlyingType": {
          "id": 4712,
          "name": "uint32",
          "nodeType": "ElementaryTypeName",
          "src": "2012:6:43",
          "typeDescriptions": {
            "typeIdentifier": "t_uint32",
            "typeString": "uint32"
          }
        }
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "IBaseTypes",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 4753,
        "linearizedBaseContracts": [
          4753
        ],
        "name": "IBaseTypes",
        "nameLocation": "2032:10:43",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "functionSelector": "1080d895",
            "id": 4722,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "intToBytes",
            "nameLocation": "2059:10:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4718,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4715,
                  "mutability": "mutable",
                  "name": "x",
                  "nameLocation": "2078:1:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 4722,
                  "src": "2070:9:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4714,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2070:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4717,
                  "mutability": "mutable",
                  "name": "shift",
                  "nameLocation": "2087:5:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 4722,
                  "src": "2081:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4716,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2081:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2069:24:43"
            },
            "returnParameters": {
              "id": 4721,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4720,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4722,
                  "src": "2116:12:43",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4719,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2116:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2115:14:43"
            },
            "scope": 4753,
            "src": "2050:80:43",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "6effeac4",
            "id": 4730,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "toInt",
            "nameLocation": "2145:5:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4726,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4725,
                  "mutability": "mutable",
                  "name": "x",
                  "nameLocation": "2163:1:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 4730,
                  "src": "2151:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_Blocknumber_$4713",
                    "typeString": "Blocknumber"
                  },
                  "typeName": {
                    "id": 4724,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4723,
                      "name": "Blocknumber",
                      "nameLocations": [
                        "2151:11:43"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4713,
                      "src": "2151:11:43"
                    },
                    "referencedDeclaration": 4713,
                    "src": "2151:11:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_Blocknumber_$4713",
                      "typeString": "Blocknumber"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2150:15:43"
            },
            "returnParameters": {
              "id": 4729,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4728,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4730,
                  "src": "2188:4:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4727,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2188:4:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2187:6:43"
            },
            "scope": 4753,
            "src": "2136:58:43",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "da09d484",
            "id": 4738,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "toInt",
            "nameLocation": "2208:5:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4733,
                  "mutability": "mutable",
                  "name": "x",
                  "nameLocation": "2224:1:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 4738,
                  "src": "2214:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                    "typeString": "Timestamp"
                  },
                  "typeName": {
                    "id": 4732,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4731,
                      "name": "Timestamp",
                      "nameLocations": [
                        "2214:9:43"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4530,
                      "src": "2214:9:43"
                    },
                    "referencedDeclaration": 4530,
                    "src": "2214:9:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_Timestamp_$4530",
                      "typeString": "Timestamp"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2213:13:43"
            },
            "returnParameters": {
              "id": 4737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4736,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4738,
                  "src": "2249:4:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4735,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2249:4:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2248:6:43"
            },
            "scope": 4753,
            "src": "2199:56:43",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "66362612",
            "id": 4746,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "toInt",
            "nameLocation": "2269:5:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4741,
                  "mutability": "mutable",
                  "name": "x",
                  "nameLocation": "2283:1:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 4746,
                  "src": "2275:9:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                    "typeString": "ChainId"
                  },
                  "typeName": {
                    "id": 4740,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4739,
                      "name": "ChainId",
                      "nameLocations": [
                        "2275:7:43"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4447,
                      "src": "2275:7:43"
                    },
                    "referencedDeclaration": 4447,
                    "src": "2275:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ChainId_$4447",
                      "typeString": "ChainId"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2274:11:43"
            },
            "returnParameters": {
              "id": 4745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4744,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4746,
                  "src": "2308:4:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4743,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2308:4:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2307:6:43"
            },
            "scope": 4753,
            "src": "2260:54:43",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "57e871e7",
            "id": 4752,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "blockNumber",
            "nameLocation": "2329:11:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4747,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2340:2:43"
            },
            "returnParameters": {
              "id": 4751,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4750,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4752,
                  "src": "2365:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_Blocknumber_$4713",
                    "typeString": "Blocknumber"
                  },
                  "typeName": {
                    "id": 4749,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4748,
                      "name": "Blocknumber",
                      "nameLocations": [
                        "2365:11:43"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4713,
                      "src": "2365:11:43"
                    },
                    "referencedDeclaration": 4713,
                    "src": "2365:11:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_Blocknumber_$4713",
                      "typeString": "Blocknumber"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2364:13:43"
            },
            "scope": 4753,
            "src": "2320:58:43",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 4754,
        "src": "2022:358:43",
        "usedErrors": []
      }
    ],
    "src": "39:2341:43"
  },
  "bytecode": "",
  "bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.19+commit.7dd6d404"
  },
  "contractName": "IBaseTypes",
  "coverageMap": {
    "branches": {},
    "statements": {}
  },
  "dependencies": [],
  "deployedBytecode": "",
  "deployedSourceMap": "",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    2022,
    2380
  ],
  "opcodes": "",
  "pcMap": {},
  "sha1": "2bd400c2e1c0dd649a826fdedf7fe3536e76d2bf",
  "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.19;\n\n// restriction: uint<n> n needs to be different for each type to support function overloading\n\n// allows for chain ids up to 13 digits\ntype ChainId is bytes5;\n\nusing {\n    eqChainId as ==,\n    neqChainId as !=\n}\n    for ChainId global;\n\nfunction eqChainId(ChainId a, ChainId b) pure returns(bool isSame) { return ChainId.unwrap(a) == ChainId.unwrap(b); }\nfunction neqChainId(ChainId a, ChainId b) pure returns(bool isDifferent) { return ChainId.unwrap(a) != ChainId.unwrap(b); }\n\nfunction toChainId(uint256 chainId) pure returns(ChainId) { return ChainId.wrap(bytes5(uint40(chainId)));}\nfunction thisChainId() view returns(ChainId) { return toChainId(block.chainid); }\n\ntype Timestamp is uint40;\n\nusing {\n    gtTimestamp as >,\n    gteTimestamp as >=,\n    ltTimestamp as <,\n    lteTimestamp as <=,\n    eqTimestamp as ==,\n    neqTimestamp as !=\n}\n    for Timestamp global;\n\nfunction gtTimestamp(Timestamp a, Timestamp b) pure returns(bool) { return Timestamp.unwrap(a) > Timestamp.unwrap(b); }\nfunction gteTimestamp(Timestamp a, Timestamp b) pure returns(bool) { return Timestamp.unwrap(a) >= Timestamp.unwrap(b); }\n\nfunction ltTimestamp(Timestamp a, Timestamp b) pure returns(bool) { return Timestamp.unwrap(a) < Timestamp.unwrap(b); }\nfunction lteTimestamp(Timestamp a, Timestamp b) pure returns(bool) { return Timestamp.unwrap(a) <= Timestamp.unwrap(b); }\n\nfunction eqTimestamp(Timestamp a, Timestamp b) pure returns(bool) { return Timestamp.unwrap(a) == Timestamp.unwrap(b); }\nfunction neqTimestamp(Timestamp a, Timestamp b) pure returns(bool) { return Timestamp.unwrap(a) != Timestamp.unwrap(b); }\n\nfunction toTimestamp(uint256 timestamp) pure returns(Timestamp) { return Timestamp.wrap(uint40(timestamp));}\n\n// solhint-disable-next-line not-rely-on-time\nfunction blockTimestamp() view returns(Timestamp) { return toTimestamp(block.timestamp); }\n\nfunction zeroTimestamp() pure returns(Timestamp) { return toTimestamp(0); }\n\ntype Blocknumber is uint32;\n\n\ninterface IBaseTypes {\n\n    function intToBytes(uint256 x, uint8 shift) external pure returns(bytes memory);\n\n    function toInt(Blocknumber x) external pure returns(uint);\n    function toInt(Timestamp x) external pure returns(uint);\n    function toInt(ChainId x) external pure returns(uint);\n\n    function blockNumber() external view returns(Blocknumber);\n}",
  "sourceMap": "",
  "sourcePath": "contracts/shared/IBaseTypes.sol",
  "type": "interface"
}