CVE-2021-22204 (published 2021-04-23T18:15Z)

Improper neutralization of user data in the DjVu file format in ExifTool versions 7.44 and up allows arbitrary code execution when parsing the malicious image

Severity: MEDIUM
CVSS v2 base score: 6.8 (AV:N/AC:M/Au:N/C:P/I:P/A:P)
CVSS v3 base score: 7.8, HIGH (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)

Weakness information:
cwe_id: CWE-94
cwe_name: Improper Control of Generation of Code ('Code Injection')
description: The product constructs all or part of a code segment using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the syntax or behavior of the intended code segment.
extended_description: 
            When a product allows a user's input to contain code syntax, it might be possible for an attacker to craft the code in such a way that it will alter the intended control flow of the product. Such an alteration could lead to arbitrary code execution.
            Injection problems encompass a wide variety of issues -- all mitigated in very different ways. For this reason, the most effective way to discuss these weaknesses is to note the distinct features which classify them as injection weaknesses. The most important issue to note is that all injection problems share one thing in common -- i.e., they allow for the injection of control plane data into the user-controlled data plane. This means that the execution of the process may be altered by sending code in through legitimate data channels, using no other mechanism. While buffer overflows, and many other flaws, involve the use of some further issue to gain execution, injection problems need only for the data to be parsed. The most classic instantiations of this category of weakness are SQL injection and format string vulnerabilities.
         
         

Fix information:
repo_url: https://github.com/exiftool/exiftool
commit_details: repo_url: https://github.com/exiftool/exiftool
author: exiftool
author_date: 2021-04-13 11:11:46-04:00
msg: Update to 12.24
repository: repo_url: https://github.com/exiftool/exiftool
repo_name: exiftool/exiftool
description: ExifTool meta information reader/writer
repo_language: Perl
owner: exiftool
file_changes: filename: Changes
change_type: ModificationType.MODIFY
diff: @@ -7,6 +7,17 @@ RSS feed: https://exiftool.org/rss.xml
 Note: The most recent production release is Version 12.16. (Other versions are
 considered development releases, and are not uploaded to MetaCPAN.)
 
+Apr. 13, 2021 - Version 12.24
+
+  - Added a new PhaseOne RawFormat value (thanks LibRaw)
+  - Decode a new Sony tag (thanks Jos Roost)
+  - Decode a few new Panasonic and FujiFilm tags (thanks LibRaw and Greybeard)
+  - Patched security vulnerability in DjVu reader
+  - Updated acdsee.config in distribution (thanks StarGeek)
+  - Recognize AutoCAD DXF files
+  - More work on experimental JUMBF read support
+  - More work on experimental JXL read/write support
+
 Apr. 1, 2021 - Version 12.23
 
   - Added support for Olympus ORI files

programming_language: Markdown
filename: META.json
change_type: ModificationType.MODIFY
diff: @@ -47,6 +47,6 @@
       }
    },
    "release_status" : "stable",
-   "version" : "12.23",
+   "version" : "12.24",
    "x_serialization_backend" : "JSON::PP version 4.02"
 }

programming_language: Ruby
filename: META.yml
change_type: ModificationType.MODIFY
diff: @@ -28,5 +28,5 @@ recommends:
   Time::HiRes: 0
 requires:
   perl: 5.004
-version: 12.23
+version: 12.24
 x_serialization_backend: 'JSON::PP version 4.02'

programming_language: Ruby
filename: README
change_type: ModificationType.MODIFY
diff: @@ -106,8 +106,8 @@ your home directory, then you would type the following commands in a
 terminal window to extract and run ExifTool:
 
   cd ~/Desktop
-  gzip -dc Image-ExifTool-12.23.tar.gz | tar -xf -
-  cd Image-ExifTool-12.23
+  gzip -dc Image-ExifTool-12.24.tar.gz | tar -xf -
+  cd Image-ExifTool-12.24
   ./exiftool t/images/ExifTool.jpg
 
 Note:  These commands extract meta information from one of the test images. 

programming_language: Markdown
filename: acdsee.config
change_type: ModificationType.MODIFY
diff: @@ -2,20 +2,76 @@
 # File:         acdsee.config
 #
 # Description:  This config file defines ACDSee XMP region tags for writing.
+#               The following tags are created in the XMP-acdsee-rs group
 #
-# Usage:        exiftool -config acdsee.config -ACDSEETAG=VALUE FILE ...
+#                   RegionInfoACDSee : The structured tag for the ACDSee regions
+#                                      (similar to XMP-mwg-rs:RegionInfo)
+#
+#                   The following tags are the width, height, and unit of the
+#                   image at the time of processing  when storing image region
+#                   metadata.  They are similar to the AppliedToDimensions tags
+#                   of the MWG regions.
+#                       ACDSeeRegionAppliedToDimensionsH : Height of the image
+#                       ACDSeeRegionAppliedToDimensionsUnit : Unit of the image
+#                       ACDSeeRegionAppliedToDimensionsW : Width of the image
+#
+#                   Actual region data, stored in an array.  These flattened tags
+#                   are treated as List Type tags.  There are two region types,
+#                   the ALYArea and the DLYArea.  The ALYArea tags tags assigned
+#                   by ACDSee and are usually square in dimensions.  The DLYArea
+#                   tags are both the tags assigned by ACDSee (but possibly
+#                   rectangular instead of square) as well as any  manual
+#                   assigned tags.  They are similar to the area tags of the MWG
+#                   regions.
+#                       ACDSeeRegionDLYAreaH : Height of DLY region
+#                       ACDSeeRegionDLYAreaW : Width of DLY region
+#                       ACDSeeRegionDLYAreaX : X centerpoint of DLY region
+#                       ACDSeeRegionDLYAreaY : Y centerpoint of DLY region
+#                       ACDSeeRegionALYAreaH : Height of ALY region
+#                       ACDSeeRegionALYAreaW : Width of ALY region
+#                       ACDSeeRegionALYAreaX : X centerpoint of ALY region
+#                       ACDSeeRegionALYAreaY : Y centerpoint of ALY region
+#                       ACDSeeRegionName : Name of region
+#                       ACDSeeRegionType : Type of region
+#                       ACDSeeRegionNameAssignType : How the type was assigned.
+#                                                    "Manual" is the only known
+#                                                    entry at this time
+#
+#               Conversion tags.  These tags can be used to convert other region
+#               type tags to ACDSee regions.
+#                   MPRegion2ACDSeeRegion : Converts a Microsoft RegionInfoMP
+#                   IPTCRegion2ACDSeeRegion : Converts an IPTC ImageRegion
+#                   MWGRegion2ACDSeeRegion : Converts a MWG RegionInfo
+#
+# Usage:        To set individual tags
+#               exiftool -config acdsee.config -ACDSEETAG=VALUE FILE ...
+#
+#               To convert Microsoft Regions to ACDSee regions
+#               exiftool -config acdsee.config "-RegionInfoACDSee<MPRegion2ACDSeeRegion" File ...
+#               To convert IPTC regions to ACDSee regions
+#               exiftool -config acdsee.config "-RegionInfoACDSee<IPTCRegion2ACDSeeRegion" File ...
+#               To convert MWG Regions to ACDSee regions
+#               exiftool -config acdsee.config "-RegionInfoACDSee<MWGRegion2ACDSeeRegion" File ...
 #
 # Requires:     ExifTool version 10.28 or later
 #
 # Revisions:    2020/01/28 - Bryan K. Williams (aka StarGeek) Created
+#               2021/04/08 - BKW Added tags to convert from Microsoft, IPTC,
+#                            and MWG regions to ACDSee regions based upon
+#                            convert_regions.config.  Expanded docs.
+#                            Shortened ADCSee tag names and added shortcuts
+#                            from original names to new names, for example
+#                            "RegionInfoACDSeeAppliedToDimensions*" -> "ACDSeeRegionAppliedToDimensions*"
+#                            "RegionInfoACDSeeRegionList* -> "ACDSeeRegion*"
 #------------------------------------------------------------------------------
+use Data::Dumper;
 
 my %sACDSeeDimensions = (
     STRUCT_NAME => 'ACDSee Dimensions',
     NAMESPACE   => {'acdsee-stDim' => 'http://ns.acdsee.com/sType/Dimensions#'},
-    'w'           => { Writable => 'real' },
-    'h'           => { Writable => 'real' },
-    'unit'        => { },
+    'w'         => { Writable => 'real' },
+    'h'         => { Writable => 'real' },
+    'unit'      => { },
 );
 
 my %sACDSeeArea = (
@@ -38,7 +94,7 @@ my %sACDSeeRegionStruct = (
 );
 
 %Image::ExifTool::UserDefined = (
-    # new XMP namespaces (eg. xxx) must be added to the Main XMP table:
+    # new XMP namespaces for ACDSee regions
     'Image::ExifTool::XMP::Main' => {
         'acdsee-rs' => { # <-- must be the same as the NAMESPACE prefix
             SubDirectory => { 
@@ -46,6 +102,112 @@ my %sACDSeeRegionStruct = (
             },
         },
     },
+    'Image::ExifTool::Composite' => {
+    # create an ACDSee RegionInfo structure from a Microsoft RegionInfoMP structure
+        MPRegion2ACDSeeRegion => {
+            Require => {
+                0 => 'RegionInfoMP',
+                1 => 'ImageWidth',
+                2 => 'ImageHeight',
+            },
+            ValueConv => q{
+                my ($rgn, @newRgns);
+                foreach $rgn (@{$val[0]{Regions}}) {
+                    my $name = $$rgn{PersonDisplayName};
+                    next unless $$rgn{Rectangle} or defined $name;
+                    my %newRgn = ( Type => 'Face' );
+                    if (defined $name) {
+                        # don't add ignored faces
+                        next if $name eq 'ffffffffffffffff';
+                        $newRgn{Name} = $name;
+                    }
+                    if ($$rgn{Rectangle}) {
+                        my @rect = split /\s*,\s*/, $$rgn{Rectangle};
+                        $newRgn{DLYArea} = {
+                            X => $rect[0] + $rect[2]/2,
+                            Y => $rect[1] + $rect[3]/2,
+                            W => $rect[2],
+                            H => $rect[3],
+                        } if @rect == 4;
+                    }
+                    push @newRgns, \%newRgn;
+                }
+                return {
+                    AppliedToDimensions => { W => $val[1], H => $val[2], Unit => 'pixel' },
+                    RegionList => \@newRgns,
+                };
+            },
+        },
+        # create an ACDSee RegionInfo structure from an IPTC ImageRegion list
+        IPTCRegion2ACDSeeRegion => {
+            Require => {
+                0 => 'ImageRegion',
+                1 => 'ImageWidth',
+                2 => 'ImageHeight',
+            },
+            ValueConv => q{
+                my ($rgn, @newRgns);
+                my $rgns = ref $val[0] eq 'ARRAY' ? $val[0] : [ $val[0] ]; 
+                foreach $rgn (@$rgns) {
+                    my %newRgn = ( Type => 'Face' );
+                    if ($$rgn{RegionBoundary} and $$rgn{RegionBoundary}{RbShape} eq 'rectangle') {
+                        my @rect = @{$$rgn{RegionBoundary}}{'RbX','RbY','RbW','RbH'};
+                        if ($$rgn{RegionBoundary}{RbUnit} eq 'pixel') {
+                            $rect[0] /= $val[1],  $rect[2] /= $val[1];
+                            $rect[1] /= $val[2];  $rect[3] /= $val[2];
+                        }
+                        $newRgn{'DLYArea'} = {
+                            X => $rect[0] + $rect[2]/2,
+                            Y => $rect[1] + $rect[3]/2,
+                            W => $rect[2],
+                            H => $rect[3],
+                        };
+                    } else {
+                        next unless defined $$rgn{Name};
+                    }
+                    $newRgn{Name} = $$rgn{Name} if defined $$rgn{Name};
+                    push @newRgns, \%newRgn;
+                }
+                return {
+                    AppliedToDimensions => { 'W' => $val[1], 'H' => $val[2], 'Unit' => 'pixel' },
+                    RegionList => \@newRgns,
+                };
+            },
+        },
+
+        # create an MWG RegionInfo structure from an IPTC ImageRegion list
+        MWGRegion2ACDSeeRegion => {
+            Require => {
+                0 => 'RegionInfo',
+                1 => 'ImageWidth',
+                2 => 'ImageHeight',
+            },
+            ValueConv => q{
+                my ($rgn, @newRgns);
+                my %newRgn;
+                foreach $rgn (@{$val[0]{RegionList}}) {
+                    next unless $$rgn{Area} or defined $$rgn{Name};
+                    my %newRgn;
+                    if ($$rgn{Area}) {
+                        $newRgn{'DLYArea'} = {
+                            'X' => $$rgn{Area}{'X'},
+                            'Y' => $$rgn{Area}{'Y'},
+                            'W' => $$rgn{Area}{'W'},
+                            'H' => $$rgn{Area}{'H'},
+                        };
+                    };
+                    $newRgn{Name} = $$rgn{Name} if defined $$rgn{Name};
+                    $newRgn{'Type'} = $$rgn{'Type'} if defined $$rgn{'Type'};
+                    push @newRgns, \%newRgn;
+                }
+                return {
+                    'AppliedToDimensions' => $val[0]{'AppliedToDimensions'},
+                    RegionList => \@newRgns,
+                }
+            },
+        },
+        ####
+    },
 );
 
 %Image::ExifTool::UserDefined::ACDSeeRegions = (
@@ -54,18 +216,43 @@ my %sACDSeeRegionStruct = (
     WRITABLE => 'string', # (default to string-type tags)
     Regions => {
         Name => 'RegionInfoACDSee',
+        FlatName => 'ACDSee',
         # the "Struct" entry defines the structure fields
         Struct => {
             # optional structure name (used for warning messages only)
             STRUCT_NAME => 'ACDSee RegionInfo',        
             RegionList => {
+                FlatName => 'Region',
                 Struct => \%sACDSeeRegionStruct,
                 List => 'Bag',
             },
-            AppliedToDimensions => { Struct => \%sACDSeeDimensions },
+            AppliedToDimensions => { 
+            FlatName => 'RegionAppliedToDimensions',Struct => \%sACDSeeDimensions },
         },
     },
 );
 
+# Shortcuts to old names added so as not to break previously used commands
+%Image::ExifTool::UserDefined::Shortcuts = (
+    RegionInfoACDSeeAppliedToDimensionsH        => 'ACDSeeRegionAppliedToDimensionsH',
+    RegionInfoACDSeeAppliedToDimensionsUnit     => 'ACDSeeRegionAppliedToDimensionsUnit',
+    RegionInfoACDSeeAppliedToDimensionsW        => 'ACDSeeRegionAppliedToDimensionsW',
+    RegionInfoACDSeeRegionListDLYAreaH          => 'ACDSeeRegionDLYAreaH',
+    RegionInfoACDSeeRegionListDLYAreaW          => 'ACDSeeRegionDLYAreaW',
+    RegionInfoACDSeeRegionListDLYAreaX          => 'ACDSeeRegionDLYAreaX',  
+    RegionInfoACDSeeRegionListDLYAreaY          => 'ACDSeeRegionDLYAreaY',
+    RegionInfoACDSeeRegionListALGAreaH          => 'ACDSeeRegionALGAreaH',
+    RegionInfoACDSeeRegionListALGAreaW          => 'ACDSeeRegionALGAreaW',
+    RegionInfoACDSeeRegionListALGAreaX          => 'ACDSeeRegionALGAreaX',
+    RegionInfoACDSeeRegionListALGAreaY          => 'ACDSeeRegionALGAreaY',
+    RegionInfoACDSeeRegionListName              => 'ACDSeeRegionName',
+    RegionInfoACDSeeRegionListType              => 'ACDSeeRegionType',
+    RegionInfoACDSeeRegionListNameAssignType    => 'ACDSeeRegionNameAssignType',
+);
+
+# Forced -struct option during debugging
+#%Image::ExifTool::UserDefined::Options = (
+#   Struct => 1,
+#);
 #------------------------------------------------------------------------------
 1;  #end
\ No newline at end of file

programming_language: Perl
filename: exiftool
change_type: ModificationType.MODIFY
diff: @@ -10,7 +10,7 @@
 use strict;
 require 5.004;
 
-my $version = '12.23';
+my $version = '12.24';
 
 # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
 my $exeDir;
@@ -5393,7 +5393,7 @@ with this command:
 
 produces output like this:
 
-    -- Generated by ExifTool 12.23 --
+    -- Generated by ExifTool 12.24 --
     File: a.jpg - 2003:10:31 15:44:19
     (f/5.6, 1/60s, ISO 100)
     File: b.jpg - 2006:05:23 11:57:38

programming_language: Perl
filename: ExifTool.html
change_type: ModificationType.MODIFY
diff: @@ -429,7 +429,7 @@ numerical options.</p>
     specifically requested by name.</td>
     <td align=center>0 or 1</td><td align=center>undef</td></tr>
 <tr id="BlockExtract"><td>BlockExtract</td><td>Flag to extract some directories
-    (mentioned in the Tag Name documentation) as a block.</td>
+    (mentioned in the <a href="TagNames/index.html">Tag Name documentation</a>) as a block.</td>
     <td align=center><table class=clear>
     <tr><td valign=top align=right><b>0</b>&nbsp;=</td><td>Extract as block only if tag specified by name</td></tr>
     <tr><td valign=top align=right><b>1</b>&nbsp;=</td><td>Extract as block, and extract contained tags</td></tr>
@@ -787,7 +787,7 @@ numerical options.</p>
     This causes some tags to be generated which normally would not be unless specifically
     requested (by passing the tag name to <a href="#ImageInfo">ImageInfo</a> or
     <a href="#ExtractInfo">ExtractInfo</a>).  May be set to 2 or 3 to enable generation
-    of some additional tags as mentioned in the tag name documentation.</td>
+    of some additional tags as mentioned in the <a href="TagNames/index.html">Tag Name documentation</a>.</td>
     <td align=center>0, 1, 2 or 3</td><td align=center>undef</td></tr>
 <tr id="RequestTags"><td>RequestTags</td><td>List of additional tag and/or group names
     to request in the next call to <a href="#ExtractInfo">ExtractInfo</a>. This option is

programming_language: HTML
filename: ExifTool.pdf
change_type: ModificationType.MODIFY
diff: @@ -12,7 +12,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     1)Tj
+(                           -- Image::ExifTool 12.24 --                                     1)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (EXIFTOOL\(1\)           User Contributed Perl Documentation          EXIFTOOL\(1\))Tj
@@ -189,7 +189,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     2)Tj
+(                           -- Image::ExifTool 12.24 --                                     2)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (         ARW   r/w   | EXV   r/w/c | M2TS  r     | PBM   r/w   | SRW   r/w)Tj
@@ -384,7 +384,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     3)Tj
+(                           -- Image::ExifTool 12.24 --                                     3)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       be exported with the ":Public" export list.)Tj
@@ -619,7 +619,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     4)Tj
+(                           -- Image::ExifTool 12.24 --                                     4)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (               Advantages of using the object-oriented form are that options)Tj
@@ -770,7 +770,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     5)Tj
+(                           -- Image::ExifTool 12.24 --                                     5)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (               "Sort" settings the entries may not be in the same order as)Tj
@@ -955,7 +955,7 @@ endobj
 endobj
 21 0 obj
 <<
