edbticdt-climate

EDBT/ICDT climate change material
git clone https://a3nm.net/git/edbticdt-climate/
Log | Files | Refs

acmart.cls (100390B)


      1 %%
      2 %% This is file `acmart.cls',
      3 %% generated with the docstrip utility.
      4 %%
      5 %% The original source files were:
      6 %%
      7 %% acmart.dtx  (with options: `class')
      8 %% 
      9 %% IMPORTANT NOTICE:
     10 %% 
     11 %% For the copyright see the source file.
     12 %% 
     13 %% Any modified versions of this file must be renamed
     14 %% with new filenames distinct from acmart.cls.
     15 %% 
     16 %% For distribution of the original source see the terms
     17 %% for copying and modification in the file acmart.dtx.
     18 %% 
     19 %% This generated file may be distributed as long as the
     20 %% original source files, as listed above, are part of the
     21 %% same distribution. (The sources need not necessarily be
     22 %% in the same archive or directory.)
     23 %% \CharacterTable
     24 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
     25 %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
     26 %%   Digits        \0\1\2\3\4\5\6\7\8\9
     27 %%   Exclamation   \!     Double quote  \"     Hash (number) \#
     28 %%   Dollar        \$     Percent       \%     Ampersand     \&
     29 %%   Acute accent  \'     Left paren    \(     Right paren   \)
     30 %%   Asterisk      \*     Plus          \+     Comma         \,
     31 %%   Minus         \-     Point         \.     Solidus       \/
     32 %%   Colon         \:     Semicolon     \;     Less than     \<
     33 %%   Equals        \=     Greater than  \>     Question mark \?
     34 %%   Commercial at \@     Left bracket  \[     Backslash     \\
     35 %%   Right bracket \]     Circumflex    \^     Underscore    \_
     36 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
     37 %%   Right brace   \}     Tilde         \~}
     38 \NeedsTeXFormat{LaTeX2e}
     39 \ProvidesClass{acmart}
     40 [2020/11/15 v1.75 Typesetting articles for the Association for Computing Machinery]
     41 \def\@classname{acmart}
     42 \InputIfFileExists{acmart-preload-hook.tex}{%
     43   \ClassWarning{\@classname}{%
     44     I am loading acmart-preload-hook.tex. You are fully responsible
     45     for any problems from now on.}}{}
     46 \RequirePackage{xkeyval}
     47 \RequirePackage{xstring}
     48 \RequirePackage{iftex}
     49 \define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%
     50   manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
     51   sigplan, sigchi, sigchi-a}[manuscript]{}{%
     52   \ClassError{\@classname}{The option format must be manuscript,
     53     acmsmall, acmlarge, acmtog, sigconf, siggraph,
     54     sigplan, sigchi or sigchi-a}}
     55 \def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}}
     56 \@DeclareACMFormat{manuscript}
     57 \@DeclareACMFormat{acmsmall}
     58 \@DeclareACMFormat{acmlarge}
     59 \@DeclareACMFormat{acmtog}
     60 \@DeclareACMFormat{sigconf}
     61 \@DeclareACMFormat{siggraph}
     62 \@DeclareACMFormat{sigplan}
     63 \@DeclareACMFormat{sigchi}
     64 \@DeclareACMFormat{sigchi-a}
     65 \ExecuteOptionsX{format}
     66 \define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%
     67   \if@ACM@screen
     68     \PackageInfo{\@classname}{Using screen mode}%
     69   \else
     70     \PackageInfo{\@classname}{Not using screen mode}%
     71   \fi}{\PackageError{\@classname}{The option screen can be either true or
     72     false}}
     73 \ExecuteOptionsX{screen=false}
     74 \define@boolkey+{acmart.cls}[@ACM@]{urlbreakonhyphens}[true]{%
     75   \if@ACM@urlbreakonhyphens
     76     \PackageInfo{\@classname}{Using breaking urls on hyphens}%
     77   \else
     78     \PackageInfo{\@classname}{Not breaking urls on hyphens}%
     79   \fi}{\PackageError{\@classname}{The option urlbreakonhyphens can be either true or
     80     false}}
     81 \ExecuteOptionsX{urlbreakonhyphens=true}
     82 \define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{%
     83   \if@ACM@acmthm
     84     \PackageInfo{\@classname}{Requiring acmthm}%
     85   \else
     86     \PackageInfo{\@classname}{Suppressing acmthm}%
     87   \fi}{\PackageError{\@classname}{The option acmthm can be either true or
     88     false}}
     89 \ExecuteOptionsX{acmthm=true}
     90 \define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
     91   \if@ACM@review
     92     \PackageInfo{\@classname}{Using review mode}%
     93     \AtBeginDocument{\@ACM@printfoliostrue}%
     94   \else
     95     \PackageInfo{\@classname}{Not using review mode}%
     96   \fi}{\PackageError{\@classname}{The option review can be either true or
     97     false}}
     98 \ExecuteOptionsX{review=false}
     99 \define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
    100   \if@ACM@authorversion
    101     \PackageInfo{\@classname}{Using authorversion mode}%
    102   \else
    103     \PackageInfo{\@classname}{Not using authorversion mode}%
    104   \fi}{\PackageError{\@classname}{The option authorversion can be either true or
    105     false}}
    106 \ExecuteOptionsX{authorversion=false}
    107 \define@boolkey+{acmart.cls}[@ACM@]{nonacm}[true]{%
    108   \if@ACM@nonacm
    109     \PackageInfo{\@classname}{Using nonacm mode}%
    110     \AtBeginDocument{\@ACM@printacmreffalse}%
    111     % in 'nonacm' mode we disable the "ACM Reference Format"
    112     % printing by default, but this can be re-enabled by the
    113     % user using \settopmatter{printacmref=true}
    114   \else
    115     \PackageInfo{\@classname}{Not using nonacm mode}%
    116   \fi}{\PackageError{\@classname}{The option nonacm can be either true or
    117     false}}
    118 \ExecuteOptionsX{nonacm=false}
    119 \define@boolkey+{acmart.cls}[@ACM@]{balance}[true]{}{%
    120   \PackageError{\@classname}{The option balance can be either true or
    121     false}}
    122 \ExecuteOptionsX{balance}
    123 \define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
    124   \if@ACM@natbib
    125     \PackageInfo{\@classname}{Explicitly selecting natbib mode}%
    126   \else
    127     \PackageInfo{\@classname}{Explicitly deselecting natbib mode}%
    128   \fi}{\PackageError{\@classname}{The option natbib can be either true or
    129     false}}
    130 \ExecuteOptionsX{natbib=true}
    131 \define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
    132   \if@ACM@anonymous
    133     \PackageInfo{\@classname}{Using anonymous mode}%
    134   \else
    135     \PackageInfo{\@classname}{Not using anonymous mode}%
    136   \fi}{\PackageError{\@classname}{The option anonymous can be either true or
    137     false}}
    138 \ExecuteOptionsX{anonymous=false}
    139 \define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%
    140   \if@ACM@timestamp
    141     \PackageInfo{\@classname}{Using timestamp mode}%
    142   \else
    143     \PackageInfo{\@classname}{Not using timestamp mode}%
    144   \fi}{\PackageError{\@classname}{The option timestamp can be either true or
    145     false}}
    146 \ExecuteOptionsX{timestamp=false}
    147 \define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
    148   \if@ACM@authordraft
    149     \PackageInfo{\@classname}{Using authordraft mode}%
    150     \@ACM@timestamptrue
    151     \@ACM@reviewtrue
    152   \else
    153     \PackageInfo{\@classname}{Not using authordraft mode}%
    154   \fi}{\PackageError{\@classname}{The option authordraft can be either true or
    155     false}}
    156 \ExecuteOptionsX{authordraft=false}
    157 \def\ACM@fontsize{}
    158 \DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
    159 \DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
    160 \DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
    161 \DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}
    162 \DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
    163 \DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
    164 \ProcessOptionsX
    165 \ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}
    166 \newif\if@ACM@manuscript
    167 \newif\if@ACM@journal
    168 \newif\if@ACM@journal@bibstrip
    169 \newif\if@ACM@sigchiamode
    170 \ifnum\ACM@format@nr=5\relax % siggraph
    171 \ClassWarning{\@classname}{%
    172   The format siggraph is now obsolete.\MessageBreak
    173   I am switching to sigconf.}
    174   \setkeys{acmart.cls}{format=sigconf}
    175 \fi
    176 \ifnum\ACM@format@nr=7\relax % sigchi
    177 \ClassWarning{\@classname}{%
    178   The format sigchi is now obsolete.\MessageBreak
    179   I am switching to sigconf.}
    180   \setkeys{acmart.cls}{format=sigconf}
    181 \fi
    182 \ifnum\ACM@format@nr=8\relax % sigchi
    183 \ClassWarning{\@classname}{%
    184   ACM SIGCHI has retired the SIGCHI-A template\MessageBreak
    185   effective immediately. ACM is keeping this template\MessageBreak
    186   option available to authors who are working on legacy\MessageBreak
    187   documents only. ACM will not, under any circumstances,\MessageBreak
    188   accept documents in this format for publication and\MessageBreak
    189   will not offer technical support to the authors who use\MessageBreak
    190   this template.\MessageBreak
    191   ACM SIGCHI is directing Conference leaders and\MessageBreak
    192   authors to publish their articles using the SIGCONF\MessageBreak
    193   template call.}
    194 \fi
    195 \ifnum\ACM@format@nr=0\relax
    196   \@ACM@manuscripttrue
    197 \else
    198   \@ACM@manuscriptfalse
    199 \fi
    200 \@ACM@sigchiamodefalse
    201 \ifcase\ACM@format@nr
    202 \relax % manuscript
    203   \@ACM@journaltrue
    204 \or % acmsmall
    205   \@ACM@journaltrue
    206 \or % acmlarge
    207   \@ACM@journaltrue
    208 \or % acmtog
    209   \@ACM@journaltrue
    210 \or % sigconf
    211   \@ACM@journalfalse
    212 \or % siggraph
    213   \@ACM@journalfalse
    214  \or % sigplan
    215   \@ACM@journalfalse
    216  \or % sigchi
    217   \@ACM@journalfalse
    218 \or % sigchi-a
    219   \@ACM@journalfalse
    220   \@ACM@sigchiamodetrue
    221 \fi
    222 \if@ACM@journal
    223  \@ACM@journal@bibstriptrue
    224 \else
    225  \@ACM@journal@bibstripfalse
    226 \fi
    227 \ifx\ACM@fontsize\@empty
    228   \ifcase\ACM@format@nr
    229   \relax % manuscript
    230     \def\ACM@fontsize{9pt}%
    231   \or % acmsmall
    232     \def\ACM@fontsize{10pt}%
    233   \or % acmlarge
    234     \def\ACM@fontsize{10pt}%
    235   \or % acmtog
    236     \def\ACM@fontsize{9pt}%
    237   \or % sigconf
    238     \def\ACM@fontsize{9pt}%
    239   \or % siggraph
    240     \def\ACM@fontsize{9pt}%
    241    \or % sigplan
    242     \def\ACM@fontsize{10pt}%
    243    \or % sigchi
    244     \def\ACM@fontsize{9pt}%
    245   \or % sigchi-a
    246     \def\ACM@fontsize{10pt}%
    247   \fi
    248 \fi
    249 \ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
    250 \LoadClass[\ACM@fontsize, reqno]{amsart}
    251 \RequirePackage{microtype}
    252 \RequirePackage{etoolbox}
    253 \RequirePackage{booktabs}
    254 \RequirePackage{refcount}
    255 \RequirePackage{totpages}
    256 \RequirePackage{environ}
    257 \if@ACM@manuscript
    258 \RequirePackage{setspace}
    259 \onehalfspacing
    260 \fi
    261 \RequirePackage{textcase}
    262 \if@ACM@natbib
    263   \RequirePackage{natbib}
    264   \renewcommand{\bibsection}{%
    265      \section*{\refname}%
    266      \phantomsection\addcontentsline{toc}{section}{\refname}%
    267   }
    268   \renewcommand{\bibfont}{\bibliofont}
    269   \renewcommand\setcitestyle[1]{
    270   \@for\@tempa:=#1\do
    271   {\def\@tempb{round}\ifx\@tempa\@tempb
    272      \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
    273    \def\@tempb{square}\ifx\@tempa\@tempb
    274      \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
    275    \def\@tempb{angle}\ifx\@tempa\@tempb
    276      \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
    277    \def\@tempb{curly}\ifx\@tempa\@tempb
    278      \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
    279    \def\@tempb{semicolon}\ifx\@tempa\@tempb
    280      \renewcommand\NAT@sep{;}\fi
    281    \def\@tempb{colon}\ifx\@tempa\@tempb
    282      \renewcommand\NAT@sep{;}\fi
    283    \def\@tempb{comma}\ifx\@tempa\@tempb
    284      \renewcommand\NAT@sep{,}\fi
    285    \def\@tempb{authoryear}\ifx\@tempa\@tempb
    286      \NAT@numbersfalse\fi
    287    \def\@tempb{numbers}\ifx\@tempa\@tempb
    288      \NAT@numberstrue\NAT@superfalse\fi
    289    \def\@tempb{super}\ifx\@tempa\@tempb
    290      \NAT@numberstrue\NAT@supertrue\fi
    291    \def\@tempb{nobibstyle}\ifx\@tempa\@tempb
    292      \let\bibstyle=\@gobble\fi
    293    \def\@tempb{bibstyle}\ifx\@tempa\@tempb
    294      \let\bibstyle=\@citestyle\fi
    295    \def\@tempb{sort}\ifx\@tempa\@tempb
    296      \def\NAT@sort{\@ne}\fi
    297    \def\@tempb{nosort}\ifx\@tempa\@tempb
    298      \def\NAT@sort{\z@}\fi
    299    \def\@tempb{compress}\ifx\@tempa\@tempb
    300      \def\NAT@cmprs{\@ne}\fi
    301    \def\@tempb{nocompress}\ifx\@tempa\@tempb
    302      \def\NAT@cmprs{\z@}\fi
    303    \def\@tempb{sort&compress}\ifx\@tempa\@tempb
    304      \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
    305    \def\@tempb{mcite}\ifx\@tempa\@tempb
    306      \let\NAT@merge\@ne\fi
    307    \def\@tempb{merge}\ifx\@tempa\@tempb
    308      \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
    309    \def\@tempb{elide}\ifx\@tempa\@tempb
    310      \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
    311    \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
    312      \NAT@longnamestrue\fi
    313    \def\@tempb{nonamebreak}\ifx\@tempa\@tempb
    314      \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
    315    \expandafter\NAT@find@eq\@tempa=\relax\@nil
    316    \if\@tempc\relax\else
    317      \expandafter\NAT@rem@eq\@tempc
    318      \def\@tempb{open}\ifx\@tempa\@tempb
    319       \xdef\NAT@open{\@tempc}\fi
    320      \def\@tempb{close}\ifx\@tempa\@tempb
    321       \xdef\NAT@close{\@tempc}\fi
    322      \def\@tempb{aysep}\ifx\@tempa\@tempb
    323       \xdef\NAT@aysep{\@tempc}\fi
    324      \def\@tempb{yysep}\ifx\@tempa\@tempb
    325       \xdef\NAT@yrsep{\@tempc}\fi
    326      \def\@tempb{notesep}\ifx\@tempa\@tempb
    327       \xdef\NAT@cmt{\@tempc}\fi
    328      \def\@tempb{citesep}\ifx\@tempa\@tempb
    329       \xdef\NAT@sep{\@tempc}\fi
    330    \fi
    331   }%
    332   \NAT@@setcites
    333   }
    334   \renewcommand\citestyle[1]{%
    335     \ifcsname bibstyle@#1\endcsname%
    336     \csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
    337     \else%
    338     \@latex@error{Undefined `#1' citestyle}%
    339     \fi
    340   }%
    341 \fi
    342 \newcommand{\bibstyle@acmauthoryear}{%
    343   \setcitestyle{%
    344     authoryear,%
    345     open={[},close={]},citesep={;},%
    346     aysep={},yysep={,},%
    347     notesep={, }}}
    348 \newcommand{\bibstyle@acmnumeric}{%
    349   \setcitestyle{%
    350     numbers,sort&compress,%
    351     open={[},close={]},citesep={,},%
    352     notesep={, }}}
    353 \if@ACM@natbib
    354 \citestyle{acmnumeric}
    355 \fi
    356 \def\@startsection#1#2#3#4#5#6{%
    357   \if@noskipsec \leavevmode \fi
    358   \par
    359   \@tempskipa #4\relax
    360   \@afterindenttrue
    361   \ifdim \@tempskipa <\z@
    362     \@tempskipa -\@tempskipa \@afterindentfalse
    363   \fi
    364   \if@nobreak
    365     \everypar{}%
    366   \else
    367     \addpenalty\@secpenalty\addvspace\@tempskipa
    368   \fi
    369   \@ifstar
    370     {\@ssect{#3}{#4}{#5}{#6}}%
    371     {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
    372 \def\@sect#1#2#3#4#5#6[#7]#8{%
    373   \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
    374   \ifnum #2>\c@secnumdepth
    375     \let\@svsec\@empty
    376   \else
    377     \refstepcounter{#1}%
    378     \protected@edef\@svsec{\@seccntformat{#1}\relax}%
    379   \fi
    380   \@tempskipa #5\relax
    381   \ifdim \@tempskipa>\z@
    382     \begingroup
    383       #6{%
    384         \@hangfrom{\hskip #3\relax\@svsec}%
    385           \interlinepenalty \@M #8\@@par}%
    386     \endgroup
    387     \csname #1mark\endcsname{#7}%
    388     \ifnum #2>\c@secnumdepth \else
    389         \@tochangmeasure{\csname the#1\endcsname}%
    390     \fi
    391     \addcontentsline{toc}{#1}{%
    392       \ifnum #2>\c@secnumdepth \else
    393         \protect\numberline{\csname the#1\endcsname}%
    394       \fi
    395       #7}%
    396   \else
    397     \def\@svsechd{%
    398       #6{\hskip #3\relax
    399       \@svsec #8}%
    400       \csname #1mark\endcsname{#7}%
    401       \ifnum #2>\c@secnumdepth \else
    402         \@tochangmeasure{\csname the#1\endcsname\space}%
    403       \fi
    404       \addcontentsline{toc}{#1}{%
    405         \ifnum #2>\c@secnumdepth \else
    406           \protect\numberline{\csname the#1\endcsname}%
    407         \fi
    408         #7}}%
    409   \fi
    410   \@xsect{#5}}
    411 \def\@xsect#1{%
    412   \@tempskipa #1\relax
    413   \ifdim \@tempskipa>\z@
    414     \par \nobreak
    415     \vskip \@tempskipa
    416     \@afterheading
    417   \else
    418     \@nobreakfalse
    419     \global\@noskipsectrue
    420     \everypar{%
    421       \if@noskipsec
    422         \global\@noskipsecfalse
    423        {\setbox\z@\lastbox}%
    424         \clubpenalty\@M
    425         \begingroup \@svsechd \endgroup
    426         \unskip
    427         \@tempskipa #1\relax
    428         \hskip -\@tempskipa
    429       \else
    430         \clubpenalty \@clubpenalty
    431         \everypar{}%
    432       \fi}%
    433   \fi
    434   \ignorespaces}
    435 \def\@seccntformat#1{\csname the#1\endcsname\quad}
    436 \def\@ssect#1#2#3#4#5{%
    437   \@tempskipa #3\relax
    438   \ifdim \@tempskipa>\z@
    439     \begingroup
    440       #4{%
    441         \@hangfrom{\hskip #1}%
    442           \interlinepenalty \@M #5\@@par}%
    443     \endgroup
    444   \else
    445     \def\@svsechd{#4{\hskip #1\relax #5}}%
    446   \fi
    447   \@xsect{#3}}
    448 \def\@starttoc#1#2{\begingroup\makeatletter
    449   \setTrue{#1}%
    450   \par\removelastskip\vskip\z@skip
    451   \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}%
    452     {.5\linespacing}{\centering\contentsnamefont}{#2}%
    453   \@input{\jobname.#1}%
    454   \if@filesw
    455     \@xp\newwrite\csname tf@#1\endcsname
    456     \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
    457   \fi
    458   \global\@nobreakfalse \endgroup
    459   \addvspace{32\p@\@plus14\p@}%
    460 }
    461 \def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}}
    462 \def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}}
    463 \def\l@subsubsection{\@tocline{3}{0pt}{1pc}{5pc}{}}
    464 \def\@makefntext{\noindent\@makefnmark}
    465 \if@ACM@sigchiamode
    466 \long\def\@footnotetext#1{\marginpar{%
    467     \reset@font\small
    468     \interlinepenalty\interfootnotelinepenalty
    469     \protected@edef\@currentlabel{%
    470        \csname p@footnote\endcsname\@thefnmark
    471     }%
    472     \color@begingroup
    473       \@makefntext{%
    474         \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
    475     \color@endgroup}}%
    476 \fi
    477 \long\def\@mpfootnotetext#1{%
    478   \global\setbox\@mpfootins\vbox{%
    479     \unvbox\@mpfootins
    480     \reset@font\footnotesize
    481     \hsize\columnwidth
    482     \@parboxrestore
    483     \protected@edef\@currentlabel
    484          {\csname p@mpfootnote\endcsname\@thefnmark}%
    485     \color@begingroup\centering
    486       \@makefntext{%
    487         \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
    488     \color@endgroup}}
    489 \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
    490 \let\@footnotemark@nolink\@footnotemark
    491 \let\@footnotetext@nolink\@footnotetext
    492 \RequirePackage[bookmarksnumbered,unicode]{hyperref}
    493 \pdfstringdefDisableCommands{%
    494   \def\addtocounter#1#2{}%
    495   \def\unskip{}%
    496   \def\textbullet{- }%
    497   \def\textrightarrow{ -> }%
    498   \def\footnotemark{}%
    499 }
    500 \urlstyle{rm}
    501 \ifcase\ACM@format@nr
    502 \relax % manuscript
    503 \or % acmsmall
    504 \or % acmlarge
    505 \or % acmtog
    506 \or % sigconf
    507 \or % siggraph
    508 \or % sigplan
    509   \urlstyle{sf}
    510 \or % sigchi
    511 \or % sigchi-a
    512   \urlstyle{sf}
    513 \fi
    514 \AtEndPreamble{%
    515   \if@ACM@urlbreakonhyphens
    516     \def\do@url@hyp{\do\-}%
    517   \fi
    518   \if@ACM@screen
    519     \hypersetup{colorlinks,
    520       linkcolor=ACMPurple,
    521       citecolor=ACMPurple,
    522       urlcolor=ACMDarkBlue,
    523       filecolor=ACMDarkBlue}
    524     \else
    525     \hypersetup{hidelinks}
    526   \fi
    527   \hypersetup{pdflang={en},
    528     pdfdisplaydoctitle}}
    529 \RequirePackage{hyperxmp}
    530 \if@ACM@natbib
    531   \let\citeN\cite
    532   \let\cite\citep
    533   \let\citeANP\citeauthor
    534   \let\citeNN\citeyearpar
    535   \let\citeyearNP\citeyear
    536   \let\citeNP\citealt
    537   \DeclareRobustCommand\citeA
    538      {\begingroup\NAT@swafalse
    539        \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
    540   \providecommand\newblock{}%
    541 \else
    542   \AtBeginDocument{%
    543     \let\shortcite\cite%
    544     \providecommand\citename[1]{#1}}
    545 \fi
    546 \newcommand\shortcite[2][]{%
    547   \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi}
    548 \def\bibliographystyle#1{%
    549   \ifx\@begindocumenthook\@undefined\else
    550     \expandafter\AtBeginDocument
    551   \fi
    552     {\if@filesw
    553        \immediate\write\@auxout{\string\bibstyle{#1}}%
    554      \fi}}
    555 \RequirePackage{graphicx}
    556 \RequirePackage[prologue]{xcolor}
    557 \definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
    558 \definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
    559 \definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
    560 \definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
    561 \definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
    562 \definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
    563 \definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
    564 \definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
    565 \if@ACM@authordraft
    566   \RequirePackage{draftwatermark}
    567   \SetWatermarkFontSize{0.5in}
    568   \SetWatermarkColor[gray]{.9}
    569   \SetWatermarkText{\parbox{12em}{\centering
    570       Unpublished working draft.\\
    571       Not for distribution.}}
    572 \else
    573   \if@ACM@sigchiamode
    574     \if@ACM@nonacm\else
    575       \RequirePackage{draftwatermark}
    576       \SetWatermarkFontSize{0.5in}
    577       \SetWatermarkColor[gray]{.9}
    578       \SetWatermarkText{\parbox{12em}{\centering
    579           Legacy document. \\
    580           Not for publication in an ACM venue}}
    581     \fi
    582   \fi
    583 \fi
    584 \RequirePackage{geometry}
    585 \ifcase\ACM@format@nr
    586 \relax % manuscript
    587    \geometry{letterpaper,head=13pt,
    588    marginparwidth=6pc,heightrounded}%
    589 \or % acmsmall
    590    \geometry{twoside=true,
    591      includeheadfoot, head=13pt, foot=2pc,
    592      paperwidth=6.75in, paperheight=10in,
    593      top=58pt, bottom=44pt, inner=46pt, outer=46pt,
    594      marginparwidth=2pc,heightrounded
    595    }%
    596 \or % acmlarge
    597    \geometry{twoside=true, head=13pt, foot=2pc,
    598      paperwidth=8.5in, paperheight=11in,
    599      includeheadfoot,
    600      top=78pt, bottom=114pt, inner=81pt, outer=81pt,
    601      marginparwidth=4pc,heightrounded
    602      }%
    603 \or % acmtog
    604    \geometry{twoside=true, head=13pt, foot=2pc,
    605      paperwidth=8.5in, paperheight=11in,
    606      includeheadfoot, columnsep=24pt,
    607      top=52pt, bottom=75pt, inner=52pt, outer=52pt,
    608      marginparwidth=2pc,heightrounded
    609      }%
    610 \or % sigconf
    611    \geometry{twoside=true, head=13pt,
    612      paperwidth=8.5in, paperheight=11in,
    613      includeheadfoot, columnsep=2pc,
    614      top=57pt, bottom=73pt, inner=54pt, outer=54pt,
    615      marginparwidth=2pc,heightrounded
    616      }%
    617 \or % siggraph
    618    \geometry{twoside=true, head=13pt,
    619      paperwidth=8.5in, paperheight=11in,
    620      includeheadfoot, columnsep=2pc,
    621      top=57pt, bottom=73pt, inner=54pt, outer=54pt,
    622      marginparwidth=2pc,heightrounded
    623      }%
    624 \or % sigplan
    625    \geometry{twoside=true, head=13pt,
    626      paperwidth=8.5in, paperheight=11in,
    627      includeheadfoot=false, columnsep=2pc,
    628      top=1in, bottom=1in, inner=0.75in, outer=0.75in,
    629      marginparwidth=2pc,heightrounded
    630      }%
    631 \or % sigchi
    632    \geometry{twoside=true, head=13pt,
    633      paperwidth=8.5in, paperheight=11in,
    634      includeheadfoot, columnsep=2pc,
    635      top=66pt, bottom=73pt, inner=54pt, outer=54pt,
    636      marginparwidth=2pc,heightrounded
    637      }%
    638 \or % sigchi-a
    639    \geometry{twoside=false, head=13pt,
    640      paperwidth=11in, paperheight=8.5in,
    641      includeheadfoot, marginparsep=72pt,
    642      marginparwidth=170pt, columnsep=20pt,
    643      top=72pt, bottom=72pt, left=314pt, right=72pt
    644      }%
    645      \@mparswitchfalse
    646      \reversemarginpar
    647 \fi
    648 \setlength\parindent{10\p@}
    649 \setlength\parskip{\z@}
    650 \ifcase\ACM@format@nr
    651 \relax % manuscript
    652 \or % acmsmall
    653 \or % acmlarge
    654 \or % acmtog
    655   \setlength\parindent{9\p@}%
    656 \or % sigconf
    657 \or % siggraph
    658 \or % sigplan
    659 \or % sigchi
    660 \or % sigchi-a
    661 \fi
    662 \setlength\normalparindent{\parindent}
    663 \def\copyrightpermissionfootnoterule{\kern-3\p@
    664   \hrule \@width \columnwidth \kern 2.6\p@}
    665 \RequirePackage{manyfoot}
    666 \SelectFootnoteRule[2]{copyrightpermission}
    667 \DeclareNewFootnote{authorsaddresses}
    668 \SelectFootnoteRule[2]{copyrightpermission}
    669 \DeclareNewFootnote{copyrightpermission}
    670 \def\footnoterule{\kern-3\p@
    671   \hrule \@width 4pc \kern 2.6\p@}
    672 \def\endminipage{%
    673     \par
    674     \unskip
    675     \ifvoid\@mpfootins\else
    676       \vskip\skip\@mpfootins
    677       \normalcolor
    678       \unvbox\@mpfootins
    679     \fi
    680     \@minipagefalse
    681   \color@endgroup
    682   \egroup
    683   \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
    684 \def\@textbottom{\vskip \z@ \@plus 1pt}
    685 \let\@texttop\relax
    686 \ifcase\ACM@format@nr
    687 \relax % manuscript
    688 \or % acmsmall
    689 \or % acmlarge
    690 \or % acmtog
    691   \flushbottom
    692 \or % sigconf
    693   \flushbottom
    694 \or % siggraph
    695   \flushbottom
    696 \or % sigplan
    697   \flushbottom
    698 \or % sigchi
    699   \flushbottom
    700 \or % sigchi-a
    701 \fi
    702 \ifPDFTeX
    703 \input{glyphtounicode}
    704 \pdfglyphtounicode{f_f}{FB00}
    705 \pdfglyphtounicode{f_f_i}{FB03}
    706 \pdfglyphtounicode{f_f_l}{FB04}
    707 \pdfglyphtounicode{f_i}{FB01}
    708 \pdfglyphtounicode{t_t}{0074 0074}
    709 \pdfglyphtounicode{f_t}{0066 0074}
    710 \pdfglyphtounicode{T_h}{0054 0068}
    711 \pdfgentounicode=1
    712 \RequirePackage{cmap}
    713 \fi
    714 \newif\if@ACM@newfonts
    715 \@ACM@newfontstrue
    716 \IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
    717     have the libertine package installed.  Please upgrade your
    718     TeX}\@ACM@newfontsfalse}
    719 \IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
    720     have the inconsolata (zi4.sty) package installed.  Please upgrade your
    721     TeX}\@ACM@newfontsfalse}
    722 \IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
    723     have the newtxmath package installed.  Please upgrade your
    724     TeX}\@ACM@newfontsfalse}
    725 \if@ACM@newfonts
    726   \RequirePackage[T1]{fontenc}
    727   % Note that the order in which packages are loaded matters,
    728   % and the correct order depends on the LaTeX engine used.
    729   % See https://github.com/borisveytsman/acmart/issues/402
    730   % and https://github.com/borisveytsman/acmart/issues/410
    731   \ifxetex
    732     \RequirePackage[libertine]{newtxmath}
    733     \RequirePackage[tt=false]{libertine}
    734     \setmonofont[StylisticSet=3]{inconsolata}
    735   \else
    736     \ifluatex
    737       \RequirePackage[libertine]{newtxmath}
    738       \RequirePackage[tt=false]{libertine}
    739       \setmonofont[StylisticSet=3]{inconsolata}
    740     \else
    741        \RequirePackage[tt=false, type1=true]{libertine}
    742        \RequirePackage[varqu]{zi4}
    743        \RequirePackage[libertine]{newtxmath}
    744     \fi
    745   \fi
    746 \fi
    747 \let\liningnums\@undefined
    748 \AtEndPreamble{%
    749   \DeclareTextFontCommand{\liningnums}{\libertineLF}}
    750 \if@ACM@sigchiamode
    751   \renewcommand{\familydefault}{\sfdefault}
    752 \fi
    753 \newif\if@Description@present
    754 \@Description@presenttrue
    755 \newif\if@undescribed@images
    756 \@undescribed@imagesfalse
    757 \newcommand\Description[2][]{\global\@Description@presenttrue\ignorespaces}
    758 \AtEndDocument{\if@undescribed@images
    759   \ClassWarningNoLine{\@classname}{Some images may lack descriptions}\fi}
    760 \AtBeginEnvironment{figure}{\@Description@presentfalse
    761   \let\@vspace\@vspace@orig
    762   \let\@vspacer\@vspacer@orig}
    763 \AtBeginEnvironment{figure*}{\@Description@presentfalse
    764   \let\@vspace\@vspace@orig
    765   \let\@vspacer\@vspacer@orig}
    766 \AtEndEnvironment{figure}{\if@Description@present\else
    767   \global\@undescribed@imagestrue
    768   \ClassWarning{\@classname}{A possible image without description}\fi}
    769 \AtEndEnvironment{figure*}{\if@Description@present\else
    770   \global\@undescribed@imagestrue
    771   \ClassWarning{\@classname}{A possible image without description}\fi}
    772 \AtBeginEnvironment{table}{\let\@vspace\@vspace@orig
    773   \let\@vspacer\@vspacer@orig}
    774 \AtBeginEnvironment{table*}{\let\@vspace\@vspace@orig
    775   \let\@vspacer\@vspacer@orig}
    776 \AtBeginEnvironment{algorithm}{\let\@vspace\@vspace@orig
    777   \let\@vspacer\@vspacer@orig}
    778 \AtBeginEnvironment{algorithm*}{\let\@vspace\@vspace@orig
    779   \let\@vspacer\@vspacer@orig}
    780 \AtBeginEnvironment{lstlisting}{\let\@vspace\@vspace@orig
    781   \let\@vspacer\@vspacer@orig}
    782 \AtBeginEnvironment{lstlisting*}{\let\@vspace\@vspace@orig
    783   \let\@vspacer\@vspacer@orig}
    784 \AtBeginEnvironment{minted}{\let\@vspace\@vspace@orig
    785   \let\@vspacer\@vspacer@orig}
    786 \AtBeginEnvironment{minted*}{\let\@vspace\@vspace@orig
    787   \let\@vspacer\@vspacer@orig}
    788 \AtBeginEnvironment{listing}{\let\@vspace\@vspace@orig
    789   \let\@vspacer\@vspacer@orig}
    790 \AtBeginEnvironment{listing*}{\let\@vspace\@vspace@orig
    791   \let\@vspacer\@vspacer@orig}
    792 
    793 \RequirePackage{caption, float}
    794 \captionsetup[table]{position=top}
    795 \if@ACM@journal
    796   \captionsetup{labelfont={sf, small},
    797     textfont={sf, small}, margin=\z@}
    798   \captionsetup[figure]{name={Fig.}}
    799 \else
    800   \captionsetup{labelfont={bf},
    801     textfont={bf}, labelsep=colon, margin=\z@}
    802   \ifcase\ACM@format@nr
    803   \relax % manuscript
    804   \or % acmsmall
    805   \or % acmlarge
    806   \or % acmtog
    807   \or % sigconf
    808   \or % siggraph
    809     \captionsetup{textfont={it}}
    810   \or % sigplan
    811     \captionsetup{labelfont={bf},
    812       textfont={normalfont}, labelsep=period, margin=\z@}
    813   \or % sigchi
    814     \captionsetup[figure]{labelfont={bf, small},
    815       textfont={bf, small}}
    816     \captionsetup[table]{labelfont={bf, small},
    817       textfont={bf, small}}
    818   \or % sigchi-a
    819     \captionsetup[figure]{labelfont={bf, small},
    820       textfont={bf, small}}
    821     \captionsetup[table]{labelfont={bf, small},
    822       textfont={bf, small}}
    823   \fi
    824 \fi
    825 \newfloat{sidebar}{}{sbar}
    826 \floatname{sidebar}{Sidebar}
    827 \renewenvironment{sidebar}{\Collect@Body\@sidebar}{}
    828 \long\def\@sidebar#1{\bgroup\let\@vspace\@vspace@orig
    829   \let\@vspacer\@vspacer@orig\captionsetup{type=sidebar}%
    830   \marginpar{\small#1}\egroup}
    831 \newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}
    832 \long\def\@marginfigure#1{\bgroup
    833   \let\@vspace\@vspace@orig
    834   \let\@vspacer\@vspacer@orig
    835   \captionsetup{type=figure}%
    836   \marginpar{\@Description@presentfalse\centering
    837     \small#1\if@Description@present\else
    838       \global\@undescribed@imagestrue
    839       \ClassWarning{\@classname}{A possible image without description}
    840       \fi}%
    841   \egroup}
    842 \newenvironment{margintable}{\Collect@Body\@margintable}{}
    843 \long\def\@margintable#1{\bgroup\let\@vspace\@vspace@orig
    844   \let\@vspacer\@vspacer@orig\captionsetup{type=table}%
    845   \marginpar{\centering\small#1}\egroup}
    846 \newdimen\fulltextwidth
    847 \fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)
    848 \if@ACM@sigchiamode
    849 \def\@dblfloat{\bgroup\let\@vspace\@vspace@orig
    850   \let\@vspacer\@vspacer@orig\columnwidth=\fulltextwidth
    851   \let\@endfloatbox\@endwidefloatbox
    852   \def\@fpsadddefault{\def\@fps{tp}}%
    853   \@float}
    854 \fi
    855 \if@ACM@sigchiamode
    856 \def\end@dblfloat{%
    857     \end@float\egroup}
    858 \fi
    859 \def\@endwidefloatbox{%
    860   \par\vskip\z@skip
    861   \@minipagefalse
    862   \outer@nobreak
    863   \egroup
    864   \color@endbox
    865   \global\setbox\@currbox=\vbox{\moveleft
    866     \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
    867   \wd\@currbox=\textwidth
    868 }
    869 \ifcase\ACM@format@nr
    870 \relax % manuscript
    871 \or % acmsmall
    872 \or % acmlarge
    873 \or % acmtog
    874 \or % sigconf
    875 \or % siggraph
    876 \or % sigplan
    877 \def\labelenumi{\theenumi.}
    878 \def\labelenumii{\theenumii.}
    879 \def\labelenumiii{\theenumiii.}
    880 \def\labelenumiv{\theenumiv.}
    881 \or % sigchi
    882 \or % sigchi-a
    883 \fi
    884 \newdimen\@ACM@labelwidth
    885 \AtBeginDocument{%
    886   \setlength\labelsep{4pt}
    887   \setlength{\@ACM@labelwidth}{6.5pt}
    888 
    889   %% First-level list: when beginning after the first line of an
    890   %% indented paragraph or ending before an indented paragraph, labels
    891   %% should not hang to the left of the preceding/following text.
    892   \setlength\leftmargini{\z@}
    893   \addtolength\leftmargini{\parindent}
    894   \addtolength\leftmargini{2\labelsep}
    895   \addtolength\leftmargini{\@ACM@labelwidth}
    896 
    897   %% Second-level and higher lists.
    898   \setlength\leftmarginii{\z@}
    899   \addtolength\leftmarginii{0.5\labelsep}
    900   \addtolength\leftmarginii{\@ACM@labelwidth}
    901   \setlength\leftmarginiii{\leftmarginii}
    902   \setlength\leftmarginiv{\leftmarginiii}
    903   \setlength\leftmarginv{\leftmarginiv}
    904   \setlength\leftmarginvi{\leftmarginv}
    905   \@listi}
    906 \newskip\listisep
    907 \listisep\smallskipamount
    908 \def\@listI{\leftmargin\leftmargini
    909   \labelwidth\leftmargini \advance\labelwidth-\labelsep
    910   \listparindent\z@
    911   \topsep\listisep}
    912 \let\@listi\@listI
    913 \def\@listii{\leftmargin\leftmarginii
    914   \labelwidth\leftmarginii \advance\labelwidth-\labelsep
    915   \topsep\z@skip}
    916 \def\@listiii{\leftmargin\leftmarginiii
    917   \labelwidth\leftmarginiii \advance\labelwidth-\labelsep}
    918 \def\@listiv{\leftmargin\leftmarginiv
    919   \labelwidth\leftmarginiv \advance\labelwidth-\labelsep}
    920 \def\@listv{\leftmargin\leftmarginv
    921   \labelwidth\leftmarginv \advance\labelwidth-\labelsep}
    922 \def\@listvi{\leftmargin\leftmarginvi
    923   \labelwidth\leftmarginvi \advance\labelwidth-\labelsep}
    924 \renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1}
    925 \renewenvironment{description}{\list{}{%
    926     \labelwidth\@ACM@labelwidth
    927     \let\makelabel\descriptionlabel}%
    928 }{
    929   \endlist
    930 }
    931 \let\enddescription=\endlist % for efficiency
    932 \newif\if@ACM@maketitle@typeset
    933 \@ACM@maketitle@typesetfalse
    934 \define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
    935   CIE,%
    936   CSUR,%
    937   DGOV,%
    938   DTRAP,%
    939   HEALTH,%
    940   IMWUT,%
    941   JACM,%
    942   JDIQ,%
    943   JEA,%
    944   JERIC,%
    945   JETC,%
    946   JOCCH,%
    947   PACMCGIT,%
    948   PACMHCI,%
    949   PACMPL,%
    950   POMACS,%
    951   TAAS,%
    952   TACCESS,%
    953   TACO,%
    954   TALG,%
    955   TALLIP,%
    956   TAP,%
    957   TCPS,%
    958   TDS,%
    959   TEAC,%
    960   TECS,%
    961   TELO,%
    962   THRI,%
    963   TIIS,%
    964   TIOT,%
    965   TISSEC,%
    966   TIST,%
    967   TKDD,%
    968   TMIS,%
    969   TOCE,%
    970   TOCHI,%
    971   TOCL,%
    972   TOCS,%
    973   TOCT,%
    974   TODAES,%
    975   TODS,%
    976   TOG,%
    977   TOIS,%
    978   TOIT,%
    979   TOMACS,%
    980   TOMM,%
    981   TOMPECS,%
    982   TOMS,%
    983   TOPC,%
    984   TOPS,%
    985   TOPLAS,%
    986   TOS,%
    987   TOSEM,%
    988   TOSN,%
    989   TQC,%
    990   TRETS,%
    991   TSAS,%
    992   TSC,%
    993   TSLP,%
    994   TWEB,%
    995   FACMP%
    996 }{%
    997 \ifcase\@journalCode@nr
    998 \relax % CIE
    999   \def\@journalName{ACM Computers in Entertainment}%
   1000   \def\@journalNameShort{ACM Comput. Entertain.}%
   1001   \def\@permissionCodeOne{1544-3574}%
   1002 \or % CSUR
   1003   \def\@journalName{ACM Computing Surveys}%
   1004   \def\@journalNameShort{ACM Comput. Surv.}%
   1005   \def\@permissionCodeOne{0360-0300}%
   1006 \or % DGOV
   1007   \def\@journalName{Digital Government: Research and Practice}%
   1008   \def\@journalNameShort{Digit. Gov. Res. Pract.}%
   1009   \def\@permissionCodeOne{2639-0175}%
   1010 \or % DTRAP
   1011   \def\@journalName{Digital Threats: Research and Practice}%
   1012   \def\@journalNameShort{Digit. Threat. Res. Pract.}%
   1013   \def\@permissionCodeOne{2576-5337}%
   1014 \or % HEALTH
   1015   \def\@journalName{ACM Transactions on Computing for Healthcare}%
   1016   \def\@journalNameShort{ACM Trans. Comput. Healthcare}%
   1017   \def\@permissionCodeOne{2637-8051}%
   1018 \or % IMWUT
   1019   \def\@journalName{Proceedings of the ACM on Interactive, Mobile,
   1020     Wearable and Ubiquitous Technologies}%
   1021   \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}%
   1022   \def\@permissionCodeOne{2474-9567}%
   1023   \@ACM@screentrue
   1024   \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
   1025 \or % JACM
   1026   \def\@journalName{Journal of the ACM}%
   1027   \def\@journalNameShort{J. ACM}%
   1028   \def\@permissionCodeOne{0004-5411}%
   1029 \or % JDIQ
   1030   \def\@journalName{ACM Journal of Data and Information Quality}%
   1031   \def\@journalNameShort{ACM J. Data Inform. Quality}%
   1032   \def\@permissionCodeOne{1936-1955}%
   1033 \or % JEA
   1034   \def\@journalName{ACM Journal of Experimental Algorithmics}%
   1035   \def\@journalNameShort{ACM J. Exp. Algor.}%
   1036   \def\@permissionCodeOne{1084-6654}%
   1037 \or % JERIC
   1038   \def\@journalName{ACM Journal of Educational Resources in Computing}%
   1039   \def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
   1040   \def\@permissionCodeOne{1073-0516}%
   1041 \or % JETC
   1042   \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
   1043   \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
   1044   \def\@permissionCodeOne{1550-4832}%
   1045 \or % JOCCH
   1046   \def\@journalName{ACM Journal on Computing and Cultural Heritage}%
   1047   \def\@journalNameShort{ACM J. Comput. Cult. Herit.}%
   1048 \or % PACMCGIT
   1049   \def\@journalName{Proceedings of the ACM on Computer Graphics and Interactive Techniques}%
   1050   \def\@journalNameShort{Proc. ACM Comput. Graph. Interact. Tech.}%
   1051   \def\@permissionCodeOne{2577-6193}%
   1052   \@ACM@screentrue
   1053   \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
   1054 \or % PACMHCI
   1055   \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}%
   1056   \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}%
   1057   \def\@permissionCodeOne{2573-0142}%
   1058   \@ACM@screentrue
   1059   \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
   1060 \or % PACMPL
   1061   \def\@journalName{Proceedings of the ACM on Programming Languages}%
   1062   \def\@journalNameShort{Proc. ACM Program. Lang.}%
   1063   \def\@permissionCodeOne{2475-1421}%
   1064   \@ACM@screentrue
   1065   \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
   1066 \or % POMACS
   1067   \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
   1068   \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}%
   1069   \def\@permissionCodeOne{2476-1249}%
   1070   \@ACM@screentrue
   1071   \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
   1072 \or % TAAS
   1073   \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
   1074   \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
   1075   \def\@permissionCodeOne{1556-4665}%
   1076 \or % TACCESS
   1077   \def\@journalName{ACM Transactions on Accessible Computing}%
   1078   \def\@journalNameShort{ACM Trans. Access. Comput.}%
   1079   \def\@permissionCodeOne{1936-7228}%
   1080 \or % TACO
   1081   \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
   1082   \def\@journalNameShort{ACM Trans. Arch. Code Optim.}%
   1083 \or % TALG
   1084   \def\@journalName{ACM Transactions on Algorithms}%
   1085   \def\@journalNameShort{ACM Trans. Algor.}%
   1086   \def\@permissionCodeOne{1549-6325}%
   1087 \or % TALLIP
   1088   \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
   1089   \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
   1090   \def\@permissionCodeOne{2375-4699}%
   1091 \or % TAP
   1092   \def\@journalName{ACM Transactions on Applied Perception}%
   1093 \or % TCPS
   1094   \def\@journalName{ACM Transactions on Cyber-Physical Systems}%
   1095 \or % TDS
   1096   \def\@journalName{ACM/IMS Transactions on Data Science}%
   1097   \def\@journalNameShort{ACM/IMS Trans. Data Sci.}%
   1098   \def\@permissionCodeOne{2577-3224}%
   1099 \or % TEAC
   1100   \def\@journalName{ACM Transactions on Economics and Computation}%
   1101 \or % TECS
   1102   \def\@journalName{ACM Transactions on Embedded Computing Systems}%
   1103   \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
   1104   \def\@permissionCodeOne{1539-9087}%
   1105 \or % TELO
   1106   \def\@journalName{ACM Transactions on Evolutionary Learning}%
   1107   \def\@journalNameShort{ACM Trans. Evol. Learn.}%
   1108   \def\@permissionCodeOne{2688-3007}%
   1109 \or % THRI
   1110   \def\@journalName{ACM Transactions on Human-Robot Interaction}%
   1111   \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}%
   1112   \def\@permissionCodeOne{2573-9522}%
   1113 \or % TIIS
   1114   \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
   1115   \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
   1116   \def\@permissionCodeOne{2160-6455}%
   1117 \or % TIOT
   1118   \def\@journalName{ACM Transactions on Internet of Things}%
   1119   \def\@journalNameShort{ACM Trans. Internet Things}%
   1120   \def\@permissionCodeOne{2577-6207}%
   1121 \or % TISSEC
   1122   \def\@journalName{ACM Transactions on Information and System Security}%
   1123   \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
   1124   \def\@permissionCodeOne{1094-9224}%
   1125 \or % TIST
   1126   \def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
   1127   \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
   1128   \def\@permissionCodeOne{2157-6904}%
   1129 \or % TKDD
   1130   \def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
   1131   \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
   1132   \def\@permissionCodeOne{1556-4681}%
   1133 \or % TMIS
   1134   \def\@journalName{ACM Transactions on Management Information Systems}%
   1135   \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
   1136   \def\@permissionCodeOne{2158-656X}%
   1137 \or % TOCE
   1138   \def\@journalName{ACM Transactions on Computing Education}%
   1139   \def\@journalNameShort{ACM Trans. Comput. Educ.}%
   1140   \def\@permissionCodeOne{1946-6226}%
   1141 \or % TOCHI
   1142   \def\@journalName{ACM Transactions on Computer-Human Interaction}%
   1143   \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
   1144   \def\@permissionCodeOne{1073-0516}%
   1145 \or % TOCL
   1146   \def\@journalName{ACM Transactions on Computational Logic}%
   1147   \def\@journalNameShort{ACM Trans. Comput. Logic}%
   1148   \def\@permissionCodeOne{1529-3785}%
   1149 \or % TOCS
   1150   \def\@journalName{ACM Transactions on Computer Systems}%
   1151   \def\@journalNameShort{ACM Trans. Comput. Syst.}%
   1152   \def\@permissionCodeOne{0734-2071}%
   1153 \or % TOCT
   1154   \def\@journalName{ACM Transactions on Computation Theory}%
   1155   \def\@journalNameShort{ACM Trans. Comput. Theory}%
   1156   \def\@permissionCodeOne{1942-3454}%
   1157 \or % TODAES
   1158   \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
   1159   \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
   1160   \def\@permissionCodeOne{1084-4309}%
   1161 \or % TODS
   1162   \def\@journalName{ACM Transactions on Database Systems}%
   1163   \def\@journalNameShort{ACM Trans. Datab. Syst.}%
   1164   \def\@permissionCodeOne{0362-5915}%
   1165 \or % TOG
   1166   \def\@journalName{ACM Transactions on Graphics}%
   1167   \def\@journalNameShort{ACM Trans. Graph.}%
   1168   \def\@permissionCodeOne{0730-0301}
   1169 \or % TOIS
   1170   \def\@journalName{ACM Transactions on Information Systems}%
   1171   \def\@permissionCodeOne{1046-8188}%
   1172 \or % TOIT
   1173   \def\@journalName{ACM Transactions on Internet Technology}%
   1174   \def\@journalNameShort{ACM Trans. Internet Technol.}%
   1175   \def\@permissionCodeOne{1533-5399}%
   1176 \or % TOMACS
   1177   \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
   1178   \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
   1179 \or % TOMM
   1180   \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
   1181   \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
   1182   \def\@permissionCodeOne{1551-6857}%
   1183   \def\@permissionCodeTwo{0100}%
   1184 \or % TOMPECS
   1185   \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
   1186   \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
   1187   \def\@permissionCodeOne{2376-3639}%
   1188 \or % TOMS
   1189   \def\@journalName{ACM Transactions on Mathematical Software}%
   1190   \def\@journalNameShort{ACM Trans. Math. Softw.}%
   1191   \def\@permissionCodeOne{0098-3500}%
   1192 \or % TOPC
   1193   \def\@journalName{ACM Transactions on Parallel Computing}%
   1194   \def\@journalNameShort{ACM Trans. Parallel Comput.}%
   1195   \def\@permissionCodeOne{1539-9087}%
   1196 \or % TOPS
   1197   \def\@journalName{ACM Transactions on Privacy and Security}%
   1198   \def\@journalNameShort{ACM Trans. Priv. Sec.}%
   1199   \def\@permissionCodeOne{2471-2566}%
   1200 \or % TOPLAS
   1201   \def\@journalName{ACM Transactions on Programming Languages and Systems}%
   1202   \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
   1203   \def\@permissionCodeOne{0164-0925}%
   1204 \or % TOS
   1205   \def\@journalName{ACM Transactions on Storage}%
   1206   \def\@journalNameShort{ACM Trans. Storage}%
   1207   \def\@permissionCodeOne{1553-3077}%
   1208 \or % TOSEM
   1209   \def\@journalName{ACM Transactions on Software Engineering and Methodology}%
   1210   \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
   1211   \def\@permissionCodeOne{1049-331X}%
   1212 \or % TOSN
   1213   \def\@journalName{ACM Transactions on Sensor Networks}%
   1214   \def\@journalNameShort{ACM Trans. Sensor Netw.}%
   1215   \def\@permissionCodeOne{1550-4859}%
   1216 \or % TQC
   1217   \def\@journalName{ACM Transactions on Quantum Computing}%
   1218   \def\@journalNameShort{ACM Trans. Quantum Comput.}%
   1219   \def\@permissionCodeOne{2643-6817}%
   1220 \or % TRETS
   1221   \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
   1222   \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
   1223   \def\@permissionCodeOne{1936-7406}%
   1224 \or % TSAS
   1225   \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
   1226   \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
   1227   \def\@permissionCodeOne{2374-0353}%
   1228 \or % TSC
   1229   \def\@journalName{ACM Transactions on Social Computing}%
   1230   \def\@journalNameShort{ACM Trans. Soc. Comput.}%
   1231   \def\@permissionCodeOne{2469-7818}%
   1232 \or % TSLP
   1233   \def\@journalName{ACM Transactions on Speech and Language Processing}%
   1234   \def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
   1235   \def\@permissionCodeOne{1550-4875}%
   1236 \or % TWEB
   1237   \def\@journalName{ACM Transactions on the Web}%
   1238   \def\@journalNameShort{ACM Trans. Web}%
   1239   \def\@permissionCodeOne{1559-1131}%
   1240 \else % FACMP, a dummy journal
   1241   \def\@journalName{Forthcoming ACM Publication}%
   1242   \def\@journalNameShort{ACM Forthcoming}%
   1243   \def\@permissionCodeOne{XXXX-XXXX}%
   1244 \fi
   1245 \ClassInfo{\@classname}{Using journal code \@journalCode}%
   1246 }{%
   1247   \ClassError{\@classname}{Incorrect journal #1}%
   1248 }%
   1249 \def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}%
   1250   \global\@ACM@journal@bibstriptrue}
   1251 \def\@journalCode@nr{0}
   1252 \def\@journalName{}%
   1253 \def\@journalNameShort{\@journalName}%
   1254 \def\@permissionCodeOne{XXXX-XXXX}%
   1255 \def\@permissionCodeTwo{}%
   1256 \newcommand\acmConference[4][]{%
   1257   \gdef\acmConference@shortname{#1}%
   1258   \gdef\acmConference@name{#2}%
   1259   \gdef\acmConference@date{#3}%
   1260   \gdef\acmConference@venue{#4}%
   1261   \ifx\acmConference@shortname\@empty
   1262     \gdef\acmConference@shortname{#2}%
   1263   \fi
   1264   \global\@ACM@journal@bibstripfalse
   1265 }
   1266 \if@ACM@journal\else
   1267 \acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
   1268   DC, USA}%
   1269 \fi
   1270 \def\acmBooktitle#1{\gdef\@acmBooktitle{#1}}
   1271 \acmBooktitle{BLUB of \acmConference@name
   1272        \ifx\acmConference@name\acmConference@shortname\else
   1273          \ (\acmConference@shortname)\fi}
   1274 \def\@editorsAbbrev{(Ed.)}
   1275 \def\@acmEditors{}
   1276 \def\editor#1{\ifx\@acmEditors\@empty
   1277     \gdef\@acmEditors{#1}%
   1278   \else
   1279     \gdef\@editorsAbbrev{(Eds.)}%
   1280     \g@addto@macro\@acmEditors{\and#1}%
   1281 \fi}
   1282 \def\subtitle#1{\def\@subtitle{#1}}
   1283 \subtitle{}
   1284 \newcount\num@authorgroups
   1285 \num@authorgroups=0\relax
   1286 \newcount\num@authors
   1287 \num@authors=0\relax
   1288 \newif\if@insideauthorgroup
   1289 \@insideauthorgroupfalse
   1290 \renewcommand\author[2][]{%
   1291   \IfSubStr{\detokenize{#2}}{,}{\ClassWarning{\@classname}{Do not put several
   1292       authors in the same \string\author\space macro!}}{}%
   1293   \global\advance\num@authors by 1\relax
   1294   \if@insideauthorgroup\else
   1295     \global\advance\num@authorgroups by 1\relax
   1296     \global\@insideauthorgrouptrue
   1297   \fi
   1298   \ifx\addresses\@empty
   1299     \if@ACM@anonymous
   1300       \gdef\addresses{\@author{Anonymous Author(s)%
   1301         \ifx\@acmSubmissionID\@empty\else\\Submission Id:
   1302           \@acmSubmissionID\fi}}%
   1303       \gdef\authors{Anonymous Author(s)}%
   1304     \else
   1305       \gdef\addresses{\@author{#2}}%
   1306       \gdef\authors{#2}%
   1307     \fi
   1308   \else
   1309     \if@ACM@anonymous\else
   1310       \g@addto@macro\addresses{\and\@author{#2}}%
   1311       \g@addto@macro\authors{\and#2}%
   1312     \fi
   1313   \fi
   1314   \if@ACM@anonymous
   1315     \ifx\shortauthors\@empty
   1316       \gdef\shortauthors{Anon.
   1317         \ifx\@acmSubmissionID\@empty\else Submission Id:
   1318         \@acmSubmissionID\fi}%
   1319     \fi
   1320   \else
   1321     \def\@tempa{#1}%
   1322     \ifx\@tempa\@empty
   1323       \ifx\shortauthors\@empty
   1324         \gdef\shortauthors{#2}%
   1325       \else
   1326         \g@addto@macro\shortauthors{\and#2}%
   1327       \fi
   1328     \else
   1329       \ifx\shortauthors\@empty
   1330         \gdef\shortauthors{#1}%
   1331       \else
   1332         \g@addto@macro\shortauthors{\and#1}%
   1333       \fi
   1334     \fi
   1335   \fi}
   1336 \newcommand{\affiliation}[2][]{%
   1337   \global\@insideauthorgroupfalse
   1338   \if@ACM@anonymous\else
   1339     \g@addto@macro\addresses{\affiliation{#1}{#2}}%
   1340   \fi}
   1341 \define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}%
   1342 [true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}}
   1343 \def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}}
   1344 \def\@additionalaffiliation#1{\bgroup
   1345   \def\position##1{\ignorespaces}%
   1346   \def\institution##1{##1\ignorespaces}%
   1347   \def\department{\@ifnextchar[{\@department}{\@department[]}}%
   1348   \def\@department[##1]##2{\unskip, ##2\ignorespaces}%
   1349   \let\streetaddress\position
   1350   \let\city\position
   1351   \let\state\position
   1352   \let\postcode\position
   1353   \let\country\position
   1354   Also with #1\unskip.\egroup}
   1355 \renewcommand{\email}[2][]{%
   1356   \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several
   1357       addresses in the same \string\email\space macro!}}{}%
   1358   \if@ACM@anonymous\else
   1359     \g@addto@macro\addresses{\email{#1}{#2}}%
   1360   \fi}
   1361 \def\orcid#1{\unskip\ignorespaces}
   1362 \def\authorsaddresses#1{\def\@authorsaddresses{#1}}
   1363 \authorsaddresses{\@mkauthorsaddresses}
   1364 \def\@titlenotes{}
   1365 \def\titlenote#1{%
   1366   \g@addto@macro\@title{\footnotemark}%
   1367   \if@ACM@anonymous
   1368     \g@addto@macro\@titlenotes{%
   1369       \stepcounter{footnote}\footnotetext{Title note}}%
   1370   \else
   1371     \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
   1372   \fi}
   1373 \def\@subtitlenotes{}
   1374 \def\subtitlenote#1{%
   1375   \g@addto@macro\@subtitle{\footnotemark}%
   1376   \if@ACM@anonymous
   1377     \g@addto@macro\@subtitlenotes{%
   1378       \stepcounter{footnote}\footnotetext{Subtitle note}}%
   1379   \else
   1380     \g@addto@macro\@subtitlenotes{%
   1381       \stepcounter{footnote}\footnotetext{#1}}%
   1382   \fi}
   1383 \def\@authornotes{}
   1384 \def\authornote#1{%
   1385   \if@ACM@anonymous\else
   1386     \g@addto@macro\addresses{\@authornotemark}%
   1387     \g@addto@macro\@authornotes{%
   1388       \stepcounter{footnote}\footnotetext{#1}}%
   1389   \fi}
   1390 \newcommand\authornotemark[1][\relax]{%
   1391   \ifx#1\relax\relax\relax
   1392   \g@addto@macro\addresses{\@authornotemark}%
   1393   \else
   1394   \g@addto@macro\addresses{\@@authornotemark{#1}}%
   1395   \fi}
   1396 \def\acmVolume#1{\def\@acmVolume{#1}}
   1397 \acmVolume{1}
   1398 \def\acmNumber#1{\def\@acmNumber{#1}}
   1399 \acmNumber{1}
   1400 \def\acmArticle#1{\def\@acmArticle{#1}}
   1401 \acmArticle{}
   1402 \def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
   1403 \acmArticleSeq{\@acmArticle}
   1404 \def\acmYear#1{\def\@acmYear{#1}}
   1405 \acmYear{\the\year}
   1406 \def\acmMonth#1{\def\@acmMonth{#1}}
   1407 \acmMonth{\the\month}
   1408 \def\@acmPubDate{\ifcase\@acmMonth\or
   1409   January\or February\or March\or April\or May\or June\or
   1410   July\or August\or September\or October\or November\or
   1411   December\fi~\@acmYear}
   1412 \def\acmPrice#1{\def\@acmPrice{#1}}
   1413 \acmPrice{15.00}
   1414 \def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
   1415 \acmSubmissionID{}
   1416 \def\acmISBN#1{\def\@acmISBN{#1}}
   1417 \acmISBN{978-x-xxxx-xxxx-x/YY/MM}
   1418 \def\acmDOI#1{\def\@acmDOI{#1}}
   1419 \acmDOI{10.1145/nnnnnnn.nnnnnnn}
   1420 \newif\if@ACM@badge
   1421 \@ACM@badgefalse
   1422 \newlength\@ACM@badge@width
   1423 \setlength\@ACM@badge@width{5pc}
   1424 \newlength\@ACM@title@width
   1425 \newlength\@ACM@badge@skip
   1426 \setlength\@ACM@badge@skip{1pc}
   1427 \newcommand\acmBadgeR[2][]{\@ACM@badgetrue
   1428   \def\@acmBadgeR@url{#1}%
   1429   \def\@acmBadgeR@image{#2}}
   1430 \def\@acmBadgeR@url{}
   1431 \def\@acmBadgeR@image{}
   1432 \newcommand\acmBadgeL[2][]{\@ACM@badgetrue
   1433   \def\@acmBadgeL@url{#1}%
   1434   \def\@acmBadgeL@image{#2}}
   1435 \def\@acmBadgeL@url{}
   1436 \def\@acmBadgeL@image{}
   1437 \def\startPage#1{\def\@startPage{#1}}
   1438 \startPage{}
   1439 \def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is
   1440     obsolete.  I am going to ignore it}}
   1441 \def\keywords#1{\def\@keywords{#1}}
   1442 \let\@keywords\@empty
   1443 \AtEndDocument{\if@ACM@nonacm\else\ifx\@keywords\@empty
   1444   \ifnum\getrefnumber{TotPages}>2\relax
   1445   \ClassWarningNoLine{\@classname}{ACM keywords are mandatory
   1446     for papers over two pages}%
   1447   \fi\fi\fi}
   1448 \renewenvironment{abstract}{\Collect@Body\@saveabstract}{}
   1449 \long\def\@saveabstract#1{\if@ACM@maketitle@typeset
   1450   \ClassError{\@classname}{Abstract must be defined before maketitle
   1451     command. Please move it!}\fi
   1452   \long\gdef\@abstract{#1}}
   1453 \@saveabstract{}
   1454 \long\def\@lempty{}
   1455 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{%
   1456   \if@ACM@printccs
   1457     \ClassInfo{\@classname}{Printing CCS}%
   1458   \else
   1459     \ClassInfo{\@classname}{Suppressing CCS}%
   1460   \fi}{\ClassError{\@classname}{The option printccs can be either true or false}}
   1461 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
   1462   \if@ACM@printacmref
   1463     \ClassInfo{\@classname}{Printing bibformat}%
   1464   \else
   1465     \ClassInfo{\@classname}{Suppressing bibformat}%
   1466   \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}}
   1467 \AtEndDocument{\if@ACM@nonacm\else\if@ACM@printacmref\else
   1468   \ifnum\getrefnumber{TotPages}>1\relax
   1469   \ClassWarningNoLine{\@classname}{ACM reference format is mandatory
   1470     for papers over one page}%
   1471   \fi\fi\fi}
   1472 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
   1473   \if@ACM@printfolios
   1474     \ClassInfo{\@classname}{Printing folios}%
   1475   \else
   1476     \ClassInfo{\@classname}{Suppressing folios}%
   1477   \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}}
   1478 \define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{%
   1479   \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to
   1480       #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be
   1481       numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}}
   1482 \def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
   1483 \settopmatter{printccs=true, printacmref=true}
   1484 \if@ACM@manuscript
   1485   \settopmatter{printfolios=true}
   1486 \else
   1487   \if@ACM@journal
   1488     \settopmatter{printfolios=true}
   1489   \else
   1490     \settopmatter{printfolios=false}
   1491   \fi
   1492 \fi
   1493 \settopmatter{authorsperrow=0}
   1494 \def\@received{}
   1495 \newcommand\received[2][]{\def\@tempa{#1}%
   1496   \ifx\@tempa\@empty
   1497     \ifx\@received\@empty
   1498       \gdef\@received{Received #2}%
   1499     \else
   1500       \g@addto@macro{\@received}{; revised #2}%
   1501     \fi
   1502   \else
   1503     \ifx\@received\@empty
   1504       \gdef\@received{#1 #2}%
   1505     \else
   1506       \g@addto@macro{\@received}{; #1 #2}%
   1507     \fi
   1508   \fi}
   1509 \AtEndDocument{%
   1510   \ifx\@received\@empty\else
   1511     \par\bigskip\noindent\small\normalfont\@received\par
   1512   \fi}
   1513 \RequirePackage{comment}
   1514 \excludecomment{CCSXML}
   1515 \let\@concepts\@empty
   1516 \newcounter{@concepts}
   1517 \newcommand\ccsdesc[2][100]{%
   1518   \ccsdesc@parse#1~#2~~\ccsdesc@parse@end}
   1519 \def\textrightarrow{$\rightarrow$}
   1520 \def\ccsdesc@parse#1~#2~#3~{%
   1521   \stepcounter{@concepts}%
   1522   \expandafter\ifx\csname CCS@General@#2\endcsname\relax
   1523     \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\
   1524       \textbf{#2}}%
   1525     \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }%
   1526     \expandafter\gdef\csname CCS@Specific@#2\endcsname{}%
   1527   \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname
   1528     \csname CCS@Punctuation@#2\endcsname
   1529     \csname CCS@Specific@#2\endcsname}%
   1530   \fi
   1531   \ifx#3\relax\relax\else
   1532     \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{
   1533       \textrightarrow\ }%
   1534     \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{%
   1535      \addtocounter{@concepts}{-1}%
   1536      \ifnum#1>499\textbf{#3}\else
   1537      \ifnum#1>299\textit{#3}\else
   1538      #3\fi\fi\ifnum\value{@concepts}=0.\else; \fi}%
   1539   \fi
   1540 \ccsdesc@parse@finish}
   1541 \AtEndDocument{\if@ACM@nonacm\else\ifx\@concepts\@empty\relax
   1542   \ifnum\getrefnumber{TotPages}>2\relax
   1543   \ClassWarningNoLine{\@classname}{CCS concepts are mandatory
   1544     for papers over two pages}%
   1545   \fi\fi\fi}
   1546 \def\ccsdesc@parse@finish#1\ccsdesc@parse@end{}
   1547 \newif\if@printcopyright
   1548 \@printcopyrighttrue
   1549 \newif\if@printpermission
   1550 \@printpermissiontrue
   1551 \newif\if@acmowned
   1552 \@acmownedtrue
   1553 \define@choicekey*{ACM@}{acmcopyrightmode}[%
   1554   \acm@copyrightinput\acm@copyrightmode]{none,%
   1555     acmcopyright,acmlicensed,rightsretained,%
   1556     usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,%
   1557     licensedcagov,licensedcagovmixed,othergov,licensedothergov,%
   1558     iw3c2w3,iw3c2w3g}{%
   1559   \@printpermissiontrue
   1560   \@printcopyrighttrue
   1561   \@acmownedtrue
   1562   \ifnum\acm@copyrightmode=0\relax % none
   1563    \@printpermissionfalse
   1564    \@printcopyrightfalse
   1565    \@acmownedfalse
   1566   \fi
   1567   \ifnum\acm@copyrightmode=2\relax % acmlicensed
   1568    \@acmownedfalse
   1569   \fi
   1570   \ifnum\acm@copyrightmode=3\relax % rightsretained
   1571    \@acmownedfalse
   1572    \AtBeginDocument{\acmPrice{}}%
   1573   \fi
   1574   \ifnum\acm@copyrightmode=4\relax % usgov
   1575    \@printpermissiontrue
   1576    \@printcopyrightfalse
   1577    \@acmownedfalse
   1578    \AtBeginDocument{\acmPrice{}}%
   1579   \fi
   1580   \ifnum\acm@copyrightmode=6\relax % cagov
   1581    \@acmownedfalse
   1582   \fi
   1583   \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
   1584    \@acmownedfalse
   1585   \fi
   1586   \ifnum\acm@copyrightmode=9\relax % licensedcagov
   1587    \@acmownedfalse
   1588   \fi
   1589   \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed
   1590    \@acmownedfalse
   1591   \fi
   1592   \ifnum\acm@copyrightmode=11\relax % othergov
   1593    \@acmownedtrue
   1594   \fi
   1595   \ifnum\acm@copyrightmode=12\relax % licensedothergov
   1596    \@acmownedfalse
   1597   \fi
   1598   \ifnum\acm@copyrightmode=13\relax % iw3c2w3
   1599    \@acmownedfalse
   1600    \AtBeginDocument{\acmPrice{}}%
   1601   \fi
   1602   \ifnum\acm@copyrightmode=14\relax % iw3c2w3g
   1603    \@acmownedfalse
   1604    \AtBeginDocument{\acmPrice{}}%
   1605   \fi}
   1606 \def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
   1607 \setcopyright{acmcopyright}
   1608 \def\@copyrightowner{%
   1609   \ifcase\acm@copyrightmode\relax % none
   1610   \or % acmcopyright
   1611   Association for Computing Machinery.
   1612   \or % acmlicensed
   1613   Copyright held by the owner/author(s). Publication rights licensed to
   1614   ACM\@.
   1615   \or % rightsretained
   1616   Copyright held by the owner/author(s).
   1617   \or % usgov
   1618   \or % usgovmixed
   1619   Association for Computing Machinery.
   1620   \or % cagov
   1621   Crown in Right of Canada.
   1622   \or %cagovmixed
   1623   Association for Computing Machinery.
   1624   \or %licensedusgovmixed
   1625   Copyright held by the owner/author(s). Publication rights licensed to
   1626   ACM\@.
   1627   \or % licensedcagov
   1628   Crown in Right of Canada. Publication rights licensed to
   1629   ACM\@.
   1630   \or %licensedcagovmixed
   1631   Copyright held by the owner/author(s). Publication rights licensed to
   1632   ACM\@.
   1633   \or % othergov
   1634   Association for Computing Machinery.
   1635   \or % licensedothergov
   1636   Copyright held by the owner/author(s). Publication rights licensed to
   1637   ACM\@.
   1638   \or % ic2w3www
   1639   IW3C2 (International World Wide Web Conference Committee), published
   1640   under Creative Commons CC-BY~4.0 License.
   1641   \or % ic2w3wwwgoogle
   1642   IW3C2 (International World Wide Web Conference Committee), published
   1643   under Creative Commons CC-BY-NC-ND~4.0 License.
   1644   \fi}
   1645 \def\@formatdoi#1{\url{https://doi.org/#1}}
   1646 \def\@copyrightpermission{%
   1647   \ifcase\acm@copyrightmode\relax % none
   1648   \or % acmcopyright
   1649    Permission to make digital or hard copies of all or part of this
   1650    work for personal or classroom use is granted without fee provided
   1651    that copies are not made or distributed for profit or commercial
   1652    advantage and that copies bear this notice and the full citation on
   1653    the first page. Copyrights for components of this work owned by
   1654    others than ACM must be honored. Abstracting with credit is
   1655    permitted. To copy otherwise, or republish, to post on servers or to
   1656    redistribute to lists, requires prior specific permission
   1657    and\hspace*{.5pt}/or  a fee. Request permissions from
   1658    permissions@acm.org.
   1659   \or % acmlicensed
   1660    Permission to make digital or hard copies of all or part of this
   1661    work for personal or classroom use is granted without fee provided
   1662    that copies are not made or distributed for profit or commercial
   1663    advantage and that copies bear this notice and the full citation on
   1664    the first page. Copyrights for components of this work owned by
   1665    others than the author(s) must be honored. Abstracting with credit
   1666    is permitted.  To copy otherwise, or republish, to post on servers
   1667    or to  redistribute to lists, requires prior specific permission
   1668    and\hspace*{.5pt}/or  a fee. Request permissions from
   1669    permissions@acm.org.
   1670   \or % rightsretained
   1671    Permission to make digital or hard copies of part or all of this work
   1672    for personal or classroom use is granted without fee provided that
   1673    copies are not made or distributed for profit or commercial advantage
   1674    and that copies bear this notice and the full citation on the first
   1675    page. Copyrights for third-party components of this work must be
   1676    honored. For all other uses, contact the
   1677    owner\hspace*{.5pt}/author(s).
   1678   \or % usgov
   1679    This paper is authored by an employee(s) of the United States
   1680    Government and is in the public domain. Non-exclusive copying or
   1681    redistribution is allowed, provided that the article citation is
   1682    given and the authors and agency are clearly identified as its
   1683    source.
   1684   \or % usgovmixed
   1685    ACM acknowledges that this contribution was authored or co-authored
   1686    by an employee, contractor, or affiliate of the United States
   1687    government. As such, the United States government retains a
   1688    nonexclusive, royalty-free right to publish or reproduce this
   1689    article, or to allow others to do so, for government purposes only.
   1690   \or % cagov
   1691    This article was authored by employees of the Government of Canada.
   1692    As such, the Canadian government retains all interest in the
   1693    copyright to this work and grants to ACM a nonexclusive,
   1694    royalty-free right to publish or reproduce this article, or to allow
   1695    others to do so, provided that clear attribution is given both to
   1696    the authors and the Canadian government agency employing them.
   1697    Permission to make digital or hard copies for personal or classroom
   1698    use is granted. Copies must bear this notice and the full citation
   1699    on the first page.  Copyrights for components of this work owned by
   1700    others than the Canadian Government must be honored. To copy
   1701    otherwise, distribute, republish, or post, requires prior specific
   1702    permission and\hspace*{.5pt}/or a fee. Request permissions from
   1703    permissions@acm.org.
   1704   \or % cagovmixed
   1705    ACM acknowledges that this contribution was co-authored by an
   1706    affiliate of the national government of Canada. As such, the Crown
   1707    in Right of Canada retains an equal interest in the copyright.
   1708    Reprints must include clear attribution to ACM and the author's
   1709    government agency affiliation.  Permission to make digital or hard
   1710    copies for personal or classroom use is granted.  Copies must bear
   1711    this notice and the full citation on the first page. Copyrights for
   1712    components of this work owned by others than ACM must be honored.
   1713    To copy otherwise, distribute, republish, or post, requires prior
   1714    specific permission and\hspace*{.5pt}/or a fee. Request permissions
   1715    from permissions@acm.org.
   1716   \or % licensedusgovmixed
   1717    Publication rights licensed to ACM\@. ACM acknowledges that this
   1718    contribution was authored or co-authored by an employee, contractor
   1719    or affiliate of the United States government. As such, the
   1720    Government retains a nonexclusive, royalty-free right to publish or
   1721    reproduce this article, or to allow others to do so, for Government
   1722    purposes only.
   1723   \or % licensedcagov
   1724    This article was authored by employees of the Government of Canada.
   1725    As such, the Canadian government retains all interest in the
   1726    copyright to this work and grants to ACM a nonexclusive,
   1727    royalty-free right to publish or reproduce this article, or to allow
   1728    others to do so, provided that clear attribution is given both to
   1729    the authors and the Canadian government agency employing them.
   1730    Permission to make digital or hard copies for personal or classroom
   1731    use is granted. Copies must bear this notice and the full citation
   1732    on the first page.  Copyrights for components of this work owned by
   1733    others than the Canadian Government must be honored. To copy
   1734    otherwise, distribute, republish, or post, requires prior specific
   1735    permission and\hspace*{.5pt}/or a fee. Request permissions from
   1736    permissions@acm.org.
   1737   \or % licensedcagovmixed
   1738    Publication rights licensed to ACM\@. ACM acknowledges that this
   1739    contribution was authored or co-authored by an employee, contractor
   1740    or affiliate of the national government of Canada. As such, the
   1741    Government retains a nonexclusive, royalty-free right to publish or
   1742    reproduce this article, or to allow others to do so, for Government
   1743    purposes only.
   1744   \or % othergov
   1745    ACM acknowledges that this contribution was authored or co-authored
   1746    by an employee, contractor or affiliate of a national government. As
   1747    such, the Government retains a nonexclusive, royalty-free right to
   1748    publish or reproduce this article, or to allow others to do so, for
   1749    Government purposes only.
   1750   \or % licensedothergov
   1751    Publication rights licensed to ACM\@. ACM acknowledges that this
   1752    contribution was authored or co-authored by an employee, contractor
   1753    or affiliate of a national government. As such, the Government
   1754    retains a nonexclusive, royalty-free right to publish or reproduce
   1755    this article, or to allow others to do so, for Government purposes
   1756    only.
   1757  \or % iw3c2w3
   1758    This paper is published under the Creative Commons Attribution~4.0
   1759    International (CC-BY~4.0) license. Authors reserve their rights to
   1760    disseminate the work on their personal and corporate Web sites with
   1761    the appropriate attribution.
   1762  \or % iw3c2w3g
   1763    This paper is published under the Creative Commons
   1764    Attribution-NonCommercial-NoDerivs~4.0 International
   1765    (CC-BY-NC-ND~4.0) license. Authors reserve their rights to
   1766    disseminate the work on their personal and corporate Web sites with
   1767    the appropriate attribution.
   1768  \fi}
   1769 \def\copyrightyear#1{\def\@copyrightyear{#1}}
   1770 \copyrightyear{\@acmYear}
   1771 \def\@teaserfigures{}
   1772 \newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}
   1773 \long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}
   1774 \renewcommand{\thanks}[1]{%
   1775   \@ifnotempty{#1}{%
   1776     \if@ACM@anonymous
   1777       \g@addto@macro\thankses{\thanks{A note}}%
   1778    \else
   1779     \g@addto@macro\thankses{\thanks{#1}}%
   1780    \fi}}
   1781 \ifx\@beginmaketitlehook\@undefined
   1782   \let\@beginmaketitlehook\@empty
   1783 \fi
   1784 \def\AtBeginMaketitle{\g@addto@macro\@beginmaketitlehook}
   1785 \newbox\mktitle@bx
   1786 \def\maketitle{\@beginmaketitlehook
   1787   \@ACM@maketitle@typesettrue
   1788   \if@ACM@anonymous
   1789     % Anonymize omission of \author-s
   1790     \ifnum\num@authorgroups=0\author{}\fi
   1791   \fi
   1792   \begingroup
   1793   \let\@vspace\@vspace@orig
   1794   \let\@vspacer\@vspacer@orig
   1795   \let\@footnotemark\@footnotemark@nolink
   1796   \let\@footnotetext\@footnotetext@nolink
   1797   \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
   1798   \hsize=\textwidth
   1799   \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}%
   1800   \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
   1801   \@printtopmatter
   1802   \if@ACM@sigchiamode\@mkauthors\fi
   1803   \setcounter{footnote}{0}%
   1804   \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}%
   1805   \@titlenotes
   1806   \@subtitlenotes
   1807   \@authornotes
   1808   \let\@makefnmark\relax
   1809   \let\@thefnmark\relax
   1810   \let\@makefntext\noindent
   1811   \ifx\@empty\thankses\else
   1812     \footnotetextauthorsaddresses{%
   1813       \def\par{\let\par\@par}\parindent\z@\@setthanks}%
   1814   \fi
   1815   \ifx\@empty\@authorsaddresses\else
   1816      \if@ACM@anonymous\else
   1817        \if@ACM@journal@bibstrip
   1818          \footnotetextauthorsaddresses{%
   1819            \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}%
   1820        \fi
   1821      \fi
   1822   \fi
   1823   \if@ACM@nonacm\else\footnotetextcopyrightpermission{%
   1824     \if@ACM@authordraft
   1825         \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries
   1826             Unpublished working draft. Not for distribution.}}%
   1827        \color[gray]{0.9}%
   1828     \fi
   1829     \parindent\z@\parskip0.1\baselineskip
   1830     \if@ACM@authorversion\else
   1831       \if@printpermission\@copyrightpermission\par\fi
   1832     \fi
   1833     \if@ACM@manuscript\else
   1834        \if@ACM@journal@bibstrip\else % Print the conference information
   1835          {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
   1836        \fi
   1837     \fi
   1838     \if@printcopyright
   1839       \copyright\ \@copyrightyear\ \@copyrightowner\\
   1840     \else
   1841       \@copyrightyear.\
   1842     \fi
   1843     \if@ACM@manuscript
   1844       Manuscript submitted to ACM\\
   1845     \else
   1846       \if@ACM@authorversion
   1847           This is the author's version of the work. It is posted here for
   1848           your personal use. Not for redistribution. The definitive Version
   1849           of Record was published in
   1850           \if@ACM@journal@bibstrip
   1851             \emph{\@journalName}%
   1852           \else
   1853             \emph{\@acmBooktitle}%
   1854           \fi
   1855           \ifx\@acmDOI\@empty
   1856           .
   1857           \else
   1858             , \@formatdoi{\@acmDOI}.
   1859           \fi\\
   1860         \else
   1861           \if@ACM@nonacm\else
   1862             \if@ACM@journal@bibstrip
   1863               \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle
   1864               \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\
   1865               \@formatdoi{\@acmDOI}%
   1866             \else % Conference
   1867               \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN
   1868               \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi
   1869               \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi%
   1870             \fi
   1871           \fi
   1872         \fi
   1873       \fi}
   1874     \fi
   1875   \endgroup
   1876   \setcounter{footnote}{0}%
   1877   \@mkabstract
   1878   \if@ACM@printccs
   1879   \ifx\@concepts\@empty\else\bgroup
   1880       {\@specialsection{CCS Concepts}%
   1881          \noindent\@concepts\par}\egroup
   1882      \fi
   1883    \fi
   1884    \ifx\@keywords\@empty\else\bgroup
   1885       {\if@ACM@journal
   1886          \@specialsection{Additional Key Words and Phrases}%
   1887        \else
   1888          \@specialsection{Keywords}%
   1889        \fi
   1890          \noindent\@keywords}\par\egroup
   1891    \fi
   1892   \let\metadata@authors=\authors
   1893   \nxandlist{, }{, }{, }\metadata@authors
   1894   \def\@ACM@checkaffil{}%
   1895   \hypersetup{%
   1896     pdfauthor={\metadata@authors},
   1897     pdftitle={\@title},
   1898     pdfsubject={\@concepts},
   1899     pdfkeywords={\@keywords},
   1900     pdfcreator={LaTeX with acmart
   1901       \csname ver@acmart.cls\endcsname\space
   1902       and hyperref
   1903       \csname ver@hyperref.sty\endcsname}}%
   1904   \andify\authors
   1905   \andify\shortauthors
   1906   \global\let\authors=\authors
   1907   \global\let\shortauthors=\shortauthors
   1908   \if@ACM@printacmref
   1909      \@mkbibcitation
   1910   \fi
   1911   \global\@topnum\z@ % this prevents floats from falling
   1912                      % at the top of page 1
   1913   \global\@botnum\z@ % we do not want them to be on the bottom either
   1914   \@printendtopmatter
   1915   \@afterindentfalse
   1916   \@afterheading
   1917 }
   1918 \def\@specialsection#1{%
   1919   \ifcase\ACM@format@nr
   1920   \relax % manuscript
   1921     \par\medskip\small\noindent#1: %
   1922   \or % acmsmall
   1923     \par\medskip\small\noindent#1: %
   1924   \or % acmlarge
   1925     \par\medskip\small\noindent#1: %
   1926   \or % acmtog
   1927     \par\medskip\small\noindent#1: %
   1928   \or % sigconf
   1929     \section*{#1}%
   1930   \or % siggraph
   1931     \section*{#1}%
   1932   \or % sigplan
   1933      \noindentparagraph*{#1:~}%
   1934   \or % sigchi
   1935     \section*{#1}%
   1936   \or % sigchi-a
   1937     \section*{#1}%
   1938     \fi
   1939 }
   1940 \def\@printtopmatter{%
   1941   \ifx\@startPage\@empty
   1942      \gdef\@startPage{1}%
   1943   \else
   1944      \setcounter{page}{\@startPage}%
   1945   \fi
   1946   \thispagestyle{firstpagestyle}%
   1947   \noindent
   1948   \ifcase\ACM@format@nr
   1949   \relax % manuscript
   1950     \box\mktitle@bx\par
   1951   \or % acmsmall
   1952     \box\mktitle@bx\par
   1953   \or % acmlarge
   1954     \box\mktitle@bx\par
   1955   \or % acmtog
   1956     \twocolumn[\box\mktitle@bx]%
   1957   \or % sigconf
   1958     \twocolumn[\box\mktitle@bx]%
   1959   \or % siggraph
   1960     \twocolumn[\box\mktitle@bx]%
   1961   \or % sigplan
   1962     \twocolumn[\box\mktitle@bx]%
   1963   \or % sigchi
   1964     \twocolumn[\box\mktitle@bx]%
   1965   \or % sigchi-a
   1966     \par\box\mktitle@bx\par\bigskip
   1967     \if@ACM@badge
   1968        \marginpar{\noindent
   1969          \ifx\@acmBadgeL@image\@empty\else
   1970            \href{\@acmBadgeL@url}{%
   1971              \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}%
   1972             \hskip\@ACM@badge@skip
   1973           \fi
   1974          \ifx\@acmBadgeR@image\@empty\else
   1975            \href{\@acmBadgeR@url}{%
   1976              \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}%
   1977           \fi}%
   1978     \fi
   1979   \fi
   1980 }
   1981 \def\@mktitle{%
   1982   \ifcase\ACM@format@nr
   1983   \relax % manuscript
   1984     \@mktitle@i
   1985   \or % acmsmall
   1986     \@mktitle@i
   1987   \or % acmlarge
   1988     \@mktitle@i
   1989   \or % acmtog
   1990     \@mktitle@i
   1991   \or % sigconf
   1992     \@mktitle@iii
   1993   \or % siggraph
   1994     \@mktitle@iii
   1995   \or % sigplan
   1996     \@mktitle@iii
   1997   \or % sigchi
   1998     \@mktitle@iii
   1999   \or % sigchi-a
   2000     \@mktitle@iv
   2001   \fi
   2002 }
   2003 \def\@titlefont{%
   2004   \ifcase\ACM@format@nr
   2005   \relax % manuscript
   2006     \LARGE\sffamily\bfseries
   2007   \or % acmsmall
   2008     \LARGE\sffamily\bfseries
   2009   \or % acmlarge
   2010     \LARGE\sffamily\bfseries
   2011   \or % acmtog
   2012     \Huge\sffamily
   2013   \or % sigconf
   2014     \Huge\sffamily\bfseries
   2015   \or % siggraph
   2016     \Huge\sffamily\bfseries
   2017   \or % sigplan
   2018     \Huge\bfseries
   2019   \or % sigchi
   2020     \Huge\sffamily\bfseries
   2021   \or % sigchi-a
   2022      \Huge\bfseries
   2023   \fi}
   2024 \def\@subtitlefont{\normalsize
   2025   \ifcase\ACM@format@nr
   2026   \relax % manuscript
   2027     \mdseries
   2028   \or % acmsmall
   2029     \mdseries
   2030   \or % acmlarge
   2031     \mdseries
   2032   \or % acmtog
   2033      \LARGE
   2034   \or % sigconf
   2035      \LARGE\mdseries
   2036   \or % siggraph
   2037      \LARGE\mdseries
   2038   \or % sigplan
   2039      \LARGE\mdseries
   2040   \or % sigchi
   2041      \LARGE\mdseries
   2042   \or % sigchi-a
   2043      \mdseries
   2044   \fi}
   2045 \def\@mktitle@i{\hsize=\textwidth
   2046   \@ACM@title@width=\hsize
   2047   \ifx\@acmBadgeL@image\@empty\else
   2048     \advance\@ACM@title@width by -\@ACM@badge@width
   2049     \advance\@ACM@title@width by -\@ACM@badge@skip
   2050   \fi
   2051   \ifx\@acmBadgeR@image\@empty\else
   2052     \advance\@ACM@title@width by -\@ACM@badge@width
   2053     \advance\@ACM@title@width by -\@ACM@badge@skip
   2054   \fi
   2055   \setbox\mktitle@bx=\vbox{\noindent\@titlefont
   2056     \ifx\@acmBadgeL@image\@empty\else
   2057       \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
   2058           \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
   2059       \hskip\@ACM@badge@skip
   2060     \fi
   2061     \parbox[t]{\@ACM@title@width}{\raggedright
   2062       \@titlefont\noindent
   2063       \@title
   2064   \ifx\@subtitle\@empty\else
   2065     \par\noindent{\@subtitlefont\@subtitle}
   2066   \fi}%
   2067   \ifx\@acmBadgeR@image\@empty\else
   2068     \hskip\@ACM@badge@skip
   2069     \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
   2070         \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
   2071   \fi
   2072   \par\bigskip}}%
   2073 \def\@mktitle@iii{\hsize=\textwidth
   2074     \setbox\mktitle@bx=\vbox{\@titlefont\centering
   2075       \@ACM@title@width=\hsize
   2076       \if@ACM@badge
   2077         \advance\@ACM@title@width by -2\@ACM@badge@width
   2078         \advance\@ACM@title@width by -2\@ACM@badge@skip
   2079         \parbox[b]{\@ACM@badge@width}{\strut
   2080           \ifx\@acmBadgeL@image\@empty\else
   2081             \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
   2082                 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
   2083           \fi}%
   2084         \hskip\@ACM@badge@skip
   2085       \fi
   2086       \parbox[t]{\@ACM@title@width}{\centering\@titlefont
   2087         \@title
   2088         \ifx\@subtitle\@empty\else
   2089           \par\noindent{\@subtitlefont\@subtitle}
   2090         \fi
   2091       }%
   2092       \if@ACM@badge
   2093         \hskip\@ACM@badge@skip
   2094         \parbox[b]{\@ACM@badge@width}{\strut
   2095           \ifx\@acmBadgeR@image\@empty\else
   2096             \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
   2097                 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
   2098           \fi}%
   2099       \fi
   2100       \par\bigskip}}%
   2101 \def\@mktitle@iv{\hsize=\textwidth
   2102     \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
   2103       \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
   2104       \noindent\@title
   2105      \ifx\@subtitle\@empty\else
   2106        \par\noindent\@subtitlefont\@subtitle
   2107      \fi
   2108      \par\bigskip}}%
   2109 \newbox\@ACM@commabox
   2110 \def\@ACM@addtoaddress#1{%
   2111   \ifvmode\else
   2112     \if@ACM@affiliation@obeypunctuation\else
   2113     \setbox\@ACM@commabox=\hbox{, }%
   2114     \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox
   2115   \fi\fi
   2116   #1}
   2117 \def\streetaddress#1{\unskip\ignorespaces}
   2118 \def\postcode#1{\unskip\ignorespaces}
   2119 \if@ACM@journal
   2120   \def\position#1{\unskip\ignorespaces}
   2121   \def\institution#1{\global\@ACM@instpresenttrue
   2122     \unskip~#1\ignorespaces}
   2123   \def\city#1{\global\@ACM@citypresenttrue\unskip\ignorespaces}
   2124   \def\state#1{\unskip\ignorespaces}
   2125   \newcommand\department[2][0]{\unskip\ignorespaces}
   2126   \def\country#1{\global\@ACM@countrypresenttrue
   2127     \if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
   2128 \else
   2129   \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
   2130   \def\institution#1{\global\@ACM@instpresenttrue
   2131     \if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
   2132   \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation
   2133     #2\else#2\par\fi}%
   2134   \def\city#1{\global\@ACM@citypresenttrue\@ACM@addtoaddress{#1}}%
   2135   \let\state\@ACM@addtoaddress
   2136   \def\country#1{\global\@ACM@countrypresenttrue\@ACM@addtoaddress{#1}}%
   2137 \fi
   2138 \def\@mkauthors{\begingroup
   2139   \hsize=\textwidth
   2140   \ifcase\ACM@format@nr
   2141   \relax % manuscript
   2142     \@mkauthors@i
   2143   \or % acmsmall
   2144     \@mkauthors@i
   2145   \or % acmlarge
   2146     \@mkauthors@i
   2147   \or % acmtog
   2148     \@mkauthors@i
   2149   \or % sigconf
   2150     \@mkauthors@iii
   2151   \or % siggraph
   2152     \@mkauthors@iii
   2153   \or % sigplan
   2154     \@mkauthors@iii
   2155   \or % sigchi
   2156     \@mkauthors@iii
   2157   \or % sigchi-a
   2158     \@mkauthors@iv
   2159   \fi
   2160   \endgroup
   2161 }
   2162 \def\@authorfont{\Large\sffamily}
   2163 \def\@affiliationfont{\normalsize\normalfont}
   2164 \ifcase\ACM@format@nr
   2165 \relax % manuscript
   2166 \or % acmsmall
   2167   \def\@authorfont{\large\sffamily}
   2168   \def\@affiliationfont{\small\normalfont}
   2169 \or % acmlarge
   2170 \or % acmtog
   2171   \def\@authorfont{\LARGE\sffamily}
   2172   \def\@affiliationfont{\large}
   2173 \or % sigconf
   2174   \def\@authorfont{\LARGE}
   2175   \def\@affiliationfont{\large}
   2176 \or % siggraph
   2177   \def\@authorfont{\normalsize\normalfont}
   2178   \def\@affiliationfont{\normalsize\normalfont}
   2179 \or % sigplan
   2180   \def\@authorfont{\Large\normalfont}
   2181   \def\@affiliationfont{\normalsize\normalfont}
   2182 \or % sigchi
   2183   \def\@authorfont{\bfseries}
   2184   \def\@affiliationfont{\mdseries}
   2185 \or % sigchi-a
   2186   \def\@authorfont{\bfseries}
   2187   \def\@affiliationfont{\mdseries}
   2188 \fi
   2189 \def\@typeset@author@line{%
   2190   \andify\@currentauthors\par\noindent
   2191   \@currentauthors\def\@currentauthors{}%
   2192   \ifx\@currentaffiliations\@empty\else
   2193     \andify\@currentaffiliations
   2194       \unskip, {\@currentaffiliations}\par
   2195   \fi
   2196   \def\@currentaffiliations{}}
   2197 \newif\if@ACM@instpresent
   2198 \@ACM@instpresenttrue
   2199 \newif\if@ACM@citypresent
   2200 \@ACM@citypresenttrue
   2201 \newif\if@ACM@countrypresent
   2202 \@ACM@countrypresenttrue
   2203 \def\@ACM@resetaffil{%
   2204   \global\@ACM@instpresentfalse
   2205   \global\@ACM@citypresentfalse
   2206   \global\@ACM@countrypresentfalse
   2207 }
   2208 \def\@ACM@checkaffil{%
   2209   \if@ACM@instpresent\else
   2210   \ClassWarningNoLine{\@classname}{No institution present for an affiliation}%
   2211   \fi
   2212   \if@ACM@citypresent\else
   2213   \ClassWarningNoLine{\@classname}{No city present for an affiliation}%
   2214   \fi
   2215   \if@ACM@countrypresent\else
   2216   \ClassError{\@classname}{No country present for an affiliation}{ACM
   2217     requires each author to indicate their country using country macro.}%
   2218   \fi
   2219 }
   2220 \def\@mkauthors@i{%
   2221   \def\@currentauthors{}%
   2222   \def\@currentaffiliations{}%
   2223   \global\let\and\@typeset@author@line
   2224   \def\@author##1{%
   2225     \ifx\@currentauthors\@empty
   2226       \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}%
   2227     \else
   2228        \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}%
   2229     \fi
   2230     \gdef\and{}}%
   2231   \def\email##1##2{}%
   2232   \def\affiliation##1##2{%
   2233     \def\@tempa{##2}\ifx\@tempa\@empty\else
   2234        \ifx\@currentaffiliations\@empty
   2235           \gdef\@currentaffiliations{%
   2236             \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
   2237             \setkeys{@ACM@affiliation@}{##1}%
   2238             \@ACM@resetaffil
   2239             \@affiliationfont##2\@ACM@checkaffil}%
   2240        \else
   2241          \g@addto@macro{\@currentaffiliations}{\and
   2242            \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
   2243            \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
   2244            ##2\@ACM@checkaffil}%
   2245       \fi
   2246     \fi
   2247      \global\let\and\@typeset@author@line}%
   2248   \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
   2249     \noindent\addresses\@typeset@author@line
   2250    \par\medskip}%
   2251 }
   2252 \newbox\author@bx
   2253 \newdimen\author@bx@wd
   2254 \newskip\author@bx@sep
   2255 \author@bx@sep=1pc\relax
   2256 \def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd
   2257   \def\and{\par}\normalbaselines
   2258   \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi
   2259     \@authorfont\@currentauthors\par\@affiliationfont
   2260     \@currentaffiliation}\egroup
   2261   \box\author@bx\hspace{\author@bx@sep}%
   2262   \gdef\@currentauthors{}%
   2263   \gdef\@currentaffiliation{}}
   2264 \def\@mkauthors@iii{%
   2265   \author@bx@wd=\textwidth\relax
   2266   \advance\author@bx@wd by -\author@bx@sep\relax
   2267   \ifnum\@ACM@authorsperrow>0\relax
   2268     \divide\author@bx@wd by \@ACM@authorsperrow\relax
   2269   \else
   2270     \ifcase\num@authorgroups
   2271     \relax % 0?
   2272     \or  % 1=one author per row
   2273     \or  % 2=two authors per row
   2274        \divide\author@bx@wd by \num@authorgroups\relax
   2275     \or  % 3=three authors per row
   2276        \divide\author@bx@wd by \num@authorgroups\relax
   2277     \or  % 4=two authors per row (!)
   2278        \divide\author@bx@wd by 2\relax
   2279     \else % three authors per row
   2280        \divide\author@bx@wd by 3\relax
   2281     \fi
   2282   \fi
   2283   \advance\author@bx@wd by -\author@bx@sep\relax
   2284   \gdef\@currentauthors{}%
   2285   \gdef\@currentaffiliation{}%
   2286   \def\@author##1{\ifx\@currentauthors\@empty
   2287     \gdef\@currentauthors{\par##1}%
   2288   \else
   2289     \g@addto@macro\@currentauthors{\par##1}%
   2290   \fi
   2291   \gdef\and{}}%
   2292   \def\email##1##2{\ifx\@currentaffiliation\@empty
   2293     \gdef\@currentaffiliation{\bgroup
   2294       \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
   2295   \else
   2296     \g@addto@macro\@currentaffiliation{\par\bgroup
   2297       \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
   2298   \fi}%
   2299   \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
   2300     \gdef\@currentaffiliation{%
   2301       \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
   2302       \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
   2303       ##2\@ACM@checkaffil}%
   2304   \else
   2305     \g@addto@macro\@currentaffiliation{\par
   2306       \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
   2307       \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
   2308       ##2\@ACM@checkaffil}%
   2309   \fi
   2310   \global\let\and\@typeset@author@bx
   2311 }%
   2312   \hsize=\textwidth
   2313   \global\setbox\mktitle@bx=\vbox{\noindent
   2314     \box\mktitle@bx\par\medskip\leavevmode
   2315     \lineskip=1pc\relax\centering\hspace*{-1em}%
   2316     \addresses\let\and\@typeset@author@bx\and\par\bigskip}}
   2317 \def\@mkauthors@iv{%
   2318   \author@bx@wd=\columnwidth\relax
   2319   \advance\author@bx@wd by -\author@bx@sep\relax
   2320   \ifnum\@ACM@authorsperrow>0\relax
   2321     \divide\author@bx@wd by \@ACM@authorsperrow\relax
   2322   \else
   2323     \ifcase\num@authorgroups
   2324     \relax % 0?
   2325     \or  % 1=one author per row
   2326     \else  % 2=two authors per row
   2327        \divide\author@bx@wd by 2\relax
   2328     \fi
   2329   \fi
   2330   \advance\author@bx@wd by -\author@bx@sep\relax
   2331   \gdef\@currentauthors{}%
   2332   \gdef\@currentaffiliation{}%
   2333   \def\@author##1{\ifx\@currentauthors\@empty
   2334     \gdef\@currentauthors{\par##1}%
   2335   \else
   2336     \g@addto@macro\@currentauthors{\par##1}%
   2337   \fi
   2338   \gdef\and{}}%
   2339   \def\email##1##2{\ifx\@currentaffiliation\@empty
   2340     \gdef\@currentaffiliation{\nolinkurl{##2}}%
   2341   \else
   2342     \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
   2343   \fi}%
   2344   \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
   2345     \gdef\@currentaffiliation{%
   2346       \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
   2347       \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
   2348       ##2\@ACM@checkaffil}%
   2349   \else
   2350     \g@addto@macro\@currentaffiliation{\par
   2351       \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
   2352       \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
   2353       ##2\@ACM@checkaffil}%
   2354   \fi
   2355   \global\let\and\@typeset@author@bx}%
   2356     \bgroup\hsize=\columnwidth
   2357     \par\raggedright\leftskip=\z@
   2358     \lineskip=1pc\noindent
   2359     \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup}
   2360 \def\@mkauthorsaddresses{%
   2361   \ifnum\num@authors>1\relax
   2362   Authors' \else Author's \fi
   2363   \ifnum\num@authorgroups>1\relax
   2364   addresses: \else address: \fi
   2365   \bgroup
   2366   \def\streetaddress##1{\unskip, ##1}%
   2367   \def\postcode##1{\unskip, ##1}%
   2368   \def\position##1{\unskip\ignorespaces}%
   2369   \def\institution##1{\unskip, ##1}%
   2370   \def\city##1{\unskip, ##1}%
   2371   \def\state##1{\unskip, ##1}%
   2372   \renewcommand\department[2][0]{\unskip\@addpunct, ##2}%
   2373   \def\country##1{\unskip, ##1}%
   2374   \def\and{\unskip; }%
   2375   \def\@author##1{##1}%
   2376   \def\email##1##2{\unskip, \nolinkurl{##2}}%
   2377   \addresses
   2378   \egroup}
   2379 \AtEndDocument{\if@ACM@nonacm\else\if@ACM@journal
   2380   \ifx\@authorsaddresses\@empty
   2381   \ClassWarningNoLine{\@classname}{Authors'
   2382     addresses are mandatory for ACM journals}%
   2383   \fi\fi\fi}
   2384 \def\@setaddresses{}
   2385 \def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}}
   2386 \def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}}
   2387 \def\@mkteasers{%
   2388   \ifx\@teaserfigures\@empty\else
   2389     \def\@teaser##1{\par\bigskip\bgroup
   2390       \captionsetup{type=figure}##1\egroup\par}
   2391     \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par
   2392       \noindent\@Description@presentfalse
   2393       \@teaserfigures\par\if@Description@present\else
   2394          \global\@undescribed@imagestrue
   2395          \ClassWarning{\@classname}{A possible image without
   2396            description}\fi
   2397     \medskip}%
   2398   \fi}
   2399 \def\@mkabstract{\bgroup
   2400   \ifx\@abstract\@lempty\else
   2401   {\phantomsection\addcontentsline{toc}{section}{Abstract}%
   2402     \if@ACM@journal
   2403        \everypar{\setbox\z@\lastbox\everypar{}}\small
   2404     \else
   2405       \section*{\abstractname}%
   2406     \fi
   2407    \ignorespaces\@abstract\par}%
   2408   \fi\egroup}
   2409 \def\@mkbibcitation{\bgroup
   2410   \let\@vspace\@vspace@orig
   2411   \let\@vspacer\@vspacer@orig
   2412   \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}%
   2413   \def\footnotemark{}%
   2414   \def\\{\unskip{} \ignorespaces}%
   2415   \def\footnote{\ClassError{\@classname}{Please do not use footnotes
   2416       inside a \string\title{} or \string\author{} command! Use
   2417       \string\titlenote{} or \string\authornote{} instead!}}%
   2418   \def\@article@string{\ifx\@acmArticle\@empty{\ }\else,
   2419     Article~\@acmArticle\ \fi}%
   2420   \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak
   2421   \noindent\bgroup
   2422     \def\\{\unskip{}, \ignorespaces}\authors\egroup. \@acmYear. \@title
   2423   \ifx\@subtitle\@empty. \else: \@subtitle. \fi
   2424   \if@ACM@nonacm\else
   2425     % The 'nonacm' option disables 'printacmref' by default,
   2426     % and the present \@mkbibcitation definition is never used
   2427     % in this case. The conditional remains useful if the user
   2428     % explicitly sets \settopmatter{printacmref=true}.
   2429     \if@ACM@journal@bibstrip
   2430        \textit{\@journalNameShort}
   2431        \@acmVolume, \@acmNumber \@article@string (\@acmPubDate),
   2432        \ref{TotPages}~\@pages@word.
   2433     \else
   2434        In \textit{\@acmBooktitle}%
   2435        \ifx\@acmEditors\@empty\textit{.}\else
   2436          \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.%
   2437        \fi\
   2438        ACM, New York, NY, USA%
   2439          \@article@string\unskip, \ref{TotPages}~\@pages@word.
   2440     \fi
   2441   \fi
   2442   \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
   2443 \par\egroup}
   2444 \def\@printendtopmatter{%
   2445   \let\@vspace\@vspace@orig
   2446   \let\@vspacer\@vspacer@orig
   2447   \par\bigskip
   2448   \let\@vspace\@vspace@acm
   2449   \let\@vspacer\@vspacer@acm
   2450   }
   2451 \def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
   2452 \def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.}
   2453 \RequirePackage{fancyhdr}
   2454 \let\ACM@ps@plain\ps@plain
   2455 \let\ACM@ps@myheadings\ps@myheadings
   2456 \let\ACM@ps@headings\ps@headings
   2457 \def\ACM@restore@pagestyle{%
   2458   \let\ps@plain\ACM@ps@plain
   2459   \let\ps@myheadings\ACM@ps@myheadings
   2460   \let\ps@headings\ACM@ps@headings}
   2461 \AtBeginDocument{\ACM@restore@pagestyle}
   2462 \if@ACM@review
   2463   \newsavebox{\ACM@linecount@bx}
   2464   \newlength\ACM@linecount@bxht
   2465   \newcount\ACM@linecount
   2466   \ACM@linecount\@ne\relax
   2467   \def\ACM@mk@linecount{%
   2468     \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont
   2469         \normalsize
   2470         \setlength{\ACM@linecount@bxht}{0pt}%
   2471         \loop{\color{red}\scriptsize\the\ACM@linecount}\\
   2472         \global\advance\ACM@linecount by \@ne
   2473         \addtolength{\ACM@linecount@bxht}{\baselineskip}%
   2474         \ifdim\ACM@linecount@bxht<\textheight\repeat
   2475         {\color{red}\scriptsize\the\ACM@linecount}\hfill
   2476         \global\advance\ACM@linecount by \@ne}}}
   2477 \fi
   2478 \def\ACM@linecountL{%
   2479   \if@ACM@review
   2480   \ACM@mk@linecount
   2481   \begin{picture}(0,0)%
   2482     \put(-26,-22){\usebox{\ACM@linecount@bx}}%
   2483   \end{picture}%
   2484   \fi}
   2485 \def\ACM@linecountR{%
   2486   \if@ACM@review
   2487     \ifcase\ACM@format@nr
   2488     \relax % manuscript
   2489          \relax
   2490        \or % acmsmall
   2491          \relax
   2492        \or % acmlarge
   2493          \relax
   2494        \or % acmtog
   2495           \ACM@mk@linecount
   2496        \or % sigconf
   2497           \ACM@mk@linecount
   2498        \or % siggraph
   2499           \ACM@mk@linecount
   2500        \or % sigplan
   2501           \ACM@mk@linecount
   2502        \or % sigchi
   2503           \ACM@mk@linecount
   2504        \or % sigchi-a
   2505           \ACM@mk@linecount
   2506     \fi
   2507     \begin{picture}(0,0)%
   2508       \put(20,-22){\usebox{\ACM@linecount@bx}}%
   2509      \end{picture}%
   2510   \fi}
   2511 \if@ACM@timestamp
   2512   % Subtracting 30 from \time gives us the effect of rounding down despite
   2513   % \numexpr rounding to nearest
   2514   \newcounter{ACM@time@hours}
   2515   \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax}
   2516   \newcounter{ACM@time@minutes}
   2517   \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax}
   2518   \newcommand\ACM@timestamp{%
   2519     \footnotesize%
   2520     \ifx\@acmSubmissionID\@empty\relax\else
   2521     Submission ID: \@acmSubmissionID.{ }%
   2522     \fi
   2523     \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }%
   2524     \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }%
   2525     Page \thepage\ of \@startPage--\pageref*{TotPages}.%
   2526   }
   2527 \fi
   2528 \def\@shortauthors{%
   2529   \if@ACM@anonymous
   2530     Anon.
   2531     \ifx\@acmSubmissionID\@empty\else Submission Id: \@acmSubmissionID\fi
   2532   \else\shortauthors\fi}
   2533 \def\@headfootfont{\sffamily\footnotesize}
   2534 \AtBeginDocument{%
   2535 \fancypagestyle{standardpagestyle}{%
   2536   \fancyhf{}%
   2537   \renewcommand{\headrulewidth}{\z@}%
   2538   \renewcommand{\footrulewidth}{\z@}%
   2539   \def\@acmArticlePage{%
   2540     \ifx\@acmArticle\empty%
   2541       \if@ACM@printfolios\thepage\fi%
   2542     \else%
   2543       \@acmArticle\if@ACM@printfolios:\thepage\fi%
   2544     \fi%
   2545   }%
   2546   \if@ACM@journal@bibstrip
   2547     \ifcase\ACM@format@nr
   2548     \relax % manuscript
   2549       \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}%
   2550       \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}%
   2551       \fancyhead[RE]{\@shortauthors}%
   2552       \fancyhead[LO]{\ACM@linecountL\shorttitle}%
   2553       \if@ACM@nonacm\else%
   2554         \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}
   2555       \fi%
   2556     \or % acmsmall
   2557       \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticlePage}%
   2558       \fancyhead[RO]{\@headfootfont\@acmArticlePage}%
   2559       \fancyhead[RE]{\@headfootfont\@shortauthors}%
   2560       \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
   2561       \if@ACM@nonacm\else%
   2562         \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
   2563         \@acmNumber, Article \@acmArticle.  Publication date: \@acmPubDate.}%
   2564       \fi
   2565     \or % acmlarge
   2566       \fancyhead[LE]{\ACM@linecountL\@headfootfont
   2567       \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
   2568       \fancyhead[LO]{\ACM@linecountL}%
   2569       \fancyhead[RO]{\@headfootfont
   2570         \shorttitle\quad\textbullet\quad\@acmArticlePage}%
   2571       \if@ACM@nonacm\else%
   2572         \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
   2573         \@acmNumber, Article \@acmArticle.  Publication date: \@acmPubDate.}%
   2574       \fi
   2575     \or % acmtog
   2576       \fancyhead[LE]{\ACM@linecountL\@headfootfont
   2577         \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
   2578       \fancyhead[LO]{\ACM@linecountL}%
   2579       \fancyhead[RE]{\ACM@linecountR}%
   2580       \fancyhead[RO]{\@headfootfont
   2581         \shorttitle\quad\textbullet\quad\@acmArticlePage\ACM@linecountR}%
   2582       \if@ACM@nonacm\else%
   2583         \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
   2584         \@acmNumber, Article \@acmArticle.  Publication date: \@acmPubDate.}%
   2585       \fi
   2586     \else % Proceedings
   2587       \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
   2588       \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
   2589       \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
   2590       \if@ACM@nonacm\else%
   2591         \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
   2592           \acmConference@shortname,
   2593           \acmConference@date, \acmConference@venue}%
   2594         \fancyhead[RO]{\@headfootfont
   2595           \acmConference@shortname,
   2596           \acmConference@date, \acmConference@venue\ACM@linecountR}%
   2597       \fi
   2598     \fi
   2599   \else % Proceedings
   2600     \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
   2601     \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
   2602     \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
   2603     \if@ACM@nonacm\else%
   2604       \fancyhead[LE]{\ACM@linecountL\@headfootfont
   2605         \acmConference@shortname,
   2606         \acmConference@date, \acmConference@venue}%
   2607       \fancyhead[RO]{\@headfootfont
   2608         \acmConference@shortname,
   2609         \acmConference@date, \acmConference@venue\ACM@linecountR}%
   2610     \fi
   2611   \fi
   2612   \if@ACM@sigchiamode
   2613      \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
   2614   \fi
   2615   \if@ACM@timestamp
   2616      \fancyfoot[LO,RE]{\ACM@timestamp}
   2617   \fi
   2618 }%
   2619 \pagestyle{standardpagestyle}
   2620 }
   2621 \newdimen\@folio@wd
   2622 \@folio@wd=\z@
   2623 \newdimen\@folio@ht
   2624 \@folio@ht=\z@
   2625 \newdimen\@folio@voffset
   2626 \@folio@voffset=\z@
   2627 \def\@folio@max{1}
   2628 \ifcase\ACM@format@nr
   2629 \relax % manuscript
   2630 \or % acmsmall
   2631   \@folio@wd=45.75pt\relax
   2632   \@folio@ht=1.25in\relax
   2633   \@folio@voffset=.2in\relax
   2634   \def\@folio@max{8}
   2635 \or % acmlarge
   2636   \@folio@wd=43.25pt\relax
   2637   \@folio@ht=79pt\relax
   2638   \@folio@voffset=.55in\relax
   2639   \def\@folio@max{10}
   2640 \fi
   2641 \def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax
   2642   \ifnum\@tempcnta=0\relax\else
   2643   \loop
   2644      \ifnum\@tempcnta>\@folio@max\relax
   2645       \advance\@tempcnta by - \@folio@max
   2646    \repeat
   2647     \advance\@tempcnta by -1\relax
   2648     \@tempdima=\@folio@ht\relax
   2649     \multiply\@tempdima by \the\@tempcnta\relax
   2650     \advance\@tempdima by -\@folio@voffset\relax
   2651     \begin{picture}(0,0)
   2652     \makebox[\z@]{\raisebox{-\@tempdima}{%
   2653         \rlap{%
   2654           \raisebox{-0.45\@folio@ht}[\z@][\z@]{%
   2655             \rule{\@folio@wd}{\@folio@ht}}}%
   2656         \parbox{\@folio@wd}{%
   2657           \centering
   2658           \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}}
   2659   \end{picture}\fi}
   2660 
   2661 \AtBeginDocument{%
   2662 \fancypagestyle{firstpagestyle}{%
   2663   \fancyhf{}%
   2664   \renewcommand{\headrulewidth}{\z@}%
   2665   \renewcommand{\footrulewidth}{\z@}%
   2666   \if@ACM@journal@bibstrip
   2667     \ifcase\ACM@format@nr
   2668     \relax % manuscript
   2669       \fancyhead[L]{\ACM@linecountL}%
   2670       \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}%
   2671       \if@ACM@nonacm\else%
   2672         \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
   2673       \fi%
   2674     \or % acmsmall
   2675       \if@ACM@nonacm\else%
   2676         \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
   2677         \@acmNumber, Article \@acmArticle.  Publication date:
   2678         \@acmPubDate.}%
   2679       \fi%
   2680       \fancyhead[LE]{\ACM@linecountL\@folioblob}%
   2681       \fancyhead[LO]{\ACM@linecountL}%
   2682       \fancyhead[RO]{\@folioblob}%
   2683       \fancyheadoffset[RO,LE]{0.6\@folio@wd}%
   2684     \or % acmlarge
   2685       \if@ACM@nonacm\else%
   2686         \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
   2687         \@acmNumber, Article \@acmArticle.  Publication date:
   2688         \@acmPubDate.}%
   2689       \fi%
   2690       \fancyhead[RO]{\@folioblob}%
   2691       \fancyhead[LE]{\ACM@linecountL\@folioblob}%
   2692       \fancyhead[LO]{\ACM@linecountL}%
   2693       \fancyheadoffset[RO,LE]{1.4\@folio@wd}%
   2694     \or % acmtog
   2695       \if@ACM@nonacm\else%
   2696         \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
   2697         \@acmNumber, Article \@acmArticle.  Publication date:
   2698         \@acmPubDate.}%
   2699       \fi%
   2700       \fancyhead[L]{\ACM@linecountL}%
   2701       \fancyhead[R]{\ACM@linecountR}%
   2702     \else % Conference proceedings
   2703       \fancyhead[L]{\ACM@linecountL}%
   2704       \fancyhead[R]{\ACM@linecountR}%
   2705       \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
   2706     \fi
   2707   \else
   2708     \fancyhead[L]{\ACM@linecountL}%
   2709     \fancyhead[R]{\ACM@linecountR}%
   2710     \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
   2711   \fi
   2712   \if@ACM@timestamp
   2713     \ifnum\ACM@format@nr=0\relax % Manuscript
   2714     \fancyfoot[LO,RE]{\ACM@timestamp\quad
   2715       \if@ACM@nonacm\else
   2716         \footnotesize Manuscript submitted to ACM
   2717       \fi}
   2718     \else
   2719     \fancyfoot[LO,RE]{\ACM@timestamp}
   2720     \fi
   2721   \fi
   2722 }}
   2723 \def\ACM@NRadjust#1{%
   2724  \begingroup
   2725   \expandafter\ifx\csname Sectionformat\endcsname\relax
   2726   % do nothing when  \Sectionformat  is unknown
   2727    \def\next{\endgroup #1}%
   2728  \else
   2729   \def\next{\endgroup
   2730    \let\realSectionformat\Sectionformat
   2731    \def\ACM@sect@format@{#1}%
   2732    \let\Sectionformat\ACM@NR@adjustedSectionformat
   2733  %%  next lines added 2018-06-17 to ensure section number is styled
   2734    \let\real@adddotafter\@adddotafter
   2735    \let\@adddotafter\ACM@adddotafter
   2736    #1{}% imposes the styles, but nullifies  \MakeUppercase
   2737    \let\@adddotafter\real@adddotafter
   2738   }%
   2739  \fi \next
   2740 }
   2741 \def\ACM@NR@adjustedSectionformat#1#2{%
   2742  \realSectionformat{\ACM@sect@format{#1}}{#2}%
   2743  \let\Sectionformat\realSectionformat}
   2744 \DeclareRobustCommand{\ACM@sect@format}{\ACM@sect@format@}
   2745 \def\ACM@sect@format@null#1{#1}
   2746 \let\ACM@sect@format@\ACM@sect@format@null
   2747 \AtBeginDocument{%
   2748  \expandafter\ifx\csname LTX@adddotafter\endcsname\relax
   2749   \let\LTX@adddotafter\@adddotafter
   2750  \fi
   2751 }
   2752 \def\ACM@adddotafter#1{\ifx\relax#1\relax\else\LTX@adddotafter{#1}\fi}
   2753 \renewcommand\section{\@startsection{section}{1}{\z@}%
   2754   {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
   2755   {.25\baselineskip}%
   2756   {\ACM@NRadjust\@secfont}}
   2757 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
   2758   {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
   2759   {.25\baselineskip}%
   2760   {\ACM@NRadjust\@subsecfont}}
   2761 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
   2762   {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
   2763   {-3.5\p@}%
   2764   {\ACM@NRadjust{\@subsubsecfont\@adddotafter}}}
   2765 \renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
   2766   {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
   2767   {-3.5\p@}%
   2768   {\ACM@NRadjust{\@parfont\@adddotafter}}}
   2769 \newcommand\noindentparagraph{\@startsection{paragraph}{4}{\z@}%
   2770   {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
   2771   {-3.5\p@}%
   2772   {\ACM@NRadjust{\@parfont}}}
   2773 
   2774 \renewcommand\part{\@startsection{part}{9}{\z@}%
   2775   {-10\p@ \@plus -4\p@ \@minus -2\p@}%
   2776   {4\p@}%
   2777   {\ACM@NRadjust\@parfont}}
   2778 \def\section@raggedright{\@rightskip\@flushglue
   2779   \rightskip\@rightskip
   2780   \leftskip\z@skip
   2781   \parindent\z@}
   2782 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
   2783 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
   2784 \def\@subsubsecfont{\sffamily\itshape}
   2785 \def\@parfont{\itshape}
   2786 \setcounter{secnumdepth}{3}
   2787 \ifcase\ACM@format@nr
   2788 \relax % manuscript
   2789 \or % acmsmall
   2790 \or % acmlarge
   2791  \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
   2792  \def\@subsecfont{\sffamily\large\section@raggedright}
   2793 \or % acmtog
   2794  \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
   2795  \def\@subsecfont{\sffamily\large\section@raggedright}
   2796 \or % sigconf
   2797  \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
   2798  \def\@subsecfont{\bfseries\Large\section@raggedright}
   2799 \or % siggraph
   2800  \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase}
   2801  \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright}
   2802 \or % sigplan
   2803  \def\@secfont{\bfseries\Large\section@raggedright}
   2804  \def\@subsecfont{\bfseries\section@raggedright}
   2805  \def\@subsubsecfont{\bfseries\section@raggedright}
   2806  \def\@parfont{\bfseries\itshape}
   2807  \def\@subparfont{\itshape}
   2808 \or % sigchi
   2809  \setcounter{secnumdepth}{1}
   2810  \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
   2811  \def\@subsecfont{\sffamily\bfseries\section@raggedright}
   2812 \or % sigchi-a
   2813  \setcounter{secnumdepth}{0}
   2814  \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
   2815  \def\@subsecfont{\sffamily\bfseries\section@raggedright}
   2816 \fi
   2817 \def\@adddotafter#1{#1\@addpunct{.}}
   2818 \def\@addspaceafter#1{#1\@addpunct{\enspace}}
   2819 \providecommand*\@dotsep{4.5}
   2820 \def\@acmplainbodyfont{\itshape}
   2821 \def\@acmplainindent{\parindent}
   2822 \def\@acmplainheadfont{\scshape}
   2823 \def\@acmplainnotefont{\@empty}
   2824 \ifcase\ACM@format@nr
   2825 \relax % manuscript
   2826 \or % acmsmall
   2827 \or % acmlarge
   2828 \or % acmtog
   2829 \or % sigconf
   2830 \or % siggraph
   2831 \or % sigplan
   2832   \def\@acmplainbodyfont{\itshape}
   2833   \def\@acmplainindent{\z@}
   2834   \def\@acmplainheadfont{\bfseries}
   2835   \def\@acmplainnotefont{\normalfont}
   2836 \or % sigchi
   2837 \or % sigchi-a
   2838 \fi
   2839 \newtheoremstyle{acmplain}%
   2840   {.5\baselineskip\@plus.2\baselineskip
   2841     \@minus.2\baselineskip}% space above
   2842   {.5\baselineskip\@plus.2\baselineskip
   2843     \@minus.2\baselineskip}% space below
   2844   {\@acmplainbodyfont}% body font
   2845   {\@acmplainindent}% indent amount
   2846   {\@acmplainheadfont}% head font
   2847   {.}% punctuation after head
   2848   {.5em}% spacing after head
   2849   {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec
   2850 \def\@acmdefinitionbodyfont{\normalfont}
   2851 \def\@acmdefinitionindent{\parindent}
   2852 \def\@acmdefinitionheadfont{\itshape}
   2853 \def\@acmdefinitionnotefont{\@empty}
   2854 \ifcase\ACM@format@nr
   2855 \relax % manuscript
   2856 \or % acmsmall
   2857 \or % acmlarge
   2858 \or % acmtog
   2859 \or % sigconf
   2860 \or % siggraph
   2861 \or % sigplan
   2862   \def\@acmdefinitionbodyfont{\normalfont}
   2863   \def\@acmdefinitionindent{\z@}
   2864   \def\@acmdefinitionheadfont{\bfseries}
   2865   \def\@acmdefinitionnotefont{\normalfont}
   2866 \or % sigchi
   2867 \or % sigchi-a
   2868 \fi
   2869 \newtheoremstyle{acmdefinition}%
   2870   {.5\baselineskip\@plus.2\baselineskip
   2871     \@minus.2\baselineskip}% space above
   2872   {.5\baselineskip\@plus.2\baselineskip
   2873     \@minus.2\baselineskip}% space below
   2874   {\@acmdefinitionbodyfont}% body font
   2875   {\@acmdefinitionindent}% indent amount
   2876   {\@acmdefinitionheadfont}% head font
   2877   {.}% punctuation after head
   2878   {.5em}% spacing after head
   2879   {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec
   2880 \theoremstyle{acmplain}
   2881 \AtEndPreamble{%
   2882   \if@ACM@acmthm
   2883   \theoremstyle{acmplain}
   2884   \@ifundefined{theorem}{%
   2885   \newtheorem{theorem}{Theorem}[section]
   2886   }{}
   2887   \@ifundefined{conjecture}{%
   2888   \newtheorem{conjecture}[theorem]{Conjecture}
   2889   }{}
   2890   \@ifundefined{proposition}{%
   2891   \newtheorem{proposition}[theorem]{Proposition}
   2892   }{}
   2893   \@ifundefined{lemma}{%
   2894   \newtheorem{lemma}[theorem]{Lemma}
   2895   }{}
   2896   \@ifundefined{corollary}{%
   2897   \newtheorem{corollary}[theorem]{Corollary}
   2898   }{}
   2899   \theoremstyle{acmdefinition}
   2900   \@ifundefined{example}{%
   2901   \newtheorem{example}[theorem]{Example}
   2902   }{}
   2903   \@ifundefined{definition}{%
   2904   \newtheorem{definition}[theorem]{Definition}
   2905   }{}
   2906   \fi
   2907   \theoremstyle{acmplain}
   2908 }
   2909 \def\@proofnamefont{\scshape}
   2910 \def\@proofindent{\indent}
   2911 \ifcase\ACM@format@nr
   2912 \relax % manuscript
   2913 \or % acmsmall
   2914 \or % acmlarge
   2915 \or % acmtog
   2916 \or % sigconf
   2917 \or % siggraph
   2918 \or % sigplan
   2919   \def\@proofnamefont{\itshape}
   2920   \def\@proofindent{\noindent}
   2921 \or % sigchi
   2922 \or % sigchi-a
   2923 \fi
   2924 \renewenvironment{proof}[1][\proofname]{\par
   2925   \pushQED{\qed}%
   2926   \normalfont \topsep6\p@\@plus6\p@\relax
   2927   \trivlist
   2928   \item[\@proofindent\hskip\labelsep
   2929         {\@proofnamefont #1\@addpunct{.}}]\ignorespaces
   2930 }{%
   2931   \popQED\endtrivlist\@endpefalse
   2932 }
   2933 \AtEndPreamble{%
   2934   \if@ACM@balance
   2935     \ifcase\ACM@format@nr
   2936     \relax % manuscript
   2937          \global\@ACM@balancefalse
   2938        \or % acmsmall
   2939          \global\@ACM@balancefalse
   2940        \or % acmlarge
   2941          \global\@ACM@balancefalse
   2942        \or % acmtog
   2943           \RequirePackage{balance}%
   2944        \or % sigconf
   2945           \RequirePackage{balance}%
   2946        \or % siggraph
   2947           \RequirePackage{balance}%
   2948        \or % sigplan
   2949           \RequirePackage{balance}%
   2950        \or % sigchi
   2951           \RequirePackage{balance}%
   2952        \or % sigchi-a
   2953           \global\@ACM@balancefalse
   2954     \fi
   2955   \fi
   2956 }
   2957 \AtEndDocument{%
   2958   \if@ACM@balance
   2959   \if@twocolumn
   2960   \balance
   2961   \fi\fi}
   2962 \newcommand\acksname{Acknowledgments}
   2963 \specialcomment{acks}{%
   2964   \begingroup
   2965   \section*{\acksname}
   2966   \phantomsection\addcontentsline{toc}{section}{\acksname}
   2967 }{%
   2968   \endgroup
   2969 }
   2970 \def\grantsponsor#1#2#3{#2}
   2971 \newcommand\grantnum[3][]{#3%
   2972   \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}
   2973 \AtEndPreamble{%
   2974 \if@ACM@screen
   2975   \includecomment{screenonly}
   2976   \excludecomment{printonly}
   2977 \else
   2978   \excludecomment{screenonly}
   2979   \includecomment{printonly}
   2980 \fi
   2981 \if@ACM@anonymous
   2982   \excludecomment{anonsuppress}
   2983   \excludecomment{acks}
   2984 \else
   2985   \includecomment{anonsuppress}
   2986 \fi}
   2987 \newcommand\showeprint[2][arxiv]{%
   2988   \def\@tempa{#1}%
   2989   \ifx\@tempa\@empty\def\@tempa{arxiv}\fi
   2990   \def\@tempb{arxiv}%
   2991   \ifx\@tempa\@tempb
   2992      arXiv:\href{https://arxiv.org/abs/#2}{#2}\else arXiv:#2%
   2993   \fi}
   2994 \let\@vspace@orig=\@vspace
   2995 \let\@vspacer@orig=\@vspacer
   2996 \apptocmd{\@vspace}{\ClassWarning{\@classname}{\string\vspace\space should
   2997     only be used to provide space above/below surrounding
   2998     objects}}{}{}
   2999 \apptocmd{\@vspacer}{\ClassWarning{\@classname}{\string\vspace\space should
   3000     only be used to provide space above/below surrounding
   3001     objects}}{}{}
   3002 \let\@vspace@acm=\@vspace
   3003 \let\@vspacer@acm=\@vspacer
   3004 \let\ACM@origbaselinestretch\baselinestretch
   3005 \AtEndDocument{\ifx\baselinestretch\ACM@origbaselinestretch\else
   3006   \ClassError{\@classname}{An attempt to redefine
   3007     \string\baselinestretch\space detected.  Please do not do this for
   3008     ACM submissions!}\fi}
   3009 \normalsize\normalfont\frenchspacing
   3010 \endinput
   3011 %%
   3012 %% End of file `acmart.cls'.