          self._max_scale = max_scale
          self._distance = distance / 100.
          self._active = max_scale > 0.0 or min_scale > 0.0 or distance > 0.0
          self._counts: Dict[str, int] = dict(min_scale=0, max_scale=0, distance=0)
          logger.debug("Initialized %s: ", self.__class__.__name__)
  
      def __call__(self, faces: List[DetectedFace], minimum_dimension: int
 
</s> remove     def __call__(self, faces: List[DetectedFace], minimum_dimension: int) -> List[DetectedFace]:
 </s> add     def __call__(self, faces: List[DetectedFace], minimum_dimension: int
                 ) -> Tuple[List[DetectedFace], List[Optional[str]]]: </s> remove     def __init__(self, min_scale: float, max_scale: float, distance: float):
        logger.debug("Initializing %s: (min_scale: %s, max_scale: %s, distance: %s)",
                     self.__class__.__name__, min_scale, max_scale, distance)
 </s> add     def __init__(self,
                 min_scale: float,
                 max_scale: float,
                 distance: float,
                 save_output: bool) -> None:
        logger.debug("Initializing %s: (min_scale: %s, max_scale: %s, distance: %s, "
                     "save_output: %s)", self.__class__.__name__, min_scale, max_scale, distance,
                     save_output) </s> remove         for face in faces:
 </s> add         for idx, face in enumerate(faces):
        self._save_output = save_output
          self._max_scale = max_scale
          self._distance = distance / 100.
        self._save_output = save_output
          self._active = max_scale > 0.0 or min_scale > 0.0 or distance > 0.0
          self._counts: Dict[str, int] = dict(min_scale=0, max_scale=0, distance=0)
          logger.debug("Initialized %s: ", self.__class__.__name__)
  
      def __call__(self, faces: List[DetectedFace], minimum_dimension: int
keep add keep keep keep keep keep
 Extract filter: Allow saving of filtered images 
plugins/extract/align/_base.py