%%
%% This is file `fltrace.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% ltoutput.dtx  (with options: `fltrace,trace')
%% 
%% This is a generated file.
%% 
%% The source is maintained by the LaTeX Project team and bug
%% reports for it can be opened at https://latex-project.org/bugs.html
%% (but please observe conditions on bug reports sent to that address!)
%% 
%% 
%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%% 
%% This file was generated from file(s) of the LaTeX base system.
%% --------------------------------------------------------------
%% 
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%    https://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008 or later.
%% 
%% This file has the LPPL maintenance status "maintained".
%% 
%% This file may only be distributed together with a copy of the LaTeX
%% base system. You may however distribute the LaTeX base system without
%% such generated files.
%% 
%% The list of all files belonging to the LaTeX base distribution is
%% given in the file `manifest.txt'. See also `legal.txt' for additional
%% information.
%% 
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%% From File: ltoutput.dtx
\ProvidesPackage{fltrace}
       [2021/07/31 v1.4e
                  Tracing LaTeX floats algorithm (FMi)]
\def\onecolumn{%
  \clearpage
  \global\columnwidth\textwidth
  \global\hsize\columnwidth
  \global\linewidth\columnwidth
  \global\@twocolumnfalse
  \col@number \@ne
  \@floatplacement}
\def \newpage {%
  \if@noskipsec
    \ifx \@nodocument\relax
      \leavevmode
      \global \@noskipsecfalse
    \fi
  \fi
  \if@inlabel
    \leavevmode
    \global \@inlabelfalse
  \fi
  \if@nobreak \@nobreakfalse \everypar{}\fi
  \par
  \ifdim\prevdepth>\z@
     \vskip -%
       \ifdim\prevdepth>\maxdepth
         \maxdepth
       \else
         \prevdepth
       \fi
  \fi
  \vfil
  \penalty -\@M}
\def \@emptycol {\vbox{}\penalty -\@M}
\def \twocolumn {%
  \clearpage
  \global\columnwidth\textwidth
  \global\advance\columnwidth-\columnsep
  \global\divide\columnwidth\tw@
  \global\hsize\columnwidth
  \global\linewidth\columnwidth
  \global\@twocolumntrue
  \global\@firstcolumntrue
  \col@number \tw@
  \@ifnextchar [\@topnewpage\@floatplacement
}
\long\def \@topnewpage [#1]{%
  \@nodocument
  \@next\@currbox\@freelist{}{}%
  \global \setbox\@currbox
    \color@vbox
      \normalcolor
      \vbox {%
        \hsize\textwidth
        \@parboxrestore
        \col@number \@ne
        #1%
        \vskip -\dbltextfloatsep
             }%
    \color@endbox
  \ifdim \ht\@currbox>\textheight
    \ht\@currbox \textheight
  \fi
  \global \count\@currbox \tw@
  \@tempdima -\ht\@currbox
  \advance \@tempdima -\dbltextfloatsep
  \global \advance \@colht \@tempdima
  \ifx \@dbltoplist \@empty
  \else
    \@latex@error{Float(s) lost}\@ehb
    \let \@dbltoplist \@empty
  \fi
  \@cons \@dbltoplist \@currbox
  \global \@dbltopnum \m@ne
    \fl@trace{dbltopnum set to -1 (= \the \@dbltopnum) (topnewpage)}%
  \ifdim \@colht<2.5\baselineskip
    \@latex@warning@no@line {Optional argument of \noexpand\twocolumn
                too tall on page \thepage}%
    \@emptycol
    \if@firstcolumn
    \else
      \@emptycol
    \fi
  \else
    \global \vsize \@colht
    \global \@colroom \@colht
    \@floatplacement
  \fi
}
\output {%
  \let \par \@@par
  \ifnum \outputpenalty<-\@M
    \@specialoutput
  \else
    \@makecol
    \@opcol
    \@startcolumn
    \@whilesw \if@fcolmade \fi
      {%
       \fl@trace{PAGE: float \if@twocolumn column \else page \fi
                    completed}%
       \@opcol\@startcolumn}%
  \fi
  \ifnum \outputpenalty>-\@Miv
    \ifdim \@colroom<1.5\baselineskip
      \ifdim \@colroom<\textheight
        \@latex@warning@no@line {Text page \thepage\space
                               contains only floats}%
        \@emptycol
      \else
        \global \vsize \@colroom
      \fi
    \else
      \global \vsize \@colroom
    \fi
  \else
    \global \vsize \maxdimen
  \fi
}
\gdef\@specialoutput{%
   \ifnum \outputpenalty>-\@Mii
     \@doclearpage
   \else
     \ifnum \outputpenalty<-\@Miii
       \ifnum \outputpenalty<-\@MM \deadcycles \z@ \fi
       \global \setbox\@holdpg \vbox {\unvbox\@cclv}%
     \else
       \global \setbox\@holdpg \vbox{%
                      \unvbox\@holdpg
                      \unvbox\@cclv
                      \setbox\@tempboxa \lastbox
                      \unskip
                                     }%
       \@pagedp \dp\@holdpg
       \@pageht \ht\@holdpg
       \unvbox \@holdpg
       \@next\@currbox\@currlist{%
         \ifnum \count\@currbox>\z@
           \advance \@pageht \@pagedp
           \ifvoid\footins \else
             \advance \@pageht \ht\footins
             \advance \@pageht \skip\footins
             \advance \@pageht \dp\footins
           \fi
           \ifvbox \@kludgeins
             \ifdim \wd\@kludgeins=\z@
               \advance \@pageht \ht\@kludgeins
               \fl@trace {Extra size added: \the \ht\@kludgeins}%
             \fi
           \fi
           \@reinserts
           \@addtocurcol
         \else
           \@reinserts
           \@addmarginpar
         \fi
         }\@latexbug
       \ifnum \outputpenalty<\z@
         \if@nobreak
           \nobreak
         \else
           \addpenalty \interlinepenalty
         \fi
       \fi
     \fi
   \fi
}
\def\@testwrongwidth #1{%
  \ifdim\dp#1=\f@depth
    \fl@trace{\string#1
              \ifdim\f@depth=\z@ single \else double \fi
              column float -- ok}%
  \else
    \global\@testtrue
    \fl@trace{\string#1
              \ifdim\f@depth=\z@ double \else single \fi
              column float -- wrong}%
  \fi}%
