code: def ParseRow(self, parser_mediator, row_offset, row):
      
      filename = row.get('name', None)
      md5_hash = row.get('md5', None)
      mode = row.get('mode_as_string', None)
  
      inode_number = row.get('inode', None)
      if '-' in inode_number:
        inode_number, _, _ = inode_number.partition('-')
  
      try:
        inode_number = int(inode_number, 10)
      except (TypeError, ValueError):
        inode_number = None
  
      data_size = self._GetIntegerValue(row, 'size')
      user_uid = self._GetIntegerValue(row, 'uid')
      user_gid = self._GetIntegerValue(row, 'gid')
  
      event_data = MactimeEventData()
      event_data.filename = filename
      event_data.inode = inode_number
      event_data.md5 = md5_hash
      event_data.mode_as_string = mode
      event_data.offset = row_offset
      event_data.size = data_size
      event_data.user_gid = user_gid
  
      if user_uid is None:
        event_data.user_sid = None
      else:
        # Note that the user_sid value is expected to be a string.
        event_data.user_sid = '{0:d}'.format(user_uid)
  
      for value_name, timestamp_description in iter(
          self._TIMESTAMP_DESC_MAP.items()):
        posix_time = self._GetIntegerValue(row, value_name)
        # mactime will return 0 if the timestamp is not set.
        if not posix_time:
          continue
  
        date_time = dfdatetime_posix_time.PosixTime(timestamp=posix_time)
        event = time_events.DateTimeValuesEvent(date_time, timestamp_description)
        parser_mediator.ProduceEventWithEventData(event, event_data)
docs: Parses a line of the log file and produces events.
  
      Args:
        parser_mediator (ParserMediator): mediates interactions between parsers
            and other components, such as storage and dfvfs.
        row_offset (int): number of the corresponding line.
        row (dict[str, str]): fields of a single row, as specified in COLUMNS.