summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-12-10 03:03:14 +0000
committerNorbert Preining <norbert@preining.info>2024-12-10 03:03:14 +0000
commit4b8f9bbab70d3795b3fca6c333d0287c83187a3a (patch)
tree5f70011ee7eba83c1dbd56df375cd0884854df04 /macros/latex/contrib
parentc6f62b747db710a4daa4a422ac4f125847c88ac4 (diff)
CTAN sync 202412100303
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/easybook/README.md2
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx23
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin651960 -> 652058 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex8
-rw-r--r--macros/latex/contrib/elsarticle/changelog.txt28
-rw-r--r--macros/latex/contrib/elsarticle/doc/1pseperateaug.pdfbin100656 -> 123117 bytes
-rw-r--r--macros/latex/contrib/elsarticle/doc/1psingleauthorgroup.pdfbin100216 -> 122781 bytes
-rw-r--r--macros/latex/contrib/elsarticle/doc/elsdoc.pdfbin453698 -> 513738 bytes
-rw-r--r--macros/latex/contrib/elsarticle/doc/elsdoc.tex125
-rw-r--r--macros/latex/contrib/elsarticle/doc/elstest-1p.pdfbin99904 -> 122781 bytes
-rw-r--r--macros/latex/contrib/elsarticle/doc/elstest-1pdoubleblind.pdfbin248968 -> 354011 bytes
-rw-r--r--macros/latex/contrib/elsarticle/doc/elstest-3p.pdfbin98705 -> 121906 bytes
-rw-r--r--macros/latex/contrib/elsarticle/doc/elstest-3pd.pdfbin100019 -> 122573 bytes
-rw-r--r--macros/latex/contrib/elsarticle/doc/elstest-5p.pdfbin99256 -> 121752 bytes
-rw-r--r--macros/latex/contrib/elsarticle/doc/jfigs.pdf910
-rw-r--r--macros/latex/contrib/elsarticle/doc/pdfwidgets.sty5
-rw-r--r--macros/latex/contrib/elsarticle/elsarticle.dtx22
-rw-r--r--macros/latex/contrib/fancyhdr/README26
-rw-r--r--macros/latex/contrib/fancyhdr/fancyhdr.dtx253
-rw-r--r--macros/latex/contrib/fancyhdr/fancyhdr.pdfbin885095 -> 903503 bytes
-rw-r--r--macros/latex/contrib/fontscale/CHANGELOG.md6
-rw-r--r--macros/latex/contrib/fontscale/beery.cls14
-rw-r--r--macros/latex/contrib/fontscale/fontscale-table-classic.tex2
-rw-r--r--macros/latex/contrib/fontscale/fontscale-table-font-steps.tex2
-rw-r--r--macros/latex/contrib/fontscale/fontscale-table-musical.tex2
-rw-r--r--macros/latex/contrib/fontscale/fontscale.pdfbin106939 -> 109140 bytes
-rw-r--r--macros/latex/contrib/fontscale/fontscale.sty42
-rw-r--r--macros/latex/contrib/fontscale/fontscale.tex197
-rw-r--r--macros/latex/contrib/scaletextbullet/CHANGELOG.md6
-rw-r--r--macros/latex/contrib/scaletextbullet/beery.cls14
-rw-r--r--macros/latex/contrib/scaletextbullet/scaletextbullet.pdfbin65280 -> 65951 bytes
-rw-r--r--macros/latex/contrib/scaletextbullet/scaletextbullet.sty4
-rw-r--r--macros/latex/contrib/scaletextbullet/scaletextbullet.tex23
-rw-r--r--macros/latex/contrib/zugferd/DEMO-rechnung-zugferd.pdfbin40999 -> 41021 bytes
-rw-r--r--macros/latex/contrib/zugferd/DEMO-rechnung-zugferd.tex2
-rw-r--r--macros/latex/contrib/zugferd/README.md6
-rw-r--r--macros/latex/contrib/zugferd/zugferd-invoice.sty4
-rw-r--r--macros/latex/contrib/zugferd/zugferd.dtx334
-rw-r--r--macros/latex/contrib/zugferd/zugferd.pdfbin481844 -> 508882 bytes
39 files changed, 1092 insertions, 968 deletions
diff --git a/macros/latex/contrib/easybook/README.md b/macros/latex/contrib/easybook/README.md
index f0d5c4065e..36050f869d 100644
--- a/macros/latex/contrib/easybook/README.md
+++ b/macros/latex/contrib/easybook/README.md
@@ -1,5 +1,5 @@
# The `easybook` document class
-Easily typesetting Chinese theses or books (v2024hp)
+Easily typesetting Chinese theses or books (v2024hq)
## Abstract
`easybook` is a pure academic template created based on the `ctexbook` book document class. It also has the functions of `book` and `article` document class. Combined with the general framework design of the theses of many universities in China, providing multiple commands and interfaces allows users to easily customize the theses templates. Its basic macro package `easybase` can also be used with `ctex` and standard document classes.
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 3dbff5cf79..8d9da7c392 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -14,7 +14,7 @@
% This work has the LPPL maintenance status `maintained'.
%<class|package>\NeedsTeXFormat{LaTeX2e}[2021/11/15]
%<*class>
-\ProvidesExplClass{easybook}{2024/12/03}{2024hp}
+\ProvidesExplClass{easybook}{2024/12/09}{2024hq}
{Easily typesetting Chinese theses or books}
\bool_new:N \l__eb_compile_draft_bool
@@ -302,7 +302,7 @@
%</class>
%<*package>
\RequirePackage{etoolbox}
-\ProvidesExplPackage{easybase}{2024/12/03}{2024hp}
+\ProvidesExplPackage{easybase}{2024/12/09}{2024hq}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -749,7 +749,7 @@
{
\quark_if_recursion_tail_stop:n {#1}
\quark_if_recursion_tail_stop:n {#2}
- { #1 + \int_use:N \c@footnote } {#2}
+ { #1 + \int_use:N \c@footnote } { \exp_not:n {#2} }
\eb_fnt_map_symbols_list:nn
}
\cs_new_protected:Npn \SetFntSymbsList #1#2#3
@@ -772,7 +772,20 @@
\msg_new:nnn { easybase } { undefined-fntsymbol }
{ The~list~of~footnote~symbols~'#1'~isn't~defined. }
\SetFntSymbsList{empty}{1}{}
-\UseFntSymbsList{empty}
+\SetFntSymbsList{fnsymbol}{10}
+ {
+ { 1 } { $*$ }
+ { 2 } { $\dagger$ }
+ { 3 } { $\ddagger$ }
+ { 4 } { $\mathsection$ }
+ { 5 } { $\mathparagraph$ }
+ { 6 } { $\|$ }
+ { 7 } { $**$ }
+ { 8 } { $\dagger\dagger$ }
+ { 9 } { $\ddagger\ddagger$ }
+ { 10 } { \@ctrerr }
+ }
+\UseFntSymbsList{fnsymbol}
\cs_set_eq:NN \DefineFntSymbols \SetFntSymbsList
\cs_set_eq:NN \setfntsymbol \UseFntSymbsList
\tl_new:N \l__eb_fnnormal_tmpa_tl
@@ -2983,7 +2996,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/12/03}{2024hp}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/12/09}{2024hq}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 1689b1480b..2b5d93283f 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index 56f75f2168..42ac0b08e9 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -23,8 +23,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v2024hp,
- date = 2024/12/03,
+ version = v2024hq,
+ date = 2024/12/09,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
email = toquyi@163.com,
@@ -825,11 +825,11 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she
\begin{cnltxlist}[itemsep = 0ex]
\command{SetFntSymbsList}[\marg{符号表名}\marg{符号数量}\marg{符号列表}]\nonl
\command{UseFntSymbsList}[\marg{符号表名}]
- 这两个命令用于在脚注短编号标记为 \code{s} 自定义符号型时设置符号列表。\cs{SetFntSymbsList} 命令用于定义名为 \meta{符号表名} 的符号列表,\cs{UseFntSymbsList} 命令用于启用已定义的符号列表。默认的脚注符号列表是空的,注意使用符号型标记的脚注时计数器 \code{footnote} 的值仍然递增,以及定义新列表时 \meta{符号列表} 的写法和命令顺序:
+ 这两个命令用于设置自定义符号型脚注短编号标记 \code{s} 的符号列表。\cs{SetFntSymbsList} 命令用于定义名为 \meta{符号表名} 的符号列表,\cs{UseFntSymbsList} 命令用于启用已定义的符号列表。默认的脚注符号列表名为 \code{fnsymbol},只支持9个编号。注意使用符号型标记的脚注时计数器 \code{footnote} 的值仍然递增,以及定义新列表时 \meta{符号列表} 的写法和命令顺序:
\begin{ctexexam}
\SetFntSymbsList{fancy}{2}{{1}{*}{2}{\P}}
\UseFntSymbsList{fancy}
- \ebhdrset{fnmark-num = s}
+ \ebhdrset{fnnormal-num = s}
\end{ctexexam}
\end{cnltxlist}
\keychoice{fntext-num}{\fbox{plain},pifont,pifont*,pisans,pisans*,\optpath*{short num}}
diff --git a/macros/latex/contrib/elsarticle/changelog.txt b/macros/latex/contrib/elsarticle/changelog.txt
index b21a586099..01e7f6bdf6 100644
--- a/macros/latex/contrib/elsarticle/changelog.txt
+++ b/macros/latex/contrib/elsarticle/changelog.txt
@@ -3,32 +3,8 @@ Change Log
* elsarticle.dtx
-1. Frontmatter: Overfull \hbox has occurred while \output is active
+1. 'preprint' option has been modified to remove the line
+ 'Preprint submitted to Elsevier' in the footer of the PDF.
-https://tex.stackexchange.com/questions/514218/elsarticle-frontmatter-overfull-hbox-has-occurred-while-output-is-active/515199
-2. Footnotes: Updated to use non Arabic footnote numbers.
-
-https://tex.stackexchange.com/questions/669879/elsarticle-changing-symbol-used-in-fnref
-
-3. Author-affiliation: Updated for author-wise affiliation coding.
-Last author affiliation repeating for all authors problem is fixed.
-
-4. Accent characters in address: A bug fix. Accented characters in
-organisation field showed error. Hence loaded fontenc package.
-
-5. Updated for accent problems in TeXLive 2022. Font encoding T1 used
-by default
-
-6. Removed extra space appearing after 'Appendix' label
-
-7. updated for listing author affiliation below author names if
-\affiliation command is used immediately after \author (To match
-behaviour of \address command)
-
-* elsarticle-template-harv.tex, \
- elsarticle-template-num-names.tex, \
- elsarticle-template-num.tex
-
-1. Added examples for figures, tables and equations
------------------------------------------------------------------------
diff --git a/macros/latex/contrib/elsarticle/doc/1pseperateaug.pdf b/macros/latex/contrib/elsarticle/doc/1pseperateaug.pdf
index c3e49ea50d..175bc5f143 100644
--- a/macros/latex/contrib/elsarticle/doc/1pseperateaug.pdf
+++ b/macros/latex/contrib/elsarticle/doc/1pseperateaug.pdf
Binary files differ
diff --git a/macros/latex/contrib/elsarticle/doc/1psingleauthorgroup.pdf b/macros/latex/contrib/elsarticle/doc/1psingleauthorgroup.pdf
index 4dd7c45100..7749b492ab 100644
--- a/macros/latex/contrib/elsarticle/doc/1psingleauthorgroup.pdf
+++ b/macros/latex/contrib/elsarticle/doc/1psingleauthorgroup.pdf
Binary files differ
diff --git a/macros/latex/contrib/elsarticle/doc/elsdoc.pdf b/macros/latex/contrib/elsarticle/doc/elsdoc.pdf
index a97fc2e5b8..1111b53aa6 100644
--- a/macros/latex/contrib/elsarticle/doc/elsdoc.pdf
+++ b/macros/latex/contrib/elsarticle/doc/elsdoc.pdf
Binary files differ
diff --git a/macros/latex/contrib/elsarticle/doc/elsdoc.tex b/macros/latex/contrib/elsarticle/doc/elsdoc.tex
index fd9742141d..c819694e8d 100644
--- a/macros/latex/contrib/elsarticle/doc/elsdoc.tex
+++ b/macros/latex/contrib/elsarticle/doc/elsdoc.tex
@@ -71,7 +71,7 @@
\author{Elsevier Ltd}
\contact{elsarticle@stmdocs.in}
-\version{3.4}
+\version{3.4a}
\date{\today}
\maketitle
@@ -270,46 +270,50 @@ An example of coding the first type is provided below.
\end{vquote}
\begin{vquote}
-\author[1]{Jos Migchielsen\corref{cor1}%
+\author[1]{J.K. Krishnan\corref{cor1}%
\fnref{fn1}}
-\ead{J.Migchielsen@elsevier.com}
+\ead{jkk@example.in}
-\author[2]{CV Radhakrishnan\fnref{fn2}}
-\ead{cvr@sayahna.org}
+\author[1,2]{Han Thane\fnref{fn2}}
+\ead{han@different.edu}
-\author[3]{CV Rajagopal\fnref{fn1,fn3}}
-\ead[url]{www.stmdocs.in}
+\author[3]{T. Rafeeq\fnref{fn1,fn3}}
+\ead[url]{www.nowhere.com}
- \cortext[cor1]{Corresponding author}
- \fntext[fn1]{This is the first author footnote.}
- \fntext[fn2]{Another author footnote, this is a very long
- footnote and it should be a really long footnote. But this
- footnote is not yet sufficiently long enough to make two
- lines of footnote text.}
- \fntext[fn3]{Yet another author footnote.}
+\cortext[cor1]{Corresponding author}
+\fntext[fn1]{This is the first author footnote.}
+\fntext[fn2]{Another author footnote, this is a very long footnote and
+ it should be a really long footnote. But this footnote is not yet
+ sufficiently long enough to make two lines of footnote text.}
+\fntext[fn3]{Yet another author footnote.}
\end{vquote}
\begin{vquote}
- \affiliation[1]{organization={Elsevier B.V.},
- addressline={Radarweg 29},
- postcode={1043 NX},
- city={Amsterdam},
- country={The Netherlands}}
-
- \affiliation[2]{organization={Sayahna Foundation},
- addressline={JWRA 34, Jagathy},
- city={Trivandrum},
- postcode={695014},
- country={India}}
-
-
- \affiliation[3]{organization={STM Document Engineering
- Pvt Ltd.},
- addressline={Mepukada, Malayinkil},
- city={Trivandrum}
- postcode={695571},
- country={India}}
+\affiliation[1]{organization={Department of Physics,
+ J.K. Institute of Science},
+ addressline={Jawahar Nagar},
+ city={Trivandrum},
+% citysep={}, % Uncomment if no comma needed
+% % between city and postcode
+ postcode={695013},
+ state={Kerala},
+ country={India}}
+
+\affiliation[2]{organization={World Scientific University},
+ addressline={Street 29},
+ postcode={1011 NX},
+ postcodesep={},
+ city={Amsterdam},
+ country={The Netherlands}}
+
+\affiliation[3]{organization={University of Intelligent Studies},
+ addressline={Street 15},
+ city={Jabaldesh},
+ postcode={825001},
+ state={Orissa},
+ country={India}}
+
\end{vquote}
The output of the above \TeX{} source is given in Clips~\ref{clip1} and
@@ -366,31 +370,36 @@ The following example code provides the markup of the second type
of author-affiliation.
\begin{vquote}
-\author{Jos Migchielsen\corref{cor1}%
+\author{J.K. Krishnan\corref{cor1}%
\fnref{fn1}}
-\ead{J.Migchielsen@elsevier.com}
- \affiliation[1]{organization={Elsevier B.V.},
- addressline={Radarweg 29},
- postcode={1043 NX},
- city={Amsterdam},
- country={The Netherlands}}
-
-\author{CV Radhakrishnan\fnref{fn2}}
-\ead{cvr@sayahna.org}
- \affiliation[2]{organization={Sayahna Foundation},
- addressline={JWRA 34, Jagathy},
- city={Trivandrum}
- postcode={695014},
- country={India}}
-
-\author{CV Rajagopal\fnref{fn1,fn3}}
-\ead[url]{www.stmdocs.in}
- \affiliation[3]{organization={STM Document Engineering
- Pvt Ltd.},
- addressline={Mepukada, Malayinkil},
- city={Trivandrum}
- postcode={695571},
- country={India}}
+\ead{jkk@example.in}
+\affiliation{organization={Department of Physics,
+ J.K. Institute of Science},
+ addressline={Jawahar Nagar},
+ city={Trivandrum},
+% citysep={}, % Uncomment if no comma needed
+% % between city and postcode
+ postcode={695013},
+ state={Kerala},
+ country={India}}
+
+\author{Han Thane\fnref{fn2}}
+\ead{han@different.edu}
+\affiliation{organization={World Scientific University},
+ addressline={Street 29},
+ postcode={1011 NX},
+ postcodesep={},
+ city={Amsterdam},
+ country={The Netherlands}}
+
+\author{T. Rafeeq\fnref{fn1,fn3}}
+\ead[url]{www.nowhere.com}
+\affiliation{organization={University of Intelligent Studies},
+ addressline={Street 15},
+ city={Jabaldesh},
+ postcode={825001},
+ state={Orissa},
+ country={India}}
\end{vquote}
\vspace*{-.5pc}
@@ -592,6 +601,7 @@ string like `step' to all the item numbers.
\includeclip{5}{1 1 313 83}{jfigs.pdf}
\def\rulecolor{orange}
+\vspace*{-1pc}
\section{Cross-references}
In electronic publications, articles may be internally
@@ -772,6 +782,7 @@ Please refer below to see how to code them.
....
\end{vquote}
+\vspace*{-1pc}
\section{Final print}\label{sec:final}
The authors can format their submission to the page size and margins
diff --git a/macros/latex/contrib/elsarticle/doc/elstest-1p.pdf b/macros/latex/contrib/elsarticle/doc/elstest-1p.pdf
index 14b777a5e1..af1cd3bed6 100644
--- a/macros/latex/contrib/elsarticle/doc/elstest-1p.pdf
+++ b/macros/latex/contrib/elsarticle/doc/elstest-1p.pdf
Binary files differ
diff --git a/macros/latex/contrib/elsarticle/doc/elstest-1pdoubleblind.pdf b/macros/latex/contrib/elsarticle/doc/elstest-1pdoubleblind.pdf
index 203d550da6..7b07162334 100644
--- a/macros/latex/contrib/elsarticle/doc/elstest-1pdoubleblind.pdf
+++ b/macros/latex/contrib/elsarticle/doc/elstest-1pdoubleblind.pdf
Binary files differ
diff --git a/macros/latex/contrib/elsarticle/doc/elstest-3p.pdf b/macros/latex/contrib/elsarticle/doc/elstest-3p.pdf
index 9072ece38d..6713c5d5c0 100644
--- a/macros/latex/contrib/elsarticle/doc/elstest-3p.pdf
+++ b/macros/latex/contrib/elsarticle/doc/elstest-3p.pdf
Binary files differ
diff --git a/macros/latex/contrib/elsarticle/doc/elstest-3pd.pdf b/macros/latex/contrib/elsarticle/doc/elstest-3pd.pdf
index c70c70f655..4ce51ee291 100644
--- a/macros/latex/contrib/elsarticle/doc/elstest-3pd.pdf
+++ b/macros/latex/contrib/elsarticle/doc/elstest-3pd.pdf
Binary files differ
diff --git a/macros/latex/contrib/elsarticle/doc/elstest-5p.pdf b/macros/latex/contrib/elsarticle/doc/elstest-5p.pdf
index 0c292b8e01..a5f5a0f7d2 100644
--- a/macros/latex/contrib/elsarticle/doc/elstest-5p.pdf
+++ b/macros/latex/contrib/elsarticle/doc/elstest-5p.pdf
Binary files differ
diff --git a/macros/latex/contrib/elsarticle/doc/jfigs.pdf b/macros/latex/contrib/elsarticle/doc/jfigs.pdf
index e1a2716708..b929f6ff98 100644
--- a/macros/latex/contrib/elsarticle/doc/jfigs.pdf
+++ b/macros/latex/contrib/elsarticle/doc/jfigs.pdf
@@ -1149,265 +1149,136 @@ endobj
/Filter /FlateDecode
>>
stream
-xIer%8U
-
-Ԑ\d</=}3`"AzmJsJ+o?({鯚gſ_s^yo#eW+|+/UR
-[ۯ:㕿o#4<~.cs{uGK{=ͻ|5z:h5=K75ܰEnㅘ? =C-i{<_{.]P"Ld/OgAj>οe}]?z=Z#c/LcLԮtyXN}^uAߜmUϲR_׍gAqCm^Zϣ~}sfc-O#_d&;5]jt,ygǶ͊E:<hۮFhyҮ7b2\ISV cofkZ> _<tMh\5콲q-?ވ 5L.gj٫Ɩ%ۏ9D^Ik$g^Ytj:8!p
+xIer%8U
+Ԑ\d</=}3`"AzmJsJ+o?({鯚gſ_s^yo#eW+|+/UR [ۯ:㕿o#4<~.cs{uGK{=ͻ|5z:h5=K75ܰEnㅘ? =C-i{<_{.]P"Ld/OgAj>οe}]?z=Z#c/LcLԮtyXN}^uAߜmUϲR_׍gAqCm^Zϣ~}sfc-O#_d&;5]jt,ygǶ͊E:<hۮFhyҮ7b2\ISV cofkZ> _<tMh\5콲q-?ވ 5L.gj٫Ɩ%ۏ9D^Ik$g^Ytj:8!p
ާ51ó7ùҁy֣XgJ5Yygmz>ș1u;yd f
lk? ֣ϡG)ߣ>P5Xo#>Ji@]ڸ ,A~^PG'].ŏy|6ǻ0 ~AG-3gA_]~˰{kJ|N#wolZL1a
-xfObXg<5Qg_n<go]ðdr{<py㍚?}V[D+gAcCN _çWUY` #y4ު@
-:nw
+xfObXg<5Qg_n<go]ðdr{<py㍚?}V[D+gAcCN _çWUY` #y4ު@
$֟v'`AT14Πsq0SE1sR.g!xߏ3Mr]k_3_Z hzPigπϏV
^vt^X
-Rx D<~M~<{FruirkR߹gok_uv%!ݿc3=+1)u㑜
-&w\
-la~mhdQ=~W|$|l-Q;x~s-XL2kP]?H1J
-}tQu GqE:eJ<AY_-?^>o2rlg{늎vRvE9kpE6;F5WJGqEOު]ƾYtv>5ԠC2tU-u|љK$e[;k6ub9{?:cmfsw@IaۖEԀ:?Kƈ F I{^ѸL W7{>SKyE(-﵎9ǗwEuK+Hmq3s8sjVG_Ƹh ]<%>#>vϱ${6ErPy
-wksxFzHה&O
-;d?k{ uT[|lY<4z^bWNq9uHWk?ίېې- Ycӱ WXbwG8
-![pCzS"<`@zыRФS+rYgrs^R\?ʱB
-٣mg rNu~7@[B;L sθxQiq;oZ .8ꗟU QzY:[Ӧ\3|G{s8S0>`ܿvuUкh5ؗ3v:>CϵIN=wN^J8!}P׸uQG1aAkxh2:T1*1=XS}m<1h
+Rx D<~M~<{FruirkR߹gok_uv%!ݿc3=+1)u㑜 &w\
+}tQu GqE:eJ<AY_-?^>o2rlg{늎vRvE9kpE6;F5WJGqEOު]ƾYtv>5ԠC2tU-u|љK$e[;k6ub9{?:cmfsw@IaۖEԀ:?Kƈ F I{^ѸL W7{>SKyE(-﵎9ǗwEuK+Hmq3s8sjVG_Ƹh ]<%>#>vϱ${6ErPy
+wksxFzHה&O ;d?k{ uT[|lY<4z^bWNq9uHWk?ίېې- Ycӱ WXbwG8
+![pCzS"<`@zыRФS+rYgrs^R\?ʱB ٣mg rNu~7@[B;L sθxQiq;oZ .8ꗟU QzY:[Ӧ\3|G{s8S0>`ܿvuUкh5ؗ3v:>CϵIN=wN^J8!}P׸uQG1aAkxh2:T1*1=XS}m<1h
I=62 %a^0> ZSiX
RGYy_;IϏrB5uklݣ
-LoeNZ Z
-E ظP^]j?̹:q {jzqU^93MgZ8Ns!ڳ}bMUfAJD$>LηK' 'bO;Y!Mܹt"r:Kܳ
-?96C;R5gFan>Dt )C $;r*֙
-| h
+LoeNZ Z
zT
)hTG5Kq8-eAgsPI
-&۵Hz)u.P+\RMvA&mC)SkT afWv+<S>!(ڬߡ $)K0$w)JOIb)ы#92H ^妕N/7JʧY ! x`yCS``K;sc.."Lqfpc U\Ri>ԚC|Tj
- #Çv{n6B q {Y&Q:6%^u|ui$|a)`#$iCWIKl xO3Lep\l)<
-$$E$y<KG~kW~smWg P45v(dvnx)M2mȤXܭV3BnQ8PBm鄴#8tp΢e`x$wDGȅInΣFNV(KE7j+bd#JLnoA_v*^_d7xlyRUò$ʲ
-.C^TJ?}ȦNXxWQ[u,[2Ynfqt"eNcĘXinVNATfEWa^ڲMrUzT9
-@_;!]s!6Jːl"@c-<а #IG–]=$-'w+3;LU$:P kH p4Xŝ>G5$T0O폣1RTlLC,@Td:9sa>`T
-9-Huf6*j'!6]t2~F+L?W!=kXI:
-Qk:#Ґ!ov6~\xJQE <"%N)c+MZmȔi:]߲K&h@4!HSO8D>R,q:SǬ ]Hu`q9
+&۵Hz)u.P+\RMvA&mC)SkT afWv+<S>!(ڬߡ $)K0$w)JOIb)ы#92H ^N/7JʧY ! x`yCS``K;sc.."Lqfpc U\Ri>ԚC|Tj
+ #Çv{n6B q {Y&Q:6%^u|ui$|a)`#$iCWIKl xO3Lep\l)<
+$$E$y<KG~kW~smWg P45v(dvnx)M2mȤXܭV3BnQ8PBm鄴#8tp΢e`x$wDGȅInΣFNV(KE7j+bd#JLnoA_v*^_d7xlyRUò$ʲ .C^TJ?}ȦNXxWQ[u,[2Ynfqt"eNcĘXinVNATfEWa^ڲMrUzT9
+@_;!]s!6Jːl"@c-<а #IG–]=$-'w+3;LU$:P kH p4Xŝ>G5$T0O폣1RTlLC,@Td:9sa>`T 9-Huf6*j'!6]t2~F+L?W!=kXI:
+Qk:#Ґ!ov6~\xJQE <"%N)c+MZmȔi:]߲K&h@4!HSO8D>R,q:SǬ ]Hu`q9
0$S{f@eCY(-k÷$[W+[ZYO[
w*ׅ23P
9vt&ߕc?*ʾ180gmrܤ9l5ڐD{YF@Rx*TcGla{> aALcCFIQTϹQ[TZщ0o^xgك=$GQJ @& g!5\"nEmKiez(KPi\9&r!̱~>sTID|kV9<gf* @mr GaU^?#TEhŠꑶ [9aa$r2<B6% v9y[SxաVʰK@Fh);DT9"
-#`$Hc2W9?4
xW 1n1"ձccc8 ݶcn}GPb9`FnR9*U o{
-\ #h
- DFpoJeSAD8d'~edY3[ޞͼnH"=
-ޞClK"В}.e`a8shH7iJr2
+\ #h
+ DFpoJeSAD8d'~edY3[ޞͼnH"= ޞClK"В}.e`a8shH7iJr2
E,pr'
-Qvp0s\JlX
-a[X?l$PYlau{]I٩!ZN[IVL $}ÿ_[G[Y5BGF `+ ](ֵ{>p9mFho⌸Zw/rs8A3ن !8BJ$ĻU"]*EX!hּlKH\wzZ~7!ctlú3
-1$o/iX99>pFZ@5d'I&9ΡsǿqűP
-'9Vi
+Qvp0s\JlX a[X?l$PYlau{]I٩!ZN[IVL $}ÿ_[G[Y5BGF `+ ](ֵ{>p9mFho⌸Zw/rs8A3ن !8BJ$ĻU"]*EX!hּlKH\wzZ~7!ctlú3
+1$o/iX99>pFZ@5d'I&9ΡsǿqűP '9Vi
s`
[g
ll_𠛍3O>)+7; y+/4
-^_"PMmf60Eʈ#.Q܎2"Ш}EH͂tJ '}@sRQ=,h!EA,342|whsjr_L̜cvK&KPRRFknuRfFm4,@!/5|
+^_"PMmf60Eʈ#.Q܎2"Ш}EH͂tJ '}@sRQ=,h!EA,342|whsjr_L̜cvK&KPRRFknuRfFm4,@!/5|
>
-Z-˪uD!{C& AfN.lhԚ;mD4vȈ1,yF[00ErJ*ƨBWK
-U;KZ
-nMu󖰍[QzMM(S@R5o5WsEhIs,`+]JטF\v9pq&Y,![t("+#SYj<NC9͂M͛ѱlNw5-%%
-q9\dN}&#yĬY3L3a".
+Z-˪uD!{C& AfN.lhԚ;mD4vȈ1,yF[00ErJ*ƨBWK U;KZ nMu󖰍[QzMM(S@R5o5WsEhIs,`+]JטF\v9pq&Y,![t("+#SYj<NC9͂M͛ѱlNw5-%%
+q9\dN}&#yĬY3L3a".
p)r"1?:Wk\^4sr9ABIaҊ8ҥDF
-A͈$@e6\\lA0!]dqdީ ހld5/nD([8_JH
-D B;βM<̡_hs
-]F*l/ya~}% Ś'grt{lj|| >JNx:¢iЮ+x`3R]pȂM8_yQ Z˭n
+A͈$@e6\\lA0!]dqdީ ހld5/nD([8_JH
+]F*l/ya~}% Ś'grt{lj|| >JNx:¢iЮ+x`3R]pȂM8_yQ Z˭n
7*!;X qObOL$-5IK!؇"KZ"&҆r籱^=C>dNv%|rc'2 9f
-TVޒI`9(f|,/?ުEC 1<y'
-DŹ`|eZa3g:f%,83TOh,2
+TVޒI`9(f|,/?ުEC 1<y' DŹ`|eZa3g:f%,83TOh,2
I{
- *.sлy@8si4 %z/J o^axٕ!r
-||g*18܋ <Qyl"$=A\sz:_UL-ABĈ2Hd
+ *.sлy@8si4 %z/J o^axٕ!r
7%]f xy(@tx;m{?} vy-bRP
-ak[{h/0Jc䚮c[У{%r4z]l}㏻-0dW%BG
-׷rV"#< &<!R./ Qsw6) j+|%5_a؃9R3&
-\KyB#(9bJ^T>>ާ<>1Ī1)ᜉnĺ279GBFʜ\ LN߆
-aַ̋ϛY
-9>@5DtCu?0t[#FbO`E'
-8KVWɐ2J
- e? B`#*U}t3>]CW;tad7$?p78"vsT3EIoઙ{/rdbx ?~3mtuTe(iIJTxC\yy>'ON7<V j-ܘmwGh<OխՖW|Ú/-%x1`;rTW&k_Ԅ(ZVL@GX>{ѢTRM]P0\dv?F@fD 47ԁ B`exnjv8toylTs4 H'-ɕDun6ކEP4[&
-+:xE~po4suN3qzXo Q@2i!SAm'wȠEISEY=xVЍ=eyU8M3"G0cQx*9}PM&@1H+o8a;ɓ=O)JhM De$7
+ak[{h/0Jc䚮c[У{%r4z]l}㏻-0dW%BG
+9>@5DtCu?0t[#FbO`E' 8KVWɐ2J e? B`#*U}t3>]CW;tad7$?p78"vsT3EIoઙ{/rdbx ?~3mtuTe(iIJTxC\yy>'ON7<V j-ܘmwGh<OխՖW|Ú/-%x1`;rTW&k_Ԅ(ZVL@GX>{ѢTRM]P0\dv?F@fD 47ԁ B`exnjv8toylTs4 H'-ɕDun6ކEP4[& +:xE~po4suN3qzXo Q@2i!SAm'wȠEISEY=xVЍ=eyU8M3"G0cQx*9}PM&@1H+o8a;ɓ=O)JhM De$7
On$Z% N'W:CZpmg7V /l$ZV$1̀\Rx4nR_c =DXVa6cs B2,
v6x}U g1p"g&.Gq\y7N0Nci”̀IUA~ϷrV"#@Ip
-
-UZ]ep
-B{A),)4ΐ3q^p`||HI)h ͙|U{R2n@vUhCȮ
- %E3
-UYDa32R
-)(rt]HUdRTo1&G%ujnش\@X<ʬ+=+T׳w$GtL2b
-hjES3sCGY k{-O׹xf&֧qs B-4S`,r3D}،XTd
-!Y͇JoҲkb
-5B57Z14,N&k">w,`fMAI0UdGm:O[(
-bu'JI }t,z#`~ZK@LljH.ōIqUoˁEl(A \X/pؚ6nu$g6W,SWbPP Dm(;`
+
+UZ]ep B{A),)4ΐ3q^p`||HI)h ͙|U{R2n@vUhCȮ
+!Y͇JoҲkb
+bu'JI }t,z#`~ZK@LljH.ōIqUoˁEl(A \X/pؚ6nu$g6W,SWbPP Dm(;`
ICs~k [%P1Aӯl
KNh
-[Mi
+[Mi
-T@"4cQq+ _W'@lcKO
-."I%GԠJs^o)\s?d(\E@`lfR{p9F=1C5(K.=`qf?AO&ٷ7c
-u^uK6$#E17W0(ZYT0 y{Ǡ~Ï,a@Ϫ`2X7}нg]-qh7FȾ๰phiz>NXQ|˸|q[57#Z걫QnWbVXM\k=LA=ͼ-7qli&712ҽ²JTYum08s֬K5PLS׈
-rem{\AG膢9"|d/A-C%sYc[ˋ쩙I̸0oAb¦"L-c-&\ 9TnF:!S=I{brxE46mΰ@iK+!N
-FUBG2
-4l&?Bi,v۔uq.&hYm픍x}Hw1v3 O;760)sVDorW]l|[.ջDy1VMc͊ ek@]4~AҏKl ?Dnʋ^]$6C:q$["~Sn,vX؆̾ˑ]2cmWm\
-(JXJ :z$C\%L5"fm\7fc.eC%.;l'$t0T653.s6Mw;t;xiLɃ (Il;ϻMքGcrVWFUj
-`O/N[oec>^G4*ADo٪syiZ?}.Rnö _Ӝ"K*
-'ø:#)|1GIƾq>AlU2n
-UºhQ4ms</_W!-zM0JhΥ8pt*=
-&6AmL!+HXIȀL/5l"{#a?\B_CE!f'hRw_&ڃʭiB[^n}Y r( 5Ql$_E½mbDPZKt`9:` BJ+7Vsc^pjCh).Ptl! dv!7(OYBBʃ6hyuSE!Ϊ^Ԥ]j 5
-M8u[gW ;vj5_w9g[^
-Qǘn}v1mEQgŠDD דL\ɢp8#`&{[w|lO_jxRowuFwns圫GPLv\΁=rl b;T4~G ).ItruCa{f1]`b{_bD69. j* Teab"
-<~msPX[Ϩ N
-BS
-LȘSDaEkKxunJY3f3d[Jlv.ItKvm65ޙv}<.@mL `3
-'MW9z&1F#VPnJ3ps`Rq=W4^<EjN`P3|
-L"y~DDOӫO Aŧp7=͢^3mOov+ _V}$tK^Yc;# y) t݆Z a~ԇkLBe
-~Z4YHwuSIРLc|w
-_Mϓ8N!
- [ȳvhVCN
- 3!0|f/ʋAF$`VԷ7".Tn3<k4rCa[l
-{5#?VW@ 6xO.,޺P|=`zUZU} m^h+fO9I@$QpDvTLn!`YOT&
-y&B!M.#%^#dEBuA؅,1um:{Y8#&Z>A`r pF믰ag']wꑖjFF@v&+Vc5m&ؑ
-^o
-{D[ٝn7koҙbċ/3Jq1QE+((W!>$;jrdG9w{W?>o4ǚ%{cTSRsٽz
-~6`Hk' rV_7FoiׇQ ٭N< .T%x<B%+I1
-ZW3nP@o祁S; mU-E\};<n*[T/4p 8 GWlBm.ߤB' ʗؗixۥ01$P/EB,xA[̞.w16&z='lkZuW ޤ-Q
-|&ȯ:K.vt>A
-&u&uNf
-=mk& FJlVDmPHjE$Oώ3@RXb#kQ3RNq4VOU*UeˏRng!;*@h
-'G{-L!joګZ9vO5³=e {$>0
-</J*/"ս:o>o`@\0A-AT ÕQoiU($d&zU{5Jj:.ӕ_<,6AXUpm
-S%@V,&6h]^ň^PϤb8\5YVVD;Sp؝Ǭ]]uɘn
-sp> &Le2sa:6y/Wb5ou\sC^#Ҁzx:<<IƎX8(d<25wF;t׌T[h6 *K#SEH|;PK<1b9Whf"Ua'f)0U;Z܁R*JO9BMMVqh
-[+KT;0[''J@@ErΊ8Vg0ގN8tޖ` w bݰzJ>P٬jF:&JTPC^׋ @J V!u7
-c5m
-w&97vV+&g8`L7Wmlڡ>[|FԳe?a8;BYtwxfy;\m;)F7Mo2;kW\R̺c]t%bC
-w*$Ӱ=`]rǒK7 (}l&hşYY'gkԥA. N<m'*ˁFN-2TY$ށV&C35bsC2b?]f۪MnziD1|*B9κi-}`7xewbP 4 W60jw&nRvjN#Žp',,Y>>2z ;9i QY}gcV`
-
-z*#|t+rncbMV=
-Dq@ہ$dQf".&Iذn,7 %`<ďX\jCQb**r牅Nܜ[S[d l+oq2AHEkI,5nek" Jă=!aHT[D3>,k zN!p0**Wg߁0LTj8
-gq}
-r/Y5
-uI/X‚TB-|gĭA9`#\tYd>߰1 i~|6Y,oZ<
-
-u̷3 z`ORK~$(K$
-W6y !q|Qw]Uݾ,7+=P~|+RMLE>ӶT:[  ~&it.4XF3
+T@"4cQq+ _W'@lcKO ."I%GԠJs^o)\s?d(\E@`lfR{p9F=1C5(K.=`qf?AO&ٷ7c
+u^uK6$#E17W0(ZYT0 y{Ǡ~Ï,a@Ϫ`2X7}нg]-qh7FȾ๰phiz>NXQ|˸|q[57#Z걫QnWbVXM\k=LA=ͼ-7qli&712ҽ²JTYum08s֬K5PLS׈ rem{\AG膢9"|d/A-C%sYc[ˋ쩙I̸0oAb¦"L-c-&\ 9TnF:!S=I{brxE46mΰ@iK+!N
+FUBG2 4l&?Bi,v۔uq.&hYm픍x}Hw1v3 O;760)sVDorW]l|[.ջDy1VMc͊ ek@]4~AҏKl ?Dnʋ^]$6C:q$["~Sn,vX؆̾ˑ]2cmWm\
+UºhQ4ms</_W!-zM0JhΥ8pt*=
+&6AmL!+HXIȀL/5l"{#a?\B_CE!f'hRw_&ڃʭiB[^n}Y r( 5Ql$_E½mbDPZKt`9:` BJ+7Vsc^pjCh).Ptl! dv!7(OYBBʃ6hyuSE!Ϊ^Ԥ]j 5
+L"y~DDOӫO Aŧp7=͢^3mOov+ _V}$tK^Yc;# y) t݆Z a~ԇkLBe ~Z4YHwuSIРLc|w
+_Mϓ8N!
+ 3!0|f/ʋAF$`VԷ7".Tn3<k4rCa[l {5#?VW@ 6xO.,޺P|=`zUZU} m^h+fO9I@$QpDvTLn!`YOT& y&B!M.#%^#dEBuA؅,1um:{Y8#&Z>A`r pF믰ag']wꑖjFF@v&+Vc5m&ؑ ^o {D[ٝn7koҙbċ/3Jq1QE+((W!>$;jrdG9w{W?>o4ǚ%{cTSRsٽz ~6`Hk' rV_7FoiׇQ ٭N< .T%x<B%+I1 ZW3nP@o祁S; mU-E\};<n*[T/4p 8 GWlBm.ߤB' ʗؗixۥ01$P/EB,xA[̞.w16&z='lkZuW ޤ-Q |&ȯ:K.vt>A &u&uNf =mk& FJlVDmPHjE$Oώ3@RXb#kQ3RNq4VOU*UeˏRng!;*@h
+'G{-L!joګZ9vO5³=e {$>0
+S%@V,&6h]^ň^PϤb8\5YVVD;Sp؝Ǭ]]uɘn
+[+KT;0[''J@@ErΊ8Vg0ގN8tޖ` w bݰzJ>P٬jF:&JTPC^׋ @J V!u7
+c5m w&97vV+&g8`L7Wmlڡ>[|FԳe?a8;BYtwxfy;\m;)F7Mo2;kW\R̺c]t%bC
+w*$Ӱ=`]rǒK7 (}l&hşYY'gkԥA. N<m'*ˁFN-2TY$ށV&C35bsC2b?]f۪MnziD1|*B9κi-}`7xewbP 4 W60jw&nRvjN#Žp',,Y>>2z ;9i QY}gcV`
+z*#|t+rncbMV=
+r/Y5 uI/X‚TB-|gĭA9`#\tYd>߰1 i~|6Y,oZ<
+u̷3 z`ORK~$(K$ W6y !q|Qw]Uݾ,7+=P~|+RMLE>ӶT:[  ~&it.4XF3
BD;8uZA ˬv٨,FOL]aź]\|A{~jbNpȝ/;Tܸ/ͦ;$43#GH87cFg $"'uV$
DrU5= p(A%1k7jpr
yx(R
-lf8.Pށ04Uwa_?㖿(g-n(@% Y"P44/Znb_>
-Eծ٥ ~D7Ogt"̯mPФƊoaUv1A.SIJV=}|Kn/2zmK\R
+lf8.Pށ04Uwa_?㖿(g-n(@% Y"P44/Znb_>
ܭ&(33="AnKDžEޭU}K灳CYR\;JƢo
-E9MNj{3!۫l
-(RSWXbS.܍3W0A+pAX<NoSj’2sc:?1=IScx#
-CK}"7nh(
-R\4<t[']͸Gg>o9ͥkgi<;dUxnj7?-O@oab"tGVvQEr;KtZWrRg ' eN.`G gI.> D:Jm^hWpY5_>i| 6'1@yp}LoZ_lLWK]8up<
-[#o/6E44 nodq9l`Ǯd4pSyV? s!
+E9MNj{3!۫l (RSWXbS.܍3W0A+pAX<NoSj’2sc:?1=IScx#
+CK}"7nh(
p
݋FBia
-aI 8sX!swXViy悻bOkKo;mTǒzȫL ᕣ“.Hf
- 2FcQN9~u)s)V"m"wYNYyv)Ԫa}?U8M!l==eI^iotyӺk^@ft_P"J)'Gq߂Ks\;F^U 7/h2 |)0!D1CDtI[:ĉB6>N3 \pmPpM,x0=l@hʞ4)21O`:h#gb$
-uGq#eJ56g
-VPށxcF^V}I[`_ˤ*R
-YWh%|vŎ)]3TT>zXO 0jB?ד.:`jWceP%\6dF%U+S *HQ׫dGyc8<27:R550?Q'([\Vڈ~K-d0*Eđt~ybk EgpV
+aI 8sX!swXViy悻bOkKo;mTǒzȫL ᕣ“.Hf
+ 2FcQN9~u)s)V"m"wYNYyv)Ԫa}?U8M!l==eI^iotyӺk^@ft_P"J)'Gq߂Ks\;F^U 7/h2 |)0!D1CDtI[:ĉB6>N3 \pmPpM,x0=l@hʞ4)21O`:h#gb$
+uGq#eJ56g VPށxcF^V}I[`_ˤ*R YWh%|vŎ)]3TT>zXO 0jB?ד.:`jWceP%\6dF%U+S *HQ׫dGyc8<27:R550?Q'([\Vڈ~K-d0*Eđt~ybk EgpV
A@e&s(-Wd?Aَ{,֦zRvH~%V]htxW]F&,uaI["/
-1iUt͙@Q]N6Hk8&WʣUP.#=EI#|^x%
-x{hv `ELE$_ E6OGK |=7 z!g/#.]qEñu]f!1П+jU"C{(q#bC;"L&V,1KyѬTw@V%̨++0GqTIZhb$
-c]e;zD6Й#6۳mT(<WÅEU\z< k =`4q$#O
-?VַN=H% v^ƍ<!xVa<aU61{QL%S0%pYcpm i0_UTbFgDaQ_=bNRu%JmpR:#Լ__:8>o (e*26gLs]*m9%\7>}BFM@N]~Sf(
+1iUt͙@Q]N6Hk8&WʣUP.#=EI#|^x% x{hv `ELE$_ E6OGK |=7 z!g/#.]qEñu]f!1П+jU"C{(q#bC;"L&V,1KyѬTw@V%̨++0GqTIZhb$ c]e;zD6Й#6۳mT(<WÅEU\z< k =`4q$#O
]:(M!q1[=%U||MH$|֖Cfp;
OMɖY62ȗ];6+̲HT2^
-qf<* 1 ,M}qۥn\l>
-+GU#Ȅ=KX$eZ^ɖI@mj/2,9/Uvȟc{&-K;,}L
-{7^ٝ4tP6;+&>hT}+
-dô5bV?aгH
-?QY? ,^L|*>M]?
-a,6t.vX!-( ď[_ө=i><B>7_hDm=,S<`HBOHNW }+i 'ftm`ي8[۾rDɻ,X$|JTxf&{H]!j2.qp$F}y,WY!D6GXو:wN~)˧ˆN_h[~LKYɉv8}eyh>ݕ7@7Tr."QZ qs=lhq^n
-pPTm84G{b~̩Ġ)߿
-d`!
-K
-z
-c%|m-Tgg'"r޷'|+n暩V
-~v<ŭfѣx$sh=߾(6g<禢Z>gڭnNrB7 Xޡv
-w'6x}ĕթ R"7*#ȵ2Y_lG3ر.ӟo{jh$J1B|wtLNx]J!"| [h2T=j$#QW.7@l5:Isy\lk,J!z$Yњi!9$'>ulj=AS]MA 70upAQ`ppGdhZ
+qf<* 1 ,M}qۥn\l>
+{7^ٝ4tP6;+&>hT}+
+dô5bV?aгH
+?QY? ,^L|*>M]?
+~v<ŭfѣx$sh=߾(6g<禢Z>gڭnNrB7 Xޡv w'6x}ĕթ R"7*#ȵ2Y_lG3ر.ӟo{jh$J1B|wtLNx]J!"| [h2T=j$#QW.7@l5:Isy\lk,J!z$Yњi!9$'>ulj=AS]MA 70upAQ`ppGdhZ
C
-\llU fb\hZtnv#QRTN9IrpC
-2(ۆldDilEK>VX. N7،
-kgDoyؘ\;4>RARlLJNۭa:mǬg/K}ǜb>ݐܳوbcRuF':3ő
-AQ?cOeZԫS=UOx(\9
-ھV*c8A=KLhϠy*ɉe@n;b繨N|FQOb[\
-BoϠ
-#86 pNRȃ1#Ǹ1jtl<会k)@k͎M~%bily*Y Ovx@߁;yd!7\O1y{C76Ds ؆qp"yǥ
-511m-zEppHS`o= ~WH4~A>%Na!1h3b{玑yȓ/u+TT> Ϳ w2PF>l;@k^~._C:me,$"1=P-y*)(+c9
-آ¬Yp6\; {g
-AQ!kOoD?\jң',OƆ;s
-KWSM+Cȇ8 [>
-͏hg7z#֮+ǠPD5(XTH>LZTrciT[
-];ޞ(tc323; ޡ^Jj5\ܙej^g\1lj]
-IJ%W >#/Wn!0wV1bl C7*[sHآ:Ca.ECvnb3ys9s?DFMƾE/E3moȉ`
-Uh^"XY7&O'w(;e2r@x<W=Gr#d3Aq!G~lx KzCFqc
-LK Alwra9/'{CW0/dwvq 7 9el ,_"9|uѡ kCU3t(}9ۜow99IWcސi
-Cy cQFUlKy3rP28x~qlh}387PfnI%/ #ր.jEvќWqDv]/cM? G|mgR(Giz & lsd>M=@X}݃~,Vwm32q }t! ]#UsL(ȳnM!f-"WK#T Eq=ʎiФnV0L^_o'Н&eJszr`uyE!rFpk!'>_̧:"AgCI
+\llU fb\hZtnv#QRTN9IrpC
+kgDoyؘ\;4>RARlLJNۭa:mǬg/K}ǜb>ݐܳوbcRuF':3ő AQ?cOeZԫS=UOx(\9 ھV*c8A=KLhϠy*ɉe@n;b繨N|FQOb[\
+AQ!kOoD?\jң',OƆ;s
+];ޞ(tc323; ޡ^Jj5\ej^g\1lj] IJ%W >#/Wn!0wV1bl C7*[sHآ:Ca.ECvnb3ys9s?DFMƾE/E3moȉ`
+Uh^"XY7&O'w(;e2r@x<W=Gr#d3Aq!G~lx KzCFqc LK Alwra9/'{CW0/dwvq 7 9el ,_"9|uѡ kCU3t(}9ۜow99IWcސi
+Cy cQFUlKy3rP28x~qlh}387PfnI%/ #ր.jEvќWqDv]/cM? G|mgR(Giz & lsd>M=@X}݃~,Vwm32q }t! ]#UsL(ȳnM!f-"WK#T Eq=ʎiФnV0L^_o'Н&eJszr`uyE!rFpk!'>_̧:"AgCI
sT^n=LQLݲ7~~Cl(U˺EB\Jg].fsdq@F+,CE]nlC)cFvQh} V<XUӈѽ7_-U=bfnqareشu+WI=p0_q5,|S(Dlو,L )3L
Roe%K4舍oe%b# JFg ͈\%gB#osH̝ʽc0X[Ъ8=L!4(6!; ]J
- =G&Nv2u,uc2o@""c߁Q VYx~&sq) ᨑ6r'wNE?3*+LHPD 0[f:sU㖹]
-_3(<l"sc˰'e6DQ_Sż 9dgM B۔KWa+
-@39Tb13LWn>|ty'O7G҇1ٔB(ktIX3SjPPwفV*"cF,OcTh8W=~76«+!K(J%C"
-rG @4i⹭GӝX*IO_ÎB<D
+ =G&Nv2u,uc2o@""c߁Q VYx~&sq) 6r'wNE?3*+LHPD 0[f:sU㖹]
+_3(<l"sc˰'e6DQ_Sż 9dgM B۔KWa+
+@39Tb13LWn>|ty'O7G҇1ٔB(ktIX3SjPPwفV*"cF,OcTh8W=~76«+!K(J%C" rG @4i⹭GӝX*IO_ÎB<D
8?Lb#3ֲUa4c6FMPdopD#OdzLB\n]kr3QGP"%el=e_dOzFOfBʓg@hBY`؃l'eIeH
-~gRxXBˬN鄍fh[A\y5@W*6..ZPQLz3Ls!5+1 ~E30&ꡋu"vtQp|O~ڐ>xXlQH881gCgT6ieu_zILU^3P2 B?Uђ Z2xRb+_*AqU̫f VJwEA
+~gRxXBˬN鄍fh[A\y5@W*6..ZPQLz3Ls!5+1 ~E30&ꡋu"vtQp|O~ڐ>xXlQH881gCgT6ieu_zILU^3P2 B?Uђ Z2xRb+_*AqU̫f VJwEA
w*9P|>S`?5*9S0$q?AL Žr SoC1-•.㖕<)"((
&le") |Q}xuSҮ]
-lw ] 48"eULP=0N*b 8~|Q
-3pjM>rhӭ PNP -Ņ>5Bw2;Ϡ=M}}hw*Ei1R!H&/q5,KS#jRP)8#:20[qz؜
-¯?<R*HdXh7Cm/J0SUC8 [F0WcL%XFV-sGGU^^uxjF* $2^睍Vt  .oXtk Жj"8LE"|80OBbl-1@ó)D2rLҷ.} $Hi"tuOgzptI$0KfO0ER7EbF*#e_Q3sŒFs{׌;,5X=^ ari# 50`fOIHDTuіlw YK?aͮ
-a'E86E'eDA͆1;SڮZ
-"KTߖ;
+lw ] 48"eULP=0N*b 8~|Q 3pjM>rhӭ PNP ->5Bw2;Ϡ=M}}hw*Ei1R!H&/q5,KS#jRP)8#:20[qz؜ ¯?<R*HdXh7Cm/J0SUC8 [F0WcL%XFV-sGGU^^uxjF* $2^睍Vt  .oXtk Жj"8LE"|80OBbl-1@ó)D2rLҷ.} $Hi"tuOgzptI$0KfO0ER7EbF*#e_Q3sŒFs{׌;,5X=^ ari# 50`fOIHDTuіlw YK?aͮ
+a'E86E'eDA͆1;SڮZ
}\ y⏲
-tK΍6i~K^`hd֋呎,Gs%NEjW;1]hz
-4,K@qXdAA^D@ o?~4ʧ6sqAs3yO30 '/ey{O
-Ps
-ZH
-0ޱ5Q 
-?:g Œ#9r%1RV$<
-$$ǗVttz F|bGbLqc퍃[P\$tq~X߼aBqahaὖ+-CTʑt'QU$|>x/}.}vj_X!stuJgVz^bx ?y1
-m
-aa2d6s N&V1Pg˷.bbW/1͉1_g)^7
-TXcu$x`bؠWEAfV^O
- ֪\
-z&ڂSL-͋S>J)לxag8MFBCԮaEypx3M,crm:4~#yA1;6Ɏb2^4:&!Kr%钅U9o7I$
-p>](e=>I8Ų5rL
-HP1 }
--P+j$t'tcz6!"̔kRU% j0zce1 9ܻ*vqw"[&E~DlȞ\ [5]U?:d^>@\>,)ЦA KfKeM(tgiVcѥj<`Lin.BZ7D#ynϐw-GjTcYEߥZNAߪˉȠ+^{~T&JXCR]36uf` {; 1Eme5-u =D6HbWP$Z>^1w3lFvI9M 9}/CF#dh|TcK$M/m&{`u'CN÷-@},3ǂdѶdW2giSKl~vp:HIrJe*xr
-uYP>5k1q8?h9_"{/~0W2 +spԋ]xǗbԲ%Bd|E;#vTX,{#*Q4)6 N@mMtjD:#_](u%k
-NӯK(OnMЯPm\P2O:g ˖# ={V
- s8 ҭ
-# >/ienpM=m`Otۇ>] 7Q+"yt/M6a.#L Jӣ6k;ڦ
-NV*8hm^L `ĠtU;w%pLܦ /j<`OU@xvc6nmw)()jlK[(A@Sb:
-y #r:﫹PMNG}xfm~V+>Y5+"K|L?X-Eʅ,-UŤh<EE@Џ*P/׻Rw4D- vI
-H$L7Nd1^A`c&EcJ!l
-9W{%gX92jnn`/@ nYSg㪕T
-љE=TCHwW^(b 9P/fXdVD7(IgۡҚ<BwF^. Nc$:9;z]^*q?k[{LwT``D/
-+-W}tR0YbKR+aR}"q7׮!ygY~Uz`G,DN!t- 3KFUR Eޞ(yfLWX*
-JL'{sO" 2
-A,rXfP"Ҏ#h8,5PkWDxdRFY)``R ng=:\B
-kmFT: :ZXY}2D} g8XJ};`*Jm=yҳGGMAW,1$#=
-Wf*o-aLR%7.  2aH\c*\ac[$3
-_MQ+{KZ:,wL7?tU\5OJО&Hiy4!eR⹨TϮ8^U؇SDG0AkӔmVnJD-"Y%++
-$A92 Z
-=mfDEiޭa-s8/̤(yr~A\3b]*RyQꗫ"nyJxōg)g齊Ņ2lh"jR;O#6=W<K?D:XV:WR ;_PUu,JaH؅$B
-yew
-Q;)7Cs.+\[ Xj&a)n{Lsl;X&Zk&,& N5?#~@O*Rr0!AܬD:`nooR^
-,#g]zuY /Id|+E:*аj=+$N )~@4
-:r9Mfy8
- DP@tpdHl6bl=uf-jI`'E_b,19-Gl>1eHYQm;]
-Ka
-84
-}]䬔"QMwQ+2:8H32?ƌfg^K(_R] L!ζtVPuuBg*{Q7b>B^4,/pS=h[1hw8H
-dr>ނFM?!!Y<*}w[wFML 3A V3nV
-w0=JvK6 E(M
-G ʥ
-g ƐF[㞙t&N|xg5>N*eDCGD
-C-y)Oh>sI\ѣ|v̽ 4duEosSt g4-1"M!2j6m5K1.\ZAu~U
-Y~Z4k<z\,;V;u;*=4wasanz*Jti\w+hBP-C,: b#ZVR:` LU0kV*~Cq\|WT,-|hGA"C)H]D@'±?+ӣ낐4i?`\٪:?Zmy}.p4`ճE5nt=;`"C;L}=ڽVH*`hxl3t
-Qxb׫TTM2.gGn3]G!YsYgɩ/LJc\rY:Y=
-zA}#l`JycM[łTd
+tK΍6i~K^`hd֋呎,Gs%NEjW;1]hz 4,K@qXdAA^D@ o?~4ʧ6sqAs3yO30 '/ey{O
+Ps
+0ޱ5Q  ?:g Œ#9r%1RV$< $$ǗVttz F|bGbLqc퍃[P\$tq~X߼aBqahaὖ+-CTʑt'QU$|>x/}.}vj_X!stuJgVz^bx ?y1 m aa2d6s N&V1Pg˷.bbW/1͉1_g)^7
+NӯK(OnMЯPm\P2O:g ˖# ={V s8 ҭ
+# >/ienpM=m`Otۇ>] 7Q+"yt/M6a.#L Jӣ6k;ڦ
+y #r:﫹PMNG}xfm~V+>Y5+"K|L?X-Eʅ,-UŤh<EE@Џ*P/׻Rw4D- vI H$L7Nd1^A`c&EcJ!l 9W{%gX92jnn`/@ nYSg㪕T љE=TCHwW^(b 9P/fXdVD7(IgۡҚ<BwF^. Nc$:9;z]^*q?k[{LwT``D/
++-W}tR0YbKR+aR}"q7׮!ygY~Uz`G,DN!t- 3KFUR Eޞ(yfLWX* JL'{sO" 2 A,rXfP"Ҏ#h8,5PkWDxdRFY)``R ng=:\B
+kmFT: :ZXY}2D} g8XJ};`*Jm=yҳGGMAW,1$#=
+_MQ+{KZ:,wL7?tU\5OJО&Hiy4!eR⹨TϮ8^U؇SDG0AkӔmVnJD-"Y%++ $A92 Z =mfDEiޭa-s8/̤(yr~A\3b]*RyQꗫ"nyJxōg)g齊Ņ2lh"jR;O#6=W<K?D:XV:WR ;_PUu,JaH؅$B yew Q;)7Cs.+\[ Xj&a)n{Lsl;X&Zk&,& N5?#~@O*Rr0!AܬD:`nooR^
+,#g]zuY /Id|+E:*аj=+$N )~@4
+ DP@tpdHl6bl=uf-jI`'E_b,19-Gl>1eHYQm;]
+84
+w0=JvK6 E(M G ʥ
+g ƐF[㞙t&N|xg5>N*eDCGD C-y)Oh>sI\ѣ|v̽ 4duEosSt g4-1"M!2j6m5K1.\ZAu~U
+Y~Z4k<z\,;V;u;*=4wasanz*Jti\w+hBP-C,: b#ZVR:` LU0kV*~Cq\|WT,-|hGA"C)H]D@'±?+ӣ낐4i?`\٪:?Zmy}.p4`ճE5nt=;`"C;L}=ڽVH*`hxl3t
yOO4z&.ENPP{!\4S?_0Bi ^
endstream
endobj
@@ -1684,62 +1555,38 @@ end readonly def
currentdict end
currentfile eexec
oc;jtD[έ$;
-tmlWg
-|]|"=dCMEq ρ>jG W9wimL-UBNY¢>܂)yHp"ۅ"Bh6o
+tmlWg
+|]|"=dCMEq ρ>jG W9wimL-UBNY¢>܂)yHp"ۅ"Bh6o
tQK 18y 0K;")3pTz}
sIٰIX ;"ڟ8*}?ŒӇrGT8jLQ84ZZv.I^dP׳Bu)1il*Ů%H=Mq_ʚ2_pIكh:Sx_]*8.1w#F`D4^K ]v4
V]0Sz` ") [L+ؐ&`[?s .ӦkJa叩D:
d|V@B JYag z
-!ՙڍh4f5o)fYI=eu֘qʌ\T5{8+݅Zt~<173|NJd1#<wc
-NRduz9bC/*趚6
-# /M_f|@m&
-_w.6i`BR}݉ D/]uhc
-h9
-Z-A6W,@p,H]Rfh$Gy?Kht$FZ5xh6T,)xXyB_ cRbv(|:thv)US|T7(?:c6;b۲
-4yM 4`?;mKi%jwȧ=V˴)1ׇl^-\;E̅k%TYWHH eϬMݼXWnsW2̣1izmcVw Hʾ0%M9'@0ٍvn54A -1-v+4N}JVf`t\~tfTѪ5G#zT?we"QmFzO5sFѽ?3~!\
-҈aeg+%Az
-̚|q41p"µC
-JoF,}K
-l9#;%a٠a[$iks^:|؍x(ϙ]|V?5aAl%wk4p~74K$( .WH.M9=<uQLnV#3Y\! w\H'{2x-"X;
-Y/RԯZ4=?H&Sقk8̔o+87]Y<*=`tkTEx@zB&
+!ՙڍh4f5o)fYI=eu֘qʌ\T5{8+݅Zt~<173|NJd1#<wc NRduz9bC/*趚6 # /M_f|@m& _w.6i`BR}݉ D/]uhc h9
+4yM 4`?;mKi%jwȧ=V˴)1ׇl^-\;E̅k%TYWHH eϬMݼXWnsW2̣1izmcVw Hʾ0%M9'@0ٍvn54A -1-v+4N}JVf`t\~tfTѪ5G#zT?we"QmFzO5sFѽ?3~!\
+JoF,}K l9#;%a٠a[$iks^:|؍x(ϙ]|V?5aAl%wk4p~74K$( .WH.M9=<uQLnV#3Y\! w\H'{2x-"X;
+Y/RԯZ4=?H&Sقk8̔o+87]Y<*=`tkTEx@zB&
o*2W ǜcOP룠5x=*ZMg(u+u?jnUGF"?ZaZ:;)'Wmt6<\4Ք|UM+xH]1*ۭ븫&߷Z#b@nK/2cT_~g5#?<XAN3 rq5J)MI`I
Ue*V d}綈6f;2}/tM5-AoN핌RI
-|ꪒOPNO#J 3_2 #;gvy_@<3{H[ܚ`(=hVzrdorpɾq.nٰ؅^[̇U,h~'*ٕiBΎ^ӓ3mDq"/ ?PX g>rX^ì뚆_:HfUPyPˈ`̀rnyEkR2w/lDW&RFг`h"V󞭫È{FZVaD)$\($l ;C$xبV2
-'8aFB)c5ɪ=L—b3_NTorNE'jc
- NХCH8߇u!oInq=DXoou\`oiF[GӌѲ c,`DdéP/8
+|ꪒOPNO#J 3_2 #;gvy_@<3{H[ܚ`(=hVzrdorpq.nٰ؅^[̇U,h~'*ٕiBΎ^ӓ3mDq"/ ?PX g>rX^ì뚆_:HfUPyPˈ`̀rnyEkR2w/lDW&RFг`h"V󞭫È{FZVaD)$\($l ;C$xبV2 '8aFB)c5ɪ=L—b3_NTorNE'jc NХCH8߇u!oInq=DXoou\`oiF[GӌѲ c,`DdéP/8
-EȺ
Kخ%/021&o+( gSgMnB(o0L.T
 _ ܀tz?3Kcm=m3I5%3<@ s|l?x0 &Wk'aDwYP^<̩Bh祃Epǫk0kąv{ˍh+Niг"I+"vZ35XW[c-ma
-3al'W>Sl cv7Mˆ7RQS xfj#l_W^2Lb]=*mn\%*7Yjbxorg׼ )RWW x eU6NdtQ9
-Y8bZ(@~?in.O a_m0,Q61@<C{ZdA wrYAk]
+3al'W>Sl cv7Mˆ7RQS xfj#l_W^2Lb]=*mn\%*7Yjbxorg׼ )RWW x eU6NdtQ9
+Y8bZ(@~?in.O a_m0,Q61@<C{ZdA wrYAk]
y;#&t`x NMcD:d<vB.'P|]+^P?_GWY=ިEٷ֢`s\$"T?ciYpͲUL)\*^U{ug[{Ʉ&V[^ޯ/"`~:P~}
=q<^ <?F
-]T! neǪ7pO"@{NpF#*;RYcn.]|sip;1C/" ˜4pZ5fp|#*< -*wgsh&fia􄁧Z\@cu۝<]HM26
-xϖ><:RU⛿Iم- R#G#R nPO}V[<$~C
-ݟ;eDddC6cp-XB6KZE2
+]T! neǪ7pO"@{NpF#*;RYcn.]|sip;1C/" ˜4pZ5fp|#*< -*wgsh&fia􄁧Z\@cu۝<]HM26 xϖ><:RU⛿Iم- R#G#R nPO}V[<$~C ݟ;eDddC6cp-XB6KZE2
? D$;PTY:qSEcwCOAMd
-i1c
->4eq|ko~`}:4Y_[^FK<])qZRVW4s^xkx%}Zib:U|֙S،@ ,_=zCWhefV3$Zƥ.5UqV:y-=e7|T rZ-u͸
-Ar>;-Vv5mٷ^@QjRƧŵg=`3e$,CԒ/Ʊ{e۽LkpZ sFIދw?I_&پl bHd?KY;Ve
-3]A*U#Ue$xMX~jf4XIX/כ<nzLV-#nϼ:+#="XIOrP>NHZj❸^Ƶv0Vƻ,XHX0{CRUDQ𶑤oI+otZE3YG xQFZZ?iyc`w(},tEFeeJyQ@_ލĈW> 7
-!&Eq]K'!Ő6N-
-p7 -L857$j&{pa,[%FMI3QTCllY<ٌ
-7+\|y)cj@
-T3O
-=J}
+i1c >4eq|ko~`}:4Y_[^FK<])qZRVW4s^xkx%}Zib:U|֙S،@ ,_=zCWhefV3$Zƥ.5UqV:y-=e7|T rZ-u͸
+Ar>;-Vv5mٷ^@QjRƧŵg=`3e$,CԒ/Ʊ{e۽LkpZ sFIދw?I_&پl bHd?KY;Ve 3]A*U#Ue$xMX~jf4XIX/כ<nzLV-#nϼ:+#="XIOrP>NHZj❸^Ƶv0Vƻ,XHX0{CRUDQ𶑤oI+otZE3YG xQFZZ?iyc`w(},tEFeeJyQ@_ލĈW> 7 !&Eq]K'!Ő6N-
+p7 -L857$j&{pa,[%FMI3QTCllY<ٌ 7+\|y)cj@ T3O =J}
)m^ˉ$2=rNDJvnJU
-FP:/Z-^`#f=U tl"ϳ/SF_9𰜴 g0ϣa%\cFPX&ѥGޛ/Ӹ
-ͩD
-lߠPVnt!V]EGN
-81FaF1
- ~U-."4VBtcQ
-5_Ish1r:SA&uã>X
-uFI(lY
-aIzQRU`#2W\=h) g7tkL-Oͣ礼#IBv4<f^ԑ|]V~)PKΟRF򻑤<*UP}
-&ThQciȖ
-FTo繮1Y8/wE[6Rdl- ['BC"CnV\2fvu{٩BnUSK꙰SjL[|x89usncogVc๸QcR#9UnH< kca
-M8&Cȸ:UrAlK?= ~H@p-T;f+7@ezi!N':Vi}Qݵ?fwŲOܳUmAHag d;Jfsq4A^p14YN筱Tz^kF"TVcjR"LĢcV\vyduYx hOs\J*L е~uبٟ
-L
+FP:/Z-^`#f=U tl"ϳ/SF_9𰜴 g0ϣa%\cFPX&ѥGޛ/Ӹ
+ͩD lߠPVnt!V]EGN
+81FaF1 ~U-."4VBtcQ
+5_Ish1r:SA&uã>X uFI(lY
+aIzQRU`#2W\=h) g7tkL-Oͣ礼#IBv4<f^ԑ|]V~)PKΟRF򻑤<*UP}
+M8&Cȸ:UrAlK?= ~H@p-T;f+7@ezi!N':Vi}Qݵ?fwŲOܳUmAHag d;Jfsq4A^p14YN筱Tz^kF"TVcjR"LĢcV\vyduYx hOs\J*L е~uبٟ
endstream
endobj
90 0 obj <<
@@ -1794,185 +1641,84 @@ end readonly def
/Encoding StandardEncoding def
currentdict end
currentfile eexec
-oc;jtD[1ƅpTo9`.:ypJ*l'e}#)&7+/^
-W{LZ60VQR^λ3r)#v$p~c
-SSC3R>Nn'Р(ead/Bҡ nKs w8H3ETzXHW}EpsgcxHSAB]&
-*P>9ݚ.TZw^q$S QgX
-/w!jTaJ@Pq[<j*Bfv*zm|%]J@,#r#jnT>vM~ZIf 1N46{A"<h8؛)Зxla-Et T"5ڵ^1z≠e.``̹,lI ppЮ#QrWJ^URlUQ6O {6OQD;Dn
-`]NIHΣ{+#ߝ逞(BUnd/* oxq{o11H(ϖ
-[v i'j"E`$̷И8Kibj{0eLUluJP, if'۪h7 $6༊:fW<6
--%)p\eja\"9!g
-@GLms0_JEn|&$S@\m<؇uZ=]mjX
-}i]P۸]'`L}Y>;hdg ol^kiEbЯ'AvYqe}
-7|# 7:!b'+iJ;EXpeWI\`}ٸ`dd&1n%GfqX%sVzPtX@jk<
-7r=,Z @vk9zHѱʕ$E2UہppPRcȻl*fy`WTgK$5hBIe^6`' 7S'QםHzg"
-&FZs&EŐVquDb6ͱ.*5.5P@2tid<QW$YoJ6AH/kgW퓏zy\ 9O\7 x+r^ߌ0xį3&҆|)j&\Dy00So}ʸikDalX%6r_ZT|~K ǔƻ袯 ĕ\v*Bя0M
-,SS`φS
-&GĞdbE*B234m!9X?욞 T UQW%P0ޛKfw Fb~ܟ('.EεP,FJM"D"I2^lt5K94䑕 lZ|CG^Ygg
-䨮@?Ʌ;R-Ɉ+X]sC >U](8`K_BgP_cK
-zI>9Zp?;F$o[ZC$2eջigT8S)=Qpq)js+6%{FE5 Zdr\ ir$#&̹N{Ȍ^N*Oa" Y+kI}2 N&>NEqaU 8aFN%b?G/~f$l;Վ(g"wJBMnTE(="bkR
-q=ݍ,^E\z8#ܟfujTkj4<w{,ZNe3Sƫ8ee靖^$T
+oc;jtD[1ƅpTo9`.:ypJ*l'e}#)&7+/^ W{LZ60VQR^λ3r)#v$p~c
+SSC3R>Nn'Р(ead/Bҡ nKs w8H3ETzXHW}EpsgcxHSAB]& *P>9ݚ.TZw^q$S QgX
+`]NIHΣ{+#ߝ逞(BUnd/* oxq{o11H(ϖ [v i'j"E`$̷И8Kibj{0eLUluJP, if'۪h7 $6༊:fW<6 -%)p\eja\"9!g @GLms0_JEn|&$S@\m<؇uZ=]mjX }i]P۸]'`L}Y>;hdg ol^kiEbЯ'AvYqe}
+,SS`φS &GĞdbE*B234m!9X?욞 T UQW%P0ޛKfw Fb~ܟ('.EεP,FJM"D"I2^lt5K94䑕 lZ|CG^Ygg 䨮@?Ʌ;R-Ɉ+X]sC >U](8`K_BgP_cK zI>9Zp?;F$o[ZC$2eջigT8S)=Qpq)js+6%{FE5 Zdr\ ir$#&̹N{Ȍ^N*Oa" Y+kI}2 N&>NEqaU 8aFN%b?G/~f$l;Վ(g"wJBMnTE(="bkR q=ݍ,^E\z8#ܟfujTkj4<w{,ZNe3Sƫ8ee靖^$T
D "ό3s/
-!@
+!@
XL^εTq
-|U.K&7f rkJGR*a^@P~>枀T8R|YT_*cn%Wz{-(YMa*EЮYݨ6}6xڴ+n<XPF*C]/7=~UI{~J ܻM@*Q6I7ק^3ꏲ 9fi읒S?MVũ'
+|U.K&7f rkJGR*a^@P~>枀T8R|YT_*cn%Wz{-(YMa*EЮYݨ6}6xڴ+n<XPF*C]/7=~UI{~J ܻM@*Q6I7ק^3ꏲ 9fi읒S?MVũ'
A)| q+v$`KĠ}= vRK@F(R߲_= ۅ ʣn;z[E7mnn7j2W@mJUk:O4m@#&a0*J
\-
-0,
-jYM'<7EsO':tZ1JSGϧ8+m]OYl(+Gs-pghq1N,7',Y<V[Q@Xk|m+xn`߼;Y".C*yN6Oƌdxp
-A\ڳ
-nX{w3ѓmHPHDuY`_I*ij^&g%̙R27EElReHBjY
-
-ᙎwZ-޷L$E/j-S"3QCTzxАV'lC\]aÌ",fUn:4 F&)c7()~}feb,Bg,_fW0V\
-fAɧvX p9F<sᐅp0
-Pb0nXt7m:ɱ)o6<;E٘7`V(2jobL+pyj#A棻|(矈F,Kٴ!Y_2f
+0,
+jYM'<7EsO':tZ1JSGϧ8+m]OYl(+Gs-pghq1N,7',Y<V[Q@Xk|m+xn`߼;Y".C*yN6Oƌdxp A\ڳ
+nX{w3ѓmHPHDuY`_I*ij^&g%̙R27EElReHBjY
|-ȋ08J)Ýkg@Sם~2 ߟVwGT+х{oP`Ѻe;A/nwz)6K
-'RgD|R-diV8ghl~@ C(q7o277"s>9#5^JvNzAڌ74@
-Aat數
+'RgD|R-diV8ghl~@ C(q7o277"s>9#5^JvNzAڌ74@ Aat數
!x<V3~}Lb5t/Bs2Dz"GPKF-sz5dcַL51 E}<Bkn2(hF^.yW(֐~]dR HU|+;-75l '0q;Hf3>9I)J?a^&شt.sC,#%qji{Z"iXղ2MɌ);Ryk:Lt4m^m~Oc+#O/0H񢧢]' DL$&B^S?~O-AHϰ
-W;唸hSҟ2, X#b?)G7]ۇoH>e*׺
-kfOIӨM秚sOq?m
-jg1NvMBMu]Lzc#_?ћz)q(K3 eC9@uDPf/Z[>X%sZ[W5~% M"մ6zZQW'8u|c7X%/yJU+U
-`Lƶq~yJ:dd9S\j@ď^2[9N8e%B3'3$Cu탢ށ,;yod
-33A'ΨuUb7m@Q΍Gh@H;L+iSx7
-TXn{ˢqh`dw׶@#걠W54=ԓ` ]7.Vi-kiq4=vȲJS4 qy%u5U]J#+hpy)&W
-%p^{4$ *kyrXCTI=m)[PiGF~7D75(Ǎ(C<͒A{h8]uesHM7zUqyٽ`K
-Dx=}wPGFʻ|
-VHU 6FAs4ח[wƹsǧ뷵hfFBZ'Fh?SvCb ,n$~+Z1zSłE"V6' 
-Imsu:7!6e%J:/4+Gҫ'PgТyߢLA2GA;_k)s|R$V0+]\nڢ]Swn oeh;
-Y?W~`ዂ38{aKGb[bzHFd
-
-`WL&p6ӸUʛ/& :+5<<x
-z" $
-=c֧Ie DÕYIs|*jew `dSj\L3<)Xj^pvhS* wKPw}
-fYe}_5QJ<,e=o\E K ]^aDzd0?[[̎1m7LSѦ|~oQy痽ɮ?oU!MUXK)4m۴$0YU=Rޤ$ܿj;WV[ۈ G
-o yPĥ.;:5Xcߘ#r8Usmԯu6*(=cPʹ&{5Ilbpb.^M5
-"t=A87uר)'C%5\kM"ep,cY`ˢ"H jɕ;Qkӵ!WC*Cd?ޭXVI68J/H’~X|79 ߄@a J t!.Fy0i\-6l0\nՓp% ll VIo1|묷
-?{v
-wa/\;5?_ݪ|*/N޻Hg0s B,*_(YKj 9HklrmV_@/l+g'fvGX1"
-g2ɓ`Us<WxVhc l JR~v9-ޑQA=xF緺L@D.iUak`t'nY#J&@6{F~WT"]9z{*Oh/RaѯDDr)`Y&rBct= [
-$W+H T @ռCU@˖
-& # wgIVvҥxԨz)AzZv(jeVxv_AАy3'3/&hNϴ`e whTJs8#Jdihʖ(yM-(Un}$n;cg,Y/qW!+?jZzEk ZEwLo yFINRĻzseccrf</b<|Y[^jluޘDg3:cV~HRPEHďL~8{{?Qᖗ"rn_,T&lTKuIG
+W;唸hSҟ2, X#b?)G7]ۇoH>e*׺ kfOIӨM秚sOq?m jg1NvMBMu]Lzc#_?ћz)q(K3 eC9@uDPf/Z[>X%sZ[W5~% M"մ6zZQW'8u|c7X%/yJU+U
+33A'ΨuUb7m@Q΍Gh@H;L+iSx7 TXn{ˢqh`dw׶@#걠W54=ԓ` ]7.Vi-kiq4=vȲJS4 qy%u5U]J#+hpy)&W
+%p^{4$ *kyrXCTI=m)[PiGF~7D75(Ǎ(C<͒A{h8]uesHM7zUqyٽ`K
+Dx=}wPGFʻ|
+Imsu:7!6e%J:/4+Gҫ'PgТyߢLA2GA;_k)s|R$V0+]\nڢ]Swn oeh;
+ `WL&p6ӸUʛ/& :+5<<x z" $ =c֧Ie DÕYIs|*jew `dSj\L3<)Xj^pvhS* wKPw}
+fYe}_5QJ<,e=o\E K ]^aDzd0?[[̎1m7LSѦ|~oQy痽ɮ?oU!MUXK)4m۴$0YU=Rޤ$ܿj;WV[ۈ G o yPĥ.;:5Xc#r8Usmԯu6*(=cPʹ&{5Ilbpb.^M5
+"t=A87uר)'C%5\kM"ep,cY`ˢ"H jɕ;Qkӵ!WC*Cd?ޭXVI68J/H’~X|79 ߄@a J t!.Fy0i\-6l0\nՓp% ll VIo1|묷 ?{v
+wa/\;5?_ݪ|*/N޻Hg0s B,*_(YKj 9HklrmV_@/l+g'fvGX1" g2ɓ`Us<WxVhc l JR~v9-ޑQA=xF緺L@D.iUak`t'nY#J&@6{F~WT"]9z{*Oh/RaѯDDr)`Y&rBct= [
+& # wgIVvҥxԨz)AzZv(jeVxv_AАy3'3/&hNϴ`e whTJs8#Jdihʖ(yM-(Un}$n;cg,Y/qW!+?jZzEk ZEwLo yFINRĻzseccrf</b<|Y[^jluޘDg3:cV~HRPEHďL~8{{?Qᖗ"rn_,T&lTKuIG
mMΊgt6TWHw2u28]'6F-q&<u;NUP@
-PPPL7&"bl[FKmOHDỤ7T\Gva/~ M&MaX_xJ!KrBV0/@oxS]R/YFn! bv7JJHurV#cm[h|XD8P5 FQ_<uI>m}4
-O[vw&=, FwdFM|ηI y;.+wS~ר-ޠ=
-Mtldqp8x3wGЀRcZaDJ
-ţ7O^=Aۚ;߃iLν0 Xzs dg섽Dvwi8a5os]ނ^dTt Qɿ[_[Ÿ*%_Nk?ṐkA22 GVe
-tDֲ^DWNfcErDz{ϼܷ!gz #
-Y*l[f%JW+CJ0_6bA:SfT [XffVQ Ct kaٟsQBϛ; V5&&X &A6Ywk@-
-G,q`
-;zzvpxMdjiiFjO`v0q!?կI :eeBui?AUa(HU^Am<dYUE>n()
-^Jz2lhzMϞ&vs&n35:Pao'+s3VwL4q'lpdl
-N\n:9e.gb=g R7:~l'
+PPPL7&"bl[FKmOHDỤ7T\Gva/~ M&MaX_xJ!KrBV0/@oxS]R/YFn! bv7JJHurV#cm[h|XD8P5 FQ_<uI>m}4 O[vw&=, FwdFM|ηI y;.+wS~ר-ޠ=
+Mtldqp8x3wGЀRcZaDJ ţ7O^=Aۚ;iLν0 Xzs dg섽Dvwi8a5os]ނ^dTt Qɿ[_[Ÿ*%_Nk?ṐkA22 GVe tDֲ^DWNfcErDz{ϼܷ!gz #
+;zzvpxMdjiiFjO`v0q!?կI :eeBui?AUa(HU^Am<dYUE>n() ^Jz2lhzMϞ&vs&n35:Pao'+s3VwL4q'lpdl
AqkPHDn4)(R#^.w10XN
-*xcch̒Eώ^miw%JQRJܧ{q-="z%?9Ǟ*l;-XQGEl?%vaR"
+*xcch̒Eώ^miw%JQRJ{q-="z%?9Ǟ*l;-XQGEl?%vaR"
E' 2Vai' UIgz^>Sߩhs
o=۸ Ѫ ;B/s#3֩6>ꞈԗ8ކ-+g
-Kif~AU$ݚq0,=B{t-JƏod ?F^= MJnñ!R)@0)IG/ա#(1=zr[tEUx,U Gɿ4[8lnxr@4O?
-#VVmy<o.\摰SL+s
-;RȸL{hh&3T VIpsp`L$vi9*֧ƽcHn+dLyI.adG>~lÍneR/"L%6G}d,cP䭉dXtadJ`>ߔE{hx5"P:*5ח. h$
- .?J-\EmDí'E{Ti4nu^oB?25i2ohZaǨ*8&Ҽ;~]}(])a
-utL4^H!Y:r&)G9CD+KID_?igȘ Aޓ^:hX9s kEz<i@6LFCJ2OVn5qyj
-:I%e ޝQ*(1x2$E}aTX* EFo{k'ryV>~3 šU..x[s' J~€{< _lzS
->r&(8~0c }fnw?KvĬ8|ĀNL|P6l`^hrS-p}|K
- 0? |_Yb4CD3Dy~gadN}J^߂roh5מɟZ%6[ʥz:fu(1v[cŐeg!zO';.Vyq(!JGA<xB8PnOl?',k\kFcFd0Ҵm
+Kif~AU$ݚq0,=B{t-JƏod ?F^= MJnñ!R)@0)IG/ա#(1=zr[tEUx,U Gɿ4[8lnxr@4O? #VVmy<o.\摰SL+s
+;RȸL{hh&3T VIpsp`L$vi9*֧ƽcHn+dLyI.adG>~lÍneR/"L%6G}d,cP䭉dXtadJ`>ߔE{hx5"P:*5ח. h$ .?J-\EmDí'E{Ti4nu^oB?25i2ohZaǨ*8&Ҽ;~]}(])a utL4^H!Y:r&)G9CD+KID_?igȘ Aޓ^:hX9s kEz<i@6LFCJ2OVn5qyj
+:I%e ޝQ*(1x2$E}aTX* EFo{k'ryV>~3 šU..x[s' J~€{< _lzS >r&(8~0c }fnw?KvĬ8|ĀNL|P6l`^hrS-p}|K
+ 0? |_Yb4CD3Dy~gadN}J^߂roh5מɟZ%6[ʥz:fu(1v[cŐeg!zO';.Vyq(!JGA<xB8PnOl?',k\kFcFd0Ҵm
hR*5:-@
-$.He8%^u{E[ݨcNSh3TW"`Ļ7s>\<"$`34X"~bId #mN{HN]3Bbm:sW-yI>v/ue2bQ?ڴ$<M8j)oB7QD
-&GUCT
-)CPnQz}T?5cbÙ,NwusX9%Y^ $<
-qC<9줪lV@
-Z_+[26IwTk<_.s_ʴj
-J)dM
-#+V2L
-h"
-TΓiոzD)>y[*5;#,ekP"+t*QDڰyﲿ\?=t`1mCpo␽;3!!-/7וd Hgd湒80cKt2Q^r3`fO rG8B2E4SE
-5
-^NK =_3v=-hfе&o;?
--3ukI
-D|dOl|bc7N9!6`I>>H~E%JG顛yGۨZr@YGۤXL
-j4\R)
-p
-)\f[b\6Lˉvp앩LXt&c %RPa4-SI:v\JBq53:P_I};J>RsHWLϓCo/K|
-mBk&7$
-uCFq Lޗmiė*iU0CbePvGm1Q -gg;rF ϥ$#qQED7'0}R68naLH6d<t[Sd#mئ!QOCЌ`aoE/pn725lEz *N#%VZ{M3&I8dӛp䷗9ZFl8YjL5Or:H#E7Y㤕2K5ek] D$* M:D2 VyB^A,>H^~.PIn GPW9-R.aId6BkO!IK|-G!L}k{JHL<-⬸㥛,RgbAcD^LC$eqvϣbhg UGW&~M :YWP^'
-EI٨Kg?[h<fO)qƵ4N?^Z }qɄֻW(*rBg
-E6{`*&"6
-x3у: ;vn5:i]U_4WN3(
-A0nyf`%*/V-sSZ
-l 46#pJ < JiTAǽ
-I8|BOOG6(f4$
- !A:g 7Ŷ2z
-_ybEj,T
-@vv2kgƸa dK0߳X엡 bq
-𪊁A8DDGp o2
-Nf0}\~T=nH{\L88d%eQ?6
-J!}=ʦSF'gZ\Aj#$>}+EzWPG迧GHGPpOZ_@WW +A?79ϧdPR;0 1@VZ%'udx'
-/z4zc$eg'τPt;'~`G:n6A|񓠺+a KzS@ )=Cx?^н@MjٚnyATFbz,x<ԓ(8b/ |4xA0f?T0۰oFX}a>-Ѹ+lr%(| n4 1#m)erU
- $&p>D\_Eo-:'#w>z;:L߁ E,+R]OHh<̴OOsu
-S
-zAq⎼pn0L%)U,Z[>
- &/-ґA7]8 YWs1%-rj5#kR MZ7HBjf@X'Cvar;/F}Rh[>%Hב3LENEςxyqVz8/J( %C 4 EB,$xQ rZdc}#<t$4k,̔6 n٩Nϊ%џ i Xa
-#+VI/iV{(ƇSscHzMEGQZDhťw˞6"q!p\PmH7/YU~d2;
-O*&^ <PIFneY3%ߟ\f
-HUa!:7@su:.oUIǓ币̍w5 J4$55G6r&4Y
-A:7s#:W@d ]:JZx/m9m+yE?^  0ƽuMң˧TYD:dqq W(BEsI@L˽KM91Oz
-)/ZžYuSL"\ pQd
-"h
-cx!9F5㍦&v
-߭\}w]\}lfMK6Od{5R2 :٘9^'OuAF av9m
+$.He8%^u{E[ݨcNSh3TW"`Ļ7s>\<"$`34X"~bId #mN{HN]3Bbm:sW-yI>v/ue2bQ?ڴ$<M8j)oB7QD &GUCT
+)CPnQz}T?5cbÙ,NwusX9%Y^ $< qC<9줪lV@
+Z_+[26IwTk<_.s_ʴj
+TΓiոzD)>y[*5;#,ekP"+t*QDڰyﲿ\?=t`1mCpo␽;3!!-/7וd Hgd湒80cKt2Q^r3`fO rG8B2E4SE 5 ^NK =_3v=-hfе&o;? -3ukI D|dOl|bc7N9!6`I>>H~E%JG顛yGۨZr@YGۤXL
+j4\R)
+E6{`*&"6 x3у: ;vn5:i]U_4WN3(
+I8|BOOG6(f4$  !A:g 7Ŷ2z
+_ybEj,T @vv2kgƸa dK0߳X엡 bq 𪊁A8DDGp o2 Nf0}\~T=nH{\L88d%eQ?6
+ $&p>D\_Eo-:'#w>z;:L߁ E,+R]OHh<̴OOsu S zAq⎼pn0L%)U,Z[> &/-ґA7]8 YWs1%-rj5#kR MZ7HBjf@X'Cvar;/F}Rh[>%Hב3LENEςxyqVz8/J( %C 4 EB,$xQ rZdc}#<t$4k,̔6 n٩Nϊ%џ i Xa #+VI/iV{(ƇSscHzMEGQZDhťw˞6"q!p\PmH7/YU~d2;
+O*&^ <PIFneY3%ߟ\f HUa!:7@su:.oUIǓ币̍w5 J4$55G6r&4Y
+A:7s#:W@d ]:JZx/m9m+yE?^  0ƽuMң˧TYD:dqq W(BEsI@L˽KM91Oz )/ZžYuSL"\ pQd "h cx!9F5㍦&v
y%i|bAȳy}&?I.9pAܩD9Z8g;vĂ8jh(
-sWy-$=ķzjLʾAr j}TLj
-م@z_q(x<[8hk['b+j59P(K?<_8.G(&[ίT6=xr7J_g+ϪaIZtA
-c'H#;Z cj?<%[7WL?'d?eMxx)F)Z6]̧Ha梎x*hΫ&feډm!G{sϤ`Vfx(=-Q|~[˜;S^N4K\U"׬:#AdǨ'MqyFbu䥩P]4K8%YUJN{^J" IѤ).|"t?6ðw'vSLbjf|a
+sWy-$=ķzjLʾAr j}TLj م@z_q(x<[8hk['b+j59P(K?<_8.G(&[ίT6=xr7J_g+ϪaIZtA
+c'H#;Z cj?<%[7WL?'d?eMxx)F)Z6]̧Ha梎x*hΫ&feډm!G{sϤ`Vfx(=-Q|~[˜;S^N4K\U"׬:#AdǨ'MqyFbu䥩P]4K8%YUJN{^J" IѤ).|"t?6ðw'vSLbjf|a
{VPBŌu˝n5Pdde2jѾ9K1JaaI
VR4<Z_HzF}= d.>Nѩ`z#6~ :e9 ȋ^+<:ţ KYK?D @@6cWvUs3ܱU@5FZ1J
:uN@8\'-T8R1ѳZ
- D$i,|Cz9k
-@].pR:Xߺ$n8pikME[Q~e?:A4Q$
-da2g
-#`ߍd$fR v,Ҵ!$KSMZ{4ӃS{?3i9)/0ՒhA3>[{?j)l51ݾ(
-AS`GR[XU/VP|nUhXE\Xx?͑ajkoMpT
-szWy1 3dm)w:p*!J ,K7$Mej \67xɶ*m;'}>ҖV7TZBEegA'=717p8"1 %0`480b/i!0*J^[F/XX}n茚{\wLAx6ݩ_}R~<AZzȣ5 wq7PLDlEY1yJF iQh88D %Vr>]b~|Dج=TX{+4J_CcEhFs1y#p=62
-f&'(\gi$p8[U9e>z)AM^#JېP 9>SwG~+S E* /ÎHeƆu}Oq
- P "8ZYphKVAɝovH{dliƃIUkR^.ءMEh__faF/ƞYk8
-a=m+I<D9qR#Gfr
+ D$i,|Cz9k @].pR:Xߺ$n8pikME[Q~e?:A4Q$ da2g
+AS`GR[XU/VP|nUhXE\Xx?͑ajkoMpT
+szWy1 3dm)w:p*!J ,K7$Mej \67xɶ*m;'}>ҖV7TZBEegA'=717p8"1 %0`480b/i!0*J^[F/XX}n茚{\wLAx6ݩ_}R~<AZzȣ5 wq7PLDlEY1yJF iQh88D %Vr>]b~|Dج=TX{+4J_CcEhFs1y#p=62
+ P "8ZYphKVAɝovH{dliƃIUkR^.ءMEh__faF/ƞYk8 a=m+I<D9qR#Gfr
o^81RNur_LК({("nQeS~Qs=WJ¼)<y=D Sx+I4h
-D!cD҂ d##,l-IyAdB֝OifDWxM2:P$+P*$ױ
+D!cD҂ d##,l-IyAdB֝OifDWxM2:P$+P*$ױ
},
V#-Ŷz-$L1N`S rN
-UXߴkȌtW;jf<(4+c84 ŵ~T$hו
-.v$|B+QZEs
-/6ë_FS0:QЯ
+UXߴkȌtW;jf<(4+c84 ŵ~T$hו .v$|B+QZEs /6ë_FS0:QЯ
h]v-ԢD$ GpXO7tV
-Jz7fGYmuo 55Si~en}~48.+ͱbsGJ"ndL\f%7@=2c3WhӶ!dxWiW覓N)KCasiX!+^j-LDeۅ
-Zf4BXCIωb:!֡+ã\Cn{iGn;OmebƅFy>i3wo!XsqJ+
+Jz7fGYmuo 55Si~en}~48.+ͱbsGJ"ndL\f%7@=2c3WhӶ!dxWiW覓N)KCasiX!+^j-LDeۅ Zf4BXCIωb:!֡+ã\Cn{iGn;OmebƅFy>i3wo!XsqJ+
7av Njܰ>l9yi-p`dNEj-OYE
-$@{g<CI[
-!T;Q(4twNp>B^xt5a4?E Z%%x`F7zbZ
+$@{g<CI[
dX!ՍZ(Kܔ~B
-0#%mtlGZ~LTE+]v\_\TQв<(`RG(i]/|O,3LL:EoBg,\6o?r3M6_v*gb~YNZ\A L!V_(+kne[6:2q c#\m-Z/4
-DvOؾ3L^@kmeݱ<t__kgY.!lj
-ሶb"T`~n
- 5RdtP<hLN7D[
-GuE><? G6)l?W
-_8
-
-f5/V j&@ٔ-؟|ɋi g)8O`
-<hU"{=>L-ǒI1.N';34#&DPU J+6Q
-jGǵ:P񀐮&P;>הF\pIs
-A\;ގ'Iyf- iM$_]yP&PƩ "
-.X/ڳ>Y$L6t*ޥ9˧?.5Cة_F<@.B&͐7ފ/**ߖ<sVvZJ"InB{a9UݗV2QZWR۶vBÔYy
-,cp
-t">N+"56vƧ@WS:5\IѭjaXt#q]Q#8[У8D[O8p(:_Hne,9>#1T
- rhyO4(S$fR~Tڱч˦3DQTx(<`8@(BIsLddD
-
-Z*3gKrBL
-b,\K3
-g6=A0VFZ{=.#+ņ%mƫ/ 6 Yf0IeKB22ːSǍK:
-{6n4*iJO0PK`1ɝ yxp^J&4{Z
-#Uku+H\Nn^4Q~Dw[oXO.ٗ=cZE&g` pmѤ ijIdp꥕E_!㾼' ŕ诀9D9Ro_ ,.@LHVvjS+V&j ׂM&T΅r.r5Pv^ε5?Q=GSsg,o̐vh-1;fi(IxD6<^gɷ+mmR,0ۙ)4$'"թ;Z8>,^,&L F)CH?@;mKz>)7Y A[=t6G'Ν4o<(QA{+9@x
-RNeSr$S6ֿf3IN05bMef: [7~󽺝M¥?F&=>,3^ Pp%.uG?gK
-1< &\|Jaw[ͥ_ Ay7)S 76J( )xHaHw^,8Sb.;0XeK࠙($&d
+0#%mtlGZ~LTE+]v\_\TQв<(`RG(i]/|O,3LL:EoBg,\6o?r3M6_v*gb~YNZ\A L!V_(+kne[6:2q c#\m-Z/4 DvOؾ3L^@kmeݱ<t__kgY.!lj
+ሶb"T`~n 5RdtP<hLN7D[ GuE><? G6)l?W _8 f5/V j&@ٔ-؟|ɋi g)8O`
+<hU"{=>L-ǒI1.N';34#&DPU J+6Q
+,cp t">N+"56vƧ@WS:5\IѭjaXt#q]Q#8[У8D[O8p(:_Hne,9>#1T rhyO4(S$fR~Tڱч˦3DQTx(<`8@(BIsLddD
+ Z*3gKrBL
+b,\K3 g6=A0VFZ{=.#+ņ%mƫ/ 6 Yf0IeKB22ːSǍK:
+{6n4*iJO0PK`1ɝ yxp^J&4{Z #Uku+H\Nn^4Q~Dw[oXO.ٗ=cZE&g` pmѤ ijIdp꥕E_!㾼' ŕ诀9D9Ro_ ,.@LHVvjS+V&j ׂM&T΅r.r5Pv^ε5?Q=GSsg,o̐vh-1;fi(IxD6<^gɷ+mmR,0ۙ)4$'"թ;Z8>,^,&L F)CH?@;mKz>)7Y A[=t6G'Ν4o<(QA{+9@x
+RNeSr$S6ֿf3IN05bMef: [7~󽺝M¥?F&=>,3^ Pp%.uG?gK 1< &\|Jaw[ͥ_ Ay7)S 76J( )xHaHw^,8Sb.;0XeK࠙($&d
:ebݠ
endstream
endobj
@@ -2028,98 +1774,55 @@ end readonly def
/Encoding StandardEncoding def
currentdict end
currentfile eexec
-oc;jtD[1ƅpTo9`.:ypJ*l'e}#)&7+/^
-W{LZ60VQR^λ3r)#v$p~c
+oc;jtD[1ƅpTo9`.:ypJ*l'e}#)&7+/^ W{LZ60VQR^λ3r)#v$p~c
s(kzO1>5-rBH@eTcO:bIeؗ
ӿELGF_xiެ5, +T B).sLUt
-ñ$)L
-xM`0^Ӻ[U[Ѹ\ P0ؓ aW;] ۟e&6&~sD3R=RCk ʋ6>O2S;z250")cށd/Ar;K8+f^9EhpFRtg,,zfx05z lʢж6\E+POCj6=,3 .
-*V#H;(xSG>|rIx:[[Oe>8^t8\-wk(l.9F&S60Jr#D^b2>PEo#C@Hg@am1%-~@R@,DFXPc*~G
-f
--
-kDMuX2+mQM'Gj*4<#BLlN ] K[^G |hLV86K[S>Hw[saj_:@A"D"Z0fڒ管vrVkOC5&l<
- ?}$NW{
-Ηx0Rn]YIG5wdo97$!_S_鑒WLZfZ~MiԯlM{:;Hq|<=/нq&rjFb]5!nt<׼ZO
-(1Oi{rh]r_{YY1jia[
+ñ$)L xM`0^Ӻ[U[Ѹ\ P0ؓ aW;] ۟e&6&~sD3R=RCk ʋ6>O2S;z250")cށd/Ar;K8+f^9EhpFRtg,,zfx05z lʢж6\E+POCj6=,3 .
+f -
+kDMuX2+mQM'Gj*4<#BLlN ] K[^G |hLV86K[S>Hw[saj_:@A"D"Z0fڒ管vrVkOC5&l<
+Ηx0Rn]YIG5wdo97$!_S_鑒WLZfZ~MiԯlM{:;Hq|<=/нq&rjFb]5!nt<׼ZO
rԳm>[I}BA-gO0ǞcǠ*=38//#]E:B.T|OVn/@B
-q<s
-N7; 68X' /଱ֶO5*tӃ33k؂Cusr]'Y4=\rHu{o VђYFtKʞ⥣DfAS,x%@%/aqҚt(~VDoK M0{MP._Ad|H!!ZD. (ư'ދ&qR>Z<;y!߂-Ј\VR{3x."qtAM6YONBF21]@j5 =Z]ZMEfj}+ JD
-kV3Հ4m;o_Cck0nayȴwLc-O<Wt
-LRO&4N;pCJ%x@G(?<hCt@p"{VG 1JVkݣL/DzQI*(Wf΋[zle4L?cL\Z !I[ZƉu/:U.wkVA
-K+u
+q<s
+kV3Հ4m;o_Cck0nayȴwLc-O<Wt LRO&4N;pCJ%x@G(?<hCt@p"{VG 1JVkݣL/DzQI*(Wf΋[zle4L?cL\Z !I[ZƉu/:U.wkVA
+K+u
xmҶOm^$8G3Q8 {|̗ ±*wzםqy nE~-Z{Ε
Uka@$*!
-ă1$y9ú.Cũv4䔋fAd[rŝMmIS(EC}'.o la̘1lr[`Qⴗ0.}_YhRFn!Õ2&F%t|5?BjȞf*j+?wkħ3W$PQdM$:ػ9 2o% D"^JG_%,wIkle)@sRb%v@ slVCiIkq'q S܏ NVuJuL1#َc鰹" l^6%7jhud3Ec Mx>M26O,"2EJ}+:dC=u
-B /u>9&i.v'PyW֎
-k:;Hο禜^/YeQODBA}PbdugcΦB4'3ѱ[Н̓e7H`
-R^'vqm%UV<@ .$iL:\i.
-%g)=3F'GHNTܛl{v=7
-LTVK<U˖ג/h^R\.>> <i
-ZmBvUxI:g^rhx@r*^,jRY[3:JB͘Z6J
-,҈7@B&M迚#0O>xoN3
+ă1$y9ú.Cũv4䔋fAd[rŝMmIS(EC}'.o la̘1lr[`Qⴗ0.}_YhRFn!Õ2&F%t|5?BjȞf*j+?wkħ3W$PQdM$:ػ9 2o% D"^JG_%,wIkle)@sRb%v@ slVCiIkq'q S܏ NVuJuL1#َc鰹" l^6%7jhud3Ec Mx>M26O,"2EJ}+:dC=u B /u>9&i.v'PyW֎
+R^'vqm%UV<@ .$iL:\i. %g)=3F'GHNTܛl{v=7
+LTVK<U˖ג/h^R\.>> <i ZmBvUxI:g^rhx@r*^,jRY[3:JB͘Z6J ,҈7@B&M迚#0O>xoN3
G<U:?a,(%
-G+ŎYWyFDl̫-& hUj&@,7=ٞxę.|{B`]C6vJP۹y+=x[u.lX8$d+:K3:tLmZ<f֜`s8t7=鎭9j,DLO#;joN@Xo A⋕8W
-`j:b*{̫n6^ äCяNFNh?,Dd5u~+q},nQ W޲wK%iZds6<}UGV2
-¶Ec^ 9WrN;.ev"Y^N
-v?f)
-˞`]i }QSx^J}m~m!+Z~e(,.ϼk'4%j`QXp(c̕dWՆ{کM^7e9--bpy͊\G'6%L^pX8P@bBpw[ )h,zZA̚O;aN#(vbt eaKLhUvFQ%!B#Yq>fFTJ cxiYӣfV1(eń7V4│p!HU1ZLb<ee *FZS|6uN]"Jke+-p1U&ɰ3DKg?q?4 l
-L&IWwc$|Q׾JBҿPO/(U! caf2V9ߪ.K5ݽE҉{z#A ll| %<7
-bnI |Hvn6} VF:epֹ/grW,Zѡ$<j/
-Q[SṽvC2ìasAT=oZ~lfbեW(S<Ϻ>@1kqU*E+ RU   x#^^|`‹iM`ϩfHw:yΔ[֚߉VfumŹ]:l0^aaYNP.١Np7qdmk
-7$Ɛ&M!
-eѥhp>Vbj'J0v!ɗH]plu dX,%V.fZD.b Cg56 lzu$Ş<{k
-Wvtc(0j)dsu[Nx}W
-FR;硕S5]xos@)XޙSyfm
-l 46#Y%V0TOӔ!|Vtk愃UX1e0kΣFh`\/=8;}+Μ]B!(N^ar J~u"ՠ E&VNcal!"}Bk`"EqI9~g3tZF=`x2I[u A|>{P1џ2p:#Pa9:jLLvc;caC`jy3)&ZI\(-
+G+ŎYWyFDl̫-& hUj&@,7=ٞxę.|{B`]C6vJP۹y+=x[u.lX8$d+:K3:tLmZ<f֜`s8t7=鎭9j,DLO#;joN@Xo A⋕8W
+`j:b*{̫n6^ äCяNFNh?,Dd5u~+q},nQ W޲wK%iZds6<}UGV2
+v?f) ˞`]i }QSx^J}m~m!+Z~e(,.ϼk'4%j`QXp(c̕dWՆ{کM^7e9--bpy͊\G'6%L^pX8P@bBpw[ )h,zZA̚O;aN#(vbt eaKLhUvFQ%!B#Yq>fFTJ cxiYӣfV1(eń7V4│p!HU1ZLb<ee *FZS|6uN]"Jke+-p1U&ɰ3DKg?q?4 l L&IWwc$|Q׾JBҿPO/(U! caf2V9ߪ.K5ݽE҉{z#A ll| %<7 bnI |Hvn6} VF:epֹ/grW,Zѡ$<j/
+Q[SṽvC2ìasAT=oZ~lfbեW(S<Ϻ>@1kqU*E+ RU   x#^^|`‹iM`ϩfHw:yΔ[֚߉VfumŹ]:l0^aaYNP.١Np7qdmk 7$Ɛ&M! eѥhp>Vbj'J0v!ɗH]plu dX,%V.fZD.b Cg56 lzu$Ş<{k Wvtc(0j)dsu[Nx}W
+FR;硕S5]xos@)XޙSyfm
ift><]5%Z&Gf㫿ju`,dΑ@K)ZH̷`@tu4$oP|՝h7:
5k? σj; ͂ i 'b{1{
-՟Tٟ|\m|-q!Õ>oFEg
-,O1qes!x翱^H *y@tjOIN"=0gPWNF d8{-Ǎxʙxu_HԼ̫j1 z|~y_תspSk/JN2HQ8AO<
+՟Tٟ|\m|-q!Õ>oFEg ,O1qes!x翱^H *y@tjOIN"=0gPWNF d8{-Ǎxʙxu_HԼ̫j1 z|~y_תspSk/JN2HQ8AO<
񉹷x/-0F.@-B-؆SH2})V+;
-6YuyQEߎ!N (nw-@uU7
-.F6LZQJSOqwqJ0Ll
-hF'X <##f֠O3b/+\ AFr-hrfES3PHIq.AwK8Ju(d%,ׁf71-j_W(uQ d- WD[T7uzjьR!bפMs9+f.2_)KQz ه6JǽKl-| NY<(4z2⠍s%έ
-[:~a
-w˓I)gԬ,"AO7//" Tqhf@bu l ܔXTu`bTsdbUG1,u>c4nmi3I4"t~G\VںO2OG0,m.E.,I7y*d^ e45I&Srহ
-j(7% .
-k
-#h&?gJB#rO[CA{QA҉0F1sf٭&+@U$u#&>[q% 1C^[K3 ЅM*ۤ >x/Z$ =ktNKQ gZo Z- gM9sy4m謷쁟wO(C76aIO!c'"*>UU+A@\e88&?c*
-EZTH^'y+YpN&3>]"Qmty(/ɋ:Csir p!tQJ[0ڿPa%C^tY^^ӁӞB/~:I` /,%ܚ(Fk+N(%G4qoY:| 0w4@`LgB@>? 0؇[XT5pr q/},H0ȷ
-]WÃՇ]0wBBՠ)pZ$se䓕 )Oܶhw)/fxWӷӷßigb0z ssV};x/}+̆Xߝx'
-83xH BH~\x,?7t"Y%5 шE?Y"s-62ͥ+vi;kZOFlQt<g$5kT~'_!9”urR.M>rz
-%Kq}NRiL$VgmT5Ղ8C1F0 fz@)F>9IK;DZ+o,P<WD*
-eh^JY0'HImkJ1#w[c˭I$Mص;!Np%7_|⧵ZqpN`=!d&#iHmu֡\}vWy;E'h7У޺
-}
-"&.,ZY3fbVF)= ^gZ =%O7
-
+6YuyQEߎ!N (nw-@uU7 .F6LZQJSOqwqJ0Ll hF'X <##f֠O3b/+\ AFr-hrfES3PHIq.AwK8Ju(d%,ׁf71-j_W(uQ d- WD[T7uzjьR!bפMs9+f.2_)KQz ه6JǽKl-| NY<(4z2⠍s%έ
+[:~a w˓I)gԬ,"AO7//" Tqhf@bu l ܔXTu`bTsdbUG1,u>c4nmi3I4"t~G\VںO2OG0,m.E.,I7y*d^ e45I&Srহ
+j(7% . k
+#h&?gJB#rO[CA{QA҉0F1sf٭&+@U$u#&>[q% 1C^[K3 ЅM*ۤ >x/Z$ =ktNKQ gZo Z- gM9sy4m謷쁟wO(C76aIO!c'"*>UU+A@\e88&?c*
+]WÃՇ]0wBBՠ)pZ$se䓕 )Oܶhw)/fxWӷӷßigb0z ssV};x/}+̆Xߝx' 83xH BH~\x,?7t"Y%5 шE?Y"s-62ͥ+vi;kZOFlQt<g$5kT~'_!9”urR.M>rz
+%Kq}NRiL$VgmT5Ղ8C1F0 fz@)F>9IK;DZ+o,P<WD* eh^JY0'HImkJ1#w[c˭I$Mص;!Np%7_|⧵ZqpN`=!d&#iHmu֡\}vWy;E'h7У޺ }
+"&.,ZY3fbVF)= ^gZ =%O7
7 :КyMCY0خ ۪}Gi7Cb<F
1(1E{I1~h,?UZ;0 KDX.&QU`|
-'0S':DmM }u}ɛP!,Q#7i3>adZ}/ݐ__/֟i8v=/vOX #L" .Gނ3Cj8ͷ?Jֺʎ."g`?E3l\+SʿISH{Ǩ.`>@z'dV)Ԑu{lu7]1}]f?' ^%ms
-kE3鷒1QI+!,-2캲Vҍn '&Gwڀ=g뀣
-@"͛b?î0r|]*L{S7vn[f2~w zZ Ro O].?OEThQ+J0~z
+'0S':DmM }u}ɛP!,Q#7i3>adZ}/ݐ__/֟i8v=/vOX #L" .Gނ3Cj8ͷ?Jʎ."g`?E3l\+SʿISH{Ǩ.`>@z'dV)Ԑu{lu7]1}]f?' ^%ms
{r[&>6 F#_ϳ6eͷ7]up)UÛjID'?rDڥ:Fä_;AG
D^ɝ㿲`*)0WnX|9JeIk<1ț\7ͧD,3lA;OK8ސX
-ymWRΔ} u]BXe`dS> 7iL+yŻ[[u(aw\;c[]J#&P\Xk3΄#PRQn|@xmB:H(POJrE0޵Cw5[H
-Iπ8Aa0&
-$1uYdtrPi٤1Lij
+ymWRΔ} u]BXe`dS> 7iL+yŻ[[u(aw\;c[]J#&P\Xk3΄#PRQn|@xmB:H(POJrE0޵Cw5[H Iπ8Aa0&
Ly>``|ߕ
-Y!&]ӕ.;O"RÑ#(;_H2spretbr
-}ƊAJN@
-Fvv7ވٞ-XmFK
-um.e
-&15 P|$J/
-X) n0fG2X@7*|䢎GX‡p6I_fW|H',#t.aaP PAaRmbksn=amεRJ>TZK{pP
+Y!&]ӕ.;O"RÑ#(;_H2spretbr
+}ƊAJN@
+X) n0fG2X@7*|䢎GX‡p6I_fW|H',#t.aaP PAaRmbksn=amεRJ>TZK{pP
Zk{D8V On*&EK~T/ ۤ/ #dOPqB4xkY,
-
-(Ӫ%9_XG:f0Ϻ^1J(³ސbae2-?4ز&V
-`1>''(>J;'MՐ=V/t%PT d)2ݻt0TBuabq^ҟ) 7ЗʥȦoA<;&u%q?9 ЃKM?>ཛIEiS5
-=24ӘT,Fey 9ṿ-[vMwC]'B: 2)i+|\h7/8R+o'Aa"$Y]2k,%~%7]m
-{l~8lEwHPm(Lk'^C ϥR&*/2}2&5bsz,HU/V<ޤq>R/;Y(#RP]i۵ֶW~spO>c}=3%I?${"Å>mjHVTT/(yZ_ѷ7G:3</s,l`B8czG[|
-喿GlI\i@{~3}(l۳AeOQ UcW+H,:I.HwI6⌤Ikf[ZJ)Q!w弹eGDUu@`Ń Zx[l^Ö W}>"l9Z
-jvLV^iݤ밴#9 ѩ!Rykd&;*5uhE9 X̱' TTp
-kK <6XΆҝ鋊PυSA0 \;_1kA̳M h
-}z"d92tP [{1,X=
--΅A4
+
+`1>''(>J;'MՐ=V/t%PT d)2ݻt0TBuabq^ҟ) 7ЗʥȦoA<;&u%q?9 ЃKM?>ཛIEiS5
+=24ӘT,Fey 9ṿ-[vMwC]'B: 2)i+|\h7/8R+o'Aa"$Y]2k,%~%7]m
+{l~8lEwHPm(Lk'^C ϥR&*/2}2&5bsz,HU/V<ޤq>R/;Y(#RP]i۵ֶW~spO>c}=3%I?${"Å>mjHVTT/(yZ_ѷ7G:3</s,l`B8czG[|
+kK <6XΆҝ鋊PυSA0 \;_1kA̳M h
endstream
endobj
94 0 obj <<
@@ -2174,119 +1877,72 @@ end readonly def
/Encoding StandardEncoding def
currentdict end
currentfile eexec
-oc;jtD[1ƅpTo9`.:ypJ*l'e}#)&7+/^
-W{LZ60VQR^λ3r)#v$p~c
-YrvB>:#us
-(H-kx;u mCwWU/3
-|)P]_"dN`,g
-U@?$r8~L*vV)U'
- q!K:FQ&>)R@!bZDW%aԟ1IV<'+D-82uDڨl:rigy"_!;T7 K6gb,Hn\}{:ՙ0݋57NBk^(j臗/$sb-vr15*洺%?][8جK$݄+1l5:o)yt fLEI/1T^6_D%+\~7atꩠ@ϕPx"/x<1cobhrm:dïi
-ia/UTܐss+åʮ/tsƐX<Ԇ͔tv My
-X$&7$yyߞT}xjX|/CمJMKElmHJMMdCF|aɷ5j.
-ZS~SSp;;I`;"J 
-0s#\ϜӽP(בx\Kc#IlߊQ}j؝-NFҴ%AT!BgKuxos Lݻp!EmG>elޗTW?k5=jVx4]^15D«|e.:Kl"POml2)YQ`Fp&Bi%rS rF,I5p}Hbja_KҾ/OR㓂{&h0zOf5
-Pws&yՆOW:y"9?SP8 t#s=Nk`\MFo?2Qn\qf!Fڱ[l
-2FO (ss1M:hęm3>dL{.R6v^MW&≃I`HM;ĠOH^$]eի44:+jXrczߕ|s~Z$C _D3eRMFa|ϐۿ؊,F))`,bL1%=Fk#ȯ{Җ@_PtoA}>
+oc;jtD[1ƅpTo9`.:ypJ*l'e}#)&7+/^ W{LZ60VQR^λ3r)#v$p~c
+(H-kx;u mCwWU/3
+U@?$r8~L*vV)U'
+ q!K:FQ&>)R@!bZDW%aԟ1IV<'+D-82uDڨl:rigy"_!;T7 K6gb,Hn\}{:ՙ0݋57NBk^(j臗/$sb-vr15*洺%?][8جK$݄+1l5:o)yt fLEI/1T^6_D%+\~7atꩠ@ϕPx"/x<1cobhrm:dïi
+ia/UTܐss+åʮ/tsƐX<Ԇ͔tv My X$&7$yyߞT}xjX|/CمJMKElmHJMMdCF|aɷ5j. ZS~SSp;;I`;"J 
+0s#\ϜӽP(בx\Kc#IlߊQ}j؝-NFҴ%AT!BgKuxos Lݻp!EmG>elޗTW?k5=jVx4]^15D«|e.:Kl"POml2)YQ`Fp&Bi%rS rF,I5p}Hbja_KҾ/OR㓂{&h0zOf5 Pws&yՆOW:y"9?SP8 t#s=Nk`\MFo?2Qn\qf!Fڱ[l
_%zOnL3"]7'$#{ò§m:`LfJ][uN9OL'ǃ(@BD+Ѵ(1"gXKFn3!iṈTfMӗۑ $Я)i`X0(
&CiHiP!KߐI*AE`
-u$dGG1렶l2<8QM>o&)9
-삄clB
-:Z5|_H8)1*^N[+=YJypYV7iun&nP0WC?=Y+|3(۫cFXhJ ;jf| a)\Cl#IMF
->ͥ}"]20. 1~k(XΖJlBL]힐Ey:Z<oTAQ`.<tPg"h̼i80hsb*<\t>?0y?Ur
+u$dGG1렶l2<8QM>o&)9 삄clB :Z5|_H8)1*^N[+=YJypYV7iun&nP0WC?=Y+|3(۫cFXhJ ;jf| a)\Cl#IMF
+>ͥ}"]20. 1~k(XΖJlBL]힐Ey:Z<oTAQ`.<tPg"h̼i80hsb*<\t>?0y?Ur
aL0n$$Ȭ@vR4U3BiGWV y'5dp
-dF8RZ^ߨ(L2Ŷ‡ ó0OV,2{VRgz) cċ(d
-3Rv  .Nِ?w>u;
-a0ݜ;uLweWǡaZԩP1ЦF\ѷ\R3!K\d-C~Ծ~Pm]D\u{Ȇ[e4F: 84;f_(iҦHf}J;yOA &W\?|cYPuj6aqgR~\͓((<
-x)*i&[xh15 !LJNŭ
-I/%nn&bmefpN&30imH {~/14*<{]
-nz`#"@S-
-{xܧ!HbHwRjlă` Va'H+QP16e[v'b}5&RùN4Bfݓ !/v)(mHR>b3>FHLӝsxs8{_lEV{-}51uCBg{L0e-U͐$> גkzي zim{Y4=\rHup7шa⸅jR_nwŨ!* $ilᩓP_i|ތeT@֙X}oڂ{ M(b_lS[ay+xƒEu-~H˘I" j"rdWQRq{QRۏil;I|=VPsTuo#$VY"#ZD։_g3n^B,Gy6OKAc/#76yg`Iu
-Ǟ[_rށ$2HQU^>?Nu9~v'VNЈYpip"!(Ұb"z}xm%SRgً qDJM$wQ7,B-S3[ꞎԚ+Unw9APFTW\U'pXms;S5`Mst-c-4ɶc8P0(\\E
-+kR W_SUKŇ7HrPva_NYN6s5w;S UKOof?-t,M:N
-6hNL$_Q[w"8
-/{n#nDm)_
+dF8RZ^ߨ(L2Ŷ‡ ó0OV,2{VRgz) cċ(d 3Rv  .Nِ?w>u;
+a0ݜ;uLweWǡaZԩP1ЦF\ѷ\R3!K\d-C~Ծ~Pm]D\u{Ȇ[e4F: 84;f_(iҦHf}J;yOA &W\?|cYPuj6aqgR~\͓((<
+x)*i&[xh15 !LJNŭ I/%nn&bmefpN&30imH {~/14*<{]
+nz`#"@S- {xܧ!HbHwRjlă` Va'H+QP16e[v'b}5&RùN4Bfݓ !/v)(mHR>b3>FHLӝsxs8{_lEV{-}51uCBg{L0e-U͐$> גkzي zim{Y4=\rHup7шa⸅jR_nwŨ!* $ilᩓP_i|ތeT@֙X}oڂ{ M(b_lS[ay+xƒEu-~H˘I" j"rdWQRq{QRۏil;I|=VPsTuo#$VY"#ZD։_g3n^B,Gy6OKAc/#76yg`Iu Ǟ[_rށ$2HQU^>?Nu9~v'VNЈYpip"!(Ұb"z}xm%SRgً qDJM$wQ7,B-S3[ꞎԚ+Unw9APFTW\U'pXms;S5`Mst-c-4ɶc8P0(\\E
++kR W_SUKŇ7HrPva_NYN6s5w;S UKOof?-t,M:N
+6hNL$_Q[w"8 /{n#nDm)_
ysҜkҤgņ9(Ŷrib0mJ &C"wCBתGۜ,HA `rY(iQ
}*?n %֙Z6SXBY(;.-L
-g2|Ug̛}Ъ<&-zyoTٻ-ʰdPfvf`N(u<_')H]R2maT},7b"Ww_+[2Gǯ;Kc@SO4wʈF#Jm7f|
-?3^IHr>b)1dx!ˎqKiiVпu*LH}kx݅scEe]J,vGУញCw qhڲ yN\B~U-w|dXϿClw3- m|P] mW@.}y
-9ܸ_!~qy5Fv( 2:y%.rB8t~6۴vW"i~
- 6X3B"%B#t`sQQ㥾X[
-=9-Q1|4ǽA)oQ7QX9C]A@-P6{%Z_ 0xF̝Ì03QH<)[UPzcZ/ߎڠ{jc C,k<iC$)hqj-j!A
-=5>&uM̥|v»a `U<(ry-*D% ]Ct
-1SӴ,6 J;6Q@ZZgKAOUb$u0
-3~.UzF"[Fy2'oϪn'9~rVCp $Vy!Vr 0ob.$iյbgwgG
-, Fjʻkc*aΘBz$Q؜C0cK)uL8NQ
+g2|Ug̛}Ъ<&-zyoTٻ-ʰdPfvf`N(u<_')H]R2maT},7b"Ww_+[2Gǯ;Kc@SO4wʈF#Jm7f|
+9ܸ_!~qy5Fv( 2:y%.rB8t~6۴vW"i~ 6X3B"%B#t`sQQ㥾X[
+=9-Q1|4ǽA)oQ7QX9C]A@-P6{%Z_ 0xF̝Ì03QH<)[UPzcZ/ߎڠ{jc C,k<iC$)hqj-j!A
+=5>&uM̥|v»a `U<(ry-*D% ]Ct
4Btp1‚/#霡~6DM ['qN-jh 0*_tl8ƛ#12eR`
-[b;ӴŮtD7CdGߵ<KEQ
+[b;ӴŮtD7CdGߵ<KEQ
P1ϵmUCx|'>u?6Z7J
KV"QFsz}+ġG(ii:|U75X!Ql&e `s Je|^ݞ#h^ZB_Mo@$`$doh>ҩ;:/ 4ef*{{
1Q[zȎE2gcnFhseᄲ)]H 6~4e}:%_$eu"zH#/,Fp&yJ %PZ5aNW5[:( HS;wCݼDDzLtm=̋f=Ԍq…
-]5t)n} ՕXS%q #aeƏlJ$*w2bf݇!LS^^K;
- IIўe%mSR:\ thV)LJVD`/ob0mw!hגxМՎQ$kD8p/CdR0VD*e48zI-#)aHiܸ. c
+]5t)n} ՕXS%q #aeƏlJ$*w2bf݇!LS^^K;
+ IIўe%mSR:\ thV)LJVD`/ob0mw!hגxМՎQ$kD8p/CdR0VD*e48zI-#)aHiܸ. c
˝ATzJi>w~}מf'ֻoҿRX{p;Йq9ֱwִ8!q=%)=h@JSK~EM~EK1 SX8|W H
h 37eڑ˖0ۀcqkcIWuo*V \Nt2+BVCMV)O){/>pp ̀w9-Nj`d;µzfۭE
-)L
-~kz>GT,B
-qdV=fr(Hҹdjpg$]߂)F  Ka$]fI)֩eDBk|cTo꾧{<͹6 ~M hG7 [N.<|v\x!<]+v\BmRL;01 K¸o`LgB#^Hd
-kEEL
-]D{.6&Qx|M%-!e0*M|BJۻzcsw;Nc_ؤAɤ,>R}S|o١Վ9;9hf]G϶y/p2@I!Dg=MVq zvwu ^Ҥnu}d$=w()
-M[vg(vb{iR+3^.xتn-'a[> ʣ(W|`(%0jp!#:#cT %A
-٭
+)L
+qdV=fr(Hҹdjpg$]߂)F  Ka$]fI)֩eDBk|cTo꾧{<͹6 ~M hG7 [N.<|v\x!<]+v\BmRL;01 K¸o`LgB#^Hd
\WhStYf$E/^+Y,
AF1dDFK+̯ĞcV}k ^a + ؓoʱ5xƫY1 kN7nQ{@L.z؁wE'1@zюCl,M.7`ዂ38{aN`/``R̀z
P
@N~z+#2Y3Y;sC#GBa[i)`0)
-4CiH(φle֊dOߌe4dq$F&I+Y
-oELo V3keeG X~`<
-kl
-x[|>,m5S6۾nYpr`>h& Pܵhdv~fv#_mEIWx>=䀴<F:M~HڪO~T㱉V[KLA֑}[b~kJSƓe</F'p)Nt5i,WE~}
-?rzϮL,|$S&2+ēAv\X:Wt3x=PD8O.V5M:ۓݮ2bN]csH*g&]gvLn
-Lbpwu=]6f6tTʥN8"@cE{散\D8~2~ǐ63 "" 3x?@F?!?
-8nKk|
->+<8^=cӨ{c!\㛀&T:(AO~ Kq3~vj1L r)E: F|wF3{%tN/.Gܳ(hU~ad8BY`G$ioΘjNoak?qMд=OTDǂBq{FKꮥ;[NQJ1gnY!J}7C<5f&@ 7oPrrDMj<5)
-"ZG+SYPqOa
-\,@rB'V9iCZzqUʅx I'.Oǚ|;
->~(fiZllܿ&=B{31d}<gN.)ՆBE|k~F&m˒X' Jt@omreP,ƃkM! Nת`u#,R2}^坽>t;
-t^Dv_
-@)J%ӱ-ieHi dJ+@Jm; F6^SfF A%k4
-|bٷq` 
-T*w)`(f;F&^(y{t6qs&u3ˉJy41ںZ&]uBS|z_/ ƱyįcdR^(pw_+*O"b .1 ISuc2[hjBVI&zsM$AuݒAsk
+4CiH(φle֊dOߌe4dq$F&I+Y
+Lbpwu=]6f6tTʥN8"@cE{散\D8~2~ǐ63 "" 3x?@F?!?
+8nKk| >+<8^=cӨ{c!\㛀&T:(AO~ Kq3~vj1L r)E: F|wF3{%tN/.Gܳ(hU~ad8BY`G$ioΘjNoak?qMд=OTDǂBq{FKꮥ;[NQJ1gnY!J}7C<5f&@ 7oPrrDMj<5)
+"ZG+SYPqOa
+T*w)`(f;F&^(y{t6qs&u3ˉJy41ںZ&]uBS|z_/ ƱyįcdR^(pw_+*O"b .1 ISuc2[hjBVI&zsM$AuݒAsk
}`PɇOMMaK`U h>ō^bWn,pp~
- V'gj
-yp"ǙxV+L}YƼ1'X2X3(Kǐ'Hhڧ;{%E/`P)8X5]?\1Y:|F<W&˒"HC6f)5l-v*&V0>jq Lk]j۲m.<!
+ V'gj
(N=(sH
P6L19U_RA2 "o7|MK+ynT4~+j/: w;WF:@ո١sRzMPqrr>%YAya%+QgMNlU
-ie#E$2,ᐤ
-C¡׳>|þ0u:gdِ# /&t$H2d˜r|*
-X;\YLe!ƹ1'#3IR sI3˿cvy TMI8b*4?6Zu҅MJ+
-nY'A]MT?U4ơ_fcb"RNg$:$ę ^dԤqȡM2✛)&a_Jvj,Öcb}S10si-!i> fd{w
-GZse)oܽ{Sa_y-a/."g+DeE[{I!(MM4
-anX)QXEu}ؐ:Mo*OtlʢdhT0?v+<<D
-sCiIC@X/-<v_Ro=]8f r bM+&.<$]ć!uxbcpw9DHiQkd+$}dΔԩw;dZ;Wۧ . s
+ie#E$2,ᐤ C׳>|þ0u:gdِ# /&t$H2d˜r|* X;\YLe!ƹ1'#3IR sI3˿cvy TMI8b*4?6Zu҅MJ+ nY'A]MT?U4ơ_fcb"RNg$:$ę ^dԤqȡM2✛)&a_Jvj,Öcb}S10si-!i> fd{w
+GZse)oܽ{Sa_y-a/."g+DeE[{I!(MM4 anX)QXEu}ؐ:Mo*OtlʢdhT0?v+<<D sCiIC@X/-<v_Ro=]8f r bM+&.<$]ć!uxbcpw9DHiQkd+$}dΔԩw;dZ;Wۧ . s
025 ;x+E{"Oy~P \BdXĞ:N־Yו
-t]GLHĻl^q_ |(]@=%<nvaoo$c/+TKc'V٨0Ȏb1{jƠҵteK
+t]GLHĻl^q_ |(]@=%<nvaoo$c/+TKc'V٨0Ȏb1{jƠҵteK
eoqt*W0`z
(cTTCc(<V_F(5s(a#oOWg{M/0Rtsjpʵ}
\$Tx f:H@-
ˎm|o"hQl̈́x2wg[b2՜mfEL|WE=0'tQmx{,
-9RE#ZŔHEW
-g餂WcK
+9RE#ZŔHEW g餂WcK
"7n]-JɵLq~\! =%Kf* UKݮrZ!c9=0HZ{qAQ
-(ePX߀xg}cm-tFgaOM\m
-Ǔu/%q/b PI),?Z R?
-W"r91}qPxfi@ ~j=1gNn-GS@0GƁХĨ
-+Ҏn>WnȭNx,πOkWt/D>bD9H%!ᝢ^/]} "jI˺z7y I#+S@ބmg pTqq:b!-a\@yf0w8[.I0X|4?Z)nDzՌѷ Vfdّ:;t<5nx'W3
-F /Mڐ9%_G5C"Y~,5Agz%/_o4ij\<aCqŅT,q4`b0A_ĥL }A
-+t
-ffq6XcDF" B΄R9ɴFCVLd"&[> ena3"pOPaTtVMV)ZLa\܎OȱO
-MI{LC U
+(ePX߀xg}cm-tFgaOM\m
++Ҏn>WnȭNx,πOkWt/D>bD9H%!ᝢ^/]} "jI˺z7y I#+S@ބmg pTqq:b!-a\@yf0w8[.I0X|4?Z)nDzՌѷ Vfdّ:;t<5nx'W3 F /Mڐ9%_G5C"Y~,5Agz%/_o4ij\<aCqŅT,q4`b0A_ĥL }A +t
+ffq6XcDF" B΄R9ɴFCVLd"&[> ena3"pOPaTtVMV)ZLa\܎OȱO MI{LC U
Ӑk:FxƉz.kLrm}fG\
F~(G4,%X֥VW(\6mIOESh3c%u\1l֊iZ6~v×O/LB\6LL( v&Z{knITaz)sjV0ټՂh!>4?)AA!y}Tgp
!Z tE7C!E{3˪l¼,L
՚8I0PROc+#}y JAo=vV2Qi 0a)xsĽJvwJ?ƵiH{I'=`bK#=/PG`XQ"p#!ƏDgԯ#^t!(n[r=l(@1_
-Pm'+y_U5eSP
-[`U{ŏ1$2ݤğ1R \+F\㷪/y˃(
+Pm'+y_U5eSP [`U{ŏ1$2ݤğ1R \+F\㷪/y˃(
֗rӘ
^K|T[{uwϘ.|U_"exeq^7( :5#/ !/["czBD[J<“ٷb]P;H$Of9k+9#L(xS
endstream
@@ -2349,16 +2005,14 @@ readonly def
/FontBBox{-5 -3116 1694 792}readonly def
currentdict end
currentfile eexec
-oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHt
+oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHt
"fV
bK J7uǻ
L*3T;y;!0
-kT*I+ªFū=þF6Sl"j5 CqC
-%!OШ><nrWso})M/ܠ0z>Lѯlc.`ΙkWՅ6*khR
-Bt1;|gzcSM`׻nʡ3bkК{ΒA"5$
-"p֩* ^WSVҞ *@:)+A<?h<eD`wG֫HC.e-3g᫯( X%40:hZut
-|wk)Jww 
-d]Vw%TB @IyUw2s_4'|Sf\ ZS儱~e>x"BN< .J!/do7HRtf8IVv@ȽAiOPkOOv;)}M r4ymS4f
+kT*I+ªFū=þF6Sl"j5 CqC
+%!OШ><nrWso})M/ܠ0z>Lѯlc.`ΙkWՅ6*khR
+Bt1;|gzcSM`׻nʡ3bkК{ΒA"5$ "p֩* ^WSVҞ *@:)+A<?h<eD`wG֫HC.e-3g᫯( X%40:hZut
+d]Vw%TB @IyUw2s_4'|Sf\ ZS儱~e>x"BN< .J!/do7HRtf8IVv@ȽAiOPkOOv;)}M r4ymS4f
endstream
endobj
98 0 obj <<
@@ -2417,20 +2071,10 @@ readonly def
/FontBBox{-21 -994 1292 912}readonly def
currentdict end
currentfile eexec
-oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHt
-ANh;mt1<QeX+fXn){1C_@ Oke'FAVs)LvٖINUs+{_Wȓ @E?D)+?[w ܾSTTg|[9 z-ϔUk_͕)'Yğ @E5TuNv"&[43ũ?A
-в0 >8NU^ ~Bzة$y| 6SP.oq*+l
-OzNcZX 1\*QPJ&N;Y&q6 Zˁ?T:$yX ,+N8UԯߝYמ{D
-ߒ52c{ۅt1}7
-TA
-IBv=MFg.uZ'3g{I.e관k1*}/yӨ_daD1\fU*ܺ0N1l4%1Ģy~WSᥑ
-@`M&@&K5>
-1[xL6o5 @ ȽYQu9
-UЫ:T9jMYqM
-jCvi!A?Τw]{@FFFb銍RY}7icgbctF
-k ]}:^Cx#?Y˄fOh F5mqRJ*q/EZdž
-TA02ʡln=q;<U|l wsZ ylA-UJ)'u~S=3JȾ81:xkI6cǀf,h3AK~
-o=߿`#!5vOSK
+oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHt
+ߒ52c{ۅt1}7
+1[xL6o5 @ ȽYQu9 UЫ:T9jMYqM
+jCvi!A?Τw]{@FFFb銍RY}7icgbctF k ]}:^Cx#?Y˄fOh F5mqRJ*q/EZdž
endstream
endobj
100 0 obj <<
@@ -2484,9 +2128,9 @@ readonly def
/FontBBox{5 -289 1224 906}readonly def
currentdict end
currentfile eexec
-oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHt
+oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHt
NoEY(IM~[nr_ӌtxK[i,!1CM1Vopy?
-5,/o>f ?Kp FdfNo[
+5,/o>f ?Kp FdfNo[
endstream
endobj
102 0 obj <<
@@ -2550,23 +2194,16 @@ readonly def
/FontBBox{-70 -289 949 802}readonly def
currentdict end
currentfile eexec
-oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHt
-NoEY(IM~[nr_ӌtxK[i,!1CM1Vopy? $3#R醩|yB) 2q&rR<r> JhIHd
-T9ASZ<MJ8<SN
-*<4F.CeI%n8RGìǦʻ!5aNg`8^܁~tG 4!w;Ey(Ui@bR7)v*Tv-<2Kd"U;N%1ȣT0t/QϫFNkDηRʼntUa\/N
+oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHt
+NoEY(IM~[nr_ӌtxK[i,!1CM1Vopy? $3#R醩|yB) 2q&rR<r> JhIHd T9ASZ<MJ8<SN
dzvCVϏ"0Xpy-̴
^_y%Hc @k;Or+NkN9 19L R|׃R~ŝ515  -ȊRXi~"->L-{ڎ
-u[X8KƔ/ԹaE_]FGDIݝ$_K vato
-A+gP ü>VP')욈f+m~B)gܼy˄}\!>qq39Q
-5Uʘtqʅ>
-"ͻQ"Wֵz"
+u[X8KƔ/ԹaE_]FGDIݝ$_K vato A+gP ü>VP')욈f+m~B)gܼy˄}\!>qq39Q
\|?~5jV@ ZzF
/ש.;N gDXE鯡r"T []1za4X
-Mb])
-٣O0MEW W?&vw8z!,bQm^&;V$a6IӶB&',pfbxV4^^]kT02J2)( )2HJ-M
-m5ɍVÐ0N6_u( 3t@yKMwrl/$Ioxv^M2Ư~E><O+51 3kJ ,=DWFIi? V<L
-·Y]m\Rg^.Q2+}zuǥW$)7{~ǟ Gq)ٵ?9# ʎt)p"7N<AToK;I
-Zk%rLI~'DѱD$p.xP%x ^
+Mb])
+٣O0MEW W?&vw8z!,bQm^&;V$a6IӶB&',pfbxV4^^]kT02J2)( )2HJ-M
+m5ɍVÐ0N6_u( 3t@yKMwrl/$Ioxv^M2Ư~E><O+51 3kJ ,=DWFIi? V<L
endstream
endobj
104 0 obj <<
@@ -2623,17 +2260,12 @@ readonly def
/FontBBox{-40 -283 904 728}readonly def
currentdict end
currentfile eexec
-oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHt
-Jng/BMY2iH$xu$qb4
-LT) ^
-ppLi׉9Kvt.M$©m>
-Y(ND`fs
-ö˯fuLbPB-SRπK=9f2y3yg
-~/4k Emt_
-#: գRLc*Ͼv#_LhiSXO'IVz_gsvS5BфpcC`QgەGh3 z U|ebao"p 8gg.6^FIG3,[)͖i f(>
+oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHt
+Jng/BMY2iH$xu$qb4
+Y(ND`fs ö˯fuLbPB-SRπK=9f2y3yg
+~/4k Emt_
_ri
-BӘw#CQ!UM9w
-XG|NUQ W^np<%I%0wyImЍh
+BӘw#CQ!UM9w
Nm@n+lś} jFTXmBS-uFHƋoVfBYk1/&&<ӿPďHI;
/D-T6a.6Yp=-Y4Qeh,ZFTC9BŅF[#gDcܘ t`IQ_t眞HUrը>]Yek=#IW}3
endstream
@@ -2715,34 +2347,22 @@ readonly def
/FontBBox{-5 -183 542 746}readonly def
currentdict end
currentfile eexec
-oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHt
-e#jV$FO o~ O1汉Vok3f0N(Ivy<}RdB0-3cj j~-"кQD-J̀ :tvo|5? _*p9H/ ֱijLM?EЈϑ?#aaR;PhKRg ٰbfŘ no+3(JP
-=1$jܣ]boLAk2љjV`>|RF>s
+oc;jAw-ᾉYň5t&נ{hLGqB`d˗Pة|*x\ޖHt
+e#jV$FO o~ O1汉Vok3f0N(Ivy<}RdB0-3cj j~-"кQD-J̀ :tvo|5? _*p9H/ ֱijLM?EЈϑ?#aaR;PhKRg ٰbfŘ no+3(JP =1$jܣ]boLAk2љjV`>|RF>s
~ LQ%)'r;853%V#3@yVpiɷl6oOjuh W-
- ogn9;}9撖
-]$U{AM;ۓ4k9
-O97Gxui1;a1vM 79xh>$=/㈣#u=T!LUE8<#ŏp/3)殾ܛ'@}Jc鞋idzXӎ^3IŽdϒ$BSRujSӦF#( 1z/@BYqrpQ), h
-OCZN0OZ돭A|-cmťz#[}A,eY>/ 4K
-S/q
+ ogn9;}9撖
+]$U{AM;ۓ4k9 O97Gxui1;a1vM 79xh>$=/㈣#u=T!LUE8<#ŏp/3)殾ܛ'@}Jc鞋idzXӎ^3IŽdϒ$BSRujSӦF#( 1z/@BYqrpQ), h OCZN0OZ돭A|-cmťz#[}A,eY>/ 4K S/q
mb`t8"tNچ3P!t@'0iůf')ogbVUCP$ڱWtM[<v'`HQhQO>8wYC<I3ЍKO
- SViFŶ+5dndPB)-,-A{)X.yBŠKN*:ily@N㢓۶1t$.*W(Eepj j"7A8,(~ucO##;t1)"q0
-
+ SViFŶ+5dndPB)-,-A{)X.yBŠKN*:ily@N㢓۶1t$.*W(Eepj j"7A8,(~ucO##;t1)"q0
f埡[PǭT<cDH)B@֎X 9> ;v^8 Kqw
-lw(Z|wV7t 0d{.Xq/;?X$] G"
-$̙5x wh$qUdd!Hce#bmBpFO}//!υۿhb%/:&-dڧx袟s
+lw(Z|wV7t 0d{.Xq/;?X$] G" $̙5x wh$qUdd!Hce#bmBpFO}//!υۿhb%/:&-dڧx袟s
Ԃ9˨bW=lƁ<[1
-r*7yp[TNJ^!@hȭQi%I1Qxks>mi֭ϊ|D'Z%RWT5e)0F;o3_8fNE`-( +"򺹀DfLh"$
-^)pyS|^1[,K˛xrcRCi)<Y$*qG-eGO\D C*PيrnhlG g_1)LI>lÐa:i%1Ͻ 0sWj<%/x;,TD*ƞéBo+Nvɷa[@ck(vPґ,\hlE=0+F!<.y4nG095Q!Յwo3KS*T
-Ȳ ʋIO^3T-&
-@߂=yaE+J
-n`/
+r*7yp[TNJ^!@hȭQi%I1Qxks>mi֭ϊ|D'Z%RWT5e)0F;o3_8fNE`-( +"򺹀DfLh"$
+n`/
{n`j6(N-S:oq[-5~,LATsE\CvӕѠɗ
-MOlG3Q8?jePIX).' ee4oYLTz<!B''R7TR1M&h+ʸނZ".pY"n`YEkڝ{vd1]<u8ep0Ҟp}p
-fh)~A`|ǹCGQVUo>hv؊G [Z:
-"CŹn;Sɠ2v|bɊQvڣMz<$usd#1:4׾Ѵnuyedݝ?V2"HP]؟ E0܂8BӈPc$61,{pAέLC?GȵaG5P7$1y9IR;7<>ZQ{ZT, Vzh9[C FM"+koS@ )#U]F5qr8pbb--JF(^F'
+MOlG3Q8?jePIX).' ee4oYLTz<!B''R7TR1M&h+ʸނZ".pY"n`YEkڝ{vd1]<u8ep0Ҟp}p fh)~A`|ǹCGQVUo>hv؊G [Z: "CŹn;Sɠ2v|bɊQvڣMz<$usd#1:4׾Ѵnuyedݝ?V2"HP]؟ E0܂8BӈPc$61,{pAέLC?GȵaG5P7$1y9IR;7<>ZQ{ZT, Vzh9[C FM"+koS@ )#U]F5qr8pbb--JF(^F'
!?j IД-
-11_Q@*S^HAf./D)lj}Ƽ7)$!nHݲ]M
-(2)fcOFJ "k"q ,?rrr 6^6^ѓ@bO=fKj9%x.Au΅[_12qY_ШӇB%F*ho! rx+st]pH 2/
+11_Q@*S^HAf./D)lj}Ƽ7)$!nHݲ]M (2)fcOFJ "k"q ,?rrr 6^6^ѓ@bO=fKj9%x.Au΅[_12qY_ШӇB%F*ho! rx+st]pH 2/
endstream
endobj
108 0 obj <<
diff --git a/macros/latex/contrib/elsarticle/doc/pdfwidgets.sty b/macros/latex/contrib/elsarticle/doc/pdfwidgets.sty
index 68d07a8b45..8de941418e 100644
--- a/macros/latex/contrib/elsarticle/doc/pdfwidgets.sty
+++ b/macros/latex/contrib/elsarticle/doc/pdfwidgets.sty
@@ -317,9 +317,8 @@
\noindent\begin{tikzpicture}
\node[fill=blue!10,draw,shade,top color=white!10,
bottom color=cyan!5,shape=quotedbox,
- inner sep=8pt,text width=.95\linewidth]
- {\color{orange}\vspace*{-1pc}%
- \verbatiminput{tmp.tex}%
+ inner sep=8pt,text width=.95\linewidth] (x)
+ {\color{orange}\verbatiminput{tmp.tex}%
\vspace*{-\baselineskip}%
} ;
\end{tikzpicture}%
diff --git a/macros/latex/contrib/elsarticle/elsarticle.dtx b/macros/latex/contrib/elsarticle/elsarticle.dtx
index a0c2b2e60f..1089a0bd3a 100644
--- a/macros/latex/contrib/elsarticle/elsarticle.dtx
+++ b/macros/latex/contrib/elsarticle/elsarticle.dtx
@@ -16,7 +16,7 @@
% \fi
% \CheckSum{3279}
%
-% $Id: elsarticle.dtx 259 2024-04-06 12:00:41Z rishi $
+% $Id: elsarticle.dtx 264 2024-12-03 05:29:05Z rishi $
% $URL: https://lenova.river-valley.com/svn/elsarticle/trunk/elsarticle.dtx $
% \iffalse
%<*driver>
@@ -63,6 +63,10 @@
% address tagging.}
%
% \changes{v3.4}{2022/11/26}{A bug fix. Accented characters produced errors. So loaded fontenc package.}
+
+% \changes{v3.4a}{2024/12/02}{Removed the preprint submitted line as per the
+% instruction received on 22 Oct 2024 from Arun Shanmugam (ELS) with the subject line,
+% FW: Preprint sentence in EM submissions}
%
% \GetFileInfo{elsarticle.dtx}
%
@@ -84,8 +88,8 @@
%%
%%
\def\RCSfile{elsarticle}%
- \def\RCSversion{3.4}%
- \def\RCSdate{2024/04/04}%
+ \def\RCSversion{3.4a}%
+ \def\RCSdate{2024/12/02}%
\def\@shortjnl{\relax}
\def\@journal{Elsevier Ltd}
\def\@company{Elsevier Ltd}
@@ -1112,10 +1116,14 @@
\else%
\ifx\@elsarticlemyfooteralign\@elsarticlemyfooteralignright%
{}\hfill\@elsarticlemyfooter%
- \else%
- Preprint submitted to \ifx\@journal\@empty%
- Elsevier%
- \else\@journal\fi\hfill\@date\fi%
+%% Removed the preprint submitted line as per the instruction
+%% received on 22 Oct 2024 from Arun Shanmugam (ELS) with the
+%% subject line "FW: Preprint sentence in EM submissions"
+% \else%
+% Preprint submitted to \ifx\@journal\@empty%
+% Elsevier%
+% \else\@journal\fi\hfill\@date
+ \fi%
\fi%
\fi%
\fi%
diff --git a/macros/latex/contrib/fancyhdr/README b/macros/latex/contrib/fancyhdr/README
index 66896312fd..82b3290a09 100644
--- a/macros/latex/contrib/fancyhdr/README
+++ b/macros/latex/contrib/fancyhdr/README
@@ -5,10 +5,11 @@ The package provides extensive facilities, both for constructing headers
and footers, and for controlling their use (for example, at times when
LaTeX would automatically change the heading style in use).
-This is version 4.4 of fancyhdr.sty and extramarks.sty. They are
+This is version 4.5 of fancyhdr.sty and extramarks.sty. They are
described in the third edition of The LaTeX Companion.
-The distribution package (fancyhdr.zip) consists of the following files:
+The distribution package from CTAN (e.g. fancyhdr.zip)
+consists of the following files:
README This file
fancyhdr.dtx The complete source of the package and documentation
@@ -17,23 +18,22 @@ fancyhdr.pdf PDF of the documentation
After processing (by tex) of fancyhdr.ins, the following package files will be generated:
-fancyhdr.sty v4.4 2024/11/20 the LaTeX package
-extramarks.sty v4.4 2024/11/20 a package for additional marks
+fancyhdr.sty v4.5 2024/12/09 the LaTeX package
+extramarks.sty v4.5 2024/12/09 a package for additional marks
fancyheadings.sty v4.1 2022/11/09 this loads fancyhdr with a warning message
-If you have a user distribution package (fancyhdr-dist-4.4.zip),
+If you have a user distribution package from github (fancyhdr-dist-4.5.zip),
then you don't have to do this processing.
-If you have a source distribution fancyhdr-4.4.zip, it will also contain
-the .sty files, but not the .pdf file.
-To recreate the .sty files run
-tex fancyhdr.ins
-To create fancyhdr.pdf, either just run the 'make' command, or
+If you have a source distribution from github (fancyhdr-4.5.zip),
+it will also contain the .sty files, but not the .pdf file.
+To create fancyhdr.pdf, either just run the 'make' command, or:
latexmk fancyhdr.dtx
+To recreate the .sty files run:
+tex fancyhdr.ins
-Fancyhdr is a replacement for the old LaTeX2 package fancyheadings. That
-one should not be used anymore. The package fancyheadings included here
-just loads fancyhdr with a warning message.
+The package fancyheadings included here is an ancient version of fancyhdr.
+It should not be used anymore. It just loads fancyhdr with a warning message.
The documentation (fancyhdr.dtx/fancyhdr.pdf) describes both
fancyhdr.sty and extramarks.sty.
diff --git a/macros/latex/contrib/fancyhdr/fancyhdr.dtx b/macros/latex/contrib/fancyhdr/fancyhdr.dtx
index 64810dd5cd..0443afba18 100644
--- a/macros/latex/contrib/fancyhdr/fancyhdr.dtx
+++ b/macros/latex/contrib/fancyhdr/fancyhdr.dtx
@@ -26,7 +26,7 @@
%<fancyhdr>\ProvidesPackage{fancyhdr}%
%<fancyheadings>\ProvidesPackage{fancyheadings}
%<extramarks>\ProvidesPackage{extramarks}
-%<fancyhdr|extramarks> [2024/11/20 v4.4
+%<fancyhdr|extramarks> [2024/12/09 v4.5
%<fancyhdr> Extensive control of page headers and footers]%
%<fancyheadings> [2022/11/09 v4.1
%<fancyheadings> Legacy package to call fancyhdr]
@@ -77,6 +77,7 @@
\renewcommand{\textfraction}{0.05}
\setlength{\emergencystretch}{4em}
\addtolength{\textheight}{-0.5in} % make it print better on US letter paper
+\setlength\IndexMin{4cm}
\makeatletter
\renewcommand\l@section {\@dottedtocline{1}{1.5em}{2.3em}}
\makeatother
@@ -205,6 +206,16 @@
% \DoNotIndex{\@ne}
% \DoNotIndex{\advance,\begingroup,\catcode,\closein}
% \DoNotIndex{\closeout,\day,\def,\edef,\else,\empty,\@empty,\endgroup}
+% \ProvideDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl}%
+% \newcommand\makedate{}
+% \def\makedate#1/#2/#3/{%
+% \date{%
+% \ifcase #2\or
+% Jan\or Feb\or March\or Apr\or May\or June\or
+% July\or Aug\or Sept\or Oct\or Nov\or Dec\fi~\number #3,
+% #1}%
+% }
+% \expandafter\makedate\filedate/
%
% \title{The \Package{fancyhdr} and \Package{extramarks}
% packages\\{\normalsize version \fileversion.}}
@@ -2210,6 +2221,95 @@
% }
% \end{verbatim}
%
+% \subsection{\Package{Fancyhdr} hooks}
+% \label{sec:hooks}
+%
+% \LaTeX{} has a system of \emph{hooks}\index{hooks} since the 2020/10/01 release.
+% This allows packages and classes (and other \LaTeX{} software) to
+% define points in its code where other \LaTeX{} code can insert a piece
+% of code. For more details, see \emph{The \LaTeX{} Companion, Third
+% Edition}, part I, pp. 671ff or the documentation that can be read
+% with the command `\texttt{texdoc lthooks-doc}'.
+%
+% \Package{Fancyhdr} version 4.5 or later defines a number of hooks to be executed at the
+% beginning or end of the header and/or footer, if your \LaTeX{} version
+% supports it. The hooks are defined in
+% mirrored pairs, which means the second one of the pair is executed in the
+% reverse order compared to the first one (see the hooks documentation).
+% \begin{description}
+% \item[\texttt{fancyhdr/before}, \texttt{fancyhdr/after}]
+% \TTindex{fancyhdr/before}\TTindex{fancyhdr/after}
+% these are executed before the
+% header or footer is constructed, and after the header or footer is
+% finished, respectively.
+% \item[\texttt{fancyhdr/head/begin}, \texttt{fancyhdr/head/end}]
+% \TTindex{fancyhdr/head/begin}\TTindex{fancyhdr/head/end}
+% these are run at the
+% beginning and the end of the header construction, respectively
+% \item[\texttt{fancyhdr/foot/begin}, \texttt{fancyhdr/foot/end}]
+% \TTindex{fancyhdr/foot/begin}\TTindex{fancyhdr/foot/end}
+% these are run at the
+% beginning and the end of the footer construction, respectively
+% \end{description}
+%
+% The interaction of the hooks and the \cs{fancyhfinit} code described in
+% the previous section with the construction of the
+% header and footer is as follows: for the header construction
+% \begin{itemize}
+% \item first the \texttt{fancyhdr/before} hooks are run, then the
+% \texttt{fancyhdr/head/begin} hooks, then the \cs{fancyheadinit} code.
+% Then the header is constructed. Finally, the
+% \texttt{fancyhdr/head/end} hooks are run followed by the
+% \texttt{fancyhdr/after} hooks.
+% \item For the construction of the footer, it is similar, just replace
+% \texttt{head} by \texttt{foot}.
+% \item Note that between the construction of the header and the footer,
+% \LaTeX{} builds the body of the page. This process consists mainly of
+% putting boxes next to each other, and \Package{fancyhdr} does not
+% interfere with this, and neither should the hook code.
+% \end{itemize}
+%
+% The reason there are separate \texttt{fancyhdr/before} and
+% \texttt{fancyhdr/after} hooks and the \texttt{head} and \texttt{foot}
+% hooks, is
+% \begin{enumerate}
+% \item If you want to use the same hooks for headers and footers, use
+% the \texttt{fancyhdr/before} and \texttt{fancyhdr/after} hooks. This
+% prevents you to have to specify the same hook code twice.
+% \item If you want to have different hooks for the header and footer,
+% use the \texttt{head} and \texttt{foot} hooks.
+% \end{enumerate}
+% The \texttt{after} and \texttt{end} hooks are meant to undo changes
+% made in the \texttt{before} and \texttt{begin} hooks, respectively. If
+% the hooks make only local changes (which is recommended), the \TeX{}
+% grouping mechanism will take care of this, so you can leave out the
+% \texttt{after} and \texttt{end} hooks in that case.
+%
+% At first sight it may seem that the \cs{fancyhfinit} mechanism is no
+% longer useful with the introduction of hooks. One reason it exists is
+% that hooks were not available at the time it was introduced, and for
+% compatibility reasons it remains. However, there are some significant
+% differences between the \cs{fancyhfinit} mechanism and the hook
+% mechanism, so you should choose carefully which one to use.
+% \begin{itemize}
+% \item Hooks are global, but the \cs{fancyhfinit} declarations are
+% local. That is, if \cs{fancyhfinit} (or its siblings
+% \texttt{fancyheadinit} or \cs{fancyfootinit}) are given in a \TeX{}
+% group, they last until the end of the group. They will disappear
+% outside of the group, or be reset to the value they had outside of the group.
+% \item \cs{fancyhfinit} is meant to be used by the user who writes the
+% document, i.e. it is meant for the current document.
+% \cs{fancyhfinit} \emph{should not be used by package or class writers
+% and similar. They should use the hooks mechanism.} On the other hand
+% the user can also use hooks in the document instead of, or in addition
+% to the \cs{fancyhfinit} mechanism.
+% \item Hooks can be added multiple times, but the \cs{fancyhfinit} code
+% can only be given once (i.e. a new one overwrites the previous one).
+% \item \cs{fancyhfinit} has no corresponding \texttt{exit} function, so
+% if you need some code to be executed after the construction of the header or
+% footer, you have to use hooks.
+% \end{itemize}
+%
% \subsection{Changing the page style of the next page}
%
% If you want the change of the page style to take effect
@@ -3088,6 +3188,16 @@
% (\texttt{2e-left}) and \cs{rightmark} (\texttt{2e-right} and
% \texttt{2e-right-nonempty}) in \Package{extramarks.sty}.
% \end{itemize}
+% \item Version 4.5, Nov 21-Dec 5, 2024
+% \begin{itemize}
+% \item \Package{extramarks}: Don't redefine \cs{leftmark} and \cs{rightmark} in
+% \LaTeX{} kernel 2025-06-01 and later.
+% \item \Package{fancyhdr}: use a better method to disable paragraph
+% hooks than the v4.3 code.
+% \item \Package{extramarks}: add commands \cs{extramarksleft} and
+% \cs{extramarksright}.
+% \item \pkg{fancyhdr}: added hooks.
+% \end{itemize}
% \end{itemize}
%
%
@@ -4028,24 +4138,47 @@
% Save the standard definitions of \cs{raggedleft}, \cs{raggedright},
% \cs{centering} and \cs{everypar} so that we can reset them when we are
% typesetting the headers and footers. Some packages change these to
-% incompatible values.
+% incompatible values.\\
+% We also disable paragraph hooks, so that no paragraph hooks will
+% intrude in \Package{fancyhdr} code. \textbf{NOTE: This is a hack, and
+% should be replaced by cleaner code as soon as the \LaTeX{} kernel
+% provides the necessary commands.}
+% \changes{fancyhdr v4.5}{2024/11/29}{We use a less fragile way to
+% disable paragraph hooks, thereby partially reverting the solution in
+% version v4.3 and v4.3.1. This is less intruding in the hook system,
+% and especially it doesn't affect kernel hooks, only user provided
+% ones. We check the kernel version to see if it support paragraph hooks.}
% \begin{macrocode}
\let\f@nch@raggedleft\raggedleft
\let\f@nch@raggedright\raggedright
\let\f@nch@centering\centering
+\let\f@nch@everypar\everypar
\ifdefined\ExplSyntaxOn
\ExplSyntaxOn
- \let\f@nch@everypar\tex_everypar:D
- \newcommand\f@nch@resetpar{%
- \f@nch@everypar{}%
- \cs_set_eq:NN \everypar\tex_everypar:D
- \cs_set_eq:NN \par \tex_par:D
- \cs_set_eq:NN \@@par \tex_par:D
- \cs_set_eq:NN \endgraf \tex_par:D
+ \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+ \IfFormatAtLeastTF{2021-06-01}{
+% \end{macrocode}
+% \begin{macro}{\f@nch@clear@par@hook:n}
+% Clear a (paragraph) hook locally.
+% We don't need to restore as this will be done by the \TeX{} grouping.
+% \begin{macrocode}
+ \cs_new:Npn \f@nch@clear@par@hook:n #1{
+ \tl_clear:c {__hook~#1}
+ }
+ \newcommand\f@nch@resetpar{
+ \f@nch@everypar{}
+ \f@nch@clear@par@hook:n{para/before}
+ \f@nch@clear@par@hook:n{para/begin}
+ \f@nch@clear@par@hook:n{para/end}
+ \f@nch@clear@par@hook:n{para/after}
+ }
+ }{
+ \newcommand\f@nch@resetpar{
+ \f@nch@everypar{}
}
+}
\ExplSyntaxOff
\else
- \let\f@nch@everypar\everypar
\newcommand\f@nch@resetpar{%
\f@nch@everypar{}%
}
@@ -4055,6 +4188,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\f@nch@noUppercase}
% We want \cs{nouppercase} to work with the various evolutionary stages of
@@ -4229,6 +4363,20 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{hookdecl}{fancyhdr/before, fancyhdr/after, fancyhdr/head/begin,
+% fancyhdr/head/end, fancyhdr/foot/begin, fancyhdr/foot/end}
+% \changes{fancyhdr v4.5}{2024/12/05}{Hooks added}
+% Here we define the \Package{fancyhdr} hooks. It will be conditional on
+% the presence of hook support in the \LaTeX{} kernel.
+% \begin{macrocode}
+\ifdefined\NewMirroredHookPair
+ \NewMirroredHookPair{fancyhdr/before}{fancyhdr/after}
+ \NewMirroredHookPair{fancyhdr/head/begin}{fancyhdr/head/end}
+ \NewMirroredHookPair{fancyhdr/foot/begin}{fancyhdr/foot/end}
+\fi
+% \end{macrocode}
+% \end{hookdecl}
+%
% \begin{macro}{\f@nch@vbox}
% Make a \cs{vbox} with the header or footer. Check whether there is
% enough space and give a warning if not.
@@ -4295,6 +4443,7 @@
% The \cs{leavevmode} prevents a bug when a field starts with a
% \cs{color} command. The \cs{ignorespaces} skips initial spaces in
% the parameter, as is usual in a \cs{parbox}, for backwards compatibility.}
+% \changes{fancyhdr v4.5}{2024/12/05}{Hooks added}
% Put together a header or footer given the left, center and right
% text, fillers at left and right and a rule. The \cs{xlap} commands put
% the text into an hbox of zero size, so overlapping text does not
@@ -4309,13 +4458,23 @@
% 4. \cs{f@nch@orh}, \cs{f@nch@erh}, \cs{f@nch@orf} or \cs{f@nch@erf}.
% This is the right component. \\
% 5. RIGHTSIDE BEARING. This is always \cs{relax} or \cs{hss}
-% (after expansion).
+% (after expansion).\\
% Before constructing the header or footer, the environment is reset to
-% a known state, and then the corresponding initialisation code as given
-% in \cs{fancyheadinit} or \cs{fancyfootinit}, respectively, is run.
+% a known state, the appropriate hooks (\texttt{fancyhdr/before} and
+% \TTindex{fancyhdr/before}
+% \TTindex{fancyhdr/head/begin}\TTindex{fancyhdr/foot/begin}
+% \texttt{fancyhdr/head/begin} or \texttt{fancyhdr/foot/begin}) are
+% executed, and then the corresponding initialisation code as given in
+% \cs{fancyheadinit} or \cs{fancyfootinit}, respectively, is run.\\
+% After constructing the header or footer, the hooks for the end
+% (\texttt{fancyhdr/head/end} or \texttt{fancyhdr/foot/end} and
+% \TTindex{fancyhdr/head/end}\TTindex{fancyhdr/foot/end}
+% \TTindex{fancyhdr/after}
+% \texttt{fancyhdr/after}) are run.
% \begin{macrocode}
\newcommand\f@nch@head[5]{%
\f@nch@reset
+ \ifdefined\UseHook\UseHook{fancyhdr/before}\UseHook{fancyhdr/head/begin}\fi
\f@nch@headinit\relax
#1%
\hbox to\headwidth{%
@@ -4332,6 +4491,7 @@
}%
}%
#5%
+ \ifdefined\UseHook\UseHook{fancyhdr/head/end}\UseHook{fancyhdr/after}\fi
}
% \end{macrocode}
%
@@ -4349,6 +4509,7 @@
% The \cs{leavevmode} prevents a bug when a field starts with a
% \cs{color} command. The \cs{ignorespaces} skips initial spaces in
% the parameter, as is usual in a \cs{parbox}, for backwards compatibility.}
+% \changes{fancyhdr v4.5}{2024/12/05}{Hooks added}
% We put the \cs{footrule} in a \cs{vbox} to accommodate for flexible
% footrules (e.g.\ using \cs{hrulefill}), so that the \cs{headwidth} will
% be used as the line width. But to preserve the vertical spacing we
@@ -4357,6 +4518,7 @@
% \begin{macrocode}
\newcommand\f@nch@foot[5]{%
\f@nch@reset
+ \ifdefined\UseHook\UseHook{fancyhdr/before}\UseHook{fancyhdr/foot/begin}\fi
\f@nch@footinit\relax
#1%
\hbox to\headwidth{%
@@ -4373,6 +4535,7 @@
}%
}%
#5%
+ \ifdefined\UseHook\UseHook{fancyhdr/foot/end}\UseHook{fancyhdr/after}\fi
}
% \end{macrocode}
% \end{macro}
@@ -4886,7 +5049,9 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
-
+% \changes{extramarks v4.5}{2024/11/28}{Don't redefine \cs{leftmark}
+% and \cs{rightmark} in \LaTeX{} kernel 2025-06-01 and later.}
+%
% \begin{macro}{\leftmark}
% \begin{macro}{\rightmark}
% \begin{macro}{\firstleftmark}
@@ -4894,11 +5059,19 @@
% \begin{macro}{\firstrightmark}
% \begin{macro}{\lastleftmark}
% The standard marks + the new ones (based on the standard marks info).
+% We provide \cs{IfFormatAtLeastTF} in case we have a rather old \LaTeX{}
+% format (in which case the test will always be false).
+% If the \LaTeX{} format is 2025-06-01 or later, \cs{leftmark} and
+% \cs{rightmark} have definitions based upon the new marks, so we should
+% not redefine these in \Package{extramarks}.
% \begin{macrocode}
-\def\leftmark{\expandafter\@leftmark
+\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+\IfFormatAtLeastTF{2025-06-01}{}{%
+ \def\leftmark{\expandafter\@leftmark
\botmark\@empty\@empty\@empty\@empty}
-\def\rightmark{\expandafter\@rightmark
+ \def\rightmark{\expandafter\@rightmark
\firstmark\@empty\@empty\@empty\@empty}
+}
\def\firstleftmark{\expandafter\@leftmark
\firstmark\@empty\@empty\@empty\@empty}
\def\lastrightmark{\expandafter\@rightmark
@@ -4942,6 +5115,54 @@
\unrestored@protected@xdef\@themark{\the\@temptokena{#5}{#6}}}
% \end{macrocode}
% \end{macro}
+% \changes{extramarks v4.5}{2024/11/30}{Add commands
+% \cs{extramarksleft} and \cs{extramarksright} for compatibility with
+% \Package{extramarks} version 5.}
+% \begin{macro}{\extramarksleft}
+% This command is used to define the left extra mark.
+% As this is not independent from the other marks, it is not perfect.
+% \begin{macrocode}
+\def\extramarksleft#1{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markextraleft\@themark{#1}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@extramarksleft}
+% Internal macro to store the left mark in the marks storage.\\
+% Note: Put \texttt{\#1\#2} and \texttt{\#4}in toks registers.
+% \begin{macrocode}
+\def\@markextraleft#1#2#3#4#5{\@temptokena {{#1}{#2}}%
+ \@temptokenb {{#4}}%
+ \unrestored@protected@xdef\@themark{\the\@temptokena{#5}\the\@temptokenb}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\extramarksright}
+% This command is used to define the right extra mark.
+% As this is not independent from the other marks, it is not perfect.
+% \begin{macrocode}
+\def\extramarksright#1{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markextraright\@themark{#1}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@extramarksright}
+% Internal macro to store the right mark in the marks storage.\\
+% Note: Put \texttt{\#1\#2\#3} in toks register.
+% \begin{macrocode}
+\def\@markextraright#1#2#3#4#5{\@temptokena {{#1}{#2}{#3}}%
+ \unrestored@protected@xdef\@themark{\the\@temptokena{#5}}}
+% \end{macrocode}
+% \end{macro}
%
% \begin{macro}{\firstleftxmark}
% \begin{macro}{\firstrightxmark}
diff --git a/macros/latex/contrib/fancyhdr/fancyhdr.pdf b/macros/latex/contrib/fancyhdr/fancyhdr.pdf
index bd930be8a6..2fce5d4334 100644
--- a/macros/latex/contrib/fancyhdr/fancyhdr.pdf
+++ b/macros/latex/contrib/fancyhdr/fancyhdr.pdf
Binary files differ
diff --git a/macros/latex/contrib/fontscale/CHANGELOG.md b/macros/latex/contrib/fontscale/CHANGELOG.md
index 35aa85d141..5fbaa9e247 100644
--- a/macros/latex/contrib/fontscale/CHANGELOG.md
+++ b/macros/latex/contrib/fontscale/CHANGELOG.md
@@ -7,6 +7,12 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v3.0.3] - 2024-12-09
+
+### Changed
+- The documentation now displays code in a light-gray background using the
+ `tcolorbox` package. This subtle contrast enhances readability.
+
## [v3.0.2] - 2024-11-25
### Changed
diff --git a/macros/latex/contrib/fontscale/beery.cls b/macros/latex/contrib/fontscale/beery.cls
index 9656a8b93d..51bad377c0 100644
--- a/macros/latex/contrib/fontscale/beery.cls
+++ b/macros/latex/contrib/fontscale/beery.cls
@@ -4,7 +4,7 @@
\NeedsTeXFormat{LaTeX2e}[2023-11-01]
\ProvidesExplClass
{beery}
- {2024-11-25}
+ {2024-12-09}
{}
{}
@@ -21,6 +21,18 @@
\RequirePackage { csquotes }
\RequirePackage { lmodern }
+\RequirePackage { tcolorbox }
+\tcbuselibrary { breakable }
+\NewTColorBox { mydisplaycode } { }
+ {
+ size = minimal
+ , left = 2pt
+ , right = 2pt
+ , top = 2pt
+ , bottom = 2pt
+ , breakable
+ }
+
% CUSTOM MACROS
\tl_const:Nn \c_beery_alphabet_tl { abcdefghijklmnopqrstuvwxyz }
diff --git a/macros/latex/contrib/fontscale/fontscale-table-classic.tex b/macros/latex/contrib/fontscale/fontscale-table-classic.tex
index d0d55951a4..2d3d344926 100644
--- a/macros/latex/contrib/fontscale/fontscale-table-classic.tex
+++ b/macros/latex/contrib/fontscale/fontscale-table-classic.tex
@@ -1,4 +1,4 @@
-\ProvidesFile{fontscale-table-classic.tex}[2024-11-25]
+\ProvidesFile{fontscale-table-classic.tex}[2024-12-09]
\begin{table}
\centering
diff --git a/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex b/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex
index 130f467668..13797a3863 100644
--- a/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex
+++ b/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex
@@ -1,4 +1,4 @@
-\ProvidesFile{fontscale-table-font-steps.tex}[2024-11-25]
+\ProvidesFile{fontscale-table-font-steps.tex}[2024-12-09]
\begin{table}
\centering
diff --git a/macros/latex/contrib/fontscale/fontscale-table-musical.tex b/macros/latex/contrib/fontscale/fontscale-table-musical.tex
index c8717a5182..999212da86 100644
--- a/macros/latex/contrib/fontscale/fontscale-table-musical.tex
+++ b/macros/latex/contrib/fontscale/fontscale-table-musical.tex
@@ -1,4 +1,4 @@
-\ProvidesFile{fontscale-table-musical.tex}[2024-11-25]
+\ProvidesFile{fontscale-table-musical.tex}[2024-12-09]
\begin{table}
\centering
diff --git a/macros/latex/contrib/fontscale/fontscale.pdf b/macros/latex/contrib/fontscale/fontscale.pdf
index 6ac6bebaed..16e0650fc5 100644
--- a/macros/latex/contrib/fontscale/fontscale.pdf
+++ b/macros/latex/contrib/fontscale/fontscale.pdf
Binary files differ
diff --git a/macros/latex/contrib/fontscale/fontscale.sty b/macros/latex/contrib/fontscale/fontscale.sty
index 25639a6e31..12764b579f 100644
--- a/macros/latex/contrib/fontscale/fontscale.sty
+++ b/macros/latex/contrib/fontscale/fontscale.sty
@@ -8,8 +8,8 @@
\NeedsTeXFormat{LaTeX2e}[2023-11-01]
\ProvidesExplPackage
{fontscale}
- {2024-11-25}
- {3.0.2}
+ {2024-12-09}
+ {3.0.3}
{A flexible interface for setting font sizes}
% l3kernel version 2023-10-10 added many 'e'-variants.
@@ -296,7 +296,7 @@
% Similar to \__fontscale_set_font_size:nn, except that it sets the font
% baselineskip equal to the new font size times the baselineskip-size-ratio.
\cs_new_protected:Npn \__fontscale_set_font_size:n #1
- { \use:e { \__fontscale_set_font_size_aux:n { \dim_to_decimal:n {#1} } } }
+ { \exp_args:Ne \__fontscale_set_font_size_aux:n { \dim_to_decimal:n {#1} } }
\cs_new_protected:Npn \__fontscale_set_font_size_aux:n #1
{
\dim_compare:nNnTF { #1 pt } > \c_zero_dim
@@ -385,13 +385,19 @@
\dim_new:N \l__fontscale_musical_base_dim
\int_new:N \l__fontscale_musical_notes_int
-\cs_new_protected:Npn \__fontscale_keys_code_name:n #1
+\cs_new_protected:Npn \__fontscale_keys_code_name:
{
- \tl_if_in:nnTF {#1} { / }
- { \__fontscale_keys_code_name_split:ww #1 \q_stop }
- { \tl_set:cn { l__fontscale_ \l_keys_key_str _size_tl } {#1} }
+ \tl_if_in:NnTF \l_keys_value_tl { / }
+ {
+ \exp_last_unbraced:NV \__fontscale_keys_code_name:ww \l_keys_value_tl
+ \q_stop
+ }
+ {
+ \tl_set_eq:cN { l__fontscale_ \l_keys_key_str _size_tl }
+ \l_keys_value_tl
+ }
}
-\cs_new_protected:Npn \__fontscale_keys_code_name_split:ww #1 / #2 \q_stop
+\cs_new_protected:Npn \__fontscale_keys_code_name:ww #1 / #2 \q_stop
{
\tl_set:cn { l__fontscale_ \l_keys_key_str _size_tl } {#1}
\tl_set:cn { l__fontscale_ \l_keys_key_str _baselineskip_tl } {#2}
@@ -542,34 +548,34 @@
}
\keys_define:nn { fontscale }
{
- tiny .code:n = \__fontscale_keys_code_name:n {#1}
+ tiny .code:n = \__fontscale_keys_code_name:
, tiny .value_required:n = true
- , scriptsize .code:n = \__fontscale_keys_code_name:n {#1}
+ , scriptsize .code:n = \__fontscale_keys_code_name:
, scriptsize .value_required:n = true
- , footnotesize .code:n = \__fontscale_keys_code_name:n {#1}
+ , footnotesize .code:n = \__fontscale_keys_code_name:
, footnotesize .value_required:n = true
- , small .code:n = \__fontscale_keys_code_name:n {#1}
+ , small .code:n = \__fontscale_keys_code_name:
, small .value_required:n = true
- , normalsize .code:n = \__fontscale_keys_code_name:n {#1}
+ , normalsize .code:n = \__fontscale_keys_code_name:
, normalsize .value_required:n = true
- , large .code:n = \__fontscale_keys_code_name:n {#1}
+ , large .code:n = \__fontscale_keys_code_name:
, large .value_required:n = true
- , Large .code:n = \__fontscale_keys_code_name:n {#1}
+ , Large .code:n = \__fontscale_keys_code_name:
, Large .value_required:n = true
- , LARGE .code:n = \__fontscale_keys_code_name:n {#1}
+ , LARGE .code:n = \__fontscale_keys_code_name:
, LARGE .value_required:n = true
- , huge .code:n = \__fontscale_keys_code_name:n {#1}
+ , huge .code:n = \__fontscale_keys_code_name:
, huge .value_required:n = true
- , Huge .code:n = \__fontscale_keys_code_name:n {#1}
+ , Huge .code:n = \__fontscale_keys_code_name:
, Huge .value_required:n = true
}
diff --git a/macros/latex/contrib/fontscale/fontscale.tex b/macros/latex/contrib/fontscale/fontscale.tex
index a9d8e7233d..0e806e564f 100644
--- a/macros/latex/contrib/fontscale/fontscale.tex
+++ b/macros/latex/contrib/fontscale/fontscale.tex
@@ -14,7 +14,7 @@ A flexible interface for setting font sizes
Oliver Beery
-Version 3.0.2\quad{}25 November 2024
+Version 3.0.3\quad{}9 December 2024
\section{Introduction}
@@ -36,7 +36,7 @@ Version 3.0.2\quad{}25 November 2024
\item
Provides additional font size commands, including setting the font size by setting the font step or font scale and setting the font size relative to the current font size using more powerful tools than the \pkg{scalefnt} and \pkg{relsize} packages (\S\ref{subsec:fontsize}).
\item
- For \LaTeX3 programmers, this package defines public \pkg{expl3} variables that store the font step, font scale, font size, and font baselineskip of each font size command from \cs{tiny} to \cs{Huge} and the current font step, font scale, font size, and font baselineskip (\S\ref{subsec:publicvariables}).
+ For \LaTeX3 programmers, this package defines public \pkg{expl3} variables that store the font step, font scale, font size, and font baselineskip of each font size command from \cs{tiny} to \cs{Huge} and the current font step, font scale, font size, and font baselineskip (\S\ref{subsec:publicexpl3}).
\end{itemize}
\subsection{Loading the package}
@@ -114,22 +114,24 @@ Set the package keys using \cs{fontscalesetup}\marg{key\-/value list} (\S\ref{su
The font sizes of the font size commands from \cs{tiny} to \cs{Huge} are initially set by the key \Key{typographic-scale}.
-\Key{typographic-scale}
- [%
- classic-10pt$\,\vert\,$\allowbreak
- classic-11pt$\,\vert\,$\allowbreak
- classic-12pt$\,\vert\,$\allowbreak\hspace*{1.5em}%
- musical%
- ]
- [classic-10pt]
-\newline
-\Key{classic-10pt}
-\newline
-\Key{classic-11pt}
-\newline
-\Key{classic-12pt}
-\nopagebreak\newline
-\Key{musical}
+\begin{mydisplaycode}
+ \Key{typographic-scale}
+ [%
+ classic-10pt$\,\vert\,$\allowbreak
+ classic-11pt$\,\vert\,$\allowbreak
+ classic-12pt$\,\vert\,$\allowbreak\hspace*{1.5em}%
+ musical%
+ ]
+ [classic-10pt]
+ \newline
+ \Key{classic-10pt}
+ \newline
+ \Key{classic-11pt}
+ \newline
+ \Key{classic-12pt}
+ \nopagebreak\newline
+ \Key{musical}
+\end{mydisplaycode}
The value of the key \Key{typographic-scale} must be \Value{classic-10pt}, \Value{classic-11pt}, \Value{classic-12pt}, or \Value{musical}.
The initial value is \Value{classic-10pt}.
@@ -148,11 +150,13 @@ Table~\ref{table:classic} displays the font size of each font size command when
\input{./fontscale-table-classic.tex}
-\Key{musical/base}[\meta{dimen expression}][10pt]%
-\nopagebreak\newline
-\Key{musical/ratio}[\meta{floating point expression}][2]%
-\nopagebreak\newline
-\Key{musical/notes}[\meta{integer expression}][5]
+\begin{mydisplaycode}
+ \Key{musical/base}[\meta{dimen expression}][10pt]%
+ \nopagebreak\newline
+ \Key{musical/ratio}[\meta{floating point expression}][2]%
+ \nopagebreak\newline
+ \Key{musical/notes}[\meta{integer expression}][5]
+\end{mydisplaycode}
The key \Key{typographic-scale}[musical] sets the font size of each font size command from \cs{tiny} to \cs{Huge} using a musical typographic scale.
The font sizes are calculated using the formula:%
@@ -189,8 +193,9 @@ Table~\ref{table:musical} displays the font size of each font size command when
The font baselineskips of the font size commands from \cs{tiny} to \cs{Huge} are initially set by the key \Key{baselineskip-size-ratio}.
-\Key{baselineskip-size-ratio}[\meta{floating point expression}][1.2]
-\KeepNextPar*
+\begin{mydisplaycode}
+ \Key{baselineskip-size-ratio}[\meta{floating point expression}][1.2]
+\end{mydisplaycode}
Sets the font baselineskip of each font size command from \cs{tiny} to \cs{Huge} equal to its font size \texttimes{} the result of computing the \meta{floating point expression}.
Sets the font baselineskip set by \cs{SetFontStep}, \cs{SetFontScale}, and \cs{SetFontSize} equal to the new font size \texttimes{} the result of computing the \meta{floating point expression} (\S\ref{subsec:fontsize}).
@@ -204,29 +209,35 @@ This subsection documents keys for directly setting the font scales, font sizes,
The user should take care to ensure that the lengths of the font sizes remain correctly ordered from \cs{tiny} to \cs{Huge}.
This is important for typographic and syntactic consistency.
If the font sizes are in the wrong order, \cs{fontscalesetup} will issue a warning and some package features may not work correctly.
+\pagebreak%manual
-\Key{\meta{font size command}/scale}[\meta{floating point expression}][\meta{not set}]
-\KeepNextPar*
+\begin{mydisplaycode}
+ \Key{\meta{font size command}/scale}[\meta{floating point expression}][\meta{not set}]
+\end{mydisplaycode}
Sets the font size of \meta{font size command} by setting its font scale to the result of computing the \meta{floating point expression}.
Overwrites the font size set by the key \Key{typographic-scale}.
The key \Key{normalsize\slash{}scale} is not defined.
-\Key{\meta{font size command}/size}[\meta{dimen expression}][\meta{not set}]
-\KeepNextPar*
+\begin{mydisplaycode}
+ \Key{\meta{font size command}/size}[\meta{dimen expression}][\meta{not set}]
+\end{mydisplaycode}
Sets the font size of \meta{font size command} to the value of \meta{dimen expression}, appending a default unit of \unit{pt}.
Overwrites the font size set by the keys \Key{typographic-scale} and \Key{\meta{font size command}\slash{}scale}.
-\Key{\meta{font size command}/baselineskip}[\meta{skip expression}][\meta{not set}]
-\KeepNextPar*
+\begin{mydisplaycode}
+ \Key{\meta{font size command}/baselineskip}[\meta{skip expression}][\meta{not set}]
+\end{mydisplaycode}
Sets the font baselineskip of \meta{font size command} to the value of \meta{skip expression}, appending a default unit of \unit{pt}.
Overwrites the font baselineskip set by the key \Key{baselineskip-size-ratio}.
-\Key{\meta{font size command}}[\meta{dimen expression}]
-\nopagebreak\newline
-\Key{\meta{font size command}}[\meta{dimen expression}/\meta{skip expression}]
+\begin{mydisplaycode}
+ \Key{\meta{font size command}}[\meta{dimen expression}]
+ \nopagebreak\newline
+ \Key{\meta{font size command}}[\meta{dimen expression}/\meta{skip expression}]
+\end{mydisplaycode}
Sets the keys \Key{\meta{font size command}\slash{}size}[\meta{dimen expression}] or \Key{\meta{font size command}\slash{}baselineskip}[\meta{skip expression}] in a condensed format.%
\footnote
@@ -245,8 +256,9 @@ This section documents the commands provided by the \pkg{fontscale} package.
\subsection{Setting the keys}
\label{subsec:fontscalesetup}
-\cs{fontscalesetup} \sarg{} \marg{key-value list}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{fontscalesetup} \sarg{} \marg{key-value list}
+\end{mydisplaycode}
Sets and processes the \pkg{fontscale} package keys (\S\ref{sec:keys}) in \meta{key\-/value list} and then uses \cs{normalsize}.
Adding the optional star first resets all the \pkg{fontscale} package keys to their initial values.
@@ -259,17 +271,19 @@ Does nothing, except issue a warning, if used in math mode.
\subsection{Expandable font size parameters}
\label{subsec:expandable}
-\cs{CurrentFontStep}
-\nopagebreak\newline
-\cs{CurrentFontScale}
-\newline
-\cs{CurrentFontSize}
-\nopagebreak\newline
-\cs{CurrentFontBaselineskip}
+\begin{mydisplaycode}
+ \cs{CurrentFontStep}
+ \nopagebreak\newline
+ \cs{CurrentFontScale}
+ \newline
+ \cs{CurrentFontSize}
+ \nopagebreak\newline
+ \cs{CurrentFontBaselineskip}
+\end{mydisplaycode}
This package provides expandable commands that expand to the current font step, font scale, font size, or font baselineskip.
They can be used for printing or within calculations.
-These commands do not rely on the current definition of the kernel commands \cs{f@size} and \cs{f@baselineskip}; instead, they rely on public \pkg{expl3} variables that are set in the \texttt{selectfont} hook (\S\ref{subsec:publicvariables}).
+These commands do not rely on the current definition of the kernel commands \cs{f@size} and \cs{f@baselineskip}; instead, they rely on public \pkg{expl3} variables that are set in the \texttt{selectfont} hook (\S\ref{subsec:publicexpl3}).
For clarity, \cs{CurrentFontStep} will be explained in detail.
If the current font size equals the font size of any font size command from \cs{tiny} to \cs{Huge}, then \cs{CurrentFontStep} expands to the font step of that font size command (Table~\ref{table:fontsteps}).
@@ -282,8 +296,9 @@ Otherwise, the current font step is undefined and \cs{CurrentFontStep} expands t
This package provides additional font size commands for use only in special cases.
Users should prefer the standard \LaTeX{} font size commands from \cs{tiny} to \cs{Huge} for typographic and syntactic consistency.
-\cs{SetFontStep} \sarg{} \marg{floating point expression}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{SetFontStep} \sarg{} \marg{floating point expression}
+\end{mydisplaycode}
Sets the font size by setting the font step to the result of computing the \meta{floating point expression}.
Adding the optional star instead sets the font step equal to the current font step + the result of computing the \meta{floating point expression}.
@@ -302,31 +317,35 @@ Sets the font baselineskip equal to the new font size \texttimes{} the value of
Does nothing, except issue a warning, if used in math mode.
\end{itemize}
-\cs{SetFontScale} \sarg{} \marg{floating point expression}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{SetFontScale} \sarg{} \marg{floating point expression}
+\end{mydisplaycode}
Sets the font size by setting the font scale to the result of computing the \meta{floating point expression}.
Adding the optional star instead sets the font scale equal to the current font scale + the result of computing the \meta{floating point expression}.
Sets the font baselineskip equal to the new font size \texttimes{} the value of the key \Key{baselineskip-size-ratio}.
Does nothing, except issue a warning, if used in math mode.
-\cs{SetFontSize} \sarg{} \marg{dimen expression}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{SetFontSize} \sarg{} \marg{dimen expression}
+\end{mydisplaycode}
Sets the font size to the value of \meta{dimen expression}, appending a default unit of \unit{pt}.
Adding the optional star instead sets the font size equal to the current font size + the result of \meta{dimen expression}, appending a default unit of \unit{pt}.
Sets the font baselineskip equal to the new font size \texttimes{} the value of the key \Key{baselineskip-size-ratio}.
Does nothing, except issue a warning, if used in math mode.
-\cs{ScaleFont} \marg{floating point expression}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{ScaleFont} \marg{floating point expression}
+\end{mydisplaycode}
Sets the font size equal to the current font size \texttimes{} the result of computing the \meta{floating point expression}.
Sets the font baselineskip equal to the current font baselineskip \texttimes{} the result of computing the \meta{floating point expression}.
Does nothing, except issue a warning, if used in math mode.
-\cs{SetFontSizeBaselineskip} \marg{dimen expression} \marg{skip expression}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{SetFontSizeBaselineskip} \marg{dimen expression} \marg{skip expression}
+\end{mydisplaycode}
Sets the font size to the value of \meta{dimen expression}, appending a default unit of \unit{pt}.
Sets the font baselineskip to the value of \meta{skip expression}, appending a default unit of \unit{pt}.
@@ -335,8 +354,9 @@ Does nothing, except issue a warning, if used in math mode.
\subsection{Setting only the font baselineskip}
\label{subsec:setfontbaselineskip}
-\cs{SetFontBaselineskip} \sarg{} \marg{skip expression}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{SetFontBaselineskip} \sarg{} \marg{skip expression}
+\end{mydisplaycode}
Sets the font baselineskip to the value of \meta{skip expression}, appending a default unit of \unit{pt}.
Adding the optional star instead sets the font baselineskip equal to the current font baselineskip + the result of \meta{skip expression}, appending a default unit of \unit{pt}.
@@ -349,27 +369,32 @@ Does nothing, except issue a warning, if used in math mode.
The commands documented here are intended primarily for testing and debugging.
I have used them often when developing this package so I think users will find them helpful.
-\cs{PrintFontSizeParameters}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{PrintFontSizeParameters}
+\end{mydisplaycode}
Prints the current font size parameters\---the font step, font scale, font size, and font baselineskip.
The current font step will be left blank if it is undefined (as explained for \cs{CurrentFontStep} in \S\ref{subsec:expandable}).
+\pagebreak%manual
-\cs{PrintAllFontSizeParameters}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{PrintAllFontSizeParameters}
+\end{mydisplaycode}
Prints the font step, font scale, font size, and font baselineskip of each font size command from \cs{tiny} to \cs{Huge}.
-\cs{PrintSampleText} \sarg{} \marg{text}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{PrintSampleText} \sarg{} \marg{text}
+\end{mydisplaycode}
Prints \meta{text} in each font size ordered from \cs{tiny} to \cs{Huge} each followed by a paragraph break.
\meta{text} can contain \cs{par} tokens.
Adding the optional star reverses the order of the font sizes.
One useful way of printing sample text is \cs{PrintSampleText}\allowbreak\texttt{\{\cs{PrintFontSizeCommand}:\allowbreak\textvisiblespace\allowbreak\cs{PrintFontSizeParameters}\}}.
-\cs{PrintFontSizeCommand}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{PrintFontSizeCommand}
+\end{mydisplaycode}
Tests if the current font size equals the font size of any font size command from \cs{tiny} to \cs{Huge}.
If so, prints the name of that font size command, including the backslash character.
@@ -392,41 +417,45 @@ This section documents the \pkg{expl3} programming support provided by the \pkg{
\cs{text_purify:n} will correctly remove the formatting commands defined by this package, including the commands documented in \S\ref{subsec:fontscalesetup}, \S\ref{subsec:fontsize}, and \S\ref{subsec:setfontbaselineskip}.
-\subsection{Public functions}
-\label{subsec:publicfunctions}
+\subsection{Public functions and variables}
+\label{subsec:publicexpl3}
This package does not define any public \pkg{expl3} functions.
-\subsection{Public variables}
-\label{subsec:publicvariables}
+This package defines some public \pkg{expl3} variables.
+They are set either by \cs{fontscalesetup} or in the \texttt{selectfont} hook.
+They should never be modified directly.
-\verb|\c_fontscale_|\meta{font size command}\verb|_step_fp|
-\nopagebreak\newline
-\verb|\l_fontscale_|\meta{font size command}\verb|_scale_fp|
-\newline
-\verb|\l_fontscale_|\meta{font size command}\verb|_size_dim|
-\nopagebreak\newline
-\verb|\l_fontscale_|\meta{font size command}\verb|_baselineskip_skip|
+\begin{mydisplaycode}
+ \ttfamily
+ \textbackslash{}c\_fontscale\_\meta{font size command}\_step\_fp
+ \nopagebreak\newline
+ \textbackslash{}l\_fontscale\_\meta{font size command}\_scale\_fp
+ \newline
+ \textbackslash{}l\_fontscale\_\meta{font size command}\_size\_dim
+ \nopagebreak\newline
+ \textbackslash{}l\_fontscale\_\meta{font size command}\_baselineskip\_skip
+\end{mydisplaycode}
Stores the font step, font scale, font size, and font baselineskip of each font size command from \cs{tiny} to \cs{Huge}.
Exception:
\cs{l_fontscale_normalsize_scale_fp} is not defined.
The font scale of \cs{normalsize} is stored in \cs{c_fontscale_normalsize_scale_fp}.
These variables, excluding the constants, are set by \cs{fontscalesetup}.
-They should never be modified directly.
-\cs{l_fontscale_step_fp}
-\nopagebreak\newline
-\cs{l_fontscale_scale_fp}
-\newline
-\cs{l_fontscale_size_dim}
-\nopagebreak\newline
-\cs{l_fontscale_baselineskip_skip}
+\begin{mydisplaycode}
+ \cs{l_fontscale_step_fp}
+ \nopagebreak\newline
+ \cs{l_fontscale_scale_fp}
+ \newline
+ \cs{l_fontscale_size_dim}
+ \nopagebreak\newline
+ \cs{l_fontscale_baselineskip_skip}
+\end{mydisplaycode}
Stores the current font step, font scale, font size, and font baselineskip.
\cs{l_fontscale_step_fp} equals \texttt{nan} (not a number) if the current font step is undefined (as explained for \cs{CurrentFontStep} in \S\ref{subsec:expandable}).
These variables are set in the \texttt{selectfont} hook.
-They should never be modified directly.
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/scaletextbullet/CHANGELOG.md b/macros/latex/contrib/scaletextbullet/CHANGELOG.md
index 0f18ad5da1..aee88decf9 100644
--- a/macros/latex/contrib/scaletextbullet/CHANGELOG.md
+++ b/macros/latex/contrib/scaletextbullet/CHANGELOG.md
@@ -7,6 +7,12 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v1.0.3] - 2024-12-09
+
+### Changed
+- The documentation now displays code in a light-gray background using the
+ `tcolorbox` package. This subtle contrast enhances readability.
+
## [v1.0.2] - 2024-11-25
### Changed
diff --git a/macros/latex/contrib/scaletextbullet/beery.cls b/macros/latex/contrib/scaletextbullet/beery.cls
index 7eba8ad48f..2826ed38aa 100644
--- a/macros/latex/contrib/scaletextbullet/beery.cls
+++ b/macros/latex/contrib/scaletextbullet/beery.cls
@@ -4,7 +4,7 @@
\NeedsTeXFormat{LaTeX2e}[2023-11-01]
\ProvidesExplClass
{beery}
- {2024-11-25}
+ {2024-12-09}
{}
{}
@@ -27,6 +27,18 @@
\RequirePackage { multicol }
\RequirePackage { scaletextbullet }
+\RequirePackage { tcolorbox }
+\tcbuselibrary { breakable }
+\NewTColorBox { mydisplaycode } { }
+ {
+ size = minimal
+ , left = 2pt
+ , right = 2pt
+ , top = 2pt
+ , bottom = 2pt
+ , breakable
+ }
+
% CUSTOM MACROS
\tl_const:Nn \c_beery_alphabet_tl { abcdefghijklmnopqrstuvwxyz }
diff --git a/macros/latex/contrib/scaletextbullet/scaletextbullet.pdf b/macros/latex/contrib/scaletextbullet/scaletextbullet.pdf
index 00a34d0f45..5a84b517a3 100644
--- a/macros/latex/contrib/scaletextbullet/scaletextbullet.pdf
+++ b/macros/latex/contrib/scaletextbullet/scaletextbullet.pdf
Binary files differ
diff --git a/macros/latex/contrib/scaletextbullet/scaletextbullet.sty b/macros/latex/contrib/scaletextbullet/scaletextbullet.sty
index 06620c6450..1bb7c321d9 100644
--- a/macros/latex/contrib/scaletextbullet/scaletextbullet.sty
+++ b/macros/latex/contrib/scaletextbullet/scaletextbullet.sty
@@ -9,8 +9,8 @@
\NeedsTeXFormat{LaTeX2e}[2023-11-01]
\ProvidesExplPackage
{scaletextbullet}
- {2024-11-25}
- {1.0.2}
+ {2024-12-09}
+ {1.0.3}
{Resize the \noexpand\textbullet without changing its vertical center.}
% l3kernel version 2023-10-10 added many 'e'-variants.
diff --git a/macros/latex/contrib/scaletextbullet/scaletextbullet.tex b/macros/latex/contrib/scaletextbullet/scaletextbullet.tex
index 9cf8f324a0..087ac72828 100644
--- a/macros/latex/contrib/scaletextbullet/scaletextbullet.tex
+++ b/macros/latex/contrib/scaletextbullet/scaletextbullet.tex
@@ -16,7 +16,7 @@ Resize the \cs{textbullet} without changing its vertical center
Oliver Beery
-Version 1.0.2\quad{}25 November 2024
+Version 1.0.3\quad{}9 December 2024
\section{Introduction}
@@ -51,22 +51,26 @@ This package defines some commands whose argument takes a \meta{floating point e
This syntax has the same representation as the arguments to \cs{fpeval} and \cs{inteval}, documented in \pkg{usrguide}.%
\footnote{\url{https://ctan.org/pkg/usrguide}}
-\cs{SetTextBulletFactor} \marg{floating point expression}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{SetTextBulletFactor} \marg{floating point expression}
+\end{mydisplaycode}
Sets the \textbulletfactor{} to the result of computing the \meta{floating point expression}.
The \textbulletfactor{} is the ratio of the width of the \cs{textbullet}, excluding its empty space, to its width, including its empty space.
This change is local to the current group.
The initial \textbulletfactor{} is \num{0.4}\---this matches the dimensions of the \cs{textbullet} of the Latin Modern font at size \qty{10}{pt}.
+\pagebreak%manual
-\cs{ScaleTextBullet} \marg{floating point expression}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{ScaleTextBullet} \marg{floating point expression}
+\end{mydisplaycode}
Prints a \cs{textbullet} with its size scaled by the result of computing the \meta{floating point expression}.
The new \cs{textbullet} will be printed with the same vertical center only if the \textbulletfactor{} is set to the correct value.
-\cs{ScaleTextBullets} \oarg{floating point expression} \marg{integer expression}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{ScaleTextBullets} \oarg{floating point expression} \marg{integer expression}
+\end{mydisplaycode}
Prints a number of \cs{textbullet}s equal to the value of \meta{integer expression} with about the same total area as the original \cs{textbullet}.%
\footnote
@@ -76,8 +80,9 @@ Prints a number of \cs{textbullet}s equal to the value of \meta{integer expressi
If the optional argument is used, the size of each \cs{textbullet} is instead scaled by the result of computing the \meta{floating point expression}.
The new \cs{textbullet} will be printed with the same vertical center only if the \textbulletfactor{} is set to the correct value.
-\cs{scaletextbulletdebug}
-\KeepNextPar*
+\begin{mydisplaycode}
+ \cs{scaletextbulletdebug}
+\end{mydisplaycode}
This command is provided only to help the user estimate the \textbulletfactor{}.
Prints \num{15} consecutive \cs{textbullet}s with decreasing sizes.
diff --git a/macros/latex/contrib/zugferd/DEMO-rechnung-zugferd.pdf b/macros/latex/contrib/zugferd/DEMO-rechnung-zugferd.pdf
index a06bea828e..2174c9b25a 100644
--- a/macros/latex/contrib/zugferd/DEMO-rechnung-zugferd.pdf
+++ b/macros/latex/contrib/zugferd/DEMO-rechnung-zugferd.pdf
Binary files differ
diff --git a/macros/latex/contrib/zugferd/DEMO-rechnung-zugferd.tex b/macros/latex/contrib/zugferd/DEMO-rechnung-zugferd.tex
index aac6703ac6..e9f705a84d 100644
--- a/macros/latex/contrib/zugferd/DEMO-rechnung-zugferd.tex
+++ b/macros/latex/contrib/zugferd/DEMO-rechnung-zugferd.tex
@@ -1,7 +1,7 @@
% !TeX Program=lualatex
%
% Demo file for the LaTeX-ZUGFeRD project
-% This file corresponds to version 0.9b (2024-11-17)
+% This file corresponds to version 0.9c (2024-12-08)
%
% Copyright (C) 2024 Marei Peischl <marei@peitex.de>
% ---------------------------------------------------------
diff --git a/macros/latex/contrib/zugferd/README.md b/macros/latex/contrib/zugferd/README.md
index c829ac789a..3712c73eb7 100644
--- a/macros/latex/contrib/zugferd/README.md
+++ b/macros/latex/contrib/zugferd/README.md
@@ -2,7 +2,7 @@
Copyright (C) 2023–2024 by Marei Peischl (peiTeX) <marei@peitex.de>
-zugferd version 0.9b (2024-11-17)
+zugferd version 0.9c (2024-12-08)
***************************************************************************
@@ -23,6 +23,10 @@ This package does not provide any validation. Please be aware of you have to use
## Version History
+* 0.9c (2024-12-08)
+ - extend address interface
+ - add document reference fields
+ - fix bug adding the PDF attachment entry twice
* 0.9b (2024-11-17)
- Rename embedded xml-file if xrechnung is used
- Fix bug leaving an unescaped `\n` in the output
diff --git a/macros/latex/contrib/zugferd/zugferd-invoice.sty b/macros/latex/contrib/zugferd/zugferd-invoice.sty
index 609dedba35..b5b766ef3e 100644
--- a/macros/latex/contrib/zugferd/zugferd-invoice.sty
+++ b/macros/latex/contrib/zugferd/zugferd-invoice.sty
@@ -12,7 +12,7 @@
% and version 1.3c or later is part of all distributions of LaTeX
% version 2008-05-04 or later.
%
-\ProvidesExplPackage{zugferd-invoice}{2024-11-17}{0.9b}{Invoice wrapper example package for the factur-x to create ZUGFerD invoices}
+\ProvidesExplPackage{zugferd-invoice}{2024-12-08}{0.9c}{Invoice wrapper example package for the factur-x to create ZUGFerD invoices}
\keys_define:nn {zugferd/invoice}{
default-vat .tl_set:N = \defaultVAT,
@@ -124,7 +124,7 @@
\PrintInvoiceSum{netto}{\fp_use:N \g__ptxcd_invoice_sum_fp}
\seq_map_inline:Nn \g__ptxcd_VAT_rates_seq {
\fp_compare:nNnF {\fp_use:c {g__ptxcd_invoice_sum_vat##1_fp}} = {0} {
- \zugferd_write_TaxEntry:nnnn {\use:c {__ptxcd_invoice_type_code##1:}} {##1} {\fp_use:c {g__ptxcd_invoice_base_vat##1_fp}} {\fp_use:c {g__ptxcd_invoice_sum_vat##1_fp}}
+ \zugferd_write_TaxEntry:ennn {\use:c {__ptxcd_invoice_type_code##1:}} {##1} {\fp_use:c {g__ptxcd_invoice_base_vat##1_fp}} {\fp_use:c {g__ptxcd_invoice_sum_vat##1_fp}}
\fp_gadd:Nn \g__ptxcd_tax_total_fp {\fp_use:c {g__ptxcd_invoice_sum_vat##1_fp}}
\PrintVatSum[{\fp_use:c {g__ptxcd_invoice_base_vat##1_fp}}]{##1 }{\fp_use:c {g__ptxcd_invoice_sum_vat##1_fp}}
}
diff --git a/macros/latex/contrib/zugferd/zugferd.dtx b/macros/latex/contrib/zugferd/zugferd.dtx
index 15bdb33e56..83b080e77c 100644
--- a/macros/latex/contrib/zugferd/zugferd.dtx
+++ b/macros/latex/contrib/zugferd/zugferd.dtx
@@ -16,14 +16,14 @@
% \fi
% \iffalse
%<*driver>
-\ProvidesFile{zugferd.dtx}[2024-11-17 v0.9b ZUGFerd Invoice and Faktur-X]
+\ProvidesFile{zugferd.dtx}[2024-12-08 v0.9c ZUGFerd Invoice and Faktur-X]
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[2023-11-01]
-%<package>\ProvidesExplPackage{zugferd}{2024-11-17}{0.9b}{Create ZUGFerd invoices using LaTeX}
+%<package>\ProvidesExplPackage{zugferd}{2024-12-08}{0.9c}{Create ZUGFerd invoices using LaTeX}
%<*driver>
\DocumentMetadata{pdfstandard=a-3b,lang=en}
\documentclass[lm-default=false,cs-break-nohyphen]{l3doc}
-\usepackage{zugferd}[2024-11-17]
+\usepackage{zugferd}[2024-12-08]
\EnableCrossrefs
%\CodelineIndex
\RecordChanges
@@ -228,7 +228,7 @@
\newcommand*{\XML}{XML\xspace}
\newcommand*{\XMLfile}{\XML file}
-\newcommand*{\issue}[1]{%
+\DeclareRobustCommand{\issue}[1]{%
{\DeclareFieldFormat{citeurlpostfix}{\href{##1/issues/#1}{\##1}}\citefield{LaTeX-ZUGFeRD-GitHub}[citeurlpostfix]{url}}%
}
\newcommand*{\version}[1]{v#1}
@@ -487,8 +487,9 @@
}
% \end{macrocode}
% \changes{v0.9a}{2024-11-07}{Add error message if pdfmanagement is outdated.}
+% \changes{v0.9c}{2024-12-08}{Compatbility to show the error message in older formats versions.}
% \begin{macrocode}
- \IfPackageAtLeastF{pdfmanagement-testphase}{2024/09/13}{
+ \IfPackageAtLeastTF{pdfmanagement-testphase}{2024/09/13}{}{
\msg_new:nnn {zugferd} {PDFmanagement-too-old} {
Your~version~of~\LaTeX's~PDF~management~is~too~old.
You~need~to~update~your~LaTeX~distribution~to~be~able~to~use~the~zugferd~package~correctly.
@@ -753,20 +754,17 @@
\pdfdict_put:nnn {l_pdffile/Filespec} {Desc}{(Factur-X/ZUGFeRD-Rechnung)}
\exp_args:NnV \pdffile_embed_file:nnn {\g_@@_xml_file_tl} \g_@@_xml_embedded_file_tl
{zugferd/rechnung}
+ \group_end:
% \end{macrocode}
% Since some tools require the Catalog entry to match the file name of the embedded file this this has to be set separately (\issue{26}).
% \changes{v0.9b}{2024-11-17}{Fix file name of embedded file for the zugferd profile.}
+% \changes{v0.9c}{2024-12–08}{Remove second catalog entry linking to xml \issue{32}}
% \begin{macrocode}
- \pdfmanagement_add:nee
- {Catalog/Names/EmbeddedFiles}
- {\g_@@_xml_embedded_file_tl}
- {\pdf_object_ref:n{zugferd/rechnung}}
- \group_end:
- \pdfmanagement_add:nnx
- {Catalog/Names}
- {EmbeddedFiles}
+ \pdfmanagement_add:nee
+ {Catalog/Names/EmbeddedFiles}
+ {\g_@@_xml_embedded_file_tl}
{\pdf_object_ref:n{zugferd/rechnung}}
- % steht in der docu ist aber pdf 2.0 ....
+ % steht in der doku ist aber pdf 2.0 ....
\pdfmanagement_add:nnx{Catalog}{AF}{\pdf_object_ref:n{zugferd/rechnung}}
}
}
@@ -844,6 +842,8 @@
% And this will also print the \enquote{SpecifiedTradeSettlementPaymentMeans}, see \autoref{sec:PaymentMeans}.
%
% \DescribeMacro{\zugferd_write_TaxEntry:nnnn}
+% \DescribeMacro{\zugferd_write_TaxEntry:ennn}
+% \changes{v0.9c}{2024-12-08}{Added \cs{zugferd_write_TaxEntry:ennn} variant}
% This command is writing the sum over a tax rate. This command has to be used once per rate applied to the items.
% \begin{syntax}
% \cs[no-index]{zugferd_write_TaxEntry:nnnn} \marg{tax category code} \marg{tax rate in \%} \marg{basis amount the tax applies to} \marg{tax amount}
@@ -933,7 +933,7 @@
% \end{macrocode}
% \end{function}
% \changes{v0.9}{2024-10-23}{Add interface using an argument for the keyval options locally per item}
-% \begin{function}{\_@@_write_Item:nnnnnnn}
+% \begin{function}{\zugferd_write_Item:nnnnnnn}
% \begin{macrocode}
\cs_new:Nn \zugferd_write_Item:nnnnnnn {
\group_begin:
@@ -944,6 +944,11 @@
\cs_generate_variant:Nn \zugferd_write_Item:nnnnnnn {ennnnnn}
% \end{macrocode}
% \end{function}
+% \begin{function}{\zugferd_write_TaxEntry:ennn}
+% \begin{macrocode}
+\cs_generate_variant:Nn \zugferd_write_TaxEntry:nnnn {ennn}
+% \end{macrocode}
+% \end{function}
% \begin{function}{\_@@_write_xml:n,\_@@_define_xml_writer:Nn,\_@@_define_xml_content:Nn}
% These commands are used to toggle the writing of the \XMLfile. This corresponds to the option \option{write-xml}.
% \begin{macrocode}
@@ -1069,22 +1074,25 @@
% \fi
% \begin{macrocode}
\cs_new:Nn \zugferd_disable_macros: {
- \let\{\textbraceleft
- \let\}\textbraceright
- \let\\\textbackslash
- \let\#\textnumbersign
- \let\$\textdollar
+ \let\{\c_left_brace_str
+ \let\textbraceleft\c_left_brace_str
+ \let\}\c_right_brace_str
+ \let\textbraceright\c_right_brace_str
+ \let\#\c_hash_str
% \end{macrocode}
% This only is a part of the list.
% There is no real use of printing the whole list, it's inside \file{zugferd.sty} anyway.
% \comment
% \begin{macrocode}
- \let\%\textpercent
- \let\&\textampersand
- \let\_\textunderscore
- \let\P\textparagraph
- \let\ldots\textellipsis
- \let\dots\textellipsis
+ \let\textnumbersign\c_hash_str
+ \let\$\c_dollar_str
+ \let\textdollar\c_dollar_str
+ \let\%\c_percent_str
+ \let\&\c_ampersand_str
+ \let\_\c_underscore_str
+ \def\P{§}
+ \def\ldots{…}
+ \def\dots{…}
\def\\{\space}%
\def\newline{\space}%
\def\TeX{TeX}%
@@ -1188,6 +1196,55 @@
% \end{function}
% \end{implementation}
% \begin{documentation}
+% \DescribeMacro{\zugferd_tl_set_escaped_xml:Nn}
+% \DescribeMacro{\zugferd_tl_gset_escaped_xml:Nn}
+% \changes{v0.9c}{2024-12-08}{Added mechanism to escape XML special characters.}
+% As described before and also in \issue{9} there are characters which are special in \XML but not within \LaTeX.
+% Additionally there also are characters which aren't special in \LaTeX{} but within \XML.
+% In version \version{0.9c} \pkg{zugferd} added some auxiliary commands to support users escaping those.
+% This mechanism involves turning the category codes of characters like |"<>'&| to active and might have side effects.
+% It is an experimental feature and should be handled with care!
+% \end{documentation}
+% \begin{implementation}
+% \begin{macrocode}
+\tl_new:N \g_@@_tmp_tl
+\cs_new:Nn \zugferd_tl_gset_escaped_xml:Nn {
+ \group_begin:
+ \zugferd_disable_macros:
+ \_@@_escape_xml_aux:
+ \tl_gset_rescan:Nnn #1 {
+ \cctab_select:N \c_str_cctab
+ \_@@_escape_xml_activate:
+ } {#2}
+ \tl_gset:Ne #1 {#1}
+ \group_end:
+}
+\cs_new:Nn \zugferd_tl_set_escaped_xml:Nn {
+ \zugferd_tl_gset_escaped_xml:Nn \g_@@_tmp_tl {#2}
+ \tl_set_eq:NN #1 \g_@@_tmp_tl
+}
+\cs_new:Nn \_@@_escape_xml_aux: {
+ \edef\&{\tl_to_str:n {&amp;}}
+ \edef\textgreater{\tl_to_str:n {&gt;}}
+ \edef\textless{\tl_to_str:n {&lt;}}
+ \edef\textquotedbl{\tl_to_str:n {&quot;}}
+ \edef\textquotesingle{\tl_to_str:n {&apos;}}
+ \char_set_active_eq:NN > \textgreater
+ \char_set_active_eq:NN < \textless
+ \char_set_active_eq:NN " \textquotedbl
+ \char_set_active_eq:NN ' \textquotesingle
+ \char_set_active_eq:NN & \&
+}
+\cs_new:Nn \_@@_escape_xml_activate: {
+ \char_set_catcode_active:N >
+ \char_set_catcode_active:N <
+ \char_set_catcode_active:N "
+ \char_set_catcode_active:N '
+ \char_set_catcode_active:N &
+}
+% \end{macrocode}
+% \end{implementation}
+% \begin{documentation}
% \subsection{Rounding Interface}
% \label{sec:rounding-interface}
% \changes{v0.9a}{2024-11-07}{Add public interface for the rounding mechanism.}
@@ -1268,8 +1325,19 @@
% \end{macrocode}
% \end{implementation}
% \begin{documentation}
-% \DescribeKeyOption{document-type=commercial-invoice}{commercial-invoice}
-% Select the document type. The only supported value currently is |commercial-invoice|. This will select the corresponding type code, which is 380.
+% \DescribeKeyOption{document-type=\meta{type}}{commercial-invoice}
+% Select the document type. Since \version{0.9c} \pkg{zugferd} supports the following types:
+% \changes{v0.9c}{2024-12-08}{Add support for other invoice types.}
+% \begin{valuelist}
+% \item[commercial-invoice] 380
+% \item[partial-invoice] 326
+% \item[corrected-invoice] 384
+% \item[self-billed-invoice] 389
+% \item[credit-note] 381
+% \item[partial-construction-invoice] 875
+% \item[partial-final-construction-invoice] 876
+% \item[final-construction-invoice] 877
+% \end{valuelist}
% \end{documentation}
% \begin{implementation}
% \begin{optionenv}{id, document-type}
@@ -1277,6 +1345,20 @@
document-type .choice:,
document-type / commercial-invoice .code:n =
\tl_gset:Nn \g_@@_DocumentTypeCode_tl {380},
+ document-type / partial-invoice .code:n =
+ \tl_gset:Nn \g_@@_DocumentTypeCode_tl {326},
+ document-type / corrected-invoice .code:n =
+ \tl_gset:Nn \g_@@_DocumentTypeCode_tl {384},
+ document-type / self-billed-invoice .code:n =
+ \tl_gset:Nn \g_@@_DocumentTypeCode_tl {389},
+ document-type / credit-note .code:n =
+ \tl_gset:Nn \g_@@_DocumentTypeCode_tl {381},
+ document-type / partial-construction-invoice .code:n =
+ \tl_gset:Nn \g_@@_DocumentTypeCode_tl {875},
+ document-type / partial-final-construction-invoice .code:n =
+ \tl_gset:Nn \g_@@_DocumentTypeCode_tl {876},
+ document-type / final-construction-invoice .code:n =
+ \tl_gset:Nn \g_@@_DocumentTypeCode_tl {877},
document-type .initial:n = commercial-invoice,
% \end{macrocode}
% \end{optionenv}
@@ -1443,13 +1525,18 @@
% As this also depends on the selected scheme and version we will not list the details.
% All fields for a trade party can be set using the \enquote{group} named by the party.
% For example setting all the seller data is done in the following listing:
+% \changes{v0.9c}{2024-12-08}{Add support for extended Addresses including additionl legal data.}
% \begin{examplecode}
% \SetZUGFeRDData{
+% seller/id = {ID – usually internal ID provided by buyer},
% seller/name = {peiTeX (Marei Peischl)},
+% seller/legal-description = {Additional legal information},
+% seller/legal-id = {legal registration ID},
+% seller/trading-name = {trading name},
% seller/email = {invoicing@peitex.de},
% seller/vatid = {DE123456789},
% seller/contact= {Marei\\+4900000000\\marei@peitex.de},
-% seller/address = {Address Line 1\\Address Line 2},
+% seller/address = {Address Line 1\\Address Line 2\\Address Line 3},
% seller/postcode = {20253},
% seller/city ={Hamburg},
% seller/country = {DE},
@@ -1465,16 +1552,21 @@
% \DescribeKeyOption*{\meta{party}/name=\meta{name}}{}*
% \DescribeKeyOption*{\meta{party}/email=\meta{email address}}{}*
% \DescribeKeyOption*{\meta{party}/vatid=\meta{VAT ID}}{}*
+% \DescribeKeyOption*{\meta{party}/taxid=\meta{VAT ID}}{}*
+% \changes{v0.9c}{2024-12-08}{Add support for taxid.}
%
% \DescribeKeyOption*{\meta{party}/address=\meta{address}}{}*
-% As shown in the example \option{address} can use two lines separted by |\\|.
+% \changes{v0.9c}{2024-12-08}{Add support for third address line.}
+% As shown in the example \option{address} can use three lines separted by |\\|.
% It's possble to set all fields for all trade contacts, but e.\,g. for the |shipto|-party email and vatid will not be used in the \XML.
%
-% Alternatively it's also possible to use \option{\meta{party}/lineone} and \option{\meta{party/linetwo}} separately.
+% Alternatively it's also possible to use \option{\meta{party}/lineone}, \option{\meta{party}/linetwo} and \option{\meta{party}/linethree} separately.
% This may be helpful if you use a custom input format. In any way you should ensure that all macros used within the data either are expandable or disabled using \cs[no-index]{zugferd_disable_macros:}.
%
% \DescribeKeyOption*{\meta{party}/postcode=\meta{postal code}}{}*
% \DescribeKeyOption*{\meta{party}/city=\meta{city}}{}*
+% \DescribeKeyOption*{\meta{party}/subdivision=\meta{subdivision}}{}*
+% \changes{v0.9c}{2024-12-08}{Add support for subdivision.}
% \DescribeKeyOption*{\meta{party}/country=\meta{country code}}{}*
% The two letter country codes allowed here can be found in \cite{country-codes}.
%
@@ -1529,7 +1621,8 @@
%TODO error if more than 2 lines or only 1
\keys_set:nx {zugferd / #1} {
lineone=\seq_item:Nn \l_tmpa_seq {1},
- linetwo=\seq_item:Nn \l_tmpa_seq {2}
+ linetwo=\seq_item:Nn \l_tmpa_seq {2},
+ linethree=\seq_item:Nn \l_tmpa_seq {3}
}
},
contact .code:n = {
@@ -1558,28 +1651,41 @@
% \end{macrocode}
% \end{variable}
% \end{optionenv}
-% \begin{function}{\_@@_PostalTradeAddress:N,\_@@_DefinedTradeContact:N}
+% \begin{function}{\_@@_TradePartyIdentity:N \_@@_PostalTradeAddress:N,\_@@_DefinedTradeContact:N}
% Wrappers to map the property list items to the writing macro.
+% \changes{v0.9c}{2024-12-08}{Add TradePartyName to support additional legal information.}
% \begin{macrocode}
+\cs_new:Nn \_@@_TradePartyIdentity:N {
+ \_@@_TradePartyIdentity:eeeee
+ {\prop_item:Nn #1 {id}}
+ {\prop_item:Nn #1 {name}}
+ {\prop_item:Nn #1 {legal-description}}
+ {\prop_item:Nn #1 {legal-id}}
+ {\prop_item:Nn #1 {trading-name}}
+}
\cs_new:Nn \_@@_PostalTradeAddress_short:N {
\exp_args:Ne \tl_if_blank:nF {\prop_item:Nn #1 {name}}
{<ram:Name>\prop_item:Nn #1 {name}</ram:Name>\iow_newline:\_@@_xml_auto_indent:}
- \_@@_PostalTradeAddress:eeeee
+ \_@@_PostalTradeAddress:eeeeeee
{\prop_item:Nn #1 {postcode}}
{\prop_item:Nn #1 {lineone}}
{\prop_item:Nn #1 {linetwo}}
+ {\prop_item:Nn #1 {linethree}}
{\prop_item:Nn #1 {city}}
{\prop_item:Nn #1 {country}}
+ {\prop_item:Nn #1 {subdivision}}
}
\cs_new:Nn \_@@_PostalTradeAddress:N {%
\_@@_PostalTradeAddress:eeeeeee
{\prop_item:Nn #1 {postcode}}
{\prop_item:Nn #1 {lineone}}
{\prop_item:Nn #1 {linetwo}}
+ {\prop_item:Nn #1 {linethree}}
{\prop_item:Nn #1 {city}}
{\prop_item:Nn #1 {country}}
- {\prop_item:Nn #1 {email}}
- {\prop_item:Nn #1 {vatid}}
+ {\prop_item:Nn #1 {subdivision}}
+ \_@@_UniversalCommunication:n {\prop_item:Nn #1 {email}}
+ \_@@_TaxRegistration:nn {\prop_item:Nn #1 {vatid}} {\prop_item:Nn #1 {taxid}}
}%
\cs_new:Nn \_@@_DefinedTradeContact:N {%
\_@@_DefinedTradeContact:eeee
@@ -1594,10 +1700,31 @@
\cctab_begin:N \g_@@_xml_cctab%
% \end{macrocode}
% \iffalse
-% \_@@_PostalTradeAddress:nnnnnnn Name/Firma PLZ Zeile1 Zeile2 Ort Ländercode Email UID
+% \_@@_TradePartyIdentity:eeeee ID Name description legal-id trading-name
% \fi
% \begin{macrocode}
-\_@@_define_xml_content:Nn \_@@_PostalTradeAddress:nnnnn {%
+\_@@_define_xml_content:Nn \_@@_TradePartyIdentity:nnnnn {%
+ %%<!-- BT-29 -->
+ \_@@_write_inline:nn {ram:ID} {#1}
+ %%<!-- BT-27 -->
+ \_@@_write_inline:nn {ram:Name} {#2}
+ %%<!-- BT-33 -->
+ \_@@_write_inline:nn {ram:Description} {#3}
+ \tl_if_blank:eF {#4#5} {%
+ <ram:SpecifiedLegalOrganization>
+ %%%<!-- BT-30 -->
+ \_@@_write_inline_i:nnn {ram:ID} {~schemeID="0088"} {#4}
+ %%<!-- BT-28 -->
+ \_@@_write_inline_i:nn {ram:TradingBusinessName} {#5}
+ </ram:SpecifiedLegalOrganization>
+ }%
+}%
+% \end{macrocode}
+% \iffalse
+% \_@@_PostalTradeAddress:nnnnnnn Name/Firma PLZ Zeile1 Zeile2 Zeile3 Ort Ländercode Bundesland/Bezirk
+% \fi
+% \begin{macrocode}
+\_@@_define_xml_content:Nn \_@@_PostalTradeAddress:nnnnnnn {%
<ram:PostalTradeAddress>
\bool_if:NF \g_@@_minimum_bool {%
\_@@_indent: <ram:PostcodeCode>#1</ram:PostcodeCode>
@@ -1607,25 +1734,41 @@
\tl_if_blank:nF {#3} {%
\_@@_indent: <ram:LineTwo>#3</ram:LineTwo>
}%
- \_@@_indent: <ram:CityName>#4</ram:CityName>
+ \tl_if_blank:nF {#4} {%
+ \_@@_indent: <ram:LineThree>#4</ram:LineThree>
+ }%
+ \_@@_indent: <ram:CityName>#5</ram:CityName>
+ }%
+ \_@@_indent: <ram:CountryID>#6</ram:CountryID>
+ \bool_if:NF \g_@@_minimum_bool {%
+ \tl_if_blank:nF {#7} {%
+ \_@@_indent: <ram:CountrySubDivisionName>#7</ram:CountrySubDivisionName>
+ }%
}%
- \_@@_indent: <ram:CountryID>#5</ram:CountryID>
</ram:PostalTradeAddress>%
-}
-\_@@_define_xml_content:Nn \_@@_PostalTradeAddress:nnnnnnn {%
- \_@@_PostalTradeAddress:nnnnn {#1} {#2} {#3} {#4} {#5}%
- \bool_lazy_or:nnF {\g_@@_minimum_bool}%
- {\tl_if_blank_p:n {#6}}%
- {%
- \_@@_xml_newline_indent:%
+}%
+\bool_if:NTF \g_@@_minimum_bool {%
+ \cs_set_eq:NN \_@@_UniversalCommunication:n \use_none:n%
+} {%
+ \_@@_define_xml_content:Nn \_@@_UniversalCommunication:n {%
+ \tl_if_blank:eF {#1} {
<ram:URIUniversalCommunication>
- \_@@_indent: <ram:URIID~schemeID="EM">#6</ram:URIID>
+ \_@@_indent: <ram:URIID~schemeID="EM">#1</ram:URIID>
</ram:URIUniversalCommunication>%
}%
- % TODO add support local tax id: schemaID="FC"
- \tl_if_empty:nF {#7} {
+ }%
+}%
+\_@@_define_xml_content:Nn \_@@_TaxRegistration:nn {%
+ %%%<!-- BT-34 -->
+ \tl_if_blank:eF {#1} {
+ <ram:SpecifiedTaxRegistration>
+ \_@@_indent: <ram:ID~schemeID="VA">#1</ram:ID>
+ </ram:SpecifiedTaxRegistration>%
+ }%
+ %%%<!-- BT-32 -->
+ \tl_if_blank:eF {#2} {
<ram:SpecifiedTaxRegistration>
- \_@@_indent: <ram:ID~schemeID="VA">#7</ram:ID>
+ \_@@_indent: <ram:ID~schemeID="FC">#2</ram:ID>
</ram:SpecifiedTaxRegistration>%
}%
}%
@@ -1668,7 +1811,7 @@
\_@@_write_xml:n {<ram:SellerTradeParty>}%
\int_gincr:N \g_@@_indent_int%
\_@@_write_xml:e {%
- <ram:Name>\prop_item:Nn \g_@@_seller_AddressData_prop {name}</ram:Name>
+ \_@@_TradePartyIdentity:N \g_@@_seller_AddressData_prop
\_@@_DefinedTradeContact:N \g_@@_seller_AddressData_prop%
\_@@_PostalTradeAddress:N \g_@@_seller_AddressData_prop%
}%
@@ -1679,7 +1822,7 @@
}%
\int_gincr:N \g_@@_indent_int%
\_@@_write_xml:e {%
- <ram:Name>\prop_item:Nn \g_@@_buyer_AddressData_prop {name}</ram:Name>%
+ \_@@_TradePartyIdentity:N \g_@@_buyer_AddressData_prop
\bool_if:NF \g_@@_minimum_bool {
\_@@_DefinedTradeContact:N \g_@@_buyer_AddressData_prop%
\_@@_PostalTradeAddress:N \g_@@_buyer_AddressData_prop%
@@ -1687,6 +1830,9 @@
}%
\int_gdecr:N \g_@@_indent_int%
\_@@_write_xml:n {</ram:BuyerTradeParty>}%
+ \clist_map_inline:nn {SellerOrder,BuyerOrder,Contract} {%
+ \_@@_write_ReferencedDocument:n {##1}%
+ }%
\int_gdecr:N \g_@@_indent_int%
\_@@_write_xml:n {</ram:ApplicableHeaderTradeAgreement>}%
\bool_if:NTF \g_@@_minimum_bool%
@@ -1726,8 +1872,8 @@
}%
%
\cctab_end:
+\cs_generate_variant:Nn \_@@_TradePartyIdentity:nnnnn {eeeee}
\cs_generate_variant:Nn \_@@_DefinedTradeContact:nnnn {eeee}
-\cs_generate_variant:Nn \_@@_PostalTradeAddress:nnnnn {eeeee}%
\cs_generate_variant:Nn \_@@_PostalTradeAddress:nnnnnnn {eeeeeee}
\cs_generate_variant:Nn \_@@_ApplicableHeaderTradeDelivery:n {V}
% \end{macrocode}
@@ -1760,6 +1906,36 @@
% \end{optionenv}
% \end{implementation}
% \begin{documentation}
+% \subsubsection{Document references}
+% Additionally to the general buyer reference there may be additional data used by the buyer a reference.
+% These fields are technically optional, but the buyer may enforce them to be used.
+% These were not supported before \version{0.9c}.
+% \end{documentation}
+% \begin{implementation}
+% \begin{macrocode}
+\prop_new:N \g_@@_document_references_prop
+\clist_new:N \g_@@_buyer_document_references_clist
+\keys_define:nn {zugferd} {
+ contract-reference .prop_gput:N = \g_@@_document_references_prop,
+ purchaseorder-reference .prop_gput:N = \g_@@_document_references_prop,
+ purchase-order-reference .meta:n = {purchaseorder-reference=#1},
+ salesorder-reference .prop_gput:N = \g_@@_document_references_prop,
+ sales-order-reference .meta:n = {salesorder-reference=#1},
+}
+\cctab_begin:N \g_@@_xml_cctab%
+\_@@_define_xml_writer:Nn \_@@_write_ReferencedDocument:n {%
+ \prop_if_in:NeT \g_@@_document_references_prop {\str_lowercase:n {#1}-reference} {%
+ \_@@_write_xml:e {%
+ <ram:#1ReferencedDocument>
+ \_@@_indent:<ram:IssuerAssignedID>\prop_item:Ne \g_@@_document_references_prop {\str_lowercase:n {#1}-reference}</ram:IssuerAssignedID>
+ </ram:#1ReferencedDocument>%
+ }%
+ }%
+}%
+\cctab_end:
+% \end{macrocode}
+% \end{implementation}
+% \begin{documentation}
% \subsubsection{Payment Means}
% \label{sec:PaymentMeans}
% The payment means are selected by numeric codes.
@@ -2095,14 +2271,20 @@
% \end{macrocode}
% \endoptionenv
% \begin{macrocode}
-\_@@_define_xml_writer:Nn \_@@_write_inline:nn {
- \tl_if_blank:nF {#2} {
- <#1>#2</#1>
+\_@@_define_xml_content:Nn \_@@_write_inline:nn {
+ \_@@_write_inline:nnn {#1} {} {#2}
+}
+\_@@_define_xml_content:Nn \_@@_write_inline:nnn {
+ \tl_if_blank:nF {#3} {
+ <#1#2>#3</#1>
}
}
\cs_generate_variant:Nn \_@@_write_inline:nn {ne}
-\_@@_define_xml_writer:Nn \_@@_write_inline_i:nn {
- \_@@_indent: \_@@_write_inline:nn {#1} {#2}
+\_@@_define_xml_content:Nn \_@@_write_inline_i:nnn {
+ \_@@_indent: \_@@_write_inline:nnn {#1} {#2} {#3}
+}
+\_@@_define_xml_content:Nn \_@@_write_inline_i:nn {
+ \_@@_write_inline_i:nnn {#1} {} {#2}
}
\cctab_begin:N \g_@@_xml_cctab%
%
@@ -2211,10 +2393,13 @@
% \end{macrocode}
% \end{function}
% \begin{function}{\_@@_SpecifiedTradeProduct:nn}
+% \changes{v0.9c}{2024-12-08}{Don't use SellerAssignedID if format=basic, \issue{28}}
% \begin{macrocode}
-\_@@_define_xml_writer:Nn \_@@_SpecifiedTradeProduct:nn {%
+\_@@_define_xml_content:Nn \_@@_SpecifiedTradeProduct:nn {%
<ram:SpecifiedTradeProduct>
- \tl_if_empty:nF {#1} {%
+ \bool_lazy_or:nnF%
+ {\tl_if_blank_p:n {#1}}%
+ {\str_if_eq_p:Vn \g_@@_conformance_level_str {BASIC}} {%
\_@@_indent: <ram:SellerAssignedID>#1</ram:SellerAssignedID>
}%
\_@@_indent: <ram:Name>#2</ram:Name>
@@ -2379,6 +2564,13 @@
\int_gincr:N \g_@@_indent_int%
\_@@_write_rounded:nnn {2} {CalculatedAmount} {#4}%BT117
\_@@_write_xml:n {<ram:TypeCode>VAT</ram:TypeCode>}%BT118
+% \end{macrocode}
+% \changes{v0.9c}{2024-12-08}{Call exemption-reason-auto also locally inside ApplicableTradeTaxEntry}
+% \begin{macrocode}%
+ \begingroup
+ \bool_if:NT \g_@@_auto_exemption_bool {%
+ \keys_set:nn { zugferd / tax } {exemption-reason-auto=#1}
+ }%
\tl_if_blank:VF \l_@@_tax_exemption_reason_tl {%BT-120
\_@@_write_xml:e {<ram:ExemptionReason>
\l_@@_tax_exemption_reason_tl
@@ -2386,11 +2578,18 @@
}
{{\_@@_write_rounded:nnn {2} {BasisAmount} {#3}}}%BT-116
\_@@_write_xml:e {<ram:CategoryCode>#1</ram:CategoryCode>}%BT-118
- \tl_if_blank:VF \l_@@_tax_exemption_code_tl {%BT121
- \_@@_write_xml:e {<ram:ExemptionReasonCode>
- \l_@@_tax_exemption_code_tl
- </ram:ExemptionReasonCode>}
- }
+% \end{macrocode}
+% \changes{v0.9c}{2024-12-08}{Don't use exception-reason-code if format=BASIC \issue{28}}
+% \begin{macrocode}
+ \bool_lazy_or:nnF% BT121
+ {\tl_if_blank_p:V \l_@@_tax_exemption_code_tl}%
+ {\str_if_eq_p:Vn \g_@@_conformance_level_str {BASIC}}%
+ {%
+ \_@@_write_xml:e {%
+ <ram:ExemptionReasonCode>\l_@@_tax_exemption_code_tl</ram:ExemptionReasonCode>%
+ }%
+ }%
+ \endgroup
\_@@_write_xml:n {<ram:RateApplicablePercent>#2</ram:RateApplicablePercent>}%BT-119
\int_gdecr:N \g_@@_indent_int%
\_@@_write_xml:n {</ram:ApplicableTradeTax>}
@@ -2398,9 +2597,6 @@
%
\cctab_begin:N \g_@@_xml_cctab%
% ApplicableHeaderTradeSettlement
-\_@@_define_xml_writer:Nn \_@@_ApplicableHeaderTradeSettlement:nnnnnnnn {%
-
-}%
% \end{macrocode}
% ApplicableHeaderTradeSettlement needs to be splitted to be used in separate parts of the tabular.
% \begin{macrocode}
diff --git a/macros/latex/contrib/zugferd/zugferd.pdf b/macros/latex/contrib/zugferd/zugferd.pdf
index b1980ef133..2cc2822f16 100644
--- a/macros/latex/contrib/zugferd/zugferd.pdf
+++ b/macros/latex/contrib/zugferd/zugferd.pdf
Binary files differ