\let\f@depth\z@
\def \@opcol {%
  \if@twocolumn
    \@expl@@@mark@update@dblcol@structures@@
    \@outputdblcol
  \else
    \@expl@@@mark@update@singlecol@structures@@
    \@outputpage
    \fl@trace{PAGE: one column (float? see above) page completed}%
  \fi
  \global \@mparbottom \z@ \global \@textfloatsheight \z@
  \@floatplacement
}
\gdef \@makespecialcolbox {%
   \fl@trace{Kludgeins ht \the\ht\@kludgeins\space
                           dp \the\dp\@kludgeins\space
                           wd \the\wd\@kludgeins}%
   \setbox\@outputbox \vbox {%
     \@texttop
     \dimen@ \dp\@outputbox
     \unvbox\@outputbox
     \vskip-\dimen@
     }%
   \@tempdima \@colht
   \ifdim \wd\@kludgeins>\z@
     \advance \@tempdima -\ht\@outputbox
     \advance \@tempdima \pageshrink
     \fl@trace {Natural ht of col: \the \ht\@outputbox}%
     \fl@trace {\string \@colht: \the \@colht}%
     \fl@trace {Pageshrink added: \the \pageshrink}%
     \fl@trace {Hence, space added: \the \@tempdima}%
     \setbox\@outputbox \vbox to \@colht {%
       \unvbox\@outputbox
       \vskip \@tempdima
       \@textbottom
       }%
   \else
     \advance \@tempdima -\ht\@kludgeins
     \fl@trace {Natural ht of col: \the \ht\@outputbox}%
     \fl@trace {\string \@colht: \the \@colht}%
     \fl@trace {Extra size added: -\the \ht \@kludgeins}%
     \fl@trace {Hence, height of inner box: \the \@tempdima}%
     \fl@trace {Max? pageshrink available: \the \pageshrink}%
     \setbox \@outputbox \vbox to \@colht {%
       \vbox to \@tempdima {%
         \unvbox\@outputbox
         \@textbottom}%
       \vss}%
   \fi
   {\setbox \@tempboxa \box \@kludgeins}%
     \fl@trace {kludgeins box made void}%
}
\def \@startcolumn {%
  \global \@colroom \@colht
  \@tryfcolumn \@deferlist
  \if@fcolmade
    \fl@trace{PAGE: float \if@twocolumn column \else page \fi
                completed}%
  \else
    \begingroup
      \let \reserved@b \@deferlist
      \global \let \@deferlist \@empty
      \let \@elt \@scolelt
      \reserved@b
    \endgroup
  \fi
}
\IncludeInRelease{2015/01/01}%
  {\@startdblcolumn}{float order in 2-column}%
\def \@startdblcolumn {%
  \@tryfcolumn \@deferlist
  \if@fcolmade
    \fl@trace{PAGE: double float page completed}%
  \else
    \begingroup
      \let \reserved@b \@deferlist
      \global \let \@deferlist \@empty
      \let \@elt \@sdblcolelt
      \reserved@b
    \endgroup
  \fi
}%
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
  {\@startdblcolumn}{float order in 2-column}%
