code: def _parse_recording_blocks(fname):
      """Parse Eyelink ASCII file.
  
      Eyelink samples occur within START and END blocks.
      samples lines start with a posix-like string,
      and contain eyetracking sample info. Event Lines
      start with an upper case string and contain info
      about occular events (i.e. blink/saccade), or experiment
      messages sent by the stimulus presentation software.
      """
      with fname.open() as file:
          data_dict = dict()
          data_dict["sample_lines"] = []
          data_dict["event_lines"] = {
              "START": [],
              "END": [],
              "SAMPLES": [],
              "EVENTS": [],
              "ESACC": [],
              "EBLINK": [],
              "EFIX": [],
              "MSG": [],
              "INPUT": [],
              "BUTTON": [],
              "PUPIL": [],
          }
  
          is_recording_block = False
          for line in file:
              if line.startswith("START"):  # start of recording block
                  is_recording_block = True
              if is_recording_block:
                  tokens = line.split()
                  if not tokens:
                      continue  # skip empty lines
                  if tokens[0][0].isnumeric():  # Samples
                      data_dict["sample_lines"].append(tokens)
                  elif tokens[0] in data_dict["event_lines"].keys():
                      if _is_sys_msg(line):
                          continue  # system messages don't need to be parsed.
                      event_key, event_info = tokens[0], tokens[1:]
                      data_dict["event_lines"][event_key].append(
                          event_info
                      )
                      if tokens[0] == "END":  # end of recording block
                          is_recording_block = False
          if not data_dict["sample_lines"]:  # no samples parsed
              raise ValueError(f"Couldn't find any samples in {fname}")
          return data_dict
  
imports: import re
  from datetime import datetime, timedelta, timezone
  import numpy
  from ..._fiff.constants import FIFF
  from ..._fiff.meas_info import create_info
  from ...annotations import Annotations
  from ...utils import _check_pandas_installed, logger, warn
label_desc: Use image node_id 2 for calling a global function with example usage: _parse_recording_blocks(fname) and returns: data_dict