%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% old-arrows.sty. Version: 2.0 - January 5, 2017.
% Author: Riccardo DOSSENA <riccardo.dossena@gmail.com>
%
% This package provides cm old-style arrows with smaller arrowheads,
% associated with ordinary LaTeX commands. It can be used in a document
% that contains other amssymb arrow characters, like \twoheadrightarrow,
% which also have small arrowheads. The options `new' and `old' allow the
% user to use the usual new-style cm arrows together with the old-style
% ones. The option `new' allows you to maintain the old-style by default
% and get the old-style by putting \var before every command; conversely,
% the option `old' allows you to maintain the new-style by default and get
% the old-style by putting \var before every command.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Copyright 2015-2017 R. Dossena
%
% 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 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is R. Dossena.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{old-arrows}[2017/01/05 v2.0 Old Arrows]

\newif\ifoldarrows@default
\newif\ifoldarrows@new
\newif\ifoldarrows@old

\def\oldarrows@opterr{%
    \PackageError{old-arrows}{`new' and `old' options are incompatible}{%
    I'm sorry, you cannot use the `new' and `old' options simultaneously! %
    Ciao ;) \MessageBreak}%
}%

\DeclareOption{default}{\oldarrows@defaulttrue}
\DeclareOption{new}{%
    \ifoldarrows@old\oldarrows@opterr\fi
    \oldarrows@newtrue}
\DeclareOption{old}{%
    \ifoldarrows@new\oldarrows@opterr\fi
    \oldarrows@defaultfalse\oldarrows@oldtrue}

\ExecuteOptions{default}

\ProcessOptions\relax


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% default option
%

\ifoldarrows@default

\@ifpackageloaded{lmodern}{%
\DeclareFontFamily{OMS}{oasy}{\skewchar\font48 }
\DeclareFontShape{OMS}{oasy}{m}{n}{%
         <-5.5> oasy5     <5.5-6.5> oasy6
      <6.5-7.5> oasy7     <7.5-8.5> oasy8
      <8.5-9.5> oasy9     <9.5->  oasy10
      }{}
\DeclareFontShape{OMS}{oasy}{b}{n}{%
       <-6> oabsy5
      <6-8> oabsy7
      <8->  oabsy10
      }{}
\relax}{%
\DeclareFontFamily{OMS}{oasy}{\skewchar\font48 }
\DeclareFontShape{OMS}{oasy}{m}{n}{%
      <5><6><7><8><9><10>gen*oasy%
      <10.95><12><14.4><17.28><20.74><24.88>oasy10%
      }{}
\DeclareFontShape{OMS}{oasy}{b}{n}{%
      <5><6><7><8><9>gen*oabsy%
      <10><10.95><12><14.4><17.28><20.74><24.88>oabsy10%
      }{}
\relax}

\DeclareSymbolFont{oasy}{OMS}{oasy}{m}{n}

\SetSymbolFont{oasy}{normal}{OMS}{oasy}{m}{n}
\SetSymbolFont{oasy}{bold}{OMS}{oasy}{b}{n}

\DeclareMathSymbol{\leftarrow}          {\mathrel}{oasy}{"20}
   \let\gets=\leftarrow
\DeclareMathSymbol{\rightarrow}         {\mathrel}{oasy}{"21}
   \let\to=\rightarrow
\DeclareMathSymbol{\leftrightarrow}     {\mathrel}{oasy}{"24}
\DeclareMathSymbol{\nearrow}            {\mathrel}{oasy}{"25}
\DeclareMathSymbol{\searrow}            {\mathrel}{oasy}{"26}
\DeclareMathSymbol{\nwarrow}            {\mathrel}{oasy}{"2D}
\DeclareMathSymbol{\swarrow}            {\mathrel}{oasy}{"2E}
\DeclareMathSymbol{\mapstochar}         {\mathrel}{oasy}{"37}
   \def\mapsto{\mapstochar\rightarrow}

\DeclareMathDelimiter{\uparrow}     {\mathrel}{oasy}{"22}{largesymbols}{"78}
\DeclareMathDelimiter{\downarrow}   {\mathrel}{oasy}{"23}{largesymbols}{"79}
\DeclareMathDelimiter{\updownarrow} {\mathrel}{oasy}{"6C}{largesymbols}{"3F}

%definitions of \meno, \joinrelaz and \relbarra
\DeclareMathSymbol{\meno} {\mathbin}{oasy}{"00}
\DeclareRobustCommand
  \joinrelaz{\mathrel{\mkern-3mu}}
\DeclareRobustCommand
  \relbarra{\mathrel{\smash\meno}} % \smash, because -
                               % has the same height as +

\DeclareRobustCommand\longrightarrow
     {\relbarra\joinrelaz\rightarrow}
\DeclareRobustCommand\longleftarrow
     {\leftarrow\joinrelaz\relbarra}

\def\rightarrowfill{$\m@th\smash\meno\mkern-7mu%
  \cleaders\hbox{$\mkern-2mu\smash\meno\mkern-2mu$}\hfill
  \mkern-7mu\mathord\rightarrow$}
\def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu%
  \cleaders\hbox{$\mkern-2mu\smash\meno\mkern-2mu$}\hfill
  \mkern-7mu\smash\meno$}

%amsmath redefinitions, if loaded
\@ifpackageloaded{amsmath}{%
\ams@def\relbarra{\mathrel{\mathpalette\mathsm@sh\meno}}
\def\leftarrowfill@{\arrowfill@\leftarrow\relbarra\relbarra}
\def\rightarrowfill@{\arrowfill@\relbarra\relbarra\rightarrow}
\def\leftrightarrowfill@{\arrowfill@\leftarrow\relbarra\rightarrow}
\relax}{}

%mathtools redefinitions, if loaded
\@ifpackageloaded{mathtools}{%
\renewcommand{\xleftrightarrow}[2][]{%
  \ext@arrow 3095\MTleftrightarrowfill@{#1}{#2}}
\def\MTleftrightarrowfill@{%
  \arrowfill@\leftarrow\relbarra\rightarrow}
\renewcommand{\xhookleftarrow}[2][]{%
  \ext@arrow 3095\MThookleftfill@{#1}{#2}}
\def\MThookleftfill@{%
  \arrowfill@\leftarrow\relbarra{\relbarra\joinrelaz\rhook}}
\renewcommand{\xhookrightarrow}[2][]{%
  \ext@arrow 3095\MThookrightfill@{#1}{#2}}
\def\MThookrightfill@{%
  \arrowfill@{\lhook\joinrelaz\relbarra}\relbarra\rightarrow}
\renewcommand{\xmapsto}[2][]{%
  \ext@arrow 0395\MTmapstofill@{#1}{#2}}
\def\MTmapstofill@{%
  \arrowfill@{\mapstochar\relbarra}\relbarra\rightarrow}
\relax}{}

%stmaryrd xmapsfrom (mathtools or amsmath needed)
\@ifpackageloaded{stmaryrd}{%
\newcommand{\xmapsfrom}[2][]{%
  \ext@arrow 3095\SMRmapsfromfill@{#1}{#2}}
\def\SMRmapsfromfill@{%
  \arrowfill@\leftarrow\relbarra{\relbarra\mapsfromchar}}
\relax}{}


%arrow commands provided by old-arrows
\DeclareRobustCommand\longhookrightarrow
    {\lhook\joinrelaz\longrightarrow}
\DeclareRobustCommand\longhookleftarrow
    {\longleftarrow\joinrelaz\rhook}
\DeclareRobustCommand\longrightharpoonup
    {\relbar\joinrel\rightharpoonup}
\DeclareRobustCommand\longrightharpoondown
    {\relbar\joinrel\rightharpoondown}
\DeclareRobustCommand\longleftharpoonup
    {\leftharpoonup\joinrel\relbar}
\DeclareRobustCommand\longleftharpoondown
    {\leftharpoondown\joinrel\relbar}

\fi

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% `new' option
%

\ifoldarrows@new

\@ifpackageloaded{lmodern}{%
\DeclareSymbolFont{lmsy}{OMS}{lmsy}{m}{n}

\SetSymbolFont{lmsy}{normal}{OMS}{lmsy}{m}{n}
\SetSymbolFont{lmsy}{bold}{OMS}{lmsy}{b}{n}

\DeclareMathSymbol{\varleftarrow}{\mathrel}{lmsy}{"20}
   \let\vargets=\varleftarrow
\DeclareMathSymbol{\varrightarrow}{\mathrel}{lmsy}{"21}
   \let\varto=\varrightarrow
\DeclareMathSymbol{\varleftrightarrow}     {\mathrel}{lmsy}{"24}
\DeclareMathSymbol{\varnearrow}            {\mathrel}{lmsy}{"25}
\DeclareMathSymbol{\varsearrow}            {\mathrel}{lmsy}{"26}
\DeclareMathSymbol{\varnwarrow}            {\mathrel}{lmsy}{"2D}
\DeclareMathSymbol{\varswarrow}            {\mathrel}{lmsy}{"2E}
\DeclareMathSymbol{\varmapstochar}         {\mathrel}{lmsy}{"37}
   \def\varmapsto{\varmapstochar\varrightarrow}
   \def\varhookrightarrow{\lhook\joinrel\varrightarrow}
   \def\varhookleftarrow{\varleftarrow\joinrel\rhook}

\DeclareMathDelimiter{\varuparrow}     {\mathrel}{lmsy}{"22}{largesymbols}{"78}
\DeclareMathDelimiter{\vardownarrow}   {\mathrel}{lmsy}{"23}{largesymbols}{"79}
\DeclareMathDelimiter{\varupdownarrow} {\mathrel}{lmsy}{"6C}{largesymbols}{"3F}
\relax}{%
\DeclareSymbolFont{cmsy}{OMS}{cmsy}{m}{n}

\SetSymbolFont{cmsy}{normal}{OMS}{cmsy}{m}{n}
\SetSymbolFont{cmsy}{bold}{OMS}{cmsy}{b}{n}

\DeclareMathSymbol{\varleftarrow}{\mathrel}{cmsy}{"20}
   \let\vargets=\varleftarrow
\DeclareMathSymbol{\varrightarrow}{\mathrel}{cmsy}{"21}
   \let\varto=\varrightarrow
\DeclareMathSymbol{\varleftrightarrow}     {\mathrel}{cmsy}{"24}
\DeclareMathSymbol{\varnearrow}            {\mathrel}{cmsy}{"25}
\DeclareMathSymbol{\varsearrow}            {\mathrel}{cmsy}{"26}
\DeclareMathSymbol{\varnwarrow}            {\mathrel}{cmsy}{"2D}
\DeclareMathSymbol{\varswarrow}            {\mathrel}{cmsy}{"2E}
\DeclareMathSymbol{\varmapstochar}         {\mathrel}{cmsy}{"37}
   \def\varmapsto{\varmapstochar\varrightarrow}
   \def\varhookrightarrow{\lhook\joinrel\varrightarrow}
   \def\varhookleftarrow{\varleftarrow\joinrel\rhook}

\DeclareMathDelimiter{\varuparrow}     {\mathrel}{cmsy}{"22}{largesymbols}{"78}
\DeclareMathDelimiter{\vardownarrow}   {\mathrel}{cmsy}{"23}{largesymbols}{"79}
\DeclareMathDelimiter{\varupdownarrow} {\mathrel}{cmsy}{"6C}{largesymbols}{"3F}
\relax}

\def\varoverrightarrow#1{\vbox{\m@th\ialign{##\crcr
      \varrightarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
      $\hfil\displaystyle{#1}\hfil$\crcr}}}
\def\varoverleftarrow#1{\vbox{\m@th\ialign{##\crcr
      \varleftarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}%
      $\hfil\displaystyle{#1}\hfil$\crcr}}}
\def\varrightarrowfill{$\m@th\smash-\mkern-7mu%
  \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill
  \mkern-7mu\mathord\varrightarrow$}
\def\varleftarrowfill{$\m@th\mathord\varleftarrow\mkern-7mu%
  \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill
  \mkern-7mu\smash-$}

\DeclareRobustCommand\varlongrightarrow
     {\relbar\joinrel\varrightarrow}
\DeclareRobustCommand\varlongleftarrow
     {\varleftarrow\joinrel\relbar}
\DeclareRobustCommand
  \varlongmapsto{\varmapstochar\varlongrightarrow}
\DeclareRobustCommand
  \varlongleftrightarrow{\varleftarrow\joinrel\varrightarrow}

%new commands provided by old-arrows with option new
\DeclareRobustCommand\varlonghookrightarrow
    {\lhook\joinrel\varlongrightarrow}
\DeclareRobustCommand\varlonghookleftarrow
    {\varlongleftarrow\joinrel\rhook}


%new-style arrows provided by amsmath, if loaded
\@ifpackageloaded{amsmath}{%
\def\varleftarrowfill@{\arrowfill@\varleftarrow\relbar\relbar}
\def\varrightarrowfill@{\arrowfill@\relbar\relbar\varrightarrow}
\def\varleftrightarrowfill@{\arrowfill@\varleftarrow\relbar\varrightarrow}
\ams@renewcommand{\varoverrightarrow}{%
  \mathpalette{\overarrow@\varrightarrowfill@}}
\ams@renewcommand{\varoverleftarrow}{%
  \mathpalette{\overarrow@\varleftarrowfill@}}
\ams@newcommand{\varoverleftrightarrow}{%
  \mathpalette{\overarrow@\varleftrightarrowfill@}}
\ams@newcommand{\varunderrightarrow}{%
  \mathpalette{\underarrow@\varrightarrowfill@}}
\ams@newcommand{\varunderleftarrow}{%
  \mathpalette{\underarrow@\varleftarrowfill@}}
\ams@newcommand{\varunderleftrightarrow}{%
  \mathpalette{\underarrow@\varleftrightarrowfill@}}
\newcommand{\varxrightarrow}[2][]{\ext@arrow 0359\varrightarrowfill@{#1}{#2}}
\newcommand{\varxleftarrow}[2][]{\ext@arrow 3095\varleftarrowfill@{#1}{#2}}
\def\varvarinjlim{%
  \mathop{\mathpalette\varlim@{\varrightarrowfill@\textstyle}}\nmlimits@
}
\def\varvarprojlim{%
  \mathop{\mathpalette\varlim@{\varleftarrowfill@\textstyle}}\nmlimits@
}
\relax}{}

%new-style support for mathtools
\@ifpackageloaded{mathtools}{%
\newcommand{\varxleftrightarrow}[2][]{%
  \ext@arrow 3095\varMTleftrightarrowfill@{#1}{#2}}
\def\varMTleftrightarrowfill@{%
  \arrowfill@\varleftarrow\relbar\varrightarrow}
\newcommand{\varxhookleftarrow}[2][]{%
  \ext@arrow 3095\varMThookleftfill@{#1}{#2}}
\def\varMThookleftfill@{%
  \arrowfill@\varleftarrow\relbar{\relbar\joinrel\rhook}}
\newcommand{\varxhookrightarrow}[2][]{%
  \ext@arrow 3095\varMThookrightfill@{#1}{#2}}
\def\varMThookrightfill@{%
  \arrowfill@{\lhook\joinrel\relbar}\relbar\varrightarrow}
\newcommand{\varxmapsto}[2][]{%
  \ext@arrow 0395\varMTmapstofill@{#1}{#2}}
\def\varMTmapstofill@{%
  \arrowfill@{\mapstochar\relbar}\relbar\varrightarrow}
\relax}{}

%%stmaryrd new-style xmapsfrom (mathtools or amsmath needed)
\@ifpackageloaded{stmaryrd}{%
\newcommand{\varxmapsfrom}[2][]{%
  \ext@arrow 3095\varSMRmapsfromfill@{#1}{#2}}
\def\varSMRmapsfromfill@{%
  \arrowfill@\varleftarrow\relbar{\relbar\mapsfromchar}}
\relax}{}

\fi

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% `old' option
%

\ifoldarrows@old

\@ifpackageloaded{lmodern}{%
\DeclareFontFamily{OMS}{oasy}{\skewchar\font48 }
\DeclareFontShape{OMS}{oasy}{m}{n}{%
         <-5.5> oasy5     <5.5-6.5> oasy6
      <6.5-7.5> oasy7     <7.5-8.5> oasy8
      <8.5-9.5> oasy9     <9.5->  oasy10
      }{}
\DeclareFontShape{OMS}{oasy}{b}{n}{%
       <-6> oabsy5
      <6-8> oabsy7
      <8->  oabsy10
      }{}
\relax}{%
\DeclareFontFamily{OMS}{oasy}{\skewchar\font48 }
\DeclareFontShape{OMS}{oasy}{m}{n}{%
      <5><6><7><8><9><10>gen*oasy%
      <10.95><12><14.4><17.28><20.74><24.88>oasy10%
      }{}
\DeclareFontShape{OMS}{oasy}{b}{n}{%
      <5><6><7><8><9>gen*oabsy%
      <10><10.95><12><14.4><17.28><20.74><24.88>oabsy10%
      }{}
\relax}

\DeclareSymbolFont{oasy}{OMS}{oasy}{m}{n}

\SetSymbolFont{oasy}{normal}{OMS}{oasy}{m}{n}
\SetSymbolFont{oasy}{bold}{OMS}{oasy}{b}{n}

\DeclareMathSymbol{\varleftarrow}          {\mathrel}{oasy}{"20}
   \let\vargets=\varleftarrow
\DeclareMathSymbol{\varrightarrow}         {\mathrel}{oasy}{"21}
   \let\varto=\varrightarrow
\DeclareMathSymbol{\varleftrightarrow}     {\mathrel}{oasy}{"24}
\DeclareMathSymbol{\varnearrow}            {\mathrel}{oasy}{"25}
\DeclareMathSymbol{\varsearrow}            {\mathrel}{oasy}{"26}
\DeclareMathSymbol{\varnwarrow}            {\mathrel}{oasy}{"2D}
\DeclareMathSymbol{\varswarrow}            {\mathrel}{oasy}{"2E}
\DeclareMathSymbol{\varmapstochar}         {\mathrel}{oasy}{"37}
   \def\varmapsto{\varmapstochar\varrightarrow}
   \def\varhookrightarrow{\lhook\joinrel\varrightarrow}
   \def\varhookleftarrow{\varleftarrow\joinrel\rhook}

\DeclareMathDelimiter{\varuparrow}     {\mathrel}{oasy}{"22}{largesymbols}{"78}
\DeclareMathDelimiter{\vardownarrow}   {\mathrel}{oasy}{"23}{largesymbols}{"79}
\DeclareMathDelimiter{\varupdownarrow} {\mathrel}{oasy}{"6C}{largesymbols}{"3F}

%definitions of \meno, \joinrelaz and \relbarra
\DeclareMathSymbol{\meno} {\mathbin}{oasy}{"00}
\DeclareRobustCommand
  \joinrelaz{\mathrel{\mkern-3mu}}
\DeclareRobustCommand
  \relbarra{\mathrel{\smash\meno}} % \smash, because -
                               % has the same height as +

\DeclareRobustCommand\varlongrightarrow
     {\relbarra\joinrelaz\varrightarrow}
\DeclareRobustCommand\varlongleftarrow
     {\varleftarrow\joinrelaz\relbarra}
\DeclareRobustCommand
  \varlongmapsto{\varmapstochar\varlongrightarrow}
\DeclareRobustCommand
  \varlongleftrightarrow{\varleftarrow\joinrelaz\varrightarrow}

\def\varoverrightarrow#1{\vbox{\m@th\ialign{##\crcr
      \varrightarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
      $\hfil\displaystyle{#1}\hfil$\crcr}}}
\def\varoverleftarrow#1{\vbox{\m@th\ialign{##\crcr
      \varleftarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}%
      $\hfil\displaystyle{#1}\hfil$\crcr}}}
\def\varrightarrowfill{$\m@th\smash\meno\mkern-7mu%
  \cleaders\hbox{$\mkern-2mu\smash\meno\mkern-2mu$}\hfill
  \mkern-7mu\mathord\varrightarrow$}
\def\varleftarrowfill{$\m@th\mathord\varleftarrow\mkern-7mu%
  \cleaders\hbox{$\mkern-2mu\smash\meno\mkern-2mu$}\hfill
  \mkern-7mu\smash\meno$}

%amsmath redefinitions, if loaded
\@ifpackageloaded{amsmath}{%
\ams@def\relbarra{\mathrel{\mathpalette\mathsm@sh\meno}}
\def\varleftarrowfill@{\arrowfill@\varleftarrow\relbarra\relbarra}
\def\varrightarrowfill@{\arrowfill@\relbarra\relbarra\varrightarrow}
\def\varleftrightarrowfill@{\arrowfill@\varleftarrow\relbarra\varrightarrow}
\ams@renewcommand{\varoverrightarrow}{%
  \mathpalette{\overarrow@\varrightarrowfill@}}
\ams@renewcommand{\varoverleftarrow}{%
  \mathpalette{\overarrow@\varleftarrowfill@}}
\ams@newcommand{\varoverleftrightarrow}{%
  \mathpalette{\overarrow@\varleftrightarrowfill@}}
\ams@newcommand{\varunderrightarrow}{%
  \mathpalette{\underarrow@\varrightarrowfill@}}
\ams@newcommand{\varunderleftarrow}{%
  \mathpalette{\underarrow@\varleftarrowfill@}}
\ams@newcommand{\varunderleftrightarrow}{%
  \mathpalette{\underarrow@\varleftrightarrowfill@}}
\newcommand{\varxrightarrow}[2][]{\ext@arrow 0359\varrightarrowfill@{#1}{#2}}
\newcommand{\varxleftarrow}[2][]{\ext@arrow 3095\varleftarrowfill@{#1}{#2}}
\def\varvarinjlim{%
  \mathop{\mathpalette\varlim@{\varrightarrowfill@\textstyle}}\nmlimits@
}
\def\varvarprojlim{%
  \mathop{\mathpalette\varlim@{\varleftarrowfill@\textstyle}}\nmlimits@
}
\relax}{}

%mathtools redefinitions, if loaded
\@ifpackageloaded{mathtools}{%
\newcommand{\varxleftrightarrow}[2][]{%
  \ext@arrow 3095\varMTleftrightarrowfill@{#1}{#2}}
\def\varMTleftrightarrowfill@{%
  \arrowfill@\varleftarrow\relbarra\varrightarrow}
\newcommand{\varxhookleftarrow}[2][]{%
  \ext@arrow 3095\varMThookleftfill@{#1}{#2}}
\def\varMThookleftfill@{%
  \arrowfill@\varleftarrow\relbarra{\relbarra\joinrelaz\rhook}}
\newcommand{\varxhookrightarrow}[2][]{%
  \ext@arrow 3095\varMThookrightfill@{#1}{#2}}
\def\varMThookrightfill@{%
  \arrowfill@{\lhook\joinrelaz\relbarra}\relbarra\varrightarrow}
\newcommand{\varxmapsto}[2][]{%
  \ext@arrow 0395\varMTmapstofill@{#1}{#2}}
\def\varMTmapstofill@{%
  \arrowfill@{\mapstochar\relbarra}\relbarra\varrightarrow}
\relax}{}

%%stmaryrd old-style xmapsfrom (mathtools or amsmath needed)
\@ifpackageloaded{stmaryrd}{%
\newcommand{\varxmapsfrom}[2][]{%
  \ext@arrow 3095\varSMRmapsfromfill@{#1}{#2}}
\def\varSMRmapsfromfill@{%
  \arrowfill@\varleftarrow\relbarra{\relbarra\mapsfromchar}}
\newcommand{\xmapsfrom}[2][]{%
  \ext@arrow 3095\SMRmapsfromfill@{#1}{#2}}
\def\SMRmapsfromfill@{%
  \arrowfill@\leftarrow\relbar{\relbar\mapsfromchar}}
\relax}{}

%arrow commands provided by old-arrows with option old
\DeclareRobustCommand\varlonghookrightarrow
    {\lhook\joinrelaz\varlongrightarrow}
\DeclareRobustCommand\varlonghookleftarrow
    {\varlongleftarrow\joinrelaz\rhook}

%arrow commands provided by old-arrows (default)
\DeclareRobustCommand\longhookrightarrow
    {\lhook\joinrel\longrightarrow}
\DeclareRobustCommand\longhookleftarrow
    {\longleftarrow\joinrel\rhook}
\DeclareRobustCommand\longrightharpoonup
    {\relbar\joinrel\rightharpoonup}
\DeclareRobustCommand\longrightharpoondown
    {\relbar\joinrel\rightharpoondown}
\DeclareRobustCommand\longleftharpoonup
    {\leftharpoonup\joinrel\relbar}
\DeclareRobustCommand\longleftharpoondown
    {\leftharpoondown\joinrel\relbar}

\fi

%stmaryrd support for `new' and `old'
\@ifpackageloaded{stmaryrd}{%
  \stmry@if\def\varmapsfrom{\varleftarrow\mapsfromchar}\fi
  \stmry@if\def\varlongmapsfrom{\varlongleftarrow\mapsfromchar}\fi
}{}

\endinput