\def \@startdblcolumn {%
% \global \@colht \textheight
  \@tryfcolumn \@dbldeferlist
  \if@fcolmade
    \fl@trace{PAGE: double float page completed}%
  \else
    \begingroup
      \let \reserved@b \@dbldeferlist
      \global \let \@dbldeferlist \@empty
      \let \@elt \@sdblcolelt
      \reserved@b
    \endgroup
  \fi
}%
\EndIncludeInRelease
\def \@tryfcolumn #1{%
  \global \@fcolmadefalse
  \ifx #1\@empty
  \else
     \fl@trace{PAGE: try float \if@twocolumn column/page\else page\fi
                  ---\string #1}%
     \fl@trace{----- \string #1: #1}%
    \xdef\@trylist{#1}%
    \global \let \@failedlist \@empty
    \begingroup
      \let \@elt \@xtryfc \@trylist
    \endgroup
    \if@fcolmade
      \@vtryfc #1%
    \fi
  \fi
}
\def \@addtobot {%
   \fl@trace{***Start addtobot}%
   \@getfpsbit 4\relax
   \fl@trace{fpstype \ifodd \@tempcnta OK \else not \fi bot:
                                                     \the \@fpstype}%
   \ifodd \@tempcnta
     \@flsetnum \@botnum
     \ifnum \@botnum>\z@
       \@tempswafalse
       \@flcheckspace \@botroom \@botlist
       \if@tempswa
         \global \maxdepth \z@
         \@flupdates \@botnum \@botroom \@botlist
         \fl@trace{colroom (after-bot) = \the \@colroom}%
         \fl@trace{colnum (after-bot) = \the \@colnum}%
         \fl@trace{botnum (after-bot) = \the \@botnum}%
         \fl@trace{***Success: bot}%
         \@inserttrue
       \fi
     \else
       \fl@trace{Fail: botnum = \the \@botnum:
                                  fpstype \the \@fpstype=ORD?}%
       \ifnum \@fpstype<\sixt@@n
         \fl@trace{ERROR: !b float not successful (addtobot)}%
       \fi
     \fi
   \fi
}
\def \@addtotoporbot {%
   \fl@trace{***Start addtotoporbot}%
   \@getfpsbit \tw@
   \fl@trace{fpstype \ifodd \@tempcnta OK \else not \fi top:
                                                     \the \@fpstype}%
   \ifodd \@tempcnta
     \@flsetnum \@topnum
     \ifnum \@topnum>\z@
       \@tempswafalse
       \@flcheckspace \@toproom \@toplist
       \if@tempswa
         \@bitor\@currtype{\@midlist\@botlist}%
           \fl@trace{(mid+bot)list: \@midlist, \@botlist:
                              (addtotoporbot-before)}%
         \if@test
         \fl@trace{type already on list: mid or bot---sent to addtobot}%
         \else
          \@flupdates \@topnum \@toproom \@toplist
          \fl@trace{colroom (after-top) = \the \@colroom}%
          \fl@trace{colnum (after-top) = \the \@colnum}%
          \fl@trace{topnum (after-top) = \the \@topnum}%
          \fl@trace{***Success: top}%
          \@inserttrue
         \fi
       \fi
     \else
       \fl@trace{Fail: topnum = \the \@topnum: fpstype
                                            \the \@fpstype=ORD?}%
       \ifnum \@fpstype<\sixt@@n
         \fl@trace{ERROR: !t float not successful (addtotoporbot)}%
       \fi
     \fi
   \fi
   \if@insert
   \else
     \fl@trace{sent to addtobot (addtotoporbot)}%
     \@addtobot
   \fi
}
\IncludeInRelease{2015/01/01}%
  {\@addtocurcol}{float order in 2-column}%
\def \@addtocurcol {%
  \fl@trace{***Start addtocurcol}%
   \@insertfalse
   \@setfloattypecounts
   \ifnum \@fpstype=8
     \fl@trace{fpstype !p only (addtocurcol): \the \@fpstype = 8?}%
   \else
     \ifnum \@fpstype=24
       \fl@trace{fpstype p only (addtocurcol): \the \@fpstype = 24?}%
     \else
       \@flsettextmin
       \fl@trace{textfloatsheight (before) = \the \@textfloatsheight}%
       \advance \@textmin \@textfloatsheight
       \@reqcolroom \@pageht
       \fl@trace{textmin + textfloatsheight: \the \@textmin}%
       \fl@trace{page-so-far: \the \@reqcolroom}%
       \ifdim \@textmin>\@reqcolroom
         \@reqcolroom \@textmin
         \fl@trace{ORD? textmin being used}%
       \fi
       \advance \@reqcolroom \ht\@currbox
       \fl@trace{float size = \the \ht \@currbox (addtocurcol)}%
       \fl@trace{colroom = \the \@colroom (addtocurcol)}%
       \fl@trace{reqcolroom = \the \@reqcolroom (addtocurcol)}%
       \ifdim \@colroom>\@reqcolroom
         \@flsetnum \@colnum
         \ifnum \@colnum>\z@
           \@bitor\@currtype\@deferlist
          \@testwrongwidth\@currbox
           \fl@trace{deferlist: \@deferlist: (addtocurcol-before)}%
           \if@test
             \fl@trace{type already on list: defer (addtocurcol)}%
           \else
             \@bitor\@currtype\@botlist
           \fl@trace{botlist: \@botlist: (addtocurcol-before)}%
             \if@test
               \fl@trace{type already on list: bot---sent to addtobot}%
               \@addtobot
             \else
               \fl@trace{fpstype \ifodd \@tempcnta OK \else not \fi
                      here: \the \@fpstype}%
               \ifodd \count\@currbox
                 \advance \@reqcolroom \intextsep
                 \ifdim \@colroom>\@reqcolroom
                   \global \advance \@colnum \m@ne
                   \global \advance \@textfloatsheight \ht\@currbox
                   \global \advance \@textfloatsheight 2\intextsep
                   \@cons \@midlist \@currbox
                 \fl@trace{***Success: here}%
                 \fl@trace{textfloatsheight (after-here) =
                      \the \@textfloatsheight}%
                 \fl@trace{colnum (after-here) = \the \@colnum}%
                   \if@nobreak
                     \nobreak
                     \@nobreakfalse
                     \everypar{}%
                   \else
                     \addpenalty \interlinepenalty
                   \fi
                   \vskip \intextsep
                   \box\@currbox
                   \penalty\interlinepenalty
                   \vskip\intextsep
                   \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
                   \outputpenalty \z@
                   \@inserttrue
                 \else
                   \fl@trace{Fail---no room at 2nd test of colroom
                                 (addtocorcol \string\intextsep)}%
                 \fi
               \fi
               \if@insert
               \else
                 \fl@trace{not here: sent to addtotoporbot}%
                 \@addtotoporbot
               \fi
             \fi
           \fi
         \else
           \fl@trace{Fail: colnum = \the \@colnum:
                        fpstype \the \@fpstype=ORD?}%
           \ifnum \@fpstype<\sixt@@n
             \fl@trace{ERROR: BANG float not successful (addtocurcol)}%
           \fi
         \fi
       \else
         \fl@trace{Fail---no room: fl box ht: \the \ht \@currbox
                                                     (addtocurcol)}%
       \fi
     \fi
   \fi
   \if@insert
   \else
     \@resethfps
     \fl@trace{put on deferlist (addtocurcol)}%
     \@cons\@deferlist\@currbox
     \fl@trace{deferlist: \@deferlist: (addtocurcol-after)}%
   \fi
}%
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
  {\@addtocurcol}{float order in 2-column}%
\def \@addtocurcol {%
  \fl@trace{***Start addtocurcol}%
   \@insertfalse
   \@setfloattypecounts
   \ifnum \@fpstype=8
     \fl@trace{fpstype !p only (addtocurcol):
                            \the \@fpstype = 8?}%
   \else
     \ifnum \@fpstype=24
      \fl@trace{fpstype p only (addtocurcol):
                           \the \@fpstype = 24?}%
     \else
       \@flsettextmin
       \fl@trace{textfloatsheight (before) =
                        \the \@textfloatsheight}%
       \advance \@textmin \@textfloatsheight
       \@reqcolroom \@pageht
       \fl@trace{textmin + textfloatsheight:
                                 \the \@textmin}%
       \fl@trace{page-so-far: \the \@reqcolroom}%

       \ifdim \@textmin>\@reqcolroom
         \@reqcolroom \@textmin
         \fl@trace{ORD? textmin being used}%
       \fi
       \advance \@reqcolroom \ht\@currbox
       \fl@trace{float size =
               \the \ht \@currbox (addtocurcol)}%
       \fl@trace{colroom =
                   \the \@colroom (addtocurcol)}%
       \fl@trace{reqcolroom =
                \the \@reqcolroom (addtocurcol)}%
       \ifdim \@colroom>\@reqcolroom
         \@flsetnum \@colnum
         \ifnum \@colnum>\z@
           \@bitor\@currtype\@deferlist
           \fl@trace{deferlist:
              \@deferlist: (addtocurcol-before)}%
           \if@test
             \fl@trace{type already on list:
                            defer (addtocurcol)}%
           \else
             \@bitor\@currtype\@botlist
           \fl@trace{botlist: \@botlist:
                           (addtocurcol-before)}%
             \if@test
               \fl@trace{type already on list:
                         bot---sent to addtobot}%
               \@addtobot
             \else
               \fl@trace{fpstype
               \ifodd \@tempcnta OK \else not \fi
               here: \the \@fpstype}%
               \ifodd \count\@currbox
                 \advance \@reqcolroom \intextsep
                 \ifdim \@colroom>\@reqcolroom
                  \global \advance \@colnum \m@ne
                  \global \advance
                   \@textfloatsheight\ht\@currbox
                  \global \advance
                   \@textfloatsheight 2\intextsep
                   \@cons \@midlist \@currbox
                 \fl@trace{***Success: here}%
                 \fl@trace{textfloatsheight
                      (after-here) =
                      \the \@textfloatsheight}%
                 \fl@trace{colnum (after-here) =
                          \the \@colnum}%
                   \if@nobreak
                     \nobreak
                     \@nobreakfalse
                     \everypar{}%
                   \else
                     \addpenalty\interlinepenalty
                   \fi
                   \vskip \intextsep
                   \box\@currbox
                   \penalty\interlinepenalty
                   \vskip\intextsep
                   \ifnum\outputpenalty
                               <-\@Mii \vskip
                        -\parskip\fi
                   \outputpenalty \z@
                   \@inserttrue
                 \else
  \fl@trace{Fail---no room at 2nd test of colroom
                (addtocorcol \string\intextsep)}%
                 \fi
               \fi
               \if@insert
               \else
      \fl@trace{not here: sent to addtotoporbot}%
                 \@addtotoporbot
               \fi
             \fi
           \fi
         \else
         \fl@trace{Fail: colnum = \the \@colnum:
                    fpstype \the \@fpstype=ORD?}%
         \ifnum \@fpstype<\sixt@@n
  \fl@trace{ERROR: BANG float not successful
                                  (addtocurcol)}%
           \fi
         \fi
       \else
         \fl@trace{Fail---no room: fl box ht:
               \the \ht \@currbox (addtocurcol)}%
       \fi
     \fi
   \fi
   \if@insert
   \else
     \@resethfps
     \fl@trace{put on deferlist (addtocurcol)}%
     \@cons\@deferlist\@currbox
     \fl@trace{deferlist: \@deferlist:
                          (addtocurcol-after)}%
   \fi
  }%
\EndIncludeInRelease
\IncludeInRelease{2015/01/01}
  {\@addtonextcol}{float order in 2-column}%
\def\@addtonextcol{%
  \begingroup
   \fl@trace{***Start addtonextcol}%
   \@insertfalse
   \@setfloattypecounts
   \ifnum \@fpstype=8
     \fl@trace{fpstype not curcol: \the \@fpstype = 8?}%
   \else
     \ifnum \@fpstype=24
       \fl@trace{fpstype not curcol: \the \@fpstype = 24?}%
     \else
       \@flsettextmin
       \fl@trace{text-so-far: 0pt (top of col)}%
       \@reqcolroom \ht\@currbox
       \fl@trace{float size: \the \@reqcolroom (addtonextcol)}%
       \advance \@reqcolroom \@textmin
       \fl@trace{colroom = \the \@colroom (addtonextcol)}%
       \fl@trace{reqcolroom = \the \@reqcolroom (addtonextcol)}%
       \ifdim \@colroom>\@reqcolroom
         \@flsetnum \@colnum
         \ifnum\@colnum>\z@
            \@bitor\@currtype\@deferlist
            \fl@trace{deferlist: \@deferlist: (addtonextcol-before)}%
            \@testwrongwidth\@currbox
            \if@test
              \fl@trace{type already on list: defer (addtonextcol)}%
            \else
              \fl@trace{sent to addtotoporbot (addtonextcol)}%
              \@addtotoporbot
            \fi
         \fi
       \else
         \fl@trace{Fail---no room: fl box ht: \the \ht \@currbox
                                                  (addtonextcol)}%
       \fi
     \fi
   \fi
   \if@insert
   \else
     \fl@trace{put back on deferlist (addtonextcol)}%
     \@cons\@deferlist\@currbox
     \fl@trace{deferlist: \@deferlist: (addtonextcol-after)}%
   \fi
  \fl@trace{End of addtonextcol -- locally counts:}%
  \fl@trace{col: \the\@colnum. top: \the \@topnum. bot: \the \@botnum.}%
  \endgroup
 \fl@trace{End of addtonextcol -- globally counts:}%
 \fl@trace{col: \the\@colnum. top: \the \@topnum. bot: \the \@botnum.}%
}%
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
  {\@addtonextcol}{float order in 2-column}%
\def\@addtonextcol{%
  \begingroup
   \fl@trace{***Start addtonextcol}%
   \@insertfalse
   \@setfloattypecounts
   \ifnum \@fpstype=8
     \fl@trace{fpstype not curcol:
                    \the \@fpstype = 8?}%
   \else
     \ifnum \@fpstype=24
       \fl@trace{fpstype not curcol:
                       \the \@fpstype = 24?}%
     \else
       \@flsettextmin
       \fl@trace{text-so-far: 0pt (top of col)}%
       \@reqcolroom \ht\@currbox
       \fl@trace{float size:
               \the \@reqcolroom (addtonextcol)}%

       \advance \@reqcolroom \@textmin
       \fl@trace{colroom =
                  \the \@colroom (addtonextcol)}%
       \fl@trace{reqcolroom =
               \the \@reqcolroom (addtonextcol)}%
       \ifdim \@colroom>\@reqcolroom
         \@flsetnum \@colnum
         \ifnum\@colnum>\z@
            \@bitor\@currtype\@deferlist
            \fl@trace{deferlist: \@deferlist:
                          (addtonextcol-before)}%
            \if@test
              \fl@trace{type already on list:
                           defer (addtonextcol)}%
            \else
              \fl@trace{sent to addtotoporbot
                                 (addtonextcol)}%
              \@addtotoporbot
            \fi
         \fi
       \else
         \fl@trace{Fail---no room: fl box ht:
              \the \ht \@currbox (addtonextcol)}%
       \fi
     \fi
   \fi
   \if@insert
   \else
     \fl@trace{put back on deferlist
                                (addtonextcol)}%
     \@cons\@deferlist\@currbox
     \fl@trace{deferlist: \@deferlist:
                           (addtonextcol-after)}%
   \fi
   \fl@trace{End of addtonextcol --
                             locally counts:}%
   \fl@trace{col: \the \@colnum.
      top: \the \@topnum. bot: \the \@botnum.}%
  \endgroup
  \fl@trace{End of addtonextcol --
                           globally counts:}%
  \fl@trace{col: \the \@colnum.
        top: \the \@topnum. bot: \the \@botnum.}%
}%
\EndIncludeInRelease
\IncludeInRelease{2015/01/01}%
  {\@addtodblcol}{float order in 2-column}%
\def\@addtodblcol{%
  \begingroup
  \fl@trace{***Start addtodblcol}%
   \@insertfalse
   \@setfloattypecounts
   \@getfpsbit \tw@
   \fl@trace{fpstype \ifodd \@tempcnta OK \else not \fi dbltop:
                                                     \the \@fpstype}%
   \ifodd\@tempcnta
     \@flsetnum \@dbltopnum
     \ifnum \@dbltopnum>\z@
       \@tempswafalse
       \ifdim \@dbltoproom>\ht\@currbox
         \@tempswatrue
         \fl@trace{Space OK: \@dbltoproom =
                \the \@dbltoproom > \the \ht \@currbox
                                         (dbltoproom)}%
       \else
         \fl@trace{fpstype: \the \@fpstype (addtodblcol)}%
         \ifnum \@fpstype<\sixt@@n
           \fl@trace{BANG float ignoring \@dbltoproom}%
           \fl@trace{\@spaces \@dbltoproom = \the \@dbltoproom.
                           Ht float: \the \ht \@currbox-BANG}%
           \advance \@dbltoproom \@textmin
           \fl@trace{Local value of texmin: \the\@textmin}%
           \fl@trace{\@spaces space on page = \the \@dbltoproom.
                           Ht float: \the \ht \@currbox-BANG}%
           \ifdim \@dbltoproom>\ht\@currbox
             \@tempswatrue
             \fl@trace{Space OK BANG: space on page =
                         \the \@dbltoproom > \the \ht \@currbox}%
           \else
             \fl@trace{fpstype: \the \@fpstype}%
             \fl@trace{Fail---no room dbltoproom-BANG?:}%
             \fl@trace{\@spaces space on page = \the \@dbltoproom.
                           Ht float: \the \ht \@currbox}%
           \fi
           \advance \@dbltoproom -\@textmin
         \else
           \fl@trace{fpstype: \the \@fpstype}%
           \fl@trace{Fail---no room dbltoproom-ORD?:}%
           \fl@trace{\@spaces \@dbltoproom = \the \@dbltoproom.
                           Ht float: \the \ht \@currbox}%
         \fi
       \fi
       \if@tempswa
           \@bitor \@currtype \@deferlist
           \fl@trace{(dbl)deferlist: \@deferlist: (before)}%
          \@testwrongwidth\@currbox
           \if@test
              \fl@trace{type already on list: (dbl)defer}%
           \else
              \@tempdima -\ht\@currbox
              \advance\@tempdima
                -\ifx \@dbltoplist\@empty \dbltextfloatsep \else
                                          \dblfloatsep \fi
              \global \advance \@dbltoproom \@tempdima
              \global \advance \@colht \@tempdima
              \global \advance \@dbltopnum \m@ne
              \@cons \@dbltoplist \@currbox
              \fl@trace{dbltopnum (after) = \the \@dbltopnum}%
              \fl@trace{***Success: dbltop}%
              \@inserttrue
           \fi
       \fi
     \else
       \fl@trace{Fail: dbltopnum = \the \@dbltopnum: fpstype
                                                  \the \@fpstype=ORD?}%
       \ifnum \@fpstype<\sixt@@n
         \fl@trace{ERROR: !t float not successful (addtodblcol)}%
       \fi
     \fi
   \fi
   \if@insert
   \else
     \fl@trace{put on deferlist}%
     \@cons\@deferlist\@currbox
     \fl@trace{(dbl)deferlist: \@deferlist: (after)}%
   \fi
   \fl@trace{End of addtodblcol -- locally count:}%
   \fl@trace{ dbltop: \the \@dbltopnum.}%
  \endgroup
  \fl@trace{End of addtodblcol -- globally count:}%
  \fl@trace{dbltop: \the \@dbltopnum.}%
}%
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
  {\@addtodblcol}{float order in 2-column}%
\def\@addtodblcol{%
  \begingroup
  \fl@trace{***Start addtodblcol}%
   \@insertfalse
   \@setfloattypecounts
   \@getfpsbit \tw@
   \fl@trace{fpstype \ifodd \@tempcnta OK
                \else not \fi dbltop: \the \@fpstype}%
   \ifodd\@tempcnta
     \@flsetnum \@dbltopnum
     \ifnum \@dbltopnum>\z@
       \@tempswafalse
       \ifdim \@dbltoproom>\ht\@currbox
         \@tempswatrue
         \fl@trace{Space OK: \@dbltoproom =
                \the \@dbltoproom > \the \ht \@currbox
                                         (dbltoproom)}%
       \else
      \fl@trace{fpstype: \the \@fpstype (addtodblcol)}%
         \ifnum \@fpstype<\sixt@@n
           \fl@trace{BANG float ignoring \@dbltoproom}%
           \fl@trace{\@spaces \@dbltoproom =
                    \the \@dbltoproom.
                    Ht float: \the \ht \@currbox-BANG}%
           \advance \@dbltoproom \@textmin
       \fl@trace{Local value of texmin: \the\@textmin}%
       \fl@trace{\@spaces space on page =
                   \the \@dbltoproom.
                    Ht float: \the \ht \@currbox-BANG}%
           \ifdim \@dbltoproom>\ht\@currbox
             \@tempswatrue
         \fl@trace{Space OK BANG: space on page =
                 \the\@dbltoproom > \the\ht\@currbox}%
           \else
         \fl@trace{fpstype: \the \@fpstype}%
         \fl@trace{Fail---no room dbltoproom-BANG?:}%
         \fl@trace{\@spaces space on page =
                      \the \@dbltoproom.
                       Ht float: \the \ht \@currbox}%
           \fi
           \advance \@dbltoproom -\@textmin
         \else
           \fl@trace{fpstype: \the \@fpstype}%
           \fl@trace{Fail---no room dbltoproom-ORD?:}%
           \fl@trace{\@spaces \@dbltoproom =
              \the \@dbltoproom.
              Ht float: \the \ht \@currbox}%
         \fi
       \fi
       \if@tempswa
           \@bitor \@currtype \@dbldeferlist
           \fl@trace{dbldeferlist:
                      \@dbldeferlist: (before)}%
           \if@test
             \fl@trace{type already on list: dbldefer}%
           \else
              \@tempdima -\ht\@currbox
              \advance\@tempdima
                -\ifx \@dbltoplist\@empty
                      \dbltextfloatsep
                 \else \dblfloatsep \fi
              \global \advance \@dbltoproom \@tempdima
              \global \advance \@colht \@tempdima
              \global \advance \@dbltopnum \m@ne
              \@cons \@dbltoplist \@currbox
              \fl@trace{dbltopnum (after) =
                                    \the \@dbltopnum}%
              \fl@trace{***Success: dbltop}%
              \@inserttrue
           \fi
       \fi
     \else
       \fl@trace{Fail: dbltopnum = \the \@dbltopnum:
                          fpstype \the \@fpstype=ORD?}%
       \ifnum \@fpstype<\sixt@@n
         \fl@trace{ERROR: !t float not successful
                                        (addtodblcol)}%
       \fi
     \fi
   \fi
   \if@insert
   \else
     \fl@trace{put on dbldeferlist}%
     \@cons\@dbldeferlist\@currbox
     \fl@trace{dbldeferlist: \@dbldeferlist: (after)}%
   \fi
   \fl@trace{End of addtodblcol -- locally count:}%
   \fl@trace{ dbltop: \the \@dbltopnum.}%
  \endgroup
  \fl@trace{End of addtodblcol -- globally count:}%
  \fl@trace{dbltop: \the \@dbltopnum.}%
}%
\EndIncludeInRelease
\def \fl@tracemessage #1{{\let\@elt\@empty\typeout{LaTeX2e: #1}}}
\def \tracefloats{\let \fl@trace \fl@tracemessage}
\def \tracefloatsoff {\let \fl@trace \@gobble}
\tracefloatsoff
\def \fl@traceval #1{\fl@trace{\string #1 = \the #1}}
\IncludeInRelease{2015/01/01}{\tracefloatvals}%
                          {trace float vals}%
\def \tracefloatvals{%
 \begingroup
  \tracefloats
  \@dblfloatplacement
  \@floatplacement
  \fl@trace{***Float placement parameters:}%
  \fl@traceval\@colnum
  \fl@traceval\@colroom
  \fl@traceval\@topnum
  \fl@traceval\@toproom
  \fl@traceval\@botnum
  \fl@traceval\@botroom
  \fl@traceval\@fpmin
  \fl@trace{\string\textfraction = \textfraction}%
  \fl@traceval\@dbltopnum
  \fl@traceval\@dbltoproom
  \fl@trace{\string\textfraction = \textfraction}%
  \fl@trace{toplist: \@toplist}%
  \fl@trace{botlist: \@botlist}%
  \fl@trace{midlist: \@midlist}%
  \fl@trace{deferlist: \@deferlist}%
  \fl@trace{dbltoplist: \@dbltoplist}%
 \endgroup
}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}{\tracefloatvals}%
                          {trace float vals}%
\def \tracefloatvals{%
 \begingroup
  \tracefloats
  \@dblfloatplacement
  \@floatplacement
  \fl@trace{***Float placement parameters:}%
  \fl@traceval\@colnum
  \fl@traceval\@colroom
  \fl@traceval\@topnum
  \fl@traceval\@toproom
  \fl@traceval\@botnum
  \fl@traceval\@botroom
  \fl@traceval\@fpmin
  \fl@trace{\string\textfraction = \textfraction}%
  \fl@traceval\@dbltopnum
  \fl@traceval\@dbltoproom
  \fl@trace{\string\textfraction = \textfraction}%
  \fl@trace{toplist: \@toplist}%
  \fl@trace{botlist: \@botlist}%
  \fl@trace{midlist: \@midlist}%
  \fl@trace{deferlist: \@deferlist}%
  \fl@trace{dbltoplist: \@dbltoplist}%
  \fl@trace{dbldeferlist: \@dbldeferlist}%
 \endgroup
}
\EndIncludeInRelease
\@ifpackageloaded{flafter}
 {\PackageWarningNoLine
      {fltrace}{Load 'fltrace' before 'flafter'\MessageBreak
                Attempting to recover by reloading 'flafter'}%
    \expandafter\let\csname ver@flafter.sty\endcsname\relax
    \def\reserved@a#1{%
      \expandafter\let\csname\string#1+flafter+IIR\endcsname\relax}%
    \reserved@a\@addtocurcol
    \reserved@a\@addtonextcol
    \RequirePackage{flafter}}{}
\def \@fpsadddefault {%
   \fl@trace{fps changed from: \@fps}%
   \edef \@fps {\@fps\csname fps@\@captype \endcsname}%
   \@latex@warning {%
     No positions in optional float specifier.\MessageBreak
     Default added (so using `\@fps')}%
}
\def \@setfloattypecounts {%
  \@currtype \count\@currbox
  \@fpstype \count\@currbox
  \divide\@currtype\@xxxii \multiply\@currtype\@xxxii
  \advance \@fpstype -\@currtype
  \fl@trace{(mod 32) fpstype: \the \@fpstype}%
  \fl@trace{(mult of 32) currtype: \the \@currtype}%
  \ifnum \@fpstype<\sixt@@n
    \ifnum \@fpstype=\z@
      \fl@trace{ERROR: no PLACEMENT, fpstype = \the \@fpstype = 0?}%
    \fi
    \ifnum \@fpstype=\@ne
      \fl@trace{WARNING: only h, fpstype = \the \@fpstype = 1?}%
    \fi
    \fl@trace{BANG float}%
  \else
    \ifnum \@fpstype=\sixt@@n
      \fl@trace{ERROR: no PLACEMENT, fpstype = \the \@fpstype = 16?}%
    \fi
    \ifnum \@fpstype=17
      \fl@trace{WARNING: only h, fpstype = \the \@fpstype = 17?}%
    \fi
    \fl@trace{ORD float}%
  \fi
}
\def \@resethfps {%
   \let\reserved@a\@empty
   \ifnum \@fpstype=\@ne
      \def \reserved@a {!}%
      \@fpstype 17
   \fi
   \ifnum \@fpstype=17
     \global \advance \count\@currbox \tw@
     \@latex@warning@no@line {%
       `\reserved@a h' float specifier changed to `\reserved@a ht'}%
     \fl@trace{%
        `t' added to `\reserved@a h'- new Count: \the \count\@currbox}%
   \fi
}
\def \@flsetnum #1{%
   \fl@trace{fpstype: \the \@fpstype (flsetnum \string#1)}%
   \ifnum \@fpstype<\sixt@@n
     \ifnum #1=\z@
       \fl@trace{BANG float resetting \string#1 to 1}%
       #1\@ne
     \fi
   \fi
   \fl@trace{#1 (before) = \the #1}%
}
\def \@flsettextmin {%
   \fl@trace{fpstype: \the \@fpstype (flsettextmin)}%
   \ifnum \@fpstype<\sixt@@n
     \fl@trace{BANG ignoring textmin}%
     \@textmin \z@
   \else
     \@textmin \textfraction\@colht
     \fl@trace{ORD textmin = \the \@textmin}%
   \fi
}
\def \@flcheckspace #1#2{%
   \advance \@reqcolroom
     \ifx #2\@empty \textfloatsep \else \floatsep \fi
   \fl@trace{colroom = \the \@colroom
                                   (flcheckspace \string#1 \string#2)}%
   \fl@trace{reqcolroom = \the \@reqcolroom
                                   (flcheckspace \string#1 \string#2)}%
   \ifdim \@colroom>\@reqcolroom
     \ifdim #1>\ht\@currbox
       \@tempswatrue
       \fl@trace{Space OK: #1 = \the #1 > \the \ht \@currbox
                                   (flcheckspace \string#1 \string#2)}%
     \else
       \fl@trace{fpstype: \the \@fpstype
                                   (flcheckspace \string#1 \string#2)}%
       \ifnum \@fpstype<\sixt@@n
         \fl@trace{BANG float ignoring #1
                                   (flcheckspace \string#1 \string#2):}%
         \fl@trace{\@spaces #1 = \the #1.  Ht float: \the \ht \@currbox
                                                          BANG}%
         \@tempswatrue
       \else
         \fl@trace{Fail---no room (flcheckspace \string#1 \string#2)
                       (fpstype \the \@fpstype=ORD?):}%
         \fl@trace{\@spaces #1 = \the #1.  Ht float: \the \ht \@currbox
                                                          ORD?}%
       \fi
     \fi
   \else
     \fl@trace{Fail---no room at 2nd test of colroom
                   (flcheckspace \string#1 \string#2)}%
   \fi
}
\IncludeInRelease{2017/01/01}%
  {\@makefcolumn}{negative height floats}%
\def\@makefcolumn #1{%
  \begingroup
    \@fpmin -\maxdimen
    \let \@testfp \@gobble
    \@tryfcolumn #1%
  \endgroup
  \if@fcolmade
    \fl@trace{PAGE: in \string\clearpage
                              \if@twocolumn ---twocolumn\fi---}%
    \fl@trace{----- float column/page completed from \string#1}%
  \fi
}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
  {\@makefcolumn}{negative height floats}%
\def\@makefcolumn #1{%
  \begingroup
    \@fpmin \z@
    \let \@testfp \@gobble
    \@tryfcolumn #1%
  \endgroup
  \if@fcolmade
    \fl@trace{PAGE: in \string\clearpage
                    \if@twocolumn ---twocolumn\fi---}%
    \fl@trace{----- float column/page completed
                    from \string#1}%
  \fi
}
\EndIncludeInRelease
\IncludeInRelease{2015/01/01}%
  {\@outputdblcol}{2 column marks}%
\def\@outputdblcol{%
  \if@firstcolumn
    \global\@firstcolumnfalse
    \global\setbox\@leftcolumn\copy\@outputbox
    \fl@trace{PAGE: first column boxed}%
    \splitmaxdepth\maxdimen
    \vbadness\maxdimen
     \setbox\@outputbox\vbox{\unvbox\@outputbox\unskip}%
     \setbox\@outputbox\vsplit\@outputbox to\maxdimen
    \toks@\expandafter{\topmark}%
    \xdef\@firstcoltopmark{\the\toks@}%
    \toks@\expandafter{\splitfirstmark}%
    \xdef\@firstcolfirstmark{\the\toks@}%
    \ifx\@firstcolfirstmark\@empty
      \global\let\@setmarks\relax
    \else
      \gdef\@setmarks{%
        \let\firstmark\@firstcolfirstmark
        \let\topmark\@firstcoltopmark}%
    \fi
  \else
    \global\@firstcolumntrue
    \setbox\@outputbox\vbox{%
     \hb@xt@\textwidth{%
        \hb@xt@\columnwidth{\box\@leftcolumn \hss}%
        \hfil
        {\normalcolor\vrule \@width\columnseprule}%
        \hfil
       \hb@xt@\columnwidth{\box\@outputbox \hss}}}%
    \fl@trace{PAGE: second column also boxed}%
  \@combinedblfloats
    \@setmarks
    \@outputpage
    \fl@trace{PAGE: two column page completed}%
    \begingroup
      \@dblfloatplacement
      \@startdblcolumn
      \@whilesw\if@fcolmade \fi{\@outputpage
      \fl@trace{PAGE: double float page completed}%
     \@startdblcolumn}%
    \endgroup
  \fi}%
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
  {\@outputdblcol}{2 column marks}%
\def\@outputdblcol{%
  \if@firstcolumn
    \global \@firstcolumnfalse
    \global \setbox\@leftcolumn \box\@outputbox
    \fl@trace{PAGE: first column boxed}%
  \else
    \global \@firstcolumntrue
    \setbox\@outputbox \vbox {%
                         \hb@xt@\textwidth {%
                           \hb@xt@\columnwidth {%
                             \box\@leftcolumn \hss}%
                           \hfil
                           {\normalcolor\vrule
                               \@width\columnseprule}%
                           \hfil
                           \hb@xt@\columnwidth {%
                             \box\@outputbox \hss}%
                                             }%
                              }%
    \fl@trace{PAGE: second column also boxed}%
    \@combinedblfloats
    \@outputpage
    \fl@trace{PAGE: two column page completed}%
    \begingroup
      \@dblfloatplacement
      \@startdblcolumn
      \@whilesw\if@fcolmade \fi
        {\@outputpage
      \fl@trace{PAGE: double float page completed}%
         \@startdblcolumn}%
    \endgroup
  \fi
}%
\EndIncludeInRelease
\endinput
%%
%% End of file `fltrace.sty'.
