              rois.append(roi)
              offsets.append(offset)
          return faces, rois, offsets
  
      @staticmethod
      def move_box(box, offset):
          """Move the box to direction specified by vector offset"""
          left = box[0] + offset[0]
          top = box[1] + offset[1]
          right = box[2] + offset[0]
          bottom = box[3] + offset[1]
          return [left, top, right, bottom]
 
</s> remove     def get_square_box(box):
        """Get a square box out of the given box, by expanding it."""
 </s> add     def get_square_box(box: List[int]) -> List[int]:
        """Get a square box out of the given box, by expanding it.

        Parameters
        ----------
        box: list
            The (`left`, `top`, `right`, `bottom`) box positions

        Returns
        -------
        list
            The original box but made square
        """ </s> remove     @staticmethod
    def pad_image(box, image):
        """Pad image if face-box falls outside of boundaries """
 </s> add     @classmethod
    def pad_image(cls, box: List[int], image: np.ndarray) -> Tuple[np.ndarray, Tuple[int, int]]:
        """Pad image if face-box falls outside of boundaries

        Parameters
        ----------
        box: list
            The (`left`, `top`, `right`, `bottom`) roi box positions
        image: :class:`numpy.ndarray`
            The image to be padded

        Returns
        -------
        :class:`numpy.ndarray`
            The padded image
        """ </s> remove         logger.trace("Padding: (l: %s, t: %s, r: %s, b: %s)", pad_l, pad_t, pad_r, pad_b)
 </s> add         logger.trace("Padding: (l: %s, t: %s, r: %s, b: %s)",  # type:ignore
                     pad_l, pad_t, pad_r, pad_b) </s> remove             x_center = (face.left + face.right) / 2.0
            y_center = (face.top + face.bottom) / 2.0 - face.height * 0.12
            scale = (face.width + face.height) * self.reference_scale
 </s> add             x_center = (cast(int, face.left) + face.right) / 2.0
            y_center = (cast(int, face.top) + face.bottom) / 2.0 - cast(int, face.height) * 0.12
            scale = (cast(int, face.width) + cast(int, face.height)) * self.reference_scale </s> remove     def align_image(self, batch):
        """ Align the incoming image for prediction """
        logger.trace("Aligning image around center")
 </s> add         Returns
        -------
        box: list
            The [left, top, right, bottom] bounding box
        offset: int
            The offset of the box (difference between half width vs height)
        """

        box = cast(List[int], [face.left,
                               face.top,
                               face.right,
                               face.bottom])
        diff_height_width = cast(int, face.height) - cast(int, face.width)
        offset = int(abs(diff_height_width / 2))
        return box, offset

    def align_image(self, batch: AlignerBatch) -> Tuple[List[np.ndarray],
                                                        List[List[int]],
                                                        List[Tuple[int, int]]]:
        """ Align the incoming image for prediction

        Parameters
        ----------
        batch: :class:`AlignerBatch`
            The current batch to align the input for

        Returns
        -------
        faces: list
            List of feed faces for the aligner
        rois: list
            List of roi's for the faces
        offsets: list
            List of offsets for the faces
        """
        logger.trace("Aligning image around center")  # type:ignore
    @classmethod
    def move_box(cls,
                 box: List[int],
                 offset: Tuple[int, int]) -> List[int]:
        """Move the box to direction specified by vector offset

        Parameters
        ----------
        box: list
            The (`left`, `top`, `right`, `bottom`) box positions
        offset: tuple
            (x, y) offset to move the box

        Returns
        -------
        list
            The original box shifted by the offset
        """
              rois.append(roi)
              offsets.append(offset)
          return faces, rois, offsets
  
    @classmethod
    def move_box(cls,
                 box: List[int],
                 offset: Tuple[int, int]) -> List[int]:
        """Move the box to direction specified by vector offset

        Parameters
        ----------
        box: list
            The (`left`, `top`, `right`, `bottom`) box positions
        offset: tuple
            (x, y) offset to move the box

        Returns
        -------
        list
            The original box shifted by the offset
        """
    @classmethod
    def move_box(cls,
                 box: List[int],
                 offset: Tuple[int, int]) -> List[int]:
        """Move the box to direction specified by vector offset

        Parameters
        ----------
        box: list
            The (`left`, `top`, `right`, `bottom`) box positions
        offset: tuple
            (x, y) offset to move the box

        Returns
        -------
        list
            The original box shifted by the offset
        """
    @classmethod
    def move_box(cls,
                 box: List[int],
                 offset: Tuple[int, int]) -> List[int]:
        """Move the box to direction specified by vector offset

        Parameters
        ----------
        box: list
            The (`left`, `top`, `right`, `bottom`) box positions
        offset: tuple
            (x, y) offset to move the box

        Returns
        -------
        list
            The original box shifted by the offset
        """
          left = box[0] + offset[0]
          top = box[1] + offset[1]
          right = box[2] + offset[0]
          bottom = box[3] + offset[1]
          return [left, top, right, bottom]
keep keep keep keep replace replace replace keep keep keep keep keep
 Extract updates:
  - Default CPU detector to MTCNN
  - add basic Aligner false positive filters
  - Typing: align + plugins
  - Use specific AlignerBatch class for alignment
  - 
plugins/extract/align/cv2_dnn.py