code: def EstimateTimeRemaining(self):
      
      number_of_hashes = self.hash_queue.qsize()
      hashes_per_batch = self._analyzer.hashes_per_batch
      wait_time_per_batch = self._analyzer.wait_after_analysis
      analyses_performed = self._analyzer.analyses_performed
  
      if analyses_performed == 0:
        average_analysis_time = self._analyzer.seconds_spent_analyzing
      else:
        average_analysis_time, _ = divmod(
            self._analyzer.seconds_spent_analyzing, analyses_performed)
  
      batches_remaining, _ = divmod(number_of_hashes, hashes_per_batch)
      estimated_seconds_per_batch = average_analysis_time + wait_time_per_batch
      return batches_remaining * estimated_seconds_per_batch
docs: Estimates how long until all hashes have been analyzed.
  
      Returns:
        int: estimated number of seconds until all hashes have been analyzed.