%%
%% This is file `microtype.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% microtype.dtx  (with options: `package')
%% 
%% -----------------------------------------------------------------------
%%                        The `microtype' package
%%        An interface to the micro-typographic extensions of pdfTeX
%%           Copyright (c) 2004, 2005 R Schlicht <w.m.l@gmx.net>
%% 
%% This work  may be  distributed and/or modified  under the conditions of
%% the LaTeX Project Public License, either version 1.3 of this license or
%% (at your option) any later version.  The latest version of this license
%% is in:  http://www.latex-project.org/lppl.txt, and version 1.3 or later
%% is part of all distributions of LaTeX version 2003/12/01 or later.
%% 
%% This work has the LPPL maintenance status `author-maintained'.
%% 
%% This work consists of the files microtype.dtx and microtype.ins and the
%% derived file microtype.sty.
%% 
%% -----------------------------------------------------------------------
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{microtype}
      [2005/02/02 v1.6a Micro-typography with pdfTeX (RS)]
\RequirePackage{keyval}[1997/11/10]
\def\MT@info{\PackageInfo{microtype}}
\def\MT@info@nl#1{\MT@info{#1\@gobble}}
\let\MT@vinfo\@gobble
\def\MT@warning{\PackageWarning{microtype}}
\def\MT@warning@nl#1{\MT@warning{#1\@gobble}}
\def\MT@error{\PackageError{microtype}}
\newcommand{\DeclareMicroTypeSet}[3][]{}
\newcommand{\UseMicroTypeSet}[2][]{}
\newcommand{\DeclareMicroTypeAlias}[2]{}
\newcommand{\SetProtrusion}[3][]{}
\newcommand{\SetExpansion}[3][]{}
\newcommand{\DeclareCharacterInheritance}[3][]{}
\newcommand{\microtypesetup}[1]{}
\def\DeclareMicroTypeSet{%
   \@ifstar
      {\@ifnextchar[\MT@DeclareSet{\MT@DeclareSet[]}}%
      {\@ifnextchar[\MT@DeclareSet{\MT@DeclareSet[]}}%
}
\def\MT@DeclareSet[#1]#2#3{}
\@onlypreamble{\DeclareMicroTypeSet}
\@onlypreamble{\UseMicroTypeSet}
\@onlypreamble{\DeclareMicroTypeAlias}
\let\MT@pdftex@no\z@
\ifx\pdftexversion\@undefined \else
   \ifx\pdftexversion\relax \else
      \def\MT@pdftex@no{4}
      \ifnum\pdftexversion < 120
         \let\MT@pdftex@no\thr@@
         \ifnum\pdftexversion = 14
            \ifnum \expandafter`\pdftexrevision < `h
               \let\MT@pdftex@no\tw@
            \fi
            \ifnum \expandafter`\pdftexrevision < `f
               \let\MT@pdftex@no\@ne
            \fi
         \else
            \ifnum\pdftexversion < 14
               \let\MT@pdftex@no\@ne
            \fi
         \fi
      \fi
   \fi
\fi
\let\MT@exitornot\relax
\ifnum\MT@pdftex@no<\tw@
   \def\MT@exitornot{%
      \AtEndOfPackage{\let\@unprocessedoptions\relax}%
      \let\CurrentOption\@empty
      \endinput
   }
   \MT@warning@nl{%
      \ifcase\MT@pdftex@no
         You don't seem to be using pdftex.\MessageBreak
      \or
         You are using a pdftex version older than 0.14f.\MessageBreak
         microtype doesn't support such antiquated versions.\MessageBreak
         Please install a newer version of pdftex.\MessageBreak
      \fi
         All micro-typographic features will be disabled%
   }
\fi
\MT@exitornot
\def\MT@catcodes{%
   \@makeother\-%
   \@makeother\,%
   \@makeother\/%
   \@makeother\`%
   \@makeother\'%
   \@makeother\"%
   \catcode`\^7\relax
}
\def\MT@restore@catcodes#1{%
   \ifx\relax#1\else
      \noexpand\catcode`\noexpand#1\the\catcode`#1\relax
      \expandafter\MT@restore@catcodes
   \fi
}
\edef\MT@restore@catcodes{%
   \MT@restore@catcodes\-\,\/\`\'\"\^\relax
}
\MT@catcodes
\AtEndOfPackage{\MT@restore@catcodes}
\AtBeginDocument{%
   \@ifpackageloaded{pdfcprot}{%
      \MT@error{%
         Detected the `pdfcprot' package!\MessageBreak
         `microtype' and `pdfcprot' may not be used together}%
         {The `pdfcprot' package provides an interface to
          character protrusion.\MessageBreak
          So does the `microtype' package.
          Using both packages at the same\MessageBreak
          time will almost certainly lead to undesired results.
          Have your choice!}%
   }{}%
}
\expandafter\ifx\the\font\nullfont\normalfont\fi
\newif\ifMT@DVIoutput
\newif\ifMT@draft
\newif\ifMT@protrusion
\newif\ifMT@expansion
\newif\ifMT@auto
\newif\ifMT@selected
\def\MT@expansionlevel{2}
\def\MT@protrusionlevel{2}
\let\MT@stretch\m@ne
\let\MT@shrink\m@ne
\let\MT@step\m@ne
\let\MT@prot@factor\@m
\def\MT@def@n#1{\expandafter\def\csname #1\endcsname}
\def\MT@edef@n#1{\expandafter\edef\csname #1\endcsname}
\def\MT@let@nc#1{\expandafter\let\csname #1\endcsname}
\def\MT@let@cn#1#2{\expandafter\let\expandafter#1\csname #2\endcsname}
\def\MT@hop@else@fi#1\else#2\fi{\fi#1}
\ifx\ifdefined\@undefined\MT@hop@else@fi
   \def\MT@ifdefined@c#1{%
      \ifx#1\@undefined
         \expandafter\@secondoftwo
      \else
         \expandafter\@firstoftwo
      \fi
   }
   \def\MT@ifdefined@n#1{%
      \expandafter\ifx\csname#1\endcsname\relax
         \expandafter\@secondoftwo
      \else
         \expandafter\@firstoftwo
      \fi
   }
\else
   \def\MT@ifdefined@c#1{%
      \ifdefined#1%
         \expandafter\@firstoftwo
      \else
         \expandafter\@secondoftwo
      \fi
   }
   \def\MT@ifdefined@n#1{%
      \ifcsname#1\endcsname
         \expandafter\@firstoftwo
      \else
         \expandafter\@secondoftwo
      \fi
   }
\fi
\begingroup
\catcode`\%=12\relax
\catcode`\&=14\relax
\gdef\MT@ifempty#1{&
  \if %#1%&
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi}
\endgroup
\def\MT@ifnumber#1{%
   \if!\ifnum9<1#1!\else_\fi
      \expandafter\@firstoftwo
   \else
      \expandafter\@secondoftwo
   \fi
}
\def\MT@xadd#1#2{%
   \expandafter\ifx#1\relax
      \xdef#1{#2}%
   \else
      \begingroup
         \edef\x{#2}%
         \toks@=\expandafter\expandafter\expandafter{\expandafter#1\x}%
         \xdef#1{\the\toks@}%
      \endgroup
   \fi
}
\newif\ifMT@inlist@
\def\MT@in@list#1#2{%
   \MT@inlist@false
   \def\MT@given{#1}%
   \def\MT@lt##1{%
      \def\MT@next{##1}\ifx\MT@next\MT@given\MT@inlist@true\fi}#2%
}
\let\MT@lt\@empty
\def\MT@in@llist#1#2{%
   \MT@inlist@false
   \def\MT@in@l##1#1,##2\@nil{%
      \ifx\\##2\\\else
         \MT@inlist@true
      \fi}%
   \expandafter\MT@in@l#2,#1,\@nil
}
\def\MT@loop#1\MT@repeat{%
   \def\MT@iterate{#1\relax\expandafter\MT@iterate\fi}%
   \MT@iterate \let\MT@iterate\relax}
