                      frames_dir +
                      "\n'missing-frames': Identify frames in the alignments"
                      "\n\tfile that do not appear within the frames"
                      "\n\tfolder." + output_opts + frames_dir +
                      "\n'legacy': This updates legacy alignments to the latest "
                      "\n\tformat by adding frame dimensions and rotating "
                      "\n\tthe landmarks and bounding boxes" + frames_dir +
                      "\n'leftover-faces': Identify faces in the faces"
                      "\n\tfolder that do not exist in the alignments file."
                      + output_opts + faces_dir +
                      "\n'multi-faces': Identify where multiple faces exist"
                      "\n\twithin the alignments file." + output_opts +
 
</s> remove             bottom_right = (alignment["x"] + alignment["w"],
                            alignment["y"] + alignment["h"])
            rectangle(self.image, top_left, bottom_right,
                      color, thickness)
 </s> add             bottom_right = (alignment["x"] + alignment["w"], alignment["y"] + alignment["h"])
            logger.trace("Drawing bounding box: (top_left: %s, bottom_right: %s, color: %s, "
                         "thickness: %s)", top_left, bottom_right, color, thickness)
            cv2.rectangle(self.image,  # pylint: disable=no-member
                          top_left,
                          bottom_right,
                          color,
                          thickness) </s> remove         shapes_im_coords = shapes_centered + np.tile(mean_coords,
                                                     [num_pts, 1, 1])
 </s> add         shapes_im_coords = shapes_centered + np.tile(mean_coords, [num_pts, 1, 1])
                    "\n'legacy': This updates legacy alignments to the latest"
                    "\n\tformat by adding frame dimensions, rotating the"
                    "\n\tlandmarks and bounding boxes and adding face_hashes" +
                    frames_and_faces_dir +
                      frames_dir +
                      "\n'missing-frames': Identify frames in the alignments"
                      "\n\tfile that do not appear within the frames"
                      "\n\tfolder." + output_opts + frames_dir +
                    "\n'legacy': This updates legacy alignments to the latest"
                    "\n\tformat by adding frame dimensions, rotating the"
                    "\n\tlandmarks and bounding boxes and adding face_hashes" +
                    frames_and_faces_dir +
                    "\n'legacy': This updates legacy alignments to the latest"
                    "\n\tformat by adding frame dimensions, rotating the"
                    "\n\tlandmarks and bounding boxes and adding face_hashes" +
                    frames_and_faces_dir +
                    "\n'legacy': This updates legacy alignments to the latest"
                    "\n\tformat by adding frame dimensions, rotating the"
                    "\n\tlandmarks and bounding boxes and adding face_hashes" +
                    frames_and_faces_dir +
                      "\n'leftover-faces': Identify faces in the faces"
                      "\n\tfolder that do not exist in the alignments file."
                      + output_opts + faces_dir +
                      "\n'multi-faces': Identify where multiple faces exist"
                      "\n\twithin the alignments file." + output_opts +
keep keep keep keep replace replace replace keep keep keep keep keep
 Add Face Hashes to Alignments (#550)

* Convert main scripts to use face hashes

* Alignment tool: Use hashes, add logging, add face rename function

* More logging. Update Manual tool to work with hashing 
tools/cli.py