code: def fast_forward(self, start_dt):
          
          if self.from_stdin:
              # skip lines until start_dt is reached
              return
  
          else:
              # fast bisection path
              max_mark = self.filesize
              step_size = max_mark
  
              # check if start_dt is already smaller than first datetime
              self.filehandle.seek(0)
              le = self.next()
              if le.datetime and le.datetime >= start_dt:
                  self.filehandle.seek(0)
                  return
  
              le = None
              self.filehandle.seek(0)
  
              # search for lower bound
              while abs(step_size) > 100:
                  step_size = ceil(step_size / 2.)
  
                  self.filehandle.seek(step_size, 1)
                  le = self._find_curr_line()
                  if not le:
                      break
  
                  if le.datetime >= start_dt:
                      step_size = -abs(step_size)
                  else:
                      step_size = abs(step_size)
  
              if not le:
                  return
  
              # now walk backwards until we found a truly smaller line
              while self.filehandle.tell() >= 2 and (le.datetime is None or
                                                     le.datetime >= start_dt):
                  self.filehandle.seek(-2, 1)
  
                  le = self._find_curr_line(prev=True)
docs: Fast-forward file to given start_dt datetime obj using binary search.
  
          Only fast for files. Streams need to be forwarded manually, and it will
          miss the first line that would otherwise match (as it consumes the log
          line).