-/Length 3832
+/Length 3828
 >>
 stream
 BT
@@ -965,7 +965,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     6)Tj
+(                           -- Image::ExifTool 12.24 --                                     6)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (           As well as tags representing information extracted from the image,)Tj
@@ -1080,13 +1080,13 @@ T*
 0 -2.2 TD
 (           BlockExtract)Tj
 0 -1.1 TD
-(               Flag to extract some directories \(mentioned in the Tag Name)Tj
+(               Flag to extract some directories \(mentioned in the ExifTool tag)Tj
 T*
-(               documentation\) as a block.  Setting this to a value of 2 also)Tj
+(               name documentation\) as a block.  Setting this to a value of 2)Tj
 T*
-(               prevents parsing the block to extract tags contained within.)Tj
-0 -2.2 TD
-(           ByteOrder)Tj
+(               also prevents parsing the block to extract tags contained)Tj
+T*
+(               within.)Tj
 ET
 endstream
 endobj
@@ -1104,7 +1104,7 @@ endobj
 endobj
 24 0 obj
 <<
-/Length 4804
+/Length 4742
 >>
 stream
 BT
@@ -1114,11 +1114,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     7)Tj
+(                           -- Image::ExifTool 12.24 --                                     7)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(               The byte order for newly created EXIF segments when writing.)Tj
+(           ByteOrder)Tj
 0 -1.1 TD
+(               The byte order for newly created EXIF segments when writing.)Tj
+T*
 (               Note that if EXIF information already exists, the existing)Tj
 T*
 (               order is maintained.  Valid values are 'MM', 'II' and undef.)Tj
@@ -1238,8 +1240,6 @@ T*
 (               information contains no CodedCharacterSet tag.  Possible values)Tj
 T*
 (               are the same as the "Charset" option.  Default is 'Latin'.)Tj
-0 -2.2 TD
-(               Note that this option affects some types of information when)Tj
 ET
 endstream
 endobj
@@ -1257,7 +1257,7 @@ endobj
 endobj
 27 0 obj
 <<
-/Length 4420
+/Length 4413
 >>
 stream
 BT
@@ -1267,11 +1267,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     8)Tj
+(                           -- Image::ExifTool 12.24 --                                     8)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(               reading/writing the file and other types when getting/setting)Tj
+(               Note that this option affects some types of information when)Tj
 0 -1.1 TD
+(               reading/writing the file and other types when getting/setting)Tj
+T*
 (               tag values, so it must be defined for both types of access.)Tj
 0 -2.2 TD
 (           CharsetPhotoshop)Tj
@@ -1385,8 +1387,6 @@ T*
 (               "SetNewValuesFromFile".)Tj
 0 -2.2 TD
 (           DateFormat)Tj
-0 -1.1 TD
-(               Format for printing date/time values.  See "strftime" in the)Tj
 ET
 endstream
 endobj
@@ -1404,7 +1404,7 @@ endobj
 endobj
 30 0 obj
 <<
-/Length 4972
+/Length 4970
 >>
 stream
 BT
@@ -1414,11 +1414,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     9)Tj
+(                           -- Image::ExifTool 12.24 --                                     9)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(               POSIX package for details about the format string.  If date can)Tj
+(               Format for printing date/time values.  See "strftime" in the)Tj
 0 -1.1 TD
+(               POSIX package for details about the format string.  If date can)Tj
+T*
 (               not be converted, value is left unchanged unless the StrictDate)Tj
 T*
 (               option is set.  Timezones are ignored.  The inverse conversion)Tj
@@ -1540,8 +1542,6 @@ T*
 (               always writes it before because some utilities will ignore it)Tj
 T*
 (               otherwise.\)  When set to 3 or higher, only pseudo system tags)Tj
-T*
-(               and FileType are generated.  For 3, the file header is read to)Tj
 ET
 endstream
 endobj
@@ -1559,7 +1559,7 @@ endobj
 endobj
 33 0 obj
 <<
-/Length 4475
+/Length 4500
 >>
 stream
 BT
@@ -1569,11 +1569,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    10)Tj
+(                           -- Image::ExifTool 12.24 --                                    10)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(               provide an educated guess at FileType.  For 4, the file is not)Tj
+(               and FileType are generated.  For 3, the file header is read to)Tj
 0 -1.1 TD
+(               provide an educated guess at FileType.  For 4, the file is not)Tj
+T*
 (               read at all and FileType is determined based on the file's)Tj
 T*
 (               extension.  For 5, generation of Composite tags is also)Tj
@@ -1689,8 +1691,6 @@ T*
 (           GeoSpeedRef)Tj
 0 -1.1 TD
 (               Reference units for writing GPSSpeed when geotagging:)Tj
-0 -2.2 TD
-(                   'K', 'k' or 'km/h'  - km/h)Tj
 ET
 endstream
 endobj
@@ -1708,7 +1708,7 @@ endobj
 endobj
 36 0 obj
 <<
-/Length 4726
+/Length 4721
 >>
 stream
 BT
@@ -1718,11 +1718,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    11)Tj
+(                           -- Image::ExifTool 12.24 --                                    11)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(                   'M', 'm' or 'mph'   - mph)Tj
+(                   'K', 'k' or 'km/h'  - km/h)Tj
 0 -1.1 TD
+(                   'M', 'm' or 'mph'   - mph)Tj
+T*
 (                   <anything else>     - knots \(default undef\))Tj
 0 -2.2 TD
 (           GlobalTimeShift)Tj
@@ -1882,8 +1884,6 @@ T*
 (               type tags into a single string.  If not defined, multi-item)Tj
 T*
 (               lists are returned as a list reference.  Does not affect)Tj
-T*
-(               ValueConv values.  Default is ', '.)Tj
 ET
 endstream
 endobj
@@ -1901,7 +1901,7 @@ endobj
 endobj
 41 0 obj
 <<
-/Length 4332
+/Length 4308
 >>
 stream
 BT
@@ -1911,9 +1911,11 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    12)Tj
+(                           -- Image::ExifTool 12.24 --                                    12)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(               ValueConv values.  Default is ', '.)Tj
+0 -2.2 TD
 (           ListSplit)Tj
 0 -1.1 TD
 (               Regular expression used to split values of list-type tags into)Tj
@@ -2027,8 +2029,6 @@ T*
 (               QuickTime specification.)Tj
 0 -2.2 TD
 (           RequestAll)Tj
-0 -1.1 TD
-(               Flag to request all tags to be extracted.  This causes some)Tj
 ET
 endstream
 endobj
@@ -2046,7 +2046,7 @@ endobj
 endobj
 44 0 obj
 <<
-/Length 4470
+/Length 4459
 >>
 stream
 BT
@@ -2056,11 +2056,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    13)Tj
+(                           -- Image::ExifTool 12.24 --                                    13)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(               tags to be generated which normally would not be unless)Tj
+(               Flag to request all tags to be extracted.  This causes some)Tj
 0 -1.1 TD
+(               tags to be generated which normally would not be unless)Tj
+T*
 (               specifically requested \(by passing the tag name to "ImageInfo")Tj
 T*
 (               or "ExtractInfo"\).  May be set to 2 or 3 to enable generation)Tj
@@ -2172,8 +2174,6 @@ T*
 (               successfully convert the value.)Tj
 0 -2.2 TD
 (               For PNG CreationTime, a setting of 1 has the additional effect)Tj
-0 -1.1 TD
-(               of causing the date/time to be reformatted according to PNG 1.2)Tj
 ET
 endstream
 endobj
@@ -2191,7 +2191,7 @@ endobj
 endobj
 47 0 obj
 <<
-/Length 4239
+/Length 4325
 >>
 stream
 BT
@@ -2201,11 +2201,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    14)Tj
+(                           -- Image::ExifTool 12.24 --                                    14)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(               recommendation \(RFC-1123\) when writing, and a warning to be)Tj
+(               of causing the date/time to be reformatted according to PNG 1.2)Tj
 0 -1.1 TD
+(               recommendation \(RFC-1123\) when writing, and a warning to be)Tj
+T*
 (               issued for any non-standard value when reading \(but note that)Tj
 T*
 (               Windows may not recognize PNG date/time values in standard)Tj
@@ -2346,7 +2348,7 @@ endobj
 endobj
 50 0 obj
 <<
-/Length 4249
+/Length 4218
 >>
 stream
 BT
@@ -2356,9 +2358,9 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    15)Tj
+(                           -- Image::ExifTool 12.24 --                                    15)Tj
 /TT4 1 Tf
-0 -1.6333 TD
+0 -2.7333 TD
 (           Verbose)Tj
 0 -1.1 TD
 (               Print verbose messages to file specified by TextOut option.)Tj
@@ -2514,8 +2516,6 @@ T*
 (           1904 time zero\), RequestAll, RequestTags, SaveFormat, SavePath,)Tj
 T*
 (           ScanForXMP, Struct, TextOut, Unknown, Verbose, XAttrTags and)Tj
-T*
-(           XMPAutoConv.)Tj
 ET
 endstream
 endobj
@@ -2533,7 +2533,7 @@ endobj
 endobj
 53 0 obj
 <<
-/Length 4130
+/Length 4168
 >>
 stream
 BT
@@ -2543,9 +2543,11 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    16)Tj
+(                           -- Image::ExifTool 12.24 --                                    16)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(           XMPAutoConv.)Tj
+0 -2.2 TD
 (       Return Value:)Tj
 0 -1.1 TD
 (           1 if this was a recognized file format, 0 otherwise \(and 'Error')Tj
@@ -2698,7 +2700,7 @@ endobj
 endobj
 56 0 obj
 <<
-/Length 4045
+/Length 4009
 >>
 stream
 BT
@@ -2708,9 +2710,9 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    17)Tj
+(                           -- Image::ExifTool 12.24 --                                    17)Tj
 /TT4 1 Tf
-0 -1.6333 TD
+0 -2.7333 TD
 (       Inputs:)Tj
 0 -1.1 TD
 (           0\) ExifTool object reference)Tj
@@ -2834,8 +2836,6 @@ T*
 (           1\) [optional] Information hash reference or tag list reference)Tj
 T*
 (           2\) [optional] Sort order \('Input', 'File', 'Tag', 'Descr' or)Tj
-0 -1.1 TD
-(           'Group#'\))Tj
 ET
 endstream
 endobj
@@ -2853,7 +2853,7 @@ endobj
 endobj
 59 0 obj
 <<
-/Length 4391
+/Length 4352
 >>
 stream
 BT
@@ -2863,11 +2863,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    18)Tj
+(                           -- Image::ExifTool 12.24 --                                    18)Tj
 /TT4 1 Tf
-0 -2.7333 TD
-(           3\) [optional] Secondary sort order \('File', 'Tag' or 'Descr'\))Tj
+0 -1.6333 TD
+(           'Group#'\))Tj
 0 -2.2 TD
+(           3\) [optional] Secondary sort order \('File', 'Tag' or 'Descr'\))Tj
+T*
 (           If the information hash or tag list reference is not provided, then)Tj
 0 -1.1 TD
 (           the list of found tags from the last call to "ImageInfo",)Tj
@@ -3041,8 +3043,6 @@ T*
 (       Note that "GetValue" requires a case-sensitive tag key as an argument.)Tj
 0 -1.1 TD
 (       To retrieve tag information based on a case-insensitive tag name \(with)Tj
-T*
-(       an optional group specifier\), use "GetInfo" instead.)Tj
 ET
 endstream
 endobj
@@ -3060,7 +3060,7 @@ endobj
 endobj
 62 0 obj
 <<
-/Length 3962
+/Length 3961
 >>
 stream
 BT
@@ -3070,9 +3070,11 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    19)Tj
+(                           -- Image::ExifTool 12.24 --                                    19)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(       an optional group specifier\), use "GetInfo" instead.)Tj
+0 -2.2 TD
 (           # PrintConv example)Tj
 0 -1.1 TD
 (           my $val = $exifTool->GetValue\($tag\);)Tj
@@ -3204,8 +3206,6 @@ T*
 (       values.)Tj
 0 -2.2 TD
 (           # set a new value for a tag \(errors go to STDERR\))Tj
-0 -1.1 TD
-(           $success = $exifTool->SetNewValue\($tag, $value\);)Tj
 ET
 endstream
 endobj
@@ -3223,7 +3223,7 @@ endobj
 endobj
 65 0 obj
 <<
-/Length 4036
+/Length 4027
 >>
 stream
 BT
@@ -3233,9 +3233,11 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    20)Tj
+(                           -- Image::ExifTool 12.24 --                                    20)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(           $success = $exifTool->SetNewValue\($tag, $value\);)Tj
+0 -2.2 TD
 (           # set a new value and capture any error message)Tj
 0 -1.1 TD
 (           \($success, $errStr\) = $exifTool->SetNewValue\($tag, $value\);)Tj
@@ -3339,8 +3341,6 @@ T*
 (           2 group names with optional leading family numbers, separated by)Tj
 T*
 (           colons \(eg. 'EXIF:Artist', 'XMP:Time:*'\), which is equivalent to)Tj
-T*
-(           using a Group option argument.  Also, a '#' may be appended to the)Tj
 ET
 endstream
 endobj
@@ -3368,11 +3368,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    21)Tj
+(                           -- Image::ExifTool 12.24 --                                    21)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           tag name \(eg. 'EXIF:Orientation#'\), with the same effect as setting)Tj
+(           using a Group option argument.  Also, a '#' may be appended to the)Tj
 0 -1.1 TD
+(           tag name \(eg. 'EXIF:Orientation#'\), with the same effect as setting)Tj
+T*
 (           Type to 'ValueConv'.  Wildcards \('*' and '?'\) may be used in the)Tj
 T*
 (           tag name to assign multiple tags simultaneously.  A tag name of '*')Tj
@@ -3488,8 +3490,6 @@ T*
 (               'protected' tags, and should only be used internally by)Tj
 T*
 (               ExifTool.  See Image::ExifTool::TagNames, for a list of tag)Tj
-T*
-(               names indicating 'unsafe' and 'protected' tags.  Default is 0.)Tj
 ET
 endstream
 endobj
@@ -3517,9 +3517,11 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    22)Tj
+(                           -- Image::ExifTool 12.24 --                                    22)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(               names indicating 'unsafe' and 'protected' tags.  Default is 0.)Tj
+0 -2.2 TD
 (           ProtectSaved)Tj
 0 -1.1 TD
 (               Avoid setting new values which were saved after the Nth call to)Tj
@@ -3695,8 +3697,6 @@ T*
 (       Inputs:)Tj
 0 -1.1 TD
 (           0\) ExifTool object reference)Tj
-0 -2.2 TD
-(           1\) Tag name \(case sensitive, may be prefixed by family 0, 1 or 7)Tj
 ET
 endstream
 endobj
@@ -3714,7 +3714,7 @@ endobj
 endobj
 75 0 obj
 <<
-/Length 4649
+/Length 4656
 >>
 stream
 BT
@@ -3724,9 +3724,11 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    23)Tj
+(                           -- Image::ExifTool 12.24 --                                    23)Tj
 /TT4 1 Tf
 0 -1.6333 TD
+(           1\) Tag name \(case sensitive, may be prefixed by family 0, 1 or 7)Tj
+0 -1.1 TD
 (           group names, separated by colons\))Tj
 0 -2.2 TD
 (       Return Values:)Tj
@@ -3874,8 +3876,6 @@ T*
 (           Both 'SRCTAG' and 'DSTTAG' may contain wildcards and/or be prefixed)Tj
 T*
 (           by a group name \(eg.  'fileModifyDate<modifyDate' or 'xmp:*<*'\),)Tj
-T*
-(           and/or suffixed by a '#' to disable print conversion.  Copied tags)Tj
 ET
 endstream
 endobj
@@ -3893,7 +3893,7 @@ endobj
 endobj
 78 0 obj
 <<
-/Length 4484
+/Length 4480
 >>
 stream
 BT
@@ -3903,11 +3903,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    24)Tj
+(                           -- Image::ExifTool 12.24 --                                    24)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           may also be added or deleted from a list with arguments of the form)Tj
+(           and/or suffixed by a '#' to disable print conversion.  Copied tags)Tj
 0 -1.1 TD
+(           may also be added or deleted from a list with arguments of the form)Tj
+T*
 (           'DSTTAG+<SRCTAG' or 'DSTTAG-<SRCTAG'.  Tags are evaluated in order,)Tj
 T*
 (           so exclusions apply only to tags included earlier in the list.  An)Tj
@@ -4017,8 +4019,6 @@ T*
 (           The "Duplicates" option is always in effect for tags extracted from)Tj
 0 -1.1 TD
 (           the source file using this routine.)Tj
-0 -2.2 TD
-(           The "Struct" option is enabled by default for tags extracted by)Tj
 ET
 endstream
 endobj
@@ -4036,7 +4036,7 @@ endobj
 endobj
 81 0 obj
 <<
-/Length 4317
+/Length 4371
 >>
 stream
 BT
@@ -4046,11 +4046,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    25)Tj
+(                           -- Image::ExifTool 12.24 --                                    25)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           this routine.  This allows the hierarchy of complex structures to)Tj
+(           The "Struct" option is enabled by default for tags extracted by)Tj
 0 -1.1 TD
+(           this routine.  This allows the hierarchy of complex structures to)Tj
+T*
 (           be preserved when copying, but the Struct option may be set to 0 to)Tj
 T*
 (           override this behaviour and copy as flattened tags instead.)Tj
@@ -4268,8 +4270,6 @@ T*
 (           1 if the time was changed, 0 if nothing was done, or -1 if there)Tj
 T*
 (           was an error setting the time.)Tj
-0 -2.2 TD
-(       Notes:)Tj
 ET
 endstream
 endobj
@@ -4287,7 +4287,7 @@ endobj
 endobj
 84 0 obj
 <<
-/Length 4138
+/Length 4104
 >>
 stream
 BT
@@ -4297,11 +4297,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    26)Tj
+(                           -- Image::ExifTool 12.24 --                                    26)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           Equivalent to, but more efficient than calling "WriteInfo" when)Tj
+(       Notes:)Tj
 0 -1.1 TD
+(           Equivalent to, but more efficient than calling "WriteInfo" when)Tj
+T*
 (           only the FileModifyDate or FileCreateDate tag has been set.  If a)Tj
 T*
 (           timezone is not specified, local time is assumed.  When shifting,)Tj
@@ -4473,8 +4475,6 @@ T*
 (           @groups = $exifTool->GetNewGroups\(\);)Tj
 T*
 (       Inputs:)Tj
-0 -1.1 TD
-(           0\) ExifTool object reference)Tj
 ET
 endstream
 endobj