\let\MT@repeat\fi
\newcount\MT@count
\def\MT@increment#1{%
   \MT@count#1\relax
   \advance\MT@count \@ne
   \edef#1{\number\MT@count}%
}
\def\MT@remove@spaces#1{\expandafter\KV@@sp@def\expandafter#1\expandafter{#1}}
\def\MT@setupfont{%
   \ifx\MT@vinfo\MT@info@nl
      \MT@info{Setting up font `\expandafter\string\font@name'}\fi
   \expandafter\expandafter\expandafter
      \MT@split@name\expandafter\string\font@name\@nil
   \MT@find@file{\MT@family}%
   \ifx\MT@familyalias\@empty\else\MT@find@file{\MT@familyalias}\fi
   \ifx\f@encoding\cf@encoding\else\@@enc@update\fi
   \MT@checkfor{protrusion}%
   \ifMT@font@protrusion
      \MT@set@prot@codes
   \else
      \MT@vinfo{... No protrusion}%
   \fi
   \MT@checkfor{expansion}%
   \ifMT@font@expansion
      \MT@set@exp@codes
   \else
      \MT@vinfo{... No expansion}%
   \fi
}
\newif\ifMT@font@protrusion
\newif\ifMT@font@expansion
\def\MT@checkfor#1{%
   \csname ifMT@#1\endcsname
      \csname MT@font@#1true\endcsname
      \MT@checklist{#1}{encoding}%
      \MT@checklist@family{#1}%
      \MT@checklist{#1}{series}%
      \MT@checklist{#1}{shape}%
      \MT@checklist{#1}{size}%
   \fi
}
\def\MT@checklist#1#2{%
   \csname ifMT@font@#1\endcsname\MT@checklist@{#1}{#2}\fi
}
\def\MT@checklist@#1#2{%
   \edef\@tempa{\csname MT@#1@setname\endcsname}%
   \MT@ifdefined@n{MT@#1list@#2@\@tempa}{%
      \def\MT@listname{\csname MT@#1list@#2@\@tempa\endcsname}%
      \expandafter\expandafter\expandafter\MT@in@list
         \expandafter\expandafter\expandafter
            {\csname MT@#2\endcsname}\MT@listname
      \ifMT@inlist@
      \else
         \csname MT@font@#1false\endcsname
      \fi
   }{%
   }%
}
\def\MT@checklist@family#1{%
   \csname ifMT@font@#1\endcsname\MT@checklist@family@{#1}\fi
}
\def\MT@checklist@family@#1{%
   \MT@checklist@{#1}{family}%
   \csname ifMT@font@#1\endcsname\else
      \ifx\MT@familyalias\@empty\else
         \edef\@tempa{\csname MT@#1@setname\endcsname}%
         \def\MT@listname{\csname MT@#1list@family@\@tempa\endcsname}%
         \expandafter\expandafter\expandafter\MT@in@list
            \expandafter
               {\MT@familyalias}\MT@listname
         \ifMT@inlist@
            \csname MT@font@#1true\endcsname
         \fi
      \fi
   \fi
}
\def\MT@split@name#1/#2/#3/#4/#5\@nil{%
   \gdef\MT@encoding{#1}%
   \gdef\MT@family{#2}%
   \gdef\MT@series{#3}%
   \gdef\MT@shape{#4}%
   \gdef\MT@size{#5}%
   \global\let\MT@familyalias\@empty
   \MT@ifdefined@n{MT@\MT@family @alias}{%
      \MT@escapechar{\csname MT@\MT@family @alias\endcsname}%
      \global\let\MT@familyalias\MT@val
   }{}%
}
\def\MT@set@prot@codes{%
   \MT@get@codes@list{prot}%
   \MT@ifdefined@n{MT@protcodes@\MT@protcodes@name}{%
      \MT@get@factor
      \MT@get@inh@list{protrusion}%
      \MT@ifdefined@c\MT@protrusioninh@name{%
         \MT@let@cn\@tempc{MT@protrusioninh@\MT@protrusioninh@name}%
            \ifx\@tempc\@empty\else
               \let\MT@inh@name\MT@protrusioninh@name
               \expandafter\MT@inhdo\@tempc,\relax,%
            \fi
         \global\MT@let@nc{MT@protrusioninh@\MT@protrusioninh@name}\@empty
      }{}%
      \MT@load@list{prot}{\MT@protcodes@name}%
      \MT@let@cn\@tempc{MT@protcodes@\MT@protcodes@name}%
      \expandafter\MT@protdo\@tempc,\relax,%
   }{}%
}
\def\MT@protdo#1,{%
   \ifx\relax#1\@empty\else
      \MT@protsplit #1==\relax
      \expandafter\MT@protdo\fi
}
\def\MT@protsplit#1=#2=#3\relax{%
   \KV@@sp@def\@tempa{#1}%
   \ifx\@tempa\@empty\else
      \MT@get@slot
      \ifnum\MT@char > \m@ne
         \KV@@sp@def\@tempb{#2}%
         \expandafter\MT@protsplit@val\@tempb\relax
      \fi
   \fi
}
\def\MT@protsplit@val#1,#2\relax{%
   \KV@@sp@def\@tempb{#1}%
   \MT@ifempty{\@tempb}{}{%
      \MT@adjustprotcode
      \lpcode\font@name\MT@char=\@tempcntb
   }%
   \KV@@sp@def\@tempb{#2}%
   \MT@ifempty{\@tempb}{}{%
      \MT@adjustprotcode
      \rpcode\font@name\MT@char=\@tempcntb
   }%
   \MT@ifdefined@c\MT@protrusioninh@name{%
      \MT@ifdefined@n{MT@inh@\MT@protrusioninh@name @\MT@char @}{%
         \MT@set@prot@children
      }{}%
   }{}%
}
\ifnum\MT@pdftex@no>\tw@
   \def\MT@adjustprotcode{%
      \MT@get@charwd
      \multiply\@tempcntb \@tempb
      \ifnum\@tempcntb=\z@ \else
         \divide\@tempcntb \fontdimen6 \font@name
         \MT@adjustprotcode@
      \fi
   }
   \MT@ifdefined@c\fontcharwd{%
      \def\MT@get@charwd{%
         \@tempcntb=\number\fontcharwd\font@name\MT@char}%
   }{%
      \def\MT@get@charwd{%
         \setbox\z@=\hbox{\font@name \char\MT@char}%
         \@tempcntb=\wd\z@}%
   }
\else
   \def\MT@adjustprotcode{%
      \@tempcntb=\@tempb
      \ifnum\@tempcntb=\z@ \else
         \MT@adjustprotcode@
      \fi
   }
\fi
\def\MT@adjustprotcode@{%
   \multiply\@tempcntb \MT@prot@factor@
   \divide\@tempcntb \@m
   \ifnum\@tempcntb > \@m
      \MT@warning@nl{Protrusion factor \@tempb\space for character
         `\@tempa'\MessageBreak too large (= \the\@tempcntb) in
         protrusion list `\MT@protcodes@name'}%
   \else
      \ifnum\@tempcntb < -\@m
         \MT@warning@nl{Protrusion factor \@tempb\space for character
            `\@tempa'\MessageBreak too small (= \the\@tempcntb) in
            protrusion list `\MT@protcodes@name'}%
      \fi
   \fi
}
\def\MT@set@prot@children{%
   \def\MT@lt##1{%
      \lpcode\font@name##1=\lpcode\font@name\MT@char
      \rpcode\font@name##1=\rpcode\font@name\MT@char
   }%
   \csname MT@inh@\MT@protrusioninh@name @\MT@char @\endcsname
}
\def\MT@get@factor{%
   \MT@ifdefined@n{MT@protcodes@\MT@protcodes@name @factor}{%
      \MT@let@cn\MT@prot@factor@{MT@protcodes@\MT@protcodes@name @factor}%
      \MT@vinfo{... ... Multiplying protrusion factors by \MT@prot@factor@/1000}%
   }{%
      \let\MT@prot@factor@\MT@prot@factor
   }%
}
\newif\ifMT@selected@exp
\def\MT@set@exp@codes{%
   \ifMT@selected
      \MT@get@codes@list{exp}%
      \MT@ifdefined@n{MT@expcodes@\MT@expcodes@name}{%
         \MT@get@extraopt
         \MT@resetefcode
         \MT@get@inh@list{expansion}%
         \MT@ifdefined@c\MT@expansioninh@name{%
            \MT@let@cn\@tempc{MT@expansioninh@\MT@expansioninh@name}%
               \ifx\@tempc\@empty\else
                  \let\MT@inh@name\MT@expansioninh@name
                  \expandafter\MT@inhdo\@tempc,\relax,%
               \fi
            \global\MT@let@nc{MT@expansioninh@\MT@expansioninh@name}\@empty
         }{}%
         \MT@load@list{exp}{\MT@expcodes@name}%
         \MT@let@cn\@tempc{MT@expcodes@\MT@expcodes@name}%
         \expandafter\MT@expdo\@tempc,\relax,%
         \pdffontexpand\font@name \MT@stretch@ \MT@shrink@ \MT@step@ \MT@auto@
      }{}%
   \else
      \MT@selected@exptrue
      \MT@get@codes@list{exp}%
      \MT@ifdefined@n{MT@expcodes@\MT@expcodes@name}{%
         \MT@get@extraopt
      }{%
         \let\MT@exp@factor@\@m
         \let\MT@stretch@\MT@stretch
         \let\MT@shrink@\MT@shrink
         \let\MT@step@\MT@step
         \let\MT@auto@\MT@auto
      }%
      \MT@resetefcode
      \pdffontexpand\font@name \MT@stretch@ \MT@shrink@ \MT@step@ \MT@auto@
   \fi
}
\def\MT@resetefcode@{%
   \@tempcnta\z@
   \MT@loop
      \efcode\font@name\@tempcnta=\MT@exp@factor@
      \advance\@tempcnta \@ne
      \ifnum\@tempcnta < \@cclvi \MT@repeat
}
\ifnum\MT@pdftex@no<4
   \let\MT@resetefcode\MT@resetefcode@
\else
   \def\MT@resetefcode{%
      \ifnum\MT@exp@factor@=\@m \else
         \MT@resetefcode@
      \fi
   }
\fi
\def\MT@expdo#1,{%
   \ifx\relax#1\@empty\else
      \MT@expsplit #1==\relax
      \expandafter\MT@expdo\fi
}
\def\MT@expsplit#1=#2=#3\relax{%
   \KV@@sp@def\@tempa{#1}%
   \ifx\@tempa\@empty\else
      \MT@get@slot
      \ifnum\MT@char > \m@ne
         \KV@@sp@def\@tempb{#2}%
         \@tempcnta=\@tempb
         \multiply\@tempcnta \MT@exp@factor@
         \divide\@tempcnta \@m
         \efcode\font@name\MT@char=\@tempcnta
         \MT@ifdefined@c\MT@expansioninh@name{%
            \MT@ifdefined@n{MT@inh@\MT@expansioninh@name @\MT@char @}%
               {\MT@set@exp@children}{}%
         }{}%
      \fi
   \fi
}
\def\MT@set@exp@children{%
   \def\MT@lt##1{%
      \efcode\font@name##1=\efcode\font@name\MT@char
   }%
   \csname MT@inh@\MT@expansioninh@name @\MT@char @\endcsname
}
\def\MT@get@extraopt{%
   \MT@ifdefined@n{MT@expcodes@\MT@expcodes@name @factor}{%
      \MT@let@cn\MT@exp@factor@{MT@expcodes@\MT@expcodes@name @factor}%
      \MT@vinfo{... ... Multiplying expansion factors by \MT@exp@factor@/1000}%
   }{%
      \let\MT@exp@factor@\@m
   }%
   \MT@ifdefined@n{MT@expcodes@\MT@expcodes@name @stretch}{%
      \MT@let@cn\MT@stretch@{MT@expcodes@\MT@expcodes@name @stretch}%
      \MT@vinfo{... ... Setting stretch factor to \MT@stretch@}%
   }{%
      \let\MT@stretch@\MT@stretch
   }%
   \MT@ifdefined@n{MT@expcodes@\MT@expcodes@name @shrink}{%
      \MT@let@cn\MT@shrink@{MT@expcodes@\MT@expcodes@name @shrink}%
      \MT@vinfo{... ... Setting shrink factor to \MT@shrink@}%
   }{%
      \let\MT@shrink@\MT@shrink
   }%
   \MT@ifdefined@n{MT@expcodes@\MT@expcodes@name @step}{%
      \MT@let@cn\MT@step@{MT@expcodes@\MT@expcodes@name @step}%
      \MT@vinfo{... ... Setting step factor to \MT@step@}%
   }{%
      \let\MT@step@\MT@step
   }%
   \MT@ifdefined@n{MT@expcodes@\MT@expcodes@name @auto}{%
      \MT@let@cn\MT@auto@{MT@expcodes@\MT@expcodes@name @auto}%
      \MT@vinfo{... ... Setting automatic expansion to \MT@auto@}%
   }{%
      \let\MT@auto@\MT@auto
   }%
}
\def\MT@load@list#1#2{%
   \edef\@tempa{#2}%
   \MT@let@cn\@tempb{MT@#1codes@\@tempa load}%
   \ifx\@tempa\@tempb
      \MT@warning{#1. list `\@tempa' cannot load itself}%
   \else
      \ifx\@tempb\relax\else
         \MT@ifdefined@n{MT@#1codes@\@tempb}{%
            \MT@vinfo{... ... Additionally loading #1. list `\@tempb'}%
            \begingroup
               \MT@load@list{#1}{\@tempb}%
            \endgroup
            \MT@let@cn\@tempc{MT@#1codes@\@tempb}%
            \expandafter\csname MT@#1do\expandafter\endcsname\@tempc,\relax,%
         }{%
            \MT@warning{%
               #1. list `\@tempb' undefined. Cannot load it\MessageBreak
               from list `\@tempa'}%
         }%
      \fi
   \fi
}
\let\MT@file@list\@empty
\def\MT@find@file#1{%
   \expandafter\MT@in@llist\expandafter
         {\csname MT@file@#1\endcsname}\MT@file@list
   \ifMT@inlist@\else
      \begingroup
      \MT@file@catcodes
      \InputIfFileExists{mt-#1.cfg}{%
         \MT@xadd\MT@file@list{\csname MT@file@#1\endcsname,}%
         \MT@vinfo{... Loading font settings from mt-#1.cfg}%
      }{%
         \expandafter\MT@get@basefamily#1\relax\relax\relax
         \expandafter\MT@in@llist\expandafter
                {\csname MT@file@\@tempa\endcsname}\MT@file@list
         \ifMT@inlist@\else
            \InputIfFileExists{mt-\@tempa.cfg}{%
               \MT@xadd\MT@file@list{\csname MT@file@\@tempa\endcsname,}%
               \MT@vinfo{... Loading font settings from mt-\@tempa.cfg}%
            }{%
               \MT@xadd\MT@file@list{\csname MT@file@#1\endcsname,}%
               \MT@vinfo{... No file mt-#1.cfg}%
            }%
         \fi
      }%
      \endgroup
   \fi
}
\def\MT@file@catcodes{%
     \makeatletter
     \catcode`\ 9%
     \catcode`\^7%
     \catcode`\^^I9%
     \catcode`\^^M9%
     \catcode`\\\z@
     \catcode`\{\@ne
     \catcode`\}\tw@
     \catcode`\#6%
     \catcode`\%14%
   \@makeother\<%
   \@makeother\>%
   \@makeother\*%
   \@makeother\.%
   \@makeother\-%
   \@makeother\/%
   \@makeother\[%
   \@makeother\]%
   \@makeother\`%
   \@makeother\'%
   \@makeother\"%
   \@makeother\&%
   \@makeother\;%
   \@makeother\,%
   \@makeother\!%
   \@makeother\?%
   \@makeother\$%
   \@makeother\_%
   \@makeother\~%
   \@makeother\=%
}
\def\MT@get@basefamily#1#2#3#4\relax{%
   \ifx\relax#2\relax\def\@tempa{#1}\else
      \ifx\relax#3\relax\def\@tempa{#1#2}\else
         \def\@tempa{#1#2#3}%
         \ifx\relax#4\relax\else
            \edef\@tempc{\string#4}%
            \edef\@tempb{\string x}%
            \ifx\@tempc\@tempb\else
               \edef\@tempb{\string j}%
               \ifx\@tempc\@tempb\else
                  \edef\@tempb{\string w}%
                  \ifx\@tempc\@tempb\else
                     \def\@tempa{#1#2#3#4}%
                  \fi
               \fi
            \fi
         \fi
      \fi
   \fi
}
\def\MT@get@listname#1{%
   \def\@tempb{#1}%
   \MT@next@listname1111\relax
   \MT@ifdefined@n{MT@\@tempb @\@tempa}{}{%
      \MT@next@listname1110\relax
   }%
   \MT@ifdefined@n{MT@\@tempb @\@tempa}{}{%
      \MT@next@listname1100\relax
   }%
   \MT@ifdefined@n{MT@\@tempb @\@tempa}{}{%
      \MT@next@listname1010\relax
   }%
   \MT@ifdefined@n{MT@\@tempb @\@tempa}{}{%
      \MT@next@listname1000\relax
   }%
   \MT@ifdefined@n{MT@\@tempb @\@tempa}{}{%
      \MT@next@listname0100\relax
   }%
   \MT@ifdefined@n{MT@\@tempb @\@tempa}{}{%
      \MT@next@listname0010\relax
   }%
   \MT@ifdefined@n{MT@\@tempb @\@tempa}{}{%
      \MT@next@listname0000\relax
   }%
}
\def\MT@next@listname#1#2#3#4{%
   \edef\@tempa{\MT@encoding/%
                \ifnum#1=\@ne \MT@family\fi/%
                \ifnum#2=\@ne \MT@series\fi/%
                \ifnum#3=\@ne \MT@shape\fi/%
                \ifnum#4=\@ne \MT@size\fi}%
   \MT@ifdefined@n{MT@\@tempb @\@tempa}{}{%
      \ifnum#1=\@ne
         \ifx\MT@familyalias\@empty\else
            \edef\@tempa{\MT@encoding/%
                         \MT@familyalias/%
                         \ifnum#2=\@ne \MT@series\fi/%
                         \ifnum#3=\@ne \MT@shape\fi/%
                         \ifnum#4=\@ne \MT@size\fi}%
         \fi
      \fi
   }%
}
\def\MT@get@codes@list#1{%
   \MT@get@listname{#1codes}%
   \MT@ifdefined@n{MT@#1codes@\@tempa}{%
      \global\MT@edef@n{MT@#1codes@name}{\csname MT@#1codes@\@tempa\endcsname}%
      \ifMT@selected@exp
         \MT@vinfo{... Applying non-selected expansion (list `\MT@expcodes@name')}%
      \else
         \MT@vinfo{... Using #1. list `\csname MT@#1codes@name\endcsname'}%
      \fi
   }{%
      \global\MT@let@nc{MT@#1codes@\csname MT@#1codes@name\endcsname}\@undefined
      \ifMT@selected@exp
         \MT@vinfo{... Applying non-selected expansion}%
      \else
         \MT@warning{I cannot find a #1. list for
                     `\expandafter\string\font@name'.\MessageBreak
                     Switching off #1. for this font}%
       \fi
   }%
}
\def\MT@get@inh@list#1{%
   \MT@get@listname{#1inh}%
   \MT@ifdefined@n{MT@#1inh@\@tempa}{%
      \MT@edef@n{MT@#1inh@name}{\csname MT@#1inh@\@tempa\endcsname}%
   }{%
      \MT@let@nc{MT@#1inh@name}\@undefined
   }%
}
\begingroup
   \catcode`\/=0
   /catcode`/\=12
   /catcode`/"=12
   /catcode`/A=12
   /catcode`/C=12
   /catcode`/E=12
   /catcode`/H=12
   /catcode`/L=12
   /catcode`/R=12
   /catcode`/T=12
   /lowercase{%
      /def/x{%
         /def/Mt@letterstring{THE LETTER}%
         /def/Mt@isaletter ##1THE LETTER##2##3/relax{%
            /@tempswafalse
            /ifx/relax##1/relax
               /@tempswatrue
               /edef/Mt@char{/number`##2}%
               /Mt@testrest{/Mt@letterstring}{##3}%
            /fi
         }%
         /def/Mt@characterstring{THE CHARACTER}%
         /def/Mt@isacharacter ##1THE CHARACTER##2##3/relax{%
            /@tempswafalse
            /ifx/relax##1/relax
               /@tempswatrue
               /edef/Mt@char{/number`##2}%
               /Mt@testrest{/Mt@characterstring}{##3}%
            /fi
         }%
         /def/Mt@charstring{\CHAR"}%
         /def/Mt@isachar##1\CHAR"##2##3##4/relax{%
            /@tempswafalse
            /ifx/relax##1/relax
               /@tempswatrue
               /if##3\/relax
                  /edef/Mt@char{/number"##2}%
                  /Mt@testrest{/Mt@charstring}{##3##4}%
               /else
                  /edef/Mt@char{/number"##2##3}%
                  /Mt@testrest{/Mt@charstring}{##4}%
               /fi
            /fi
         }%
      }%
   }
/expandafter/endgroup/x
\def\Mt@testrest#1#2{%
   \edef\x{#1}%
   \edef\y{#2}%
   \ifx\x\y\else
      \def\Mt@rest{#2}%
   \fi
}
\def\MT@get@slot{%
   \MT@count=\escapechar
   \escapechar=`\\
   \let\Mt@rest\@empty
   \let\Mt@char\m@ne
   \edef\MT@char{\expandafter\meaning\@tempa}%
   \expandafter\expandafter\expandafter\Mt@isaletter
         \expandafter\MT@char\Mt@letterstring \relax\relax
   \ifnum\Mt@char < \z@
      \expandafter\expandafter\expandafter\Mt@isacharacter
            \expandafter\MT@char\Mt@characterstring \relax\relax
      \if@tempswa
         \expandafter\MT@get@number\@tempa\relax\relax
      \fi
      \ifnum\Mt@char < \z@
         \expandafter\ifx\expandafter\ \@tempa\relax
            \edef\Mt@char{\number`\\}%
         \else
            \edef\MT@char{\expandafter\csname\expandafter\MT@encoding
                              \expandafter\string\@tempa\endcsname}%
            \edef\MT@char{\expandafter\meaning\MT@char}%
            \expandafter\expandafter\expandafter\Mt@isachar
                  \expandafter\MT@char\Mt@charstring \relax\relax\relax
            \if@tempswa \else
               \expandafter\expandafter\expandafter\Mt@isaletter
                     \expandafter\MT@char\Mt@letterstring \relax\relax
            \fi
         \fi
         \ifnum\Mt@char < \z@
            \expandafter\MT@two@tokens\@tempa\relax\relax
            \edef\MT@char{\expandafter\meaning\@tempa}%
            \expandafter\expandafter\expandafter\Mt@isaletter
                  \expandafter\MT@char\Mt@letterstring \relax\relax
            \if@tempswa \else
               \MT@warning{Unknown slot number of `\@tempa' in\MessageBreak
                           encoding `\MT@encoding'. Ignoring it}%
            \fi
         \fi
      \fi
   \fi
   \ifx\Mt@rest\@empty\else
      \MT@warning{Unknown slot number of `\@tempa' in\MessageBreak
                  encoding `\MT@encoding'.
                  Make sure it's a single character\MessageBreak
                  (or a number). Ignoring it}%
      \let\Mt@char\m@ne
   \fi
   \let\MT@char\Mt@char
   \escapechar=\MT@count
}
\def\MT@two@tokens#1#2\relax{%
   \MT@ifempty{#2}{}%
      {\edef\@tempa{\@tempa}}%
}
\def\MT@get@number#1#2#3\relax{%
   \ifx\relax#3\relax\else
      \ifx\relax#2\relax\else
         \if#1"\relax
            \def\@tempc{\uppercase{\edef\Mt@char{\number#1#2#3}}}%
            \@tempc
         \else
            \if#1'\relax
               \def\Mt@char{\number#1#2#3}%
            \else
               \MT@ifnumber{#1#2#3}{%
                  \def\Mt@char{\number#1#2#3}%
               }{}%
            \fi
         \fi
         \ifnum\Mt@char > \@cclv
            \MT@warning{%
               Number \noexpand#1\noexpand#2\noexpand#3 in encoding
               `\MT@encoding' too large!\MessageBreak Ignoring it}%
            \let\Mt@char\m@ne
         \fi
         \let\Mt@rest\@empty
      \fi
   \fi
}
\let\MT@font@list\@empty
\g@addto@macro\pickup@font{%
   \begingroup \escapechar\m@ne
   \expandafter\MT@in@llist\expandafter
         {\font@name}\MT@font@list
   \ifMT@inlist@\else
      \MT@setupfont
      \xdef\MT@font@list{\MT@font@list\font@name,}%
   \fi
   \endgroup
}
\let\MT@pickupfont\pickup@font
\AtBeginDocument{%
   \ifx\MT@pickupfont\pickup@font\else
      \MT@warning@nl{%
         Another package has overwritten the definition\MessageBreak
         of \string\pickup@font. I might not be able to\MessageBreak
         apply any micro-typography. Please find the\MessageBreak
         culprit, and load it before the microtype package}%
   \fi
}
\def\DeclareMicroTypeSet{%
   \@ifstar
      {\@ifnextchar[%]
         \MT@DeclareSetAndUseIt
         {\MT@DeclareSetAndUseIt[]}}%
      {\@ifnextchar[%]
         \MT@DeclareSet
         {\MT@DeclareSet[]}}%
}
\def\MT@DeclareSet[#1]#2#3{%
   \MT@DeclareSet@{#1}{#2}{#3}%
}
\def\MT@DeclareSetAndUseIt[#1]#2#3{%
   \MT@DeclareSet@{#1}{#2}{#3}%
   \UseMicroTypeSet[#1]{#2}%
}
\def\MT@DeclareSet@#1#2#3{%
  \KV@@sp@def\@tempa{#1}%
  \MT@ifempty{\@tempa}{%
     \MT@declare@sets{protrusion}{#2}{#3}%
     \MT@declare@sets{expansion} {#2}{#3}%
  }{%
     \expandafter\MT@declare@sets\expandafter{\@tempa}{#2}{#3}%
  }%
}
\let\MT@tmp@setname\@empty
\def\MT@declare@sets#1#2#3{%
   \KV@@sp@def\MT@tmp@setname{#2}%
   \global\MT@let@nc{MT@#1list@@\MT@tmp@setname}\@empty
   \setkeys{MT#1@set}{#3}%
}
\def\MT@define@set@keys#1{%
   \MT@define@set@key{#1}{encoding}%
   \MT@define@set@key{#1}{family}%
   \MT@define@set@key{#1}{series}%
   \MT@define@set@key{#1}{shape}%
   \MT@define@set@key@size{#1}%
}
\def\MT@define@set@key#1#2{%
   \define@key{MT#1@set}{#2}[]{%
      \@for\MT@val:=##1\do{%
         \MT@remove@spaces{\MT@val}%
         \MT@get@highlevel{#2}%
         \MT@escapechar{\MT@val}%
         \MT@addto@list{#1}{#2}{\MT@val}%
      }%
   }%
}
\def\MT@get@highlevel#1{%
   \MT@getlast{\MT@val}%
   \if*\@tempb
      \MT@ifempty{\@tempa}{\def\@tempa{#1}}{}%
      \def\MT@val{\csname \@tempa default\endcsname}%
      \ifx\@nodocument\relax\else
         \expandafter\ifx
               \csname MT@check@\MT@tmp@setname @\@tempa\endcsname\@empty
         \else
            \global\MT@edef@n{MT@\MT@tmp@setname @\@tempa @default}{\MT@val}%
            \edef\x{{\MT@tmp@setname}{\@tempa}}%
            \expandafter\AtBeginDocument\expandafter{%
               \expandafter\MT@check@default\x
            }%
            \global\MT@let@nc{MT@check@\MT@tmp@setname @\@tempa}\@empty
         \fi
      \fi
   \fi
}
\def\MT@check@default#1#2{%
   \MT@let@cn\@tempa{MT@#1@#2@default}%
   \edef\@tempb{\csname #2default\endcsname}%
   \ifx\@tempa\@tempb\else
      \MT@warning@nl{\expandafter\noexpand\csname #2default\endcsname
            has changed (`\@tempa' <> `\@tempb')!\MessageBreak
            This might affect the `#1' font set.\MessageBreak
            Please make all relevant font changes *before*\MessageBreak
            loading the `microtype' package}%
   \fi
}
\def\MT@getlast#1{\def\@tempa{}\def\@tempb{}%
   \expandafter\MT@getlast@#1\@nil}
\def\MT@getlast@#1{\ifx#1\@nil \let\next=\relax
   \else \edef\@tempa{\@tempa\@tempb}\def\@tempb{#1}%
      \let\next=\MT@getlast@\fi \next}
\def\MT@escapechar#1{%
   \begingroup
   \escapechar\m@ne
   \xdef\MT@val{\expandafter\string\csname #1\endcsname}%
   \endgroup
}
\def\MT@define@set@key@size#1{%
   \define@key{MT#1@set}{size}[]{%
      \@for\MT@val:=##1\do{%
         \MT@remove@spaces{\MT@val}%
         \MT@get@size
         \MT@addto@list{#1}{size}{\MT@val}%
      }%
   }%
}
\def\MT@get@size{%
   \let\@tempa\relax
   \if*\MT@val\relax
      \def\@tempa{\normalsize}%
   \else
      \MT@let@cn\@tempa{\MT@val}%
   \fi
   \ifx\@tempa\relax\else
      \begingroup
         \def\set@fontsize##1##2##3##4\@nil{\gdef\MT@val{##2}}%
         \@tempa\@nil
      \endgroup
   \fi
   \setbox\z@=\hbox{\MT@count=0\MT@val\relax
      \ifnum\MT@count=\z@
         \@tempswafalse
      \else
         \@tempswatrue
      \fi\expandafter}%
   \if@tempswa
      \@defaultunits\@tempdima\MT@val pt\relax\@nnil
      \edef\MT@val{\strip@pt\@tempdima}%
   \else
      \MT@warning{Could not parse font size `\MT@val'\MessageBreak
                  in font set `\MT@tmp@setname'}%
   \fi
}
\def\MT@addto@list#1#2#3{%
   \expandafter\MT@xadd\csname MT@#1list@#2@\MT@tmp@setname\endcsname
      {\noexpand\MT@lt{#3}}%
}
\MT@define@set@keys{protrusion}
\MT@define@set@keys{expansion}
\renewcommand{\UseMicroTypeSet}[2][]{%
   \KV@@sp@def\@tempa{#1}%
   \MT@ifempty{\@tempa}{%
      \MT@use@sets{protrusion}{#2}%
      \MT@use@sets{expansion} {#2}%
   }{%
      \expandafter\MT@use@sets\expandafter{\@tempa}{#2}%
   }%
}
\def\MT@use@sets#1#2{%
   \KV@@sp@def{\@tempa}{#2}%
   \MT@ifdefined@n{MT@#1list@@\@tempa}{%
      \global\MT@edef@n{MT@#1@setname}{\@tempa}%
      \MT@info{Using #1 set `\@tempa'}%
   }{%
      \MT@ifdefined@n{MT@#1@setname}{}{%
         \global\MT@def@n{MT@#1@setname}{alltext}%
      }%
      \MT@warning{The #1 set `\@tempa' is undeclared.\MessageBreak
                  Using set `\csname MT@#1@setname\endcsname' instead}%
   }%
}
\renewcommand{\DeclareMicroTypeAlias}[2]{%
   \KV@@sp@def\@tempa{#1}%
   \KV@@sp@def\@tempb{#2}%
   \global\MT@edef@n{MT@\@tempa @alias}{\@tempb}%
}
\renewcommand{\SetProtrusion}[3][]{%
   \global\let\MT@protcodes@name\@undefined
   \let\MT@load\@undefined
   \let\MT@extra@factor\@undefined
   \setkeys{MT@protcodes}{#1}%
   \MT@get@codes@name{prot}%
   \MT@set@factor
   \global\MT@def@n{MT@protcodes@\MT@protcodes@name}{#3}%
   \setkeys{MT@protcodes}{#2}%
   \def\MT@permutelist{protcodes}%
   \MT@permute
}
\renewcommand{\SetExpansion}[3][]{%
   \global\let\MT@expcodes@name\@undefined
   \let\MT@extra@factor\@undefined
   \let\MT@extra@stretch\@undefined
   \let\MT@extra@shrink\@undefined
   \let\MT@extra@step\@undefined
   \let\MT@extra@auto\@undefined
   \let\MT@load\@undefined
   \setkeys{MT@expcodes}{#1}%
   \MT@get@codes@name{exp}%
   \MT@set@exp@opt
   \global\MT@def@n{MT@expcodes@\MT@expcodes@name}{#3}%
   \setkeys{MT@expcodes}{#2}%
   \def\MT@permutelist{expcodes}%
   \MT@permute
}
\def\MT@get@codes@name#1{%
   \MT@ifdefined@n{MT@#1codes@name}{%
      \MT@ifdefined@n{MT@#1codes@\csname MT@#1codes@name\endcsname}{%
         \MT@warning{Redefining list `\csname MT@#1codes@name\endcsname'}%
      }{}%
   }{%
      \@tempcnta=\@ne
      \MT@loop
         \MT@ifdefined@n{MT@#1codes@#1-\romannumeral\@tempcnta}{%
            \advance \@tempcnta \@ne
         }{%
            \global\MT@edef@n{MT@#1codes@name}{#1-\romannumeral\@tempcnta}%
            \@tempcnta=\z@
         }%
         \ifnum\@tempcnta > \z@ \MT@repeat
   }%
   \MT@ifdefined@c\MT@load{%
      \global\MT@let@nc{MT@#1codes@\csname MT@#1codes@name\endcsname load}\MT@load
   }{}%
}
\def\MT@set@factor{%
   \MT@ifdefined@c\MT@extra@factor{%
      \global\MT@let@nc{MT@protcodes@\MT@protcodes@name @factor}\MT@extra@factor
   }{}%
}
\def\MT@set@exp@opt{%
   \MT@ifdefined@c\MT@extra@factor{%
      \global\MT@let@nc{MT@expcodes@\MT@expcodes@name @factor}\MT@extra@factor
   }{}%
   \MT@ifdefined@c\MT@extra@stretch{%
      \global\MT@let@nc{MT@expcodes@\MT@expcodes@name @stretch}\MT@extra@stretch
   }{}%
   \MT@ifdefined@c\MT@extra@shrink{%
      \global\MT@let@nc{MT@expcodes@\MT@expcodes@name @shrink}\MT@extra@shrink
   }{}%
   \MT@ifdefined@c\MT@extra@step{%
      \global\MT@let@nc{MT@expcodes@\MT@expcodes@name @step}\MT@extra@step
   }{}%
   \MT@ifdefined@c\MT@extra@auto{%
      \global\MT@let@nc{MT@expcodes@\MT@expcodes@name @auto}\MT@extra@auto
   }{}%
}
\def\MT@define@code@key#1#2{%
   \define@key{MT@#1}{#2}[]{%
      \@tempcnta=\@ne
      \@for\MT@val:=##1\do{%
         \MT@remove@spaces{\MT@val}%
         \MT@get@highlevel{#2}%
         \MT@edef@n{MT@temp#2\romannumeral\@tempcnta}{\MT@val}%
         \advance\@tempcnta \@ne
      }%
   }%
}
\def\MT@define@code@key@size#1{%
   \define@key{MT@#1}{size}[]{%
      \@tempcnta=\@ne
      \@for\MT@val:=##1\do{%
         \MT@remove@spaces{\MT@val}%
         \MT@get@size
         \MT@edef@n{MT@tempsize\romannumeral\@tempcnta}{\MT@val}%
         \advance\@tempcnta \@ne
      }%
   }%
}
\def\MT@declare@codes#1{%
   \define@key{MT@#1codes}{name}[]{%
      \MT@ifempty{##1}{}{%
         \global\MT@def@n{MT@#1codes@name}{##1}%
      }%
   }%
   \define@key{MT@#1codes}{load}[]{%
      \MT@ifempty{##1}{}{%
         \def\MT@load{##1}%
      }%
   }%
   \define@key{MT@#1codes}{factor}[]{%
      \MT@ifempty{##1}{}{%
         \def\MT@extra@factor{##1 }%
      }%
   }%
   \MT@define@code@key{#1codes}{encoding}%
   \MT@define@code@key{#1codes}{family}%
   \MT@define@code@key{#1codes}{series}%
   \MT@define@code@key{#1codes}{shape}%
   \MT@define@code@key@size{#1codes}%
}
\MT@declare@codes{prot}
\MT@declare@codes{exp}
\def\MT@define@expcodes@key#1{%
   \define@key{MT@expcodes}{#1}[]{%
      \MT@ifempty{##1}{}{%
         \MT@def@n{MT@extra@#1}{##1 }%
      }%
   }%
}
\MT@define@expcodes@key{stretch}
\MT@define@expcodes@key{shrink}
\MT@define@expcodes@key{step}
\define@key{MT@expcodes}{auto}[]{%
   \MT@ifempty{#1}{\def\@tempb{true}}{\def\@tempb{#1}}%
   \csname if\@tempb\endcsname
      \def\MT@extra@auto{autoexpand }%
   \else
      \let\MT@extra@auto\@empty
   \fi
}
\renewcommand{\DeclareCharacterInheritance}[3][]{%
   \KV@@sp@def\@tempa{#1}%
   \MT@ifempty{\@tempa}{%
       \MT@declare@char@inh{protrusion}{#2}{#3}%
       \MT@declare@char@inh{expansion} {#2}{#3}%
   }{%
       \expandafter\MT@declare@char@inh\expandafter{\@tempa}{#2}{#3}%
   }%
}
\def\MT@declare@char@inh#1#2#3{%
   \MT@let@nc{MT@#1inh@name}\@undefined
   \MT@get@inh@name{#1}%
   \global\MT@def@n{MT@#1inh@\csname MT@#1inh@name\endcsname}{#3}%
   \setkeys{MT@#1inh}{#2}%
   \def\MT@permutelist{#1inh}%
   \MT@permute
}
\def\MT@get@inh@name#1{%
   \@tempcnta=\@ne
   \MT@loop
      \MT@ifdefined@n{MT@#1inh@#1-inh-\romannumeral\@tempcnta}{%
         \advance \@tempcnta \@ne
      }{%
         \MT@edef@n{MT@#1inh@name}{#1-inh-\romannumeral\@tempcnta}%
         \@tempcnta=\z@
      }%
      \ifnum\@tempcnta > \z@ \MT@repeat
}
\def\MT@define@inh@key@encoding#1{%
   \define@key{MT@#1}{encoding}[]{%
      \KV@@sp@def\MT@val{##1}%
      \expandafter\MT@encoding@check\MT@val,\@nil
      \MT@get@highlevel{encoding}%
      \MT@edef@n{MT@tempencoding\romannumeral1}{\MT@val}%
   }%
}
\def\MT@encoding@check#1,#2\@nil{%
   \MT@ifempty{#2}{}{%
      \edef\MT@val{#1}%
      \MT@warning{You may only specify one encoding for character\MessageBreak
                  inheritance lists. Ignoring encoding #2}%
   }%
}
\def\MT@define@inh@keys#1{%
   \MT@define@inh@key@encoding{#1inh}%
   \MT@define@code@key{#1inh}{family}%
   \MT@define@code@key{#1inh}{series}%
   \MT@define@code@key{#1inh}{shape}%
   \MT@define@code@key@size{#1inh}%
}
\MT@define@inh@keys{protrusion}
\MT@define@inh@keys{expansion}
\def\MT@inhdo#1,{%
   \ifx\relax#1\@empty\else
      \MT@inhsplit #1==\relax
      \expandafter\MT@inhdo\fi
}
\def\MT@inhsplit#1=#2=#3\relax{%
   \KV@@sp@def\@tempa{#1}%
   \ifx\@tempa\@empty\else
      \MT@get@slot
      \ifnum\MT@char > \m@ne
         \let\MT@val\MT@char
         \let\MT@lt\relax
         \KV@@sp@def\@tempb{#2}%
         \@for\@tempa:=\@tempb\do{%
            \MT@remove@spaces{\@tempa}%
            \ifx\@tempa\@empty\else
               \MT@get@slot
               \ifnum\MT@char > \m@ne
                  \expandafter\MT@xadd\csname MT@inh@\MT@inh@name @\MT@val @\endcsname
                     {\noexpand\MT@lt{\MT@char}}%
               \fi
            \fi
         }%
      \fi
   \fi
}
\def\MT@permute{%
   \let\MT@cnt@encoding\@ne
   \MT@permute@
   \MT@permute@reset
}
\def\MT@permute@{%
   \let\MT@cnt@family\@ne
   \MT@permute@@
   \MT@increment\MT@cnt@encoding
   \MT@ifdefined@n{MT@tempencoding\romannumeral\MT@cnt@encoding}%
      {\MT@permute@}{}%
}
\def\MT@permute@@{%
   \let\MT@cnt@series\@ne
   \MT@permute@@@
   \MT@increment\MT@cnt@family
   \MT@ifdefined@n{MT@tempfamily\romannumeral\MT@cnt@family}%
      {\MT@permute@@}{}%
}
\def\MT@permute@@@{%
   \let\MT@cnt@shape\@ne
   \MT@permute@@@@
   \MT@increment\MT@cnt@series
   \MT@ifdefined@n{MT@tempseries\romannumeral\MT@cnt@series}%
      {\MT@permute@@@}{}%
}
\def\MT@permute@@@@{%
   \let\MT@cnt@size\@ne
   \MT@permute@@@@@
   \MT@increment\MT@cnt@shape
   \MT@ifdefined@n{MT@tempshape\romannumeral\MT@cnt@shape}%
      {\MT@permute@@@@}{}%
}
\def\MT@permute@@@@@{%
   \MT@permute@define{encoding}%
   \MT@permute@define{family}%
   \MT@permute@define{series}%
   \MT@permute@define{shape}%
   \MT@permute@define{size}%
   \edef\@tempa{\MT@tempencoding/%
                \MT@tempfamily/%
                \MT@tempseries/%
                \MT@tempshape/%
                \MT@tempsize}%
   \def\@tempb{////}%
   \ifx\@tempa\@tempb\else
      \ifx\MT@tempencoding\@empty
         \MT@warning{%
            You have to specify an encoding for \MT@permutelist. list\MessageBreak
            `\csname MT@\MT@permutelist @name\endcsname'. I will ignore it}%
      \else
         \MT@ifdefined@n{MT@\MT@permutelist @\@tempa}{%
            \MT@warning{\MT@permutelist. list
               `\csname MT@\MT@permutelist @name\endcsname' will override list\MessageBreak
               `\csname MT@\MT@permutelist @\@tempa\endcsname' for font `\@tempa'}%
         }{}%
         \ifx\MT@tempsize\@empty\else
            \expandafter\MT@size@check\@tempa//\@nil
         \fi
         \global\MT@edef@n{MT@\MT@permutelist @\@tempa}%
               {\csname MT@\MT@permutelist @name\endcsname}%
      \fi
   \fi
   \MT@increment\MT@cnt@size
   \MT@ifdefined@n{MT@tempsize\romannumeral\MT@cnt@size}%
      {\MT@permute@@@@@}{}%
}
\def\MT@size@check#1//#2\@nil{%
   \MT@ifempty{#2}{}{%
      \MT@let@nc{MT@tempsize\romannumeral\MT@cnt@size}\@undefined
      \edef\@tempa{\MT@tempencoding/\MT@tempfamily/\MT@tempseries/\MT@tempshape/}%
      \MT@warning{Size may only be specified if all other font\MessageBreak
         characteristics are specified, too. Ignoring size\MessageBreak
         in \MT@permutelist. list `\csname MT@\MT@permutelist @name\endcsname'}%
   }%
}
\def\MT@permute@define#1{%
   \expandafter\@tempcnta\csname MT@cnt@#1\endcsname
   \MT@ifdefined@n{MT@temp#1\romannumeral\@tempcnta}{%
      \MT@edef@n{MT@temp#1}{\csname MT@temp#1\romannumeral\@tempcnta\endcsname}%
   }{%
      \MT@let@nc{MT@temp#1}\@empty
   }%
}
\def\MT@permute@reset{%
   \MT@permute@reset@{encoding}%
   \MT@permute@reset@{family}%
   \MT@permute@reset@{series}%
   \MT@permute@reset@{shape}%
   \MT@permute@reset@{size}%
}
\def\MT@permute@reset@#1{%
   \@tempcnta\@ne
   \MT@loop
      \MT@let@nc{MT@temp#1\romannumeral\@tempcnta}\@undefined
      \advance\@tempcnta\@ne
      \MT@ifdefined@n{MT@temp#1\romannumeral\@tempcnta}
         {\@tempswatrue}
         {\@tempswafalse}%
      \if@tempswa\MT@repeat
}
\def\MT@capitalize#1#2\@nil{%
   \uppercase{\def\@tempb{#1}}%
   \edef\@tempb{\@tempb#2}}%
\def\microtypesetup{\setkeys{MTX}}
\def\MT@define@optionX#1{%
   \define@key{MTX}{#1}[true]{%
      \@for\MT@val:=##1\do{%
         \MT@capitalize#1\@nil
         \MT@remove@spaces{\MT@val}%
         \MT@ifempty{\MT@val}{}{%
            \@tempcnta\m@ne
            \def\@tempa{true}%
            \ifx\MT@val\@tempa
               \expandafter\expandafter\expandafter\ifx\expandafter
               \csname ifMT@#1\expandafter\endcsname\csname iftrue\endcsname
                  \expandafter\@tempcnta\csname MT@#1level\endcsname
                  \MT@info{\@tempb\space enabled}%
               \else
                  \MT@warning{You cannot enable #1 if it was disabled\MessageBreak
                              in the package options,}%
               \fi
               \let\MT@val\relax
            \fi
            \def\@tempa{false}%
            \ifx\MT@val\@tempa
               \@tempcnta\z@
               \MT@info{\@tempb\space disabled}%
               \let\MT@val\relax
            \fi
            \def\@tempa{compatibility}%
            \ifx\MT@val\@tempa
               \@tempcnta\@ne
               \MT@let@nc{MT@#1level}\@ne
               \MT@info{\@tempb\space set to level 1}%
               \let\MT@val\relax
            \fi
            \def\@tempa{nocompatibility}%
            \ifx\MT@val\@tempa
               \@tempcnta\tw@
               \MT@let@nc{MT@#1level}\tw@
               \MT@info{\@tempb\space set to level 2}%
               \let\MT@val\relax
            \fi
            \ifx\MT@val\relax\else
               \MT@warning{Value `\MT@val' not recognized}%
            \fi
            \ifnum\@tempcnta>\m@ne
               \def\@tempa{Expansion}%
               \ifx\@tempa\@tempb
                  \pdfadjustspacing\@tempcnta
               \else
                  \pdfprotrudechars\@tempcnta
               \fi
            \fi
         }%
      }%
   }%
}
\MT@define@optionX{protrusion}
\MT@define@optionX{expansion}
\define@key{MTX}{activate}[]{%
   \setkeys{MTX}{protrusion={#1}}%
   \setkeys{MTX}{expansion={#1}}%
}
\def\MT@gobblethree#1#2#3{}
\let\MT@saved@setupfont\MT@setupfont
\define@key{MTX}{disable}[]{%
   \MT@info{Inactivate microtype package}%
   \let\MT@setupfont\MT@gobblethree
}
\define@key{MTX}{enable}[]{%
   \MT@info{Reactivate microtype package}%
   \let\MT@setupfont\MT@saved@setupfont
}
\newif\ifMT@opt@protrusion
\newif\ifMT@opt@expansion
\newif\ifMT@opt@auto
\def\MT@define@option#1{%
   \define@key{MT}{#1}[true]{%
      \csname MT@opt@#1true\endcsname
      \@for\MT@val:=##1\do{%
         \MT@remove@spaces{\MT@val}%
         \MT@ifempty{\MT@val}{}{%
            \def\@tempa{false}%
            \ifx\MT@val\@tempa
               \csname MT@#1false\endcsname
               \let\MT@val\relax
            \fi
            \def\@tempa{compatibility}%
            \ifx\MT@val\@tempa
               \MT@def@n{MT@#1level}{1}%
               \let\MT@val\relax
            \fi
            \def\@tempa{nocompatibility}%
            \ifx\MT@val\@tempa
               \MT@def@n{MT@#1level}{2}%
               \let\MT@val\relax
            \fi
            \ifx\MT@val\relax\else
               \csname MT@#1true\endcsname
               \def\@tempa{true}%
               \ifx\MT@val\@tempa
               \else
                  \MT@ifdefined@n{MT@#1list@@\MT@val}{%
                     \global\MT@edef@n{MT@#1@setname}{\MT@val}%
                     \MT@info@nl{Using #1 set `\MT@val'}%
                  }{%
                     \global\MT@def@n{MT@#1@setname}{alltext}%
                     \MT@warning@nl{%
                        The #1 set `\MT@val' is undeclared.\MessageBreak
                        Using set `\csname MT@#1@setname\endcsname' instead}%
                  }%
               \fi
            \fi
         }%
      }%
   }%
}
\MT@define@option{protrusion}
\MT@define@option{expansion}
\define@key{MT}{activate}[]{%
   \setkeys{MT}{protrusion={#1}}%
   \setkeys{MT}{expansion={#1}}%
}
\define@key{MT}{DVIoutput}[true]{\csname MT@DVIoutput#1\endcsname}
\define@key{MT}{draft}[true]{\csname MT@draft#1\endcsname}
\define@key{MT}{final}[true]{%
   \def\@tempa{#1}\def\@tempb{true}%
   \ifx\@tempa\@tempb
      \MT@draftfalse
   \else
      \MT@drafttrue
   \fi}
\define@key{MT}{verbose}[true]{%
   \def\@tempa{#1}\def\@tempb{true}%
   \ifx\@tempa\@tempb
      \let\MT@vinfo\MT@info@nl
   \fi}
\define@key{MT}{auto}[true]{\csname MT@auto#1\endcsname\MT@opt@autotrue}
\define@key{MT}{selected}[true]{\csname MT@selected#1\endcsname}
\define@key{MT}{factor}[1000]{\MT@define@number\MT@prot@factor{#1}{factor}}
\define@key{MT}{stretch}[20]{\MT@define@number\MT@stretch{#1}{stretch}}
\define@key{MT}{shrink}[20]{\MT@define@number\MT@shrink{#1}{shrink}}
\define@key{MT}{step}[5]{\MT@define@number\MT@step{#1}{step}}
\def\MT@define@number#1#2#3{%
   \MT@ifnumber{#2}{%
      \def#1{#2 }%
   }{%
      \MT@warning@nl{Value `#2' for option `#3' is not a number.\MessageBreak
                     Using default value}%
   }%
}
\MT@protrusiontrue
\ifnum\pdfoutput=\z@\else
   \ifnum\MT@pdftex@no=4\relax
      \MT@expansiontrue
      \MT@autotrue
   \fi
\fi
\MT@info@nl{Trying to load local config file `microtype.cfg' ..}
\IfFileExists{microtype.cfg}{%
   \begingroup
   \MT@file@catcodes
   \input{microtype.cfg}%
   \endgroup
   \MT@info@nl{... local config file loaded successfully}%
}{%
   \MT@warning@nl{... local config file not found! This will\MessageBreak
                  almost certainly lead to undesired results}%
}
\def\ProcessOptionsWithKV#1{%
   \let\@tempc\relax
   \let\KVo@tempa\@empty
   \@for\CurrentOption:=\@classoptionslist\do{%
      \@ifundefined{KV@#1@\CurrentOption}{}{%
         \edef\KVo@tempa{\KVo@tempa,\CurrentOption,}%
         \@expandtwoargs\@removeelement\CurrentOption
            \@unusedoptionlist\@unusedoptionlist
      }%
   }%
   \edef\KVo@tempa{%
      \noexpand\setkeys{#1}{%
         \KVo@tempa\@ptionlist{\@currname.\@currext}%
      }%
   }%
   \KVo@tempa
   \AtEndOfPackage{\let\@unprocessedoptions\relax}%
   \let\CurrentOption\@empty
}
\ProcessOptionsWithKV{MT}
\ifMT@DVIoutput
   \ifnum\pdfoutput=\z@
      \MT@info@nl{Generating DVI output}
   \else
      \MT@info@nl{Changing output mode to DVI}
      \pdfoutput\z@
      \ifMT@opt@expansion\else
         \MT@expansionfalse
      \fi
   \fi
\else
   \MT@info@nl{Generating \ifnum\pdfoutput=\z@ DVI \else PDF \fi output}
\fi
\ifMT@draft
   \MT@info@nl{`draft' option active.\MessageBreak
               Disabling all micro-typographic features}
   \MT@protrusionfalse
   \MT@expansionfalse
   \let\MT@setupfont\relax
   \let\microtypesetup\@gobble
   \renewcommand{\UseMicroTypeSet}[2][]{}
   \renewcommand{\SetProtrusion}[3][]{}
   \renewcommand{\SetExpansion}[3][]{}
\else
   \ifMT@protrusion
      \MT@info@nl{Character protrusion enabled (level \MT@protrusionlevel)%
         \ifnum\MT@prot@factor=\@m\else,\MessageBreak factor: \MT@prot@factor\fi}
      \MT@ifdefined@n{MT@protrusion@setname}{}{%
         \global\def\MT@protrusion@setname{alltext}%
         \MT@info@nl{Using default protrusion set `alltext'}%
      }
   \else
      \MT@info@nl{No character protrusion}
   \fi
   \ifMT@expansion
      \ifnum\MT@stretch=\m@ne
         \def\MT@stretch{20 }
      \fi
      \ifnum\MT@shrink=\m@ne
         \ifnum\MT@stretch>\z@
            \let\MT@shrink\MT@stretch
         \else
            \def\MT@shrink{20 }
         \fi
      \fi
      \ifnum\MT@step=\m@ne
         \ifnum\MT@stretch>\MT@shrink
            \ifnum\MT@shrink=\z@
               \@tempcnta=\MT@stretch
            \else
               \@tempcnta=\MT@shrink
            \fi
         \else
            \ifnum\MT@stretch=\z@
               \@tempcnta=\MT@shrink
            \else
               \@tempcnta=\MT@stretch
            \fi
         \fi
         \divide\@tempcnta by 5\relax
      \else
         \@tempcnta=\MT@step
      \fi
      \ifnum\@tempcnta=\z@ \@tempcnta=\@ne\fi
      \edef\MT@step{\number\@tempcnta\space}
      \let\MT@auto\@empty
      \ifMT@auto
         \ifnum\MT@pdftex@no=4\relax
            \ifnum\pdfoutput=\z@
               \ifMT@opt@auto
                  \MT@warning@nl{%
                     Automatic font expansion only works for PDF output.\MessageBreak
                     However, you are creating a DVI file. I will switch\MessageBreak
                     automatic font expansion off and hope that expanded\MessageBreak
                     fonts are available}
               \fi
               \MT@autofalse
            \else
               \def\MT@auto{autoexpand}
            \fi
         \else
            \ifMT@opt@auto
               \MT@warning@nl{%
                  Your version of pdftex is too old for automatic\MessageBreak
                  font expansion. I will switch it off and hope that\MessageBreak
                  expanded fonts are available on your system.\MessageBreak
                  Install pdftex version 1.20a or newer}
            \fi
            \MT@autofalse
            \def\MT@auto{1000 }
         \fi
      \else
         \ifnum\MT@pdftex@no<4\relax
            \def\MT@auto{1000 }
         \fi
      \fi
      \MT@info@nl{\ifMT@auto Automatic f\else F\fi ont expansion enabled
                  (level \MT@expansionlevel),\MessageBreak
                  stretch: \MT@stretch/ shrink: \MT@shrink/ step: \MT@step/
                  \ifMT@selected\else non-\fi selected}
      \MT@ifdefined@n{MT@expansion@setname}{}{%
         \global\def\MT@expansion@setname{basictext}%
         \MT@info@nl{Using default expansion set `basictext'}%
      }
   \else
      \MT@info@nl{No font expansion}
   \fi
\fi
\ifMT@protrusion
   \pdfprotrudechars\MT@protrusionlevel
\fi
\ifMT@expansion
   \pdfadjustspacing\MT@expansionlevel
\fi
\endinput
%%
%% End of file `microtype.sty'.
