%%
%% This is file `hyperxmp.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% hyperxmp.dtx  (with options: `package')
%% 
%% This is a generated file.
%% 
%% Copyright (C) 2011-2023 by Scott Pakin <scott+hyxmp@pakin.org>
%% 
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
%% or (at your option) any later version.  The latest version of this
%% license is in:
%% 
%%    http://www.latex-project.org/lppl.txt
%% 
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
%% 
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{hyperxmp}
    [2024/03/17 v5.13 Store hyperref metadata in XMP format]
\IfDocumentMetadataTF{%
  \PackageWarning
      {hyperxmp}
      {Disabling hyperxmp because it is incompatible with PDF management}
}{}
\IfDocumentMetadataTF{\endinput}{}
\edef\hyxmp@dq@code{\the\catcode`\"}
\catcode`\"=12
\@ifundefined{AddToHook}{%
  \@ifundefined{AtEndDocument}{%
    \RequirePackage{atenddvi}
    \let\hyxmp@at@end=\AtEndDvi
  }{%
    \let\hyxmp@at@end=\AtEndDocument
  }
}{%
  \def\hyxmp@at@end{\AddToHook{shipout/lastpage}}
}
\def\hyxmp@set@jobname#1\relax{%
  \@ifnextchar"{\hyxmp@set@jobname@dbl}{\hyxmp@set@jobname@plain}#1\relax
}
\def\hyxmp@set@jobname@dbl"#1"\relax{\xdef\hyxmp@jobname{#1}}
\def\hyxmp@set@jobname@plain#1\relax{\xdef\hyxmp@jobname{#1}}
\expandafter\hyxmp@set@jobname\jobname\relax
\newtoks{\hyxmp@aep@toks}
\RequirePackage{kvoptions}
\RequirePackage{pdfescape}
\RequirePackage{stringenc}
\RequirePackage{intcalc}
\RequirePackage{iftex}
\RequirePackage{ifmtarg}
\RequirePackage{etoolbox}
\RequirePackage{ifthen}
\ifLuaTeX
  \RequirePackage{luacode}
\fi
\def\@ifmtargexp#1{\expandafter\@ifmtarg\expandafter{#1}}
\def\@ifnotmtargexp#1{\expandafter\@ifnotmtarg\expandafter{#1}}
\newcommand*{\@if@def@and@nonempty}[3]{%
  \@ifundefined{#1}{#3}{%
    \expandafter\@ifmtargexp\expandafter{\csname#1\endcsname}{#3}{#2}%
  }%
}
\newcommand{\hyxmp@pdfstringdef}[2]{%
  \let\hyxmp@textunderscore=\textunderscore
  \let\textunderscore=\hyxmp@uscore
  \pdfstringdef{#1}{#2}%
  \let\textunderscore=\hyxmp@textunderscore
}
\def\@pdfdatetime{}
\define@key{Hyp}{pdfdate}{%
  \begingroup
    \Hy@unicodefalse
    \edef\next{%
      \noexpand\hyxmp@pdfstringdef\noexpand\@pdfdatetime{%
        \noexpand\hyxmp@as@xmp@date{#1}}%
    }%
    \next
  \endgroup
}
\def\@pdfmetadatetime{}
\define@key{Hyp}{pdfmetadate}{%
  \begingroup
    \Hy@unicodefalse
    \edef\next{%
      \noexpand\hyxmp@pdfstringdef\noexpand\@pdfmetadatetime{%
        \noexpand\hyxmp@as@xmp@date{#1}}%
    }%
    \next
  \endgroup
}
\def\@pdfcopyright{}
\define@key{Hyp}{pdfcopyright}{\hyxmp@pdfstringdef\@pdfcopyright{#1}}
\def\@pdftype{Text}
\define@key{Hyp}{pdftype}{\hyxmp@pdfstringdef\@pdftype{#1}}
\def\@pdflicenseurl{}
\define@key{Hyp}{pdflicenseurl}{\hyxmp@pdfstringdef\@pdflicenseurl{#1}}
\def\@pdfauthortitle{}
\define@key{Hyp}{pdfauthortitle}{\hyxmp@pdfstringdef\@pdfauthortitle{#1}}
\def\@pdfcaptionwriter{}
\define@key{Hyp}{pdfcaptionwriter}{\hyxmp@pdfstringdef\@pdfcaptionwriter{#1}}
\def\@pdfmetalang{}
\define@key{Hyp}{pdfmetalang}{\hyxmp@pdfstringdef\@pdfmetalang{#1}}
\def\hyxmp@no@bad@parts#1\relax{%
  \@ifnotmtarg{#1}{%
    \PackageWarning{hyperxmp}{pdfapart and pdfuapart must be numeric}%
  }%
}
\newcount\@hyxmp@count
\def\@pdfapart{}
\define@key{Hyp}{pdfapart}{%
  \afterassignment\hyxmp@no@bad@parts\@hyxmp@count=0#1\relax
  \hyxmp@pdfstringdef\@pdfapart{\the\@hyxmp@count}%
}
\def\@pdfaconformance{}
\define@key{Hyp}{pdfaconformance}{%
  \uppercase{\hyxmp@pdfstringdef\@pdfaconformance{#1}}%
}
\def\@pdfuapart{}
\define@key{Hyp}{pdfuapart}{%
  \afterassignment\hyxmp@no@bad@parts\@hyxmp@count=0#1\relax
  \hyxmp@pdfstringdef\@pdfuapart{\the\@hyxmp@count}%
}
\newcommand*{\hyxmp@set@pdfx@major}[1]{\hyxmp@set@pdfx@major@i#1!}
\def\hyxmp@set@pdfx@major@i PDF/X-{%
  \afterassignment\hyxmp@set@pdfx@major@ii
  \@hyxmp@count=%
}
\def\hyxmp@set@pdfx@major@ii#1!{%
  \edef\hyxmp@pdfx@major{\the\@hyxmp@count}%
}
\newcommand*\hyxmp@check@std[2]{%
  \ifthenelse{\equal{#1}{#2}}%
             {\global\let\next=\relax}%
             {}%
}%
\def\@pdfxstandard{}
\def\hyxmp@pdfx@major{}
\define@key{Hyp}{pdfxstandard}{%
  \hyxmp@pdfstringdef\@pdfxstandard{#1}%
  \gdef\next{%
    \PackageWarning{hyperxmp}{Unrecognized PDF/X standard `#1'}%
  }%
  \hyxmp@check@std{#1}{PDF/X-1a:2001}%
  \hyxmp@check@std{#1}{PDF/X-1a:2003}%
  \hyxmp@check@std{#1}{PDF/X-3:2002}%
  \hyxmp@check@std{#1}{PDF/X-3:2003}%
  \hyxmp@check@std{#1}{PDF/X-4}%
  \hyxmp@check@std{#1}{PDF/X-4p}%
  \hyxmp@check@std{#1}{PDF/X-5g}%
  \hyxmp@check@std{#1}{PDF/X-5n}%
  \hyxmp@check@std{#1}{PDF/X-5pg}%
  \next
  \hyxmp@set@pdfx@major{#1}%
}
\edef\@pdfsource{\hyxmp@jobname.tex}
\define@key{Hyp}{pdfsource}{\hyxmp@pdfstringdef\@pdfsource{#1}}
\def\hyxmp@DocumentID{}
\define@key{Hyp}{pdfdocumentid}{\hyxmp@pdfstringdef\hyxmp@DocumentID{#1}}
\def\hyxmp@InstanceID{}
\define@key{Hyp}{pdfinstanceid}{\hyxmp@pdfstringdef\hyxmp@InstanceID{#1}}
\def\@pdfversionid{1}
\define@key{Hyp}{pdfversionid}{\hyxmp@pdfstringdef\@pdfversionid{#1}}
\let\hyxmp@orig@ifdraft=\ifdraft
\@ifpackageloaded{ifdraft}{%
  \let\next=\relax
}{%
  \let\ifdraft=\relax
  \RequirePackage{ifdraft}%
  \def\next{%
    \expandafter\let\csname ver@ifdraft.sty\endcsname=\relax
    \let\ifdraft=\relax
    \let\ifoptiondraft=\relax
    \let\ifoptionfinal=\relax
  }%
}%
\ifdraft{%
  \def\@pdfrendition{draft}%
}{%
  \def\@pdfrendition{default}%
}
\next
\let\ifdraft=\hyxmp@orig@ifdraft
\define@key{Hyp}{pdfrendition}{\hyxmp@pdfstringdef\@pdfrendition{#1}}
\def\@pdfpublication{}
\define@key{Hyp}{pdfpublication}{\hyxmp@pdfstringdef\@pdfpublication{#1}}
\def\@pdfpubtype{}
\define@key{Hyp}{pdfpubtype}{\hyxmp@pdfstringdef\@pdfpubtype{#1}}
\def\@pdfbytes{}
\define@key{Hyp}{pdfbytes}{\hyxmp@pdfstringdef\@pdfbytes{#1}}
\def\@pdfnumpages{}
\define@key{Hyp}{pdfnumpages}{\hyxmp@pdfstringdef\@pdfnumpages{#1}}
\def\@pdfissn{}
\define@key{Hyp}{pdfissn}{\hyxmp@pdfstringdef\@pdfissn{#1}}
\def\@pdfeissn{}
\define@key{Hyp}{pdfeissn}{\hyxmp@pdfstringdef\@pdfeissn{#1}}
\def\@pdfisbn{}
\define@key{Hyp}{pdfisbn}{\hyxmp@pdfstringdef\@pdfisbn{#1}}
\def\@pdfbookedition{}
\define@key{Hyp}{pdfbookedition}{\hyxmp@pdfstringdef\@pdfbookedition{#1}}
\def\@pdfpublisher{}
\define@key{Hyp}{pdfpublisher}{\hyxmp@pdfstringdef\@pdfpublisher{#1}}
\def\@pdfvolumenum{}
\define@key{Hyp}{pdfvolumenum}{\hyxmp@pdfstringdef\@pdfvolumenum{#1}}
\def\@pdfissuenum{}
\define@key{Hyp}{pdfissuenum}{\hyxmp@pdfstringdef\@pdfissuenum{#1}}
\def\@pdfpagerange{}
\define@key{Hyp}{pdfpagerange}{\hyxmp@pdfstringdef\@pdfpagerange{#1}}
\def\@pdfdoi{}
\define@key{Hyp}{pdfdoi}{\hyxmp@pdfstringdef\@pdfdoi{#1}}
\def\@pdfurl{}
\define@key{Hyp}{pdfurl}{\hyxmp@pdfstringdef\@pdfurl{#1}}
\def\@pdfidentifier{}
\define@key{Hyp}{pdfidentifier}{\hyxmp@pdfstringdef\@pdfidentifier{#1}}
\def\@pdfsubtitle{}
\define@key{Hyp}{pdfsubtitle}{\hyxmp@pdfstringdef\@pdfsubtitle{#1}}
\def\@pdfpubstatus{}
\define@key{Hyp}{pdfpubstatus}{\hyxmp@pdfstringdef\@pdfpubstatus{#1}}
\def\@pdfcontactaddress{}
\define@key{Hyp}{pdfcontactaddress}{%
  \let\xmpcomma=\hyxmp@comma
  \def\xmpquote##1{##1}%
  \hyxmp@pdfstringdef\@pdfcontactaddress{#1}%
  \def\xmpcomma{,}%
  \let\xmpquote=\relax
}
\def\@pdfcontactcity{}
\define@key{Hyp}{pdfcontactcity}{\hyxmp@pdfstringdef\@pdfcontactcity{#1}}
\def\@pdfcontactregion{}
\define@key{Hyp}{pdfcontactregion}{\hyxmp@pdfstringdef\@pdfcontactregion{#1}}
\def\@pdfcontactpostcode{}
\define@key{Hyp}{pdfcontactpostcode}{\hyxmp@pdfstringdef\@pdfcontactpostcode{#1}}
\def\@pdfcontactcountry{}
\define@key{Hyp}{pdfcontactcountry}{\hyxmp@pdfstringdef\@pdfcontactcountry{#1}}
\def\@pdfcontactphone{}
\define@key{Hyp}{pdfcontactphone}{\hyxmp@pdfstringdef\@pdfcontactphone{#1}}
\def\@pdfcontactemail{}
\define@key{Hyp}{pdfcontactemail}{\hyxmp@pdfstringdef\@pdfcontactemail{#1}}
\def\@pdfcontacturl{}
\define@key{Hyp}{pdfcontacturl}{\hyxmp@pdfstringdef\@pdfcontacturl{#1}}
\def\hyxmp@no@info@lists{%
  \def\hyxmp@suppress@pdf@info{%
    \global\let\PDF@FinishDoc=\@empty
    \PackageWarningNoLine{hyperxmp}{%
      Suppressing the _entire_ PDF Info dictionary.\MessageBreak
      Please notify the hyperxmp maintainer%
    }%
  }%
  \let\next=\relax
  \patchcmd
    {\PDF@FinishDoc}%
    {/Author(\@pdfauthor)}%
    {}%
    {}%
    {\let\next=\hyxmp@suppress@pdf@info}%
  \patchcmd
    {\PDF@FinishDoc}%
    {/Keywords(\@pdfkeywords)}%
    {}%
    {}%
    {\let\next=\hyxmp@suppress@pdf@info}%
  \next
}
\define@key{Hyp}{keeppdfinfo}[true]{%
  \gdef\hyxmp@no@info@lists{}%
}
\@ifpackageloaded{hyperref}{%
}{%
  \PackageError{hyperxmp}%
    {hyperref must be loaded before hyperxmp}%
    {Recent versions of hyperref and the LaTeX kernel inhibit\MessageBreak
      hyperxmp's ability to hook into hyperref's internals unless\MessageBreak
      hyperref is loaded first.}
}
\def\hyxmp@pdfauthor{}
\def\hyxmp@pdfkeywords{}
\newcommand*{\hyxmp@redefine@Hyp}{%
  \@ifundefined{KV@Hyp@pdfauthor}{}{%
    \@ifundefined{hyxmp@Hyp@pdfauthor}{%
      \expandafter\let\expandafter\hyxmp@Hyp@pdfauthor
        \csname KV@Hyp@pdfauthor\endcsname
    }{}%
  }%
  \define@key{Hyp}{pdfauthor}{%
    \let\xmpcomma=\hyxmp@comma
    \def\xmpquote####1{####1}%
    \let\hyxmp@and=\and
    \def\and{,}%
    \hyxmp@Hyp@pdfauthor{##1}%
    \global\let\hyxmp@pdfauthor=\@pdfauthor
    \def\and{and\space}%
    \def\xmpcomma{,}%
    \def\xmpquote####1{"####1"}%
    \hyxmp@Hyp@pdfauthor{##1}%
    \def\xmpcomma{,}%
    \let\xmpquote=\relax
    \let\and=\hyxmp@and
  }%
  \@ifundefined{KV@Hyp@pdfkeywords}{}{%
    \@ifundefined{hyxmp@Hyp@pdfkeywords}{%
      \expandafter\let\expandafter\hyxmp@Hyp@pdfkeywords
        \csname KV@Hyp@pdfkeywords\endcsname
    }{}%
  }%
  \define@key{Hyp}{pdfkeywords}{%
    \let\xmpcomma=\hyxmp@comma
    \def\xmpquote####1{####1}%
    \hyxmp@Hyp@pdfkeywords{##1}%
    \global\let\hyxmp@pdfkeywords=\@pdfkeywords
    \def\xmpcomma{,}%
    \def\xmpquote####1{"####1"}%
    \hyxmp@Hyp@pdfkeywords{##1}%
    \def\xmpcomma{,}%
    \let\xmpquote=\relax
  }%
}
\let\hyxmp@ProcessKeyvalOptions=\ProcessKeyvalOptions
\renewcommand*{\ProcessKeyvalOptions}{%
  \global\let\ProcessKeyvalOptions=\hyxmp@ProcessKeyvalOptions
  \hyxmp@redefine@Hyp
  \hyxmp@ProcessKeyvalOptions
}
\let\hyxmp@hypersetup=\hypersetup
\def\hypersetup{%
  \hyxmp@redefine@Hyp
  \hyxmp@hypersetup
}
\edef\hyxmp@concated@metadata{}
\expandafter\hyxmp@aep@toks\expandafter=\expandafter{%
  \the\hyxmp@aep@toks
  \AtEndPreamble{%
    \@ifpackageloaded{babel}{%
      \edef\hyxmp@concated@metadata{babel}%
    }{%
      \@ifpackageloaded{polyglossia}{%
        \edef\hyxmp@concated@metadata{polyglossia}%
      }{%
      }%
    }%
  }%
}
\newcommand*{\hyxmp@warn@if@no@metadata}{%
  \edef\hyxmp@concated@metadata{%
    \hyxmp@concated@metadata
    \@baseurl
    \@pdfauthor
    \@pdfauthortitle
    \@pdfbookedition
    \@pdfbytes
    \@pdfcaptionwriter
    \@pdfcontactaddress
    \@pdfcontactcity
    \@pdfcontactcountry
    \@pdfcontactemail
    \@pdfcontactphone
    \@pdfcontactpostcode
    \@pdfcontactregion
    \@pdfcontacturl
    \@pdfcopyright
    \@pdfcreationdate
    \@pdfdatetime
    \@pdfdoi
    \@pdfeissn
    \@pdfidentifier
    \@pdfisbn
    \@pdfissn
    \@pdfissuenum
    \@pdfkeywords
    \@pdflang
    \@pdflicenseurl
    \@pdfmetadatetime
    \@pdfmoddate
    \@pdfnumpages
    \@pdfpagerange
    \@pdfpublication
    \@pdfpubtype
    \@pdfsubject
    \@pdfsubtitle
    \@pdftitle
    \@pdfuapart
    \@pdfurl
    \@pdfvolumenum
    \@pdfxstandard
  }%
  \ifx\hyxmp@concated@metadata\@empty
    \PackageWarningNoLine{hyperxmp}{%
      \hyxmp@jobname.tex did not specify any metadata to\MessageBreak
      include in the XMP packet.\space\space Please see the\MessageBreak
      hyperxmp documentation for instructions on how to\MessageBreak
      provide metadata values to hyperxmp}%
  \fi
}
\newcommand*{\hyxmp@check@standards}{%
  \ifHy@pdfa
    \@ifmtargexp{\@pdfapart}{%
      \PackageWarningNoLine{hyperxmp}{%
        `pdfa' was passed to hyperref, but `pdfapart' was\MessageBreak
        not specified.\space\space  Setting pdfapart to `1' and\MessageBreak
        pdfaconformance to `B'%
      }%
      \gdef\@pdfapart{1}%
      \gdef\@pdfaconformance{B}%
    }%
    {}%
  \fi
  \edef\hyxmp@standards{%
    \@pdfapart
    \@pdfxstandard
    \@pdfuapart
  }%
  \@ifnotmtargexp{\hyxmp@standards}{%
    \@ifmtargexp{\@pdftitle}{%
      \PackageWarningNoLine{hyperxmp}{%
        Missing pdftitle (required for PDF standards\MessageBreak
        compliance)%
      }%
    }%
    {}%
  }%
}
\expandafter\hyxmp@aep@toks\expandafter=\expandafter{%
  \the\hyxmp@aep@toks
  \AtEndPreamble{%
    \RequirePackage{hyperref}%
    \hyxmp@no@info@lists
    \begingroup
      \let\@latex@warning@no@line=\@gobble
      \hyxmp@use@first@valid{pdftitle}{\@pdftitle}{%
        \scr@subject@var,%
        \@title
      }%
      \hyxmp@use@first@valid{pdfauthor}{\@pdfauthor}{%
        \scr@fromname@var,%
        \@author
      }%
    \endgroup
  }%
}
\hyxmp@at@end{%
  \hyxmp@auto@assign@data
  \hyxmp@check@standards
  \hyxmp@warn@if@no@metadata
  \hyxmp@embed@packet
}
\newcommand*{\hyxmp@set@koma@phones}{%
  \begingroup
    \Hy@unicodefalse
    \@if@def@and@nonempty{scr@frommobilephone@var}{%
      \@if@def@and@nonempty{scr@fromphone@var}{%
        \hyxmp@pdfstringdef\hyxmp@koma@phones{\scr@frommobilephone@var,\scr@fromphone@var}%
      }{%
        \hyxmp@pdfstringdef\hyxmp@koma@phones{\scr@frommobilephone@var}%
      }%
    }{%
      \@if@def@and@nonempty{scr@fromphone@var}{%
        \hyxmp@pdfstringdef\hyxmp@koma@phones{\scr@fromphone@var}%
      }{%
      }%
    }%
  \endgroup
}
\newcommand*{\hyxmp@use@first@valid}[3]{%
  \@ifmtargexp{#2}{%
    \hyxmp@use@first@valid@i{#1}#3,!,%
  }%
  {}%
}
\def\hyxmp@use@first@valid@i#1#2,{%
  \def\next{\hyxmp@use@first@valid@i{#1}}%
  \ifx#2!%
    \let\next=\relax
  \else
    \ifx#2\undefined
    \else
      \@ifnotmtargexp{#2}{%
        \hypersetup{#1={#2}}%
        \def\next##1!,{}%
      }%
    \fi
  \fi
  \next
}
\newcommand*{\hyxmp@auto@assign@data}{%
  \@if@def@and@nonempty{@pdflang}{%
    \let\hyxmp@dc@lang=\@pdflang
  }{%
    \hyxmp@detect@langs
  }%
  \ifx\@pdfmetalang\@empty
    \ifx\@pdflang\@empty
      \let\@pdfmetalang=\hyxmp@x@default
    \else
      \edef\@pdfmetalang{\@pdflang}%
    \fi
  \fi
  \hyxmp@use@first@valid{pdfcontactemail}{\@pdfcontactemail}{%
    \scr@fromemail@var
  }%
  \hyxmp@set@koma@phones
  \hyxmp@use@first@valid{pdfcontactphone}{\@pdfcontactphone}{%
    \hyxmp@koma@phones
  }%
  \hyxmp@use@first@valid{pdfcontacturl}{\@pdfcontacturl}{%
    \scr@fromurl@var
  }%
  \hyxmp@use@first@valid{pdfsubtitle}{\@pdfsubtitle}{%
    \@subtitle
  }%
  \hyxmp@use@first@valid{pdfpublisher}{\@pdfpublisher}{%
    \@publishers
  }%
  \hyxmp@parse@acmart
  \@ifundefined{XeTeXversion}{}{%
    \@ifmtargexp{\@pdfcreationdate}{%
      \let\@pdfcreationdate=\hyxmp@today@pdf
    }%
    {}%
  }%
  \hyxmp@query@self
}
\ifLuaTeX
  \begin{luacode*}
function get_pdf_size (bname)
   local odir = ""
   for _, opt in ipairs(arg) do
      local m = string.match(opt, "%-output%-d.-=(.*)")
      if m then
         odir = m
      end
   end
   local sep = "/"
   if os.type == "windows" or os.type == "msdos" then
      sep = "\\\\"
   end
   local dlast = string.sub(odir, -1)
   if odir == "" or dlast == sep or (dlast == ":" and sep == "\\\\") then
      sep = ""
   end
   local fname = odir .. sep .. bname .. ".pdf"
   local nbytes = lfs.attributes(fname, "size")
   return nbytes
end
  \end{luacode*}
  \xdef\hyxmp@prev@pdf@size{%
    \luadirect{
nbytes = get_pdf_size("\hyxmp@jobname")
if nbytes then
    tex.write(nbytes)
end
    }%
  }%
\fi
\newcommand*{\hyxmp@query@self}{%
  \@if@def@and@nonempty{@pdfnumpages}{%
  }{%
    \xdef\@pdfnumpages{\thetotalpages}%
  }%
  \hyxmp@use@first@valid{pdfbytes}{\@pdfbytes}{%
    \hyxmp@prev@pdf@size
  }%
}
\newcommand*{\hyxmp@parse@acmart}{%
  \begingroup
    \let\@author=\@gobble
    \def\email##1##2{%
      \def\hyxmp@address@val{##2}%
      \hyxmp@use@first@valid{pdfcontactemail}{\@pdfcontactemail}{%
        \hyxmp@address@val
      }%
    }%
    \def\streetaddress##1{%
      \def\hyxmp@address@val{##1}%
      \hyxmp@use@first@valid{pdfcontactaddress}{\@pdfcontactaddress}{%
        \hyxmp@address@val
      }%
    }%
    \def\city##1{%
      \def\hyxmp@address@val{##1}%
      \hyxmp@use@first@valid{pdfcontactcity}{\@pdfcontactcity}{%
        \hyxmp@address@val
      }%
    }%
    \def\state##1{%
      \def\hyxmp@address@val{##1}%
      \hyxmp@use@first@valid{pdfcontactregion}{\@pdfcontactregion}{%
        \hyxmp@address@val
      }%
    }%
    \def\country##1{%
      \def\hyxmp@address@val{##1}%
      \hyxmp@use@first@valid{pdfcontactcountry}{\@pdfcontactcountry}{%
        \hyxmp@address@val
      }%
    }%
    \def\postcode##1{%
      \def\hyxmp@address@val{##1}%
      \hyxmp@use@first@valid{pdfcontactpostcode}{\@pdfcontactpostcode}{%
        \hyxmp@address@val
      }%
    }%
    \def\affiliation##1##2{%
      ##2%
      \let\affiliation=\@gobbletwo
    }%
    \setbox0=\hbox{\addresses}%
  \endgroup
  \@if@def@and@nonempty{@acmDOI}{%
    \IfSubStr{\@acmDOI}{10.1145/1122445.1122456}{}{%
      \IfSubStr{\@acmDOI}{10.1145/nnnnnnn.nnnnnnn}{}{%
        \hyxmp@use@first@valid{pdfdoi}{\@pdfdoi}{%
          \@acmDOI
        }%
      }%
    }%
  }%
  {}%
  \@if@def@and@nonempty{@acmISBN}{%
    \IfSubStr{\@acmISBN}{XXXX}{}{%
      \IfSubStr{\@acmISBN}{xxxx}{}{%
        \def\hyxmp@strip@isbn@date##1/##2!{##1}%
        \edef\hyxmp@acm@isbn{%
          \expandafter\hyxmp@strip@isbn@date\@acmISBN/!%
        }%
        \hyxmp@use@first@valid{pdfisbn}{\@pdfisbn}{%
          \hyxmp@acm@isbn
        }%
      }%
    }%
  }%
  {}%
  \def\hyxmp@acm@publisher{Association for Computing Machinery}%
  \hyxmp@use@first@valid{pdfpublisher}{\@pdfpublisher}{%
    \hyxmp@acm@publisher
  }%
  \hyxmp@use@first@valid{pdfpublication}{\@pdfpublication}{%
    \@journalName,%
    \@acmBooktitle,%
    \@acmConference
  }%
  \if@ACM@journal
    \def\hyxmp@acm@pubtype{journal}%
  \else
    \def\hyxmp@acm@pubtype{book}%
  \fi
  \hyxmp@use@first@valid{pdfpubtype}{\@pdfpubtype}{%
    \hyxmp@acm@pubtype
  }%
  \hyxmp@use@first@valid{pdfvolumenum}{\@pdfvolumenum}{%
    \@acmVolume
  }%
  \hyxmp@use@first@valid{pdfissuenum}{\@pdfissuenum}{%
    \@acmNumber
  }%
}
\@ifclassloaded{acmart}{}{\let\hyxmp@parse@acmart=\relax}
\let\hyxmp@dc@lang=\@empty
\newcommand*{\hyxmp@detect@langs}{%
  \@ifundefined{mainbcp47id}{%
    \@ifundefined{LocaleForEach}{%
      \let\@pdflang=\@empty
    }{%
      \BabelEnsureInfo
      \LocaleForEach{%
        \getlocaleproperty\hyxmp@lang@tag{##1}{identification/tag.bcp47}%
        \ifx\hyxmp@dc@lang\@empty
          \xdef\hyxmp@dc@lang{\hyxmp@lang@tag}%
        \else
          \xdef\hyxmp@dc@lang{\hyxmp@dc@lang,\hyxmp@lang@tag}%
        \fi
        \def\hyxmp@lang@name{##1}%
        \ifx\hyxmp@lang@name\bbl@main@language
          \edef\@pdflang{\hyxmp@lang@tag}%
        \fi
      }%
    }%
  }{%
    \xdef\@pdflang{\csname mainbcp47id\endcsname}%
    \edef\hyxmp@dc@lang{\xpg@bcp@loaded}%
  }%
}
\newcommand*{\hyxmp@commas@to@list}[2]{%
  \gdef#1{}%
  \expandafter\hyxmp@commas@to@list@i\expandafter#1#2,,%
}
\def\hyxmp@commas@to@list@i#1#2,{%
  \gdef\hyxmp@sublist{#2}%
  \ifx\hyxmp@sublist\@empty
    \let\next=\relax
  \else
    \hyxmp@trimspaces\hyxmp@sublist
    \@cons{#1}{{\hyxmp@sublist}}%
    \def\next{\hyxmp@commas@to@list@i{#1}}%
  \fi
  \next
}
\def\xmpcomma{,}%
\bgroup
  \catcode`\^^C=11
  \gdef\hyxmp@comma{^^C}
\egroup
\bgroup
  \catcode`\^^U=11
  \gdef\hyxmp@uscore{^^U}
\egroup
\let\xmpquote=\relax
\bgroup
  \catcode`\~=12%
  \gdef\xmptilde{~}%
\egroup
\newcommand{\XMPTruncateList}[1]{{%
    \PackageWarning{hyperxmp}{%
      \noexpand\XMPTruncateList has been deprecated since\MessageBreak
      hyperxmp 4.0 and may be removed in future\MessageBreak
      versions of the package.  \noexpand\XMPTruncateList\MessageBreak
      was found}%
  \edef\hyxmp@temp@str{\csname hyxmp@#1\endcsname}%
  \hyxmp@commas@to@list{\hyxmp@temp@list}{\hyxmp@temp@str}%
  \def\@elt##1{%
    \expandafter\gdef\csname @#1\endcsname{##1}%
    \let\@elt=\@gobble
  }
  \hyxmp@temp@list
}}
\def\hyxmp@first@char#1{\hyxmp@first@char@i#1\relax}
\def\hyxmp@first@char@i#1#2\relax{#1}
\def\hyxmp@as@xmp@date#1{%
  \expandafter\ifnum\expandafter`\hyxmp@first@char@i#1\relax=`D
    \hyxmp@pdf@to@xmp@date{#1}%
  \else
    #1%
  \fi
}
\def\hyxmp@pdf@to@xmp@date#1:#2#3#4#5#6#7#8#9{%
  #2#3#4#5-#6#7-#8#9%
  \hyxmp@parse@time
}
\def\hyxmp@parse@time#1#2#3#4#5#6{%
  T#1#2:#3#4:#5#6%
  \hyxmp@parse@tz@char
}
\def\hyxmp@parse@tz@char#1{%
  #1%
  \ifx#1-%
    \expandafter\hyxmp@parse@tz
  \else
    \ifx#1+%
      \expandafter\hyxmp@parse@tz
    \fi
  \fi
}
\def\hyxmp@parse@tz#1'#2'{%
  #1:#2%
}
\def\hyxmp@as@pdf@date#1{%
  \expandafter\ifx\hyxmp@first@char@i#1\relax D%
    #1%
  \else
    \hyxmp@xmp@to@pdf@date{#1}%
  \fi
}
\def\hyxmp@xmp@to@pdf@date#1{%
  D:\hyxmp@xmp@to@pdf@date@i#1\relax\relax
}
\def\hyxmp@xmp@to@pdf@date@i#1#2#3#4#5#6{%
  #1#2#3#4%
  \ifx#5-%
    \expandafter\hyxmp@xmp@to@pdf@date@ii\expandafter#6%
  \fi
}
\def\hyxmp@xmp@to@pdf@date@ii#1#2#3#4{%
  #1#2%
  \ifx#3-%
    \expandafter\hyxmp@xmp@to@pdf@date@iii\expandafter#4%
  \fi
}
\def\hyxmp@xmp@to@pdf@date@iii#1#2#3#4{%
  #1#2%
  \ifx#3T%
    \expandafter\hyxmp@xmp@to@pdf@date@iv\expandafter#4%
  \fi
}
\def\hyxmp@xmp@to@pdf@date@iv#1#2#3#4{%
  #1#2%
  \ifx#3:%
    \expandafter\hyxmp@xmp@to@pdf@date@v\expandafter#4%
  \fi
}
\def\hyxmp@xmp@to@pdf@date@v#1#2#3#4{%
  #1#2%
  \ifx#3:%
    \expandafter\hyxmp@xmp@to@pdf@date@vi\expandafter#4%
  \fi
}
\let\hyxmp@gobbletwo=\@gobbletwo
\def\hyxmp@xmp@to@pdf@date@vi#1#2#3#4{%
  #1#2%
  \ifx#3+%
    +\expandafter\hyxmp@xmp@to@pdf@date@vii
  \fi
  \ifx#3-%
    -\expandafter\hyxmp@xmp@to@pdf@date@vii
  \fi
  \ifx#3Z%
    Z%
  \fi
  \ifx#3\relax
    \expandafter\hyxmp@gobbletwo
  \fi
  \@gobbletwo #4%
}
\def\hyxmp@xmp@to@pdf@date@vii#1\@gobbletwo#2#3#4#5{%
  #2#3%
  \ifx#4:%
    \expandafter\hyxmp@xmp@to@pdf@date@viii\expandafter#5%
  \fi
}
\def\hyxmp@xmp@to@pdf@date@viii#1#2#3#4{%
  '#1#2'%
}
\def\hyxmp@today@xmp@define#1{%
  \xdef#1{\the\year}%
  \ifnum\month<10
    \xdef#1{#1-0\the\month}%
  \else
    \xdef#1{#1-\the\month}%
  \fi
  \ifnum\day<10
    \xdef#1{#1-0\the\day}%
  \else
    \xdef#1{#1-\the\day}%
  \fi
  \@hyxmp@count=\time
  \divide\@hyxmp@count by 60
  \ifnum\@hyxmp@count<10
    \xdef#1{#1T0\the\@hyxmp@count}%
  \else
    \xdef#1{#1T\the\@hyxmp@count}%
  \fi
  \multiply\@hyxmp@count by -60
  \advance\@hyxmp@count by \time
  \ifnum\@hyxmp@count<10
    \xdef#1{#1:0\the\@hyxmp@count}%
  \else
    \xdef#1{#1:\the\@hyxmp@count}%
  \fi
  \xdef#1{#1Z}%
}
\def\hyxmp@try@today#1#2{%
  \@ifmtargexp{\hyxmp@today@xmp}{%
    \@ifundefined{#1}{}{#2}%
  }%
  {}%
}
\def\hyxmp@today@xmp{}
\hyxmp@try@today{pdfcreationdate}{%
  \edef\hyxmp@today@xmp{\expandafter\hyxmp@pdf@to@xmp@date\pdfcreationdate}%
}
\hyxmp@try@today{pdffeedback}{%
  \edef\hyxmp@today@xmp{\expandafter\hyxmp@pdf@to@xmp@date\pdffeedback creationdate}%
}
\hyxmp@try@today{filemoddate}{%
  \edef\hyxmp@today@xmp{\filemoddate{\hyxmp@jobname.log}}%
  \edef\next{%
    \edef\noexpand\hyxmp@today@xmp{\noexpand\hyxmp@as@xmp@date{\hyxmp@today@xmp}}%
  }%
  \next
}%
\hyxmp@try@today{year}{%
  \hyxmp@today@xmp@define\hyxmp@today@xmp
}
\expandafter\edef\expandafter\hyxmp@today@pdf\expandafter{%
  \expandafter\hyxmp@xmp@to@pdf@date\expandafter{\hyxmp@today@xmp}%
}
\catcode`\Q=3
\newcommand{\hyxmp@trimspaces}[1]{%
  \begingroup
  \aftergroup\toks\aftergroup0\aftergroup{%
  \expandafter\hyxmp@trimb\expandafter\noexpand#1Q Q}%
  \edef#1{\the\toks0}%
}
\def\hyxmp@trimb#1 Q{\hyxmp@trimc#1Q}
\def\hyxmp@trimc#1Q#2{\afterassignment\endgroup \vfuzz\the\vfuzz#1}
\catcode`\Q=11
\newif\ifhyxmp@unicodetex
\ifnum64=`\^^^^0040\relax
  \hyxmp@unicodetextrue
\else
  \hyxmp@unicodetexfalse
\fi
\expandafter\def\csname SE->pdfdoc@03\endcsname{0003}
\expandafter\def\csname SE->pdfdoc@15\endcsname{0015}
\newcommand*{\hyxmp@xmlify}[1]{%
  \gdef\hyxmp@xmlified{}%
  \EdefUnescapeString\hyxmp@text{#1}%
  \ifhyxmp@unicodetex
    \hyxmp@is@unicode\hyxmp@text{%
      \StringEncodingConvert
      \hyxmp@text\hyxmp@text{utf16be}{utf32be}%
    }{%
      \ifXeTeX
        \hyxmp@xetex@crap
      \else
        \StringEncodingConvert
        \hyxmp@text\hyxmp@text{pdfdoc}{utf32be}%
      \fi
    }%
    \EdefEscapeHex\hyxmp@text{\hyxmp@text}%
    \edef\hyxmp@text{%
      \expandafter
    }\expandafter\hyxmp@toxml@unicodetex\hyxmp@text
    \relax\relax\relax\relax\relax\relax\relax\relax
  \else
    \hyxmp@is@unicode\hyxmp@text{%
      \StringEncodingConvert
      \hyxmp@text\hyxmp@text{utf16be}{utf8}%
    }{%
      \StringEncodingConvert
      \hyxmp@text\hyxmp@text{pdfdoc}{utf8}%
    }%
    \EdefEscapeHex\hyxmp@text{\hyxmp@text}%
    \edef\hyxmp@text{%
      \expandafter\hyxmp@toxml\hyxmp@text\@empty\@empty
    }%
    \EdefUnescapeHex\hyxmp@text{\hyxmp@text}%
  \fi
  \global\let\hyxmp@xmlified\hyxmp@text
}
\begingroup
  \lccode`\<=254 %
  \lccode`\>=255 %
  \catcode254=12 %
  \catcode255=12 %
\lowercase{\endgroup
  \def\hyxmp@is@unicode#1{%
    \expandafter\hyxmp@@is@unicode#1<>\@nil
  }%
  \def\hyxmp@@is@unicode#1<>#2\@nil{%
    \ifx\\#1\\%
      \expandafter\@firstoftwo
    \else
      \expandafter\@secondoftwo
    \fi
  }%
}
\def\hyxmp@toxml#1#2{%
  \ifx#1\@empty
  \else
    \ifnum"#1#2=`\& %
      26616D703B% &amp;
    \else\ifnum"#1#2=`\< %
      266C743B% &lt;
    \else\ifnum"#1#2=`\> %
      2667743B% &gt;
    \else
      \@ifundefined{pdfmark}{%
        #1#2%
      }{%
      \ifnum"#1#2=`\( %
        5C28% \(
      \else\ifnum"#1#2=`\) %
        5C29% \)
      \else
        #1#2%
      \fi\fi
      }%
    \fi\fi\fi
    \expandafter\hyxmp@toxml
  \fi
}
\def\hyxmp@toxml@unicodetex#1#2#3#4#5#6#7#8{%
  \ifx#1\relax
  \else
    \ifnum"#1#2#3#4#5#6#7#8>127 %
      \uccode`\*="#1#2#3#4#5#6#7#8\relax
      \uppercase{%
        \edef\hyxmp@text{\hyxmp@text *}%
      }%
    \else\ifnum"#7#8=`\< %
      \edef\hyxmp@text{\hyxmp@text &lt;}%
    \else\ifnum"#7#8=`\& %
      \edef\hyxmp@text{\hyxmp@text &amp;}%
    \else\ifnum"#7#8=`\> %
      \edef\hyxmp@text{\hyxmp@text &gt;}%
    \else\ifnum"#7#8=`\ %
      \edef\hyxmp@text{\hyxmp@text\space}%
    \else
      \uccode`\*="#7#8\relax
      \uppercase{%
        \edef\hyxmp@text{\hyxmp@text *}%
      }%
    \fi\fi\fi\fi\fi
    \expandafter\hyxmp@toxml@unicodetex
  \fi
}
\def\hyxmp@skipzeros#1{%
  \ifx#10%
    \expandafter\hyxmp@skipzeros
  \fi
}
\begingroup
\def\x#1{\endgroup
  \def\hyxmp@xetex@crap{%
    \edef\hyxmp@try{%
      \expandafter\hyxmp@SpaceOther\hyxmp@text#1\@nil
    }%
    \let\hyxmp@crap@result=N%
    \expandafter\hyxmp@crap@test\hyxmp@try\relax
    \ifx\hyxmp@crap@result Y%
      \let\hyxmp@text\@empty
      \expandafter\hyxmp@crap@convert\hyxmp@try\relax
    \else
      \StringEncodingConvert\hyxmp@text\hyxmp@text{pdfdoc}{utf32be}%
    \fi
  }%
}
\x{ }
\begingroup
  \catcode`\~=12 %
  \lccode`\~=`\ %
\lowercase{\endgroup
  \def\hyxmp@SpaceOther#1 #2\@nil{%
    #1%
    \ifx\relax#2\relax
      \expandafter\@gobble
    \else
      ~%
      \expandafter\@firstofone
    \fi
    {\hyxmp@SpaceOther#2\@nil}%
  }%
}
\def\hyxmp@crap@test#1{%
  \ifx#1\relax
  \else
    \ifnum`#1>127 %
      \let\hyxmp@crap@result=Y%
      \expandafter\expandafter\expandafter\hyxmp@skiptorelax
    \else
      \expandafter\expandafter\expandafter\hyxmp@crap@test
    \fi
  \fi
}
\def\hyxmp@skiptorelax#1\relax{}
\def\hyxmp@crap@convert#1{%
  \ifx#1\relax
  \else
    \edef\hyxmp@num{\number`#1}%
    \ifnum\hyxmp@num>"FFFFFF %
      \lccode`\!=\intcalcDiv{\hyxmp@num}{\number"1000000}\relax
      \lowercase{\edef\hyxmp@text{\hyxmp@text!}}%
      \edef\hyxmp@num{\intcalcMod{\hyxmp@num}{\number"1000000}}%
    \else
      \edef\hyxmp@text{\hyxmp@text\hyxmp@zero}%
    \fi
    \ifnum\hyxmp@num>"FFFF %
      \lccode`\!=\intcalcDiv{\hyxmp@num}{\number"10000}\relax
      \lowercase{\edef\hyxmp@text{\hyxmp@text!}}%
      \edef\hyxmp@num{\intcalcMod{\hyxmp@num}{\number"10000}}%
    \else
      \edef\hyxmp@text{\hyxmp@text\hyxmp@zero}%
    \fi
    \ifnum\hyxmp@num>"FF %
      \lccode`\!=\intcalcDiv{\hyxmp@num}{\number"100}\relax
      \lowercase{\edef\hyxmp@text{\hyxmp@text!}}%
      \edef\hyxmp@num{\intcalcMod{\hyxmp@num}{\number"100}}%
    \else
      \edef\hyxmp@text{\hyxmp@text\hyxmp@zero}%
    \fi
    \ifnum\hyxmp@num>0 %
      \lccode`\!=\hyxmp@num\relax
      \lowercase{\edef\hyxmp@text{\hyxmp@text!}}%
    \else
      \edef\hyxmp@text{\hyxmp@text\hyxmp@zero}%
    \fi
    \expandafter\hyxmp@crap@convert
  \fi
}
\begingroup
  \catcode0=12 %
  \gdef\hyxmp@zero{^^00}%
\endgroup
\newcommand*{\hyxmp@extra@indent}{}
\newcommand*{\hyxmp@add@simple}[2]{%
  \@ifnotmtargexp{#2}{%
    \hyxmp@xmlify{#2}%
    \hyxmp@add@to@xml{\hyxmp@extra@indent______<}%
    \xdef\hyxmp@xml{\hyxmp@xml#1}%
    \hyxmp@add@to@xml{>\hyxmp@xmlified</}%
    \xdef\hyxmp@xml{\hyxmp@xml#1>^^J}%
  }%
}
\newcommand*{\hyxmp@add@simple@var}[2]{%
  \expandafter\ifx\csname#2\endcsname\relax
  \else
    \hyxmp@xmlify{\csname#2\endcsname}%
    \hyxmp@add@to@xml{%
      \hyxmp@extra@indent______<#1>\hyxmp@xmlified</#1>^^J%
    }%
  \fi
}
\newcommand*{\hyxmp@add@simple@lang}[2]{%
  \@ifnotmtarg{#2}{%
    \hyxmp@xmlify{#2}%
    \expandafter\hyxmp@add@simple@lang@i\hyxmp@xmlified\relax{#1}%
  }%
}
\newcommand*{\hyxmp@add@simple@lang@i}{%
  \@ifnextchar[\hyxmp@add@simple@lang@ii{\hyxmp@add@simple@lang@ii[\@pdfmetalang]}%
}
\def\hyxmp@add@simple@lang@ii[#1]#2\relax#3{%
  \@ifnotmtarg{#2}{%
    \hyxmp@xmlify{#2}%
    \@ifmtarg{#1}{%
      \hyxmp@add@to@xml{%
______<#3>\hyxmp@xmlified</#3>^^J%
      }%
    }{%
      \hyxmp@add@to@xml{%
______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
      }%
    }%
  }%
}
\newcommand*{\hyxmp@add@simple@pfx}[3]{%
  \@ifnotmtargexp{#3}{%
    \hyxmp@add@to@xml{\hyxmp@extra@indent______<}%
    \xdef\hyxmp@xml{\hyxmp@xml#1}%
    \hyxmp@pdfstringdef\hyxmp@iprefix{#2}%
    \hyxmp@xmlify{\hyxmp@iprefix}%
    \hyxmp@add@to@xml{>\hyxmp@xmlified}%
    \hyxmp@xmlify{#3}%
    \hyxmp@add@to@xml{\hyxmp@xmlified</}%
    \xdef\hyxmp@xml{\hyxmp@xml#1>^^J}%
  }%
}
\def\hyxmp@alt@title{}
\def\hyxmp@alt@description{}
\def\hyxmp@alt@rights{}
\newcommand{\hyxmp@LA@accept}[2]{%
  \define@key{hyxmp@LA}{#1}{%
    \hyxmp@pdfstringdef\hyxmp@value{##1}%
    \xdef#2{#2\noexpand\do {\hyxmp@cur@lang} {\hyxmp@value}}%
  }
}
\hyxmp@LA@accept{pdftitle}{\hyxmp@alt@title}
\hyxmp@LA@accept{pdfsubject}{\hyxmp@alt@description}
\hyxmp@LA@accept{pdfcopyright}{\hyxmp@alt@rights}
\newcommand{\XMPLangAlt}[2]{%
  \let\do=\relax
  \edef\hyxmp@cur@lang{#1}%
  \setkeys{hyxmp@LA}{#2}%
}
\def\hyxmp@modulo@a#1{%
  \@tempcntb=\@hyxmp@count
  \divide\@tempcntb by #1
  \multiply\@tempcntb by #1
  \advance\@hyxmp@count by -\@tempcntb
}
\def\hyxmp@big@prime{536870923}
\def\hyxmp@big@prime@ii{536870027}
\def\hyxmp@seed@rng#1{%
  \@hyxmp@count=\hyxmp@big@prime
  \futurelet\hyxmp@one@token\hyxmp@seed@rng@i#1\@empty
}
\def\hyxmp@seed@rng@i{%
  \ifx\hyxmp@one@token\@empty
    \let\next=\relax
  \else
    \def\next##1{%
      \multiply\@hyxmp@count by 3
      \advance\@hyxmp@count by `##1
      \hyxmp@modulo@a{\hyxmp@big@prime}%
      \futurelet\hyxmp@one@token\hyxmp@seed@rng@i
    }%
  \fi
  \next
}
\def\hyxmp@set@rand@num{%
  \@hyxmp@count=\hyxmp@rand@num
  \multiply\@hyxmp@count by 3
  \advance\@hyxmp@count by \hyxmp@big@prime@ii
  \hyxmp@modulo@a{\hyxmp@big@prime}%
  \xdef\hyxmp@rand@num{\the\@hyxmp@count}%
}
\def\hyxmp@append@hex#1{%
  \hyxmp@set@rand@num
  \@hyxmp@count=\hyxmp@rand@num
  \hyxmp@modulo@a{16}%
  \ifnum\@hyxmp@count<10
    \xdef#1{#1\the\@hyxmp@count}%
  \else
    \advance\@hyxmp@count by -10
    \ifcase\@hyxmp@count
      \xdef#1{#1a}%
      \or\xdef#1{#1b}%
      \or\xdef#1{#1c}%
      \or\xdef#1{#1d}%
      \or\xdef#1{#1e}%
      \or\xdef#1{#1f}%
    \fi
  \fi
}
\def\hyxmp@append@hex@iii#1{%
  \hyxmp@append@hex#1%
  \hyxmp@append@hex#1%
  \hyxmp@append@hex#1%
}
\def\hyxmp@append@hex@iv#1{%
  \hyxmp@append@hex@iii#1%
  \hyxmp@append@hex#1%
}
\def\hyxmp@create@uuid#1{%
  \def#1{uuid:}%
  \hyxmp@append@hex@iv#1%
  \hyxmp@append@hex@iv#1%
  \g@addto@macro#1{-}%
  \hyxmp@append@hex@iv#1%
  \g@addto@macro#1{-4}%
  \hyxmp@append@hex@iii#1%
  \g@addto@macro#1{-}%
  \hyxmp@set@rand@num
  \@hyxmp@count=\hyxmp@rand@num
  \hyxmp@modulo@a{4}%
  \ifcase\@hyxmp@count
    \g@addto@macro#1{8}%
    \or\g@addto@macro#1{9}%
    \or\g@addto@macro#1{a}%
    \or\g@addto@macro#1{b}%
  \fi
  \hyxmp@append@hex@iii#1%
  \g@addto@macro#1{-}%
  \hyxmp@append@hex@iv#1%
  \hyxmp@append@hex@iv#1%
  \hyxmp@append@hex@iv#1%
}
\newcommand*{\hyxmp@def@DocumentID}{%
  \edef\hyxmp@seed@string{\hyxmp@jobname:\@pdftitle:\@pdfauthor:}%
  \expandafter\hyxmp@seed@rng\expandafter{\hyxmp@seed@string}%
  \edef\hyxmp@rand@num{\the\@hyxmp@count}%
  \hyxmp@create@uuid\hyxmp@DocumentID
}
\newcommand*{\hyxmp@def@InstanceID}{%
  \hyxmp@today@xmp@define{\hyxmp@seed@string}%
  \edef\hyxmp@seed@string{%
    \hyxmp@jobname:\@pdftitle:\@pdfauthor:\hyxmp@today@xmp:\hyxmp@seed@string
  }%
  \expandafter\hyxmp@seed@rng\expandafter{\hyxmp@seed@string}%
  \edef\hyxmp@rand@num{\the\@hyxmp@count}%
  \hyxmp@create@uuid\hyxmp@InstanceID
}
\newcommand*{\hyxmp@add@to@xml}[1]{%
  \bgroup
    \@hyxmp@count=0
    \ifhyxmp@unicodetex
      \@tempcntb=65536%
    \else
      \@tempcntb=256%
    \fi
    \loop
      \lccode\@hyxmp@count=\@hyxmp@count
      \advance\@hyxmp@count by 1
      \ifnum\@hyxmp@count<\@tempcntb
    \repeat
    \lccode`\_=`\ \relax
    \lccode`\^^C=`\,\relax
    \lccode`\^^U=`\_\relax
    \lowercase{\xdef\hyxmp@new@xml{#1}}%
    \xdef\hyxmp@xml{\hyxmp@xml\hyxmp@new@xml}%
  \egroup
}
\bgroup
\catcode`\#=11
\gdef\hyxmp@hash{#}
\egroup
\bgroup
  \xdef\hyxmp@xml{}%
  \hyxmp@add@to@xml{%
_______________________________________________________________^^J%
  }
  \xdef\hyxmp@padding{\hyxmp@xml}%
\egroup
\xdef\hyxmp@padding{\hyxmp@padding\hyxmp@padding}
\xdef\hyxmp@padding{\hyxmp@padding\hyxmp@padding}
\xdef\hyxmp@padding{\hyxmp@padding\hyxmp@padding}
\xdef\hyxmp@padding{\hyxmp@padding\hyxmp@padding}
\xdef\hyxmp@padding{\hyxmp@padding\hyxmp@padding}
\newcommand*{\hyxmp@x@default}{x-default}
\newcommand*{\hyxmp@define@pdfproducer}{%
  \gdef\@pdfproducer{TeX}
  \ifLuaTeX
    \expandafter\hyxmp@banner@to@producer\expandafter{\luatexbanner}%
  \else
    \ifPDFTeX
      \expandafter\hyxmp@banner@to@producer\expandafter{\pdftexbanner}%
    \else
      \ifXeTeX
        \edef\@pdfproducer{XeTeX version \the\XeTeXversion\XeTeXrevision}%
      \fi
    \fi
  \fi
}
\def\hyxmp@banner@to@producer#1{%
  \ifx\scantokens\relax
    \gdef\@pdfproducer{#1}%
  \else
    {\scantokens{\makeatletter\hyxmp@remove@this#1\relax}}%
  \fi
}
\def\hyxmp@remove@this This is #1\relax{\gdef\@pdfproducer{#1}}
\AtBeginDocument{%
  \ifx\@pdfproducer\relax
    \hyxmp@define@pdfproducer
  \fi
}
\newcommand*{\hyxmp@assign@major@minor}{%
  \@ifundefined{pdfvariable}{%
    \@ifundefined{pdfminorversion}{%
    }{%
      \xdef\hyxmp@major@minor{\the\pdfminorversion}%
      \@ifundefined{pdfmajorversion}{%
        \xdef\hyxmp@major@minor{1.\hyxmp@major@minor}%
      }{%
        \xdef\hyxmp@major@minor{\the\pdfmajorversion.\hyxmp@major@minor}%
      }%
    }%
  }{%
    \xdef\hyxmp@major@minor{\the\pdfvariable majorversion.\the\pdfvariable minorversion}%
  }%
}
\newcommand*{\hyxmp@pdf@schema}{%
  \hyxmp@add@simple@var{pdf:Producer}{@pdfproducer}%
  \hyxmp@add@simple@var{pdf:Keywords}{@pdfkeywords}%
  \hyxmp@add@simple{pdf:Trapped}{\@pdftrapped}%
  \hyxmp@assign@major@minor
  \hyxmp@add@simple@var{pdf:PDFVersion}{hyxmp@major@minor}%
}
\newif\ifhyxmp@multi@langs
\newcommand*{\hyxmp@rdf@dc}[3][\iffalse]{%
  \@ifmtargexp{#3}{\@tempswafalse}{\@tempswatrue}%
  #1
    \@tempswatrue
  \fi
  \if@tempswa
    \hyxmp@xmlify{#3}%
    \let\hyxmp@value=\hyxmp@xmlified
    \hyxmp@add@to@xml{%
______<dc:#2>^^J%
________<rdf:Alt>^^J%
    }%
    \@if@def@and@nonempty{hyxmp@alt@#2}{%
      \hyxmp@multi@langstrue
    }{%
      \hyxmp@multi@langsfalse
    }%
    \ifx\@pdfmetalang\hyxmp@x@default
      \ifhyxmp@multi@langs
        \PackageError{hyperxmp}%
          {\string\XMPLangAlt\space was used without specifying
           pdfmetalang\MessageBreak
           or pdflang}%
          {Be sure to assign a language code to the pdfmetalang key and/or a
           document\MessageBreak
           language to the pdflang key (e.g., \string\hypersetup{pdfmetalang={en}}).}%
      \else
        \hyxmp@add@to@xml{%
__________<rdf:li xml:lang="\hyxmp@x@default">\hyxmp@value</rdf:li>^^J%
        }%
      \fi
    \else
      \ifhyxmp@multi@langs
        \hyxmp@xmlify{\@pdfmetalang}%
        \hyxmp@add@to@xml{%
__________<rdf:li xml:lang="\hyxmp@x@default">\hyxmp@value</rdf:li>^^J%
__________<rdf:li xml:lang="\hyxmp@xmlified">\hyxmp@value</rdf:li>^^J%
        }%
        \def\do##1##2{
          \hyxmp@xmlify{##2}%
          \hyxmp@add@to@xml{%
    __________<rdf:li xml:lang="##1">\hyxmp@xmlified</rdf:li>^^J%
          }%
        }%
        \csname hyxmp@alt@#2\endcsname
      \else
        \hyxmp@xmlify{\@pdfmetalang}%
        \hyxmp@add@to@xml{%
__________<rdf:li xml:lang="\hyxmp@xmlified">\hyxmp@value</rdf:li>^^J%
        }%
      \fi
    \fi
    \hyxmp@add@to@xml{%
________</rdf:Alt>^^J%
______</dc:#2>^^J%
    }%
  \fi
}%
\newcommand*{\hyxmp@list@to@xml}[4][\iffalse]{%
  \@ifmtargexp{#4}{\@tempswafalse}{\@tempswatrue}%
  #1
    \@tempswatrue
  \fi
  \if@tempswa
    \hyxmp@add@to@xml{%
______<dc:#2>^^J%
________<rdf:#3>^^J%
    }%
    \bgroup
      \hyxmp@xmlify{#4}%
      \hyxmp@commas@to@list\hyxmp@list{\hyxmp@xmlified}%
      \def\@elt##1{%
        \hyxmp@add@to@xml{%
__________<rdf:li>##1</rdf:li>^^J%
        }%
      }%
      \hyxmp@list
    \egroup
    \hyxmp@add@to@xml{%
________</rdf:#3>^^J%
______</dc:#2>^^J%
    }%
  \fi
}
\newcommand{\hyxmp@singleton@dc}[3][Bag]{%
  \@ifnotmtargexp{#3}{%
    \hyxmp@xmlify{#3}%
    \hyxmp@add@to@xml{%
______<dc:#2>^^J%
________<rdf:#1>^^J%
__________<rdf:li>\hyxmp@xmlified</rdf:li>^^J%
________</rdf:#1>^^J%
______</dc:#2>^^J%
    }%
  }
}
\newcommand*{\hyxmp@cond@dc@identifier}[2]{%
  \ifx\hyxmp@xmlified\@empty
    \@ifnotmtargexp{#2}{%
      \hyxmp@add@simple@pfx{dc:identifier}{#1}{#2}%
    }%
  \fi
}
\newcommand*{\hyxmp@dc@schema}{%
  \hyxmp@add@simple{dc:format}{application/pdf}%
  \hyxmp@rdf@dc[\ifHy@pdfa]{title}{\@pdftitle}%
  \hyxmp@rdf@dc[\ifHy@pdfa]{description}{\@pdfsubject}%
  \hyxmp@rdf@dc{rights}{\@pdfcopyright}%
  \hyxmp@singleton@dc{publisher}{\@pdfpublisher}%
  \@ifmtargexp{\@pdfdatetime}{%
    \hyxmp@singleton@dc[Seq]{date}{\hyxmp@today@xmp}%
  }{%
    \hyxmp@singleton@dc[Seq]{date}{\@pdfdatetime}%
  }%
  \hyxmp@singleton@dc{type}{\@pdftype}%
  \hyxmp@list@to@xml[\ifHy@pdfa]{creator}{Seq}{\hyxmp@pdfauthor}%
  \hyxmp@list@to@xml{subject}{Bag}{\hyxmp@pdfkeywords}%
  \ifx\@pdfsource\@empty
  \else
    \hyxmp@add@simple{dc:source}{\@pdfsource}%
  \fi
  \hyxmp@list@to@xml{language}{Bag}{\hyxmp@dc@lang}%
  \@ifmtargexp{\@pdfidentifier}{%
    \let\hyxmp@xmlified=\@empty
    \hyxmp@cond@dc@identifier{info:doi/}{\@pdfdoi}%
    \hyxmp@cond@dc@identifier{urn:ISSN:}{\@pdfeissn}%
    \hyxmp@cond@dc@identifier{urn:ISSN:}{\@pdfissn}%
    \hyxmp@cond@dc@identifier{urn:ISBN:}{\@pdfisbn}%
  }{%
    \hyxmp@add@simple{dc:identifier}{\@pdfidentifier}%
  }%
}
\newcommand*{\hyxmp@xmpRights@schema}{%
  \let\hyxmp@rights=\@empty
  \ifx\@pdflicenseurl\@empty
  \else
    \def\hyxmp@rights{YES}%
  \fi
  \ifx\@pdfcopyright\@empty
  \else
    \def\hyxmp@rights{YES}%
  \fi
  \ifx\hyxmp@rights\@empty
  \else
    \ifx\@pdfcopyright\@empty
    \else
      \hyxmp@add@simple{xmpRights:Marked}{True}%
    \fi
    \hyxmp@add@simple{xmpRights:WebStatement}{\@pdflicenseurl}%
  \fi
}
\expandafter\hyxmp@aep@toks\expandafter=\expandafter{%
  \the\hyxmp@aep@toks
  \AtEndPreamble{%
    \@ifmtargexp{\hyxmp@DocumentID}{\hyxmp@def@DocumentID}{}%
    \@ifmtargexp{\hyxmp@InstanceID}{\hyxmp@def@InstanceID}{}%
  }%
}
\gdef\hyxmp@mm@schema{%
  \hyxmp@add@simple{xmpMM:DocumentID}{\hyxmp@DocumentID}%
  \hyxmp@add@simple{xmpMM:InstanceID}{\hyxmp@InstanceID}%
  \hyxmp@add@simple{xmpMM:VersionID}{\@pdfversionid}%
  \hyxmp@add@simple{xmpMM:RenditionClass}{\@pdfrendition}%
}

\newcommand*{\hyxmp@xmp@basic@schema}{%
  \@ifmtargexp{\@pdfcreationdate}{%
    \hyxmp@add@simple{xmp:CreateDate}{\hyxmp@today@xmp}%
  }{%
    \hyxmp@add@simple{xmp:CreateDate}{%
      \expandafter\hyxmp@as@xmp@date\expandafter{\@pdfcreationdate}}%
  }%
  \@ifmtargexp{\@pdfmoddate}{%
    \hyxmp@add@simple{xmp:ModifyDate}{\hyxmp@today@xmp}%
  }{%
    \hyxmp@add@simple{xmp:ModifyDate}{%
      \expandafter\hyxmp@as@xmp@date\expandafter{\@pdfmoddate}}%
  }%
  \@ifmtargexp{\@pdfmetadatetime}{%
    \hyxmp@add@simple{xmp:MetadataDate}{\hyxmp@today@xmp}%
  }{%
    \hyxmp@add@simple{xmp:MetadataDate}{\@pdfmetadatetime}%
  }%
  \hyxmp@add@simple{xmp:CreatorTool}{\@pdfcreator}%
  \hyxmp@add@simple{xmp:BaseURL}{\@baseurl}%
}
\gdef\hyxmp@photoshop@schema{%
  \edef\hyxmp@photoshop@data{\@pdfauthortitle\@pdfcaptionwriter}%
  \hyxmp@add@simple{photoshop:AuthorsPosition}{\@pdfauthortitle}%
  \hyxmp@add@simple{photoshop:CaptionWriter}{\@pdfcaptionwriter}%
}
\newcommand*{\hyxmp@pdfa@id@schema}{%
  \ifHy@pdfa
    \hyxmp@add@simple{pdfaid:part}{\@pdfapart}%
    \hyxmp@add@simple{pdfaid:conformance}{\@pdfaconformance}%
  \fi
}
\newcommand*{\hyxmp@pdfua@id@schema}{%
  \hyxmp@add@simple{pdfuaid:part}{\@pdfuapart}%
}
\newcommand*{\hyxmp@pdfx@id@schema}{%
  \@hyxmp@count=0\hyxmp@pdfx@major\relax
  \ifnum\@hyxmp@count=0
  \else
    \ifnum\@hyxmp@count=1
      \hyxmp@add@simple{pdfx:GTS_PDFXVersion}{PDF/X-1:2001}%
      \hyxmp@add@simple{pdfx:GTS_PDFXConformance}{\@pdfxstandard}%
    \else
      \ifnum\@hyxmp@count<4
        \hyxmp@add@simple{pdfx:GTS_PDFXVersion}{\@pdfxstandard}%
      \else
        \hyxmp@add@simple{pdfxid:GTS_PDFXVersion}{\@pdfxstandard}%
      \fi
    \fi
  \fi
}
\begingroup
  \catcode`\&=12
  \catcode`\#=12
  \gdef\xmplinesep{&#xA;}
\endgroup
\newcommand*{\hyxmp@list@to@lines}[2]{%
  \@ifnotmtargexp{#2}{%
    \bgroup
      \hyxmp@add@to@xml{%
        \hyxmp@extra@indent______<#1>%
      }%
      \def\@elt@first##1{%
        \hyxmp@add@to@xml{##1}%
        \let\@elt=\@elt@rest
      }%
      \def\@elt@rest##1{%
        \hyxmp@add@to@xml{\xmplinesep##1}%
      }%
      \let\@elt=\@elt@first
      \hyxmp@xmlify{#2}%
      \hyxmp@commas@to@list\hyxmp@list{\hyxmp@xmlified}%
      \hyxmp@list
      \hyxmp@add@to@xml{</#1>^^J}%
    \egroup
  }%
}
\gdef\hyxmp@iptc@schema{%
  \ifx\hyxmp@iptc@data\@empty
  \else
    \hyxmp@add@to@xml{%
______<Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource">^^J%
    }%
    \bgroup
      \edef\hyxmp@extra@indent{\hyxmp@extra@indent\space\space}%
      \hyxmp@list@to@lines{Iptc4xmpCore:CiAdrExtadr}{\@pdfcontactaddress}%
      \hyxmp@add@simple{Iptc4xmpCore:CiAdrCity}{\@pdfcontactcity}%
      \hyxmp@add@simple{Iptc4xmpCore:CiAdrRegion}{\@pdfcontactregion}%
      \hyxmp@add@simple{Iptc4xmpCore:CiAdrPcode}{\@pdfcontactpostcode}%
      \hyxmp@add@simple{Iptc4xmpCore:CiAdrCtry}{\@pdfcontactcountry}%
      \def\xmplinesep{,}%
      \hyxmp@list@to@lines{Iptc4xmpCore:CiTelWork}{\@pdfcontactphone}%
      \hyxmp@list@to@lines{Iptc4xmpCore:CiEmailWork}{\@pdfcontactemail}%
      \hyxmp@list@to@lines{Iptc4xmpCore:CiUrlWork}{\@pdfcontacturl}%
    \egroup
    \hyxmp@add@to@xml{%
______</Iptc4xmpCore:CreatorContactInfo>^^J%
    }%
  \fi
}
\newcommand*{\hyxmp@prism@schema}{%
  \ifx\hyxmp@prism@data\@empty
  \else
    \hyxmp@add@simple{prism:complianceProfile}{three}%
  \fi
  \hyxmp@add@simple@lang{prism:subtitle}{\@pdfsubtitle}%
  \hyxmp@add@simple@lang{prism:publicationName}{\@pdfpublication}%
  \hyxmp@add@simple{prism:aggregationType}{\@pdfpubtype}%
  \hyxmp@add@simple@lang{prism:bookEdition}{\@pdfbookedition}%
  \hyxmp@add@simple{prism:volume}{\@pdfvolumenum}%
  \hyxmp@add@simple{prism:number}{\@pdfissuenum}%
  \hyxmp@add@simple{prism:pageRange}{\@pdfpagerange}%
  \hyxmp@add@simple{prism:isbn}{\@pdfisbn}%
  \hyxmp@add@simple{prism:issn}{\@pdfissn}%
  \hyxmp@add@simple{prism:eIssn}{\@pdfeissn}%
  \hyxmp@add@simple{prism:doi}{\@pdfdoi}%
  \hyxmp@add@simple{prism:url}{\@pdfurl}%
  \hyxmp@add@simple{prism:byteCount}{\@pdfbytes}%
  \hyxmp@add@simple{prism:pageCount}{\@pdfnumpages}%
}
\newcommand*{\hyxmp@jav@schema}{%
  \hyxmp@add@simple{jav:journal_article_version}{\@pdfpubstatus}%
}
\newcommand*{\hyxmp@xmptpg@schema}{%
  \ifLuaTeX
    \luadirect{write_xmp_font_list(\the\hyxmp@cct)}%
  \fi
  \hyxmp@add@simple{xmpTPg:NPages}{\@pdfnumpages}%
}
\ifLuaTeX
  \newcatcodetable\hyxmp@cct
  \savecatcodetable\hyxmp@cct
\fi
\bgroup
  \catcode`\_=11
  \gdef\hyxmp@prot@us{_}%
\egroup
\ifLuaTeX
  \begin{luacode*}
function write_xmp_font_list (cct)
    local function show_field(name, ...)
    for i = 1, select("#", ...) do
      local val = select(i, ...)
      if val then
        local xml = string.gsub(val, "&", "&amp;")
        xml = string.gsub(xml, "<", "&lt;")
        xml = string.gsub(xml, ">", "&gt;")
        xml = string.gsub(xml, "_", "\\hyxmp@prot@us ")
        tex.print(cct, "____________<stFnt:" .. name .. ">" ..
                  xml .. "</stFnt:" .. name .. ">^^J%")
        return
      end
    end
  end
  tex.print(cct, "\\hyxmp@add@to@xml{%")
  tex.print(cct, "______<xmpTPg:Fonts>^^J%")
  tex.print(cct, "________<rdf:Bag>^^J%")
  for i, f in font.each() do
    tex.print(cct, "__________<rdf:li rdf:parseType=\"Resource\">^^J%")
    if f.filename then
      local fname = string.gsub(f.filename, "^harfloaded:(.*)", "%1")
      local info = fontloader.info(fname)
      if info then
        show_field("fontFace", info.fullname)
        show_field("fontFamily", info.familyname)
        show_field("fontName", info.fontname)
        show_field("versionString", info.version)
      end
      local baseName = string.gsub(f.filename, ".*[/\\](.*)", "%1")
      show_field("fontFileName", baseName)
    else
      show_field("fontName", f.psname, f.fullname, f.name)
    end
    if f.format and f.format ~= "unknown" then
      show_field("fontType", f.format)
    end
    tex.print(cct, "__________</rdf:li>^^J%")
  end
  tex.print(cct, "________</rdf:Bag>^^J%")
  tex.print(cct, "______</xmpTPg:Fonts>^^J%")
  tex.print(cct, "}")
end
  \end{luacode*}
\fi
\newcommand*{\hyxmp@check@iptc@data}{%
  \edef\hyxmp@iptc@data{%
    \@pdfcontactaddress
    \@pdfcontactcity
    \@pdfcontactregion
    \@pdfcontactpostcode
    \@pdfcontactcountry
    \@pdfcontactphone
    \@pdfcontactemail
    \@pdfcontacturl
  }%
}%
\newcommand*{\hyxmp@check@prism@data}{%
  \edef\hyxmp@prism@data{%
    \@pdfbookedition
    \@pdfbytes
    \@pdfdoi
    \@pdfeissn
    \@pdfisbn
    \@pdfissn
    \@pdfissuenum
    \@pdfnumpages
    \@pdfpagerange
    \@pdfpublication
    \@pdfpubtype
    \@pdfsubtitle
    \@pdfurl
    \@pdfvolumenum
  }%
}%
\newcommand*{\hyxmp@check@jav@data}{%
  \edef\hyxmp@jav@data{%
    \@pdfpubstatus
  }%
}
\newcommand*{\hyxmp@begin@extension@decls}{%
  \hyxmp@add@to@xml{%
______<pdfaExtension:schemas>^^J%
________<rdf:Bag>^^J%
  }%
}
\newcommand*{\hyxmp@end@extension@decls}{%
  \hyxmp@add@to@xml{%
________</rdf:Bag>^^J%
______</pdfaExtension:schemas>^^J%
  }%
}
\newcommand*{\hyxmp@begin@ext@decl}[3]{%
  \hyxmp@add@to@xml{%
__________<rdf:li rdf:parseType="Resource">^^J%
____________<pdfaSchema:schema>#1</pdfaSchema:schema>^^J%
____________<pdfaSchema:prefix>#2</pdfaSchema:prefix>^^J%
____________<pdfaSchema:namespaceURI>#3</pdfaSchema:namespaceURI>^^J%
____________<pdfaSchema:property>^^J%
______________<rdf:Seq>^^J%
  }%
}%
\newcommand*{\hyxmp@end@ext@decl}{%
  \hyxmp@add@to@xml{%
______________</rdf:Seq>^^J%
____________</pdfaSchema:property>^^J%
__________</rdf:li>^^J%
  }%
}%
\newcommand{\hyxmp@declare@property}[4][Text]{%
  \hyxmp@add@to@xml{%
________________<rdf:li rdf:parseType="Resource">^^J%
__________________<pdfaProperty:name>}%
  \xdef\hyxmp@xml{\hyxmp@xml#2}%
  \hyxmp@add@to@xml{</pdfaProperty:name>^^J%
__________________<pdfaProperty:valueType>#1</pdfaProperty:valueType>^^J%
__________________<pdfaProperty:category>#3</pdfaProperty:category>^^J%
__________________<pdfaProperty:description>#4</pdfaProperty:description>^^J%
________________</rdf:li>^^J%
  }%
}%
\newcommand{\hyxmp@declare@field}[3][Text]{%
  \hyxmp@add@to@xml{%
______________________<rdf:li rdf:parseType="Resource">^^J%
________________________<pdfaField:name>#2</pdfaField:name>^^J%
________________________<pdfaField:valueType>#1</pdfaField:valueType>^^J%
________________________<pdfaField:description>#3</pdfaField:description>^^J%
______________________</rdf:li>^^J%
  }%
}
\newcommand*{\hyxmp@pdf@extensions}{%
  \hyxmp@begin@ext@decl
      {Adobe PDF Schema}%
      {pdf}%
      {http://ns.adobe.com/pdf/1.3/}%
  \hyxmp@declare@property
      {Trapped}%
      {internal}%
      {Indication if the document has been modified to include trapping information}%
  \hyxmp@end@ext@decl
}%
\newcommand*{\hyxmp@mm@extensions}{%
  \hyxmp@begin@ext@decl
      {XMP Media Management Schema}%
      {xmpMM}%
      {http://ns.adobe.com/xap/1.0/mm/}%
  \hyxmp@declare@property
      [URI]
      {DocumentID}%
      {internal}%
      {UUID based identifier for all versions and renditions of a document}%
  \hyxmp@declare@property
      [URI]
      {InstanceID}%
      {internal}%
      {UUID based identifier for specific incarnation of a document}%
  \hyxmp@declare@property
      {VersionID}%
      {internal}%
      {Document version identifier}%
  \hyxmp@declare@property
      [RenditionClass]%
      {RenditionClass}%
      {internal}%
      {The manner in which a document is rendered}%
  \hyxmp@end@ext@decl
}%
\newcommand*{\hyxmp@pdfa@id@extensions}{%
  \hyxmp@begin@ext@decl
      {PDF/A Identification Schema}%
      {pdfaid}%
      {http://www.aiim.org/pdfa/ns/id/}%
  \hyxmp@declare@property
      [Integer]%
      {part}%
      {internal}%
      {Part of PDF/A standard}%
  \hyxmp@declare@property
      {conformance}%
      {internal}%
      {Conformance level of PDF/A standard}%
  \hyxmp@end@ext@decl
}%
\newcommand*{\hyxmp@pdfua@id@extensions}{%
  \hyxmp@begin@ext@decl
      {PDF/UA Universal Accessibility Schema}%
      {pdfuaid}%
      {http://www.aiim.org/pdfua/ns/id/}%
  \hyxmp@declare@property
      [Integer]%
      {part}%
      {internal}%
      {Part of ISO 14289 standard}%
  \hyxmp@end@ext@decl
}%
\newcommand*{\hyxmp@pdfx@id@extensions}{%
  \ifx\hyxmp@pdfx@major\empty
  \else
    \hyxmp@begin@ext@decl
        {Adobe Document Info PDF/X eXtension Schema}%
        {pdfx}%
        {http://ns.adobe.com/pdfx/1.3/}%
    \hyxmp@declare@property
        {GTS_PDFXVersion}%
        {internal}%
        {ID of PDF/X standard}%
    \hyxmp@declare@property
        {GTS_PDFXConformance}%
        {internal}%
        {Conformance level of PDF/X standard}%
    \hyxmp@end@ext@decl
  \fi
  \@hyxmp@count=0\hyxmp@pdfx@major\relax
  \ifnum\@hyxmp@count>3
    \hyxmp@begin@ext@decl
        {PDF/X ID Schema}%
        {pdfxid}%
        {http://www.npes.org/pdfx/ns/id/}%
    \hyxmp@declare@property
        {GTS_PDFXVersion}%
        {internal}%
        {ID of PDF/X standard}%
    \hyxmp@end@ext@decl
  \fi
}%
\newcommand*{\hyxmp@iptc@extensions}{%
  \hyxmp@begin@ext@decl
      {IPTC Core Schema}%
      {Iptc4xmpCore}%
      {http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/}%
  \hyxmp@declare@property
      [ContactInfo]
      {CreatorContactInfo}
      {external}
      {Document creator's contact information}
  \hyxmp@add@to@xml{%
______________</rdf:Seq>^^J%
____________</pdfaSchema:property>^^J%
____________<pdfaSchema:valueType>^^J%
______________<rdf:Seq>^^J%
________________<rdf:li rdf:parseType="Resource">^^J%
__________________<pdfaType:type>ContactInfo</pdfaType:type>^^J%
__________________<pdfaType:namespaceURI>http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/</pdfaType:namespaceURI>^^J%
__________________<pdfaType:prefix>Iptc4xmpCore</pdfaType:prefix>^^J%
__________________<pdfaType:description>%
                   Basic set of information to get in contact with a person%
                 </pdfaType:description>^^J%
__________________<pdfaType:field>^^J%
____________________<rdf:Seq>^^J%
  }%
  \hyxmp@declare@field
      {CiAdrCity}%
      {Contact information city}%
  \hyxmp@declare@field
      {CiAdrCtry}%
      {Contact information country}%
  \hyxmp@declare@field
      {CiAdrExtadr}%
      {Contact information address}%
  \hyxmp@declare@field
      {CiAdrPcode}%
      {Contact information local postal code}%
  \hyxmp@declare@field
      {CiAdrRegion}%
      {Contact information regional information such as state or province}%
  \hyxmp@declare@field
      {CiEmailWork}%
      {Contact information email address(es)}%
  \hyxmp@declare@field
      {CiTelWork}%
      {Contact information telephone number(s)}%
  \hyxmp@declare@field
      {CiUrlWork}%
      {Contact information Web URL(s)}%
  \hyxmp@add@to@xml{%
____________________</rdf:Seq>^^J%
__________________</pdfaType:field>^^J%
________________</rdf:li>^^J%
______________</rdf:Seq>^^J%
____________</pdfaSchema:valueType>^^J%
__________</rdf:li>^^J%
  }%
}
\newcommand*{\hyxmp@prism@extensions}{%
  \hyxmp@begin@ext@decl
      {PRISM Basic Metadata}%
      {prism}%
      {http://prismstandard.org/namespaces/basic/3.0/}%
  \hyxmp@declare@property
      {complianceProfile}%
      {internal}%
      {PRISM specification compliance profile to which this document adheres}%
  \hyxmp@declare@property
      {publicationName}%
      {external}%
      {Publication name}%
  \hyxmp@declare@property
      {aggregationType}%
      {external}%
      {Publication type}%
  \hyxmp@declare@property
      {bookEdition}%
      {external}%
      {Edition of the book in which the document was published}%
  \hyxmp@declare@property
      {volume}%
      {external}%
      {Publication volume number}%
  \hyxmp@declare@property
      {number}%
      {external}%
      {Publication issue number within a volume}%
  \hyxmp@declare@property
      {pageRange}%
      {external}%
      {Page range for the document within the print version of its publication}%
  \hyxmp@declare@property
      {issn}%
      {external}%
      {ISSN for the printed publication in which the document was published}%
  \hyxmp@declare@property
      {eIssn}%
      {external}%
      {ISSN for the electronic publication in which the document was published}%
  \hyxmp@declare@property
      {isbn}%
      {external}%
      {ISBN for the publication in which the document was published}%
  \hyxmp@declare@property
      {doi}%
      {external}%
      {Digital Object Identifier for the document}%
  \hyxmp@declare@property
      [URL]
      {url}%
      {external}%
      {URL at which the document can be found}%
  \hyxmp@declare@property
      [Integer]
      {byteCount}%
      {internal}%
      {Approximate file size in octets}%
  \hyxmp@declare@property
      [Integer]
      {pageCount}%
      {internal}%
      {Number of pages in the print version of the document}%
  \hyxmp@declare@property
      {subtitle}%
      {external}%
      {Document's subtitle}%
  \hyxmp@end@ext@decl
}%
\newcommand*{\hyxmp@jav@extensions}{%
  \hyxmp@begin@ext@decl
      {NISO/ALPSP Journal Article Versions}%
      {jav}%
      {http://www.niso.org/schemas/jav/1.0/}%
  \hyxmp@declare@property
      [Closed Choice of Text]%
      {journal_article_version}%
      {external}%
      {Article status, one of "AO", "SMUR", "AM", "P", "VoR", "CVoR", or "EVoR"}%
  \hyxmp@end@ext@decl
}%
\newcommand*{\hyxmp@declare@extensions}{%
  \hyxmp@begin@extension@decls
  \hyxmp@pdf@extensions
  \hyxmp@mm@extensions
  \ifHy@pdfa
    \hyxmp@pdfa@id@extensions
  \fi
  \ifx\@pdfuapart\@empty
  \else
    \hyxmp@pdfua@id@extensions
  \fi
  \ifx\@pdfxversion\@empty
  \else
    \hyxmp@pdfx@id@extensions
  \fi
  \ifx\hyxmp@iptc@data\@empty
  \else
    \hyxmp@iptc@extensions
  \fi
  \ifx\hyxmp@prism@data\@empty
  \else
    \hyxmp@prism@extensions
  \fi
  \ifx\hyxmp@jav@data\@empty
  \else
    \hyxmp@jav@extensions
  \fi
  \hyxmp@end@extension@decls
}
\begingroup
  \ifhyxmp@unicodetex
    \lccode`\!="FEFF %
    \lowercase{%
      \gdef\hyxmp@bom{!}
    }%
  \else
    \catcode`\^^ef=12
    \catcode`\^^bb=12
    \catcode`\^^bf=12
    \gdef\hyxmp@bom{^^ef^^bb^^bf}%
  \fi
\endgroup
\def\hyxmp@construct@packet{%
  \gdef\hyxmp@xml{}%
  \hyxmp@add@to@xml{<?xpacket begin="\hyxmp@bom" %
id="W5M0MpCehiHzreSzNTczkc9d"?>^^J%
<x:xmpmeta xmlns:x="adobe:ns:meta/">^^J%
__<rdf:RDF %
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns\hyxmp@hash">^^J%
____<rdf:Description rdf:about=""^^J%
_____________________xmlns:pdf="http://ns.adobe.com/pdf/1.3/"^^J%
_____________________xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/"^^J%
_____________________xmlns:dc="http://purl.org/dc/elements/1.1/"^^J%
_____________________xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"^^J%
_____________________xmlns:xmp="http://ns.adobe.com/xap/1.0/"^^J%
_____________________xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"^^J%
_____________________xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent\hyxmp@hash"^^J%
_____________________xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"^^J%
_____________________xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"^^J%
_____________________xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"^^J%
  }%
  \ifnum0\hyxmp@pdfx@major>3
    \hyxmp@add@to@xml{%
_____________________xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"^^J%
    }%
  \fi
  \hyxmp@add@to@xml{%
_____________________xmlns:prism="http://prismstandard.org/namespaces/basic/3.0/"^^J%
_____________________xmlns:jav="http://www.niso.org/schemas/jav/1.0/"^^J%
_____________________xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"^^J%
_____________________xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font\hyxmp@hash"^^J%
_____________________xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"^^J%
_____________________xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"^^J%
_____________________xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema\hyxmp@hash"^^J%
_____________________xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property\hyxmp@hash"^^J%
_____________________xmlns:pdfaType="http://www.aiim.org/pdfa/ns/type\hyxmp@hash"^^J%
_____________________xmlns:pdfaField="http://www.aiim.org/pdfa/ns/field\hyxmp@hash">^^J%
  }%
  \hyxmp@check@iptc@data
  \hyxmp@check@prism@data
  \hyxmp@check@jav@data
  \hyxmp@declare@extensions
  \hyxmp@pdf@schema
  \hyxmp@xmpRights@schema
  \hyxmp@dc@schema
  \hyxmp@photoshop@schema
  \hyxmp@xmp@basic@schema
  \hyxmp@pdfa@id@schema
  \hyxmp@pdfua@id@schema
  \hyxmp@pdfx@id@schema
  \hyxmp@mm@schema
  \hyxmp@iptc@schema
  \hyxmp@prism@schema
  \hyxmp@jav@schema
  \hyxmp@xmptpg@schema
  \hyxmp@add@to@xml{%
____</rdf:Description>^^J%
__</rdf:RDF>^^J%
</x:xmpmeta>^^J%
\hyxmp@padding
<?xpacket end="w"?>^^J%
  }%
}
\newcommand*{\hyxmp@embed@packet}{%
  \hyxmp@construct@packet
  \def\hyxmp@driver{hpdftex}%
  \ifx\hyxmp@driver\Hy@driver
    \hyxmp@embed@packet@pdftex
  \else
    \def\hyxmp@driver{hluatex}%
    \ifx\hyxmp@driver\Hy@driver
      \hyxmp@embed@packet@luatex
    \else
      \def\hyxmp@driver{hdvipdfm}%
      \ifx\hyxmp@driver\Hy@driver
        \hyxmp@embed@packet@dvipdfm
      \else
        \def\hyxmp@driver{hxetex}%
        \ifx\hyxmp@driver\Hy@driver
          \hyxmp@embed@packet@xetex
        \else
          \@ifundefined{pdfmark}{%
            \PackageWarningNoLine{hyperxmp}{%
              Unrecognized hyperref driver `\Hy@driver'.\MessageBreak
              \hyxmp@jobname.tex's XMP metadata will *not* be\MessageBreak
              embedded in the resulting file}%
          }{%
            \hyxmp@embed@packet@pdfmark
          }%
        \fi
      \fi
    \fi
  \fi
}
\RequirePackage{ifluatex}
\newcommand*{\hyxmp@embed@packet@pdftex}{%
  \bgroup
    \ifluatex
    \else
      \pdfcompresslevel=0
    \fi
    \immediate\pdfobj \ifluatex uncompressed\fi stream attr {%
      /Type /Metadata
      /Subtype /XML
    }{\hyxmp@xml}%
    \pdfcatalog {/Metadata \the\pdflastobj\space 0 R}%
  \egroup
}
\newcommand*{\hyxmp@embed@packet@luatex}{%
  \immediate\pdfextension obj uncompressed stream attr {%
    /Type /Metadata
    /Subtype /XML
  }{\hyxmp@xml}%
  \pdfextension catalog {/Metadata \the\numexpr\pdffeedback lastobj\relax\space 0 R}%
}
\newcommand*{\hyxmp@embed@packet@pdfmark}{%
  \pdfmark{%
    pdfmark=/NamespacePush
  }%
  \pdfmark{%
    pdfmark=/OBJ,
    Raw={/_objdef \string{hyxmp@Metadata\string} /type /stream}%
  }%
  \pdfmark{%
    pdfmark=/PUT,
    Raw={\string{hyxmp@Metadata\string}
      2 dict begin
        /Type /Metadata def
        /Subtype /XML def
        currentdict
      end
    }%
  }%
  \pdfmark{%
    pdfmark=/PUT,
    Raw={\string{hyxmp@Metadata\string} (\hyxmp@xml)}%
  }%
  \pdfmark{%
    pdfmark=/Metadata,
    Raw={\string{Catalog\string} \string{hyxmp@Metadata\string}}%
  }%
  \pdfmark{%
    pdfmark=/NamespacePop
  }%
}
\newcommand*{\hyxmp@embed@packet@dvipdfm}{%
  \hyxmp@string@len{\hyxmp@xml}%
  \special{pdf: object @hyxmp@Metadata
    <<
      /Type /Metadata
      /Subtype /XML
      /Length \the\@hyxmp@count
    >>
    stream^^J\hyxmp@xml endstream%
  }%
  \special{pdf: docview
    <<
      /Metadata @hyxmp@Metadata
    >>
  }%
}
\newcommand*{\hyxmp@string@len}[1]{%
  \@hyxmp@count=0
  \expandafter\hyxmp@count@spaces#1 {} %
  \expandafter\hyxmp@count@non@spaces#1{}%
}
\def\hyxmp@count@spaces#1 {%
  \def\hyxmp@one@token{#1}%
  \ifx\hyxmp@one@token\@empty
    \advance\@hyxmp@count by -1
  \else
    \advance\@hyxmp@count by 1
    \expandafter\hyxmp@count@spaces
  \fi
}
\newcommand*{\hyxmp@count@non@spaces}[1]{%
  \def\hyxmp@one@token{#1}%
  \ifx\hyxmp@one@token\@empty
  \else
    \advance\@hyxmp@count by 1
    \expandafter\hyxmp@count@non@spaces
  \fi
}
\newcommand*{\hyxmp@embed@packet@xetex}{%
  \special{pdf:stream @hyxmp@Metadata (\hyxmp@xml)
    <<
      /Type /Metadata
      /Subtype /XML
    >>
  }%
  \special{pdf:put @catalog
    <<
      /Metadata @hyxmp@Metadata
    >>
  }%
}
\the\hyxmp@aep@toks
\catcode`\"=\hyxmp@dq@code
\endinput
%%
%% End of file `hyperxmp.sty'.