@@ -4492,7 +4492,7 @@ endobj
 endobj
 87 0 obj
 <<
-/Length 3762
+/Length 3733
 >>
 stream
 BT
@@ -4502,9 +4502,11 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    27)Tj
+(                           -- Image::ExifTool 12.24 --                                    27)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(           0\) ExifTool object reference)Tj
+0 -2.2 TD
 (       Return Values:)Tj
 0 -1.1 TD
 (           List of group names in order of write priority.  Highest priority)Tj
@@ -4664,8 +4666,6 @@ T*
 (           families in list context.  Returns a string of group names)Tj
 T*
 (           separated by colons if the input group family contains a colon.)Tj
-T*
-(           The string is simplified to remove a leading 'Main:' and adjacent)Tj
 ET
 endstream
 endobj
@@ -4683,7 +4683,7 @@ endobj
 endobj
 90 0 obj
 <<
-/Length 5018
+/Length 5021
 >>
 stream
 BT
@@ -4693,9 +4693,11 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    28)Tj
+(                           -- Image::ExifTool 12.24 --                                    28)Tj
 /TT4 1 Tf
 0 -1.6333 TD
+(           The string is simplified to remove a leading 'Main:' and adjacent)Tj
+0 -1.1 TD
 (           identical group names unless the family string begins with a colon.)Tj
 0 -2.2 TD
 (       Notes:)Tj
@@ -4813,8 +4815,6 @@ T*
 (           hex.  Note that unlike other group names, the tag ID's of family 7)Tj
 T*
 (           group names are case sensitive \(but the leading "ID-" is not\).)Tj
-0 -2.2 TD
-(           See "GetAllGroups [static]" for complete lists of group names.)Tj
 ET
 endstream
 endobj
@@ -4832,7 +4832,7 @@ endobj
 endobj
 93 0 obj
 <<
-/Length 4328
+/Length 4380
 >>
 stream
 BT
@@ -4842,9 +4842,11 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    29)Tj
+(                           -- Image::ExifTool 12.24 --                                    29)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(           See "GetAllGroups [static]" for complete lists of group names.)Tj
+0 -2.2 TD
 (   G)Tj
 1.8 0 TD
 (Ge)Tj
@@ -5074,8 +5076,6 @@ T*
 (       Inputs:)Tj
 0 -1.1 TD
 (           \(none\))Tj
-0 -2.2 TD
-(       Return Values:)Tj
 ET
 endstream
 endobj
@@ -5093,7 +5093,7 @@ endobj
 endobj
 96 0 obj
 <<
-/Length 4933
+/Length 4886
 >>
 stream
 BT
@@ -5103,9 +5103,11 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    30)Tj
+(                           -- Image::ExifTool 12.24 --                                    30)Tj
 /TT4 1 Tf
 0 -1.6333 TD
+(       Return Values:)Tj
+0 -1.1 TD
 (           List of shortcut tags \(as defined in Image::ExifTool::Shortcuts\).)Tj
 0 -2.2 TD
 (   G)Tj
@@ -5335,8 +5337,6 @@ T*
 (           HTML, HTML-dc, HTML-ncc, HTML-office, HTML-prod, HTML-vw96, HTTP-)Tj
 T*
 (           equiv, ICC-chrm, ICC-clrt, ICC-header, ICC-meas, ICC-meta, ICC-)Tj
-T*
-(           view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2,)Tj
 ET
 endstream
 endobj
@@ -5354,7 +5354,7 @@ endobj
 endobj
 99 0 obj
 <<
-/Length 4765
+/Length 4812
 >>
 stream
 BT
@@ -5364,11 +5364,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    31)Tj
+(                           -- Image::ExifTool 12.24 --                                    31)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360,)Tj
+(           view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2,)Tj
 0 -1.1 TD
+(           ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360,)Tj
+T*
 (           InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JSON, JUMBF, JVC,)Tj
 T*
 (           Jpeg2000, KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD,)Tj
@@ -5528,8 +5530,6 @@ T*
 (       Inputs:)Tj
 0 -1.1 TD
 (           None.)Tj
-0 -2.2 TD
-(       Return Values:)Tj
 ET
 endstream
 endobj
@@ -5547,7 +5547,7 @@ endobj
 endobj
 103 0 obj
 <<
-/Length 4949
+/Length 4896
 >>
 stream
 BT
@@ -5557,11 +5557,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    32)Tj
+(                           -- Image::ExifTool 12.24 --                                    32)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           A list of deletable group names in alphabetical order.  The current)Tj
+(       Return Values:)Tj
 0 -1.1 TD
+(           A list of deletable group names in alphabetical order.  The current)Tj
+T*
 (           list of deletable group names is:)Tj
 0 -2.2 TD
 (           Adobe, AFCP, APP0, APP1, APP10, APP11, APP12, APP13, APP14, APP15,)Tj
@@ -5771,8 +5773,6 @@ T*
 (])Tj
 -12 -1.1 TD
 (       Can the specified file be created?)Tj
-0 -2.2 TD
-(           my $creatable = Image::ExifTool::CanCreate\($filename\);)Tj
 ET
 endstream
 endobj
@@ -5790,7 +5790,7 @@ endobj
 endobj
 106 0 obj
 <<
-/Length 4693
+/Length 4690
 >>
 stream
 BT
@@ -5800,9 +5800,11 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    33)Tj
+(                           -- Image::ExifTool 12.24 --                                    33)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(           my $creatable = Image::ExifTool::CanCreate\($filename\);)Tj
+0 -2.2 TD
 (       Inputs:)Tj
 0 -1.1 TD
 (           0\) File name or extension)Tj
@@ -6002,8 +6004,6 @@ T*
 (           character i/o routines if Win32API::File is available.)Tj
 0 -2.2 TD
 (       Internal Character Sets:)Tj
-0 -1.1 TD
-(           The encodings used to store strings in the various metadata)Tj
 ET
 endstream
 endobj
@@ -6021,7 +6021,7 @@ endobj
 endobj
 109 0 obj
 <<
-/Length 5318
+/Length 5396
 >>
 stream
 BT
@@ -6031,11 +6031,13 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    34)Tj
+(                           -- Image::ExifTool 12.24 --                                    34)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           formats.  These encodings may be changed for certain types of)Tj
+(           The encodings used to store strings in the various metadata)Tj
 0 -1.1 TD
+(           formats.  These encodings may be changed for certain types of)Tj
+T*
 (           metadata via the "CharsetEXIF", "CharsetID3", "CharsetIPTC",)Tj
 T*
 (           "CharsetPhotoshop", "CharsetQuickTime" and "CharsetRIFF" options.)Tj
@@ -6228,7 +6230,7 @@ endobj
 endobj
 112 0 obj
 <<
-/Length 4720
+/Length 4692
 >>
 stream
 BT
@@ -6238,9 +6240,9 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    35)Tj
+(                           -- Image::ExifTool 12.24 --                                    35)Tj
 /TT4 1 Tf
-0 -1.6333 TD
+0 -2.7333 TD
 (         exiftool -tagsfromfile @ -iptc:all -codedcharacterset=utf8 \\)Tj
 0 -1.1 TD
 (         -charset iptc=latin2 a.jpg)Tj
@@ -6418,8 +6420,6 @@ T*
 (       this to UTF-8, but the internal and external character sets may be)Tj
 T*
 (       specified with the "CharsetPhotoshop" and "Charset" options)Tj
-T*
-(       respectively.)Tj
 ET
 endstream
 endobj
@@ -6437,7 +6437,7 @@ endobj
 endobj
 115 0 obj
 <<
-/Length 5222
+/Length 5257
 >>
 stream
 BT
@@ -6447,9 +6447,11 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    36)Tj
+(                           -- Image::ExifTool 12.24 --                                    36)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(       respectively.)Tj
+0 -2.2 TD
 (   Q)Tj
 1.8 0 TD
 (Qu)Tj
@@ -6860,7 +6862,7 @@ T*
 0.6 0 TD
 (G\(3pm\))Tj
 -27 -4.4 TD
-(perl v5.18.4                      2021-04-01                       EXIFTOOL\(1\))Tj
+(perl v5.18.4                      2021-04-13                       EXIFTOOL\(1\))Tj
 ET
 endstream
 endobj
@@ -7296,8 +7298,8 @@ endobj
 endobj
 121 0 obj
 <<
-/CreationDate (D:20210401142149-04'00')
-/ModDate (D:20210401142149-04'00')
+/CreationDate (D:20210413110922-04'00')
+/ModDate (D:20210413110922-04'00')
 /Producer (Apple pstopdf)
 >>
 endobj
@@ -7311,135 +7313,135 @@ endobj
 xref
 0 123
 0000000000 65535 f 
-0000170483 00000 n 
+0000170479 00000 n 
 0000000016 00000 n 
 0000004112 00000 n 
-0000169484 00000 n 
-0000169885 00000 n 
-0000168949 00000 n 
-0000173585 00000 n 
-0000170563 00000 n 
+0000169480 00000 n 
+0000169881 00000 n 
+0000168945 00000 n 
+0000173581 00000 n 
+0000170559 00000 n 
 0000004218 00000 n 
 0000009568 00000 n 
-0000170644 00000 n 
+0000170640 00000 n 
 0000009675 00000 n 
 0000014402 00000 n 
-0000170727 00000 n 
+0000170723 00000 n 
 0000014509 00000 n 
 0000019439 00000 n 
-0000170810 00000 n 
+0000170806 00000 n 
 0000019546 00000 n 
 0000024260 00000 n 
-0000170893 00000 n 
+0000170889 00000 n 
 0000024367 00000 n 
-0000028252 00000 n 
-0000170976 00000 n 
-0000028359 00000 n 
-0000033216 00000 n 
-0000171059 00000 n 
-0000033323 00000 n 
-0000037796 00000 n 
-0000171142 00000 n 
-0000037903 00000 n 
-0000042928 00000 n 
-0000171225 00000 n 
-0000043035 00000 n 
-0000047563 00000 n 
-0000171308 00000 n 
-0000047670 00000 n 
-0000052449 00000 n 
-0000174111 00000 n 
-0000173720 00000 n 
-0000171392 00000 n 
-0000052556 00000 n 
-0000056941 00000 n 
-0000171476 00000 n 
-0000057048 00000 n 
-0000061571 00000 n 
-0000171560 00000 n 
-0000061678 00000 n 
-0000065970 00000 n 
-0000171644 00000 n 
-0000066077 00000 n 
-0000070379 00000 n 
-0000171728 00000 n 
-0000070486 00000 n 
-0000074669 00000 n 
-0000171812 00000 n 
-0000074776 00000 n 
-0000078874 00000 n 
-0000171896 00000 n 
-0000078981 00000 n 
-0000083425 00000 n 
-0000171980 00000 n 
-0000083532 00000 n 
-0000087547 00000 n 
-0000172064 00000 n 
-0000087654 00000 n 
-0000091743 00000 n 
-0000172148 00000 n 
-0000091850 00000 n 
-0000096542 00000 n 
-0000173858 00000 n 
-0000172232 00000 n 
-0000096649 00000 n 
-0000101295 00000 n 
-0000172316 00000 n 
-0000101402 00000 n 
-0000106104 00000 n 
-0000172400 00000 n 
-0000106211 00000 n 
-0000110748 00000 n 
-0000172484 00000 n 
-0000110855 00000 n 
-0000115225 00000 n 
-0000172568 00000 n 
-0000115332 00000 n 
-0000119523 00000 n 
-0000172652 00000 n 
-0000119630 00000 n 
-0000123445 00000 n 
-0000172736 00000 n 
-0000123552 00000 n 
-0000128623 00000 n 
-0000172820 00000 n 
-0000128730 00000 n 
-0000133111 00000 n 
-0000172904 00000 n 
-0000133218 00000 n 
-0000138204 00000 n 
-0000172988 00000 n 
-0000138311 00000 n 
-0000143129 00000 n 
-0000173996 00000 n 
-0000173074 00000 n 
-0000143237 00000 n 
-0000148240 00000 n 
-0000173162 00000 n 
-0000148348 00000 n 
-0000153095 00000 n 
-0000173250 00000 n 
-0000153203 00000 n 
-0000158575 00000 n 
-0000173338 00000 n 
-0000158683 00000 n 
-0000163457 00000 n 
-0000173426 00000 n 
-0000163565 00000 n 
-0000168841 00000 n 
-0000169089 00000 n 
-0000169292 00000 n 
-0000173514 00000 n 
-0000173543 00000 n 
-0000174217 00000 n 
-0000174341 00000 n 
+0000028248 00000 n 
+0000170972 00000 n 
+0000028355 00000 n 
+0000033150 00000 n 
+0000171055 00000 n 
+0000033257 00000 n 
+0000037723 00000 n 
+0000171138 00000 n 
+0000037830 00000 n 
+0000042853 00000 n 
+0000171221 00000 n 
+0000042960 00000 n 
+0000047513 00000 n 
+0000171304 00000 n 
+0000047620 00000 n 
+0000052394 00000 n 
+0000174107 00000 n 
+0000173716 00000 n 
+0000171388 00000 n 
+0000052501 00000 n 
+0000056862 00000 n 
+0000171472 00000 n 
+0000056969 00000 n 
+0000061481 00000 n 
+0000171556 00000 n 
+0000061588 00000 n 
+0000065966 00000 n 
+0000171640 00000 n 
+0000066073 00000 n 
+0000070344 00000 n 
+0000171724 00000 n 
+0000070451 00000 n 
+0000074672 00000 n 
+0000171808 00000 n 
+0000074779 00000 n 
+0000078841 00000 n 
+0000171892 00000 n 
+0000078948 00000 n 
+0000083353 00000 n 
+0000171976 00000 n 
+0000083460 00000 n 
+0000087474 00000 n 
+0000172060 00000 n 
+0000087581 00000 n 
+0000091661 00000 n 
+0000172144 00000 n 
+0000091768 00000 n 
+0000096460 00000 n 
+0000173854 00000 n 
+0000172228 00000 n 
+0000096567 00000 n 
+0000101213 00000 n 
+0000172312 00000 n 
+0000101320 00000 n 
+0000106029 00000 n 
+0000172396 00000 n 
+0000106136 00000 n 
+0000110669 00000 n 
+0000172480 00000 n 
+0000110776 00000 n 
+0000115200 00000 n 
+0000172564 00000 n 
+0000115307 00000 n 
+0000119464 00000 n 
+0000172648 00000 n 
+0000119571 00000 n 
+0000123357 00000 n 
+0000172732 00000 n 
+0000123464 00000 n 
+0000128538 00000 n 
+0000172816 00000 n 
+0000128645 00000 n 
+0000133078 00000 n 
+0000172900 00000 n 
+0000133185 00000 n 
+0000138124 00000 n 
+0000172984 00000 n 
+0000138231 00000 n 
+0000143096 00000 n 
+0000173992 00000 n 
+0000173070 00000 n 
+0000143204 00000 n 
+0000148154 00000 n 
+0000173158 00000 n 
+0000148262 00000 n 
+0000153006 00000 n 
+0000173246 00000 n 
+0000153114 00000 n 
+0000158564 00000 n 
+0000173334 00000 n 
+0000158672 00000 n 
+0000163418 00000 n 
+0000173422 00000 n 
+0000163526 00000 n 
+0000168837 00000 n 
+0000169085 00000 n 
+0000169288 00000 n 
+0000173510 00000 n 
+0000173539 00000 n 
+0000174213 00000 n 
+0000174337 00000 n 
 trailer
 <<
 /Size 123
 /Root 122 0 R
 /Info 121 0 R
-/ID [<b0cc62a5be0c1030b6f351e712d1e1cb><b0cc62a5be0c1030b6f351e712d1e1cb>]
+/ID [<560ec6fe6e5440771a95f440aabbe0e8><560ec6fe6e5440771a95f440aabbe0e8>]
 >>
 startxref
-174413
+174409
 %%EOF

programming_language: Markdown
filename: Shift.pdf
change_type: ModificationType.MODIFY
diff: @@ -593,8 +593,8 @@ endobj
 endobj
 16 0 obj
 <<
-/CreationDate (D:20210401142150-04'00')
-/ModDate (D:20210401142150-04'00')
+/CreationDate (D:20210413110922-04'00')
+/ModDate (D:20210413110922-04'00')
 /Producer (Apple pstopdf)
 >>
 endobj
@@ -630,7 +630,7 @@ trailer
 /Size 18
 /Root 17 0 R
 /Info 16 0 R
-/ID [<89c8b97ce96c2a9e18d602ed3bb880d8><89c8b97ce96c2a9e18d602ed3bb880d8>]
+/ID [<aaba228f321479095b428dfe7ef65dcb><aaba228f321479095b428dfe7ef65dcb>]
 >>
 startxref
 11800

programming_language: SQL
filename: FujiFilm.html
change_type: ModificationType.MODIFY
diff: @@ -377,7 +377,8 @@ the date of manufacture)</span></span></td></tr>
   <br><span class=n>(other models)</span>
   <br>0 = Off
   <br>1 = On
-  <br>2 = No flash &amp; flash</span></td></tr>
+  <br>2 = No flash &amp; flash
+  <br>6 = Pixel Shift</span></td></tr>
 <tr class=b>
 <td title='0x1101 = 4353'>0x1101</td>
 <td>SequenceNumber</td>
@@ -389,6 +390,16 @@ the date of manufacture)</span></span></td></tr>
 <td class=c>-</td>
 <td>--&gt; <a href='FujiFilm.html#DriveSettings'>FujiFilm DriveSettings Tags</a></td></tr>
 <tr class=b>
+<td title='0x1105 = 4357'>0x1105</td>
+<td>PixelShiftShots</td>
+<td class=c>int16u</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x1106 = 4358'>0x1106</td>
+<td>PixelShiftOffset</td>
+<td class=c>rational64s[2]</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
 <td title='0x1153 = 4435'>0x1153</td>
 <td>PanoramaAngle</td>
 <td class=c>int16u</td>
@@ -718,27 +729,33 @@ element)</span></span></td></tr>
 <td class=r title='0 = 0x0'>0.1</td>
 <td>FocusMode2</td>
 <td class=c>int32u</td>
-<td><span class=s>[val &amp; 0xff]
+<td><span class=s>[val &amp; 0xf]
   <br>0 = AF-M
   <br>1 = AF-S
-  <br>2 = AF-C
-  <br>17 = AF-S (Auto)</span></td></tr>
+  <br>2 = AF-C</span></td></tr>
 <tr class=b>
 <td class=r title='0 = 0x0'>0.2</td>
+<td>PreAF</td>
+<td class=c>int32u</td>
+<td><span class=s>[val &gt;&gt; 4 &amp; 0xf]
+  <br>0 = Off
+  <br>1 = On</span></td></tr>
+<tr>
+<td class=r title='0 = 0x0'>0.3</td>
 <td>AFAreaMode</td>
 <td class=c>int32u</td>
 <td><span class=s>[val &gt;&gt; 8 &amp; 0xf]
   <br>0 = Single Point
   <br>1 = Zone
   <br>2 = Wide/Tracking</span></td></tr>
