              type=str.lower,
              dest="normalization",
              default="none",
              choices=["none", "clahe", "hist", "mean"],
              group="plugins",
              help="R|Performing normalization can help the aligner better align faces with "
                   "difficult lighting conditions at an extraction speed cost. Different methods "
                   "will yield different results on different sets. NB: This does not impact the "
                   "output face, just the input to the aligner."
                   "\nL|none: Don't perform normalization on the face."
                   "\nL|clahe: Perform Contrast Limited Adaptive Histogram Equalization on the "
                   "face."
                   "\nL|hist: Equalize the histograms on the RGB channels."
                   "\nL|mean: Normalize the face colors to the mean."))
          argument_list.append(dict(
              opts=("-rf", "--re-feed"),
              action=Slider,
              min_max=(0, 10),
              rounding=1,
 
</s> remove         argument_list.append({
            "opts": ("-a", "--alignments"),
            "action": FileFullPaths,
            "type": str,
            "group": "data",
            "required": True,
            "filetypes": "alignments",
            "help": "Full path to the alignments file to add the mask to. NB: if the mask already "
                    "exists in the alignments file it will be overwritten."})
        argument_list.append({
            "opts": ("-i", "--input"),
            "action": DirOrFileFullPaths,
            "type": str,
            "group": "data",
            "filetypes": "video",
            "required": True,
            "help": "Directory containing extracted faces, source frames, or a video file."})
        argument_list.append({
            "opts": ("-it", "--input-type"),
            "action": Radio,
            "type": str.lower,
            "choices": ("faces", "frames"),
            "dest": "input_type",
            "group": "data",
            "default": "frames",
            "help": "R|Whether the `input` is a folder of faces or a folder frames/video"
                    "\nL|faces: The input is a folder containing extracted faces."
                    "\nL|frames: The input is a folder containing frames or is a video"})
        argument_list.append({
            "opts": ("-M", "--masker"),
            "action": Radio,
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask"),
            "default": "extended",
            "group": "process",
            "help": "R|Masker to use."
                    "\nL|components: Mask designed to provide facial segmentation based on the "
                    "positioning of landmark locations. A convex hull is constructed around the "
                    "exterior of the landmarks to create a mask."
                    "\nL|extended: Mask designed to provide facial segmentation based on the "
                    "positioning of landmark locations. A convex hull is constructed around the "
                    "exterior of the landmarks and the mask is extended upwards onto the forehead."
                    "\nL|vgg-clear: Mask designed to provide smart segmentation of mostly frontal "
                    "faces clear of obstructions. Profile faces and obstructions may result in "
                    "sub-par performance."
                    "\nL|vgg-obstructed: Mask designed to provide smart segmentation of mostly "
                    "frontal faces. The mask model has been specifically trained to recognize "
                    "some facial obstructions (hands and eyeglasses). Profile faces may result in "
                    "sub-par performance."
                    "\nL|unet-dfl: Mask designed to provide smart segmentation of mostly frontal "
                    "faces. The mask model has been trained by community members and will need "
                    "testing for further description. Profile faces may result in sub-par "
                    "performance."})
        argument_list.append({
            "opts": ("-p", "--processing"),
            "action": Radio,
            "type": str.lower,
            "choices": ("all", "missing", "output"),
            "default": "missing",
            "group": "process",
            "help": "R|Whether to update all masks in the alignments files, only those faces "
                    "that do not already have a mask of the given `mask type` or just to output "
                    "the masks to the `output` location."
                    "\nL|all: Update the mask for all faces in the alignments file."
                    "\nL|missing: Create a mask for all faces in the alignments file where a mask "
                    "does not previously exist."
                    "\nL|output: Don't update the masks, just output them for review in the given "
                    "output folder."})
        argument_list.append({
            "opts": ("-o", "--output-folder"),
            "action": DirFullPaths,
            "dest": "output",
            "type": str,
            "group": "output",
            "help": "Optional output location. If provided, a preview of the masks created will "
                    "be output in the given folder."})
        argument_list.append({
            "opts": ("-b", "--blur_kernel"),
            "action": Slider,
            "type": int,
            "group": "output",
            "min_max": (0, 9),
            "default": 3,
            "rounding": 1,
            "help": "Apply gaussian blur to the mask output. Has the effect of smoothing the "
                    "edges of the mask giving less of a hard edge. the size is in pixels. This "
                    "value should be odd, if an even number is passed in then it will be rounded "
                    "to the next odd number. NB: Only effects the output preview. Set to 0 for "
                    "off"})
        argument_list.append({
            "opts": ("-t", "--threshold"),
            "action": Slider,
            "type": int,
            "group": "output",
            "min_max": (0, 50),
            "default": 4,
            "rounding": 1,
            "help": "Helps reduce 'blotchiness' on some masks by making light shades white "
                    "and dark shades black. Higher values will impact more of the mask. NB: "
                    "Only effects the output preview. Set to 0 for off"})
        argument_list.append({
            "opts": ("-ot", "--output-type"),
            "action": Radio,
            "type": str.lower,
            "choices": ("combined", "masked", "mask"),
            "default": "combined",
            "group": "output",
            "help": "R|How to format the output when processing is set to 'output'."
                    "\nL|combined: The image contains the face/frame, face mask and masked face."
                    "\nL|masked: Output the face/frame as rgba image with the face masked."
                    "\nL|mask: Only output the mask as a single channel image."})
        argument_list.append({
            "opts": ("-f", "--full-frame"),
            "action": "store_true",
            "default": False,
            "group": "output",
            "help": "R|Whether to output the whole frame or only the face box when using "
                    "output processing. Only has an effect when using frames as input."})
 </s> add         argument_list.append(dict(
            opts=("-a", "--alignments"),
            action=FileFullPaths,
            type=str,
            group=_("data"),
            required=True,
            filetypes="alignments",
            help=_("Full path to the alignments file to add the mask to. NB: if the mask already "
                   "exists in the alignments file it will be overwritten.")))
        argument_list.append(dict(
            opts=("-i", "--input"),
            action=DirOrFileFullPaths,
            type=str,
            group=_("data"),
            filetypes="video",
            required=True,
            help=_("Directory containing extracted faces, source frames, or a video file.")))
        argument_list.append(dict(
            opts=("-it", "--input-type"),
            action=Radio,
            type=str.lower,
            choices=("faces", "frames"),
            dest="input_type",
            group=_("data"),
            default="frames",
            help=_("R|Whether the `input` is a folder of faces or a folder frames/video"
                   "\nL|faces: The input is a folder containing extracted faces."
                   "\nL|frames: The input is a folder containing frames or is a video")))
        argument_list.append(dict(
            opts=("-M", "--masker"),
            action=Radio,
            type=str.lower,
            choices=PluginLoader.get_available_extractors("mask"),
            default="extended",
            group=_("process"),
            help=_("R|Masker to use."
                   "\nL|components: Mask designed to provide facial segmentation based on the "
                   "positioning of landmark locations. A convex hull is constructed around the "
                   "exterior of the landmarks to create a mask."
                   "\nL|extended: Mask designed to provide facial segmentation based on the "
                   "positioning of landmark locations. A convex hull is constructed around the "
                   "exterior of the landmarks and the mask is extended upwards onto the forehead."
                   "\nL|vgg-clear: Mask designed to provide smart segmentation of mostly frontal "
                   "faces clear of obstructions. Profile faces and obstructions may result in "
                   "sub-par performance."
                   "\nL|vgg-obstructed: Mask designed to provide smart segmentation of mostly "
                   "frontal faces. The mask model has been specifically trained to recognize "
                   "some facial obstructions (hands and eyeglasses). Profile faces may result in "
                   "sub-par performance."
                   "\nL|unet-dfl: Mask designed to provide smart segmentation of mostly frontal "
                   "faces. The mask model has been trained by community members and will need "
                   "testing for further description. Profile faces may result in sub-par "
                   "performance.")))
        argument_list.append(dict(
            opts=("-p", "--processing"),
            action=Radio,
            type=str.lower,
            choices=("all", "missing", "output"),
            default="missing",
            group=_("process"),
            help=_("R|Whether to update all masks in the alignments files, only those faces "
                   "that do not already have a mask of the given `mask type` or just to output "
                   "the masks to the `output` location."
                   "\nL|all: Update the mask for all faces in the alignments file."
                   "\nL|missing: Create a mask for all faces in the alignments file where a mask "
                   "does not previously exist."
                   "\nL|output: Don't update the masks, just output them for review in the given "
                   "output folder.")))
        argument_list.append(dict(
            opts=("-o", "--output-folder"),
            action=DirFullPaths,
            dest="output",
            type=str,
            group=_("output"),
            help=_("Optional output location. If provided, a preview of the masks created will "
                   "be output in the given folder.")))
        argument_list.append(dict(
            opts=("-b", "--blur_kernel"),
            action=Slider,
            type=int,
            group=_("output"),
            min_max=(0, 9),
            default=3,
            rounding=1,
            help=_("Apply gaussian blur to the mask output. Has the effect of smoothing the "
                   "edges of the mask giving less of a hard edge. the size is in pixels. This "
                   "value should be odd, if an even number is passed in then it will be rounded "
                   "to the next odd number. NB: Only effects the output preview. Set to 0 for "
                   "off")))
        argument_list.append(dict(
            opts=("-t", "--threshold"),
            action=Slider,
            type=int,
            group=_("output"),
            min_max=(0, 50),
            default=4,
            rounding=1,
            help=_("Helps reduce 'blotchiness' on some masks by making light shades white "
                   "and dark shades black. Higher values will impact more of the mask. NB: "
                   "Only effects the output preview. Set to 0 for off")))
        argument_list.append(dict(
            opts=("-ot", "--output-type"),
            action=Radio,
            type=str.lower,
            choices=("combined", "masked", "mask"),
            default="combined",
            group=_("output"),
            help=_("R|How to format the output when processing is set to 'output'."
                   "\nL|combined: The image contains the face/frame, face mask and masked face."
                   "\nL|masked: Output the face/frame as rgba image with the face masked."
                   "\nL|mask: Only output the mask as a single channel image.")))
        argument_list.append(dict(
            opts=("-f", "--full-frame"),
            action="store_true",
            default=False,
            group=_("output"),
            help=_("R|Whether to output the whole frame or only the face box when using "
                   "output processing. Only has an effect when using frames as input."))) </s> remove             help="R|Choose which action you want to perform. NB: All actions require an "
                 "alignments file (-a) to be passed in."
                 "\nL|'draw': Draw landmarks on frames in the selected folder/video. A subfolder "
                 "will be created within the frames folder to hold the output.{0}"
                 "\nL|'extract': Re-extract faces from the source frames/video based on alignment "
                 "data. This is a lot quicker than re-detecting faces. Can pass in the '-een' "
                 "(--extract-every-n) parameter to only extract every nth frame.{1}"
                 "\nL|'missing-alignments': Identify frames that do not exist in the alignments "
                 "file.{2}{0}"
                 "\nL|'missing-frames': Identify frames in the alignments file that do not appear "
                 "within the frames folder/video.{2}{0}"
                 "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                 "file.{2}{4}"
                 "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                 "faces were detected.{2}{0}"
                 "\nL|'remove-faces': Remove deleted faces from an alignments file. The original "
                 "alignments file will be backed up.{3}"
                 "\nL|'rename' - Rename faces to correspond with their parent frame and position "
                 "index in the alignments file (i.e. how they are named after running extract).{3}"
                 "\nL|'sort': Re-index the alignments from left to right. For alignments with "
                 "multiple faces this will ensure that the left-most face is at index 0."
                 "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                 "(EXPERIMENTAL!)".format(frames_dir, frames_and_faces_dir, output_opts, faces_dir,
                                          frames_or_faces_dir)))
 </s> add             help=_("R|Choose which action you want to perform. NB: All actions require an "
                   "alignments file (-a) to be passed in."
                   "\nL|'draw': Draw landmarks on frames in the selected folder/video. A "
                   "subfolder will be created within the frames folder to hold the output.{0}"
                   "\nL|'extract': Re-extract faces from the source frames/video based on "
                   "alignment data. This is a lot quicker than re-detecting faces. Can pass in "
                   "the '-een' (--extract-every-n) parameter to only extract every nth frame.{1}"
                   "\nL|'missing-alignments': Identify frames that do not exist in the alignments "
                   "file.{2}{0}"
                   "\nL|'missing-frames': Identify frames in the alignments file that do not "
                   "appear within the frames folder/video.{2}{0}"
                   "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                   "file.{2}{4}"
                   "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                   "faces were detected.{2}{0}"
                   "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                   "original alignments file will be backed up.{3}"
                   "\nL|'rename' - Rename faces to correspond with their parent frame and "
                   "position index in the alignments file (i.e. how they are named after running "
                   "extract).{3}"
                   "\nL|'sort': Re-index the alignments from left to right. For alignments with "
                   "multiple faces this will ensure that the left-most face is at index 0."
                   "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                   "(EXPERIMENTAL!)").format(frames_dir, frames_and_faces_dir, output_opts,
                                             faces_dir, frames_or_faces_dir))) </s> remove             group="plugins",
            help="R|Performs color adjustment to the swapped face. Some of these options have "
                 "configurable settings in '/config/convert.ini' or 'Settings > Configure "
                 "Convert Plugins':"
                 "\nL|avg-color: Adjust the mean of each color channel in the swapped "
                 "reconstruction to equal the mean of the masked area in the original image."
                 "\nL|color-transfer: Transfers the color distribution from the source to the "
                 "target image using the mean and standard deviations of the L*a*b* "
                 "color space."
                 "\nL|manual-balance: Manually adjust the balance of the image in a variety of "
                 "color spaces. Best used with the Preview tool to set correct values."
                 "\nL|match-hist: Adjust the histogram of each color channel in the swapped "
                 "reconstruction to equal the histogram of the masked area in the original "
                 "image."
                 "\nL|seamless-clone: Use cv2's seamless clone function to remove extreme "
                 "gradients at the mask seam by smoothing colors. Generally does not give "
                 "very satisfactory results."
                 "\nL|none: Don't perform color adjustment."))
 </s> add             group=_("Plugins"),
            help=_("R|Performs color adjustment to the swapped face. Some of these options have "
                   "configurable settings in '/config/convert.ini' or 'Settings > Configure "
                   "Convert Plugins':"
                   "\nL|avg-color: Adjust the mean of each color channel in the swapped "
                   "reconstruction to equal the mean of the masked area in the original image."
                   "\nL|color-transfer: Transfers the color distribution from the source to the "
                   "target image using the mean and standard deviations of the L*a*b* "
                   "color space."
                   "\nL|manual-balance: Manually adjust the balance of the image in a variety of "
                   "color spaces. Best used with the Preview tool to set correct values."
                   "\nL|match-hist: Adjust the histogram of each color channel in the swapped "
                   "reconstruction to equal the histogram of the masked area in the original "
                   "image."
                   "\nL|seamless-clone: Use cv2's seamless clone function to remove extreme "
                   "gradients at the mask seam by smoothing colors. Generally does not give "
                   "very satisfactory results."
                   "\nL|none: Don't perform color adjustment."))) </s> remove             group="plugins",
            help="The number of times to re-feed the detected face into the aligner. Each time "
                 "the face is re-fed into the aligner the bounding box is adjusted by a small "
                 "amount. The final landmarks are then averaged from each iteration. Helps to "
                 "remove 'micro-jitter' but at the cost of slower extraction speed. The more "
                 "times the face is re-fed into the aligner, the less micro-jitter should occur "
                 "but the longer extraction will take."))
 </s> add             group=_("Plugins"),
            help=_("The number of times to re-feed the detected face into the aligner. Each time "
                   "the face is re-fed into the aligner the bounding box is adjusted by a small "
                   "amount. The final landmarks are then averaged from each iteration. Helps to "
                   "remove 'micro-jitter' but at the cost of slower extraction speed. The more "
                   "times the face is re-fed into the aligner, the less micro-jitter should occur "
                   "but the longer extraction will take."))) </s> remove             group="Plugins",
            help="R|Masker to use. NB: The mask you require must exist within the alignments "
                 "file. You can add additional masks with the Mask Tool."
                 "\nL|none: Don't use a mask."
                 "\nL|components: Mask designed to provide facial segmentation based on the "
                 "positioning of landmark locations. A convex hull is constructed around the "
                 "exterior of the landmarks to create a mask."
                 "\nL|extended: Mask designed to provide facial segmentation based on the "
                 "positioning of landmark locations. A convex hull is constructed around the "
                 "exterior of the landmarks and the mask is extended upwards onto the forehead."
                 "\nL|vgg-clear: Mask designed to provide smart segmentation of mostly frontal "
                 "faces clear of obstructions. Profile faces and obstructions may result in "
                 "sub-par performance."
                 "\nL|vgg-obstructed: Mask designed to provide smart segmentation of mostly "
                 "frontal faces. The mask model has been specifically trained to recognize "
                 "some facial obstructions (hands and eyeglasses). Profile faces may result in "
                 "sub-par performance."
                 "\nL|unet-dfl: Mask designed to provide smart segmentation of mostly frontal "
                 "faces. The mask model has been trained by community members and will need "
                 "testing for further description. Profile faces may result in sub-par "
                 "performance."))
 </s> add             group=_("Plugins"),
            help=_("R|Masker to use. NB: The mask you require must exist within the alignments "
                   "file. You can add additional masks with the Mask Tool."
                   "\nL|none: Don't use a mask."
                   "\nL|components: Mask designed to provide facial segmentation based on the "
                   "positioning of landmark locations. A convex hull is constructed around the "
                   "exterior of the landmarks to create a mask."
                   "\nL|extended: Mask designed to provide facial segmentation based on the "
                   "positioning of landmark locations. A convex hull is constructed around the "
                   "exterior of the landmarks and the mask is extended upwards onto the forehead."
                   "\nL|vgg-clear: Mask designed to provide smart segmentation of mostly frontal "
                   "faces clear of obstructions. Profile faces and obstructions may result in "
                   "sub-par performance."
                   "\nL|vgg-obstructed: Mask designed to provide smart segmentation of mostly "
                   "frontal faces. The mask model has been specifically trained to recognize "
                   "some facial obstructions (hands and eyeglasses). Profile faces may result in "
                   "sub-par performance."
                   "\nL|unet-dfl: Mask designed to provide smart segmentation of mostly frontal "
                   "faces. The mask model has been trained by community members and will need "
                   "testing for further description. Profile faces may result in sub-par "
                   "performance.")))
            group=_("Plugins"),
            help=_("R|Performing normalization can help the aligner better align faces with "
                   "difficult lighting conditions at an extraction speed cost. Different methods "
                   "will yield different results on different sets. NB: This does not impact the "
                   "output face, just the input to the aligner."
                   "\nL|none: Don't perform normalization on the face."
                   "\nL|clahe: Perform Contrast Limited Adaptive Histogram Equalization on the "
                   "face."
                   "\nL|hist: Equalize the histograms on the RGB channels."
                   "\nL|mean: Normalize the face colors to the mean.")))
              type=str.lower,
              dest="normalization",
              default="none",
              choices=["none", "clahe", "hist", "mean"],
            group=_("Plugins"),
            help=_("R|Performing normalization can help the aligner better align faces with "
                   "difficult lighting conditions at an extraction speed cost. Different methods "
                   "will yield different results on different sets. NB: This does not impact the "
                   "output face, just the input to the aligner."
                   "\nL|none: Don't perform normalization on the face."
                   "\nL|clahe: Perform Contrast Limited Adaptive Histogram Equalization on the "
                   "face."
                   "\nL|hist: Equalize the histograms on the RGB channels."
                   "\nL|mean: Normalize the face colors to the mean.")))
            group=_("Plugins"),
            help=_("R|Performing normalization can help the aligner better align faces with "
                   "difficult lighting conditions at an extraction speed cost. Different methods "
                   "will yield different results on different sets. NB: This does not impact the "
                   "output face, just the input to the aligner."
                   "\nL|none: Don't perform normalization on the face."
                   "\nL|clahe: Perform Contrast Limited Adaptive Histogram Equalization on the "
                   "face."
                   "\nL|hist: Equalize the histograms on the RGB channels."
                   "\nL|mean: Normalize the face colors to the mean.")))
            group=_("Plugins"),
            help=_("R|Performing normalization can help the aligner better align faces with "
                   "difficult lighting conditions at an extraction speed cost. Different methods "
                   "will yield different results on different sets. NB: This does not impact the "
                   "output face, just the input to the aligner."
                   "\nL|none: Don't perform normalization on the face."
                   "\nL|clahe: Perform Contrast Limited Adaptive Histogram Equalization on the "
                   "face."
                   "\nL|hist: Equalize the histograms on the RGB channels."
                   "\nL|mean: Normalize the face colors to the mean.")))
            group=_("Plugins"),
            help=_("R|Performing normalization can help the aligner better align faces with "
                   "difficult lighting conditions at an extraction speed cost. Different methods "
                   "will yield different results on different sets. NB: This does not impact the "
                   "output face, just the input to the aligner."
                   "\nL|none: Don't perform normalization on the face."
                   "\nL|clahe: Perform Contrast Limited Adaptive Histogram Equalization on the "
                   "face."
                   "\nL|hist: Equalize the histograms on the RGB channels."
                   "\nL|mean: Normalize the face colors to the mean.")))
            group=_("Plugins"),
            help=_("R|Performing normalization can help the aligner better align faces with "
                   "difficult lighting conditions at an extraction speed cost. Different methods "
                   "will yield different results on different sets. NB: This does not impact the "
                   "output face, just the input to the aligner."
                   "\nL|none: Don't perform normalization on the face."
                   "\nL|clahe: Perform Contrast Limited Adaptive Histogram Equalization on the "
                   "face."
                   "\nL|hist: Equalize the histograms on the RGB channels."
                   "\nL|mean: Normalize the face colors to the mean.")))
            group=_("Plugins"),
            help=_("R|Performing normalization can help the aligner better align faces with "
                   "difficult lighting conditions at an extraction speed cost. Different methods "
                   "will yield different results on different sets. NB: This does not impact the "
                   "output face, just the input to the aligner."
                   "\nL|none: Don't perform normalization on the face."
                   "\nL|clahe: Perform Contrast Limited Adaptive Histogram Equalization on the "
                   "face."
                   "\nL|hist: Equalize the histograms on the RGB channels."
                   "\nL|mean: Normalize the face colors to the mean.")))
            group=_("Plugins"),
            help=_("R|Performing normalization can help the aligner better align faces with "
                   "difficult lighting conditions at an extraction speed cost. Different methods "
                   "will yield different results on different sets. NB: This does not impact the "
                   "output face, just the input to the aligner."
                   "\nL|none: Don't perform normalization on the face."
                   "\nL|clahe: Perform Contrast Limited Adaptive Histogram Equalization on the "
                   "face."
                   "\nL|hist: Equalize the histograms on the RGB channels."
                   "\nL|mean: Normalize the face colors to the mean.")))
            group=_("Plugins"),
            help=_("R|Performing normalization can help the aligner better align faces with "
                   "difficult lighting conditions at an extraction speed cost. Different methods "
                   "will yield different results on different sets. NB: This does not impact the "
                   "output face, just the input to the aligner."
                   "\nL|none: Don't perform normalization on the face."
                   "\nL|clahe: Perform Contrast Limited Adaptive Histogram Equalization on the "
                   "face."
                   "\nL|hist: Equalize the histograms on the RGB channels."
                   "\nL|mean: Normalize the face colors to the mean.")))
            group=_("Plugins"),
            help=_("R|Performing normalization can help the aligner better align faces with "
                   "difficult lighting conditions at an extraction speed cost. Different methods "
                   "will yield different results on different sets. NB: This does not impact the "
                   "output face, just the input to the aligner."
                   "\nL|none: Don't perform normalization on the face."
                   "\nL|clahe: Perform Contrast Limited Adaptive Histogram Equalization on the "
                   "face."
                   "\nL|hist: Equalize the histograms on the RGB channels."
                   "\nL|mean: Normalize the face colors to the mean.")))
            group=_("Plugins"),
            help=_("R|Performing normalization can help the aligner better align faces with "
                   "difficult lighting conditions at an extraction speed cost. Different methods "
                   "will yield different results on different sets. NB: This does not impact the "
                   "output face, just the input to the aligner."
                   "\nL|none: Don't perform normalization on the face."
                   "\nL|clahe: Perform Contrast Limited Adaptive Histogram Equalization on the "
                   "face."
                   "\nL|hist: Equalize the histograms on the RGB channels."
                   "\nL|mean: Normalize the face colors to the mean.")))
          argument_list.append(dict(
              opts=("-rf", "--re-feed"),
              action=Slider,
              min_max=(0, 10),
              rounding=1,
keep keep keep keep replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Add Locale support for cli arguments 
lib/cli/args.py