%%
%% This is file `glossaries.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% glossaries.dtx  (with options: `glossaries.sty,package')
%%
%%  glossaries.dtx
%%  Copyright 2011 Nicola Talbot
%%
%%  This work may be distributed and/or modified under the
%%  conditions of the LaTeX Project Public License, either version 1.3
%%  of this license of (at your option) any later version.
%%  The latest version of this license is in
%%    http://www.latex-project.org/lppl.txt
%%  and version 1.3 or later is part of all distributions of LaTeX
%%  version 2005/12/01 or later.
%%
%%  This work has the LPPL maintenance status `maintained'.
%%
%%  The Current Maintainer of this work is Nicola Talbot.
%%
%%  This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, mfirstuc.sty, glossary-hypernav.sty, glossary-list.sty, glossary-long.sty, glossary-longragged.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-compatible-207.sty, glossaries-accsupp.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-dictionary-Brazilian.dict, glossaries-dictionary-Danish.dict, glossaries-dictionary-Dutch.dict, glossaries-dictionary-English.dict, glossaries-dictionary-French.dict, glossaries-dictionary-German.dict, glossaries-dictionary-Irish.dict, glossaries-dictionary-Italian.dict, glossaries-dictionary-Magyar.dict, glossaries-dictionary-Polish.dict, glossaries-dictionary-Serbian.dict, glossaries-dictionary-Spanish.dict, minimalgls.tex, sample-crossref.tex, sample-custom-acronym.tex, sample-dual.tex, sample.tex, sample4col.tex, sampleaccsupp.tex, sampleAcr.tex, sampleAcrDesc.tex, sampleacronyms.tex, sampleDB.tex, sampleDesc.tex, sampleEq.tex, sampleEqPg.tex, sampleNtn.tex, sampleSec.tex, sampletree.tex, sampleutf8.tex, samplexdy-compatible207.tex, samplexdy.tex, samplexdy2.tex, samplexdy-mc.xdy, samplexdy-mc207.xdy, database1.tex, database2.tex, glossaries.perl.
%%
%% \CharacterTable
%%  {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
%%   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
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{glossaries}[2011/04/12 v3.01 (NLCT)]
\RequirePackage{ifthen}
\RequirePackage{xkeyval}[2006/11/18]
\RequirePackage{mfirstuc}
\RequirePackage{xfor}
\RequirePackage{amsgen}
\RequirePackage{etoolbox}
\define@boolkey{glossaries.sty}[gls]{toc}[true]{}
\define@boolkey{glossaries.sty}[gls]{numberline}[true]{}
\ifcsundef{chapter}%
 {\newcommand*{\@@glossarysec}{section}}%
 {\newcommand*{\@@glossarysec}{chapter}}
\define@choicekey{glossaries.sty}{section}{part,chapter,section,%
subsection,subsubsection,paragraph,subparagraph}[section]{%
 \renewcommand*{\@@glossarysec}{#1}}
\newcommand*{\@@glossarysecstar}{*}
\newcommand*{\@@glossaryseclabel}{}
\newcommand*{\glsautoprefix}{}
\define@choicekey{glossaries.sty}{numberedsection}[\val\nr]{%
false,nolabel,autolabel}[nolabel]{%
 \ifcase\nr\relax
   \renewcommand*{\@@glossarysecstar}{*}%
   \renewcommand*{\@@glossaryseclabel}{}%
 \or
   \renewcommand*{\@@glossarysecstar}{}%
   \renewcommand*{\@@glossaryseclabel}{}%
 \or
   \renewcommand*{\@@glossarysecstar}{}%
   \renewcommand*{\@@glossaryseclabel}{%
     \label{\glsautoprefix\@glo@type}}%
 \fi
}
\newcommand*{\@glossary@default@style}{list}
\define@key{glossaries.sty}{style}{%
\renewcommand*{\@glossary@default@style}{#1}}
\newcommand*{\glossaryentrynumbers}[1]{#1}
\DeclareOptionX{nonumberlist}{%
\renewcommand*{\glossaryentrynumbers}[1]{}}
\newcommand*\@glo@seeautonumberlist{}
\DeclareOptionX{seeautonumberlist}{%
  \renewcommand*{\@glo@seeautonumberlist}{%
     \def\@glo@prefix{\glsnextpages}%
  }%
}
\newcommand*{\@gls@loadlong}{\RequirePackage{glossary-long}}
\DeclareOptionX{nolong}{\renewcommand*{\@gls@loadlong}{}}
\IfFileExists{supertabular.sty}{%
 \newcommand*{\@gls@loadsuper}{\RequirePackage{glossary-super}}}{%
 \newcommand*{\@gls@loadsuper}{}}
\DeclareOptionX{nosuper}{\renewcommand*{\@gls@loadsuper}{}}
\newcommand*{\@gls@loadlist}{\RequirePackage{glossary-list}}
\DeclareOptionX{nolist}{\renewcommand*{\@gls@loadlist}{}}
\newcommand*{\@gls@loadtree}{\RequirePackage{glossary-tree}}
\DeclareOptionX{notree}{\renewcommand*{\@gls@loadtree}{}}
\DeclareOptionX{nostyles}{%
 \renewcommand*{\@gls@loadlong}{}%
 \renewcommand*{\@gls@loadsuper}{}%
 \renewcommand*{\@gls@loadlist}{}%
 \renewcommand*{\@gls@loadtree}{}%
 \let\@glossary@default@style\relax
}
\define@boolkey{glossaries.sty}[gls]{entrycounter}[true]{}
\glsentrycounterfalse
\define@key{glossaries.sty}{counterwithin}{%
 \renewcommand*{\@gls@counterwithin}{#1}%
 \glsentrycountertrue
}
\newcommand*{\@gls@counterwithin}{}
\define@boolkey{glossaries.sty}[gls]{subentrycounter}[true]{}
\glssubentrycounterfalse
\define@choicekey{glossaries.sty}{sort}{standard,def,use}{%
 \csname @gls@setupsort@#1\endcsname
}
\newcommand*{\@gls@setupsort@standard}{%
 \def\do@glo@storeentry{\@glo@storeentry}%
 \def\@gls@defsortcount##1{}%
 \def\@gls@defsort##1##2{%
   \ifx\@glo@sort\@glsdefaultsort
     \let\@glo@sort\@glo@name
   \fi
   \@onelevel@sanitize\@glo@sort
   \expandafter\protected@xdef\csname glo@##2@sort\endcsname{\@glo@sort}%
 }%
 \def\@gls@setsort##1{}%
}
\@gls@setupsort@standard
\newcommand*\glssortnumberfmt[1]{%
 \ifnum#1<100000 0\fi
 \ifnum#1<10000 0\fi
 \ifnum#1<1000 0\fi
 \ifnum#1<100 0\fi
 \ifnum#1<10 0\fi
 \number#1%
}
\newcommand*{\@gls@setupsort@def}{%
 \def\do@glo@storeentry{\@glo@storeentry}%
 \def\@gls@defsortcount##1{%
   \expandafter\global
   \expandafter\newcount\csname glossary@##1@sortcount\endcsname
 }%
 \def\@gls@defsort##1##2{%
   \expandafter\global\expandafter
   \advance\csname glossary@##1@sortcount\endcsname by 1\relax
   \expandafter\protected@xdef\csname glo@##2@sort\endcsname{%
      \expandafter\glssortnumberfmt
        {\csname glossary@##1@sortcount\endcsname}}%
 }%
 \def\@gls@setsort##1{}%
}
\newcommand*{\@gls@setupsort@use}{%
 \let\do@glo@storeentry\@gobble
 \def\@gls@defsortcount##1{%
   \expandafter\global
   \expandafter\newcount\csname glossary@##1@sortcount\endcsname
 }%
 \def\@gls@defsort##1##2{%
   \expandafter\gdef\csname glo@##2@sort\endcsname{}%
 }%
 \def\@gls@setsort##1{%
   \edef\@glo@parent{\csname glo@##1@parent\endcsname}%
   \ifx\@glo@parent\@empty
   \else
     \expandafter\@gls@setsort\expandafter{\@glo@parent}%
   \fi
   \edef\@glo@type{\csname glo@##1@type\endcsname}%
   \edef\@gls@tmp{\csname glo@##1@sort\endcsname}%
   \ifx\@gls@tmp\@empty
     \expandafter\global\expandafter
     \advance\csname glossary@\@glo@type @sortcount\endcsname by 1\relax
     \expandafter\protected@xdef\csname glo@##1@sort\endcsname{%
        \expandafter\glssortnumberfmt
          {\csname glossary@\@glo@type @sortcount\endcsname}}%
     \@glo@storeentry{##1}%
   \fi
 }%
}
\newcommand*{\glsdefmain}{%
 \newglossary{main}{gls}{glo}{\glossaryname}%
}
\newcommand*{\glsdefaulttype}{main}
\newcommand*{\acronymtype}{\glsdefaulttype}
\DeclareOptionX{nomain}{%
  \let\glsdefaulttype\relax
  \renewcommand*{\glsdefmain}{}%
}
\define@boolkey{glossaries.sty}[gls]{acronym}[true]{%
 \DeclareAcronymList{acronym}%
}
\newcommand*{\@glsacronymlists}{}
\newcommand*{\@addtoacronymlists}[1]{%
 \ifx\@glsacronymlists\@empty
   \protected@xdef\@glsacronymlists{#1}%
 \else
   \protected@xdef\@glsacronymlists{\@glsacronymlists,#1}%
 \fi
}
\newcommand*{\DeclareAcronymList}[1]{%
 \glsIfListOfAcronyms{#1}{}{\@addtoacronymlists{#1}}%
}
\newcommand{\glsIfListOfAcronyms}[1]{%
 \edef\@do@gls@islistofacronyms{%
   \noexpand\@gls@islistofacronyms{#1}{\@glsacronymlists}}%
 \@do@gls@islistofacronyms
}
\newcommand{\@gls@islistofacronyms}[4]{%
 \def\gls@islistofacronyms##1,#1,##2\end@gls@islistofacronyms{%
    \def\@before{##1}\def\@after{##2}}%
 \gls@islistofacronyms,#2,#1,\@nil\end@gls@islistofacronyms
 \ifx\@after\@nnil
   #4%
 \else
   #3%
 \fi
}
\newif\if@glsisacronymlist
\newcommand*{\gls@checkisacronymlist}[1]{%
  \glsIfListOfAcronyms{#1}%
    {\@glsisacronymlisttrue}{\@glsisacronymlistfalse}%
}
\newcommand*{\SetAcronymLists}[1]{%
 \renewcommand*{\@glsacronymlists}{#1}%
}
\define@key{glossaries.sty}{acronymlists}{%
 \@addtoacronymlists{#1}%
}
\newcommand{\glscounter}{page}
\define@key{glossaries.sty}{counter}{%
 \renewcommand*{\glscounter}{#1}%
}
\newcommand*{\@gls@sanitizedesc}{\@onelevel@sanitize\@glo@desc}
\newcommand*{\@gls@sanitizename}{\@onelevel@sanitize\@glo@name}
\newcommand*{\@gls@sanitizesymbol}{\@onelevel@sanitize\@glo@symbol}
\define@boolkey[gls]{sanitize}{description}[true]{%
\ifgls@sanitize@description
 \renewcommand*{\@gls@sanitizedesc}{\@onelevel@sanitize\@glo@desc}%
\else
 \renewcommand*{\@gls@sanitizedesc}{}%
\fi
}
\define@boolkey[gls]{sanitize}{name}[true]{%
\ifgls@sanitize@name
 \renewcommand*{\@gls@sanitizename}{\@onelevel@sanitize\@glo@name}%
\else
 \renewcommand*{\@gls@sanitizename}{}%
\fi}
\define@boolkey[gls]{sanitize}{symbol}[true]{%
\ifgls@sanitize@symbol
 \renewcommand*{\@gls@sanitizesymbol}{%
\@onelevel@sanitize\@glo@symbol}%
\else
 \renewcommand*{\@gls@sanitizesymbol}{}%
\fi}
\define@key{glossaries.sty}{sanitize}[description=true,symbol=true,
name=true]{%
\ifthenelse{\equal{#1}{none}}{%
\renewcommand*{\@gls@sanitizedesc}{}%
\renewcommand*{\@gls@sanitizename}{}%
\renewcommand*{\@gls@sanitizesymbol}{}%
}{\setkeys[gls]{sanitize}{#1}}%
}
\define@boolkey{glossaries.sty}[gls]{translate}[true]{}
\glstranslatefalse
\@ifpackageloaded{translator}{\glstranslatetrue}{%
\@ifpackageloaded{babel}{\glstranslatetrue}{%
\@ifpackageloaded{polyglossia}{\glstranslatetrue}{}}}
\define@boolkey{glossaries.sty}[gls]{hyperfirst}[true]{}
\glshyperfirsttrue
\define@boolkey{glossaries.sty}[glsacr]{footnote}[true]{%
\ifthenelse{\boolean{glsacrdescription}}{}%
{\renewcommand*{\@gls@sanitizedesc}{}}%
}
\define@boolkey{glossaries.sty}[glsacr]{description}[true]{%
 \renewcommand*{\@gls@sanitizesymbol}{}%
}
\define@boolkey{glossaries.sty}[glsacr]{smallcaps}[true]{%
 \renewcommand*{\@gls@sanitizesymbol}{}%
}
\define@boolkey{glossaries.sty}[glsacr]{smaller}[true]{%
 \renewcommand*{\@gls@sanitizesymbol}{}%
}
\define@boolkey{glossaries.sty}[glsacr]{dua}[true]{%
 \renewcommand*{\@gls@sanitizesymbol}{}%
}
\define@boolkey{glossaries.sty}[glsacr]{shortcuts}[true]{}
\newcommand*{\glsorder}{word}
\newcommand*{\@glsorder}[1]{}
\define@choicekey{glossaries.sty}{order}{word,letter}{%
 \def\glsorder{#1}}
\newif\ifglsxindy
\glsxindyfalse
\DeclareOptionX{makeindex}{\glsxindyfalse}
\define@boolkey[gls]{xindy}{glsnumbers}[true]{}
\gls@xindy@glsnumberstrue
\def\@xdy@main@language{\rootlanguagename}%
\define@key[gls]{xindy}{language}{\def\@xdy@main@language{#1}}
\ifcsundef{inputencodingname}{%
 \def\gls@codepage{}}{%
 \def\gls@codepage{\inputencodingname}
}
\define@key[gls]{xindy}{codepage}{\def\gls@codepage{#1}}
\define@key{glossaries.sty}{xindy}[]{%
 \glsxindytrue
 \setkeys[gls]{xindy}{#1}%
}
\define@boolkey{glossaries.sty}[gls]{savewrites}[true]{}
\glssavewritesfalse
\newcommand*{\GlossariesWarning}[1]{%
 \PackageWarning{glossaries}{#1}%
}
\newcommand*{\GlossariesWarningNoLine}[1]{%
 \PackageWarningNoLine{glossaries}{#1}%
}
\DeclareOptionX{nowarn}{%
 \renewcommand*{\GlossariesWarning}[1]{}%
 \renewcommand*{\GlossariesWarningNoLine}[1]{}%
}
\define@boolkey{glossaries.sty}[gls]{compatible-2.07}[true]{}
\csname glscompatible-2.07false\endcsname
\ProcessOptionsX
\ifglstranslate
 \@ifpackageloaded{babel}{\IfFileExists{translator.sty}{%
   \RequirePackage{translator}}{}}{}
\fi
\ifthenelse{\equal{\glscounter}{section}}%
{%
 \ifcsundef{chapter}{}%
 {%
   \let\@gls@old@chapter\@chapter
   \def\@chapter[#1]#2{\@gls@old@chapter[{#1}]{#2}%
   \ifcsundef{hyperdef}{}{\hyperdef{section}{\thesection}{}}}%
 }%
}%
{}
\newcommand*{\@gls@onlypremakeg}{}
\newcommand*{\@onlypremakeg}[1]{%
\ifx\@gls@onlypremakeg\@empty
  \def\@gls@onlypremakeg{#1}%
\else
  \expandafter\toks@\expandafter{\@gls@onlypremakeg}%
  \edef\@gls@onlypremakeg{\the\toks@,\noexpand#1}%
\fi}
\newcommand*{\@disable@onlypremakeg}{%
\@for\@thiscs:=\@gls@onlypremakeg\do{%
  \expandafter\@disable@premakecs\@thiscs%
}}
\newcommand*{\@disable@premakecs}[1]{%
 \def#1{\PackageError{glossaries}{\string#1\space may only be
 used before \string\makeglossaries}{You can't use
 \string#1\space after \string\makeglossaries}}%
}
\providecommand*{\glossaryname}{Glossary}
\providecommand*{\acronymname}{Acronyms}
\newcommand*{\glssettoctitle}[1]{%
\def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}
\providecommand*{\entryname}{Notation}
\providecommand*{\descriptionname}{Description}
\providecommand*{\symbolname}{Symbol}
\providecommand*{\pagelistname}{Page List}
\providecommand*{\glssymbolsgroupname}{Symbols}
\providecommand*{\glsnumbersgroupname}{Numbers}
\newcommand*{\glspluralsuffix}{s}
\providecommand*{\seename}{see}
\providecommand*{\andname}{\&}
\newcommand*{\addglossarytocaptions}[1]{%
 \ifcsundef{captions#1}{}%
 {%
   \expandafter\let\expandafter\@gls@tmp\csname captions#1\endcsname
   \expandafter\toks@\expandafter{\@gls@tmp
     \renewcommand*{\glossaryname}{\translate{Glossary}}%
   }%
   \expandafter\edef\csname captions#1\endcsname{\the\toks@}%
 }%
}
\ifglstranslate
 \@ifpackageloaded{translator}{%
   \usedictionary{glossaries-dictionary}%
   \addglossarytocaptions{portuges}%
   \addglossarytocaptions{portuguese}%
   \addglossarytocaptions{brazil}%
   \addglossarytocaptions{brazilian}%
   \addglossarytocaptions{danish}%
   \addglossarytocaptions{dutch}%
   \addglossarytocaptions{afrikaans}%
   \addglossarytocaptions{english}%
   \addglossarytocaptions{UKenglish}%
   \addglossarytocaptions{USenglish}%
   \addglossarytocaptions{american}%
   \addglossarytocaptions{australian}%
   \addglossarytocaptions{british}%
   \addglossarytocaptions{canadian}%
   \addglossarytocaptions{newzealand}%
   \addglossarytocaptions{french}%
   \addglossarytocaptions{frenchb}%
   \addglossarytocaptions{francais}%
   \addglossarytocaptions{acadian}%
   \addglossarytocaptions{canadien}%
   \addglossarytocaptions{german}%
   \addglossarytocaptions{germanb}%
   \addglossarytocaptions{austrian}%
   \addglossarytocaptions{naustrian}%
   \addglossarytocaptions{ngerman}%
   \addglossarytocaptions{irish}%
   \addglossarytocaptions{italian}%
   \addglossarytocaptions{magyar}%
   \addglossarytocaptions{hungarian}%
   \addglossarytocaptions{polish}%
   \addglossarytocaptions{spanish}%
   \renewcommand*{\glssettoctitle}[1]{%
   \ifthenelse{\equal{#1}{main}}{%
     \translatelet{\glossarytoctitle}{Glossary}}{%
     \ifthenelse{\equal{#1}{acronym}}{%
       \translatelet{\glossarytoctitle}{Acronyms}}{%
       \def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}}}%
   \renewcommand*{\glossaryname}{\translate{Glossary}}%
   \renewcommand*{\acronymname}{\translate{Acronyms}}%
   \renewcommand*{\entryname}{\translate{Notation (glossaries)}}%
   \renewcommand*{\descriptionname}{%
     \translate{Description (glossaries)}}%
   \renewcommand*{\symbolname}{\translate{Symbol (glossaries)}}%
   \renewcommand*{\pagelistname}{%
     \translate{Page List (glossaries)}}%
   \renewcommand*{\glssymbolsgroupname}{%
     \translate{Symbols (glossaries)}}%
   \renewcommand*{\glsnumbersgroupname}{%
     \translate{Numbers (glossaries)}}%
 }{%
   \@ifpackageloaded{babel}%
   {\RequirePackage{glossaries-babel}}%
   {%
     \@ifpackageloaded{polyglossia}{%
       \RequirePackage{glossaries-polyglossia}}{}%
   }}
\fi
\newcommand*{\glspostdescription}{.}
\newcommand*{\nopostdesc}{}
\newcommand*{\@nopostdesc}{%
 \let\org@glspostdescription\glspostdescription
 \def\glspostdescription{%
   \let\glspostdescription\org@glspostdescription}%
}
\newcommand{\glspar}{\par}
\ifglsxindy
 \newcommand{\setStyleFile}[1]{%
   \renewcommand{\istfilename}{#1.xdy}}
\else
 \newcommand{\setStyleFile}[1]{%
   \renewcommand{\istfilename}{#1.ist}}
\fi
\@onlypremakeg\setStyleFile
\ifglsxindy
 \def\istfilename{\jobname.xdy}
\else
 \def\istfilename{\jobname.ist}
\fi
\newcommand*{\@istfilename}[1]{}
\newcommand*{\glscompositor}{.}
\newcommand*{\glsSetCompositor}[1]{%
 \renewcommand*{\glscompositor}{#1}}
\@onlypremakeg\glsSetCompositor
\newcommand*{\@glsAlphacompositor}{\glscompositor}
\ifglsxindy
 \newcommand*\glsSetAlphaCompositor[1]{%
    \renewcommand*\@glsAlphacompositor{#1}}
\else
 \newcommand*\glsSetAlphaCompositor[1]{%
   \glsnoxindywarning\glsSetAlphaCompositor}
\fi
\@onlypremakeg\glsSetAlphaCompositor
\newcommand*{\gls@suffixF}{}
\newcommand*{\glsSetSuffixF}[1]{%
 \renewcommand*{\gls@suffixF}{#1}}
\@onlypremakeg\glsSetSuffixF
\newcommand*{\gls@suffixFF}{}
\newcommand*{\glsSetSuffixFF}[1]{%
 \renewcommand*{\gls@suffixFF}{#1}%
}
\ifcsundef{hyperlink}%
{%
 \newcommand*{\glsnumberformat}[1]{#1}%
}%
{%
 \newcommand*{\glsnumberformat}[1]{\glshypernumber{#1}}%
}
\newcommand{\delimN}{, }
\newcommand{\delimR}{--}
\newcommand*{\glossarypreamble}{}
\newcommand*{\glossarypostamble}{}
\newcommand*{\glossarysection}[2][\@gls@title]{%
 \def\@gls@title{#2}%
 \ifcsundef{phantomsection}%
 {%
   \@glossarysection{#1}{#2}%
 }%
 {%
   \@p@glossarysection{#1}{#2}%
 }%
 \glossarymark{\glossarytoctitle}%
}
\ifcsundef{glossarymark}%
{%
 \newcommand{\glossarymark}[1]{\@mkboth{#1}{#1}}
}%
{%
 \GlossariesWarning{overriding \string\glossarymark}%
 \@ifclassloaded{memoir}%
 {
   \renewcommand{\glossarymark}[1]{%
     \markboth{\memUChead{#1}}{\memUChead{#1}}%
   }
 }
 {
   \renewcommand{\glossarymark}[1]{\@mkboth{#1}{#1}}
 }
}
\newcommand*{\setglossarysection}[1]{%
\setkeys{glossaries.sty}{section=#1}}
\newcommand*{\@glossarysection}[2]{%
\ifx\@@glossarysecstar\@empty
 \csname\@@glossarysec\endcsname{#2}%
\else
 \csname\@@glossarysec\endcsname*{#2}%
 \@gls@toc{#1}{\@@glossarysec}%
\fi
\@@glossaryseclabel}
\newcommand*{\@p@glossarysection}[2]{%
\glsclearpage
\phantomsection
\ifx\@@glossarysecstar\@empty
 \csname\@@glossarysec\endcsname{#2}%
\else
 \@gls@toc{#1}{\@@glossarysec}%
 \csname\@@glossarysec\endcsname*{#2}%
\fi
\@@glossaryseclabel}
\newcommand*{\gls@doclearpage}{%
 \ifthenelse{\equal{\@@glossarysec}{chapter}}%
 {%
   \ifcsundef{cleardoublepage}{\clearpage}{\cleardoublepage}%
 }%
 {}%
}
\newcommand*{\glsclearpage}{\gls@doclearpage}
\newcommand*{\@gls@toc}[2]{%
\ifglstoc
 \ifglsnumberline
   \addcontentsline{toc}{#2}{\numberline{}#1}%
 \else
   \addcontentsline{toc}{#2}{#1}%
 \fi
\fi}
\newcommand*{\glsnoxindywarning}[1]{%
 \GlossariesWarning{Not in xindy mode --- ignoring \string#1}%
}
\ifglsxindy
 \edef\@xdyattributes{\string"default\string"}%
\fi
\ifglsxindy
 \edef\@xdyattributelist{}%
\fi
\ifglsxindy
 \def\@xdylocref{}
\fi
\newcommand*{\@gls@ifinlist}[4]{%
 \def\@do@ifinlist##1,#1,##2\end@doifinlist{%
   \def\@gls@listsuffix{##2}%
   \ifx\@gls@listsuffix\@empty
      #4%
   \else
      #3%
   \fi
 }%
 \@do@ifinlist,#2,#1,\end@doifinlist
}
\ifglsxindy
 \newcommand*{\@xdycounters}{\glscounter}
 \newcommand*\GlsAddXdyCounters[1]{%
   \@for\@gls@ctr:=#1\do{%
      \edef\@do@addcounter{%
         \noexpand\@gls@ifinlist{\@gls@ctr}{\@xdycounters}{}%
         {%
            \noexpand\edef\noexpand\@xdycounters{\@xdycounters,%
              \noexpand\@gls@ctr}%
         }%
      }%
      \@do@addcounter
   }
 }
 \@onlypremakeg\GlsAddXdyCounters
\else
 \newcommand*\GlsAddXdyCounters[1]{%
   \glsnoxindywarning\GlsAddXdyAttribute
 }
\fi
\newcommand*\@disabled@glsaddxdycounters{%
  \PackageError{glossaries}{\string\GlsAddXdyCounters\space
  can't be used after \string\GlsAddXdyAttribute}{Move all
  occurrences of \string\GlsAddXdyCounters\space before the first
  instance of \string\GlsAddXdyAttribute}%
}
\ifglsxindy
 \newcommand*\@glsaddxdyattribute[2]{%
   \edef\@xdyattributes{\@xdyattributes ^^J \string"#1\string" ^^J
     \string"#2#1\string"}%
   \expandafter\toks@\expandafter{\@xdylocref}%
   \edef\@xdylocref{\the\toks@ ^^J%
     (markup-locref
     :open \string"\string~n%
       \expandafter\string\csname glsX#2X#1\endcsname
       \string" ^^J
     :close \string"\string" ^^J
     :attr \string"#2#1\string")}%
   \expandafter\gdef\csname glsX#2X#1\endcsname##1##2{%
      \setentrycounter[##1]{#2}\csname #1\endcsname{##2}%
   }%
 }
 \newcommand*\GlsAddXdyAttribute[1]{%
   \ifx\@xdyattributelist\@empty
     \edef\@xdyattributelist{#1}%
   \else
     \edef\@xdyattributelist{\@xdyattributelist,#1}%
   \fi
   \@for\@this@counter:=\@xdycounters\do{%
     \protected@edef\gls@do@addxdyattribute{%
       \noexpand\@glsaddxdyattribute{#1}{\@this@counter}%
     }
     \gls@do@addxdyattribute
   }%
   \let\GlsAddXdyCounters\@disabled@glsaddxdycounters
 }
 \@onlypremakeg\GlsAddXdyAttribute
\else
 \newcommand*\GlsAddXdyAttribute[1]{%
   \glsnoxindywarning\GlsAddXdyAttribute}
\fi
\ifglsxindy
\newcommand*{\@gls@addpredefinedattributes}{%
 \GlsAddXdyAttribute{glsnumberformat}
 \GlsAddXdyAttribute{textrm}
 \GlsAddXdyAttribute{textsf}
 \GlsAddXdyAttribute{texttt}
 \GlsAddXdyAttribute{textbf}
 \GlsAddXdyAttribute{textmd}
 \GlsAddXdyAttribute{textit}
 \GlsAddXdyAttribute{textup}
 \GlsAddXdyAttribute{textsl}
 \GlsAddXdyAttribute{textsc}
 \GlsAddXdyAttribute{emph}
 \GlsAddXdyAttribute{glshypernumber}
 \GlsAddXdyAttribute{hyperrm}
 \GlsAddXdyAttribute{hypersf}
 \GlsAddXdyAttribute{hypertt}
 \GlsAddXdyAttribute{hyperbf}
 \GlsAddXdyAttribute{hypermd}
 \GlsAddXdyAttribute{hyperit}
 \GlsAddXdyAttribute{hyperup}
 \GlsAddXdyAttribute{hypersl}
 \GlsAddXdyAttribute{hypersc}
 \GlsAddXdyAttribute{hyperemph}
}
\else
 \let\@gls@addpredefinedattributes\relax
\fi
\def\@xdyuseralphabets{}
\ifglsxindy
 \newcommand*{\GlsAddXdyAlphabet}[2]{%
 \edef\@xdyuseralphabets{%
   \@xdyuseralphabets ^^J
   (define-alphabet "#1" (#2))}}
\else
 \newcommand*{\GlsAddXdyAlphabet}[2]{%
    \glsnoxindywarning\GlsAddXdyAlphabet}
\fi
\ifglsxindy
 \newcommand*{\@gls@xdy@locationlist}{%
    roman-page-numbers,%
    Roman-page-numbers,%
    arabic-page-numbers,%
    alpha-page-numbers,%
    Alpha-page-numbers,%
    Appendix-page-numbers,%
    arabic-section-numbers%
 }
 \protected@edef\@gls@roman{\@roman{0\string"
     \string"roman-numbers-lowercase\string" :sep \string"}}%
 \@onelevel@sanitize\@gls@roman
 \edef\@tmp{\string" \string"roman-numbers-lowercase\string"
      :sep \string"}%
 \@onelevel@sanitize\@tmp
 \ifx\@tmp\@gls@roman
   \expandafter
     \edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{%
       \string"roman-numbers-lowercase\string"%
     }%
 \else
    \expandafter
     \edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{
       :sep \string"\@gls@roman\string"%
     }%
 \fi
 \expandafter\def\csname @gls@xdy@Lclass@Roman-page-numbers\endcsname{%
   \string"roman-numbers-uppercase\string"%
 }%
 \expandafter\def\csname @gls@xdy@Lclass@arabic-page-numbers\endcsname{%
   \string"arabic-numbers\string"%
 }%
 \expandafter\def\csname @gls@xdy@Lclass@alpha-page-numbers\endcsname{%
   \string"alpha\string"%
 }%
 \expandafter\def\csname @gls@xdy@Lclass@Alpha-page-numbers\endcsname{%
   \string"ALPHA\string"%
 }%
 \expandafter\def\csname @gls@xdy@Lclass@Appendix-page-numbers\endcsname{%
   \string"ALPHA\string"
   :sep \string"\@glsAlphacompositor\string"
   \string"arabic-numbers\string"%
 }
 \expandafter\def\csname @gls@xdy@Lclass@arabic-section-numbers\endcsname{%
   \string"arabic-numbers\string"
    :sep \string"\glscompositor\string"
   \string"arabic-numbers\string"%
 }%
 \def\@xdyuserlocationdefs{}
 \def\@xdyuserlocationnames{}
\fi
\ifglsxindy
  \newcommand*{\GlsAddXdyLocation}[3][]{%
    \def\@gls@tmp{#1}%
    \ifx\@gls@tmp\@empty
      \edef\@xdyuserlocationdefs{%
         \@xdyuserlocationdefs ^^J%
         (define-location-class \string"#2\string"^^J\space\space
         \space(:sep \string"{}\glsopenbrace\string" #3
                :sep \string"\glsclosebrace\string"))
      }%
    \else
      \edef\@xdyuserlocationdefs{%
         \@xdyuserlocationdefs ^^J%
         (define-location-class \string"#2\string"^^J\space\space
         \space(:sep "\glsopenbrace"
                #1
                :sep "\glsclosebrace\glsopenbrace" #3
                :sep "\glsclosebrace"))
      }%
    \fi
    \edef\@xdyuserlocationnames{%
       \@xdyuserlocationnames^^J\space\space\space
       \string"#1\string"}%
  }
 \@onlypremakeg\GlsAddXdyLocation
\else
  \newcommand*{\GlsAddXdyLocation}[2]{%
    \glsnoxindywarning\GlsAddXdyLocation}
\fi
\ifglsxindy
 \edef\@xdylocationclassorder{^^J\space\space\space
   \string"roman-page-numbers\string"^^J\space\space\space
   \string"arabic-page-numbers\string"^^J\space\space\space
   \string"arabic-section-numbers\string"^^J\space\space\space
   \string"alpha-page-numbers\string"^^J\space\space\space
   \string"Roman-page-numbers\string"^^J\space\space\space
   \string"Alpha-page-numbers\string"^^J\space\space\space
   \string"Appendix-page-numbers\string"
   \@xdyuserlocationnames^^J\space\space\space
   \string"see\string"
  }
\fi
\ifglsxindy
 \newcommand*\GlsSetXdyLocationClassOrder[1]{%
   \def\@xdylocationclassorder{#1}}
\else
 \newcommand*\GlsSetXdyLocationClassOrder[1]{%
   \glsnoxindywarning\GlsSetXdyLocationClassOrder}
\fi
\ifglsxindy
 \def\@xdysortrules{}
\fi
\ifglsxindy
 \newcommand*\GlsAddSortRule[2]{%
   \expandafter\toks@\expandafter{\@xdysortrules}%
   \protected@edef\@xdysortrules{\the\toks@ ^^J
    (sort-rule \string"#1\string" \string"#2\string")}%
 }
\else
 \newcommand*\GlsAddSortRule[2]{%
   \glsnoxindywarning\GlsAddSortRule}
\fi
\ifglsxindy
 \def\@xdyrequiredstyles{tex}
\fi
\ifglsxindy
 \newcommand*\GlsAddXdyStyle[1]{%
   \edef\@xdyrequiredstyles{\@xdyrequiredstyles,#1}}%
\else
 \newcommand*\GlsAddXdyStyle[1]{%
   \glsnoxindywarning\GlsAddXdyStyle}
\fi
\ifglsxindy
 \newcommand*\GlsSetXdyStyles[1]{%
   \edef\@xdyrequiredstyles{#1}}
\else
 \newcommand*\GlsSetXdyStyles[1]{%
   \glsnoxindywarning\GlsSetXdyStyles}
\fi
\ifglsxindy
 \@ifpackageloaded{babel}{%
 \def\findrootlanguage{\begingroup
   \escapechar=-1\relax
   \edef\languagename{%
     \expandafter\string\csname\languagename\endcsname}%
   \def\NeedsTeXFormat##1[##2]{}%
   \def\ProvidesPackage##1[##2]{}%
   \let\LdfInit\relax
   \def\languageattribute##1##2{}%
   \def\DeclareOption##1##2{%
     \ifx##1*\expandafter\endinput\else
     \edef\testlanguage{\expandafter\string\csname##1\endcsname}%
     \ifx\testlanguage\languagename##2\fi
   \fi}
 \def\input##1{\stripldf##1}%
 \def\stripldf##1.ldf{\gdef\rootlanguagename{##1}}%
 \@@input babel.sty
 \endgroup}%
 }{%
   \@ifpackageloaded{ngerman}{%
      \def\findrootlanguage{%
        \def\rootlanguagename{german}}%
   }{%
      \def\findrootlanguage{%
        \def\rootlanguagename{english}}%
   }%
 }%
\fi
\def\rootlanguagename{english}
\def\@xdylanguage#1#2{}
\ifglsxindy
 \newcommand*\GlsSetXdyLanguage[2][\glsdefaulttype]{%
 \ifglossaryexists{#1}{%
   \expandafter\def\csname @xdy@#1@language\endcsname{#2}%
 }{%
   \PackageError{glossaries}{Can't set language type for
   glossary type `#1' --- no such glossary}{%
   You have specified a glossary type that doesn't exist}}}