-<tr>
-<td class=r title='0 = 0x0'>0.3</td>
+<tr class=b>
+<td class=r title='0 = 0x0'>0.4</td>
 <td>AFAreaPointSize</td>
 <td class=c>int32u</td>
 <td><span class=s>[val &gt;&gt; 12 &amp; 0xf]
   <br>0 = n/a</span></td></tr>
-<tr class=b>
-<td class=r title='0 = 0x0'>0.4</td>
+<tr>
+<td class=r title='0 = 0x0'>0.5</td>
 <td>AFAreaZoneSize</td>
 <td class=c>int32u</td>
 <td><span class=s>[val &gt;&gt; 16 &amp; 0xf]
@@ -1189,7 +1206,7 @@ RAF-format information.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Feb 3, 2021</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>

programming_language: HTML
filename: Jpeg2000.html
change_type: ModificationType.MODIFY
diff: @@ -430,23 +430,31 @@ may exist)</span>
 <tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'id'</td>
-<td>JUMBFID</td>
+<td>'jumd-flags'</td>
+<td>JUMDFlags</td>
 <td class=c>no</td>
-<td>&nbsp;</td></tr>
+<td><span class=s>Bit 0 = Requestable
+  <br>Bit 1 = Label
+  <br>Bit 2 = ID
+  <br>Bit 3 = Signature</span></td></tr>
 <tr class=b>
-<td>'label'</td>
-<td>JUMBFLabel</td>
+<td>'jumd-id'</td>
+<td>JUMDID</td>
 <td class=c>no</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'signature'</td>
-<td>JUMBFSignature</td>
+<td>'jumd-label'</td>
+<td>JUMDLabel</td>
 <td class=c>no</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'type'</td>
-<td>JUMBFType</td>
+<td>'jumd-sig'</td>
+<td>JUMDSignature</td>
+<td class=c>no</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'jumd-type'</td>
+<td>JUMDType</td>
 <td class=c>no</td>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
@@ -528,7 +536,7 @@ may exist)</span>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Apr 1, 2021</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>

programming_language: HTML
filename: MacOS.html
change_type: ModificationType.MODIFY
diff: @@ -46,7 +46,7 @@ options, but these files are not writable directly.</p>
 <p>XAttr tags are extracted using the &quot;xattr&quot; utility.  They are extracted if
 any &quot;XAttr*&quot; tag or the MacOS group is specifically requested, or by setting
 the <a href="../ExifTool.html#XAttrTags">XAttrTags</a> API option to 1 or the <a href="../ExifTool.html#RequestAll">RequestAll</a> API option to 2 or higher.
-And they extracted by default from MacOS &quot;._&quot; files when reading
+And they are extracted by default from MacOS &quot;._&quot; files when reading
 these files directly.</p>
 <blockquote>
 <table class=frame><tr><td>
@@ -654,7 +654,7 @@ not be written)</span></span></td></tr>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Oct 15, 2020</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>

programming_language: HTML
filename: Panasonic.html
change_type: ModificationType.MODIFY
diff: @@ -1874,6 +1874,21 @@ images.</p>
 <td>FNumber</td>
 <td class=c>int32s</td>
 <td>&nbsp;</td></tr>
+<tr>
+<td title='0x035b = 859'>0x035b</td>
+<td>CorrelatedColorTemp</td>
+<td class=c>int16u</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x035c = 860'>0x035c</td>
+<td>ColorTint</td>
+<td class=c>int16s</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x035d = 861'>0x035d</td>
+<td>WhitePoint</td>
+<td class=c>rational64u[2]</td>
+<td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Type2'>Panasonic Type2 Tags</a></h2>
@@ -2090,7 +2105,7 @@ various Panasonic and Leica models.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Oct 2, 2020</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>

programming_language: R
filename: PhaseOne.html
change_type: ModificationType.MODIFY
diff: @@ -76,11 +76,14 @@
 <td title='0x010e = 270'>0x010e</td>
 <td>RawFormat</td>
 <td class=c>int32s</td>
-<td><span class=s>1 = RAW 1
+<td><table class=cols><tr>
+  <td>1 = RAW 1
   <br>2 = RAW 2
-  <br>3 = IIQ L
-  <br>5 = IIQ S
-  <br>6 = IIQ Sv2</span></td></tr>
+  <br>3 = IIQ L</td><td>&nbsp;&nbsp;</td>
+  <td>5 = IIQ S
+  <br>6 = IIQ Sv2
+  <br>8 = IIQ L16</td></tr></table>
+</td></tr>
 <tr>
 <td title='0x010f = 271'>0x010f</td>
 <td>RawData</td>
@@ -258,7 +261,7 @@
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Apr 9, 2019</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>

programming_language: HTML
filename: Sony.html
change_type: ModificationType.MODIFY
diff: @@ -45,9 +45,10 @@ MakerNotes.</p>
   <br>3 = Standard
   <br>4 = Economy
   <br>5 = Extra Fine
-  <br>6 = RAW + JPEG
+  <br>6 = RAW + JPEG/HEIF
   <br>7 = Compressed RAW
   <br>8 = Compressed RAW + JPEG
+  <br>9 = Light
   <br>4294967295 = n/a</td></tr></table>
 </td></tr>
 <tr class=b>
@@ -785,13 +786,15 @@ toward magenta)</span></span></td></tr>
 <td class=c>int16u[2]</td>
 <td><table class=cols><tr>
   <td>&#39;0 0&#39; = n/a
-  <br>&#39;0 1&#39; = Standard JPEG
-  <br>&#39;0 2&#39; = Fine JPEG
-  <br>&#39;0 3&#39; = Extra Fine JPEG
+  <br>&#39;0 1&#39; = Standard
+  <br>&#39;0 2&#39; = Fine
+  <br>&#39;0 3&#39; = Extra Fine
+  <br>&#39;0 4&#39; = Light
   <br>&#39;1 0&#39; = RAW
-  <br>&#39;1 1&#39; = RAW + Standard JPEG
-  <br>&#39;1 2&#39; = RAW + Fine JPEG
-  <br>&#39;1 3&#39; = RAW + Extra Fine JPEG</td></tr></table>
+  <br>&#39;1 1&#39; = RAW + Standard
+  <br>&#39;1 2&#39; = RAW + Fine
+  <br>&#39;1 3&#39; = RAW + Extra Fine
+  <br>&#39;1 4&#39; = RAW + Light</td></tr></table>
 </td></tr>
 <tr class=b>
 <td title='0x202f = 8239'>0x202f</td>
@@ -804,16 +807,53 @@ toward magenta)</span></span></td></tr>
 <td class=c>string</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
+<td title='0x2032 = 8242'>0x2032</td>
+<td>Shadows</td>
+<td class=c>int32s</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x2033 = 8243'>0x2033</td>
+<td>Highlights</td>
+<td class=c>int32s</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x2034 = 8244'>0x2034</td>
+<td>Fade</td>
+<td class=c>int32s</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x2035 = 8245'>0x2035</td>
+<td>SharpnessRange</td>
+<td class=c>int32s</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x2036 = 8246'>0x2036</td>
+<td>Clarity</td>
+<td class=c>int32s</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x2037 = 8247'>0x2037</td>
+<td>FocusFrameSize</td>
+<td class=c>no</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x2039 = 8249'>0x2039</td>
+<td>JPEG-HEIFSwitch</td>
+<td class=c>int16u</td>
+<td><span class=s>0 = JPEG
+  <br>1 = HEIF
+  <br>65535 = n/a</span></td></tr>
+<tr>
 <td title='0x3000 = 12288'>0x3000</td>
 <td>ShotInfo</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#ShotInfo'>Sony ShotInfo Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x900b = 36875'>0x900b</td>
 <td>Tag900b</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag900b'>Sony Tag900b Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x9050 = 36944'>0x9050</td>
 <td>Tag9050a
   <br>Tag9050b
@@ -822,7 +862,7 @@ toward magenta)</span></span></td></tr>
 <td>--&gt; <a href='Sony.html#Tag9050a'>Sony Tag9050a Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9050b'>Sony Tag9050b Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9050c'>Sony Tag9050c Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x9400 = 37888'>0x9400</td>
 <td>Tag9400a
   <br>Tag9400b
@@ -831,22 +871,22 @@ toward magenta)</span></span></td></tr>
 <td>--&gt; <a href='Sony.html#Tag9400a'>Sony Tag9400a Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9400b'>Sony Tag9400b Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9400c'>Sony Tag9400c Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x9401 = 37889'>0x9401</td>
 <td>Tag9401</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag9401'>Sony Tag9401 Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x9402 = 37890'>0x9402</td>
 <td>Tag9402</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag9402'>Sony Tag9402 Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x9403 = 37891'>0x9403</td>
 <td>Tag9403</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag9403'>Sony Tag9403 Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x9404 = 37892'>0x9404</td>
 <td>Tag9404a
   <br>Tag9404b
@@ -855,41 +895,41 @@ toward magenta)</span></span></td></tr>
 <td>--&gt; <a href='Sony.html#Tag9404a'>Sony Tag9404a Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9404b'>Sony Tag9404b Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9404c'>Sony Tag9404c Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x9405 = 37893'>0x9405</td>
 <td>Tag9405a
   <br>Tag9405b</td>
 <td class=c>-<br>-</td>
 <td>--&gt; <a href='Sony.html#Tag9405a'>Sony Tag9405a Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9405b'>Sony Tag9405b Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x9406 = 37894'>0x9406</td>
 <td>Tag9406</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag9406'>Sony Tag9406 Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x940a = 37898'>0x940a</td>
 <td>Tag940a</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag940a'>Sony Tag940a Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x940c = 37900'>0x940c</td>
 <td>Tag940c</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag940c'>Sony Tag940c Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x940e = 37902'>0x940e</td>
 <td>AFInfo
   <br>Tag940e</td>
 <td class=c>-<br>-</td>
 <td>--&gt; <a href='Sony.html#AFInfo'>Sony AFInfo Tags</a>
   <br>--&gt; <a href='Sony.html#Tag940e'>Sony Tag940e Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x9416 = 37910'>0x9416</td>
 <td>Sony_0x9416</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag9416'>Sony Tag9416 Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb000 = 45056'>0xb000</td>
 <td>FileFormat</td>
 <td class=c>int8u[4]</td>
@@ -907,7 +947,7 @@ toward magenta)</span></span></td></tr>
   <br>&#39;3 3 5 0&#39; = ARW 2.3.5
   <br>&#39;4 0 0 0&#39; = ARW 4.0</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb001 = 45057'>0xb001</td>
 <td>SonyModelID</td>
 <td class=c>int16u</td>
@@ -1001,7 +1041,7 @@ toward magenta)</span></span></td></tr>
   <br>384 = ILCE-1
   <br>385 = ILME-FX3</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb020 = 45088'>0xb020</td>
 <td>CreativeStyle</td>
 <td class=c>string</td>
@@ -1027,17 +1067,17 @@ toward magenta)</span></span></td></tr>
   <br>&#39;VV2&#39; = Vivid 2
   <br>&#39;Vivid&#39; = Vivid</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb021 = 45089'>0xb021</td>
 <td>ColorTemperature</td>
 <td class=c>int32u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0xb022 = 45090'>0xb022</td>
 <td>ColorCompensationFilter</td>
 <td class=c>int32u</td>
 <td><span class=s><span class=n>(negative is green, positive is magenta)</span></span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb023 = 45091'>0xb023</td>
 <td>SceneMode</td>
 <td class=c>int32u</td>
@@ -1068,14 +1108,14 @@ toward magenta)</span></span></td></tr>
   <br>33 = HDR
   <br>65535 = n/a</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb024 = 45092'>0xb024</td>
 <td>ZoneMatching</td>
 <td class=c>int32u</td>
 <td><span class=s>0 = ISO Setting Used
   <br>1 = High Key
   <br>2 = Low Key</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb025 = 45093'>0xb025</td>
 <td>DynamicRangeOptimizer</td>
 <td class=c>int32u</td>
@@ -1095,24 +1135,24 @@ toward magenta)</span></span></td></tr>
   <br>19 = Lv4
   <br>20 = Lv5</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb026 = 45094'>0xb026</td>
 <td>ImageStabilization</td>
 <td class=c>int32u</td>
 <td><span class=s>0 = Off
   <br>1 = On
   <br>4294967295 = n/a</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb027 = 45095'>0xb027</td>
 <td>LensType</td>
 <td class=c>int32u</td>
 <td>--&gt; <a href='Sony.html#LensType'>Sony LensType Values</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb028 = 45096'>0xb028</td>
 <td>MinoltaMakerNote</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Minolta.html'>Minolta Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb029 = 45097'>0xb029</td>
 <td>ColorMode</td>
 <td class=c>int32u</td>
@@ -1144,23 +1184,23 @@ toward magenta)</span></span></td></tr>
   <br>255 = Off
   <br>4294967295 = n/a</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb02a = 45098'>0xb02a</td>
 <td>LensSpec</td>
 <td class=c>int8u[8]</td>
 <td><span class=s><span class=n>(like LensInfo, but also specifies lens features: DT, E, ZA, G, SSM, SAM,
 OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb02b = 45099'>0xb02b</td>
 <td>FullImageSize</td>
 <td class=c>int32u[2]</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0xb02c = 45100'>0xb02c</td>
 <td>PreviewImageSize</td>
 <td class=c>int32u[2]</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0xb040 = 45120'>0xb040</td>
 <td>Macro</td>
 <td class=c>int16u</td>
@@ -1168,7 +1208,7 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>1 = On
   <br>2 = Close Focus
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb041 = 45121'>0xb041</td>
 <td>ExposureMode</td>
 <td class=c>int16u</td>
@@ -1205,7 +1245,7 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>42 = 3D Image
   <br>65535 = n/a</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb042 = 45122'>0xb042</td>
 <td>FocusMode</td>
 <td class=c>int16u</td>
@@ -1214,7 +1254,7 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>2 = AF-C
   <br>4 = Permanent-AF
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb043 = 45123'>0xb043</td>
 <td>AFAreaMode</td>
 <td class=c>int16u</td>
@@ -1238,14 +1278,14 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>15 = Face Tracking
   <br>255 = Manual</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb044 = 45124'>0xb044</td>
 <td>AFIlluminator</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = Auto
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb047 = 45127'>0xb047</td>
 <td>JPEGQuality</td>
 <td class=c>int16u</td>
@@ -1253,7 +1293,7 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>1 = Fine
   <br>2 = Extra Fine
   <br>65535 = n/a</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb048 = 45128'>0xb048</td>
 <td>FlashLevel</td>
 <td class=c>int16s</td>
@@ -1277,7 +1317,7 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>128 = n/a
   <br>32767 = High</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb049 = 45129'>0xb049</td>
 <td>ReleaseMode</td>
 <td class=c>int16u</td>
@@ -1289,14 +1329,14 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>8 = DRO Bracketing
   <br>65535 = n/a</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb04a = 45130'>0xb04a</td>
 <td>SequenceNumber</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(shot number in continuous burst)</span>
   <br>0 = Single
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb04b = 45131'>0xb04b</td>
 <td>Anti-Blur</td>
 <td class=c>int16u</td>
@@ -1304,7 +1344,7 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>1 = On (Continuous)
   <br>2 = On (Shooting)
   <br>65535 = n/a</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb04e = 45134'>0xb04e</td>
 <td>FocusMode</td>
 <td class=c>int16u</td>
@@ -1314,14 +1354,14 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>3 = AF-C
   <br>5 = Semi-manual
   <br>6 = DMF</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb04f = 45135'>0xb04f</td>
 <td>DynamicRangeOptimizer</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = Standard
   <br>2 = Plus</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb050 = 45136'>0xb050</td>
 <td>HighISONoiseReduction2</td>
 <td class=c>int16u</td>
@@ -1331,14 +1371,14 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>2 = Low
   <br>3 = Off
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb052 = 45138'>0xb052</td>
 <td>IntelligentAuto</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = On
   <br>2 = Advanced</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb054 = 45140'>0xb054</td>
 <td>WhiteBalance</td>
 <td class=c>int16u</td>
@@ -5277,7 +5317,10 @@ rotation -- the width is always the longer dimension.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='4447 = 0x115f'>4447</td>
@@ -5303,7 +5346,10 @@ rotation -- the width is always the longer dimension.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='4451 = 0x1163'>4451</td>
@@ -5671,7 +5717,10 @@ option is used.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='4451 = 0x1163'>4451</td>
@@ -5697,7 +5746,10 @@ option is used.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='4455 = 0x1167'>4455</td>
@@ -5897,7 +5949,10 @@ option is used.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='4415 = 0x113f'>4415</td>
@@ -5923,7 +5978,10 @@ option is used.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='4419 = 0x1143'>4419</td>
@@ -6109,7 +6167,10 @@ not valid for panorama images.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='4539 = 0x11bb'>4539</td>
@@ -6135,7 +6196,10 @@ not valid for panorama images.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='4543 = 0x11bf'>4543</td>
@@ -6325,7 +6389,10 @@ WX300, but not for panorama images.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='4503 = 0x1197'>4503</td>
@@ -6351,7 +6418,10 @@ WX300, but not for panorama images.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='4507 = 0x119b'>4507</td>
@@ -6592,7 +6662,10 @@ WX300, but not for panorama images.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='4175 = 0x104f'>4175</td>
@@ -6618,7 +6691,10 @@ WX300, but not for panorama images.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='4179 = 0x1053'>4179</td>
@@ -6804,7 +6880,10 @@ ILCE-7/7R/7S/7M2/5000/5100/6000/QX1, ILCA-68/77M2.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='583 = 0x247'>583</td>
@@ -6830,7 +6909,10 @@ ILCE-7/7R/7S/7M2/5000/5100/6000/QX1, ILCA-68/77M2.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='587 = 0x24b'>587</td>
@@ -7062,7 +7144,10 @@ ILCE-6300/6500/7RM2/7SM2, ILCA-99M2.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='583 = 0x247'>583</td>
@@ -7088,7 +7173,10 @@ ILCE-6300/6500/7RM2/7SM2, ILCA-99M2.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='587 = 0x24b'>587</td>
@@ -7325,7 +7413,10 @@ RX100M5A/RX100M7/HX99.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='568 = 0x238'>568</td>
@@ -7351,7 +7442,10 @@ RX100M5A/RX100M7/HX99.</p>
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='572 = 0x23c'>572</td>
@@ -8157,7 +8251,7 @@ models)</span></span></td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag9050c'>Sony Tag9050c Tags</a></h2>
-<p>Valid from July 2020 for ILCE-1/7SM3.</p>
+<p>Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
@@ -8226,6 +8320,11 @@ models)</span></span></td></tr>
 <td>InternalSerialNumber</td>
 <td class=c title=' ~ = Writable only with -n'>int8u[6]~</td>
 <td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='138 = 0x8a'>138</td>
+<td>InternalSerialNumber</td>
+<td class=c title=' ~ = Writable only with -n'>int8u[6]~</td>
+<td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag9400a'>Sony Tag9400a Tags</a></h2>
@@ -8462,7 +8561,12 @@ WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
 <td><span class=s>0 = JPEG
   <br>1 = RAW
   <br>2 = RAW + JPEG
-  <br>3 = JPEG + MPO</span></td></tr>
+  <br>3 = JPEG + MPO
+  <br>1 = JPEG
+  <br>2 = RAW
+  <br>3 = RAW + JPEG
+  <br>4 = HEIF
+  <br>6 = RAW + HEIF</span></td></tr>
 <tr>
 <td class=r title='71 = 0x47'>71</td>
 <td>SonyImageHeight</td>
@@ -9046,7 +9150,7 @@ ILCE-7/7M2/7M3/7R/7RM2/7RM3/7RM4/7S/7SM2/9/9M2/5000/5100/6000/6100/6300/
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag940c'>Sony Tag940c Tags</a></h2>
-<p>NEX and ILCE models only.</p>
+<p>E-mount cameras only.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
@@ -10816,7 +10920,7 @@ ILCE-7/7M2/7M3/7R/7RM2/7RM3/7RM4/7S/7SM2/9/9M2/5000/5100/6000/6100/6300/
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag9416'>Sony Tag9416 Tags</a></h2>
-<p>Valid for the ILCE-1/7SM3.</p>
+<p>Valid for the ILCE-1/7SM3, ILME-FX3.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
@@ -10928,7 +11032,10 @@ ILCE-7/7M2/7M3/7R/7RM2/7RM3/7RM4/7S/7SM2/9/9M2/5000/5100/6000/6100/6300/
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='113 = 0x71'>113</td>
@@ -11648,7 +11755,7 @@ some models when the <a href="../ExifTool.html#ExtractEmbedded">ExtractEmbedded<
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Apr 1, 2021</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>

programming_language: HTML
filename: index.html
change_type: ModificationType.MODIFY
diff: @@ -10,7 +10,7 @@
 <h2 class=top>ExifTool Tag Names</h2>
 <p>
 The tables listed below give the names of all tags recognized by ExifTool.
-They contain a total of 24102 tags, with 15604 unique tag names.
+They contain a total of 24118 tags, with 15614 unique tag names.
 </p>
 <blockquote>
 <table width='100%' class=frame><tr><td>
@@ -233,7 +233,7 @@ ExifTool.  A big thanks to everyone who has helped with this so far!)</i>
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
 <br><i>Created Feb 15, 2005</i>
-<br><i>Last revised Apr 1, 2021</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='../index.html'>&lt;-- Back to ExifTool home page</a></p>
 </body>
 </html>

programming_language: HTML
filename: exiftool_pod.html
change_type: ModificationType.MODIFY
diff: @@ -685,7 +685,7 @@
 
 <p>produces output like this:</p>
 
-<pre><code>    -- Generated by ExifTool 12.23 --
+<pre><code>    -- Generated by ExifTool 12.24 --
     File: a.jpg - 2003:10:31 15:44:19
     (f/5.6, 1/60s, ISO 100)
     File: b.jpg - 2006:05:23 11:57:38

programming_language: HTML
filename: exiftool_pod.pdf
change_type: ModificationType.MODIFY
diff: @@ -12,7 +12,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     1)Tj
+(                              -- ExifTool 12.24 --                                     1)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (EXIFTOOL\(1\)           User Contributed Perl Documentation          EXIFTOOL\(1\))Tj
@@ -637,7 +637,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     2)Tj
+(                              -- ExifTool 12.24 --                                     2)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (         AVIF  r/w   | FITS  r     | MAX   r     | PDB   r     | THM   r/w)Tj
@@ -834,7 +834,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     3)Tj
+(                              -- ExifTool 12.24 --                                     3)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (         -charset [[TYPE=]CHARSET]        Specify encoding for special characters)Tj
@@ -991,7 +991,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     4)Tj
+(                              -- ExifTool 12.24 --                                     4)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (         -globalTimeShift SHIFT           Shift all formatted date/time values)Tj
@@ -1282,7 +1282,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     5)Tj
+(                              -- ExifTool 12.24 --                                     5)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            the -)Tj
@@ -1615,7 +1615,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     6)Tj
+(                              -- ExifTool 12.24 --                                     6)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            deletable Time tags except those in the EXIF.  This difference)Tj
@@ -2052,7 +2052,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     7)Tj
+(                              -- ExifTool 12.24 --                                     7)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            specified for each copied tag.  With this feature, information may)Tj
@@ -2539,7 +2539,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     8)Tj
+(                              -- ExifTool 12.24 --                                     8)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            groups of tags from a file containing redundant information, it)Tj
@@ -3042,7 +3042,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     9)Tj
+(                              -- ExifTool 12.24 --                                     9)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            "unsafe".  For instance, the FileName and Directory tags are)Tj
@@ -3463,7 +3463,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    10)Tj
+(                              -- ExifTool 12.24 --                                    10)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (                Vietnam     cp1258           Windows Vietnamese)Tj
@@ -3748,7 +3748,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    11)Tj
+(                              -- ExifTool 12.24 --                                    11)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            names, the duplicate tags are only included in the CSV output if)Tj
@@ -4221,7 +4221,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    12)Tj
+(                              -- ExifTool 12.24 --                                    12)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            option, a dash \("-"\) is printed for the value of any missing tag,)Tj
@@ -4838,7 +4838,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    13)Tj
+(                              -- ExifTool 12.24 --                                    13)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            UTF-8 regardless of any -)Tj
@@ -5227,7 +5227,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    14)Tj
+(                              -- ExifTool 12.24 --                                    14)Tj
 /TT4 1 Tf
 0 -2.7333 TD
 (                push @INC, 'lib';)Tj
@@ -5492,7 +5492,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    15)Tj
+(                              -- ExifTool 12.24 --                                    15)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            A section is defined as a group of consecutive files with the same)Tj
@@ -5525,7 +5525,7 @@ T*
 T*
 (            produces output like this:)Tj
 T*
-(                -- Generated by ExifTool 12.23 --)Tj
+(                -- Generated by ExifTool 12.24 --)Tj
 0 -1.1 TD
 (                File: a.jpg - 2003:10:31 15:44:19)Tj
 T*
@@ -5871,7 +5871,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    16)Tj
+(                              -- ExifTool 12.24 --                                    16)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            to column-align values.)Tj
@@ -6414,7 +6414,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    17)Tj
+(                              -- ExifTool 12.24 --                                    17)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            the source file extension \(including the '.'\) with the specified)Tj
@@ -6645,7 +6645,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    18)Tj
+(                              -- ExifTool 12.24 --                                    18)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            For %d and %D, the field width/position specifiers may be applied)Tj
@@ -6876,7 +6876,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    19)Tj
+(                              -- ExifTool 12.24 --                                    19)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            the output file \(based on the format of the data\).  The %g code)Tj
@@ -7383,7 +7383,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    20)Tj
+(                              -- ExifTool 12.24 --                                    20)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       -)Tj
@@ -7884,7 +7884,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    21)Tj
+(                              -- ExifTool 12.24 --                                    21)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            that exiftool will automatically fix the offsets for images which)Tj
@@ -8441,7 +8441,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    22)Tj
+(                              -- ExifTool 12.24 --                                    22)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            character to disable print conversion.  The expression $GROUP:all)Tj
@@ -8756,7 +8756,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    23)Tj
+(                              -- ExifTool 12.24 --                                    23)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            with minor errors and disables some validation checks which could)Tj
@@ -9311,7 +9311,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    24)Tj
+(                              -- ExifTool 12.24 --                                    24)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            necessary.)Tj
@@ -9886,7 +9886,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    25)Tj
+(                              -- ExifTool 12.24 --                                    25)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            to tags with numerical tag ID's, and causes tag names like)Tj
@@ -10267,7 +10267,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    26)Tj
+(                              -- ExifTool 12.24 --                                    26)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            used to prevent the command window from closing when run as a)Tj
@@ -10872,7 +10872,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    27)Tj
+(                              -- ExifTool 12.24 --                                    27)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            they are supported by the destination metadata format\):)Tj
@@ -11239,7 +11239,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    28)Tj
+(                              -- ExifTool 12.24 --                                    28)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       -)Tj
@@ -11906,7 +11906,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    29)Tj
+(                              -- ExifTool 12.24 --                                    29)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            -)Tj
@@ -12539,7 +12539,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    30)Tj
+(                              -- ExifTool 12.24 --                                    30)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            per line \(see the -)Tj
@@ -13096,7 +13096,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    31)Tj
+(                              -- ExifTool 12.24 --                                    31)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       with spaces translated to underlines, and multiple consecutive)Tj
@@ -13295,7 +13295,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    32)Tj
+(                              -- ExifTool 12.24 --                                    32)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       valid ExifTool character set, preferably "UTF8" \(see the -)Tj
@@ -13804,7 +13804,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    33)Tj
+(                              -- ExifTool 12.24 --                                    33)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       quotes as below around arguments containing special characters.)Tj
@@ -13941,7 +13941,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    34)Tj
+(                              -- ExifTool 12.24 --                                    34)Tj
 /TT4 1 Tf
 0 -2.7333 TD
 (       exiftool -icc_profile -b -w icc image.jpg)Tj
@@ -14108,7 +14108,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    35)Tj
+(                              -- ExifTool 12.24 --                                    35)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       exiftool -r -XMP-crss:all= DIR)Tj
@@ -14275,7 +14275,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    36)Tj
+(                              -- ExifTool 12.24 --                                    36)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            Copy the values of all writable tags from "src.cr2" to "dst.jpg",)Tj
@@ -14444,7 +14444,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    37)Tj
+(                              -- ExifTool 12.24 --                                    37)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            Recursively rewrite all "JPG" images in "dir" with information)Tj
@@ -14691,7 +14691,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    38)Tj
+(                              -- ExifTool 12.24 --                                    38)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       exiftool -o . '-Directory<DateTimeOriginal' -d %Y/%m/%d dir)Tj
@@ -14868,7 +14868,7 @@ BT
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    39)Tj
+(                              -- ExifTool 12.24 --                                    39)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       exiftool -xmp:geotag=track.log a.jpg)Tj
@@ -15243,7 +15243,7 @@ T*
 0.6 0 TD
 (s\(3pm\), Image::ExifTool::Shift.pl)Tj
 -19.2 -4.4 TD
-(perl v5.18.4                      2021-04-01                       EXIFTOOL\(1\))Tj
+(perl v5.18.4                      2021-04-13                       EXIFTOOL\(1\))Tj
 ET
 endstream
 endobj
@@ -15703,8 +15703,8 @@ endobj
 endobj
 130 0 obj
 <<
-/CreationDate (D:20210401142148-04'00')
-/ModDate (D:20210401142148-04'00')
+/CreationDate (D:20210413110921-04'00')
+/ModDate (D:20210413110921-04'00')
 /Producer (Apple pstopdf)
 >>
 endobj
@@ -15854,7 +15854,7 @@ trailer
 /Size 132
 /Root 131 0 R
 /Info 130 0 R
-/ID [<ab798910bbf7ddf1029ca400262164d7><ab798910bbf7ddf1029ca400262164d7>]
+/ID [<88f6ccfb20ef49d8fb5d8a90914f5aa9><88f6ccfb20ef49d8fb5d8a90914f5aa9>]
 >>
 startxref
 267700

programming_language: Markdown
filename: history.html
change_type: ModificationType.MODIFY
diff: @@ -17,6 +17,18 @@ considered development releases, and are not uploaded to <a href="https://metacp
 <!-- Use line width of 80 -->
 <!-- *********************************************************************** -->
 
+<a name='v12.24'><b>Apr. 13, 2021 - Version 12.24</b></a>
+<ul>
+<li>Added a new PhaseOne RawFormat value (thanks LibRaw)
+<li>Decode a new Sony tag (thanks Jos Roost)
+<li>Decode a few new Panasonic and FujiFilm tags (thanks LibRaw and Greybeard)
+<li>Patched security vulnerability in DjVu reader
+<li>Updated acdsee.config in distribution (thanks StarGeek)
+<li>Recognize AutoCAD DXF files
+<li>More work on experimental JUMBF read support
+<li>More work on experimental JXL read/write support
+</ul>
+
 <a name='v12.23'><b>Apr. 1, 2021 - Version 12.23</b></a>
 <ul>
 <li>Added support for Olympus ORI files
@@ -34,7 +46,7 @@ considered development releases, and are not uploaded to <a href="https://metacp
 <li>Fixed -forcewrite=EXIF to apply to EXIF in binary header of EPS files
 <li>API Changes:
     <ul>
-    <li>Added BlockExtract option
+    <li>Added <a href="ExifTool.html#BlockExtract">BlockExtract option</a>
     </ul>
 </ul>
 

programming_language: Markdown
filename: index.html
change_type: ModificationType.MODIFY
diff: @@ -81,9 +81,9 @@ span.sup        { font-size: 0.8em; font-weight: normal; position: relative; top
 </div>
 
 <blockquote><table class='dl lg'><tr><td><b>
-<a href="http://sourceforge.net/projects/exiftool/files/Image-ExifTool-12.23.tar.gz/download">
-Download        Version 12.23</a> (4.7 MB) -
-<a href="history.html">Apr. 1, 2021</a></b></td></tr></table></blockquote>
+<a href="http://sourceforge.net/projects/exiftool/files/Image-ExifTool-12.24.tar.gz/download">
+Download        Version 12.24</a> (4.7 MB) -
+<a href="history.html">Apr. 13, 2021</a></b></td></tr></table></blockquote>
 
 <p><b>ExifTool is a platform-independent <a href="ExifTool.html">Perl
 library</a> plus a <a href="exiftool_pod.html">command-line application</a> for
@@ -136,8 +136,8 @@ distribution above.)</i></p>
 
 <blockquote><table class='dl lg'><tr><td><b>
 <a name="alone">Windows Executable:</a>
-<a href="http://sourceforge.net/projects/exiftool/files/exiftool-12.23.zip/download">
-         exiftool-12.23.zip</a> (6.4 MB)</b></td></tr></table></blockquote>
+<a href="http://sourceforge.net/projects/exiftool/files/exiftool-12.24.zip/download">
+         exiftool-12.24.zip</a> (6.4 MB)</b></td></tr></table></blockquote>
 
 <p><b>The stand-alone Windows executable</b> does not require Perl. Just
 download and un-zip the archive then double-click on
@@ -155,7 +155,7 @@ if you have any problems/comments with this version.)</i></p>
 <blockquote><table class='dl lg'><tr><td><b>
 MacOS Package:
 <a href="http://sourceforge.net/projects/exiftool/files/ExifTool-9.70.dmg/download">
-         ExifTool-12.23.dmg</a> (3.0 MB)</b></td></tr></table></blockquote>
+         ExifTool-12.24.dmg</a> (3.0 MB)</b></td></tr></table></blockquote>
 
 <p><b>The MacOS package</b> installs the ExifTool command-line application and
 libraries in /usr/local/bin. After installing, type "<code>exiftool</code>" in a

programming_language: HTML
filename: install.html
change_type: ModificationType.MODIFY
diff: @@ -52,10 +52,10 @@ documentation or some other files of the full distribution.</p>
 <h3>Stand-Alone Executable</h3>
 <ol>
 <li><b>Download</b> the <b>Windows Executable</b> from the <a href="index.html">ExifTool home page</a>.
-<br><span class=lt>(The file you download should be named "<code>exiftool-12.23.zip</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>exiftool-12.24.zip</code>".)</span></li>
 <li><b>Extract "<code>exiftool(-k).exe</code>"</b> from the
 "<code>.zip</code>" file, and place it <b>on your Desktop</b>.
-<br><span class=lt>(Double-click on "<code>exiftool-12.23.zip</code>" to open
+<br><span class=lt>(Double-click on "<code>exiftool-12.24.zip</code>" to open
 the archive, then drag "<code>exiftool(-k).exe</code>" to your Desktop.)</span></li>
 </ol>
 <p>You can now double-click on "<code>exiftool(-k).exe</code>" to read the
@@ -109,7 +109,7 @@ can be downloaded from
 <a href="http://www.activestate.com/activeperl/">activeperl.com</a>.)</p>
 <ol>
 <li><b>Download</b> the <b>Image-ExifTool distribution</b> from the <a href="index.html">ExifTool home page</a>
-<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.23.tar.gz</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.24.tar.gz</code>".)</span></li>
 <li><b>Extract the ExifTool files</b> from the archive.
 <br><span class=lt>(The archive is a gzipped tar file, and can be opened with
 various Windows utilities, including WinZip.)</span></li>
@@ -151,7 +151,7 @@ in the MacOS package.  Both versions run natively on PPC and Intel Macs.</p>
 <h3>MacOS Package</h3>
 <ol>
 <li><b>Download</b> the <b>ExifTool MacOS Package</b> from the <a href="index.html">ExifTool home page</a>.
-<br><span class=lt>(The file you download should be named "<code>ExifTool-12.23.dmg</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>ExifTool-12.24.dmg</code>".)</span></li>
 <li><b>Install</b> as a normal <b>MacOS package</b>.
 <br><span class=lt>(Open the disk image, double-click on the install package, and follow the instructions.
 See the second item in the Notes section below if you are stopped with an "unidentified developer" message.)
@@ -167,12 +167,12 @@ See the second item in the Notes section below if you are stopped with an "unide
 <ol>
 <li><b>Download</b> the <b>Image-ExifTool distribution</b> from the <a href="index.html">ExifTool home page</a>
 to your Desktop.
-<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.23.tar.gz</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.24.tar.gz</code>".)</span></li>
 <li><b>Launch</b> the <b>Terminal</b> application from the Utilities folder in your Applications folder.</li>
 <li>In the Terminal window, <b>type the following</b>:
 <pre class='code'>    cd ~/Desktop
-    tar -xzf Image-ExifTool-12.23.tar.gz
-    cd Image-ExifTool-12.23
+    tar -xzf Image-ExifTool-12.24.tar.gz
+    cd Image-ExifTool-12.24
     sudo cp -r exiftool lib /usr/local/bin
 </pre>
 <span class=lt>(Note: The last step above will require you to enter your
@@ -188,7 +188,7 @@ your Perl version. If both sets of libraries exist, /usr/local/bin/lib takes
 precedence for exiftool, but /Library/Perl/#.#.# is the default for any other
 Perl scripts.</li>
 <li>In MacOS 10.8 or later, you may see this message when you try to open the install package:
-<blockquote class=red>"ExifTool-12.23.pkg" can't be opened because it is from an
+<blockquote class=red>"ExifTool-12.24.pkg" can't be opened because it is from an
 unidentified developer.</blockquote> The solution is to control-click on the pkg
 then select "Open" from the pop-up menu instead of just double-clicking.  An alternative
 is to lower the security settings by changing "Allow applications downloaded from" to
@@ -215,11 +215,11 @@ have the wrong "<code>lib</code>" folder.</li>
 
 <ol>
 <li><b>Download</b> the <b>Image-ExifTool distribution</b> from the <a href="index.html">ExifTool home page</a>
-<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.23.tar.gz</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.24.tar.gz</code>".)</span></li>
 <li><b>Unpack the distribution</b> and <b>make it your current directory</b> by typing:
 <pre class='code'>    cd <i>&lt;your download directory&gt;</i>
-    gzip -dc Image-ExifTool-12.23.tar.gz | tar -xf -
-    cd Image-ExifTool-12.23
+    gzip -dc Image-ExifTool-12.24.tar.gz | tar -xf -
+    cd Image-ExifTool-12.24
 </pre>
 <span class=lt>(At this point you may run exiftool by typing
 "<code>./exiftool <i>&lt;image file name&gt;</i></code>".)</span></li>

programming_language: HTML
filename: ExifTool.pm
change_type: ModificationType.MODIFY
diff: @@ -28,7 +28,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
             %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
             %jpegMarker %specialTags %fileTypeLookup $testLen $exePath);
 