\else
 \newcommand*\GlsSetXdyLanguage[2][]{%
   \glsnoxindywarning\GlsSetXdyLanguage}
\fi
\def\@gls@codepage#1#2{}
\ifglsxindy
 \newcommand*{\GlsSetXdyCodePage}[1]{%
   \renewcommand*{\gls@codepage}{#1}%
 }
\else
 \newcommand*{\GlsSetXdyCodePage}[1]{%
   \glsnoxindywarning\GlsSetXdyCodePage}
\fi
\ifglsxindy
 \ifgls@xindy@glsnumbers
   \def\@xdylettergroups{(define-letter-group
      \string"glsnumbers\string"^^J\space\space\space
      :prefixes (\string"0\string" \string"1\string"
      \string"2\string" \string"3\string" \string"4\string"
      \string"5\string" \string"6\string" \string"7\string"
      \string"8\string" \string"9\string")^^J\space\space\space
      :before \string"\@glsfirstletter\string")}
 \else
   \def\@xdylettergroups{}
 \fi
\fi
 \newcommand*\GlsAddLetterGroup[2]{%
   \expandafter\toks@\expandafter{\@xdylettergroups}%
   \protected@edef\@xdylettergroups{\the\toks@^^J%
   (define-letter-group \string"#1\string"^^J\space\space\space#2)}%
 }%
\newcommand*{\forallglossaries}[3][\@glo@types]{%
 \@for#2:=#1\do{\ifx#2\@empty\else#3\fi}%
}
\newcommand*{\forglsentries}[3][\glsdefaulttype]{%
 \edef\@@glo@list{\csname glolist@#1\endcsname}%
 \@for#2:=\@@glo@list\do{\ifx#2\@empty\else#3\fi}%
}
\newcommand*{\forallglsentries}[3][\@glo@types]{%
\expandafter\forallglossaries\expandafter[#1]{\@@this@glo@}{%
\forglsentries[\@@this@glo@]{#2}{#3}}}
\newcommand{\ifglossaryexists}[3]{%
 \ifcsundef{@glotype@#1@out}{#3}{#2}%
}
\newcommand{\ifglsentryexists}[3]{%
 \ifcsundef{glo@#1@name}{#3}{#2}%
}
\newcommand*{\ifglsused}[3]{\ifthenelse{\boolean{glo@#1@flag}}{#2}{#3}}
\newcommand{\glsdoifexists}[2]{%
 \ifglsentryexists{#1}{#2}{%
   \PackageError{glossaries}{Glossary entry `#1' has not been
   defined}{You need to define a glossary entry before you
   can use it.}}%
}
\newcommand{\glsdoifnoexists}[2]{%
 \ifglsentryexists{#1}{%
   \PackageError{glossaries}{Glossary entry `#1' has already
   been defined}{}}{#2}%
}
\newcommand*{\@glo@types}{,}
\newcommand*{\newglossary}[5][glg]{%
\ifglossaryexists{#2}{%
 \PackageError{glossaries}{Glossary type `#2' already exists}{%
 You can't define a new glossary called `#2' because it already
 exists}%
}{%
 \ifx\glsdefaulttype\relax
   \gdef\glsdefaulttype{#2}%
 \fi
 \toks@{#2}\edef\@glo@types{\@glo@types\the\toks@,}%
 \expandafter\gdef\csname glolist@#2\endcsname{,}%
 \expandafter\def\csname @glotype@#2@in\endcsname{#3}%
 \expandafter\def\csname @glotype@#2@out\endcsname{#4}%
 \expandafter\def\csname @glotype@#2@title\endcsname{#5}%
 \protected@write\@auxout{}{\string\@newglossary{#2}{#1}{#3}{#4}}%
 \ifcsundef{gls@#2@display}%
 {%
   \expandafter\gdef\csname gls@#2@display\endcsname{\glsdisplay}%
 }%
 {}%
 \ifcsundef{gls@#2@displayfirst}%
 {%
   \expandafter\gdef\csname gls@#2@displayfirst\endcsname{%
     \glsdisplayfirst
   }%
 }%
 {}%
 \@gls@defsortcount{#2}%
 \@ifnextchar[{\@gls@setcounter{#2}}%
   {\@gls@setcounter{#2}[\glscounter]}}%
}
\newcommand*{\altnewglossary}[3]{%
 \newglossary[#2-glg]{#1}{#2-gls}{#2-glo}{#3}%
}
\@onlypreamble{\newglossary}
\@onlypremakeg\newglossary
\newcommand*{\@newglossary}[4]{}
\def\@gls@setcounter#1[#2]{%
 \expandafter\def\csname @glotype@#1@counter\endcsname{#2}%
 \ifglsxindy
   \GlsAddXdyCounters{#2}%
 \fi
}
\newcommand*{\@gls@getcounter}[1]{%
\csname @glotype@#1@counter\endcsname}
\glsdefmain
\define@key{glossentry}{name}{%
\def\@glo@name{#1}%
}
\define@key{glossentry}{description}{%
\def\@glo@desc{#1}%
}
\define@key{glossentry}{descriptionplural}{%
\def\@glo@descplural{#1}%
}
\define@key{glossentry}{sort}{%
\def\@glo@sort{#1}}
\define@key{glossentry}{text}{%
\def\@glo@text{#1}%
}
\define@key{glossentry}{plural}{%
\def\@glo@plural{#1}%
}
\define@key{glossentry}{first}{%
\def\@glo@first{#1}%
}
\define@key{glossentry}{firstplural}{%
\def\@glo@firstplural{#1}%
}
\define@key{glossentry}{symbol}{%
\def\@glo@symbol{#1}%
}
\define@key{glossentry}{symbolplural}{%
\def\@glo@symbolplural{#1}%
}
\define@key{glossentry}{type}{%
\def\@glo@type{#1}}
\define@key{glossentry}{counter}{%
 \ifcsundef{c@#1}%
 {%
   \PackageError{glossaries}%
   {There is no counter called `#1'}%
   {%
     The counter key should have the name of a valid counter
     as its value%
   }%
 }%
 {%
   \def\@glo@counter{#1}%
 }%
}
\define@key{glossentry}{see}{%
 \def\@glo@see{#1}%
 \@glo@seeautonumberlist
}
\define@key{glossentry}{parent}{%
\def\@glo@parent{#1}}
\define@choicekey{glossentry}{nonumberlist}[\val\nr]{true,false}[true]{%
 \ifcase\nr\relax
   \def\@glo@prefix{\glsnonextpages}%
 \else
   \def\@glo@prefix{\glsnextpages}%
 \fi
}
\define@key{glossentry}{user1}{%
 \def\@glo@useri{#1}%
}
\define@key{glossentry}{user2}{%
 \def\@glo@userii{#1}%
}
\define@key{glossentry}{user3}{%
 \def\@glo@useriii{#1}%
}
\define@key{glossentry}{user4}{%
 \def\@glo@useriv{#1}%
}
\define@key{glossentry}{user5}{%
 \def\@glo@userv{#1}%
}
\define@key{glossentry}{user6}{%
 \def\@glo@uservi{#1}%
}
\define@key{glossentry}{short}{%
 \def\@glo@short{#1}%
}
\define@key{glossentry}{shortplural}{%
 \def\@glo@shortpl{#1}%
}
\define@key{glossentry}{long}{%
 \def\@glo@long{#1}%
}
\define@key{glossentry}{longplural}{%
 \def\@glo@longpl{#1}%
}
\newcommand*{\@glsnoname}{%
 \PackageError{glossaries}{name key required in
 \string\newglossaryentry\space for entry `\@glo@label'}{You
 haven't specified the entry name}}
\newcommand*{\@glsdefaultplural}{\@glo@text\glspluralsuffix}
\newcommand*{\@glsdefaultsort}{\@glo@name}
\newcount\gls@level
\newrobustcmd{\newglossaryentry}[2]{%
\glsdoifnoexists{#1}{%
\def\@glo@label{#1}%
\let\@glo@name\@glsnoname
\def\@glo@desc{\PackageError{glossaries}{description key required in
\string\newglossaryentry\space for entry `\@glo@label'}{You haven't specified the entry description}}%
\def\@glo@descplural{\@glo@desc}%
\def\@glo@type{\glsdefaulttype}%
\def\@glo@symbol{\relax}%
\def\@glo@symbolplural{\@glo@symbol}%
\def\@glo@text{\@glo@name}%
\let\@glo@plural\@glsdefaultplural
\let\@glo@first\relax
\let\@glo@firstplural\relax
\let\@glo@sort\@glsdefaultsort
\def\@glo@counter{\@gls@getcounter{\@glo@type}}%
\def\@glo@see{}%
\def\@glo@parent{}%
\def\@glo@prefix{}%
\def\@glo@useri{}%
\def\@glo@userii{}%
\def\@glo@useriii{}%
\def\@glo@useriv{}%
\def\@glo@userv{}%
\def\@glo@uservi{}%
\def\@glo@short{}%
\def\@glo@shortpl{}%
\def\@glo@long{}%
\def\@glo@longpl{}%
 \@newglossaryentryprehook
\setkeys{glossentry}{#2}%
\ifcsundef{glolist@\@glo@type}%
{%
 \PackageError{glossaries}%
 {Glossary type '\@glo@type' has not been defined}%
 {You need to define a new glossary type, before making entries
  in it}%
}%
{%
 \protected@edef\@glolist@{\csname glolist@\@glo@type\endcsname}%
 \expandafter\xdef\csname glolist@\@glo@type\endcsname{\@glolist@{#1},}%
}%
\gls@level=0\relax
\ifx\@glo@parent\@empty
 \expandafter\gdef\csname glo@#1@parent\endcsname{}%
\else
 \ifthenelse{\equal{#1}{\@glo@parent}}{%
   \PackageError{glossaries}{Entry `#1' can't be its own parent}{}%
   \def\@glo@parent{}%
   \expandafter\gdef\csname glo@#1@parent\endcsname{}%
 }{%
   \ifglsentryexists{\@glo@parent}{%
     \expandafter\xdef\csname glo@#1@parent\endcsname{\@glo@parent}%
     \gls@level=\csname glo@\@glo@parent @level\endcsname\relax
     \advance\gls@level by 1\relax
     \ifx\@glo@name\@glsnoname
       \expandafter\let\expandafter\@glo@name
          \csname glo@\@glo@parent @name\endcsname
       \ifx\@glo@plural\@glsdefaultplural
         \expandafter\let\expandafter\@glo@plural
            \csname glo@\@glo@parent @plural\endcsname
       \fi
     \fi
   }{%
     \PackageError{glossaries}{Invalid parent `\@glo@parent'
     for entry `#1' - parent doesn't exist}{Parent entries
     must be defined before their children}%
     \def\@glo@parent{}%
     \expandafter\gdef\csname glo@#1@parent\endcsname{}%
    }%
 }%
\fi
\expandafter\xdef\csname glo@#1@level\endcsname{\number\gls@level}%
\ifx\relax\@glo@firstplural
  \ifx\relax\@glo@first
     \def\@glo@firstplural{\@glo@plural}%
     \def\@glo@first{\@glo@text}%
  \else
     \def\@glo@firstplural{\@glo@first\glspluralsuffix}%
  \fi
\else
  \ifx\relax\@glo@first
     \def\@glo@first{\@glo@text}%
  \fi
\fi
\expandafter
 \protected@xdef\csname glo@#1@text\endcsname{\@glo@text}%
\expandafter
 \protected@xdef\csname glo@#1@plural\endcsname{\@glo@plural}%
\expandafter
 \protected@xdef\csname glo@#1@first\endcsname{\@glo@first}%
\expandafter
 \protected@xdef\csname glo@#1@firstpl\endcsname{\@glo@firstplural}%
\expandafter
 \protected@xdef\csname glo@#1@type\endcsname{\@glo@type}%
\expandafter
 \protected@xdef\csname glo@#1@counter\endcsname{\@glo@counter}%
\expandafter
 \protected@xdef\csname glo@#1@useri\endcsname{\@glo@useri}%
\expandafter
 \protected@xdef\csname glo@#1@userii\endcsname{\@glo@userii}%
\expandafter
 \protected@xdef\csname glo@#1@useriii\endcsname{\@glo@useriii}%
\expandafter
 \protected@xdef\csname glo@#1@useriv\endcsname{\@glo@useriv}%
\expandafter
 \protected@xdef\csname glo@#1@userv\endcsname{\@glo@userv}%
\expandafter
 \protected@xdef\csname glo@#1@uservi\endcsname{\@glo@uservi}%
\expandafter
 \protected@xdef\csname glo@#1@short\endcsname{\@glo@short}%
\expandafter
 \protected@xdef\csname glo@#1@shortpl\endcsname{\@glo@shortpl}%
\expandafter
 \protected@xdef\csname glo@#1@long\endcsname{\@glo@long}%
\expandafter
 \protected@xdef\csname glo@#1@longpl\endcsname{\@glo@longpl}%
\@gls@sanitizename
\expandafter\protected@xdef\csname glo@#1@name\endcsname{\@glo@name}%
\def\@glo@@desc{\@glo@first}%
\ifx\@glo@desc\@glo@@desc
 \let\@glo@desc\@glo@first
\fi
\@gls@sanitizedesc
\expandafter\protected@xdef\csname glo@#1@desc\endcsname{\@glo@desc}%
\expandafter\protected@xdef\csname glo@#1@descplural\endcsname{\@glo@descplural}%
\@gls@defsort{\@glo@type}{#1}%
\def\@glo@@symbol{\@glo@text}%
\ifx\@glo@symbol\@glo@@symbol
 \let\@glo@symbol\@glo@text
\fi
\@gls@sanitizesymbol
\expandafter\protected@xdef\csname glo@#1@symbol\endcsname{\@glo@symbol}%
\expandafter\protected@xdef\csname glo@#1@symbolplural\endcsname{\@glo@symbolplural}%
\expandafter\gdef\csname glo@#1@flagfalse\endcsname{%
\expandafter\global\expandafter
\let\csname ifglo@#1@flag\endcsname\iffalse}%
\expandafter\gdef\csname glo@#1@flagtrue\endcsname{%
\expandafter\global\expandafter
\let\csname ifglo@#1@flag\endcsname\iftrue}%
\csname glo@#1@flagfalse\endcsname
\ifx\@glo@see\@empty
\else
 \protected@edef\@do@glssee{%
   \noexpand\@gls@fixbraces\noexpand\@glo@list\@glo@see
     \noexpand\@nil
   \noexpand\expandafter\noexpand\@glssee\noexpand\@glo@list{#1}}%
 \@do@glssee
\fi
}%
 \do@glo@storeentry{#1}%
 \@newglossaryentryposthook
}
\newcommand*{\@newglossaryentryprehook}{}
\newcommand*{\@newglossaryentryposthook}{}
\ifglsxindy
 \newcommand*{\@glossaryentryfield}{\string\\glossaryentryfield}
\else
 \newcommand*{\@glossaryentryfield}{\string\glossaryentryfield}
\fi
\ifglsxindy
 \newcommand*{\@glossarysubentryfield}{%
   \string\\glossarysubentryfield}
\else
 \newcommand*{\@glossarysubentryfield}{%
   \string\glossarysubentryfield}
\fi
\newcommand{\@glo@storeentry}[1]{%
\protected@edef\@glo@sort{\csname glo@#1@sort\endcsname}%
\@gls@checkmkidxchars\@glo@sort
\protected@edef\@@glo@name{\csname glo@#1@name\endcsname}%
\@gls@checkmkidxchars\@@glo@name
\ifglsxindy
 \protected@edef\@glo@name{\string\\glsnamefont{\@@glo@name}}%
\else
 \protected@edef\@glo@name{\string\glsnamefont{\@@glo@name}}%
\fi
\protected@edef\@glo@desc{\csname glo@#1@desc\endcsname}%
\@gls@checkmkidxchars\@glo@desc
\protected@edef\@glo@symbol{\csname glo@#1@symbol\endcsname}%
\@gls@checkmkidxchars\@glo@symbol
\@gls@checkmkidxchars\@glo@prefix
\edef\@glo@parent{\csname glo@#1@parent\endcsname}%
\ifglsxindy
 \ifx\@glo@parent\@empty
   \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
    (\string"\@glo@sort\string" %
    \string"\@glo@prefix\@glossaryentryfield{#1}{\@glo@name
    }{\@glo@desc}{\@glo@symbol}\string") %
   }%
 \else
   \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
     \csname glo@\@glo@parent @index\endcsname
     (\string"\@glo@sort\string" %
     \string"\@glo@prefix\@glossarysubentryfield%
        {\csname glo@#1@level\endcsname}{#1}{\@glo@name
     }{\@glo@desc}{\@glo@symbol}\string") %
  }%
 \fi
\else
 \ifx\@glo@parent\@empty
   \@onelevel@sanitize\@glo@prefix
   \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
     \@glo@sort\@gls@actualchar\@glo@prefix
     \@glossaryentryfield{#1}{\@glo@name}{\@glo@desc
     }{\@glo@symbol}%
   }%
 \else
   \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
     \csname glo@\@glo@parent @index\endcsname\@gls@levelchar
     \@glo@sort\@gls@actualchar\@glo@prefix
     \@glossarysubentryfield
       {\csname glo@#1@level\endcsname}{#1}{\@glo@name}{\@glo@desc
     }{\@glo@symbol}%
   }%
 \fi
\fi
}
\newcommand*{\glsreset}[1]{%
\glsdoifexists{#1}{%
\expandafter\global\csname glo@#1@flagfalse\endcsname}}
\newcommand*{\glslocalreset}[1]{%
\glsdoifexists{#1}{%
\expandafter\let\csname ifglo@#1@flag\endcsname\iffalse}}
\newcommand*{\glsunset}[1]{%
\glsdoifexists{#1}{%
\expandafter\global\csname glo@#1@flagtrue\endcsname}}
\newcommand*{\glslocalunset}[1]{%
\glsdoifexists{#1}{%
\expandafter\let\csname ifglo@#1@flag\endcsname\iftrue}}
\newcommand*{\glsresetall}[1][\@glo@types]{%
\forallglsentries[#1]{\@glsentry}{%
\glsreset{\@glsentry}}}
\newcommand*{\glslocalresetall}[1][\@glo@types]{%
\forallglsentries[#1]{\@glsentry}{%
\glslocalreset{\@glsentry}}}
\newcommand*{\glsunsetall}[1][\@glo@types]{%
\forallglsentries[#1]{\@glsentry}{%
\glsunset{\@glsentry}}}
\newcommand*{\glslocalunsetall}[1][\@glo@types]{%
\forallglsentries[#1]{\@glsentry}{%
\glslocalunset{\@glsentry}}}
\newcommand*{\loadglsentries}[2][\@gls@default]{%
\let\@gls@default\glsdefaulttype
\def\glsdefaulttype{#1}\input{#2}%
\let\glsdefaulttype\@gls@default}
\@onlypreamble{\loadglsentries}
\newcommand*{\glstextformat}[1]{#1}
\newcommand*{\glsdisplayfirst}[4]{#1#4}
\newcommand*{\glsdisplay}[4]{#1#4}
\newcommand*{\defglsdisplay}[2][\glsdefaulttype]{%
\expandafter\def\csname gls@#1@display\endcsname##1##2##3##4{#2}}
\newcommand*{\defglsdisplayfirst}[2][\glsdefaulttype]{%
\expandafter\def\csname gls@#1@displayfirst\endcsname##1##2##3##4{#2}}
\define@key{glslink}{counter}{%
 \ifcsundef{c@#1}%
 {%
   \PackageError{glossaries}%
   {There is no counter called `#1'}%
   {%
      The counter key should have the name of a valid counter
      as its value%
   }%
 }%
 {%
   \def\@gls@counter{#1}%
 }%
}
\define@key{glslink}{format}{%
\def\@glsnumberformat{#1}}
\define@boolkey{glslink}{hyper}[true]{}
\newrobustcmd*{\glslink}{%
\@ifstar\@sgls@link\@gls@@link}
\newcommand*{\@sgls@link}[1][]{\@gls@@link[hyper=false,#1]}
\newcommand*{\@gls@@link}[3][]{%
 \ifglsentryexists{#2}%
 {%
   \@gls@link[#1]{#2}{#3}%
 }{%
   \PackageError{glossaries}{Glossary entry `#2' has not been
   defined}{You need to define a glossary entry before you
   can use it.}%
   \glstextformat{#3}%
 }%
}
\def\@gls@link[#1]#2#3{%
   \leavevmode
   \def\glslabel{#2}%
   \def\@glsnumberformat{glsnumberformat}%
   \edef\@gls@counter{\csname glo@#2@counter\endcsname}%
   \KV@glslink@hypertrue
   \setkeys{glslink}{#1}%
   \@gls@saveentrycounter
   \@gls@setsort{#2}%
   \@do@wrglossary{#2}%
   \ifKV@glslink@hyper
     \@glslink{glo:#2}{\glstextformat{#3}}%
   \else
     \glstextformat{#3}\relax
   \fi
}
\newcommand*{\@gls@saveentrycounter}{%
 \def\@gls@Hcounter{}%
 \ifthenelse{\equal{\@gls@counter}{equation}}%
 {
   \ifcsundef{xatlevel@}%
   {%
     \edef\theglsentrycounter{\expandafter\noexpand
       \csname the\@gls@counter\endcsname}%
   }%
   {%
     \ifx\xatlevel@\@empty
       \edef\theglsentrycounter{\expandafter\noexpand
         \csname the\@gls@counter\endcsname}%
     \else
       \savecounters@
       \advance\c@equation by 1\relax
         \edef\theglsentrycounter{\csname the\@gls@counter\endcsname}%
       \ifcsundef{theH\@gls@counter}%
       {%
          \def\@gls@Hcounter{\theglsentrycounter}%
       }%
       {%
         \def\@gls@Hcounter{\csname theH\@gls@counter\endcsname}%
       }%
       \protected@edef\theHglsentrycounter{\@gls@Hcounter}%
       \restorecounters@
     \fi
   }%
 }%
 {%
   \edef\theglsentrycounter{\expandafter\noexpand
     \csname the\@gls@counter\endcsname}%
 }%
 \ifx\@gls@Hcounter\@empty
   \ifcsundef{theH\@gls@counter}%
   {%
      \def\theHglsentrycounter{\theglsentrycounter}%
   }%
   {%
     \protected@edef\theHglsentrycounter{\expandafter\noexpand
       \csname theH\@gls@counter\endcsname}%
   }%
 \fi
}
\def\@set@glo@numformat#1#2#3#4{%
 \expandafter\@glo@check@mkidxrangechar#3\@nil
 \protected@edef#1{%
   \@glo@prefix setentrycounter[#4]{#2}%
   \expandafter\string\csname\@glo@suffix\endcsname
 }%
 \@gls@checkmkidxchars#1%
}
\def\@glo@check@mkidxrangechar#1#2\@nil{%
\if#1(\relax
 \def\@glo@prefix{(}%
 \if\relax#2\relax
   \def\@glo@suffix{glsnumberformat}%
 \else
   \def\@glo@suffix{#2}%
 \fi
\else
 \if#1)\relax
   \def\@glo@prefix{)}%
   \if\relax#2\relax
     \def\@glo@suffix{glsnumberformat}%
   \else
     \def\@glo@suffix{#2}%
 \fi
 \else
   \def\@glo@prefix{}\def\@glo@suffix{#1#2}%
 \fi
\fi}
\newcommand*{\@gls@escbsdq}[1]{%
 \def\@gls@checkedmkidx{}%
 \let\gls@xdystring=#1\relax
 \@onelevel@sanitize\gls@xdystring
 \edef\do@gls@xdycheckbackslash{%
   \noexpand\@gls@xdycheckbackslash\gls@xdystring\noexpand\@nil
   \@backslashchar\@backslashchar\noexpand\null}%
 \do@gls@xdycheckbackslash
 \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}%
 \def\@gls@checkedmkidx{}%
 \expandafter\@gls@xdycheckquote\gls@xdystring\@nil""\null
 \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}%
 \let#1=\gls@xdystring
}
\newcommand{\@gls@checkmkidxchars}[1]{%
\ifglsxindy
 \@gls@escbsdq{#1}%
\else
 \def\@gls@checkedmkidx{}%
 \expandafter\@gls@checkquote#1\@nil""\null
 \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
 \def\@gls@checkedmkidx{}%
 \expandafter\@gls@checkescquote#1\@nil\"\"\null
 \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
 \def\@gls@checkedmkidx{}%
 \expandafter\@gls@checkescactual#1\@nil\?\?\null
 \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
 \def\@gls@checkedmkidx{}%
 \expandafter\@gls@checkactual#1\@nil??\null
 \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
 \def\@gls@checkedmkidx{}%
 \expandafter\@gls@checkbar#1\@nil||\null
 \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
 \def\@gls@checkedmkidx{}%
 \expandafter\@gls@checkescbar#1\@nil\|\|\null
 \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
 \def\@gls@checkedmkidx{}%
 \expandafter\@gls@checklevel#1\@nil!!\null
 \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
\fi
}
\def\@gls@updatechecked#1\@nil#2{\def#2{#1}}
\newtoks\@gls@tmpb
\def\@gls@checkquote#1"#2"#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
\ifx\null#2\null
\ifx\null#3\null
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
 \def\@@gls@checkquote{\relax}%
\else
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
   \@gls@quotechar\@gls@quotechar\@gls@quotechar\@gls@quotechar}%
 \def\@@gls@checkquote{\@gls@checkquote#3\null}%
\fi
\else
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
  \@gls@quotechar\@gls@quotechar}%
\ifx\null#3\null
  \def\@@gls@checkquote{\@gls@checkquote#2""\null}%
\else
  \def\@@gls@checkquote{\@gls@checkquote#2"#3\null}%
\fi
\fi
\@@gls@checkquote}
\def\@gls@checkescquote#1\"#2\"#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
\ifx\null#2\null
\ifx\null#3\null
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
 \def\@@gls@checkescquote{\relax}%
\else
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
   \@gls@quotechar\string\"\@gls@quotechar
   \@gls@quotechar\string\"\@gls@quotechar}%
 \def\@@gls@checkescquote{\@gls@checkescquote#3\null}%
\fi
\else
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
  \@gls@quotechar\string\"\@gls@quotechar}%
\ifx\null#3\null
  \def\@@gls@checkescquote{\@gls@checkescquote#2\"\"\null}%
\else
  \def\@@gls@checkescquote{\@gls@checkescquote#2\"#3\null}%
\fi
\fi
\@@gls@checkescquote}
\def\@gls@checkescactual#1\?#2\?#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
\ifx\null#2\null
\ifx\null#3\null
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
 \def\@@gls@checkescactual{\relax}%
\else
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
   \@gls@quotechar\string\"\@gls@actualchar
   \@gls@quotechar\string\"\@gls@actualchar}%
 \def\@@gls@checkescactual{\@gls@checkescactual#3\null}%
\fi
\else
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
  \@gls@quotechar\string\"\@gls@actualchar}%
\ifx\null#3\null
 \def\@@gls@checkescactual{\@gls@checkescactual#2\?\?\null}%
\else
 \def\@@gls@checkescactual{\@gls@checkescactual#2\?#3\null}%
\fi
\fi
\@@gls@checkescactual}
\def\@gls@checkescbar#1\|#2\|#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
\ifx\null#2\null
\ifx\null#3\null
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
 \def\@@gls@checkescbar{\relax}%
\else
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
   \@gls@quotechar\string\"\@gls@encapchar
   \@gls@quotechar\string\"\@gls@encapchar}%
 \def\@@gls@checkescbar{\@gls@checkescbar#3\null}%
\fi
\else
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
  \@gls@quotechar\string\"\@gls@encapchar}%
\ifx\null#3\null
 \def\@@gls@checkescbar{\@gls@checkescbar#2\|\|\null}%
\else
 \def\@@gls@checkescbar{\@gls@checkescbar#2\|#3\null}%
\fi
\fi
\@@gls@checkescbar}
\def\@gls@checkesclevel#1\!#2\!#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
\ifx\null#2\null
\ifx\null#3\null
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
 \def\@@gls@checkesclevel{\relax}%
\else
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
   \@gls@quotechar\string\"\@gls@levelchar
   \@gls@quotechar\string\"\@gls@levelchar}%
 \def\@@gls@checkesclevel{\@gls@checkesclevel#3\null}%
\fi
\else
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
  \@gls@quotechar\string\"\@gls@levelchar}%
\ifx\null#3\null
 \def\@@gls@checkesclevel{\@gls@checkesclevel#2\!\!\null}%
\else
 \def\@@gls@checkesclevel{\@gls@checkesclevel#2\!#3\null}%
\fi
\fi
\@@gls@checkesclevel}
\def\@gls@checkbar#1|#2|#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
\ifx\null#2\null
\ifx\null#3\null
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
 \def\@@gls@checkbar{\relax}%
\else
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
   \@gls@quotechar\@gls@encapchar\@gls@quotechar\@gls@encapchar}%
 \def\@@gls@checkbar{\@gls@checkbar#3\null}%
\fi
\else
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
  \@gls@quotechar\@gls@encapchar}%
\ifx\null#3\null
  \def\@@gls@checkbar{\@gls@checkbar#2||\null}%
\else
  \def\@@gls@checkbar{\@gls@checkbar#2|#3\null}%
\fi
\fi
\@@gls@checkbar}
\def\@gls@checklevel#1!#2!#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
\ifx\null#2\null
\ifx\null#3\null
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
 \def\@@gls@checklevel{\relax}%
\else
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
   \@gls@quotechar\@gls@levelchar\@gls@quotechar\@gls@levelchar}%
 \def\@@gls@checklevel{\@gls@checklevel#3\null}%
\fi
\else
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
  \@gls@quotechar\@gls@levelchar}%
\ifx\null#3\null
  \def\@@gls@checklevel{\@gls@checklevel#2!!\null}%
\else
  \def\@@gls@checklevel{\@gls@checklevel#2!#3\null}%
\fi
\fi
\@@gls@checklevel}
\def\@gls@checkactual#1?#2?#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
\ifx\null#2\null
\ifx\null#3\null
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
 \def\@@gls@checkactual{\relax}%
\else
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
   \@gls@quotechar\@gls@actualchar\@gls@quotechar\@gls@actualchar}%
 \def\@@gls@checkactual{\@gls@checkactual#3\null}%
\fi
\else
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
  \@gls@quotechar\@gls@actualchar}%
\ifx\null#3\null
  \def\@@gls@checkactual{\@gls@checkactual#2??\null}%
\else
  \def\@@gls@checkactual{\@gls@checkactual#2?#3\null}%
\fi
\fi
\@@gls@checkactual}
\def\@gls@xdycheckquote#1"#2"#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
\ifx\null#2\null
\ifx\null#3\null
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
 \def\@@gls@xdycheckquote{\relax}%
\else
 \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
   \string\"\string\"}%
 \def\@@gls@xdycheckquote{\@gls@xdycheckquote#3\null}%
\fi
\else
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
  \string\"}%
\ifx\null#3\null
  \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2""\null}%
\else
  \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2"#3\null}%
\fi
\fi
\@@gls@xdycheckquote
}
\edef\def@gls@xdycheckbackslash{%
\noexpand\def\noexpand\@gls@xdycheckbackslash##1\@backslashchar
  ##2\@backslashchar##3\noexpand\null{%
 \noexpand\@gls@tmpb=\noexpand\expandafter
   {\noexpand\@gls@checkedmkidx}%
 \noexpand\toks@={##1}%
 \noexpand\ifx\noexpand\null##2\noexpand\null
  \noexpand\ifx\noexpand\null##3\noexpand\null
   \noexpand\edef\noexpand\@gls@checkedmkidx{%
      \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}%
   \noexpand\def\noexpand\@@gls@xdycheckbackslash{\relax}%
  \noexpand\else
   \noexpand\edef\noexpand\@gls@checkedmkidx{%
     \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
   \@backslashchar\@backslashchar\@backslashchar\@backslashchar}%
 \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
    \noexpand\@gls@xdycheckbackslash##3\noexpand\null}%
  \noexpand\fi
 \noexpand\else
  \noexpand\edef\noexpand\@gls@checkedmkidx{%
    \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
  \@backslashchar\@backslashchar}%
\noexpand\ifx\noexpand\null##3\noexpand\null
  \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
     \noexpand\@gls@xdycheckbackslash##2\@backslashchar
     \@backslashchar\noexpand\null}%
  \noexpand\else
    \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
       \noexpand\@gls@xdycheckbackslash##2\@backslashchar
          ##3\noexpand\null}%
  \noexpand\fi
 \noexpand\fi
 \noexpand\@@gls@xdycheckbackslash
}%
}
\def@gls@xdycheckbackslash
\ifcsundef{hyperlink}%
{%
 \gdef\@glslink#1#2{#2}%
}%
{%
 \gdef\@glslink#1#2{\hyperlink{#1}{#2}}%
}
\newlength\gls@tmplen
\ifcsundef{hypertarget}%
{%
 \gdef\@glstarget#1#2{#2}%
}%
{%
 \gdef\@glstarget#1#2{%
   \settoheight{\gls@tmplen}{#2}%
   \raisebox{\gls@tmplen}{\hypertarget{#1}{}}#2%
 }%
}
\newcommand{\glsdisablehyper}{%
\renewcommand*\@glslink[2]{##2}%
\renewcommand*\@glstarget[2]{##2}}
\newcommand{\glsenablehyper}{%
\renewcommand*\@glslink[2]{\hyperlink{##1}{##2}}%
\renewcommand*\@glstarget[2]{%
 \settoheight{\gls@tmplen}{##2}%
 \raisebox{\gls@tmplen}{\hypertarget{##1}{}}##2}}
\newrobustcmd*{\gls}{\@ifstar\@sgls\@gls}
\newcommand*{\@sgls}[1][]{\@gls[hyper=false,#1]}
\newcommand*{\@gls}[2][]{%
\new@ifnextchar[{\@gls@{#1}{#2}}{\@gls@{#1}{#2}[]}}
\def\@gls@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\def\@gls@link@opts{#1}%
\def\@gls@link@label{#2}%
\ifglsused{#2}%
{%
 \def\@glo@text{%
   \csname gls@\@glo@type @display\endcsname
     {\glsentrytext{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}%
}%
{%
 \def\@glo@text{%
   \csname gls@\@glo@type @displayfirst\endcsname
     {\glsentryfirst{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}%
}%
\ifglsused{#2}{%
 \@gls@link[#1]{#2}{\@glo@text}%
}{%
 \gls@checkisacronymlist\@glo@type
 \ifthenelse{\(\boolean{@glsisacronymlist}\AND
   \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}{%
   \@gls@link[#1,hyper=false]{#2}{\@glo@text}%
 }{%
   \@gls@link[#1]{#2}{\@glo@text}%
 }%
}%
\glsunset{#2}}%
}
\newrobustcmd*{\Gls}{\@ifstar\@sGls\@Gls}
\newcommand*{\@sGls}[1][]{\@Gls[hyper=false,#1]}
\newcommand*{\@Gls}[2][]{%
\new@ifnextchar[{\@Gls@{#1}{#2}}{\@Gls@{#1}{#2}[]}}
\def\@Gls@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\def\@gls@link@opts{#1}%
\def\@gls@link@label{#2}%
\def\glslabel{#2}%
\ifglsused{#2}%
{%
 \protected@edef\@glo@text{%
   \csname gls@\@glo@type @display\endcsname
     {\glsentrytext{#2}}{\glsentrydesc{#2}}%
     {\glsentrysymbol{#2}}{#3}}%
}%
{%
 \protected@edef\@glo@text{%
   \csname gls@\@glo@type @displayfirst\endcsname
     {\glsentryfirst{#2}}{\glsentrydesc{#2}}%
     {\glsentrysymbol{#2}}{#3}}%
}%
\ifglsused{#2}{%
 \@gls@link[#1]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}}%
}{%
 \gls@checkisacronymlist\@glo@type
 \ifthenelse{\(\boolean{@glsisacronymlist}\AND
   \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}{%
   \@gls@link[#1,hyper=false]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}}%
 }{%
   \@gls@link[#1]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}}%
 }%
}%
\glsunset{#2}}%
}
\newrobustcmd*{\GLS}{\@ifstar\@sGLS\@GLS}
\newcommand*{\@sGLS}[1][]{\@GLS[hyper=false,#1]}
\newcommand*{\@GLS}[2][]{%
\new@ifnextchar[{\@GLS@{#1}{#2}}{\@GLS@{#1}{#2}[]}}
\def\@GLS@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\def\@gls@link@opts{#1}%
\def\@gls@link@label{#2}%
\ifglsused{#2}{\def\@glo@text{%
\csname gls@\@glo@type @display\endcsname
{\glsentrytext{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}}{%
\def\@glo@text{%
\csname gls@\@glo@type @displayfirst\endcsname
{\glsentryfirst{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}}%
\ifglsused{#2}{%
 \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text}}%
}{%
 \gls@checkisacronymlist\@glo@type
 \ifthenelse{\(\boolean{@glsisacronymlist}\AND
   \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}{%
   \@gls@link[#1,hyper=false]{#2}{\MakeUppercase{\@glo@text}}%
 }{%
   \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text}}%
 }%
}%
\glsunset{#2}}%
}
\newrobustcmd*{\glspl}{\@ifstar\@sglspl\@glspl}
\newcommand*{\@sglspl}[1][]{\@glspl[hyper=false,#1]}
\newcommand*{\@glspl}[2][]{%
\new@ifnextchar[{\@glspl@{#1}{#2}}{\@glspl@{#1}{#2}[]}}
\def\@glspl@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\def\@gls@link@opts{#1}%
\def\@gls@link@label{#2}%
\ifglsused{#2}%
{%
 \def\@glo@text{%
   \csname gls@\@glo@type @display\endcsname
     {\glsentryplural{#2}}{\glsentrydescplural{#2}}%
     {\glsentrysymbolplural{#2}}{#3}}%
}%
{%
 \def\@glo@text{%
   \csname gls@\@glo@type @displayfirst\endcsname
     {\glsentryfirstplural{#2}}{\glsentrydescplural{#2}}%
     {\glsentrysymbolplural{#2}}{#3}}%
}%
\ifglsused{#2}{%
 \@gls@link[#1]{#2}{\@glo@text}%
}{%
 \gls@checkisacronymlist\@glo@type
 \ifthenelse{\(\boolean{@glsisacronymlist}\AND
   \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}{%
   \@gls@link[#1,hyper=false]{#2}{\@glo@text}%
 }{%
   \@gls@link[#1]{#2}{\@glo@text}%
 }%
}%
\glsunset{#2}}%
}
\newrobustcmd*{\Glspl}{\@ifstar\@sGlspl\@Glspl}
\newcommand*{\@sGlspl}[1][]{\@Glspl[hyper=false,#1]}
\newcommand*{\@Glspl}[2][]{%
\new@ifnextchar[{\@Glspl@{#1}{#2}}{\@Glspl@{#1}{#2}[]}}
\def\@Glspl@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\def\@gls@link@opts{#1}%
\def\@gls@link@label{#2}%
\def\glslabel{#2}%
\ifglsused{#2}%
{%
 \protected@edef\@glo@text{%
   \csname gls@\@glo@type @display\endcsname
     {\glsentryplural{#2}}{\glsentrydescplural{#2}}%
     {\glsentrysymbolplural{#2}}{#3}}%
}%
{%
 \protected@edef\@glo@text{%
   \csname gls@\@glo@type @displayfirst\endcsname
     {\glsentryfirstplural{#2}}{\glsentrydescplural{#2}}%
     {\glsentrysymbolplural{#2}}{#3}}%
}%
\ifglsused{#2}{%
 \@gls@link[#1]{#2}{%
   \expandafter\makefirstuc\expandafter{\@glo@text}}%
}{%
 \gls@checkisacronymlist\@glo@type
 \ifthenelse{\(\boolean{@glsisacronymlist}\AND
   \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}{%
   \@gls@link[#1,hyper=false]{#2}{%
     \expandafter\makefirstuc\expandafter{\@glo@text}}%
 }{%
   \@gls@link[#1]{#2}{%
     \expandafter\makefirstuc\expandafter{\@glo@text}}%
 }%
}%
\glsunset{#2}}%
}
\newrobustcmd*{\GLSpl}{\@ifstar\@sGLSpl\@GLSpl}
\newcommand*{\@sGLSpl}[1][]{\@GLSpl[hyper=false,#1]}
\newcommand*{\@GLSpl}[2][]{%
\new@ifnextchar[{\@GLSpl@{#1}{#2}}{\@GLSpl@{#1}{#2}[]}}
\def\@GLSpl@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\def\@gls@link@opts{#1}%
\def\@gls@link@label{#2}%
\ifglsused{#2}{\def\@glo@text{%
\csname gls@\@glo@type @display\endcsname
{\glsentryplural{#2}}{\glsentrydescplural{#2}}{%
\glsentrysymbolplural{#2}}{#3}}}{%
\def\@glo@text{%
\csname gls@\@glo@type @displayfirst\endcsname
{\glsentryfirstplural{#2}}{\glsentrydescplural{#2}}{%
\glsentrysymbolplural{#2}}{#3}}}%
\ifglsused{#2}{%
 \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text}}%
}{%
 \gls@checkisacronymlist\@glo@type
 \ifthenelse{\(\boolean{@glsisacronymlist}\AND
   \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}{%
   \@gls@link[#1,hyper=false]{#2}{\MakeUppercase{\@glo@text}}%
 }{%
   \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text}}%
 }%
}%
\glsunset{#2}}%
}
\newrobustcmd*{\glsdisp}{\@ifstar\@sglsdisp\@glsdisp}
\newcommand*{\@sglsdisp}[1][]{\@glsdisp[hyper=false,#1]}
\newcommand*{\@glsdisp}[3][]{%
 \glsdoifexists{#2}{%
   \edef\@glo@type{\glsentrytype{#2}}%
   \def\@gls@link@opts{#1}%
   \def\@gls@link@label{#2}%
   \ifglsused{#2}%
   {%
     \def\@glo@text{%
       \csname gls@\@glo@type @display\endcsname
       {#3}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{}}%
   }%
   {%
     \def\@glo@text{%
       \csname gls@\@glo@type @displayfirst\endcsname
       {#3}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{}}%
   }%
   \ifglsused{#2}%
   {%
     \@gls@link[#1]{#2}{\@glo@text}%
   }%
   {%
     \gls@checkisacronymlist\@glo@type
     \ifthenelse{\(\boolean{@glsisacronymlist}\AND
       \boolean{glsacrfootnote}\) \OR \NOT\boolean{glshyperfirst}}%
     {%
       \@gls@link[#1,hyper=false]{#2}{\@glo@text}%
     }%
     {%
       \@gls@link[#1]{#2}{\@glo@text}%
     }%
   }%
   \glsunset{#2}%
 }%
}
\newrobustcmd*{\glstext}{\@ifstar\@sglstext\@glstext}
\newcommand*{\@sglstext}[1][]{\@glstext[hyper=false,#1]}
\newcommand*{\@glstext}[2][]{%
\new@ifnextchar[{\@glstext@{#1}{#2}}{\@glstext@{#1}{#2}[]}}
\def\@glstext@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrytext{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\GLStext}{\@ifstar\@sGLStext\@GLStext}
\newcommand*{\@sGLStext}[1][]{\@GLStext[hyper=false,#1]}
\newcommand*{\@GLStext}[2][]{%
\new@ifnextchar[{\@GLStext@{#1}{#2}}{\@GLStext@{#1}{#2}[]}}
\def\@GLStext@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrytext{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\Glstext}{\@ifstar\@sGlstext\@Glstext}
\newcommand*{\@sGlstext}[1][]{\@Glstext[hyper=false,#1]}
\newcommand*{\@Glstext}[2][]{%
\new@ifnextchar[{\@Glstext@{#1}{#2}}{\@Glstext@{#1}{#2}[]}}
\def\@Glstext@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrytext{#2}}%
\@gls@link[#1]{#2}{%
  \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\glsfirst}{\@ifstar\@sglsfirst\@glsfirst}
\newcommand*{\@sglsfirst}[1][]{\@glsfirst[hyper=false,#1]}
\newcommand*{\@glsfirst}[2][]{%
\new@ifnextchar[{\@glsfirst@{#1}{#2}}{\@glsfirst@{#1}{#2}[]}}
\def\@glsfirst@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryfirst{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glsfirst}{\@ifstar\@sGlsfirst\@Glsfirst}
\newcommand*{\@sGlsfirst}[1][]{\@Glsfirst[hyper=false,#1]}
\newcommand*{\@Glsfirst}[2][]{%
\new@ifnextchar[{\@Glsfirst@{#1}{#2}}{\@Glsfirst@{#1}{#2}[]}}
\def\@Glsfirst@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryfirst{#2}}%
\@gls@link[#1]{#2}{%
  \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSfirst}{\@ifstar\@sGLSfirst\@GLSfirst}
\newcommand*{\@sGLSfirst}[1][]{\@GLSfirst[hyper=false,#1]}
\newcommand*{\@GLSfirst}[2][]{%
\new@ifnextchar[{\@GLSfirst@{#1}{#2}}{\@GLSfirst@{#1}{#2}[]}}
\def\@GLSfirst@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryfirst{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glsplural}{\@ifstar\@sglsplural\@glsplural}
\newcommand*{\@sglsplural}[1][]{\@glsplural[hyper=false,#1]}
\newcommand*{\@glsplural}[2][]{%
\new@ifnextchar[{\@glsplural@{#1}{#2}}{\@glsplural@{#1}{#2}[]}}
\def\@glsplural@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryplural{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glsplural}{\@ifstar\@sGlsplural\@Glsplural}
\newcommand*{\@sGlsplural}[1][]{\@Glsplural[hyper=false,#1]}
\newcommand*{\@Glsplural}[2][]{%
\new@ifnextchar[{\@Glsplural@{#1}{#2}}{\@Glsplural@{#1}{#2}[]}}
\def\@Glsplural@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryplural{#2}}%
\@gls@link[#1]{#2}{%
  \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSplural}{\@ifstar\@sGLSplural\@GLSplural}
\newcommand*{\@sGLSplural}[1][]{\@GLSplural[hyper=false,#1]}
\newcommand*{\@GLSplural}[2][]{%
\new@ifnextchar[{\@GLSplural@{#1}{#2}}{\@GLSplural@{#1}{#2}[]}}
\def\@GLSplural@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryplural{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glsfirstplural}{\@ifstar\@sglsfirstplural\@glsfirstplural}
\newcommand*{\@sglsfirstplural}[1][]{\@glsfirstplural[hyper=false,#1]}
\newcommand*{\@glsfirstplural}[2][]{%
\new@ifnextchar[{\@glsfirstplural@{#1}{#2}}{\@glsfirstplural@{#1}{#2}[]}}
\def\@glsfirstplural@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryfirstplural{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glsfirstplural}{\@ifstar\@sGlsfirstplural\@Glsfirstplural}
\newcommand*{\@sGlsfirstplural}[1][]{\@Glsfirstplural[hyper=false,#1]}
\newcommand*{\@Glsfirstplural}[2][]{%
\new@ifnextchar[{\@Glsfirstplural@{#1}{#2}}{\@Glsfirstplural@{#1}{#2}[]}}
\def\@Glsfirstplural@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryfirstplural{#2}}%
\@gls@link[#1]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSfirstplural}{\@ifstar\@sGLSfirstplural\@GLSfirstplural}
\newcommand*{\@sGLSfirstplural}[1][]{\@GLSfirstplural[hyper=false,#1]}
\newcommand*{\@GLSfirstplural}[2][]{%
\new@ifnextchar[{\@GLSfirstplural@{#1}{#2}}{\@GLSfirstplural@{#1}{#2}[]}}
\def\@GLSfirstplural@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryfirstplural{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glsname}{\@ifstar\@sglsname\@glsname}
\newcommand*{\@sglsname}[1][]{\@glsname[hyper=false,#1]}
\newcommand*{\@glsname}[2][]{%
\new@ifnextchar[{\@glsname@{#1}{#2}}{\@glsname@{#1}{#2}[]}}
\def\@glsname@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryname{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glsname}{\@ifstar\@sGlsname\@Glsname}
\newcommand*{\@sGlsname}[1][]{\@Glsname[hyper=false,#1]}
\newcommand*{\@Glsname}[2][]{%
\new@ifnextchar[{\@Glsname@{#1}{#2}}{\@Glsname@{#1}{#2}[]}}
\def\@Glsname@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryname{#2}}%
\@gls@link[#1]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSname}{\@ifstar\@sGLSname\@GLSname}
\newcommand*{\@sGLSname}[1][]{\@GLSname[hyper=false,#1]}
\newcommand*{\@GLSname}[2][]{%
\new@ifnextchar[{\@GLSname@{#1}{#2}}{\@GLSname@{#1}{#2}[]}}
\def\@GLSname@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryname{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glsdesc}{\@ifstar\@sglsdesc\@glsdesc}
\newcommand*{\@sglsdesc}[1][]{\@glsdesc[hyper=false,#1]}
\newcommand*{\@glsdesc}[2][]{%
\new@ifnextchar[{\@glsdesc@{#1}{#2}}{\@glsdesc@{#1}{#2}[]}}
\def\@glsdesc@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrydesc{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glsdesc}{\@ifstar\@sGlsdesc\@Glsdesc}
\newcommand*{\@sGlsdesc}[1][]{\@Glsdesc[hyper=false,#1]}
\newcommand*{\@Glsdesc}[2][]{%
\new@ifnextchar[{\@Glsdesc@{#1}{#2}}{\@Glsdesc@{#1}{#2}[]}}
\def\@Glsdesc@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrydesc{#2}}%
\@gls@link[#1]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSdesc}{\@ifstar\@sGLSdesc\@GLSdesc}
\newcommand*{\@sGLSdesc}[1][]{\@GLSdesc[hyper=false,#1]}
\newcommand*{\@GLSdesc}[2][]{%
\new@ifnextchar[{\@GLSdesc@{#1}{#2}}{\@GLSdesc@{#1}{#2}[]}}
\def\@GLSdesc@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrydesc{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glsdescplural}{\@ifstar\@sglsdescplural\@glsdescplural}
\newcommand*{\@sglsdescplural}[1][]{\@glsdescplural[hyper=false,#1]}
\newcommand*{\@glsdescplural}[2][]{%
\new@ifnextchar[{\@glsdescplural@{#1}{#2}}{\@glsdescplural@{#1}{#2}[]}}
\def\@glsdescplural@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrydescplural{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glsdescplural}{\@ifstar\@sGlsdescplural\@Glsdescplural}
\newcommand*{\@sGlsdescplural}[1][]{\@Glsdescplural[hyper=false,#1]}
\newcommand*{\@Glsdescplural}[2][]{%
\new@ifnextchar[{\@Glsdescplural@{#1}{#2}}{\@Glsdescplural@{#1}{#2}[]}}
\def\@Glsdescplural@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrydescplural{#2}}%
\@gls@link[#1]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSdescplural}{\@ifstar\@sGLSdescplural\@GLSdescplural}
\newcommand*{\@sGLSdescplural}[1][]{\@GLSdescplural[hyper=false,#1]}
\newcommand*{\@GLSdescplural}[2][]{%
\new@ifnextchar[{\@GLSdescplural@{#1}{#2}}{\@GLSdescplural@{#1}{#2}[]}}
\def\@GLSdescplural@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrydescplural{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glssymbol}{\@ifstar\@sglssymbol\@glssymbol}
\newcommand*{\@sglssymbol}[1][]{\@glssymbol[hyper=false,#1]}
\newcommand*{\@glssymbol}[2][]{%
\new@ifnextchar[{\@glssymbol@{#1}{#2}}{\@glssymbol@{#1}{#2}[]}}
\def\@glssymbol@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrysymbol{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glssymbol}{\@ifstar\@sGlssymbol\@Glssymbol}
\newcommand*{\@sGlssymbol}[1][]{\@Glssymbol[hyper=false,#1]}
\newcommand*{\@Glssymbol}[2][]{%
\new@ifnextchar[{\@Glssymbol@{#1}{#2}}{\@Glssymbol@{#1}{#2}[]}}
\def\@Glssymbol@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrysymbol{#2}}%
\@gls@link[#1]{#2}{%
  \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSsymbol}{\@ifstar\@sGLSsymbol\@GLSsymbol}
\newcommand*{\@sGLSsymbol}[1][]{\@GLSsymbol[hyper=false,#1]}
\newcommand*{\@GLSsymbol}[2][]{%
\new@ifnextchar[{\@GLSsymbol@{#1}{#2}}{\@GLSsymbol@{#1}{#2}[]}}
\def\@GLSsymbol@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrysymbol{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glssymbolplural}{\@ifstar\@sglssymbolplural\@glssymbolplural}
\newcommand*{\@sglssymbolplural}[1][]{\@glssymbolplural[hyper=false,#1]}
\newcommand*{\@glssymbolplural}[2][]{%
\new@ifnextchar[{\@glssymbolplural@{#1}{#2}}{\@glssymbolplural@{#1}{#2}[]}}
\def\@glssymbolplural@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrysymbolplural{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glssymbolplural}{\@ifstar\@sGlssymbolplural\@Glssymbolplural}
\newcommand*{\@sGlssymbolplural}[1][]{\@Glssymbolplural[hyper=false,#1]}
\newcommand*{\@Glssymbolplural}[2][]{%
\new@ifnextchar[{\@Glssymbolplural@{#1}{#2}}{\@Glssymbolplural@{#1}{#2}[]}}
\def\@Glssymbolplural@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrysymbolplural{#2}}%
\@gls@link[#1]{#2}{%
  \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSsymbolplural}{\@ifstar\@sGLSsymbolplural\@GLSsymbolplural}
\newcommand*{\@sGLSsymbolplural}[1][]{\@GLSsymbolplural[hyper=false,#1]}
\newcommand*{\@GLSsymbolplural}[2][]{%
\new@ifnextchar[{\@GLSsymbolplural@{#1}{#2}}{\@GLSsymbolplural@{#1}{#2}[]}}
\def\@GLSsymbolplural@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentrysymbolplural{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glsuseri}{\@ifstar\@sglsuseri\@glsuseri}
\newcommand*{\@sglsuseri}[1][]{\@glsuseri[hyper=false,#1]}
\newcommand*{\@glsuseri}[2][]{%
\new@ifnextchar[{\@glsuseri@{#1}{#2}}{\@glsuseri@{#1}{#2}[]}}
\def\@glsuseri@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuseri{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glsuseri}{\@ifstar\@sGlsuseri\@Glsuseri}
\newcommand*{\@sGlsuseri}[1][]{\@Glsuseri[hyper=false,#1]}
\newcommand*{\@Glsuseri}[2][]{%
\new@ifnextchar[{\@Glsuseri@{#1}{#2}}{\@Glsuseri@{#1}{#2}[]}}
\def\@Glsuseri@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuseri{#2}}%
\@gls@link[#1]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSuseri}{\@ifstar\@sGLSuseri\@GLSuseri}
\newcommand*{\@sGLSuseri}[1][]{\@GLSuseri[hyper=false,#1]}
\newcommand*{\@GLSuseri}[2][]{%
\new@ifnextchar[{\@GLSuseri@{#1}{#2}}{\@GLSuseri@{#1}{#2}[]}}
\def\@GLSuseri@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuseri{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glsuserii}{\@ifstar\@sglsuserii\@glsuserii}
\newcommand*{\@sglsuserii}[1][]{\@glsuserii[hyper=false,#1]}
\newcommand*{\@glsuserii}[2][]{%
\new@ifnextchar[{\@glsuserii@{#1}{#2}}{\@glsuserii@{#1}{#2}[]}}
\def\@glsuserii@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuserii{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glsuserii}{\@ifstar\@sGlsuserii\@Glsuserii}
\newcommand*{\@sGlsuserii}[1][]{\@Glsuserii[hyper=false,#1]}
\newcommand*{\@Glsuserii}[2][]{%
\new@ifnextchar[{\@Glsuserii@{#1}{#2}}{\@Glsuserii@{#1}{#2}[]}}
\def\@Glsuserii@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuserii{#2}}%
\@gls@link[#1]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSuserii}{\@ifstar\@sGLSuserii\@GLSuserii}
\newcommand*{\@sGLSuserii}[1][]{\@GLSuserii[hyper=false,#1]}
\newcommand*{\@GLSuserii}[2][]{%
\new@ifnextchar[{\@GLSuserii@{#1}{#2}}{\@GLSuserii@{#1}{#2}[]}}
\def\@GLSuserii@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuserii{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glsuseriii}{\@ifstar\@sglsuseriii\@glsuseriii}
\newcommand*{\@sglsuseriii}[1][]{\@glsuseriii[hyper=false,#1]}
\newcommand*{\@glsuseriii}[2][]{%
\new@ifnextchar[{\@glsuseriii@{#1}{#2}}{\@glsuseriii@{#1}{#2}[]}}
\def\@glsuseriii@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuseriii{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glsuseriii}{\@ifstar\@sGlsuseriii\@Glsuseriii}
\newcommand*{\@sGlsuseriii}[1][]{\@Glsuseriii[hyper=false,#1]}
\newcommand*{\@Glsuseriii}[2][]{%
\new@ifnextchar[{\@Glsuseriii@{#1}{#2}}{\@Glsuseriii@{#1}{#2}[]}}
\def\@Glsuseriii@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuseriii{#2}}%
\@gls@link[#1]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSuseriii}{\@ifstar\@sGLSuseriii\@GLSuseriii}
\newcommand*{\@sGLSuseriii}[1][]{\@GLSuseriii[hyper=false,#1]}
\newcommand*{\@GLSuseriii}[2][]{%
\new@ifnextchar[{\@GLSuseriii@{#1}{#2}}{\@GLSuseriii@{#1}{#2}[]}}
\def\@GLSuseriii@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuseriii{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glsuseriv}{\@ifstar\@sglsuseriv\@glsuseriv}
\newcommand*{\@sglsuseriv}[1][]{\@glsuseriv[hyper=false,#1]}
\newcommand*{\@glsuseriv}[2][]{%
\new@ifnextchar[{\@glsuseriv@{#1}{#2}}{\@glsuseriv@{#1}{#2}[]}}
\def\@glsuseriv@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuseriv{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glsuseriv}{\@ifstar\@sGlsuseriv\@Glsuseriv}
\newcommand*{\@sGlsuseriv}[1][]{\@Glsuseriv[hyper=false,#1]}
\newcommand*{\@Glsuseriv}[2][]{%
\new@ifnextchar[{\@Glsuseriv@{#1}{#2}}{\@Glsuseriv@{#1}{#2}[]}}
\def\@Glsuseriv@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuseriv{#2}}%
\@gls@link[#1]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSuseriv}{\@ifstar\@sGLSuseriv\@GLSuseriv}
\newcommand*{\@sGLSuseriv}[1][]{\@GLSuseriv[hyper=false,#1]}
\newcommand*{\@GLSuseriv}[2][]{%
\new@ifnextchar[{\@GLSuseriv@{#1}{#2}}{\@GLSuseriv@{#1}{#2}[]}}
\def\@GLSuseriv@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuseriv{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glsuserv}{\@ifstar\@sglsuserv\@glsuserv}
\newcommand*{\@sglsuserv}[1][]{\@glsuserv[hyper=false,#1]}
\newcommand*{\@glsuserv}[2][]{%
\new@ifnextchar[{\@glsuserv@{#1}{#2}}{\@glsuserv@{#1}{#2}[]}}
\def\@glsuserv@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuserv{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glsuserv}{\@ifstar\@sGlsuserv\@Glsuserv}
\newcommand*{\@sGlsuserv}[1][]{\@Glsuserv[hyper=false,#1]}
\newcommand*{\@Glsuserv}[2][]{%
\new@ifnextchar[{\@Glsuserv@{#1}{#2}}{\@Glsuserv@{#1}{#2}[]}}
\def\@Glsuserv@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuserv{#2}}%
\@gls@link[#1]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSuserv}{\@ifstar\@sGLSuserv\@GLSuserv}
\newcommand*{\@sGLSuserv}[1][]{\@GLSuserv[hyper=false,#1]}
\newcommand*{\@GLSuserv}[2][]{%
\new@ifnextchar[{\@GLSuserv@{#1}{#2}}{\@GLSuserv@{#1}{#2}[]}}
\def\@GLSuserv@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuserv{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\glsuservi}{\@ifstar\@sglsuservi\@glsuservi}
\newcommand*{\@sglsuservi}[1][]{\@glsuservi[hyper=false,#1]}
\newcommand*{\@glsuservi}[2][]{%
\new@ifnextchar[{\@glsuservi@{#1}{#2}}{\@glsuservi@{#1}{#2}[]}}
\def\@glsuservi@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuservi{#2}}%
\@gls@link[#1]{#2}{\@glo@text#3}%
}%
}
\newrobustcmd*{\Glsuservi}{\@ifstar\@sGlsuservi\@Glsuservi}
\newcommand*{\@sGlsuservi}[1][]{\@Glsuservi[hyper=false,#1]}
\newcommand*{\@Glsuservi}[2][]{%
\new@ifnextchar[{\@Glsuservi@{#1}{#2}}{\@Glsuservi@{#1}{#2}[]}}
\def\@Glsuservi@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuservi{#2}}%
\@gls@link[#1]{#2}{%
 \expandafter\makefirstuc\expandafter{\@glo@text}#3}%
}%
}
\newrobustcmd*{\GLSuservi}{\@ifstar\@sGLSuservi\@GLSuservi}
\newcommand*{\@sGLSuservi}[1][]{\@GLSuservi[hyper=false,#1]}
\newcommand*{\@GLSuservi}[2][]{%
\new@ifnextchar[{\@GLSuservi@{#1}{#2}}{\@GLSuservi@{#1}{#2}[]}}
\def\@GLSuservi@#1#2[#3]{%
\glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}%
\protected@edef\@glo@text{\glsentryuservi{#2}}%
\@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
}%
}
\newrobustcmd*{\acrshort}{\@ifstar\s@acrshort\ns@acrshort}
\newcommand*{\s@acrshort}[2][]{%
 \new@ifnextchar[{\@acrshort{hyper=false,#1}{#2}}%
                 {\@acrshort{hyper=false,#1}{#2}[]}%
}
\newcommand*{\ns@acrshort}[2][]{%
 \new@ifnextchar[{\@acrshort{#1}{#2}}{\@acrshort{#1}{#2}[]}%
}
\def\@acrshort#1#2[#3]{%
 \glsdoifexists{#2}%
 {%
   \edef\@glo@type{\glsentrytype{#2}}%
   \protected@edef\@glo@text{\glsentryshort{#2}}%
   \@gls@link[#1]{#2}{\acronymfont{\@glo@text}#3}%
 }%
}
\newrobustcmd*{\Acrshort}{\@ifstar\s@Acrshort\ns@Acrshort}
\newcommand*{\s@Acrshort}[2][]{%
 \new@ifnextchar[{\@Acrshort{hyper=false,#1}{#2}}%
                 {\@Acrshort{hyper=false,#1}{#2}[]}%
}
\newcommand*{\ns@Acrshort}[2][]{%
 \new@ifnextchar[{\@Acrshort{#1}{#2}}{\@Acrshort{#1}{#2}[]}%
}
\def\@Acrshort#1#2[#3]{%
 \glsdoifexists{#2}%
 {%
   \edef\@glo@type{\glsentrytype{#2}}%
   \protected@edef\@glo@text{\glsentryshort{#2}}%
   \@gls@link[#1]{#2}%
   {%
     \acronymfont{\expandafter\makefirstuc\expandafter{\@glo@text}}#3%
   }%
 }%
}
\newrobustcmd*{\ACRshort}{\@ifstar\s@ACRshort\ns@ACRshort}
\newcommand*{\s@ACRshort}[2][]{%
 \new@ifnextchar[{\@ACRshort{hyper=false,#1}{#2}}%
                 {\@ACRshort{hyper=false,#1}{#2}[]}%
}
\newcommand*{\ns@ACRshort}[2][]{%
 \new@ifnextchar[{\@ACRshort{#1}{#2}}{\@ACRshort{#1}{#2}[]}%
}
\def\@ACRshort#1#2[#3]{%
 \glsdoifexists{#2}%
 {%
   \edef\@glo@type{\glsentrytype{#2}}%
   \protected@edef\@glo@text{\glsentryshort{#2}}%
   \@gls@link[#1]{#2}{\acronymfont{\MakeUppercase{\@glo@text#3}}}%
 }%
}
\newrobustcmd*{\acrshortpl}{\@ifstar\s@acrshortpl\ns@acrshortpl}
\newcommand*{\s@acrshortpl}[2][]{%
 \new@ifnextchar[{\@acrshortpl{hyper=false,#1}{#2}}%
                 {\@acrshortpl{hyper=false,#1}{#2}[]}%
}
\newcommand*{\ns@acrshortpl}[2][]{%
 \new@ifnextchar[{\@acrshortpl{#1}{#2}}{\@acrshortpl{#1}{#2}[]}%
}
\def\@acrshortpl#1#2[#3]{%
 \glsdoifexists{#2}%
 {%
   \edef\@glo@type{\glsentrytype{#2}}%
   \protected@edef\@glo@text{\glsentryshortpl{#2}}%
   \@gls@link[#1]{#2}{\acronymfont{\@glo@text}#3}%
 }%
}
\newrobustcmd*{\Acrshortpl}{\@ifstar\s@Acrshortpl\ns@Acrshortpl}
\newcommand*{\s@Acrshortpl}[2][]{%
 \new@ifnextchar[{\@Acrshortpl{hyper=false,#1}{#2}}%
                 {\@Acrshortpl{hyper=false,#1}{#2}[]}%
}
\newcommand*{\ns@Acrshortpl}[2][]{%
 \new@ifnextchar[{\@Acrshortpl{#1}{#2}}{\@Acrshortpl{#1}{#2}[]}%
}
\def\@Acrshortpl#1#2[#3]{%
 \glsdoifexists{#2}%
 {%
   \edef\@glo@type{\glsentrytype{#2}}%
   \protected@edef\@glo@text{\glsentryshortpl{#2}}%
   \@gls@link[#1]{#2}%
   {%
     \acronymfont{\expandafter\makefirstuc\expandafter{\@glo@text}}#3%
   }%
 }%
}
\newrobustcmd*{\ACRshortpl}{\@ifstar\s@ACRshortpl\ns@ACRshortpl}
\newcommand*{\s@ACRshortpl}[2][]{%
 \new@ifnextchar[{\@ACRshortpl{hyper=false,#1}{#2}}%
                 {\@ACRshortpl{hyper=false,#1}{#2}[]}%
}
\newcommand*{\ns@ACRshortpl}[2][]{%
 \new@ifnextchar[{\@ACRshortpl{#1}{#2}}{\@ACRshortpl{#1}{#2}[]}%
}
\def\@ACRshortpl#1#2[#3]{%
 \glsdoifexists{#2}%
 {%
   \edef\@glo@type{\glsentrytype{#2}}%
   \protected@edef\@glo@text{\glsentryshortpl{#2}}%
   \@gls@link[#1]{#2}{\acronymfont{\MakeUppercase{\@glo@text#3}}}%
 }%
}
\newrobustcmd*{\acrlong}{\@ifstar\s@acrlong\ns@acrlong}
\newcommand*{\s@acrlong}[2][]{%
 \new@ifnextchar[{\@acrlong{hyper=false,#1}{#2}}%
                 {\@acrlong{hyper=false,#1}{#2}[]}%
}
\newcommand*{\ns@acrlong}[2][]{%
 \new@ifnextchar[{\@acrlong{#1}{#2}}{\@acrlong{#1}{#2}[]}%
}
\def\@acrlong#1#2[#3]{%
 \glsdoifexists{#2}%
 {%
   \edef\@glo@type{\glsentrytype{#2}}%
   \protected@edef\@glo@text{\glsentrylong{#2}}%
   \@gls@link[#1]{#2}{\@glo@text#3}%
 }%
}
\newrobustcmd*{\Acrlong}{\@ifstar\s@Acrlong\ns@Acrlong}
\newcommand*{\s@Acrlong}[2][]{%
 \new@ifnextchar[{\@Acrlong{hyper=false,#1}{#2}}%
                 {\@Acrlong{hyper=false,#1}{#2}[]}%
}
\newcommand*{\ns@Acrlong}[2][]{%
 \new@ifnextchar[{\@Acrlong{#1}{#2}}{\@Acrlong{#1}{#2}[]}%
}
\def\@Acrlong#1#2[#3]{%
 \glsdoifexists{#2}%
 {%
   \edef\@glo@type{\glsentrytype{#2}}%
   \protected@edef\@glo@text{\glsentrylong{#2}}%
   \@gls@link[#1]{#2}%
   {%
     \expandafter\makefirstuc\expandafter{\@glo@text}#3%
   }%
 }%
}
\newrobustcmd*{\ACRlong}{\@ifstar\s@ACRlong\ns@ACRlong}
\newcommand*{\s@ACRlong}[2][]{%
 \new@ifnextchar[{\@ACRlong{hyper=false,#1}{#2}}%
                 {\@ACRlong{hyper=false,#1}{#2}[]}%
}
\newcommand*{\ns@ACRlong}[2][]{%
 \new@ifnextchar[{\@ACRlong{#1}{#2}}{\@ACRlong{#1}{#2}[]}%
}
\def\@ACRlong#1#2[#3]{%
 \glsdoifexists{#2}%
 {%
   \edef\@glo@type{\glsentrytype{#2}}%
   \protected@edef\@glo@text{\glsentrylong{#2}}%
   \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
 }%
}
\newrobustcmd*{\acrlongpl}{\@ifstar\s@acrlongpl\ns@acrlongpl}
\newcommand*{\s@acrlongpl}[2][]{%
 \new@ifnextchar[{\@acrlongpl{hyper=false,#1}{#2}}%
                 {\@acrlongpl{hyper=false,#1}{#2}[]}%
}
\newcommand*{\ns@acrlongpl}[2][]{%
 \new@ifnextchar[{\@acrlongpl{#1}{#2}}{\@acrlongpl{#1}{#2}[]}%
}
\def\@acrlongpl#1#2[#3]{%
 \glsdoifexists{#2}%
 {%
   \edef\@glo@type{\glsentrytype{#2}}%
   \protected@edef\@glo@text{\glsentrylongpl{#2}}%
   \@gls@link[#1]{#2}{\@glo@text#3}%
 }%
}
\newrobustcmd*{\Acrlongpl}{\@ifstar\s@Acrlongpl\ns@Acrlongpl}
\newcommand*{\s@Acrlongpl}[2][]{%
 \new@ifnextchar[{\@Acrlongpl{hyper=false#1}{#2}}%
                 {\@Acrlongpl{hyper=false,#1}{#2}[]}%
}
\newcommand*{\ns@Acrlongpl}[2][]{%
 \new@ifnextchar[{\@Acrlongpl{#1}{#2}}{\@Acrlongpl{#1}{#2}[]}%
}
\def\@Acrlongpl#1#2[#3]{%
 \glsdoifexists{#2}%
 {%
   \edef\@glo@type{\glsentrytype{#2}}%
   \protected@edef\@glo@text{\glsentrylongpl{#2}}%
   \@gls@link[#1]{#2}%
   {%
     \expandafter\makefirstuc\expandafter{\@glo@text}#3%
   }%
 }%
}
\newrobustcmd*{\ACRlongpl}{\@ifstar\s@ACRlongpl\ns@ACRlongpl}
\newcommand*{\s@ACRlongpl}[2][]{%
 \new@ifnextchar[{\@ACRlongpl{hyper=false,#1}{#2}}%
                 {\@ACRlongpl{hyper=false,#1}{#2}[]}%
}
\newcommand*{\ns@ACRlongpl}[2][]{%
 \new@ifnextchar[{\@ACRlongpl{#1}{#2}}{\@ACRlongpl{#1}{#2}[]}%
}
\def\@ACRlongpl#1#2[#3]{%
 \glsdoifexists{#2}%
 {%
   \edef\@glo@type{\glsentrytype{#2}}%
   \protected@edef\@glo@text{\glsentrylongpl{#2}}%
   \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text#3}}%
 }%
}
\newcommand*{\glsentryname}[1]{\csname glo@#1@name\endcsname}
\newcommand*{\Glsentryname}[1]{%
\protected@edef\@glo@text{\csname glo@#1@name\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentrydesc}[1]{\csname glo@#1@desc\endcsname}
\newcommand*{\Glsentrydesc}[1]{%
\protected@edef\@glo@text{\csname glo@#1@desc\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentrydescplural}[1]{%
\csname glo@#1@descplural\endcsname}
\newcommand*{\Glsentrydescplural}[1]{%
\protected@edef\@glo@text{\csname glo@#1@descplural\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentrytext}[1]{\csname glo@#1@text\endcsname}
\newcommand*{\Glsentrytext}[1]{%
\protected@edef\@glo@text{\csname glo@#1@text\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentryplural}[1]{\csname glo@#1@plural\endcsname}
\newcommand*{\Glsentryplural}[1]{%
\protected@edef\@glo@text{\csname glo@#1@plural\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentrysymbol}[1]{\csname glo@#1@symbol\endcsname}
\newcommand*{\Glsentrysymbol}[1]{%
\protected@edef\@glo@text{\csname glo@#1@symbol\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentrysymbolplural}[1]{%
\csname glo@#1@symbolplural\endcsname}
\newcommand*{\Glsentrysymbolplural}[1]{%
\protected@edef\@glo@text{\csname glo@#1@symbolplural\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentryfirst}[1]{\csname glo@#1@first\endcsname}
\newcommand*{\Glsentryfirst}[1]{%
\protected@edef\@glo@text{\csname glo@#1@first\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentryfirstplural}[1]{%
\csname glo@#1@firstpl\endcsname}
\newcommand*{\Glsentryfirstplural}[1]{%
\protected@edef\@glo@text{\csname glo@#1@firstpl\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentrytype}[1]{\csname glo@#1@type\endcsname}
\newcommand*{\glsentrysort}[1]{\csname glo@#1@sort\endcsname}
\newcommand*{\glsentryuseri}[1]{\csname glo@#1@useri\endcsname}
\newcommand*{\Glsentryuseri}[1]{%
\protected@edef\@glo@text{\csname glo@#1@useri\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentryuserii}[1]{\csname glo@#1@userii\endcsname}
\newcommand*{\Glsentryuserii}[1]{%
\protected@edef\@glo@text{\csname glo@#1@userii\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentryuseriii}[1]{\csname glo@#1@useriii\endcsname}
\newcommand*{\Glsentryuseriii}[1]{%
\protected@edef\@glo@text{\csname glo@#1@useriii\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentryuseriv}[1]{\csname glo@#1@useriv\endcsname}
\newcommand*{\Glsentryuseriv}[1]{%
\protected@edef\@glo@text{\csname glo@#1@useriv\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentryuserv}[1]{\csname glo@#1@userv\endcsname}
\newcommand*{\Glsentryuserv}[1]{%
\protected@edef\@glo@text{\csname glo@#1@userv\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentryuservi}[1]{\csname glo@#1@uservi\endcsname}
\newcommand*{\Glsentryuservi}[1]{%
\protected@edef\@glo@text{\csname glo@#1@uservi\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentryshort}[1]{\csname glo@#1@short\endcsname}
\newcommand*{\Glsentryshort}[1]{%
\protected@edef\@glo@text{\csname glo@#1@short\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentryshortpl}[1]{\csname glo@#1@shortpl\endcsname}
\newcommand*{\Glsentryshortpl}[1]{%
\protected@edef\@glo@text{\csname glo@#1@shortpl\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentrylong}[1]{\csname glo@#1@long\endcsname}
\newcommand*{\Glsentrylong}[1]{%
\protected@edef\@glo@text{\csname glo@#1@long\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentrylongpl}[1]{\csname glo@#1@longpl\endcsname}
\newcommand*{\Glsentrylongpl}[1]{%
\protected@edef\@glo@text{\csname glo@#1@longpl\endcsname}%
\expandafter\makefirstuc\expandafter{\@glo@text}}
\newcommand*{\glsentryfull}[1]{%
 \glsentrylong{#1}\space(\glsentryshort{#1})%
}
\newcommand*{\Glsentryfull}[1]{%
 \Glsentrylong{#1}\space(\glsentryshortpl{#1})%
}
\newcommand*{\glsentryfullpl}[1]{%
 \glsentrylongpl{#1}\space(\glsentryshort{#1})%
}
\newcommand*{\Glsentryfullpl}[1]{%
 \Glsentrylongpl{#1}\space(\glsentryshortpl{#1})%
}
\newcommand*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{%
\def\@glo@label{#2}%
\@glslink{glo:#2}{#1}}
\define@key{glossadd}{counter}{\def\@gls@counter{#1}}
\define@key{glossadd}{format}{\def\@glsnumberformat{#1}}
\define@key{glossadd}{types}{\def\@glo@type{#1}}
\newrobustcmd*{\glsadd}[2][]{%
 \glsdoifexists{#2}%
 {%
   \def\@glsnumberformat{glsnumberformat}%
   \edef\@gls@counter{\csname glo@#2@counter\endcsname}%
   \setkeys{glossadd}{#1}%
   \@gls@saveentrycounter
   \@do@wrglossary{#2}%
 }%
}
\newrobustcmd*{\glsaddall}[1][]{%
\edef\@glo@type{\@glo@types}%
\setkeys{glossadd}{#1}%
\forallglsentries[\@glo@type]{\@glo@entry}{%
\glsadd[#1]{\@glo@entry}}%
}
\edef\glsopenbrace{\expandafter\@gobble\string\{}
\edef\glsclosebrace{\expandafter\@gobble\string\}}
\edef\glsquote#1{\string"#1\string"}
\ifglsxindy
 \newcommand*{\@glsfirstletter}{A}
\fi
\ifglsxindy
 \newcommand*{\GlsSetXdyFirstLetterAfterDigits}[1]{%
   \renewcommand*{\@glsfirstletter}{#1}}
\else
 \newcommand*{\GlsSetXdyFirstLetterAfterDigits}[1]{%
   \glsnoxindywarning\GlsSetXdyFirstLetterAfterDigits}
\fi
\newcommand*{\@glsminrange}{2}
\ifglsxindy
 \newcommand*{\GlsSetXdyMinRangeLength}[1]{%
   \renewcommand*{\@glsminrange}{#1}}
\else
 \newcommand*{\GlsSetXdyMinRangeLength}[1]{%
   \glsnoxindywarning\GlsSetXdyMinRangeLength}
\fi

\ifglsxindy
 \def\writeist{%
   \@gls@addpredefinedattributes
   \openout\glswrite=\istfilename
   \write\glswrite{;; xindy style file created by the glossaries
       package}%
   \write\glswrite{;; for document '\jobname' on
      \the\year-\the\month-\the\day}%
   \write\glswrite{^^J; required styles^^J}
   \@for\@xdystyle:=\@xdyrequiredstyles\do{%
        \ifx\@xdystyle\@empty
        \else
          \protected@write\glswrite{}{(require
            \string"\@xdystyle.xdy\string")}%
        \fi
   }%
   \write\glswrite{^^J%
      ; list of allowed attributes (number formats)^^J}%
   \write\glswrite{(define-attributes ((\@xdyattributes)))}%
   \write\glswrite{^^J; user defined alphabets^^J}%
   \write\glswrite{\@xdyuseralphabets}%
   \write\glswrite{^^J; location class definitions^^J}%
   \@for\@gls@classI:=\@gls@xdy@locationlist\do{%
     \protected@write\glswrite{}{(define-location-class
       \string"\@gls@classI\string"^^J\space\space\space
       (
         :sep "{}{"
         \csname @gls@xdy@Lclass@\@gls@classI\endcsname\space
         :sep "}"
       )
       ^^J\space\space\space
       :min-range-length \@glsminrange^^J%
       )
     }%
     {%
       \@for\@gls@classII:=\@gls@xdy@locationlist\do{%
         \protected@write\glswrite{}{(define-location-class
           \string"\@gls@classII-\@gls@classI\string"
             ^^J\space\space\space
           (
             :sep "{"
             \csname @gls@xdy@Lclass@\@gls@classII\endcsname\space
             :sep "}{"
             \csname @gls@xdy@Lclass@\@gls@classI\endcsname\space
             :sep "}"
           )
           ^^J\space\space\space
           :min-range-length \@glsminrange^^J%
           )
         }%
       }%
     }%
   }%
   \write\glswrite{^^J; user defined location classes}%
   \write\glswrite{\@xdyuserlocationdefs}%
   \write\glswrite{^^J; define cross-reference class^^J}%
   \write\glswrite{(define-crossref-class \string"see\string"
       :unverified )}%
   \write\glswrite{(markup-crossref-list
        :class \string"see\string"^^J\space\space\space
        :open \string"\string\glsseeformat\string"
        :close \string"{}\string")}%
   \write\glswrite{^^J; define the order of the location classes}%
   \write\glswrite{(define-location-class-order
        (\@xdylocationclassorder))}%
   \write\glswrite{^^J; define the glossary markup^^J}%
   \write\glswrite{(markup-index^^J\space\space\space
       :open \string"\string
       \glossarysection[\string\glossarytoctitle]{\string
       \glossarytitle}\string\glossarypreamble}%
   \@for\@this@ctr:=\@xdycounters\do{%
     {%
       \@for\@this@attr:=\@xdyattributelist\do{%
          \protected@write\glswrite{}{\string\providecommand*%
            \expandafter\string
            \csname glsX\@this@ctr X\@this@attr\endcsname[2]%
            {%
               \string\setentrycounter
                 [\expandafter\@gobble\string\#1]{\@this@ctr}%
               \expandafter\string
               \csname\@this@attr\endcsname
                 {\expandafter\@gobble\string\#2}%
            }%
          }%
       }%
     }%
   }%
   \write\glswrite{%
       \string\begin
       {theglossary}\string\glossaryheader\string~n\string" ^^J\space
       \space\space:close \string"\expandafter\@gobble
         \string\%\string~n\string
         \end{theglossary}\string\glossarypostamble
         \string~n\string" ^^J\space\space\space
       :tree)}%
   \write\glswrite{(markup-letter-group-list
       :sep \string"\string\glsgroupskip\string~n\string")}%
   \write\glswrite{(markup-indexentry
       :open \string"\string\relax \string\glsresetentrylist
          \string~n\string")}%
   \write\glswrite{(markup-locclass-list :open
      \string"\glsopenbrace\string\glossaryentrynumbers
        \glsopenbrace\string\relax\space \string"^^J\space\space\space
      :sep \string", \string"
      :close \string"\glsclosebrace\glsclosebrace\string")}%
   \write\glswrite{(markup-locref-list
      :sep \string"\string\delimN\space\string")}%
   \write\glswrite{(markup-range
      :sep \string"\string\delimR\space\string")}%
   \@onelevel@sanitize\gls@suffixF
   \@onelevel@sanitize\gls@suffixFF
   \ifx\gls@suffixF\@empty
   \else
     \write\glswrite{(markup-range
       :close "\gls@suffixF" :length 1 :ignore-end)}%
   \fi
   \ifx\gls@suffixFF\@empty
   \else
     \write\glswrite{(markup-range
       :close "\gls@suffixFF" :length 2 :ignore-end)}%
   \fi
   \write\glswrite{^^J; define format to use for locations^^J}%
   \write\glswrite{\@xdylocref}%
   \write\glswrite{^^J; define letter group list format^^J}%
   \write\glswrite{(markup-letter-group-list
      :sep \string"\string\glsgroupskip\string~n\string")}%
   \write\glswrite{^^J; letter group headings^^J}%
   \write\glswrite{(markup-letter-group
       :open-head \string"\string\glsgroupheading
       \glsopenbrace\string"^^J\space\space\space
       :close-head \string"\glsclosebrace\string")}%
   \write\glswrite{^^J; additional letter groups^^J}%
   \write\glswrite{\@xdylettergroups}%
   \write\glswrite{^^J; additional sort rules^^J}
   \write\glswrite{\@xdysortrules}%
   \closeout\glswrite
   \let\writeist\relax
 }
\else
 \edef\@gls@actualchar{\string?}
 \edef\@gls@encapchar{\string|}
 \edef\@gls@levelchar{\string!}
 \edef\@gls@quotechar{\string"}
 \def\writeist{\relax
  \openout\glswrite=\istfilename
   \write\glswrite{\expandafter\@gobble\string\% makeindex style file
     created by the glossaries package}
   \write\glswrite{\expandafter\@gobble\string\% for document
     '\jobname' on \the\year-\the\month-\the\day}
   \write\glswrite{actual '\@gls@actualchar'}
   \write\glswrite{encap '\@gls@encapchar'}
   \write\glswrite{level '\@gls@levelchar'}
   \write\glswrite{quote '\@gls@quotechar'}
   \write\glswrite{keyword \string"\string\\glossaryentry\string"}
   \write\glswrite{preamble \string"\string\\glossarysection[\string
     \\glossarytoctitle]{\string\\glossarytitle}\string
     \\glossarypreamble\string\n\string\\begin{theglossary}\string
     \\glossaryheader\string\n\string"}
   \write\glswrite{postamble \string"\string\%\string\n\string
     \\end{theglossary}\string\\glossarypostamble\string\n
     \string"}
   \write\glswrite{group_skip \string"\string\\glsgroupskip\string\n
     \string"}
   \write\glswrite{item_0 \string"\string\%\string\n\string"}
   \write\glswrite{item_1 \string"\string\%\string\n\string"}
   \write\glswrite{item_2 \string"\string\%\string\n\string"}
   \write\glswrite{item_01 \string"\string\%\string\n\string"}
   \write\glswrite{item_x1
     \string"\string\\relax \string\\glsresetentrylist\string\n
     \string"}
   \write\glswrite{item_12 \string"\string\%\string\n\string"}
   \write\glswrite{item_x2
     \string"\string\\relax \string\\glsresetentrylist\string\n
     \string"}
   \write\glswrite{delim_0 \string"\string\{\string
     \\glossaryentrynumbers\string\{\string\\relax \string"}
   \write\glswrite{delim_1 \string"\string\{\string
     \\glossaryentrynumbers\string\{\string\\relax \string"}
   \write\glswrite{delim_2 \string"\string\{\string
     \\glossaryentrynumbers\string\{\string\\relax \string"}
   \write\glswrite{delim_t \string"\string\}\string\}\string"}
   \write\glswrite{delim_n \string"\string\\delimN \string"}
   \write\glswrite{delim_r \string"\string\\delimR \string"}
   \write\glswrite{headings_flag 1}
   \write\glswrite{heading_prefix
      \string"\string\\glsgroupheading\string\{\string"}
   \write\glswrite{heading_suffix
      \string"\string\}\string\\relax
      \string\\glsresetentrylist \string"}
   \write\glswrite{symhead_positive \string"glssymbols\string"}
   \write\glswrite{numhead_positive \string"glsnumbers\string"}
   \write\glswrite{page_compositor \string"\glscompositor\string"}
   \@gls@escbsdq\gls@suffixF
   \@gls@escbsdq\gls@suffixFF
   \ifx\gls@suffixF\@empty
   \else
     \write\glswrite{suffix_2p \string"\gls@suffixF\string"}
   \fi
   \ifx\gls@suffixFF\@empty
   \else
     \write\glswrite{suffix_3p \string"\gls@suffixFF\string"}
   \fi
   \closeout\glswrite
   \let\writeist\relax
 }
\fi
\newcommand{\noist}{%
 \@gls@addpredefinedattributes
 \let\writeist\relax
}
\newcommand*{\@makeglossary}[1]{%
 \ifglossaryexists{#1}%
 {%
   \ifglssavewrites
     \expandafter\newtoks\csname glo@#1@filetok\endcsname
   \else
     \expandafter\newwrite\csname glo@#1@file\endcsname
     \expandafter\@glsopenfile\csname glo@#1@file\endcsname{#1}%
   \fi
   \@gls@renewglossary
   \writeist
 }%
 {%
   \PackageError{glossaries}%
   {Glossary type `#1' not defined}%
   {New glossaries must be defined before using \string\makeglossary}%
 }%
}
\newcommand*{\@glsopenfile}[2]{%
 \immediate\openout#1=\jobname.\csname @glotype@#2@out\endcsname
 \PackageInfo{glossaries}{Writing glossary file
    \jobname.\csname @glotype@#2@out\endcsname}%
}
\newcommand*{\warn@nomakeglossaries}{%
 \GlossariesWarningNoLine{\string\makeglossaries\space
 hasn't been used,^^Jthe glossaries will not be updated}%
}
\newcommand*{\makeglossaries}{%
 \protected@write\@auxout{}{\string\@istfilename{\istfilename}}%
 \protected@write\@auxout{}{\string\@glsorder{\glsorder}}
 \@for\@glo@type:=\@glo@types\do{%
   \ifthenelse{\equal{\@glo@type}{}}{}{%
   \@makeglossary{\@glo@type}}%
 }%
 \renewcommand*\newglossary[4][]{%
 \PackageError{glossaries}{New glossaries
 must be created before \string\makeglossaries}{You need
 to move \string\makeglossaries\space after all your
 \string\newglossary\space commands}}%
 \let\@makeglossary\relax
 \let\makeglossary\relax
 \let\makeglossaries\relax
 \@disable@onlypremakeg
 \let\warn@nomakeglossaries\relax
}
\let\makeglossary\makeglossaries
\AtEndDocument{%
 \warn@nomakeglossaries
 \warn@noprintglossary
}
\newwrite\glswrite
\def\istfile{\glswrite}
\AtEndDocument{%
 \glswritefiles
}
\ifglssavewrites
 \newcommand*{\glswritefiles}{%
   \forallglossaries{\@glo@type}{%
      \edef\gls@tmp{\expandafter\the\csname glo@\@glo@type
@filetok\endcsname}%
      \ifx\gls@tmp\@empty
         \ifx\@glo@type\glsdefaulttype
           \GlossariesWarningNoLine{Glossary `\@glo@type' has no
              entries.^^JRemember to use package option `nomain' if
you
              don't want to^^Juse the main glossary}%
         \else
           \GlossariesWarningNoLine{Glossary `\@glo@type' has no
              entries}%
         \fi
      \else
         \@glsopenfile{\glswrite}{\@glo@type}%
         \immediate\write\glswrite{%
            \expandafter\the\csname glo@\@glo@type
@filetok\endcsname}%
         \immediate\closeout\glswrite
      \fi
   }%
 }
\else
 \let\glswritefiles\relax
\fi
\renewcommand*{\glossary}[1][\glsdefaulttype]{%
\@glossary[#1]}
\def\@glossary[#1]{\index}
\newcommand{\@gls@renewglossary}{%
 \gdef\@glossary[##1]{\@bsphack\begingroup\@wrglossary{##1}}%
 \let\@gls@renewglossary\@empty
}
\renewcommand*{\@wrglossary}[2]{%
 \ifglssavewrites
   \protected@edef\@gls@tmp{\the\csname glo@#1@filetok\endcsname#2}%
   \expandafter\global\expandafter\csname glo@#1@filetok\endcsname
      \expandafter{\@gls@tmp^^J}%
 \else
   \expandafter\protected@write\csname glo@#1@file\endcsname{}{#2}%
 \fi
 \endgroup\@esphack
}
\newcommand{\@do@wrglossary}[1]{%
 \protected@edef\@glslocref{\theglsentrycounter}%
 \@gls@checkmkidxchars\@glslocref
 \expandafter\ifx\theHglsentrycounter\theglsentrycounter
   \def\@glo@counterprefix{}%
 \else
   \protected@edef\@glsHlocref{\theHglsentrycounter}%
   \@gls@checkmkidxchars\@glsHlocref
   \edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
     {\@glslocref}{\@glsHlocref}%
   }%
   \@do@gls@getcounterprefix
 \fi
\ifglsxindy
 \expandafter\@glo@check@mkidxrangechar\@glsnumberformat\@nil
 \def\@glo@range{}%
 \expandafter\if\@glo@prefix(\relax
   \def\@glo@range{:open-range}%
 \else
   \expandafter\if\@glo@prefix)\relax
     \def\@glo@range{:close-range}%
   \fi
 \fi
 \glossary[\csname glo@#1@type\endcsname]{%
 (indexentry :tkey (\csname glo@#1@index\endcsname)
   :locref \string"{\@glo@counterprefix}{\@glslocref}\string" %
   :attr \string"\@gls@counter\@glo@suffix\string"
   \@glo@range
 )
 }%
\else
 \@set@glo@numformat{\@glo@numfmt}{\@gls@counter}{\@glsnumberformat}%
   {\@glo@counterprefix}%
 \glossary[\csname glo@#1@type\endcsname]{%
 \string\glossaryentry{\csname glo@#1@index\endcsname
   \@gls@encapchar\@glo@numfmt}{\theglsentrycounter}}%
\fi
}
\newcommand*\@gls@getcounterprefix[2]{%
 \edef\@gls@thisloc{#1}\edef\@gls@thisHloc{#2}%
 \ifx\@gls@thisloc\@gls@thisHloc
   \def\@glo@counterprefix{}%
 \else
   \def\@gls@get@counterprefix##1.#1##2\end@getprefix{%
     \def\@glo@tmp{##2}%
     \ifx\@glo@tmp\@empty
       \def\@glo@counterprefix{}%
     \else
       \def\@glo@counterprefix{##1}%
     \fi
   }%
   \@gls@get@counterprefix#2.#1\end@getprefix
 \fi
}
\newcommand{\@do@seeglossary}[2]{%
\def\@gls@xref{#2}%
\@onelevel@sanitize\@gls@xref
\@gls@checkmkidxchars\@gls@xref
\ifglsxindy
 \glossary[\csname glo@#1@type\endcsname]{%
   (indexentry
     :tkey (\csname glo@#1@index\endcsname)
     :xref (\string"\@gls@xref\string")
     :attr \string"see\string"
   )
 }%
\else
 \glossary[\csname glo@#1@type\endcsname]{%
 \string\glossaryentry{\csname glo@#1@index\endcsname
 \@gls@encapchar glsseeformat\@gls@xref}{Z}}%
\fi
}
\def\@gls@fixbraces#1#2#3\@nil{%
 \ifx#2[\relax
   \def#1{#2#3}%
 \else
   \def#1{{#2#3}}%
 \fi
}
\newcommand*{\glssee}[3][\seename]{%
 \@do@seeglossary{#2}{[#1]{#3}}}
\newcommand*{\@glssee}[3][\seename]{%
 \glssee[#1]{#3}{#2}}
\newcommand*{\glsseeformat}[3][\seename]{\emph{#1} \glsseelist{#2}}
\newcommand*{\glsseelist}[1]{%
 \let\@gls@dolast\relax
 \let\@gls@donext\relax
 \@for\@gls@thislabel:=#1\do{%
   \ifx\@xfor@nextelement\@nnil
     \@gls@dolast
   \else
     \@gls@donext
   \fi
   \glsseeitem{\@gls@thislabel}%
   \let\@gls@dolast\glsseelastsep
   \let\@gls@donext\glsseesep
 }%
}
\newcommand*{\glsseelastsep}{\space\andname\space}
\newcommand*{\glsseesep}{, }
\newcommand*{\glsseeitem}[1]{\glshyperlink[\glsseeitemformat{#1}]{#1}}
\newcommand*{\glsseeitemformat}[1]{\glsentrytext{#1}}
\def\warn@noprintglossary{\GlossariesWarningNoLine{No
 \string\printglossary\space or \string\printglossaries\space
 found.^^JThis document will not have a glossary}}
\ifcsundef{printglossary}{}%
{%
 \GlossariesWarning{Overriding \string\printglossary}%
 \undef\printglossary
}
\newcommand*{\printglossary}[1][type=\glsdefaulttype]{%
 \ifglsxindy\findrootlanguage\fi
 \def\@glo@type{\glsdefaulttype}%
 \def\glossarytitle{\csname @glotype@\@glo@type @title\endcsname}%
 \let\org@glossarytitle\glossarytitle
 \def\@glossarystyle{}%
 \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}%
 \let\@org@glossaryentrynumbers\glossaryentrynumbers
 \bgroup
   \setkeys{printgloss}{#1}%
 \ifx\glossarytitle\org@glossarytitle
 \else
   \expandafter\let\csname @glotype@\@glo@type @title\endcsname
                   \glossarytitle
 \fi
   \let\currentglossary\@glo@type
   \let\org@glossaryentrynumbers\glossaryentrynumbers
   \let\glsnonextpages\@glsnonextpages
   \let\glsnextpages\@glsnextpages
   \let\nopostdesc\@nopostdesc
   \gls@dotoctitle
   \@glossarystyle
   \makeatletter
   \@input@{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
\IfFileExists{\jobname.\csname @glotype@\@glo@type @in\endcsname}{}%
{\null}%
   \ifglsxindy
     \ifcsundef{@xdy@\@glo@type @language}%
     {%
       \protected@write\@auxout{}{%
       \string\@xdylanguage{\@glo@type}{\@xdy@main@language}}%
     }%
     {%
       \protected@write\@auxout{}{%
         \string\@xdylanguage{\@glo@type}{\csname @xdy@\@glo@type
           @language\endcsname}}%
     }%
     \protected@write\@auxout{}{%
       \string\@gls@codepage{\@glo@type}{\gls@codepage}}%
   \fi
 \egroup
 \global\let\glossaryentrynumbers\@org@glossaryentrynumbers
 \global\let\warn@noprintglossary\relax
}
\newcommand*{\printglossaries}{%
\forallglossaries{\@@glo@type}{\printglossary[type=\@@glo@type]}}
\define@key{printgloss}{type}{\def\@glo@type{#1}}
\define@key{printgloss}{title}{\def\glossarytitle{#1}}
\define@key{printgloss}{toctitle}{\def\glossarytoctitle{#1}%
\let\gls@dotoctitle\relax
}
\define@key{printgloss}{style}{%
 \ifcsundef{@glsstyle@#1}%
 {%
   \PackageError{glossaries}%
   {Glossary style `#1' undefined}{}%
 }%
 {%
   \def\@glossarystyle{\csname @glsstyle@#1\endcsname}%
 }%
}
\define@choicekey{printgloss}{numberedsection}[\val\nr]{%
false,nolabel,autolabel}[nolabel]{%
\ifcase\nr\relax
 \renewcommand*{\@@glossarysecstar}{*}%
 \renewcommand*{\@@glossaryseclabel}{}%
\or
 \renewcommand*{\@@glossarysecstar}{}%
 \renewcommand*{\@@glossaryseclabel}{}%
\or
 \renewcommand*{\@@glossarysecstar}{}%
 \renewcommand*{\@@glossaryseclabel}{\label{\glsautoprefix\@glo@type}}%
\fi}
\define@boolkey{printgloss}[gls]{nonumberlist}[true]{%
\ifglsnonumberlist
  \def\glossaryentrynumbers##1{}%
\else
  \def\glossaryentrynumbers##1{##1}%
\fi}
\newcommand*{\@glsnonextpages}{%
 \gdef\glossaryentrynumbers##1{%
    \glsresetentrylist}}
\newcommand*{\@glsnextpages}{%
 \gdef\glossaryentrynumbers##1{%
    ##1\glsresetentrylist}}
\newcommand*{\glsresetentrylist}{%
 \global\let\glossaryentrynumbers\org@glossaryentrynumbers}
\newcommand*{\glsnonextpages}{}
\newcommand*{\glsnextpages}{}
\ifglsentrycounter
 \ifx\@gls@counterwithin\@empty
   \newcounter{glossaryentry}
 \else
   \newcounter{glossaryentry}[\@gls@counterwithin]
 \fi
 \def\theHglossaryentry{\currentglossary.\theglossaryentry}
\fi
\ifglssubentrycounter
 \ifglsentrycounter
   \newcounter{glossarysubentry}[glossaryentry]
 \else
   \newcounter{glossarysubentry}
 \fi
 \def\theHglossarysubentry{\currentglssubentry.\theglossarysubentry}
\fi
\ifglssubentrycounter
 \newcommand*{\glsresetsubentrycounter}{%
   \setcounter{glossarysubentry}{0}%
 }
\else
 \newcommand*{\glsresetsubentrycounter}{}
\fi
\ifglsentrycounter
 \newcommand*{\glsstepentry}[1]{%
   \refstepcounter{glossaryentry}%
   \label{glsentry-#1}%
 }
\else
 \newcommand*{\glsstepentry}[1]{}
\fi
\ifglssubentrycounter
 \newcommand*{\glsstepsubentry}[1]{%
   \def\currentglssubentry{#1}%
   \refstepcounter{glossarysubentry}%
   \label{glsentry-#1}%
 }
\else
 \newcommand*{\glsstepsubentry}[1]{}
\fi
\ifglsentrycounter
 \newcommand*{\glsrefentry}[1]{\ref{glsentry-#1}}
\else
 \ifglssubentrycounter
   \newcommand*{\glsrefentry}[1]{\ref{glsentry-#1}}
 \else
   \newcommand*{\glsrefentry}[1]{\gls{#1}}
 \fi
\fi
\ifglsentrycounter
 \newcommand*{\glsentrycounterlabel}{\theglossaryentry.\space}
\else
 \newcommand*{\glsentrycounterlabel}{}
\fi
\ifglssubentrycounter
 \newcommand*{\glssubentrycounterlabel}{\theglossarysubentry)\space}
\else
 \newcommand*{\glssubentrycounterlabel}{}
\fi
\ifglsentrycounter
 \newcommand*{\glsentryitem}[1]{%
   \glsstepentry{#1}\glsentrycounterlabel
 }
\else
 \newcommand*{\glsentryitem}[1]{\glsresetsubentrycounter}
\fi
\ifglssubentrycounter
 \newcommand*{\glssubentryitem}[1]{%
   \glsstepsubentry{#1}\glssubentrycounterlabel
 }
\else
 \newcommand*{\glssubentryitem}[1]{}
\fi
\ifcsundef{theglossary}%
{%
 \newenvironment{theglossary}{}{}%
}%
{%
 \GlossariesWarning{overriding `theglossary' environment}%
 \renewenvironment{theglossary}{}{}%
}
\newcommand*{\glossaryheader}{}
\newcommand*{\glstarget}[2]{\@glstarget{glo:#1}{#2}}
\newcommand*{\glossaryentryfield}[5]{%
\noindent\textbf{\glstarget{#1}{#2}} #4 #3. #5\par}
\newcommand*{\glossarysubentryfield}[6]{%
\glstarget{#2}{\strut}#4. #6\par}
\newcommand*{\glsgroupskip}{}
\newcommand*{\glsgroupheading}[1]{}
\newcommand*{\glsgetgrouptitle}[1]{%
 \ifcsundef{#1groupname}{#1}{\csname #1groupname\endcsname}%
}
\newcommand*{\glsgetgrouplabel}[1]{%
\ifthenelse{\equals{#1}{\glssymbolsgroupname}}{glssymbols}{%
\ifthenelse{\equals{#1}{\glsnumbersgroupname}}{glsnumbers}{#1}}}
\newcommand*{\setentrycounter}[2][]{%
 \def\@glo@counterprefix{#1}%
 \ifx\@glo@counterprefix\@empty
   \def\@glo@counterprefix{.}%
 \else
   \def\@glo@counterprefix{.#1.}%
 \fi
 \def\glsentrycounter{#2}%
}
\newcommand*{\glossarystyle}[1]{%
 \ifcsundef{@glsstyle@#1}%
 {%
   \PackageError{glossaries}{Glossary style `#1' undefined}{}%
 }%
 {%
   \csname @glsstyle@#1\endcsname
 }%
}
\newcommand{\newglossarystyle}[2]{%
 \ifcsundef{@glsstyle@#1}%
 {%
   \expandafter\def\csname @glsstyle@#1\endcsname{#2}%
 }%
 {%
   \PackageError{glossaries}{Glossary style `#1' is already defined}{}%
 }%
}
\newcommand*{\glsnamefont}[1]{#1}
\ifcsundef{hyperlink}%
{%
 \def\glshypernumber#1{#1}%
}%
{%
 \def\glshypernumber#1{\@glshypernumber#1\nohyperpage{}\@nil}
}
\def\@glshypernumber#1\nohyperpage#2#3\@nil{%
 \ifx\\#1\\%
 \else
   \@delimR#1\delimR\delimR\\%
 \fi
 \ifx\\#2\\%
 \else
   #2%
 \fi
 \ifx\\#3\\%
 \else
   \@glshypernumber#3\@nil
 \fi
}
\def\@delimR#1\delimR #2\delimR #3\\{%
\ifx\\#2\\%
 \@delimN{#1}%
\else
 \@gls@numberlink{#1}\delimR\@gls@numberlink{#2}%
\fi}
\def\@delimN#1{\@@delimN#1\delimN \delimN\\}
\def\@@delimN#1\delimN #2\delimN#3\\{%
\ifx\\#3\\%
 \@gls@numberlink{#1}%
\else
 \@gls@numberlink{#1}\delimN\@gls@numberlink{#2}%
\fi
}
\def\@gls@numberlink#1{%
\begingroup
\toks@={}%
\@gls@removespaces#1 \@nil
\endgroup}
\def\@gls@removespaces#1 #2\@nil{%
\toks@=\expandafter{\the\toks@#1}%
\ifx\\#2\\%
  \edef\x{\the\toks@}%
  \ifx\x\empty
  \else
    \hyperlink{\glsentrycounter\@glo@counterprefix\the\toks@}%
              {\the\toks@}%
  \fi
\else
  \@gls@ReturnAfterFi{%
    \@gls@removespaces#2\@nil
  }%
\fi
}
\long\def\@gls@ReturnAfterFi#1\fi{\fi#1}
\newcommand*{\hyperrm}[1]{\textrm{\glshypernumber{#1}}}
\newcommand*{\hypersf}[1]{\textsf{\glshypernumber{#1}}}
\newcommand*{\hypertt}[1]{\texttt{\glshypernumber{#1}}}
\newcommand*{\hyperbf}[1]{\textbf{\glshypernumber{#1}}}
\newcommand*{\hypermd}[1]{\textmd{\glshypernumber{#1}}}
\newcommand*{\hyperit}[1]{\textit{\glshypernumber{#1}}}
\newcommand*{\hypersl}[1]{\textsl{\glshypernumber{#1}}}
\newcommand*{\hyperup}[1]{\textup{\glshypernumber{#1}}}
\newcommand*{\hypersc}[1]{\textsc{\glshypernumber{#1}}}
\newcommand*{\hyperemph}[1]{\emph{\glshypernumber{#1}}}
\ifglsacronym
 \newglossary[alg]{acronym}{acr}{acn}{\acronymname}
 \renewcommand*{\acronymtype}{acronym}
\fi
\newcommand{\oldacronym}[4][\gls@label]{%
 \def\gls@label{#2}%
 \newacronym[#4]{#1}{#2}{#3}%
 \ifcsundef{xspace}%
 {%
   \expandafter\edef\csname#1\endcsname{%
     \noexpand\@ifstar{\noexpand\Gls{#1}}{\noexpand\gls{#1}}%
   }%
 }%
 {%
   \expandafter\edef\csname#1\endcsname{%
     \noexpand\@ifstar{\noexpand\Gls{#1}\noexpand\xspace}{%
     \noexpand\gls{#1}\noexpand\xspace}%
   }%
 }%
}
 \newcommand{\newacronym}[4][]{}
\newcommand*{\acrpluralsuffix}{\glspluralsuffix}
\newcommand*{\glsshortkey}{short}
\newcommand*{\glsshortpluralkey}{shortplural}
\newcommand*{\glslongkey}{long}
\newcommand*{\glslongpluralkey}{longplural}
\newrobustcmd*{\acrfull}{%
 \@ifstar\s@acrfull\ns@acrfull
}
\newcommand*\s@acrfull[2][]{%
 \new@ifnextchar[{\@acrfull{hyper=false,#1}{#2}}%
                 {\@acrfull{hyper=false,#1}{#2}[]}%
}
\newcommand*\ns@acrfull[2][]{%
 \new@ifnextchar[{\@acrfull{#1}{#2}}%
                 {\@acrfull{#1}{#2}[]}%
}
\def\@acrfull#1#2[#3]{%
 \acrlinkfullformat{\@acrlong}{\@acrshort}{#1}{#2}{#3}%
}
\newcommand{\acrlinkfullformat}[5]{%
 \acrfullformat{#1{#3}{#4}[#5]}{#2{#3}{#4}[]}%
}
\newcommand{\acrfullformat}[2]{#1\space(#2)}
\newrobustcmd*{\Acrfull}{%
 \@ifstar\s@Acrfull\ns@Acrfull
}
\newcommand*\s@Acrfull[2][]{%
 \new@ifnextchar[{\@Acrfull{hyper=false,#1}{#2}}%
                 {\@Acrfull{hyper=false,#1}{#2}[]}%
}
\newcommand*\ns@Acrfull[2][]{%
 \new@ifnextchar[{\@Acrfull{#1}{#2}}%
                 {\@Acrfull{#1}{#2}[]}%
}
\def\@Acrfull#1#2[#3]{%
 \acrlinkfullformat{\@Acrlong}{\@acrshort}{#1}{#2}{#3}%
}
\newrobustcmd*{\ACRfull}{%
 \@ifstar\s@ACRfull\ns@ACRfull
}
\newcommand*\s@ACRfull[2][]{%
 \new@ifnextchar[{\@ACRfull{hyper=false,#1}{#2}}%
                 {\@ACRfull{hyper=false,#1}{#2}[]}%
}
\newcommand*\ns@ACRfull[2][]{%
 \new@ifnextchar[{\@ACRfull{#1}{#2}}%
                 {\@ACRfull{#1}{#2}[]}%
}
\def\@ACRfull#1#2[#3]{%
 \acrlinkfullformat{\@ACRlong}{\@ACRshort}{#1}{#2}{#3}%
}
\newrobustcmd*{\acrfullpl}{%
 \@ifstar\s@acrfullpl\ns@acrfullpl
}
\newcommand*\s@acrfullpl[2][]{%
 \new@ifnextchar[{\@acrfullpl{hyper=false,#1}{#2}}%
                 {\@acrfullpl{hyper=false,#1}{#2}[]}%
}
\newcommand*\ns@acrfullpl[2][]{%
 \new@ifnextchar[{\@acrfullpl{#1}{#2}}%
                 {\@acrfullpl{#1}{#2}[]}%
}
\def\@acrfullpl#1#2[#3]{%
 \acrlinkfullformat{\@acrlongpl}{\@acrshortpl}{#1}{#2}{#3}%
}
\newrobustcmd*{\Acrfullpl}{%
 \@ifstar\s@Acrfullpl\ns@Acrfullpl
}
\newcommand*\s@Acrfullpl[2][]{%
 \new@ifnextchar[{\@Acrfullpl{hyper=false,#1}{#2}}%
                 {\@Acrfullpl{hyper=false,#1}{#2}[]}%
}
\newcommand*\ns@Acrfullpl[2][]{%
 \new@ifnextchar[{\@Acrfullpl{#1}{#2}}%
                 {\@Acrfullpl{#1}{#2}[]}%
}
\def\@Acrfullpl#1#2[#3]{%
 \acrlinkfullformat{\@Acrlongpl}{\@acrshortpl}{#1}{#2}{#3}%
}
\newrobustcmd*{\ACRfullpl}{%
 \@ifstar\s@ACRfullpl\ns@ACRfullpl
}
\newcommand*\s@ACRfullpl[2][]{%
 \new@ifnextchar[{\@ACRfullpl{hyper=false,#1}{#2}}%
                 {\@ACRfullpl{hyper=false,#1}{#2}[]}%
}
\newcommand*\ns@ACRfullpl[2][]{%
 \new@ifnextchar[{\@ACRfullpl{#1}{#2}}%
                 {\@ACRfullpl{#1}{#2}[]}%
}
\def\@ACRfullpl#1#2[#3]{%
 \acrlinkfullformat{\@ACRlongpl}{\@ACRshortpl}{#1}{#2}{#3}%
}
\newcommand{\acronymfont}[1]{#1}
\newcommand{\firstacronymfont}[1]{\acronymfont{#1}}
\newcommand*{\acrnameformat}[2]{\acronymfont{#1}}
\newtoks\glskeylisttok
\newtoks\glslabeltok
\newtoks\glsshorttok
\newtoks\glslongtok
\newcommand*{\newacronymhook}{}
\newcommand*{\SetDefaultAcronymDisplayStyle}[1]{%
 \defglsdisplay[#1]{##1##4}%
 \defglsdisplayfirst[#1]{##1##4}%
}
\newcommand*{\DefaultNewAcronymDef}{%
 \edef\@do@newglossaryentry{%
   \noexpand\newglossaryentry{\the\glslabeltok}%
   {%
     type=\acronymtype,%
     name={\the\glsshorttok},%
     sort={\the\glsshorttok},%
     text={\the\glsshorttok},%
     first={\acrfullformat{\the\glslongtok}{\the\glsshorttok}},%
     plural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     firstplural={\acrfullformat{\noexpand\@glo@longpl}%
                                {\noexpand\@glo@shortpl}},%
     short={\the\glsshorttok},%
     shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     long={\the\glslongtok},%
     longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
     description={\the\glslongtok},%
     descriptionplural={\the\glslongtok\noexpand\acrpluralsuffix},%
     \the\glskeylisttok
   }%
 }%
 \@do@newglossaryentry
}
\newcommand*{\SetDefaultAcronymStyle}{%
 \@for\@gls@type:=\@glsacronymlists\do{%
   \SetDefaultAcronymDisplayStyle{\@gls@type}%
 }%
 \renewcommand{\newacronym}[4][]{%
   \ifx\@glsacronymlists\@empty
     \def\@glo@type{\acronymtype}%
     \setkeys{glossentry}{##1}%
     \DeclareAcronymList{\@glo@type}%
     \SetDefaultAcronymDisplayStyle{\@glo@type}%
   \fi
   \glskeylisttok{##1}%
   \glslabeltok{##2}%
   \glsshorttok{##3}%
   \glslongtok{##4}%
   \newacronymhook
   \DefaultNewAcronymDef
 }%
 \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
}
\newcommand*{\acrfootnote}[3]{\acrlinkfootnote{#1}{#2}{#3}}
\newcommand*{\acrlinkfootnote}[3]{%
 \footnote{\glslink[#1]{#2}{#3}}%
}
\newcommand*{\acrnolinkfootnote}[3]{%
 \footnote{#3}%
}
\newcommand*{\SetDescriptionFootnoteAcronymDisplayStyle}[1]{%
 \defglsdisplayfirst[#1]{%
   \firstacronymfont{##1}##4%
   \expandafter\protect\expandafter\acrfootnote\expandafter
      {\@gls@link@opts}{\@gls@link@label}{##3}
 }%
 \defglsdisplay[#1]{\acronymfont{##1}##4}%
}
\newcommand*{\DescriptionFootnoteNewAcronymDef}{%
   \edef\@do@newglossaryentry{%
     \noexpand\newglossaryentry{\the\glslabeltok}%
     {%
       type=\acronymtype,%
       name={\noexpand\acronymfont{\the\glsshorttok}},%
       sort={\the\glsshorttok},%
       text={\the\glsshorttok},%
       plural={\the\glsshorttok\noexpand\acrpluralsuffix},%
       short={\the\glsshorttok},%
       shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
       long={\the\glslongtok},%
       longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
       symbol={\the\glslongtok},%
       symbolplural={\the\glslongtok\noexpand\acrpluralsuffix},%
       \the\glskeylisttok
     }%
   }%
   \@do@newglossaryentry
}
\newcommand*{\SetDescriptionFootnoteAcronymStyle}{%
 \renewcommand{\newacronym}[4][]{%
   \ifx\@glsacronymlists\@empty
     \def\@glo@type{\acronymtype}%
     \setkeys{glossentry}{##1}%
     \DeclareAcronymList{\@glo@type}%
     \SetDescriptionFootnoteAcronymDisplayStyle{\@glo@type}%
   \fi
   \glskeylisttok{##1}%
   \glslabeltok{##2}%
   \glsshorttok{##3}%
   \glslongtok{##4}%
   \newacronymhook
   \DescriptionFootnoteNewAcronymDef
 }%
 \@for\@gls@type:=\@glsacronymlists\do{%
   \SetDescriptionFootnoteAcronymDisplayStyle{\@gls@type}%
 }%
 \ifglsacrsmallcaps
   \renewcommand*{\acronymfont}[1]{\textsc{##1}}%
   \renewcommand*{\acrpluralsuffix}{%
     \textup{\glspluralsuffix}}%
 \else
   \ifglsacrsmaller
     \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}%
   \fi
 \fi
 \ifglsacrdua
   \PackageError{glossaries}{Option clash: `footnote' and `dua'
   can't both be set}{}%
 \fi
}%
\newcommand*{\SetDescriptionDUAAcronymDisplayStyle}[1]{%
 \defglsdisplay[#1]{##1##4}%
 \defglsdisplayfirst[#1]{##1##4}%
}
\newcommand*{\DescriptionDUANewAcronymDef}{%
 \edef\@do@newglossaryentry{%
   \noexpand\newglossaryentry{\the\glslabeltok}%
   {%
     type=\acronymtype,%
     name={\the\glslongtok},%
     sort={\the\glslongtok},
     text={\the\glslongtok},%
     plural={\the\glslongtok\noexpand\acrpluralsuffix},%
     short={\the\glsshorttok},%
     shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     long={\the\glslongtok},%
     longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
     symbol={\the\glsshorttok},%
     symbolplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     \the\glskeylisttok
   }%
 }%
 \@do@newglossaryentry
}
\newcommand*{\SetDescriptionDUAAcronymStyle}{%
 \ifglsacrsmallcaps
   \PackageError{glossaries}{Option clash: `smallcaps' and `dua'
   can't both be set}{}%
 \else
   \ifglsacrsmaller
     \PackageError{glossaries}{Option clash: `smaller' and `dua'
     can't both be set}{}%
   \fi
 \fi
 \renewcommand{\newacronym}[4][]{%
   \ifx\@glsacronymlists\@empty
     \def\@glo@type{\acronymtype}%
     \setkeys{glossentry}{##1}%
     \DeclareAcronymList{\@glo@type}%
     \SetDescriptionDUAAcronymDisplayStyle{\@glo@type}%
   \fi
   \glskeylisttok{##1}%
   \glslabeltok{##2}%
   \glsshorttok{##3}%
   \glslongtok{##4}%
   \newacronymhook
   \DescriptionDUANewAcronymDef
 }%
 \@for\@gls@type:=\@glsacronymlists\do{%
   \SetDescriptionDUAAcronymDisplayStyle{\@gls@type}%
 }%
}%
\newcommand*{\SetDescriptionAcronymDisplayStyle}[1]{%
 \defglsdisplayfirst[#1]{%
   ##1##4 (\firstacronymfont{##3})}%
 \defglsdisplay[#1]{\acronymfont{##1}##4}%
}
\newcommand*{\DescriptionNewAcronymDef}{%
 \edef\@do@newglossaryentry{%
   \noexpand\newglossaryentry{\the\glslabeltok}%
   {%
     type=\acronymtype,%
     name={\noexpand
       \acrnameformat{\the\glsshorttok}{\the\glslongtok}},%
     sort={\the\glsshorttok},%
     first={\the\glslongtok},%
     firstplural={\the\glslongtok\noexpand\acrpluralsuffix},%
     text={\the\glsshorttok},%
     plural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     short={\the\glsshorttok},%
     shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     long={\the\glslongtok},%
     longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
     symbol={\noexpand\@glo@text},%
     symbolplural={\noexpand\@glo@plural},%
     \the\glskeylisttok}%
 }%
 \@do@newglossaryentry
}
\newcommand*{\SetDescriptionAcronymStyle}{%
 \renewcommand{\newacronym}[4][]{%
   \ifx\@glsacronymlists\@empty
     \def\@glo@type{\acronymtype}%
     \setkeys{glossentry}{##1}%
     \DeclareAcronymList{\@glo@type}%
     \SetDescriptionAcronymDisplayStyle{\@glo@type}%
   \fi
   \glskeylisttok{##1}%
   \glslabeltok{##2}%
   \glsshorttok{##3}%
   \glslongtok{##4}%
   \newacronymhook
   \DescriptionNewAcronymDef
 }%
 \@for\@gls@type:=\@glsacronymlists\do{%
   \SetDescriptionAcronymDisplayStyle{\@gls@type}%
 }%
 \ifglsacrsmallcaps
   \renewcommand{\acronymfont}[1]{\textsc{##1}}
   \renewcommand*{\acrpluralsuffix}{%
     \textup{\glspluralsuffix}}%
 \else
   \ifglsacrsmaller
     \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}%
   \fi
 \fi
}%
\newcommand*{\SetFootnoteAcronymDisplayStyle}[1]{%
 \defglsdisplayfirst[#1]{%
   \firstacronymfont{##1}##4%
   \expandafter\protect\expandafter\acrfootnote\expandafter
      {\@gls@link@opts}{\@gls@link@label}{##2}%
 }%
 \defglsdisplay[#1]{\acronymfont{##1}##4}%
}
\newcommand*{\FootnoteNewAcronymDef}{%
 \edef\@do@newglossaryentry{%
   \noexpand\newglossaryentry{\the\glslabeltok}%
   {%
     type=\acronymtype,%
     name={\noexpand\acronymfont{\the\glsshorttok}},%
     sort={\the\glsshorttok},%
     text={\the\glsshorttok},%
     plural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     short={\the\glsshorttok},%
     shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     long={\the\glslongtok},%
     longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
     description={\the\glslongtok},%
     descriptionplural={\the\glslongtok\noexpand\acrpluralsuffix},%
     \the\glskeylisttok
   }%
 }%
 \@do@newglossaryentry
}
\newcommand*{\SetFootnoteAcronymStyle}{%
 \renewcommand{\newacronym}[4][]{%
   \ifx\@glsacronymlists\@empty
     \def\@glo@type{\acronymtype}%
     \setkeys{glossentry}{##1}%
     \DeclareAcronymList{\@glo@type}%
     \SetFootnoteAcronymDisplayStyle{\@glo@type}%
   \fi
   \glskeylisttok{##1}%
   \glslabeltok{##2}%
   \glsshorttok{##3}%
   \glslongtok{##4}%
   \newacronymhook
   \FootnoteNewAcronymDef
 }%
 \@for\@gls@type:=\@glsacronymlists\do{%
   \SetFootnoteAcronymDisplayStyle{\@gls@type}%
 }%
 \ifglsacrsmallcaps
    \renewcommand*{\acronymfont}[1]{\textsc{##1}}%
    \renewcommand*{\acrpluralsuffix}{%
       \textup{\glspluralsuffix}}%
 \else
    \ifglsacrsmaller
       \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}%
    \fi
 \fi
 \ifglsacrdua
    \PackageError{glossaries}{Option clash: `footnote' and `dua'
    can't both be set}{}%
 \fi
}%
\newcommand*{\SetSmallAcronymDisplayStyle}[1]{%
 \defglsdisplayfirst[#1]{##1##4 (\firstacronymfont{##3})}
 \defglsdisplay[#1]{\acronymfont{##1}##4}%
}
\newcommand*{\SmallNewAcronymDef}{%
 \edef\@do@newglossaryentry{%
   \noexpand\newglossaryentry{\the\glslabeltok}%
   {%
     type=\acronymtype,%
     name={\noexpand\acronymfont{\the\glsshorttok}},%
     sort={\the\glsshorttok},%
     text={\noexpand\@glo@symbol},%
     plural={\noexpand\@glo@symbolplural},%
     first={\the\glslongtok},%
     firstplural={\the\glslongtok\noexpand\acrpluralsuffix},%
     short={\the\glsshorttok},%
     shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     long={\the\glslongtok},%
     longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
     description={\noexpand\@glo@first},%
     descriptionplural={\noexpand\@glo@firstplural},%
     symbol={\the\glsshorttok},%
     symbolplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     \the\glskeylisttok
   }%
 }%
 \@do@newglossaryentry
}
\newcommand*{\SetSmallAcronymStyle}{%
 \renewcommand{\newacronym}[4][]{%
   \ifx\@glsacronymlists\@empty
     \def\@glo@type{\acronymtype}%
     \setkeys{glossentry}{##1}%
     \DeclareAcronymList{\@glo@type}%
     \SetSmallAcronymDisplayStyle{\@glo@type}%
   \fi
   \glskeylisttok{##1}%
   \glslabeltok{##2}%
   \glsshorttok{##3}%
   \glslongtok{##4}%
   \newacronymhook
   \SmallNewAcronymDef
 }%
 \@for\@gls@type:=\@glsacronymlists\do{%
   \SetSmallAcronymDisplayStyle{\@gls@type}%
 }%
 \ifglsacrsmallcaps
   \renewcommand*{\acronymfont}[1]{\textsc{##1}}
   \renewcommand*{\acrpluralsuffix}{%
      \textup{\glspluralsuffix}}%
 \else
   \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}
 \fi
 \ifglsacrdua
   \ifglsacrsmallcaps
     \PackageError{glossaries}{Option clash: `smallcaps' and `dua'
     can't both be set}{}%
   \else
     \PackageError{glossaries}{Option clash: `smaller' and `dua'
     can't both be set}{}%
   \fi
 \fi
}%
\newcommand*{\SetDUADisplayStyle}[1]{%
 \defglsdisplay[#1]{##1##4}%
 \defglsdisplayfirst[#1]{##1##4}%
}
\newcommand*{\DUANewAcronymDef}{%
 \edef\@do@newglossaryentry{%
   \noexpand\newglossaryentry{\the\glslabeltok}%
   {%
     type=\acronymtype,%
     name={\the\glsshorttok},%
     text={\the\glslongtok},%
     plural={\the\glslongtok\noexpand\acrpluralsuffix},%
     short={\the\glsshorttok},%
     shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     long={\the\glslongtok},%
     longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
     description={\the\glslongtok},%
     symbol={\the\glsshorttok},%
     symbolplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     \the\glskeylisttok
   }%
 }%
 \@do@newglossaryentry
}
\newcommand*{\SetDUAStyle}{%
 \renewcommand{\newacronym}[4][]{%
   \ifx\@glsacronymlists\@empty
     \def\@glo@type{\acronymtype}%
     \setkeys{glossentry}{##1}%
     \DeclareAcronymList{\@glo@type}%
     \SetDUADisplayStyle{\@glo@type}%
   \fi
   \glskeylisttok{##1}%
   \glslabeltok{##2}%
   \glsshorttok{##3}%
   \glslongtok{##4}%
   \newacronymhook
   \DUANewAcronymDef
 }%
 \@for\@gls@type:=\@glsacronymlists\do{%
   \SetDUADisplayStyle{\@gls@type}%
 }%
}
\newcommand*{\SetAcronymStyle}{%
 \SetDefaultAcronymStyle
 \ifglsacrdescription
   \ifglsacrfootnote
     \SetDescriptionFootnoteAcronymStyle
   \else
     \ifglsacrdua
       \SetDescriptionDUAAcronymStyle
     \else
       \SetDescriptionAcronymStyle
     \fi
   \fi
 \else
   \ifglsacrfootnote
     \SetFootnoteAcronymStyle
   \else
     \ifthenelse{\boolean{glsacrsmallcaps}\OR
       \boolean{glsacrsmaller}}%
     {%
       \SetSmallAcronymStyle
     }%
     {%
       \ifglsacrdua
         \SetDUAStyle
       \fi
     }%
   \fi
 \fi
}
\SetAcronymStyle
\newcommand*{\SetCustomDisplayStyle}[1]{%
 \defglsdisplay[#1]{##1##4}%
 \defglsdisplayfirst[#1]{##1##4}%
}
\newcommand*{\CustomAcronymFields}{%
 name={\the\glsshorttok},%
 description={\the\glslongtok},%
 first={\noexpand\acrfullformat{\the\glslongtok}{\the\glsshorttok}},%
 firstplural={\noexpand\acrfullformat
   {\the\glslongtok\noexpand\acrpluralsuffix}{\the\glsshorttok}}%
 text={\the\glsshorttok},%
 plural={\the\glsshorttok\noexpand\acrpluralsuffix}%
}
\newcommand*{\CustomNewAcronymDef}{%
 \protected@edef\@do@newglossaryentry{%
   \noexpand\newglossaryentry{\the\glslabeltok}%
   {%
     type=\acronymtype,%
     short={\the\glsshorttok},%
     shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
     long={\the\glslongtok},%
     longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
     user1={\the\glsshorttok},%
     user2={\the\glsshorttok\noexpand\acrpluralsuffix},%
     user3={\the\glslongtok},%
     user4={\the\glslongtok\noexpand\acrpluralsuffix},%
     \CustomAcronymFields,%
     \the\glskeylisttok
   }%
 }%
 \@do@newglossaryentry
}
\newcommand*{\SetCustomStyle}{%
 \renewcommand{\newacronym}[4][]{%
   \ifx\@glsacronymlists\@empty
     \def\@glo@type{\acronymtype}%
     \setkeys{glossentry}{##1}%
     \DeclareAcronymList{\@glo@type}%
     \SetCustomDisplayStyle{\@glo@type}%
   \fi
   \glskeylisttok{##1}%
   \glslabeltok{##2}%
   \glsshorttok{##3}%
   \glslongtok{##4}%
   \newacronymhook
   \CustomNewAcronymDef
 }%
 \@for\@gls@type:=\@glsacronymlists\do{%
   \SetCustomDisplayStyle{\@gls@type}%
 }%
}
\newcommand*{\DefineAcronymSynonyms}{%
 \let\acs\acrshort
 \let\Acs\Acrshort
 \let\acsp\acrshortpl
 \let\Acsp\Acrshortpl
 \let\acl\acrlong
 \let\aclp\acrlongpl
 \let\Acl\Acrlong
 \let\Aclp\Acrlongpl
 \let\acf\acrfull
 \let\acfp\acrfullpl
 \let\Acf\Acrfull
 \let\Acfp\Acrfullpl
 \let\ac\gls
 \let\Ac\Gls
 \let\acp\glspl
 \let\Acp\Glspl
}
\ifglsacrshortcuts
 \DefineAcronymSynonyms
\fi
\RequirePackage{glossary-hypernav}
\@gls@loadlist
\@gls@loadlong
\@gls@loadsuper
\@gls@loadtree
\ifx\@glossary@default@style\relax
\else
 \glossarystyle{\@glossary@default@style}
\fi
\newcommand*{\showgloparent}[1]{%
 \expandafter\show\csname glo@#1@parent\endcsname
}
\newcommand*{\showglolevel}[1]{%
 \expandafter\show\csname glo@#1@level\endcsname
}
\newcommand*{\showglotext}[1]{%
 \expandafter\show\csname glo@#1@text\endcsname
}
\newcommand*{\showgloplural}[1]{%
 \expandafter\show\csname glo@#1@plural\endcsname
}
\newcommand*{\showglofirst}[1]{%
 \expandafter\show\csname glo@#1@first\endcsname
}
\newcommand*{\showglofirstpl}[1]{%
 \expandafter\show\csname glo@#1@firstpl\endcsname
}
\newcommand*{\showglotype}[1]{%
 \expandafter\show\csname glo@#1@type\endcsname
}
\newcommand*{\showglocounter}[1]{%
 \expandafter\show\csname glo@#1@counter\endcsname
}
\newcommand*{\showglouseri}[1]{%
 \expandafter\show\csname glo@#1@useri\endcsname
}
\newcommand*{\showglouserii}[1]{%
 \expandafter\show\csname glo@#1@userii\endcsname
}
\newcommand*{\showglouseriii}[1]{%
 \expandafter\show\csname glo@#1@useriii\endcsname
}
\newcommand*{\showglouseriv}[1]{%
 \expandafter\show\csname glo@#1@useriv\endcsname
}
\newcommand*{\showglouserv}[1]{%
 \expandafter\show\csname glo@#1@userv\endcsname
}
\newcommand*{\showglouservi}[1]{%
 \expandafter\show\csname glo@#1@uservi\endcsname
}
\newcommand*{\showgloname}[1]{%
 \expandafter\show\csname glo@#1@name\endcsname
}
\newcommand*{\showglodesc}[1]{%
 \expandafter\show\csname glo@#1@desc\endcsname
}
\newcommand*{\showglodescplural}[1]{%
 \expandafter\show\csname glo@#1@descplural\endcsname
}
\newcommand*{\showglosort}[1]{%
 \expandafter\show\csname glo@#1@sort\endcsname
}
\newcommand*{\showglosymbol}[1]{%
 \expandafter\show\csname glo@#1@symbol\endcsname
}
\newcommand*{\showglosymbolplural}[1]{%
 \expandafter\show\csname glo@#1@symbolplural\endcsname
}
\newcommand*{\showgloindex}[1]{%
 \expandafter\show\csname glo@#1@index\endcsname
}
\newcommand*{\showgloflag}[1]{%
 \expandafter\show\csname ifglo@#1@flag\endcsname
}
\newcommand*{\showacronymlists}{%
  \show\@glsacronymlists
}
\newcommand*{\showglossaries}{%
  \show\@glo@types
}
\newcommand*{\showglossaryin}[1]{%
 \expandafter\show\csname @glotype@#1@in\endcsname
}
\newcommand*{\showglossaryout}[1]{%
 \expandafter\show\csname @glotype@#1@out\endcsname
}
\newcommand*{\showglossarytitle}[1]{%
 \expandafter\show\csname @glotype@#1@title\endcsname
}
\newcommand*{\showglossarycounter}[1]{%
 \expandafter\show\csname @glotype@#1@counter\endcsname
}
\newcommand*{\showglossaryentries}[1]{%
 \expandafter\show\csname @glolist@#1\endcsname
}
\csname ifglscompatible-2.07\endcsname
 \RequirePackage{glossaries-compatible-207}
\fi
\endinput
%%
%% End of file `glossaries.sty'.