-$VERSION = '12.23';
+$VERSION = '12.24';
 $RELEASE = '';
 @ISA = qw(Exporter);
 %EXPORT_TAGS = (
@@ -189,19 +189,19 @@ $defaultLang = 'en';    # default language
                 FLAC APE MPC MKV MXF DV PMP IND PGF ICC ITC FLIR FLIF FPF LFP
                 HTML VRD RTF FITS XCF DSS QTIF FPX PICT ZIP GZIP PLIST RAR BZ2
                 CZI TAR  EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font RSRC M2TS
-                MacOS PHP PCX DCX DWF DWG WTV Torrent VCard LRI R3D AA PDB MOI
-                ISO ALIAS JSON MP3 DICOM PCD TXT);
+                MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard LRI R3D AA PDB
+                JXL MOI ISO ALIAS JSON MP3 DICOM PCD TXT);
 
 # file types that we can write (edit)
 my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM EPS
-                    X3F PS PDF ICC VRD DR4 JP2 EXIF AI AIT IND MOV EXV FLIF);
+                    X3F PS PDF ICC VRD DR4 JP2 JXL EXIF AI AIT IND MOV EXV FLIF);
 my %writeTypes; # lookup for writable file types (hash filled if required)
 
 # file extensions that we can't write for various base types
 %noWriteFile = (
     TIFF => [ qw(3FR DCR K25 KDC SRF) ],
     XMP  => [ qw(SVG INX) ],
-    JP2  => [ qw(J2C JPC JXC) ],
+    JP2  => [ qw(J2C JPC) ],
     MOV  => [ qw(INSV) ],
 );
 
@@ -292,6 +292,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
     DWF  => ['DWF',  'Autodesk drawing (Design Web Format)'],
     DWG  => ['DWG',  'AutoCAD Drawing'],
     DYLIB=> ['EXE',  'Mach-O Dynamic Link Library'],
+    DXF  => ['DXF',  'AutoCAD Drawing Exchange Format'],
     EIP  => ['ZIP',  'Capture One Enhanced Image Package'],
     EPS  => ['EPS',  'Encapsulated PostScript Format'],
     EPS2 =>  'EPS',
@@ -355,8 +356,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
     JPM  => ['JP2',  'JPEG 2000 compound image'],
     JPX  => ['JP2',  'JPEG 2000 with extensions'],
     JSON => ['JSON', 'JavaScript Object Notation'],
-    JXC  => ['JP2', 'JPEG XL Codestream'], # (JXC = PH invention, not a real extension)
-    JXL  => ['JP2', 'JPEG XL'],
+    JXL  => ['JXL',  'JPEG XL'],
     JXR  => ['TIFF', 'JPEG XR'],
     K25  => ['TIFF', 'Kodak DC25 RAW'],
     KDC  => ['TIFF', 'Kodak Digital Camera RAW'],
@@ -617,6 +617,7 @@ my %fileDescription = (
    'DVR-MS' => 'video/x-ms-dvr',
     DWF  => 'model/vnd.dwf',
     DWG  => 'image/vnd.dwg',
+    DXF  => 'application/dxf',
     EIP  => 'application/x-captureone', #(NC)
     EPS  => 'application/postscript',
     ERF  => 'image/x-epson-erf',
@@ -654,7 +655,6 @@ my %fileDescription = (
     JPM  => 'image/jpm',
     JPX  => 'image/jpx',
     JSON => 'application/json',
-    JXC  => 'image/x-jxc', #PH (invented)
     JXL  => 'image/jxl', #PH (NC)
     JXR  => 'image/jxr',
     K25  => 'image/x-kodak-k25',
@@ -805,6 +805,7 @@ my %moduleName = (
     DSS  => 'Olympus',
     DWF  => 0,
     DWG  => 0,
+    DXF  => 0,
     EPS  => 'PostScript',
     EXIF => '',
     EXR  => 'OpenEXR',
@@ -880,6 +881,7 @@ $testLen = 1024;    # number of bytes to read when testing for magic number
     DV   => '\x1f\x07\0[\x3f\xbf]', # (not tested if extension recognized)
     DWF  => '\(DWF V\d',
     DWG  => 'AC10\d{2}\0',
+    DXF  => '\s*0\s+\0?\s*SECTION\s+2\s+HEADER',
     EPS  => '(%!PS|%!Ad|\xc5\xd0\xd3\xc6)',
     EXE  => '(MZ|\xca\xfe\xba\xbe|\xfe\xed\xfa[\xce\xcf]|[\xce\xcf]\xfa\xed\xfe|Joy!peff|\x7fELF|#!\s*/\S*bin/|!<arch>\x0a)',
     EXIF => '(II\x2a\0|MM\0\x2a)',
@@ -902,9 +904,10 @@ $testLen = 1024;    # number of bytes to read when testing for magic number
     IND  => '\x06\x06\xed\xf5\xd8\x1d\x46\xe5\xbd\x31\xef\xe7\xfe\x74\xb7\x1d',
   # ISO  =>  signature is at byte 32768
     ITC  => '.{4}itch',
-    JP2  => '(\0\0\0\x0cjP(  |\x1a\x1a)\x0d\x0a\x87\x0a|\xff\x4f\xff\x51\0|\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl )',
+    JP2  => '(\0\0\0\x0cjP(  |\x1a\x1a)\x0d\x0a\x87\x0a|\xff\x4f\xff\x51\0)',
     JPEG => '\xff\xd8\xff',
     JSON => '(\xef\xbb\xbf)?\s*(\[\s*)?\{\s*"[^"]*"\s*:',
+    JXL  => '\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl ',
     LFP  => '\x89LFP\x0d\x0a\x1a\x0a',
     LNK  => '.{4}\x01\x14\x02\0{5}\xc0\0{6}\x46',
     LRI  => 'LELR \0',

programming_language: Perl
filename: ExifTool.pod
change_type: ModificationType.MODIFY
diff: @@ -441,9 +441,10 @@ Default is undef.
 
 =item BlockExtract
 
-Flag to extract some directories (mentioned in the Tag Name documentation)
-as a block.  Setting this to a value of 2 also prevents parsing the block to
-extract tags contained within.
+Flag to extract some directories (mentioned in the
+L<ExifTool tag name documentation|Image::ExifTool::TagNames>) as a block. 
+Setting this to a value of 2 also prevents parsing the block to extract tags
+contained within.
 
 =item ByteOrder
 

programming_language: Perl
filename: DjVu.pm
change_type: ModificationType.MODIFY
diff: @@ -18,7 +18,7 @@ use strict;
 use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 
-$VERSION = '1.06';
+$VERSION = '1.07';
 
 sub ParseAnt($);
 sub ProcessAnt($$$);
@@ -227,10 +227,11 @@ Tok: for (;;) {
                 last unless $tok =~ /(\\+)$/ and length($1) & 0x01;
                 $tok .= '"';    # quote is part of the string
             }
-            # must protect unescaped "$" and "@" symbols, and "\" at end of string
-            $tok =~ s{\\(.)|([\$\@]|\\$)}{'\\'.($2 || $1)}sge;
-            # convert C escape sequences (allowed in quoted text)
-            $tok = eval qq{"$tok"};
+            # convert C escape sequences, allowed in quoted text
+            # (note: this only converts a few of them!)
+            my %esc = ( a => "\a", b => "\b", f => "\f", n => "\n",
+                        r => "\r", t => "\t", '"' => '"', '\\' => '\\' );
+            $tok =~ s/\\(.)/$esc{$1}||'\\'.$1/egs;
         } else {                # key name
             pos($$dataPt) = pos($$dataPt) - 1;
             # allow anything in key but whitespace, braces and double quotes

programming_language: Perl
filename: FujiFilm.pm
change_type: ModificationType.MODIFY
diff: @@ -31,7 +31,7 @@ use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 
-$VERSION = '1.79';
+$VERSION = '1.80';
 
 sub ProcessFujiDir($$$);
 sub ProcessFaceRec($$$);
@@ -507,6 +507,7 @@ my %faceCategories = (
             0 => 'Off',
             1 => 'On',
             2 => 'No flash & flash', #3
+            6 => 'Pixel Shift', #IB (GFX100S)
         },
     }],
     0x1101 => {
@@ -517,6 +518,8 @@ my %faceCategories = (
         Name => 'DriveSettings',
         SubDirectory => { TagTable => 'Image::ExifTool::FujiFilm::DriveSettings' },
     },
+    0x1105 => { Name => 'PixelShiftShots',  Writable => 'int16u' }, #IB
+    0x1106 => { Name => 'PixelShiftOffset', Writable => 'rational64s', Count => 2 }, #IB
     # (0x1150-0x1152 exist only for Pro Low-light and Pro Focus PictureModes)
     # 0x1150 - Pro Low-light - val=1; Pro Focus - val=2 (ref 7); HDR - val=128 (forum10799)
     # 0x1151 - Pro Low-light - val=4 (number of pictures taken?); Pro Focus - val=2,3 (ref 7); HDR - val=3 (forum10799)
@@ -915,15 +918,22 @@ my %faceCategories = (
     WRITABLE => 1,
     0.1 => {
         Name => 'FocusMode2',
-        Mask => 0x000000ff,
+        Mask => 0x0000000f,
         PrintConv => {
-            0x00 => 'AF-M',
-            0x01 => 'AF-S',
-            0x02 => 'AF-C',
-            0x11 => 'AF-S (Auto)',
+            0x0 => 'AF-M',
+            0x1 => 'AF-S',
+            0x2 => 'AF-C',
         },
     },
     0.2 => {
+        Name => 'PreAF',
+        Mask => 0x00f0,
+        PrintConv => {
+            0 => 'Off',
+            1 => 'On',
+        },
+    },
+    0.3 => {
         Name => 'AFAreaMode',
         Mask => 0x0f00,
         PrintConv => {
@@ -932,7 +942,7 @@ my %faceCategories = (
             2 => 'Wide/Tracking',
         },
     },
-    0.3 => {
+    0.4 => {
         Name => 'AFAreaPointSize',
         Mask => 0xf000,
         PrintConv => {
@@ -940,7 +950,7 @@ my %faceCategories = (
             OTHER => sub { return $_[0] },
         },
     },
-    0.4 => {
+    0.5 => {
         Name => 'AFAreaZoneSize',
         Mask => 0xf0000,
         PrintConv => {

programming_language: Perl
filename: Jpeg2000.pm
change_type: ModificationType.MODIFY
diff: @@ -607,8 +607,8 @@ my %jumbfTypes = (
     PROCESS_PROC => \&ProcessJUMD,
     GROUPS => { 0 => 'JUMBF', 1 => 'JUMBF', 2 => 'Image' },
     NOTES => 'Information extracted from the JUMBF description box.',
-    type => {
-        Name => 'JUMBFType',
+    'jumd-type' => {
+        Name => 'JUMDType',
         ValueConv => 'unpack "H*", $val',
         PrintConv => q{
             my @a = $val =~ /^(\w{8})(\w{4})(\w{4})(\w{16})$/;
@@ -621,9 +621,18 @@ my %jumbfTypes = (
         # cacb/cast/caas/cacl/casg/json-00110010800000aa00389b71
         # 6579d6fbdba2446bb2ac1b82feeb89d1 - JPEG image
     },
-    label      => { Name => 'JUMBFLabel' },
-    id         => { Name => 'JUMBFID', Description => 'JUMBF ID' },
-    signature  => { Name => 'JUMBFSignature', PrintConv => 'unpack "H*", $val' },
+    'jumd-label' => { Name => 'JUMDLabel' },
+    'jumd-flags' => {
+        Name => 'JUMDFlags',
+        PrintConv => { BITMASK => {
+            0 => 'Requestable',
+            1 => 'Label',
+            2 => 'ID',
+            3 => 'Signature',
+        }},
+    },
+    'jumd-id'    => { Name => 'JUMDID', Description => 'JUMD ID' },
+    'jumd-sig'   => { Name => 'JUMDSignature', PrintConv => 'unpack "H*", $val' },
 );
 
 #------------------------------------------------------------------------------
@@ -666,15 +675,16 @@ sub ProcessJUMD($$$)
     delete $$et{JUMBFLabel};
     $$dirInfo{DirLen} < 17 and $et->Warn('Truncated JUMD directory'), return 0;
     my $type = substr($$dataPt, $pos, 4);
-    $et->HandleTag($tagTablePtr, 'type', substr($$dataPt, $pos, 16));
+    $et->HandleTag($tagTablePtr, 'jumd-type', substr($$dataPt, $pos, 16));
     $pos += 16;
     my $flags = Get8u($dataPt, $pos++);
+    $et->HandleTag($tagTablePtr, 'jumd-flags', $flags);
     if ($flags & 0x02) {    # label exists?
         pos($$dataPt) = $pos;
         $$dataPt =~ /\0/g or $et->Warn('Missing JUMD label terminator'), return 0;
         my $len = pos($$dataPt) - $pos;
         my $name = substr($$dataPt, $pos, $len);
-        $et->HandleTag($tagTablePtr, 'label', $name);
+        $et->HandleTag($tagTablePtr, 'jumd-label', $name);
         $pos += $len;
         if ($len) {
             $name =~ s/[^-_a-zA-Z0-9]([a-z])/\U$1/g; # capitalize characters after illegal characters
@@ -686,12 +696,12 @@ sub ProcessJUMD($$$)
     }
     if ($flags & 0x04) {    # ID exists?
         $pos + 4 > $end and $et->Warn('Missing JUMD ID'), return 0;
-        $et->HandleTag($tagTablePtr, 'id', Get32u($dataPt, $pos));
+        $et->HandleTag($tagTablePtr, 'jumd-id', Get32u($dataPt, $pos));
         $pos += 4;
     }
     if ($flags & 0x08) {    # signature exists?
         $pos + 32 > $end and $et->Warn('Missing JUMD signature'), return 0;
-        $et->HandleTag($tagTablePtr, 'signature', substr($$dataPt, $pos, 32));
+        $et->HandleTag($tagTablePtr, 'jumd-sig', substr($$dataPt, $pos, 32));
         $pos += 32;
     }
     $pos == $end or $et->Warn('Extra data in JUMD box'." $pos $end", 1);
@@ -1043,6 +1053,7 @@ sub GetBits($$)
 #------------------------------------------------------------------------------
 # Extract parameters from JPEG XL codestream [unverified!]
 # Inputs: 0) ExifTool ref, 1) codestream ref
+# Returns: 1
 sub ProcessJXLCodestream($$)
 {
     my ($et, $dataPt) = @_;
@@ -1076,6 +1087,7 @@ sub ProcessJXLCodestream($$)
     }
     $et->FoundTag(ImageWidth => $x);
     $et->FoundTag(ImageHeight => $y);
+    return 1;
 }
 
 #------------------------------------------------------------------------------
@@ -1094,16 +1106,8 @@ sub ProcessJP2($$)
     return 0 unless $raf->Read($hdr,12) == 12;
     unless ($hdr eq "\0\0\0\x0cjP  \x0d\x0a\x87\x0a" or     # (ref 1)
             $hdr eq "\0\0\0\x0cjP\x1a\x1a\x0d\x0a\x87\x0a" or # (ref 2)
-            ($hdr eq "\0\0\0\x0cJXL \x0d\x0a\x87\x0a" and $$et{IsJXL} = 1)) # (JPEG XL)
+            $$et{IsJXL})
     {
-        if ($hdr =~ /^\xff\x0a/) {
-            $outfile and $et->Error('Writing of JPEG XL codestream files is not yet supported'), return 0;
-            # JPEG XL codestream
-            $et->SetFileType('JXC',undef,'JXL'); # (PH invention)
-            $et->Warn('JPEG XL codestream support is currently experimental',1);
-            ProcessJXLCodestream($et, \$hdr);
-            return 1;
-        }
         return 0 unless $hdr =~ /^\xff\x4f\xff\x51\0/;  # check for JP2 codestream format
         if ($outfile) {
             $et->Error('Writing of J2C files is not yet supported');
@@ -1117,7 +1121,6 @@ sub ProcessJP2($$)
         $raf->Seek(0,0);
         return $et->ProcessJPEG($dirInfo);    # decode with JPEG processor
     }
-    $et->Warn('JPEG XL support is currently experimental',1) if $$et{IsJXL};
     if ($outfile) {
         Write($outfile, $hdr) or return -1;
         if ($$et{IsJXL}) {
@@ -1154,11 +1157,56 @@ sub ProcessJP2($$)
 #------------------------------------------------------------------------------
 # Read meta information from a JPEG XL image
 # Inputs: 0) ExifTool object reference, 1) dirInfo reference
-# Returns: 1 on success, 0 if this wasn't a valid JPEG XL file
+# Returns: 1 on success, 0 if this wasn't a valid JPEG XL file, -1 on write error
 sub ProcessJXL($$)
 {
     my ($et, $dirInfo) = @_;
-    return ProcessJP2($et, $dirInfo);
+    my $raf = $$dirInfo{RAF};
+    my $outfile = $$dirInfo{OutFile};
+    my ($hdr, $buff);
+
+    return 0 unless $raf->Read($hdr,12) == 12;
+    if ($hdr eq "\0\0\0\x0cJXL \x0d\x0a\x87\x0a") {
+        # JPEG XL in ISO BMFF container
+        $$et{IsJXL} = 1;
+    } elsif ($hdr =~ /^\xff\x0a/) {
+        # JPEG XL codestream
+        if ($outfile) {
+            if ($$et{OPTIONS}{IgnoreMinorErrors}) {
+                $et->Warn('Wrapped JXL codestream in ISO BMFF container');
+            } else {
+                $et->Error('Will wrap JXL codestream in ISO BMFF container for writing',1);
+                return 0;
+            }
+            $$et{IsJXL} = 2;
+            my $buff = "\0\0\0\x0cJXL \x0d\x0a\x87\x0a\0\0\0\x14ftypjxl \0\0\0\0jxl ";
+            # add metadata to empty ISO BMFF container
+            $$dirInfo{RAF} = new File::RandomAccess(\$buff);
+        } else {
+            $et->Warn('JPEG XL codestream support is currently experimental',1);
+            $et->SetFileType('JXL Codestream','image/jxl', 'jxl');
+            return ProcessJXLCodestream($et, \$hdr);
+        }
+    } else {
+        return 0;
+    }
+    $raf->Seek(0,0) or $et->Error('Seek error'), return 0;
+    $et->Warn('JPEG XL support is currently experimental',1);
+
+    my $success = ProcessJP2($et, $dirInfo);
+
+    if ($outfile and $success > 0 and $$et{IsJXL} == 2) {
+        # attach the JXL codestream box to the ISO BMFF file
+        $raf->Seek(0,2) or return -1;
+        my $size = $raf->Tell();
+        $raf->Seek(0,0) or return -1;
+        SetByteOrder('MM');
+        Write($outfile, Set32u($size + 8), 'jxlc') or return -1;
+        while ($raf->Read($buff, 65536)) {
+            Write($outfile, $buff) or return -1;
+        }
+    }
+    return $success;
 }
 
 1;  # end

programming_language: Perl
filename: MacOS.pm
change_type: ModificationType.MODIFY
diff: @@ -245,7 +245,7 @@ my %mdDateInfo = (
         XAttr tags are extracted using the "xattr" utility.  They are extracted if
         any "XAttr*" tag or the MacOS group is specifically requested, or by setting
         the L<XAttrTags|../ExifTool.html#XAttrTags> API option to 1 or the L<RequestAll|../ExifTool.html#RequestAll> API option to 2 or higher.
-        And they extracted by default from MacOS "._" files when reading
+        And they are extracted by default from MacOS "._" files when reading
         these files directly.
     },
     'com.apple.FinderInfo' => {

programming_language: Perl
filename: Microsoft.pm
change_type: ModificationType.MODIFY
diff: @@ -889,12 +889,14 @@ sub WriteXtraValue($$$)
         } elsif ($format eq 'date') {
             $dat = Image::ExifTool::GetUnixTime($val, 1);   # (convert to UTC, NC)
             if ($dat) {
+                # 100ns intervals since Jan 1, 1601
                 $dat = Set64u(($dat + 11644473600) * 1e7);
                 $type = 21;
             }
-        } elsif ($format eq 'vt_filetime') {
+        } elsif ($format eq 'vt_filetime') { # 'date' value inside a VT_VARIANT
             $dat = Image::ExifTool::GetUnixTime($val);  # (leave as local time, NC)
             if ($dat) {
+                # 100ns intervals since Jan 1, 1601
                 $dat = Set32u(64) . Set64u(($dat + 11644473600) * 1e7);
                 $type = 65;
             }

programming_language: Perl
filename: Panasonic.pm
change_type: ModificationType.MODIFY
diff: @@ -2118,6 +2118,7 @@ my %shootingMode = (
         Name => 'UserProfile',
         Writable => 'string',
     },
+    # 0x357 int32u - 0=DNG, 3162=JPG (ref 23)
     0x359 => { #23
         Name => 'ISOSelected',
         Writable => 'int32s',
@@ -2134,7 +2135,19 @@ my %shootingMode = (
         PrintConv => 'sprintf("%.1f", $val)',
         PrintConvInv => '$val',
     },
-    # 0x357 int32u - 0=DNG, 3162=JPG (ref 23)
+    0x035b => { #IB
+        Name => 'CorrelatedColorTemp', # (in Kelvin)
+        Writable => 'int16u',
+    },
+    0x035c => { #IB
+        Name => 'ColorTint', # (same units as Adobe is using)
+        Writable => 'int16s',
+    },
+    0x035d => { #IB
+        Name => 'WhitePoint', # (x/y)
+        Writable => 'rational64u',
+        Count => 2,
+    },
 );
 
 # Type 2 tags (ref PH)

programming_language: Perl
filename: PhaseOne.pm
change_type: ModificationType.MODIFY
diff: @@ -15,7 +15,7 @@ use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 
-$VERSION = '1.06';
+$VERSION = '1.07';
 
 sub WritePhaseOne($$$);
 sub ProcessPhaseOne($$$);
@@ -73,10 +73,11 @@ my @formatName = ( undef, 'string', 'int16s', undef, 'int32s' );
         PrintConv => { #PH
             1 => 'RAW 1', #? (encrypted)
             2 => 'RAW 2', #? (encrypted)
-            3 => 'IIQ L',
+            3 => 'IIQ L', # (now "L14", ref IB)
             # 4?
             5 => 'IIQ S',
-            6 => 'IIQ Sv2',
+            6 => 'IIQ Sv2', # (now "S14" for "IIQ 14 Smart" and "IIQ 14 Sensor+", ref IB)
+            8 => 'IIQ L16', #IB ("IIQ 16 Extended" and "IIQ 16 Large")
         },
     },
     0x010f => {

programming_language: Perl
filename: Sony.pm
change_type: ModificationType.MODIFY
diff: @@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 use Image::ExifTool::Minolta;
 
-$VERSION = '3.39';
+$VERSION = '3.40';
 
 sub ProcessSRF($$$);
 sub ProcessSR2($$$);
@@ -633,9 +633,10 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
             3 => 'Standard',
             4 => 'Economy',
             5 => 'Extra Fine',
-            6 => 'RAW + JPEG',
+            6 => 'RAW + JPEG/HEIF',
             7 => 'Compressed RAW',
             8 => 'Compressed RAW + JPEG',
+            9 => 'Light', #JR
             0xffffffff => 'n/a', #PH (SLT-A57 panorama)
         },
     },
@@ -1179,7 +1180,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
         # doesn't seem to apply to DSC models (always 0)
         Name => 'AFPointSelected',
         Condition => q{
-            ($$self{Model} =~ /^(SLT-|HV)/) or ($$self{Model} =~ /^ILCE-/ and
+            ($$self{Model} =~ /^(SLT-|HV)/) or ($$self{Model} =~ /^(ILCE-|ILME-)/ and
             defined $$self{AFAreaILCE} and  $$self{AFAreaILCE} == 4)
         },
         Notes => 'SLT models or ILCE with LA-EA2/EA4',
@@ -1462,13 +1463,15 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
         Count => 2,
         PrintConv => {
             '0 0' => 'n/a',
-            '0 1' => 'Standard JPEG',
-            '0 2' => 'Fine JPEG',
-            '0 3' => 'Extra Fine JPEG',
+            '0 1' => 'Standard',
+            '0 2' => 'Fine',
+            '0 3' => 'Extra Fine',
+            '0 4' => 'Light', #JR
             '1 0' => 'RAW',
-            '1 1' => 'RAW + Standard JPEG',
-            '1 2' => 'RAW + Fine JPEG',
-            '1 3' => 'RAW + Extra Fine JPEG',
+            '1 1' => 'RAW + Standard',
+            '1 2' => 'RAW + Fine',
+            '1 3' => 'RAW + Extra Fine',
+            '1 4' => 'RAW + Light', #JR
         },
     },
     0x202f => { #JR (ILCE-7RM3)
@@ -1514,13 +1517,56 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
         PrintConv => 'sprintf("%.8d",$val)',
         PrintConvInv => '$val',
     },
-# 0x2032 - first seen for ILCE-7SM3, July 2020
-# 0x2033 - first seen for ILCE-7SM3, July 2020
-# 0x2034 - first seen for ILCE-7SM3, July 2020
-# 0x2035 - first seen for ILCE-7SM3, July 2020
-# 0x2036 - first seen for ILCE-7SM3, July 2020
-# 0x2037 - first seen for ILCE-7SM3, July 2020
-# 0x2039 - first seen for ILCE-7SM3, July 2020
+# 0x2032 - 0x2039: from July 2020 for ILCE-7SM3, ILCE-1, ILME-FX3 and newer
+    0x2032 => {
+        Name => 'Shadows',
+        Writable => 'int32s',
+        PrintConv => '$val > 0 ? "+$val" : $val',
+        PrintConvInv => '$val',
+    },
+    0x2033 => {
+        Name => 'Highlights',
+        Writable => 'int32s',
+        PrintConv => '$val > 0 ? "+$val" : $val',
+        PrintConvInv => '$val',
+    },
+    0x2034 => {
+        Name => 'Fade',
+        Writable => 'int32s',
+        PrintConv => '$val > 0 ? "+$val" : $val',
+        PrintConvInv => '$val',
+    },
+    0x2035 => {
+        Name => 'SharpnessRange',
+        Writable => 'int32s',
+        PrintConv => '$val > 0 ? "+$val" : $val',
+        PrintConvInv => '$val',
+    },
+    0x2036 => {
+        Name => 'Clarity',
+        Writable => 'int32s',
+        PrintConv => '$val > 0 ? "+$val" : $val',
+        PrintConvInv => '$val',
+    },
+    0x2037 => {
+        Name => 'FocusFrameSize',
+        Format => 'int16u',
+        Count => '3',
+        PrintConv => q{
+            my @a = split ' ', $val;
+            return $a[2] ? sprintf('%3dx%3d', $a[0], $a[1]) : 'n/a';
+        },
+        PrintConvInv => '$val =~ /(\d+)x(\d+)/ ? "$1 $2 257" : "0 0 0"',
+    },
+    0x2039 => { #JR
+        Name => 'JPEG-HEIFSwitch', # (name used in camera menus)
+        Writable => 'int16u',
+        PrintConv => {
+            0 => 'JPEG',
+            1 => 'HEIF',
+            65535 => 'n/a',
+        },
+    },
     0x3000 => {
         Name => 'ShotInfo',
         SubDirectory => { TagTable => 'Image::ExifTool::Sony::ShotInfo' },
@@ -1583,7 +1629,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
     # 0x24 (e) for ILCA-99M2,ILCE-5100/6300/6500/7M2/7RM2/7S/7SM2/QX1, DSC-HX80/HX90V/QX30/RX0/RX100M3/RX100M4/RX100M5/RX10M2/RX10M3/RX1RM2/WX500
     # 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX99
     # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1
-    # 0x31 (e) for ILCE-1, 7SM3
+    # 0x31 (e) for ILCE-1/7SM3, ILME-FX3
     # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106 respectively
     {
         Name => 'Tag9400a',
@@ -6080,6 +6126,9 @@ my %pictureProfile2010 = (
         31 => 'Gamma S-Log3 (PP8 or PP9)', #14
         33 => 'Gamma HLG2 (PP10)', #14
         34 => 'Gamma HLG3', #IB
+        37 => 'FL',
+        39 => 'IN',
+        40 => 'SH',
     },
 );
 my %isoSetting2010 = (
@@ -7801,7 +7850,7 @@ my %isoSetting2010 = (
     CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
     FORMAT => 'int8u',
     NOTES => q{
-        Valid from July 2020 for ILCE-1/7SM3.
+        Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
     },
     WRITABLE => 1,
     FIRST_ENTRY => 0,
@@ -7888,6 +7937,13 @@ my %isoSetting2010 = (
     },
     0x0088 => {
         Name => 'InternalSerialNumber', #(NC)
+        Condition => '$$self{Model} =~ /^(ILCE-7SM3|ILME-FX3)/',
+        Format => 'int8u[6]',
+        PrintConv => 'unpack "H*", pack "C*", split " ", $val',
+    },
+    0x008a => {
+        Name => 'InternalSerialNumber', #(NC)
+        Condition => '$$self{Model} =~ /^(ILCE-1)/',
         Format => 'int8u[6]',
         PrintConv => 'unpack "H*", pack "C*", split " ", $val',
     },
@@ -8117,7 +8173,7 @@ my %isoSetting2010 = (
             8 => 'Rotate 270 CW',
         },
     },
-    0x002a => {
+    0x002a => [{
         Name => 'Quality2',
         Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
         PrintConv => {
@@ -8126,7 +8182,17 @@ my %isoSetting2010 = (
             2 => 'RAW + JPEG',
             3 => 'JPEG + MPO', # 3D images
         },
-    },
+    },{
+        Name => 'Quality2',
+        Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
+        PrintConv => {
+            1 => 'JPEG',
+            2 => 'RAW',
+            3 => 'RAW + JPEG',
+            4 => 'HEIF',
+            6 => 'RAW + HEIF',
+        },
+    }],
     0x0047 => {
         Name => 'SonyImageHeight',
         Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
@@ -8795,7 +8861,7 @@ my %isoSetting2010 = (
     FIRST_ENTRY => 0,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
     DATAMEMBER => [ 0x0008 ],
-    NOTES => 'NEX and ILCE models only.',
+    NOTES => 'E-mount cameras only.',
 
     # 0x0001 - 0 for all NEX and ILCE-3000/3500, 20 for all other ILCE (17 for ILCE samples from Sony.net)
     # 0x0008 - LensMount, but different values from Tag9405-0x0105 and Tag9050-0x0604.
@@ -9422,7 +9488,7 @@ my %isoSetting2010 = (
     WRITE_PROC => \&WriteEnciphered,
     CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
     FORMAT => 'int8u',
-    NOTES => 'Valid for the ILCE-1/7SM3.',
+    NOTES => 'Valid for the ILCE-1/7SM3, ILME-FX3.',
     FIRST_ENTRY => 0,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
     0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },

programming_language: Perl
filename: TagLookup.pm
change_type: ModificationType.MODIFY
diff: @@ -631,9 +631,9 @@ my %tagLookup = (
 	'afaperture' => { 215 => 0x5, 216 => 0x5, 220 => 0x5 },
 	'afareaheight' => { 190 => [0x1a,0x34,0x50] },
 	'afareaillumination' => { 181 => 0x4b, 282 => '15.3' },
-	'afareamode' => { 124 => '0.2', 177 => 0x33, 181 => 0xe, 189 => 0x0, 190 => 0x5, 311 => 0xf, 378 => 0x1205, 391 => [0xa,0x3a], 398 => 0x11, 399 => 0x10, 400 => 0x24, 411 => 0xb043, 435 => 0x17 },
+	'afareamode' => { 124 => '0.3', 177 => 0x33, 181 => 0xe, 189 => 0x0, 190 => 0x5, 311 => 0xf, 378 => 0x1205, 391 => [0xa,0x3a], 398 => 0x11, 399 => 0x10, 400 => 0x24, 411 => 0xb043, 435 => 0x17 },
 	'afareamodesetting' => { 273 => '11.1', 276 => '0.1', 282 => '16.1', 286 => '2.1', 411 => 0x201c },
-	'afareapointsize' => { 124 => '0.3' },
+	'afareapointsize' => { 124 => '0.4' },
 	'afareas' => { 288 => 0x304 },
 	'afareaselectionmethod' => { 2 => 0xd },
 	'afareaselectmethod' => { 82 => 0x51b },
@@ -642,7 +642,7 @@ my %tagLookup = (
 	'afareaxposition1' => { 378 => 0x1201 },
 	'afareayposition' => { 190 => [0x16,0x30,0x4c], 378 => 0x1204 },
 	'afareayposition1' => { 378 => 0x1202 },
-	'afareazonesize' => { 124 => '0.4' },
+	'afareazonesize' => { 124 => '0.5' },
 	'afassist' => { 80 => 0x5, 88 => 0x5, 181 => 0x48, 271 => '2.5', 273 => '0.2', 276 => '0.2', 277 => '1.1', 278 => '1.1', 279 => '1.3', 280 => '2.4', 281 => '1.3', 282 => '0.2', 284 => '2.4', 286 => '2.3' },
 	'afassistbeam' => { 2 => 0x8, 82 => 0x50e, 83 => 0x4, 84 => 0x5, 85 => 0x4, 86 => 0x4, 87 => 0x5 },
 	'afassistlamp' => { 311 => 0x31 },
@@ -1453,7 +1453,7 @@ my %tagLookup = (
 	'circulargradientbasedcorrections' => { 468 => 'CircularGradientBasedCorrections', 470 => 'CircularGradientBasedCorrections' },
 	'city' => { 129 => 0x5a, 158 => 'City', 311 => 0x6d, 482 => 'City' },
 	'city2' => { 311 => 0x80 },
-	'clarity' => { 225 => 0x35, 226 => 0x3d, 468 => 'Clarity', 470 => 'Clarity' },
+	'clarity' => { 225 => 0x35, 226 => 0x3d, 411 => 0x2036, 468 => 'Clarity', 470 => 'Clarity' },
 	'clarity2012' => { 468 => 'Clarity2012', 470 => 'Clarity2012' },
 	'claritycontrol' => { 346 => 0x96 },
 	'classifystate' => { 129 => 0xe1 },
@@ -1620,6 +1620,7 @@ my %tagLookup = (
 	'colortempunknown7' => { 38 => 0x54, 39 => 0x87, 41 => 0x86, 42 => 0x67, 46 => 0x93, 47 => 0x70, 48 => 0x70, 49 => 0x78 },
 	'colortempunknown8' => { 38 => 0x59, 39 => 0x8f, 41 => 0x8b, 42 => 0x6c, 46 => 0x98, 47 => 0x75, 48 => 0x75, 49 => 0x7d },
 	'colortempunknown9' => { 38 => 0x5e, 39 => 0x97, 41 => 0x90, 42 => 0x71, 46 => 0x9d, 47 => 0x7a, 48 => 0x7a, 49 => 0x82 },
+	'colortint' => { 310 => 0x35c },
 	'colortone' => { 10 => 0x6f, 12 => 0x77, 34 => 0x2a, 50 => 0x2 },
 	'colortoneadj' => { 101 => 0x20304, 106 => 0x11e },
 	'colortoneauto' => { 69 => 0x9c },
@@ -1786,6 +1787,7 @@ my %tagLookup = (
 	'coringfilter' => { 292 => 0x310, 293 => 0x102d, 296 => 0x310 },
 	'coringvalues' => { 292 => 0x311, 296 => 0x311 },
 	'corporateentity' => { 484 => 'corporateEntity' },
+	'correlatedcolortemp' => { 310 => 0x35b },
 	'country' => { 158 => 'Country', 311 => 0x69, 482 => 'Country' },
 	'country-primarylocationcode' => { 129 => 0x64 },
 	'country-primarylocationname' => { 129 => 0x65 },
@@ -2529,6 +2531,7 @@ my %tagLookup = (
 	'facesdetected' => { 53 => 0x2, 54 => 0x2, 55 => 0x3, 108 => 0x0, 109 => 0x2, 111 => 0x211c, 125 => 0x4100, 203 => 0x3, 292 => 0x1200, 311 => 0x3f, 330 => 0x0, 375 => 0xb5, 386 => 0x0, 405 => 0x0, 408 => 0x3, 418 => 0x30 },
 	'facesrecognized' => { 304 => 0x0 },
 	'facewidth' => { 54 => 0x1 },
+	'fade' => { 411 => 0x2034 },
 	'faithfuloutputhighlightpoint' => { 107 => 0x38 },
 	'faithfuloutputshadowpoint' => { 107 => 0x39 },
 	'faithfulrawcolortone' => { 107 => 0x31 },
@@ -3059,7 +3062,7 @@ my %tagLookup = (
 	'highlightlinearitylimit' => { 385 => 0xa025 },
 	'highlightprotection' => { 263 => 0x6 },
 	'highlightrecovery' => { 468 => 'HighlightRecovery', 470 => 'HighlightRecovery' },
-	'highlights' => { 462 => 'Highlights' },
+	'highlights' => { 411 => 0x2033, 462 => 'Highlights' },
 	'highlights2012' => { 468 => 'Highlights2012', 470 => 'Highlights2012' },
 	'highlightsadj' => { 445 => 0x9019 },
 	'highlightshadow' => { 311 => 0xad },
@@ -3304,7 +3307,7 @@ my %tagLookup = (
 	'internalflashtable' => { 293 => 0x1024 },
 	'internallensserialnumber' => { 385 => 0xa005 },
 	'internalndfilter' => { 311 => 0x9d },
-	'internalserialnumber' => { 62 => 0x96, 74 => 0x9, 125 => 0x10, 184 => 0x49dc, 287 => 0x18, 289 => 0x102, 308 => 0x500, 311 => 0x25, 326 => 0x4, 378 => 0x5, 429 => [0x7c,0xf0], 430 => 0x88, 431 => 0x88 },
+	'internalserialnumber' => { 62 => 0x96, 74 => 0x9, 125 => 0x10, 184 => 0x49dc, 287 => 0x18, 289 => 0x102, 308 => 0x500, 311 => 0x25, 326 => 0x4, 378 => 0x5, 429 => [0x7c,0xf0], 430 => 0x88, 431 => [0x88,0x8a] },
 	'interopindex' => { 117 => 0x1, 475 => 'InteroperabilityIndex' },
 	'interopversion' => { 117 => 0x2 },
 	'intervallength' => { 178 => 0x10 },
@@ -3374,6 +3377,7 @@ my %tagLookup = (
 	'jobrefname' => { 493 => [\'JobRef','JobRefName'] },
 	'jobrefurl' => { 493 => [\'JobRef','JobRefUrl'] },
 	'jobstatus' => { 476 => 'JobStatus' },
+	'jpeg-heifswitch' => { 411 => 0x2039 },
 	'jpeghandling' => { 468 => 'JPEGHandling', 470 => 'JPEGHandling' },
 	'jpegquality' => { 10 => 0x66, 311 => 0x43, 313 => 0x3034, 411 => 0xb047 },
 	'jpegsize' => { 313 => 0x303a },
@@ -4655,7 +4659,9 @@ my %tagLookup = (
 	'pixelcorrectionscale' => { 135 => 0x971 },
 	'pixelscale' => { 117 => 0x830e },
 	'pixelshiftinfo' => { 411 => 0x202f },
+	'pixelshiftoffset' => { 125 => 0x1106 },
 	'pixelshiftresolution' => { 347 => 0x0 },
+	'pixelshiftshots' => { 125 => 0x1105 },
 	'pixelsperunitx' => { 300 => 0x0 },
 	'pixelsperunity' => { 300 => 0x4 },
 	'pixelunits' => { 300 => 0x8 },
@@ -4746,6 +4752,7 @@ my %tagLookup = (
 	'potentialface8position' => { 408 => 0x51 },
 	'powersource' => { 325 => '0.1' },
 	'poweruptime' => { 222 => 0xb6 },
+	'preaf' => { 124 => '0.2' },
 	'precaptureframes' => { 293 => 0x300 },
 	'predictor' => { 117 => 0x13d },
 	'preflashreturnstrength' => { 238 => 0x28a },
@@ -5351,7 +5358,7 @@ my %tagLookup = (
 	'shadowadj' => { 101 => 0x2030b },
 	'shadowcorrection' => { 346 => 0x79 },
 	'shadowprotection' => { 263 => 0x0 },
-	'shadows' => { 117 => 0xfe52, 462 => 'Shadows', 468 => 'Shadows', 470 => 'Shadows' },
+	'shadows' => { 117 => 0xfe52, 411 => 0x2032, 462 => 'Shadows', 468 => 'Shadows', 470 => 'Shadows' },
 	'shadows2012' => { 468 => 'Shadows2012', 470 => 'Shadows2012' },
 	'shadowsadj' => { 445 => 0x901a },
 	'shadowscale' => { 117 => 0xc633 },
@@ -5377,6 +5384,7 @@ my %tagLookup = (
 	'sharpnessneutral' => { 19 => 0xf4, 68 => 0x4c, 69 => 0x4c },
 	'sharpnessovershoot' => { 445 => 0x801b },
 	'sharpnessportrait' => { 19 => 0xf2, 68 => 0x1c, 69 => 0x1c },
+	'sharpnessrange' => { 411 => 0x2035 },
 	'sharpnesssetting' => { 288 => 0x506, 296 => 0x1013, 400 => 0x12, 416 => 0xa },
 	'sharpnessstandard' => { 19 => 0xf1, 68 => 0x4, 69 => 0x4 },
 	'sharpnessstrength' => { 101 => 0x20311 },
@@ -6354,7 +6362,7 @@ my %tagLookup = (
 	'whitebalancetemperature' => { 288 => 0x501 },
 	'whiteboard' => { 293 => 0x301 },
 	'whitelevel' => { 117 => 0xc61d, 346 => 0x7e },
-	'whitepoint' => { 117 => 0x13e, 346 => 0x201, 490 => 'WhitePoint' },
+	'whitepoint' => { 117 => 0x13e, 310 => 0x35d, 346 => 0x201, 490 => 'WhitePoint' },
 	'whites2012' => { 468 => 'Whites2012', 470 => 'Whites2012' },
 	'whitesadj' => { 445 => 0x9017 },
 	'wideadapter' => { 378 => 0x1017 },
@@ -8117,6 +8125,7 @@ my %tagExists = (
 	'focalrange' => 1,
 	'focusdistance2' => 1,
 	'focusedgemap' => 1,
+	'focusframesize' => 1,
 	'focusinfo' => 1,
 	'focusinfoifd' => 1,
 	'focuspeakinghighlightcolor' => 1,
@@ -8703,10 +8712,11 @@ my %tagExists = (
 	'jumbf' => 1,
 	'jumbfbox' => 1,
 	'jumbfdescr' => 1,
-	'jumbfid' => 1,
-	'jumbflabel' => 1,
-	'jumbfsignature' => 1,
-	'jumbftype' => 1,
+	'jumdflags' => 1,
+	'jumdid' => 1,
+	'jumdlabel' => 1,
+	'jumdsignature' => 1,
+	'jumdtype' => 1,
 	'jumptoxpep' => 1,
 	'junk' => 1,
 	'jxlcodestream' => 1,

programming_language: Perl
filename: TagNames.pod
change_type: ModificationType.MODIFY
diff: @@ -12,7 +12,7 @@ meta information extracted from or written to a file.
 =head1 TAG TABLES
 
 The tables listed below give the names of all tags recognized by ExifTool.
-They contain a total of 24102 tags, with 15604 unique tag names.
+They contain a total of 24118 tags, with 15614 unique tag names.
 
 B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
 table.  A B<Tag ID> is the computer-readable equivalent of a tag name, and
@@ -9933,6 +9933,8 @@ Tags extracted from FLIR Public image Format (FPF) files.
   0x1100   AutoBracketing                       int16u
   0x1101   SequenceNumber                       int16u
   0x1103   DriveSettings                        FujiFilm DriveSettings
+  0x1105   PixelShiftShots                      int16u
+  0x1106   PixelShiftOffset                     rational64s[2]
   0x1153   PanoramaAngle                        int16u
   0x1154   PanoramaDirection                    int16u
   0x1201   AdvancedFilter                       int32u
@@ -9989,10 +9991,11 @@ Tags extracted from FLIR Public image Format (FPF) files.
 
   Index4   Tag Name                             Writable
   ------   --------                             --------
-    0.1    FocusMode2                           int32u & 0xff
-    0.2    AFAreaMode                           int32u & 0xf00
-    0.3    AFAreaPointSize                      int32u & 0xf000
-    0.4    AFAreaZoneSize                       int32u & 0xf0000
+    0.1    FocusMode2                           int32u & 0x0f
+    0.2    PreAF                                int32u & 0xf0
+    0.3    AFAreaMode                           int32u & 0xf00
+    0.4    AFAreaPointSize                      int32u & 0xf000
+    0.5    AFAreaZoneSize                       int32u & 0xf0000
 
 =head3 FujiFilm AFCSettings Tags
 
@@ -15802,6 +15805,9 @@ This information is written by the Leica S (Typ 007) and M10 models.
   0x034c   UserProfile                          string
   0x0359   ISOSelected                          int32s
   0x035a   FNumber                              int32s
+  0x035b   CorrelatedColorTemp                  int16u
+  0x035c   ColorTint                            int16s
+  0x035d   WhitePoint                           rational64u[2]
 
 =head3 Panasonic Type2 Tags
 
@@ -17514,6 +17520,13 @@ MakerNotes.
   0x202e   Quality                              int16u[2]
   0x202f   PixelShiftInfo                       undef
   0x2031   SerialNumber                         string
+  0x2032   Shadows                              int32s
+  0x2033   Highlights                           int32s
+  0x2034   Fade                                 int32s
+  0x2035   SharpnessRange                       int32s
+  0x2036   Clarity                              int32s
+  0x2037   FocusFrameSize                       no
+  0x2039   JPEG-HEIFSwitch                      int16u
   0x3000   ShotInfo                             Sony ShotInfo
   0x900b   Tag900b                              Sony Tag900b
   0x9050   Tag9050a                             Sony Tag9050a
@@ -18600,7 +18613,7 @@ Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/
 
 =head3 Sony Tag9050c Tags
 
-Valid from July 2020 for ILCE-1/7SM3.
+Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
 
   Index1   Tag Name                             Writable
   ------   --------                             --------
@@ -18615,6 +18628,7 @@ Valid from July 2020 for ILCE-1/7SM3.
     104    SonyFNumber                          int16u
     107    ReleaseMode2                         int8u
     136    InternalSerialNumber                 int8u[6]~
+    138    InternalSerialNumber                 int8u[6]~
 
 =head3 Sony Tag9400a Tags
 
@@ -18816,7 +18830,7 @@ These tags are currently extracted for SLT models only.
 
 =head3 Sony Tag940c Tags
 
-NEX and ILCE models only.
+E-mount cameras only.
 
   Index1   Tag Name                             Writable
   ------   --------                             --------
@@ -19006,7 +19020,7 @@ E-mount models.
 
 =head3 Sony Tag9416 Tags
 
-Valid for the ILCE-1/7SM3.
+Valid for the ILCE-1/7SM3, ILME-FX3.
 
   Index1   Tag Name                             Writable
   ------   --------                             --------
@@ -21877,10 +21891,11 @@ Information extracted from the JUMBF description box.
 
   Tag ID               Tag Name                 Writable
   ------               --------                 --------
-  'id'                 JUMBFID                  no
-  'label'              JUMBFLabel               no
-  'signature'          JUMBFSignature           no
-  'type'               JUMBFType                no
+  'jumd-flags'         JUMDFlags                no
+  'jumd-id'            JUMDID                   no
+  'jumd-label'         JUMDLabel                no
+  'jumd-sig'           JUMDSignature            no
+  'jumd-type'          JUMDType                 no
 
 =head3 Jpeg2000 CaptureResolution Tags
 
@@ -34897,7 +34912,7 @@ options, but these files are not writable directly.
 XAttr tags are extracted using the "xattr" utility.  They are extracted if
 any "XAttr*" tag or the MacOS group is specifically requested, or by setting
 the XAttrTags API option to 1 or the RequestAll API option to 2 or higher.
-And they extracted by default from MacOS "._" files when reading
+And they are extracted by default from MacOS "._" files when reading
 these files directly.
 
   Tag Name                                      Writable

programming_language: Markdown
filename: Writer.pl
change_type: ModificationType.MODIFY
diff: @@ -105,6 +105,7 @@ my %writableType = (
     ICC => [ 'ICC_Profile', 'WriteICC' ],
     IND =>   'InDesign',
     JP2 =>   'Jpeg2000',
+    JXL =>   'Jpeg2000',
     MIE =>   undef,
     MOV => [ 'QuickTime',   'WriteMOV' ],
     MRW =>   'MinoltaRaw',

programming_language: Perl
filename: perl-Image-ExifTool.spec
change_type: ModificationType.MODIFY
diff: @@ -1,6 +1,6 @@
 Summary: perl module for image data extraction
 Name: perl-Image-ExifTool
-Version: 12.23
+Version: 12.24
 Release: 1
 License: Artistic/GPL
 Group: Development/Libraries/Perl

programming_language: Markdown
filename: ExifTool_2.out
change_type: ModificationType.MODIFY
diff: @@ -1,9 +1,9 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.23
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.24
 [File, System, Other] FileName - File Name: ExifTool.jpg
 [File, System, Other] Directory - Directory: t/images
 [File, System, Other] FileSize - File Size: 25 KiB
 [File, System, Time] FileModifyDate - File Modification Date/Time: 2021:03:19 14:14:12-04:00
-[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:01 13:20:48-04:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:12 12:43:44-04:00
 [File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:03:19 14:31:48-04:00
 [File, System, Other] FilePermissions - File Permissions: -rw-r--r--
 [File, File, Other] FileType - File Type: JPEG
@@ -259,20 +259,26 @@
 [APP11, JPEG-HDR, Image] bet - Beta: 1.000000
 [APP11, JPEG-HDR, Image] cor - Correction Method: 0
 [APP11, JPEG-HDR, Preview] RatioImage - Ratio Image: (Binary data 19 bytes)
-[JUMBF, JUMBF, Image] type - JUMBF Type: cacb-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai
-[JUMBF, JUMBF, Image] type - JUMBF Type: cast-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cb.reuters_1
-[JUMBF, JUMBF, Image] type - JUMBF Type: caas-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.assertions
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: adobe.asset.info
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cacb-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cast-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cb.reuters_1
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: caas-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.assertions
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: adobe.asset.info
 [JUMBF, JSON, Other] title - Title: HEALTHCORONAVIRUSUSAOREGON_SALEM_08.jpg
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.location.broad
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.location.broad
 [JUMBF, JSON, Other] location - Location: Salem, Oregon
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.rights
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.rights
 [JUMBF, JSON, Other] copyright - Copyright: Alisha Jucevic
 [APP12, PictureInfo, Time] TimeDate - Date/Time Original: 1998:12:31 15:17:20
 [APP12, PictureInfo, Image] Shutter - Exposure Time: 1/155

programming_language: Markdown
filename: ExifTool_29.out
change_type: ModificationType.MODIFY
diff: @@ -258,20 +258,26 @@
 [APP11, JPEG-HDR, Image] bet - Beta: #.######
 [APP11, JPEG-HDR, Image] cor - Correction Method: #
 [APP11, JPEG-HDR, Preview] RatioImage - Ratio Image: (Binary data 19 bytes)
-[JUMBF, JUMBF, Image] type - JUMBF Type: cacb-####-####-######aa#####b##
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai
-[JUMBF, JUMBF, Image] type - JUMBF Type: cast-####-####-######aa#####b##
-[JUMBF, JUMBF, Image] label - JUMBF Label: cb.reuters_#
-[JUMBF, JUMBF, Image] type - JUMBF Type: caas-####-####-######aa#####b##
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.assertions
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-####-####-######aa#####b##
-[JUMBF, JUMBF, Image] label - JUMBF Label: adobe.asset.info
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cacb-####-####-######aa#####b##
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cast-####-####-######aa#####b##
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cb.reuters_#
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: caas-####-####-######aa#####b##
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.assertions
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-####-####-######aa#####b##
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: adobe.asset.info
 [JUMBF, JSON, Other] title - Title: HEALTHCORONAVIRUSUSAOREGON_SALEM_##.jpg
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-####-####-######aa#####b##
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.location.broad
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-####-####-######aa#####b##
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.location.broad
 [JUMBF, JSON, Other] location - Location: Salem,_Oregon
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-####-####-######aa#####b##
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.rights
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-####-####-######aa#####b##
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.rights
 [JUMBF, JSON, Other] copyright - Copyright: Alisha_Jucevic
 [APP12, PictureInfo, Time] TimeDate - Date/Time Original: ####:##:##_##:##:##
 [APP12, PictureInfo, Image] Shutter - Exposure Time: #/###

programming_language: Markdown
filename: Writer_51.out
change_type: ModificationType.MODIFY
diff: @@ -1,10 +1,10 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.23
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.24
 [File, System, Other] FileName - File Name: Writer_51_failed.jpg
 [File, System, Other] Directory - Directory: t
 [File, System, Other] FileSize - File Size: 25 KiB
-[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:04:01 13:21:08-04:00
-[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:01 13:21:08-04:00
-[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:04:01 13:21:08-04:00
+[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:04:12 12:44:05-04:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:12 12:44:05-04:00
+[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:04:12 12:44:05-04:00
 [File, System, Other] FilePermissions - File Permissions: -rw-r--r--
 [File, File, Other] FileType - File Type: JPEG
 [File, File, Other] FileTypeExtension - File Type Extension: jpg
@@ -246,20 +246,26 @@
 [APP11, JPEG-HDR, Image] bet - Beta: 1.000000
 [APP11, JPEG-HDR, Image] cor - Correction Method: 0
 [APP11, JPEG-HDR, Preview] RatioImage - Ratio Image: (Binary data 19 bytes)
-[JUMBF, JUMBF, Image] type - JUMBF Type: cacb-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai
-[JUMBF, JUMBF, Image] type - JUMBF Type: cast-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cb.reuters_1
-[JUMBF, JUMBF, Image] type - JUMBF Type: caas-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.assertions
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: adobe.asset.info
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cacb-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cast-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cb.reuters_1
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: caas-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.assertions
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: adobe.asset.info
 [JUMBF, JSON, Other] title - Title: HEALTHCORONAVIRUSUSAOREGON_SALEM_08.jpg
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.location.broad
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.location.broad
 [JUMBF, JSON, Other] location - Location: Salem, Oregon
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.rights
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.rights
 [JUMBF, JSON, Other] copyright - Copyright: Alisha Jucevic
 [APP12, PictureInfo, Time] TimeDate - Date/Time Original: 1998:12:31 15:17:20
 [APP12, PictureInfo, Image] Shutter - Exposure Time: 1/155

programming_language: Markdown
filename: windows_exiftool
change_type: ModificationType.MODIFY
diff: @@ -10,7 +10,7 @@
 use strict;
 require 5.004;
 
-my $version = '12.23';
+my $version = '12.24';
 
 # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
 my $exeDir;
@@ -5417,7 +5417,7 @@ OPTIONS
 
          produces output like this:
 
-             -- Generated by ExifTool 12.23 --
+             -- Generated by ExifTool 12.24 --
              File: a.jpg - 2003:10:31 15:44:19
              (f/5.6, 1/60s, ISO 100)
              File: b.jpg - 2006:05:23 11:57:38

programming_language: Perl