From 74e61f8ddf4002e5a6c871d4b15a9b20d9de88e5 Mon Sep 17 00:00:00 2001 From: ec-d Date: Thu, 2 May 2024 13:45:44 -0400 Subject: [PATCH 01/19] Use page number font when setting page number width (#179) --- moderncv.cls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moderncv.cls b/moderncv.cls index 7f465ed..ac478e6 100644 --- a/moderncv.cls +++ b/moderncv.cls @@ -145,7 +145,7 @@ \@ifundefined{r@lastpage}{}{% \ifthenelse{\pageref{lastpage}>1}{% \newlength{\pagenumberwidth}% - \settowidth{\pagenumberwidth}{\color{color2}\addressfont\itshape\strut\thepage/\pageref{lastpage}}% + \settowidth{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\pageref{lastpage}}% \fancypagestyle{plain}{% \fancyfoot[r]{\parbox[b]{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\protect\NoHyper\pageref{lastpage}\protect\endNoHyper}}}% the parbox is required to ensure alignment with a possible center footer (e.g., as in the casual style) \pagestyle{plain}}{}}\fi}% From 493742be6202264173a72957194cc853af8e3157 Mon Sep 17 00:00:00 2001 From: nathan musoke Date: Thu, 2 May 2024 13:46:38 -0400 Subject: [PATCH 02/19] Add \social options: arXiv, INSPIRE (#185) * Add \social options: arXiv, INSPIRE https://arxiv.org/ and https://inspirehep.net/ are websites on which academics often have profiles that would be linked in a CV (particularly physics and related fields). Add social options through the academicons font. * fixup arxiv and inspirehep socials * fixup arxiv and inspire-hep socials --- CHANGELOG | 1 + manual/moderncv_userguide.tex | 6 +++++- moderncv.cls | 6 ++++++ moderncviconsacademic.sty | 4 ++++ moderncviconsawesome.sty | 2 ++ moderncviconsletters.sty | 2 ++ template.tex | 2 ++ 7 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index a62ce21..3887511 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -19,6 +19,7 @@ version 2.?.? (29 Jun 2023) - Replace instances of ~~~ in codebase with \hspace to be more compatible with babel for Spanish (#109). - Added Codeberg and Mastodon social icons (#107). +- New \social options: arXiv, INSPIRE (#185) version 2.3.1 (21 Feb 2022) - Fix duplicate GitLab icon (#105). diff --git a/manual/moderncv_userguide.tex b/manual/moderncv_userguide.tex index 45a19ac..46076ae 100644 --- a/manual/moderncv_userguide.tex +++ b/manual/moderncv_userguide.tex @@ -102,7 +102,7 @@ familydefault, sfdefault, rmdefault, inputenc, moderncv, document, bibliographyitemlabel, addresssymbol, mobilephonesymbol, fixedphonesymbol, faxphonesymbol, emailsymbol, homepagesymbol, linkedinsocialsymbol, xingsocialsymbol, twittersocialsymbol, githubsocialsymbol, gitlabsocialsymbol, - stackoverflowsocialsymbol, bitbucketsocialsymbol, skypesocialsymbol, orcidsocialsymbol, researchgatesocialsymbol, + stackoverflowsocialsymbol, bitbucketsocialsymbol, skypesocialsymbol, orcidsocialsymbol, researchgatesocialsymbol, arxivsocialsymbol, inspiresocialsymbol, researcheridsocialsymbol, telegramsocialsymbol, whatsappsocialsymbol, signalsocialsymbol, matrixsocialsymbol, googlescholarsocialsymbol, cvstretchability, bornsymbol }, emphstyle={[2]\color{cvblue!60!cvgrey}\bfseries}, @@ -330,6 +330,7 @@ Takes the platform as an optional argument. The following values are supported for \code{}: \begin{itemize} \begin{multicols}{4} + \item \code{arxiv} \item \code{battlenet} \item \code{bitbucket} \item \code{codeberg} @@ -337,6 +338,7 @@ The following values are supported for \code{}: \item \code{github} \item \code{gitlab} \item \code{googlescholar} + \item \code{inspire} \item \code{instagram} \item \code{linkedin} \item \code{mastodon} @@ -711,6 +713,8 @@ Currently \Moderncv supports the following commands as \code{<\\symbolcommand>}: \item \code{\\bitbucketsocialsymbol} \item \code{\\skypesocialsymbol} \item \code{\\bornsymbol} + \item \code{\\arxivsocialsymbol} + \item \code{\\inspiresocialsymbol} \end{multicols} \end{itemize} The possible options for \code{<\\symbol>} depend on the package that is used. diff --git a/moderncv.cls b/moderncv.cls index ac478e6..730822c 100644 --- a/moderncv.cls +++ b/moderncv.cls @@ -288,6 +288,8 @@ % - "xbox" % - "playstation" % - "battlenet" +% - "arxiv" +% - "inspire" \collectionnew{socials} \NewDocumentCommand{\social}{O{}O{}m}{% \ifthenelse{\equal{#2}{}}% @@ -320,6 +322,8 @@ \ifthenelse{\equal{#1}{xbox}} {\collectionadd[xbox]{socials} {\protect\httpslink[#3]{account.xbox.com/profile?gamertag=#3}}} {}% \ifthenelse{\equal{#1}{playstation}} {\collectionadd[playstation]{socials} {#3}} {}% \ifthenelse{\equal{#1}{battlenet}} {\collectionadd[battlenet]{socials} {#3}} {}% + \ifthenelse{\equal{#1}{arxiv}} {\collectionadd[arxiv]{socials} {\protect\httpslink[#3]{arxiv.org/a/#3}}} {}% + \ifthenelse{\equal{#1}{inspire}} {\collectionadd[inspire]{socials} {\protect\httpslink[#3]{inspirehep.net/authoris/#3}}} {}% } {\collectionadd[#1]{socials}{\protect\httpslink[#3]{#2}}}}% @@ -385,6 +389,8 @@ \newcommand*{\xboxsocialsymbol} {} \newcommand*{\playstationsocialsymbol} {} \newcommand*{\battlenetsocialsymbol} {} +\newcommand*{\arxivsocialsymbol} {} +\newcommand*{\inspiresocialsymbol} {} % other %------ diff --git a/moderncviconsacademic.sty b/moderncviconsacademic.sty index 79f8ec9..1ac00ac 100644 --- a/moderncviconsacademic.sty +++ b/moderncviconsacademic.sty @@ -29,6 +29,8 @@ \providecolor{researchgate}{named}{default-socialicon-color} \providecolor{researcherid}{named}{default-socialicon-color} \providecolor{googlescholar}{named}{default-socialicon-color} +\providecolor{arxiv}{named}{default-socialicon-color} +\providecolor{inspire}{named}{default-socialicon-color} %------------------------------------------------------------------------------- % all symbols described in moderncv.cls @@ -57,6 +59,8 @@ %\newcommand*{\whatsappsocialsymbol} {} %\newcommand*{\matrixsocialsymbol} {} %\newcommand*{\signalsocialsymbol} {} +\renewcommand*{\arxivsocialsymbol}{{\color{arxiv}{\small\aiarXiv}}~} +\renewcommand*{\inspiresocialsymbol}{{\color{inspire}{\small\aiInspire}}~} \endinput diff --git a/moderncviconsawesome.sty b/moderncviconsawesome.sty index 597afc4..90f2b37 100644 --- a/moderncviconsawesome.sty +++ b/moderncviconsawesome.sty @@ -98,6 +98,8 @@ \renewcommand*{\battlenetsocialsymbol} {{\color{battlenet}\small\faBattleNet}~} %\renewcommand*{\signalsocialsymbol} {} %\renewcommand*{\matrixsocialsymbol} {} +% \renewcommand*{\arxivsocialsymbol} {{\color{arxiv}{\small\faarXiv}}~} +% \renewcommand*{\inspiresocialsymbol} {{\color{inspire}{\small\faInspire}}~} \renewcommand*{\bornsymbol} {{\color{born}\small\faAsterisk}~} % alternative: \faBabyCarriage \endinput diff --git a/moderncviconsletters.sty b/moderncviconsletters.sty index a25b03f..68ba2a1 100644 --- a/moderncviconsletters.sty +++ b/moderncviconsletters.sty @@ -56,6 +56,8 @@ \renewcommand*{\xboxsocialsymbol} {\textbf{xb}~} \renewcommand*{\playstationsocialsymbol} {\textbf{psn}~} \renewcommand*{\battlenetsocialsymbol} {\textbf{bn}~} +\renewcommand*{\arxivsocialsymbol} {\textbf{arx}~} +\renewcommand*{\inspiresocialsymbol} {\textbf{ins}~} \renewcommand*{\listitemsymbol} {\labelitemi~} diff --git a/template.tex b/template.tex index 750b4ce..014a2f1 100644 --- a/template.tex +++ b/template.tex @@ -90,6 +90,8 @@ \social[xbox]{jdoe} % optional, remove / comment the line if not wanted \social[playstation]{jdoe} % optional, remove / comment the line if not wanted \social[battlenet]{jdoe\#0000} % optional, remove / comment the line if not wanted +\social[arxiv]{doe\_j\_1} % optional, remove / comment the line if not wanted +\social[inspire]{0000000} % optional, remove / comment the line if not wanted \extrainfo{additional information} % optional, remove / comment the line if not wanted From 08371bb3e235152e3dac2c6c8faef659777c5543 Mon Sep 17 00:00:00 2001 From: Mark E Fuller Date: Sat, 4 May 2024 15:08:51 +0300 Subject: [PATCH 03/19] make colors user adjustable. (#151) * make colors user adjustable. - Systematize colors and make them user adjustable. See documentation for details. this requires the \moderncvcolor to be issued BEFORE \moderncvstyle. * fix missing characters for fancy style * manually copied the current version user guide form master --------- Co-authored-by: David Co-authored-by: LLdaniel Co-authored-by: daniel <41345639+LLdaniel@users.noreply.github.com> --- CHANGELOG | 2 ++ moderncv.cls | 2 ++ moderncvbodyi.sty | 10 +++++----- moderncvbodyiii.sty | 20 ++++++++++---------- moderncvbodyiv.sty | 8 ++++---- moderncvbodyv.sty | 12 ++++++------ moderncvfooti.sty | 4 ++-- moderncvheadi.sty | 18 ++++++++++-------- moderncvheadii.sty | 18 +++++++++--------- moderncvheadiii.sty | 16 +++++++++------- moderncvheadiv.sty | 18 ++++++++++-------- moderncvheadv.sty | 20 +++++++++++--------- moderncvheadvi.sty | 16 +++++++++------- moderncvskillmatrix.sty | 24 ++++++++++++------------ moderncvstylebanking.sty | 23 ++++++++++++++++++++++- moderncvstylecasual.sty | 22 ++++++++++++++++++++++ moderncvstyleclassic.sty | 22 ++++++++++++++++++++++ moderncvstyleempty.sty | 23 +++++++++++++++++++++++ moderncvstylefancy.sty | 24 ++++++++++++++++++++++++ moderncvstyleoldstyle.sty | 24 ++++++++++++++++++++++++ template.tex | 4 ++-- 21 files changed, 240 insertions(+), 90 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3887511..f386ab7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -20,6 +20,8 @@ version 2.?.? (29 Jun 2023) babel for Spanish (#109). - Added Codeberg and Mastodon social icons (#107). - New \social options: arXiv, INSPIRE (#185) +- Systematize colors and make them user adjustable. See documentation for details. + This requires the \moderncvcolor to be issued BEFORE \moderncvstyle. version 2.3.1 (21 Feb 2022) - Fix duplicate GitLab icon (#105). diff --git a/moderncv.cls b/moderncv.cls index 730822c..227b773 100644 --- a/moderncv.cls +++ b/moderncv.cls @@ -507,6 +507,8 @@ % styles \newcommand*{\namestyle}[1]{{\namefont#1}} +\NewDocumentCommand{\firstnamestyle}{+m}{{\namefont#1}} +\NewDocumentCommand{\lastnamestyle}{+m}{{\namefont#1}} \newcommand*{\titlestyle}[1]{{\titlefont#1}} \newcommand*{\addressstyle}[1]{{\addressfont#1}} \newcommand*{\quotestyle}[1]{{\quotefont#1}} diff --git a/moderncvbodyi.sty b/moderncvbodyi.sty index 5099ad2..37ecee0 100644 --- a/moderncvbodyi.sty +++ b/moderncvbodyi.sty @@ -29,9 +29,9 @@ \renewcommand*{\hintfont}{} % styles -\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}} -\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}} -\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}} +\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}} +\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}} +\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}} %------------------------------------------------------------------------------- @@ -73,7 +73,7 @@ \par\addvspace{2.5ex}% \phantomsection{}% reset the anchor for hyperrefs \addcontentsline{toc}{section}{#2}% - \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}% + \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{bodyrulecolor}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}% \par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading \RenewDocumentCommand{\subsection}{sm}{% @@ -169,7 +169,7 @@ \ifthenelse{\isundefined{\@enclosure}}{}{% \\% \vfil% - {\color{color2}\itshape\enclname: \@enclosure}}% + {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}% \vfil} diff --git a/moderncvbodyiii.sty b/moderncvbodyiii.sty index 638bfd4..7b7c40b 100644 --- a/moderncvbodyiii.sty +++ b/moderncvbodyiii.sty @@ -61,16 +61,16 @@ \renewcommand*{\sectionstyle}[1]{{% \if@center\centering\else% \if@right\raggedleft\fi\fi% - \sectionfont\textcolor{color1}{#1}% + \sectionfont\textcolor{sectioncolor}{#1}% \if@shortrules\else% \par\fi}} \renewcommand*{\subsectionstyle}[1]{{% \if@center\centering\else% \if@right\raggedleft\fi\fi% - \subsectionfont\textcolor{color1}{#1}% + \subsectionfont\textcolor{subsectioncolor}{#1}% \if@shortrules\else\if@mixedrules\else% \par\fi\fi}} -\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}} +\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}} %------------------------------------------------------------------------------- @@ -133,14 +133,14 @@ \newcommand*{\sectionrule}{} \newcommand*{\subsectionrule}{} \if@fullrules% - \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}} - \renewcommand*{\subsectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible} + \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}} + \renewcommand*{\subsectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible} \if@shortrules% - \renewcommand*{\sectionrule}{\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}} - \renewcommand*{\subsectionrule}{\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}} + \renewcommand*{\sectionrule}{\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}} + \renewcommand*{\subsectionrule}{\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}} \if@mixedrules% - \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}} - \renewcommand*{\subsectionrule}{\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}} + \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}} + \renewcommand*{\subsectionrule}{\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}} \if@norules% \renewcommand*{\sectionrule}{} \renewcommand*{\subsectionrule}{}\fi @@ -238,7 +238,7 @@ \ifthenelse{\isundefined{\@enclosure}}{}{% \\% \vfil% - {\color{color2}\itshape\enclname: \@enclosure}}% + {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}% \vfil} diff --git a/moderncvbodyiv.sty b/moderncvbodyiv.sty index 22d9ac7..a29d8c2 100644 --- a/moderncvbodyiv.sty +++ b/moderncvbodyiv.sty @@ -29,9 +29,9 @@ \renewcommand*{\hintfont}{\bfseries} % styles -\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}} -\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}} -\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}} +\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}} +\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}} +\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}} %------------------------------------------------------------------------------- @@ -177,7 +177,7 @@ \ifthenelse{\isundefined{\@enclosure}}{}{% \\% \vfil% - {\color{color2}\itshape\enclname: \@enclosure}}% + {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}% \vfil} diff --git a/moderncvbodyv.sty b/moderncvbodyv.sty index 96be31e..52ce05d 100644 --- a/moderncvbodyv.sty +++ b/moderncvbodyv.sty @@ -34,9 +34,9 @@ \renewcommand*{\hintfont}{\bfseries} % styles -\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}} -\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}} -\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}} +\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}} +\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}} +\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}} % lengths % used by \cvitem (and all children command) @@ -99,7 +99,7 @@ % underlying command to implement \cvitem, \subsection and \section \newcommand*{\@cvitem}[3][.5ex]{% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \if@aftersection\else% \vspace*{-\separatorrulewidth}\fi% HACK; I don't understand where the space is coming from, nor what it's exact value is :( @@ -165,7 +165,7 @@ {% \bibliographyhead{\refname}% % \small% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \noindent% \begin{tabular}[t]{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}% @@ -213,7 +213,7 @@ \ifthenelse{\isundefined{\@enclosure}}{}{% \\% \vfill% - {\color{color2}\itshape\enclname: \@enclosure}}} + {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}} \endinput diff --git a/moderncvfooti.sty b/moderncvfooti.sty index 03d84c1..99e5fd2 100644 --- a/moderncvfooti.sty +++ b/moderncvfooti.sty @@ -79,7 +79,7 @@ \fancyfoot[c]{% \parbox[b]{\footwidth}{% \centering% - \color{color2}\addressfont% + \color{addresscolor}\addressfont% \vspace{\baselineskip}% forces a white line to ensure space between main text and footer (as footer height can't be known in advance) \ifthenelse{\isundefined{\@addressstreet}}{}{\addtofoot[]{\addresssymbol\@addressstreet}% \ifthenelse{\equal{\@addresscity}{}}{}{\addtofoot[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty @@ -110,7 +110,7 @@ \fancyfoot[c]{% \parbox[b]{\footwidth}{% \centering% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \vspace{\baselineskip}% forces a white line to ensure space between main text and footer (as footer height can't be known in advance) \vspace{-\baselineskip}% to cancel out the extra vertical space taken by the name (below) and ensure perfect alignment of letter and cv footers \strut{\bfseries\upshape\@firstname~\@lastname}\\% the \strut is required to ensure the line is exactly \baselineskip tall diff --git a/moderncvheadi.sty b/moderncvheadi.sty index 346bf12..4c90312 100644 --- a/moderncvheadi.sty +++ b/moderncvheadi.sty @@ -48,10 +48,12 @@ \renewcommand*{\quotefont}{\large\slshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}} +\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}} +\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}} %------------------------------------------------------------------------------- @@ -77,7 +79,7 @@ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}% \savebox{\makecvheaddetailsbox}{% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \if@left\begin{tabular}[b]{@{}r@{}}\fi% \if@right\begin{tabular}[b]{@{}l@{}}\fi% \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% @@ -100,7 +102,7 @@ {% \if@left% \hspace*{\separatorcolumnwidth}\fi% - \color{color1}% + \color{pictureframecolor}% \setlength{\fboxrule}{\@photoframewidth}% \ifdim\@photoframewidth=0pt% \setlength{\fboxsep}{0pt}\fi% @@ -118,7 +120,7 @@ \begin{minipage}[b]{\makecvheadnamewidth}% \if@left\raggedright\fi% \if@right\raggedleft\fi% - \namestyle{\@firstname\ \@lastname}% + \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}% \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}% \end{minipage}}% % raise boxes if top option is set @@ -167,7 +169,7 @@ % optional detailed information \if@details% \raggedleft% - \addressfont\textcolor{color2}{% + \addressfont\textcolor{addresscolor}{% {\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse% % optional detailed information \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% diff --git a/moderncvheadii.sty b/moderncvheadii.sty index bf0a6d6..6569de5 100644 --- a/moderncvheadii.sty +++ b/moderncvheadii.sty @@ -47,10 +47,10 @@ \renewcommand*{\quotefont}{\large\slshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}} % commands \@initializecommand{\makeheaddetailssymbol}{% @@ -110,7 +110,7 @@ \setlength\fboxrule{\@photoframewidth}% \ifdim\@photoframewidth=0pt% \setlength{\fboxsep}{0pt}\fi% - {\color{color1}\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}}% + {\color{pictureframecolor}\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}}% % name (pre-rendering) \@initializelength{\makecvheadpicturewidth}% \settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}% @@ -121,9 +121,9 @@ \if@right\raggedleft\fi% \namefont% \if@alternate% alternate design: first- and lastname in lowercase with no space in between (distinction is made by color difference) - {\color{color2!50}\MakeLowercase\@firstname}{\color{color2}\MakeLowercase\@lastname}% + {\color{firstnamecolor}\MakeLowercase\@firstname}{\color{lastnamecolor}\MakeLowercase\@lastname}% \else% default design: first- and lastname as given with a space in between - {\color{color2!50}\@firstname} {\color{color2}\@lastname}\fi}}% + {\color{firstnamecolor}\@firstname} {\color{lastnamecolor}\@lastname}\fi}}% % rendering \if@left% \usebox{\makecvheadnamebox}% @@ -131,11 +131,11 @@ \if@right% \usebox{\makecvheadpicturebox}% \usebox{\makecvheadnamebox}\fi\\[-.35em]% - {\color{color2!50}\rule{\textwidth}{.25ex}}% + {\color{headrulecolor}\rule{\textwidth}{.25ex}}% % optional detailed information \if@details{% \\\null% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}% \ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}% diff --git a/moderncvheadiii.sty b/moderncvheadiii.sty index c3fafce..222abc9 100644 --- a/moderncvheadiii.sty +++ b/moderncvheadiii.sty @@ -36,10 +36,12 @@ \renewcommand*{\quotefont}{\large\slshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color1}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2!85}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}} +\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}} +\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}} % commands \@initializecommand{\makeheaddetailssymbol}{% @@ -81,12 +83,12 @@ \parbox{\makeheaddetailswidth}{% \centering% % name and title - \namestyle{\@firstname~\@lastname}% - \ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title) + \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}% + \ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title) % optional detailed information \if@details{% \\% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}% \ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}% diff --git a/moderncvheadiv.sty b/moderncvheadiv.sty index 1d24c96..eb87b29 100644 --- a/moderncvheadiv.sty +++ b/moderncvheadiv.sty @@ -38,10 +38,12 @@ \renewcommand*{\quotefont}{\large\itshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}} +\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}} +\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}} %------------------------------------------------------------------------------- @@ -80,7 +82,7 @@ \ifthenelse{\isundefined{\@photo}}% {}% {% - \color{color1}% + \color{pictureframecolor}% \setlength\fboxrule{\@photoframewidth}% \ifdim\@photoframewidth=0pt% \setlength{\fboxsep}{0pt}\fi% @@ -91,7 +93,7 @@ {\setlength{\makecvheadnamewidth}{\textwidth-\makecvheadpicturewidth}}% {}% \begin{minipage}[b]{\makecvheadnamewidth}% - \namestyle{\@firstname\ \@lastname}% + \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}% \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}% \end{minipage}% % optional photo @@ -103,7 +105,7 @@ % optional details \if@details% \makecvheadinfo{% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% @@ -152,7 +154,7 @@ \if@details% \hspace{0pt}% \marginpar{% - \addressfont\textcolor{color2}{% + \addressfont\textcolor{addresscolor}{% {\bfseries\@firstname~\@lastname}\@firstdetailselementfalse% \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty diff --git a/moderncvheadv.sty b/moderncvheadv.sty index eaabd4a..fce4518 100644 --- a/moderncvheadv.sty +++ b/moderncvheadv.sty @@ -37,10 +37,12 @@ \renewcommand*{\quotefont}{\large\slshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}} +\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}} +\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}} %------------------------------------------------------------------------------- @@ -61,7 +63,7 @@ \ifthenelse{\isundefined{\@photo}}% {}% {% - \color{color1}% + \color{pictureframecolor}% \setlength{\fboxrule}{\@photoframewidth}% \ifdim\@photoframewidth=0pt% \setlength{\fboxsep}{0pt}\fi% @@ -75,7 +77,7 @@ % optional details \if@details% \ifthenelse{\isundefined{\@photo}}{}{\\[0.5em]}% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% @@ -92,7 +94,7 @@ % name and optional title \newlength{\makecvheadpictureboxskip}% \setlength{\makecvheadpictureboxskip}{\totalheightof{\usebox{\makecvheadpicturebox}}}% - \namestyle{\@firstname\ \@lastname}% + \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}% \ifthenelse{\equal{\@title}{}}{ \ifthenelse{\isundefined{\@quote}}% {}% @@ -117,7 +119,7 @@ % underlying command to implement \makecvtitle, identical to \@cvitem from moderncvbodyv \let\standarddoublebackslash\\% \newcommand*{\@makecvtitle}[3][.5ex]{% - \arrayrulecolor{color1}% + \arrayrulecolor{headrulecolor}% \setlength\arrayrulewidth{1.2\p@}% \if@aftersection\else% \vspace*{-\arrayrulewidth}\fi% HACK; I don't understand where the space is coming from, nor what it's exact value is :( @@ -147,7 +149,7 @@ % optional detailed information \if@details% \raggedleft% - \addressfont\textcolor{color2}{% + \addressfont\textcolor{addresscolor}{% {\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse% % optional detailed information \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% diff --git a/moderncvheadvi.sty b/moderncvheadvi.sty index e532f9a..7364d0e 100644 --- a/moderncvheadvi.sty +++ b/moderncvheadvi.sty @@ -43,20 +43,22 @@ \renewcommand*{\quotefont}{\large\slshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color1}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2!85}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}} +\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}} +\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}} % commands \@initializecommand{\makehead}{% \setlength{\makeheaddetailswidth}{\textwidth}% % name and title \if@left\hfill\fi% - \namestyle{\@firstname~\@lastname}% + \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}% \ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}\\[-.35em]% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title) % rule - {\color{color1}\rule{\textwidth}{.25ex}}} + {\color{bodyrulecolor}\rule{\textwidth}{.25ex}}} %------------------------------------------------------------------------------- % resume head definition @@ -107,7 +109,7 @@ % optional detailed information \if@details{% \\\null% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}% \ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}% diff --git a/moderncvskillmatrix.sty b/moderncvskillmatrix.sty index 6cf41c0..5c1a893 100644 --- a/moderncvskillmatrix.sty +++ b/moderncvskillmatrix.sty @@ -252,10 +252,10 @@ % \cvskill{3} \begingroup \my@repeat@count=\z@ - \@whilenum\my@repeat@count<#1\do{\tikz\filldraw[color1] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% + \@whilenum\my@repeat@count<#1\do{\tikz\filldraw[skillmatrixfullcolor] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% \my@repeat@count\@ne\,}% \my@repeat@count=\numexpr5-\z@\relax - \@whilenum\my@repeat@count>#1\do{\tikz\filldraw[color2!30] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% + \@whilenum\my@repeat@count>#1\do{\tikz\filldraw[skillmatrixemptycolor] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% \my@repeat@count\m@ne\,}% \endgroup }% end \cvskill @@ -596,7 +596,7 @@ \RenewDocumentCommand\cvskilllegend{s +O{.25em} +O{\skillLegend@defaultLevelOne} +O{\skillLegend@defaultLevelTwo} +O{\skillLegend@defaultLevelThree} +O{\skillLegend@defaultLevelFour} +O{\skillLegend@defaultLevelFive} +m}{% \IfBooleanTF#1{% if a star is given, add dashed line \begingroup% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% % calculate descriptor widths \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% @@ -650,7 +650,7 @@ % in the stared and nonstared case \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}% \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}% - \arrayrulecolor{color1} + \arrayrulecolor{bodyrulecolor} \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth} @{\hspace{\separatorcolumnwidth}}p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}% p{2\skilllegend@padding}% @@ -697,7 +697,7 @@ }{% \cvitem[-0.5em]{#8}{}% }% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \RenewDocumentCommand{\@starIndependentTabular}{}{% \begingroup% @@ -766,7 +766,7 @@ \RenewDocumentCommand\cvskillplainlegend{s +O{.25em} +O{\skillPlainLegend@defaultLevelOne} +O{\skillPlainLegend@defaultLevelTwo} +O{\skillPlainLegend@defaultLevelThree} +O{\skillPlainLegend@defaultLevelFour} +O{\skillPlainLegend@defaultLevelFive} +m}{% \IfBooleanTF#1{% if a star is given, add dashed line \begingroup% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% % calculate descriptor widths \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% @@ -816,7 +816,7 @@ }% \IfBooleanTF#1{% if a star is given, add dashed line \begingroup% - \arrayrulecolor{color1} + \arrayrulecolor{bodyrulecolor} \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-6\skilllegend@padding}% \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-6\skilllegend@padding}% \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth} @@ -863,7 +863,7 @@ }{% \cvitem[-0.5em]{#8}{}% }% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \RenewDocumentCommand{\@starIndependentTabular}{}{% \begingroup% @@ -924,7 +924,7 @@ \RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix@HeaderDefaultOne} +O{\skillMatrix@HeaderDefaultTwo} +O{\skillMatrix@HeaderDefaultThree} +O{\skillMatrix@HeaderDefaultFour}}{% \begingroup \renewcommand{\arraystretch}{1.25} - \arrayrulecolor{color1} + \arrayrulecolor{bodyrulecolor} \begin{tabular}{@{}p{\skillmatrix@hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}% p{\cvskill@width}@{\hspace{\skillmatrix@padding}}% p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}% @@ -938,7 +938,7 @@ % Definition of \cvskillhead valid moderncvbodyv \if@moderncvbodyv% \RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix@HeaderDefaultOne} +O{\skillMatrix@HeaderDefaultTwo} +O{\skillMatrix@HeaderDefaultThree} +O{\skillMatrix@HeaderDefaultFour}}{% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :( \begingroup% @@ -990,7 +990,7 @@ \IfBooleanTF{#1}{% If a star is seen a dotted line is drawn above the entry \begingroup \renewcommand{\arraystretch}{1.25} - \arrayrulecolor{color1} + \arrayrulecolor{bodyrulecolor} \begin{tabular}{@{}p{\skillmatrix@hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}% p{\cvskill@width}@{\hspace{\skillmatrix@padding}}% p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}% @@ -1018,7 +1018,7 @@ \if@moderncvbodyv% \DeclareDocumentCommand\@starIndependentMatrixEntry{}{}% \RenewDocumentCommand\cvskillentry{s O{.25em} +m +m +m +m +m}{% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :( %test for the star * in the command diff --git a/moderncvstylebanking.sty b/moderncvstylebanking.sty index 29df385..f8ed6f7 100644 --- a/moderncvstylebanking.sty +++ b/moderncvstylebanking.sty @@ -60,7 +60,28 @@ \moderncvicons{letters} % do not use symbols, use letters \fi - +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% head and footer +\colorlet{lastnamecolor}{color1} +\colorlet{namecolor}{lastnamecolor} +\colorlet{headrulecolor}{lastnamecolor!50} +\colorlet{firstnamecolor}{lastnamecolor!60} +\colorlet{titlecolor}{color2!85} +\colorlet{addresscolor}{color2} +\colorlet{quotecolor}{color1} +\colorlet{pictureframecolor}{color1} +% body +\colorlet{bodyrulecolor}{color1} +\colorlet{sectioncolor}{color1} +\colorlet{subsectioncolor}{color1} +\colorlet{hintstylecolor}{color0} +% letter +\colorlet{letterclosingcolor}{color2} +% skillmatrix +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} %------------------------------------------------------------------------------- % header, body & footer diff --git a/moderncvstylecasual.sty b/moderncvstylecasual.sty index dd1c3eb..cf5a1b8 100644 --- a/moderncvstylecasual.sty +++ b/moderncvstylecasual.sty @@ -47,6 +47,28 @@ \moderncvicons{letters} % do not use symbols, use letters \fi +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% head and footer +\colorlet{lastnamecolor}{color2} +\colorlet{namecolor}{lastnamecolor} +\colorlet{headrulecolor}{lastnamecolor!50} +\colorlet{firstnamecolor}{lastnamecolor!50} +\colorlet{titlecolor}{color2} +\colorlet{addresscolor}{color2} +\colorlet{quotecolor}{color1} +\colorlet{pictureframecolor}{color1} +% body +\colorlet{bodyrulecolor}{color1} +\colorlet{sectioncolor}{color1} +\colorlet{subsectioncolor}{color1} +\colorlet{hintstylecolor}{color0} +% letter +\colorlet{letterclosingcolor}{color2} +% skillmatrix +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} %------------------------------------------------------------------------------- % header, body & footer diff --git a/moderncvstyleclassic.sty b/moderncvstyleclassic.sty index 7008b03..125e63c 100644 --- a/moderncvstyleclassic.sty +++ b/moderncvstyleclassic.sty @@ -48,6 +48,28 @@ \moderncvicons{letters} % do not use symbols, use letters \fi +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% head and footer +\colorlet{lastnamecolor}{color2} +\colorlet{namecolor}{lastnamecolor} +\colorlet{headrulecolor}{lastnamecolor!50} +\colorlet{firstnamecolor}{lastnamecolor!50} +\colorlet{titlecolor}{color2} +\colorlet{addresscolor}{color2} +\colorlet{quotecolor}{color1} +\colorlet{pictureframecolor}{color1} +% body +\colorlet{bodyrulecolor}{color1} +\colorlet{sectioncolor}{color1} +\colorlet{subsectioncolor}{color1} +\colorlet{hintstylecolor}{color0} +% letter +\colorlet{letterclosingcolor}{color2} +% skillmatrix +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} %------------------------------------------------------------------------------- % header, body & footer diff --git a/moderncvstyleempty.sty b/moderncvstyleempty.sty index 056a37f..bae1545 100644 --- a/moderncvstyleempty.sty +++ b/moderncvstyleempty.sty @@ -32,6 +32,29 @@ % style definition %------------------------------------------------------------------------------- +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% head and footer +\colorlet{lastnamecolor}{color2} +% \colorlet{namecolor}{lastnamecolor} +\colorlet{headrulecolor}{lastnamecolor!50} +\colorlet{firstnamecolor}{lastnamecolor!50} +\colorlet{titlecolor}{color2} +\colorlet{addresscolor}{color2} +\colorlet{quotecolor}{color1} +\colorlet{pictureframecolor}{color1} +% body +\colorlet{bodyrulecolor}{color1} +\colorlet{sectioncolor}{color1} +\colorlet{subsectioncolor}{color1} +\colorlet{hintstylecolor}{color0} +% letter +\colorlet{letterclosingcolor}{color2} +% skillmatrix +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} + %------------------------------------------------------------------------------- % fonts & icons %------------------------------------------------------------------------------- diff --git a/moderncvstylefancy.sty b/moderncvstylefancy.sty index ea56bba..25cde7d 100644 --- a/moderncvstylefancy.sty +++ b/moderncvstylefancy.sty @@ -21,6 +21,30 @@ \ExecuteOptions{symbols} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% head and footer +\colorlet{lastnamecolor}{color1} +\colorlet{namecolor}{lastnamecolor} +\colorlet{headrulecolor}{color1} +\colorlet{firstnamecolor}{lastnamecolor!50} +\colorlet{titlecolor}{color2} +\colorlet{addresscolor}{color2} +\colorlet{quotecolor}{color1} +\colorlet{pictureframecolor}{color1} +% body +\colorlet{bodyrulecolor}{color1} +\colorlet{sectioncolor}{color1} +\colorlet{subsectioncolor}{color1} +\colorlet{hintstylecolor}{color0} +% letter +\colorlet{letterclosingcolor}{color2} +% skillmatrix +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} + + %------------------------------------------------------------------------------- % fonts & icons %------------------------------------------------------------------------------- diff --git a/moderncvstyleoldstyle.sty b/moderncvstyleoldstyle.sty index 78225e0..466af7e 100644 --- a/moderncvstyleoldstyle.sty +++ b/moderncvstyleoldstyle.sty @@ -50,6 +50,30 @@ \fi +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% head and footer +\colorlet{lastnamecolor}{color2} +\colorlet{namecolor}{lastnamecolor} +\colorlet{headrulecolor}{lastnamecolor!50} +\colorlet{firstnamecolor}{lastnamecolor!50} +\colorlet{titlecolor}{color2} +\colorlet{addresscolor}{color2} +\colorlet{quotecolor}{color1} +\colorlet{pictureframecolor}{color1} +% body +\colorlet{bodyrulecolor}{color1} +\colorlet{sectioncolor}{color1} +\colorlet{subsectioncolor}{color1} +\colorlet{hintstylecolor}{color0} +% letter +\colorlet{letterclosingcolor}{color2} +% skillmatrix +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} + + %------------------------------------------------------------------------------- % header, body & footer %------------------------------------------------------------------------------- diff --git a/template.tex b/template.tex index 014a2f1..1a8314f 100644 --- a/template.tex +++ b/template.tex @@ -8,9 +8,9 @@ \documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman') -% moderncv themes -\moderncvstyle{classic} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy' \moderncvcolor{blue} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red' +% moderncv themes +\moderncvstyle{casual} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy' %\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name %\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page From d13f919b8d2c39f4f4f46f6c3fd0c80adeca47e4 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 29 Nov 2023 18:42:33 +0100 Subject: [PATCH 04/19] Fork `moderncvstylecontemporary.sty` from the `classic` style --- moderncvbodyvi.sty | 175 +++++++++++++++++++++++++++++++ moderncvheadvii.sty | 187 ++++++++++++++++++++++++++++++++++ moderncvstylecontemporary.sty | 53 ++++++++++ 3 files changed, 415 insertions(+) create mode 100644 moderncvbodyvi.sty create mode 100644 moderncvheadvii.sty create mode 100644 moderncvstylecontemporary.sty diff --git a/moderncvbodyvi.sty b/moderncvbodyvi.sty new file mode 100644 index 0000000..610ee33 --- /dev/null +++ b/moderncvbodyvi.sty @@ -0,0 +1,175 @@ +%% start of file `moderncvbodyvi.sty'. +%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com). +%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me). +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvbodyvi}[2023/11/21 v2.0.0 modern curriculum vitae and letter body variant: 6] + + +%------------------------------------------------------------------------------- +% required packages +%------------------------------------------------------------------------------- + + +%------------------------------------------------------------------------------- +% overall body definition +%------------------------------------------------------------------------------- +% fonts +\renewcommand*{\sectionfont}{\Large\mdseries\upshape} +\renewcommand*{\subsectionfont}{\large\mdseries\upshape} +\renewcommand*{\hintfont}{} + +% styles +\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}} +\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}} +\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}} + + +%------------------------------------------------------------------------------- +% resume body definition +%------------------------------------------------------------------------------- +% lengths +% used by \cvitem (and all children command) +\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.175\textwidth} +\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth} +\@initializelength{\maincolumnwidth} +% used by \cvdoubleitem +\@initializelength{\doubleitemcolumnwidth} +% used by \cvlistitem +\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol} +\@initializelength{\listitemcolumnwidth} +% used by \cvlistdoubleitem +\@initializelength{\listdoubleitemcolumnwidth} +% default moderncv \photo (change the definition such that by default the photo and its box align with the section bars +\RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}% + +% commands +\renewcommand*{\recomputecvbodylengths}{% + % body lengths + \setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip-\separatorcolumnwidth-\hintscolumnwidth}% + \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}% + \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}% + \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}% + \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}% + \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}% + % regular lengths + \setlength{\parskip}{0\p@}} + +\@initializelength{\baseletterheight} +\settoheight{\baseletterheight}{\sectionstyle{o}} +\setlength{\baseletterheight}{\baseletterheight-0.95ex} +\RenewDocumentCommand{\section}{sm}{% + \par\addvspace{2.5ex}% + \phantomsection{}% reset the anchor for hyperrefs + \addcontentsline{toc}{section}{#2}% + \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}% + \par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading + +\RenewDocumentCommand{\subsection}{sm}{% + \par\addvspace{1ex}% + \phantomsection{}% reset the anchor for hyperrefs + \addcontentsline{toc}{subsection}{#2}% + \cvitem[0ex]{}{\strut\subsectionstyle{#2}}% + \par\nobreak\addvspace{.5ex}\@afterheading}% to avoid a pagebreak after the heading + +\renewcommand*{\cvitem}[3][.25em]{% + \begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}% + \raggedleft\hintstyle{#2} &{#3}% + \end{tabular}% + \par\addvspace{#1}} + +\renewcommand*{\cvdoubleitem}[5][.25em]{% + \cvitem[#1]{#2}{% + \begin{minipage}[t]{\doubleitemcolumnwidth}#3\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}% + \hspace*{\separatorcolumnwidth}% + \begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}} + +\renewcommand*{\cvlistitem}[2][.25em]{% + \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}} + +\renewcommand*{\cvlistdoubleitem}[3][.25em]{% + \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \ifthenelse{\equal{#3}{}}% + {}% + {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}} + +\renewcommand*{\cventry}[7][.25em]{% + \cvitem[#1]{#2}{% + {\bfseries#3}% + \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}% + \ifthenelse{\equal{#5}{}}{}{, #5}% + \ifthenelse{\equal{#6}{}}{}{, #6}% + .\strut% + \ifx&% + \else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}} + +\@initializebox{\cvitemwithcommentbox} +\@initializelength{\cvitemwithcommentskilllength} +\@initializelength{\cvitemwithcommentcommentlength} +\renewcommand*{\cvitemwithcomment}[4][.25em]{% + \savebox{\cvitemwithcommentbox}{{#3}}% + \setlength{\cvitemwithcommentskilllength}{\widthof{\usebox{\cvitemwithcommentbox}}}% + \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentskilllength}% + \cvitem[#1]{#2}{% + \begin{minipage}[t]{\cvitemwithcommentskilllength}\usebox{\cvitemwithcommentbox}\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}}} + +\renewenvironment{thebibliography}[1]% + {% + \bibliographyhead{\refname}% +% \small% + \begin{list}{\bibliographyitemlabel}% + {% + \setlength{\topsep}{0pt}% + \setlength{\labelwidth}{\hintscolumnwidth}% + \setlength{\labelsep}{\separatorcolumnwidth}% + \leftmargin\labelwidth% + \advance\leftmargin\labelsep% + \@openbib@code% + \usecounter{enumiv}% + \let\p@enumiv\@empty% + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy% + \clubpenalty4000%\@clubpenalty \clubpenalty% + \widowpenalty4000% + \sfcode`\.\@m% + \sfcode `\=1000\relax}% + {% + \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}% + \end{list}} + + +%------------------------------------------------------------------------------- +% letter style definition +%------------------------------------------------------------------------------- +% commands +\renewcommand*{\recomputeletterbodylengths}{% + \recomputecvlengths% + \setlength{\parskip}{6\p@}} + +\renewcommand*{\makeletterclosing}{ + \@closing\\[3em]% + {\bfseries\@firstname~\@lastname}% + \ifthenelse{\isundefined{\@enclosure}}{}{% + \\% + \vfil% + {\color{color2}\itshape\enclname: \@enclosure}}% + \vfil} + + +\endinput + + +%% end of file `moderncvbodyvi.sty'. diff --git a/moderncvheadvii.sty b/moderncvheadvii.sty new file mode 100644 index 0000000..413177a --- /dev/null +++ b/moderncvheadvii.sty @@ -0,0 +1,187 @@ +%% start of file `moderncvheadvii.sty'. +%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com). +%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me). +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvheadvii}[2023/11/21 v2.0.0 modern curriculum vitae and letter header variant: 7] + +% details options: "details" (default) or "nodetails" +\@initializeif{\if@details}\@detailsfalse +\DeclareOption{details} {\@detailstrue} +\DeclareOption{nodetails} {\@detailsfalse} + +% left/right options: "left" (default) or "right" +\@initializeif{\if@left} \@leftfalse +\DeclareOption{left} {\@lefttrue\@rightfalse} +\@initializeif{\if@right}\@rightfalse +\DeclareOption{right} {\@leftfalse\@righttrue} + +\DeclareOption*{}% avoid choking on unknown options +\ExecuteOptions{details,left} +\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package + + +%------------------------------------------------------------------------------- +% required packages +%------------------------------------------------------------------------------- + + +%------------------------------------------------------------------------------- +% overall head definition +%------------------------------------------------------------------------------- +% fonts +\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape} +\renewcommand*{\titlefont}{\LARGE\mdseries\slshape} +\renewcommand*{\addressfont}{\small\mdseries\slshape} +\renewcommand*{\quotefont}{\large\slshape} + +% styles +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} + + +%------------------------------------------------------------------------------- +% resume head definition +%------------------------------------------------------------------------------- +% lengths +\@initializelength{\quotewidth} +\@initializelength{\makecvheadnamewidth}% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically) +\renewcommand*{\recomputecvheadlengths}{% + \setlength{\quotewidth}{0.65\textwidth}} + +% commands +\renewcommand*{\makecvhead}{% + % recompute lengths (in case we are switching from letter to resume, or vice versa) + \recomputecvlengths% + % optional detailed information (pre-rendering) + \@initializebox{\makecvheaddetailsbox}% + \if@details% + \def\phonesdetails{}% + \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number + \protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% + \def\socialsdetails{}% + \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link + \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}% + \savebox{\makecvheaddetailsbox}{% + \addressfont\color{color2}% + \if@left\begin{tabular}[b]{@{}r@{}}\fi% + \if@right\begin{tabular}[b]{@{}l@{}}\fi% + \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% + \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty + \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% + \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict + \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}% + \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}% + \socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict + \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}% + \end{tabular} + }\fi% + % optional photo (pre-rendering) + \@initializebox{\makecvheadpicturebox}% + \savebox{\makecvheadpicturebox}{% + \ifthenelse{\isundefined{\@photo}}% + {}% + {% + \if@left% + \hspace*{\separatorcolumnwidth}\fi% + \color{color1}% + \setlength{\fboxrule}{\@photoframewidth}% + \ifdim\@photoframewidth=0pt% + \setlength{\fboxsep}{0pt}\fi% + \framebox{\includegraphics[width=\@photowidth]{\@photo}}}% + \if@right% + \hspace*{\separatorcolumnwidth}\fi}% + % name and title (pre-rendering) + \@initializelength{\makecvheaddetailswidth}\settowidth{\makecvheaddetailswidth}{\usebox{\makecvheaddetailsbox}}% + \@initializelength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}% + \ifthenelse{\lengthtest{\makecvheadnamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvheadnamewidth=0pt) + {\setlength{\makecvheadnamewidth}{\textwidth-\makecvheaddetailswidth-\makecvheadpicturewidth}}% + {}% + \@initializebox{\makecvheadnamebox}% + \savebox{\makecvheadnamebox}{% + \begin{minipage}[b]{\makecvheadnamewidth}% + \if@left\raggedright\fi% + \if@right\raggedleft\fi% + \namestyle{\@firstname\ \@lastname}% + \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}% + \end{minipage}}% + % rendering + \if@left% + \usebox{\makecvheadnamebox}% + \hfill% + \llap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced + \usebox{\makecvheadpicturebox}\fi% + \if@right% + \usebox{\makecvheadpicturebox}% + \rlap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced + \hfill% + \usebox{\makecvheadnamebox}\fi% + \\[2.5em]% + % optional quote + \ifthenelse{\isundefined{\@quote}}% + {}% + {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}% + \par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead + + +%------------------------------------------------------------------------------- +% letter head definition +%------------------------------------------------------------------------------- +% lengths +%\renewcommand*{\recomputeletterheadlengths}{} + +% commands +\renewcommand*{\makeletterhead}{% + % recompute lengths (in case we are switching from letter to resume, or vice versa) + \recomputeletterlengths% + % sender contact info + \hfill% + \begin{minipage}{.5\textwidth}% + % optional detailed information + \if@details% + \raggedleft% + \addressfont\textcolor{color2}{% + {\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse% + % optional detailed information + \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% + \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty + \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% + \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number + \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}% + \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}% + \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}% + \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi% + \end{minipage}\\[1em] + % recipient block + \begin{minipage}[t]{.5\textwidth} + \raggedright% + \addressfont% + {\bfseries\upshape\@recipientname}\\% + \@recipientaddress% + \end{minipage} + % date + \hfill% US style +% \\[1em]% UK style + \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900" + % opening + \raggedright% + \@opening\\[1.5em]% + % ensure no extra spacing after \makelettertitle due to a possible blank line +% \ignorespacesafterend% not working + \hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}} + + +\endinput + + +%% end of file `moderncvheadvii.sty'. diff --git a/moderncvstylecontemporary.sty b/moderncvstylecontemporary.sty new file mode 100644 index 0000000..c3411ba --- /dev/null +++ b/moderncvstylecontemporary.sty @@ -0,0 +1,53 @@ +%% start of file `moderncvstylecontemporary.sty'. +%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com). +%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me). +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvstylecontemporary}[2023/11/24 v2.0.0 modern curriculum vitae and letter style scheme: contemporary] + +% head section alignment options: "left" (default) or "right" +\@initializecommand{\moderncvstyleheadoptions}{} +\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}} +\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}} + +\DeclareOption*{}% avoid choking on unknown options +\ExecuteOptions{left} +\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package + +%------------------------------------------------------------------------------- +% fonts & icons +%------------------------------------------------------------------------------- +% Latin Modern fonts +%\ifxetexorluatex +% \setmainfont{Latin Modern Roman} +% \setsansfont{Latin Modern Sans} +% \setmathfont{Latin Modern Math} +%\else + \IfFileExists{lmodern.sty}% + {\RequirePackage{lmodern}}% + {} +%\fi + +% symbols +\moderncvicons{marvosym} + + +%------------------------------------------------------------------------------- +% header, body & footer +%------------------------------------------------------------------------------- +\moderncvhead[\moderncvstyleheadoptions]{7} +\moderncvbody{6} + + +\endinput + + +%% end of file `moderncvstylecontemporary.sty'. From d85c39d150e78180edd7495cef51e713e0883415 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 29 Nov 2023 18:42:33 +0100 Subject: [PATCH 05/19] Add new `cerulean` color theme --- moderncvcolorcerulean.sty | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 moderncvcolorcerulean.sty diff --git a/moderncvcolorcerulean.sty b/moderncvcolorcerulean.sty new file mode 100644 index 0000000..1f7cce8 --- /dev/null +++ b/moderncvcolorcerulean.sty @@ -0,0 +1,32 @@ +%% start of file `moderncvcolorcerulean.sty'. +%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com). +%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me). +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvcolorcerulean}[2023/11/21 v2.0.0 modern curriculum vitae and letter color scheme: cerulean] + + +%------------------------------------------------------------------------------- +% color scheme definition +%------------------------------------------------------------------------------- +\definecolor{color0}{rgb}{0,0,0}% black +\definecolor{color1}{HTML}{0081a7}% cerulean +\definecolor{color2}{HTML}{4d908e}% dark cyan +\definecolor{headTL}{HTML}{00afb9}% verdigris +\colorlet{headBR}{color1} +\definecolor{headtext}{HTML}{ffffff}% white +\colorlet{headhr}{color2} + + +\endinput + + +%% end of file `moderncvcolorcerulean.sty'. From 8b74bf12f25665a669d5a469aaeec7bbf4069e2a Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 29 Nov 2023 18:42:33 +0100 Subject: [PATCH 06/19] [contemporary] Update head style 7 * Provide initial header style used by the `contemporary` theme. --- moderncvheadvii.sty | 78 +++++++++++++++++++++++++++++++++------------ 1 file changed, 57 insertions(+), 21 deletions(-) diff --git a/moderncvheadvii.sty b/moderncvheadvii.sty index 413177a..9619e62 100644 --- a/moderncvheadvii.sty +++ b/moderncvheadvii.sty @@ -17,6 +17,11 @@ \@initializeif{\if@details}\@detailsfalse \DeclareOption{details} {\@detailstrue} \DeclareOption{nodetails} {\@detailsfalse} +% QR options: "qr" (default) or "noqr". If "qr" is specified, a QR code is generated to point to the +% homepage and placed near the details section +\@initializeif{\if@headqr}\@headqrfalse +\DeclareOption{qr} {\@headqrtrue} +\DeclareOption{noqr} {\@headqrfalse} % left/right options: "left" (default) or "right" \@initializeif{\if@left} \@leftfalse @@ -25,29 +30,37 @@ \DeclareOption{right} {\@leftfalse\@righttrue} \DeclareOption*{}% avoid choking on unknown options -\ExecuteOptions{details,left} +\ExecuteOptions{details,qr,left} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package %------------------------------------------------------------------------------- % required packages %------------------------------------------------------------------------------- +\RequirePackage{qrcode} +\RequirePackage{tikz} +\usetikzlibrary{tikzmark,fit} %------------------------------------------------------------------------------- % overall head definition %------------------------------------------------------------------------------- +\@ifundefined{\string\color@headTL}{\colorlet{headTL}{color1}}{} +\@ifundefined{\string\color@headBR}{\colorlet{headBR}{color1}}{} +\@ifundefined{\string\color@headtext}{\colorlet{headtext}{color2}}{} +\@ifundefined{\string\color@headhr}{\colorlet{headhr}{color2}}{} + % fonts -\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape} +\renewcommand*{\namefont}{\fontsize{30}{32}\rmfamily\mdseries\upshape} \renewcommand*{\titlefont}{\LARGE\mdseries\slshape} \renewcommand*{\addressfont}{\small\mdseries\slshape} \renewcommand*{\quotefont}{\large\slshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{headtext}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{headtext}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{headtext}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color0}{#1}}} %------------------------------------------------------------------------------- @@ -73,7 +86,7 @@ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}% \savebox{\makecvheaddetailsbox}{% - \addressfont\color{color2}% + \addressfont\color{headtext}% \if@left\begin{tabular}[b]{@{}r@{}}\fi% \if@right\begin{tabular}[b]{@{}l@{}}\fi% \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% @@ -92,15 +105,24 @@ \ifthenelse{\isundefined{\@photo}}% {}% {% - \if@left% - \hspace*{\separatorcolumnwidth}\fi% - \color{color1}% - \setlength{\fboxrule}{\@photoframewidth}% - \ifdim\@photoframewidth=0pt% - \setlength{\fboxsep}{0pt}\fi% - \framebox{\includegraphics[width=\@photowidth]{\@photo}}}% \if@right% - \hspace*{\separatorcolumnwidth}\fi}% + \hspace*{\separatorcolumnwidth}\fi% + \begin{tikzpicture} + \path[top color=headBR,bottom color=headTL,shading angle=45] (0,0) circle (\dimexpr\@photowidth/2+\@photoframewidth*2); + \path[fill=white] (0,0) circle (\dimexpr\@photowidth/2+\@photoframewidth); + \begin{scope} + \clip (0,0) circle (\dimexpr\@photowidth/2); + \node[inner sep=0pt] at (0,0) {\includegraphics[width=\@photowidth]{\@photo}}; + \end{scope} + \end{tikzpicture}% + }% + \if@left% + \hspace*{\separatorcolumnwidth}\fi}% + % optional QR for homepage (pre-rendering) + \@initializebox{\makecvheadqrbox}% + \savebox{\makecvheadqrbox}{% + \ifthenelse{\isundefined{\@homepage}}{}{\tikz\node[inner sep=1ex,fill=white]{\qrcode[height=1.5cm]{\@homepage}};}% + }% % name and title (pre-rendering) \@initializelength{\makecvheaddetailswidth}\settowidth{\makecvheaddetailswidth}{\usebox{\makecvheaddetailsbox}}% \@initializelength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}% @@ -112,25 +134,39 @@ \begin{minipage}[b]{\makecvheadnamewidth}% \if@left\raggedright\fi% \if@right\raggedleft\fi% - \namestyle{\@firstname\ \@lastname}% + \namestyle{\@firstname\ {\scshape\@lastname}}% \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}% \end{minipage}}% % rendering + \begin{tikzpicture}[remember picture,overlay] + \node(head-bg) [top color=headTL,bottom color=headBR,shading angle=45,inner sep=0pt, + fit={(current page.north west)(current page.north east)(pic cs:head-end)}] {}; + % Users may define `\@moderncvheadBackground` for additional background decoration + \ifthenelse{\isundefined{\@moderncvheadBackground}}{}{\@moderncvheadBackground} + + \path[draw,line width=\@photoframewidth] + (head-bg.south west) edge[color=headhr!85!black] ([xshift=8em]head-bg.south west) + ([xshift=8em]head-bg.south west) edge[color=headhr] ([xshift=-8em]head-bg.south east) + ([xshift=-8em]head-bg.south east) edge[color=headhr!85!black] (head-bg.south east); + \end{tikzpicture}% \if@left% + \usebox{\makecvheadpicturebox}% \usebox{\makecvheadnamebox}% \hfill% \llap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced - \usebox{\makecvheadpicturebox}\fi% + \usebox{\makecvheadqrbox}\fi% \if@right% - \usebox{\makecvheadpicturebox}% + \usebox{\makecvheadqrbox}% \rlap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced \hfill% - \usebox{\makecvheadnamebox}\fi% - \\[2.5em]% + \usebox{\makecvheadnamebox}% + \usebox{\makecvheadpicturebox}\fi% + \\[.15em]% + \tikzmark{head-end}\\[.15em]% % optional quote \ifthenelse{\isundefined{\@quote}}% {}% - {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}% + {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[.15em]}}% \par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead From 66e2655b7cb4b47d0da67d85fdc590575e08ac70 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 29 Nov 2023 18:42:33 +0100 Subject: [PATCH 07/19] Initial implementation of a vertical timeline --- moderncvverticaltimeline.sty | 79 ++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 moderncvverticaltimeline.sty diff --git a/moderncvverticaltimeline.sty b/moderncvverticaltimeline.sty new file mode 100644 index 0000000..1ee94a5 --- /dev/null +++ b/moderncvverticaltimeline.sty @@ -0,0 +1,79 @@ +%% start of file `moderncvverticaltimeline.sty'. +%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me). +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvverticaltimeline}[2023/11/29 v2.0.0 modern curriculum vitae vertical timeline] + + +%------------------------------------------------------------------------------- +% required packages +%------------------------------------------------------------------------------- +\RequirePackage{tikz} + +%------------------------------------------------------------------------------- +% vertical timeline implementation +%------------------------------------------------------------------------------- +\tikzset{ + tl_milestone/.style={circle,inner sep=1.5pt,draw=color0!20,label={west:#1}}, + tl_link/.style={thick,densely dotted,color0!20}, +} + +\newcounter{tl@chainidx}\setcounter{tl@chainidx}{0} +\newcounter{tl@nodeidx}\setcounter{tl@nodeidx}{0} + +% Mark the end of the current chain; any `\tl@milestone` issued afterward will be on a new timeline. +\def\tl@resetchain{% + \stepcounter{tl@chainidx}% + \setcounter{tl@nodeidx}{0}% +} + +% Create a node in the current timeline and link it to the previous node; if the previous milestone +% is on the last shipped out page, draw a line that extends until the top margin. The argument is laid out as a label (default left). +\def\tl@milestone#1{% + \edef\@tl@prev{tl-\thetl@chainidx-\thetl@nodeidx}% + \stepcounter{tl@nodeidx}% + \edef\@tl@this{tl-\thetl@chainidx-\thetl@nodeidx}% + \tikz[remember picture,overlay] { + \node[tl_milestone={#1}] (\@tl@this) {}; + \ifnum\thetl@nodeidx>1 + \pgfpointdiff{\pgfpointanchor{\@tl@prev}{center}}{\pgfpointanchor{\@tl@this}{center}} + \ifnum\pgf@y>0 + \draw[tl_link] (\@tl@this) -- ([yshift=-1em] \@tl@this |- current page.north); + \else + \draw[tl_link] (\@tl@this) -- (\@tl@prev); + \fi + \fi + } +} + +\AddToHook{shipout/background}{% + % If there are follow-up milestones in the current timeline, draw a line that extends until the bottom margin + \edef\@tl@prev{tl-\thetl@chainidx-\number\numexpr\thetl@nodeidx-1}% + \edef\@tl@this{tl-\thetl@chainidx-\thetl@nodeidx}% + \tikz[remember picture,overlay] { + \ifnum\thetl@nodeidx>1 + \pgfpointdiff{\pgfpointanchor{\@tl@prev}{center}}{\pgfpointanchor{\@tl@this}{center}} + \ifnum\pgf@y>0 + \draw[tl_link] (\@tl@prev) -- ([yshift=1em] \@tl@prev |- current page.south); + \fi + \fi + } +} + +\AtEndDocument{\tl@resetchain} + +\let\@old@section=\section% +\RenewDocumentCommand{\section}{sm}{\tl@resetchain\@old@section{#1}} + +\endinput + + +%% end of file `moderncvverticaltimeline.sty'. From c41143a10d5e57a298e1ee3f0166f2d7b00e7e1b Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 29 Nov 2023 18:42:33 +0100 Subject: [PATCH 08/19] [contemporary] Update body style 6 * Provide initial body style for the `contemporary` theme --- moderncvbodyvi.sty | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/moderncvbodyvi.sty b/moderncvbodyvi.sty index 610ee33..3b13b1b 100644 --- a/moderncvbodyvi.sty +++ b/moderncvbodyvi.sty @@ -17,13 +17,14 @@ %------------------------------------------------------------------------------- % required packages %------------------------------------------------------------------------------- +\RequirePackage{moderncvverticaltimeline} %------------------------------------------------------------------------------- % overall body definition %------------------------------------------------------------------------------- % fonts -\renewcommand*{\sectionfont}{\Large\mdseries\upshape} +\renewcommand*{\sectionfont}{\Large\upshape\bfseries} \renewcommand*{\subsectionfont}{\large\mdseries\upshape} \renewcommand*{\hintfont}{} @@ -66,11 +67,15 @@ \@initializelength{\baseletterheight} \settoheight{\baseletterheight}{\sectionstyle{o}} \setlength{\baseletterheight}{\baseletterheight-0.95ex} -\RenewDocumentCommand{\section}{sm}{% +% The optional argument can be used to place a small icon near the section name. +% E.g. `\section[\faBookmark]{Education}` +\RenewDocumentCommand{\section}{sO{}m}{% + \tl@resetchain% \par\addvspace{2.5ex}% \phantomsection{}% reset the anchor for hyperrefs - \addcontentsline{toc}{section}{#2}% - \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}% + \addcontentsline{toc}{section}{#3}% + \strut\sectionstyle{\textcolor{color1!55!white}{{#2}\rule{.75ex}{0pt}\rule{1pt}{\heightof{#3}}}% + \rule{.75ex}{0pt}#3}% \par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading \RenewDocumentCommand{\subsection}{sm}{% @@ -105,12 +110,12 @@ {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}} \renewcommand*{\cventry}[7][.25em]{% - \cvitem[#1]{#2}{% + \cvitem[#1]{\tl@milestone{#2}}{% {\bfseries#3}% \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}% \ifthenelse{\equal{#5}{}}{}{, #5}% \ifthenelse{\equal{#6}{}}{}{, #6}% - .\strut% + \strut% \ifx&% \else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}} From fd3bf93f9ae970e710fd716209b3ef1fc8ed2624 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Mon, 29 Apr 2024 20:52:13 +0200 Subject: [PATCH 09/19] [contemporary] Support subject and signature in cover letter --- moderncvbodyvi.sty | 3 ++- moderncvheadvii.sty | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/moderncvbodyvi.sty b/moderncvbodyvi.sty index 3b13b1b..8a765ce 100644 --- a/moderncvbodyvi.sty +++ b/moderncvbodyvi.sty @@ -165,7 +165,8 @@ \setlength{\parskip}{6\p@}} \renewcommand*{\makeletterclosing}{ - \@closing\\[3em]% + \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set + \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}} {\bfseries\@firstname~\@lastname}% \ifthenelse{\isundefined{\@enclosure}}{}{% \\% diff --git a/moderncvheadvii.sty b/moderncvheadvii.sty index 9619e62..c01a232 100644 --- a/moderncvheadvii.sty +++ b/moderncvheadvii.sty @@ -209,6 +209,8 @@ \hfill% US style % \\[1em]% UK style \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900" + % optional subject + \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}} % opening \raggedright% \@opening\\[1.5em]% From 1ac6c08efab062aecc86a28fd4b95b1795f23612 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Mon, 29 Apr 2024 21:14:42 +0200 Subject: [PATCH 10/19] Update `template.tex` --- template.tex | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/template.tex b/template.tex index 1a8314f..48a7fce 100644 --- a/template.tex +++ b/template.tex @@ -8,17 +8,23 @@ \documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman') -\moderncvcolor{blue} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red' +\moderncvcolor{cerulean} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red'; for contemporary style use 'cerulean' % moderncv themes -\moderncvstyle{casual} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy' +\moderncvstyle[]{contemporary} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle', 'fancy' and 'contemporary' + % the 'contemporary' style optionally takes the `qr` (default) or `noqr` options %\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name %\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page % adjust the page margins -\usepackage[scale=0.75]{geometry} +\usepackage[hmargin=0.5in,vmargin=10pt]{geometry} % the 'contemporary' style looks better with reduced margins; uncomment the line below for increased margin +%\usepackage[scale=0.75]{geometry} %\setlength{\hintscolumnwidth}{3cm} % if you want to change the width of the column with the dates %\setlength{\makecvheadnamewidth}{10cm} % for the 'classic' style, if you want to force the width allocated to your name and avoid line breaks. be careful though, the length is normally calculated to avoid any overlap with your personal info; use this at your own typographical risks... +% the 'contemporary' style allows to append additional elements to the head background; uncomment and customize if needed +%\def\@moderncvheadBackground{ +%} + % font loading % for luatex and xetex, do not use inputenc and fontenc % see https://tex.stackexchange.com/a/496643 @@ -30,6 +36,12 @@ \setsansfont{Latin Modern Sans} \setmonofont{Latin Modern Mono} \setmathfont{Latin Modern Math} + + % you may also consider Fira Sans Light for a extra modern look + %\setsansfont[ItalicFont={Fira Sans Light Italic},% + % BoldFont={Fira Sans},% + % BoldItalicFont={Fira Sans Italic}]% + % {Fira Sans Light}% \else \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} @@ -95,7 +107,7 @@ \extrainfo{additional information} % optional, remove / comment the line if not wanted -\photo[64pt][0.4pt]{picture} % optional, remove / comment the line if not wanted; '64pt' is the height the picture must be resized to, 0.4pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file +\photo[64pt][2pt]{picture} % optional, remove / comment the line if not wanted; '64pt' is the height the picture must be resized to, 2pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file \quote{Some quote} % optional, remove / comment the line if not wanted % bibliography adjustments (only useful if you make citations in your resume, or print a list of publications using BibTeX) @@ -116,7 +128,7 @@ %----- resume --------------------------------------------------------- \makecvtitle -\section{Education} +\section{Education} % for 'contemporary' style use optional argument for displaying an icon, e.g. \section[\faGraduationCap]{Education} \cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description} % arguments 3 to 6 can be left empty \cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description} From b5d6a6e79ffd55b36fed6aee61fabe761c0cff2c Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 1 May 2024 13:47:23 +0200 Subject: [PATCH 11/19] [contemporary] Properly support `qr` and `noqr` options --- moderncvheadvii.sty | 7 ++++--- moderncvstylecontemporary.sty | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/moderncvheadvii.sty b/moderncvheadvii.sty index c01a232..f0c259e 100644 --- a/moderncvheadvii.sty +++ b/moderncvheadvii.sty @@ -120,9 +120,10 @@ \hspace*{\separatorcolumnwidth}\fi}% % optional QR for homepage (pre-rendering) \@initializebox{\makecvheadqrbox}% - \savebox{\makecvheadqrbox}{% - \ifthenelse{\isundefined{\@homepage}}{}{\tikz\node[inner sep=1ex,fill=white]{\qrcode[height=1.5cm]{\@homepage}};}% - }% + \if@headqr% + \savebox{\makecvheadqrbox}{% + \ifthenelse{\isundefined{\@homepage}}{}{\tikz\node[inner sep=1ex,fill=white]{\qrcode[height=1.5cm]{\@homepage}};}% + }\fi% % name and title (pre-rendering) \@initializelength{\makecvheaddetailswidth}\settowidth{\makecvheaddetailswidth}{\usebox{\makecvheaddetailsbox}}% \@initializelength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}% diff --git a/moderncvstylecontemporary.sty b/moderncvstylecontemporary.sty index c3411ba..a37c856 100644 --- a/moderncvstylecontemporary.sty +++ b/moderncvstylecontemporary.sty @@ -17,9 +17,11 @@ \@initializecommand{\moderncvstyleheadoptions}{} \DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}} \DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}} +\DeclareOption{qr} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,qr}} +\DeclareOption{noqr}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,noqr}} \DeclareOption*{}% avoid choking on unknown options -\ExecuteOptions{left} +\ExecuteOptions{left,qr} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package %------------------------------------------------------------------------------- From d0a5ff550ea4c6a7af2afb0a4ce7eae886f705cd Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 1 May 2024 13:47:23 +0200 Subject: [PATCH 12/19] [moderncvskillmatrix] Support the `circle` option --- moderncvskillmatrix.sty | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/moderncvskillmatrix.sty b/moderncvskillmatrix.sty index 5c1a893..3f4fb34 100644 --- a/moderncvskillmatrix.sty +++ b/moderncvskillmatrix.sty @@ -218,6 +218,10 @@ \@initializeif{\if@moderncvbodyv}\@moderncvbodyvfalse \DeclareOption{moderncvbodyv}{\@moderncvbodyifalse\@moderncvbodyiifalse\@moderncvbodyiiifalse\@moderncvbodyivfalse\@moderncvbodyvtrue} +% If option `circle` is specified, use circles instead of small rectangles for rating skills +\@initializeif{\if@cvskillcircle}\@cvskillcirclefalse +\DeclareOption{circle}{\@cvskillcircletrue} + \DeclareOption*{}% avoid choking on unknown options \ExecuteOptions{moderncvbodyi} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package @@ -239,8 +243,14 @@ % %------------------------------------------------------------------------------- % The code for the Skilllevel illustration with the little boxes. % This is idea stolen from the limecv package, see https://github.com/opieters/limecv.git -\@initializelength{\cvSkill@RectangleSize} -\setlength{\cvSkill@RectangleSize}{1.2ex} +\@initializelength{\cvSkill@ShapeSize} +\if@cvskillcircle% + \setlength{\cvSkill@ShapeSize}{.7ex}% + \def\cvSkill@Shape#1{\tikz\filldraw[#1] (0, 0) circle (\cvSkill@ShapeSize);} +\else + \setlength{\cvSkill@ShapeSize}{1.2ex} + \def\cvSkill@Shape#1{\tikz\filldraw[#1] (0, 0) rectangle (\cvSkill@ShapeSize, \cvSkill@ShapeSize);} +\fi \newcount\my@repeat@count \DeclareDocumentCommand{\cvskill}{m}{% % Illustrate skill level with little colored boxes. @@ -252,10 +262,10 @@ % \cvskill{3} \begingroup \my@repeat@count=\z@ - \@whilenum\my@repeat@count<#1\do{\tikz\filldraw[skillmatrixfullcolor] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% + \@whilenum\my@repeat@count<#1\do{\cvSkill@Shape{skillmatrixfullcolor}\advance% \my@repeat@count\@ne\,}% \my@repeat@count=\numexpr5-\z@\relax - \@whilenum\my@repeat@count>#1\do{\tikz\filldraw[skillmatrixemptycolor] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% + \@whilenum\my@repeat@count>#1\do{\cvSkill@Shape{skillmatrixemptycolor}\advance% \my@repeat@count\m@ne\,}% \endgroup }% end \cvskill From 02a928723b7f8b5724e8ec3860a5b68b60dd9461 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 1 May 2024 13:47:23 +0200 Subject: [PATCH 13/19] [contemporary] Properly support skill matrix --- moderncvbodyvi.sty | 5 +++++ moderncvstylecontemporary.sty | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/moderncvbodyvi.sty b/moderncvbodyvi.sty index 8a765ce..60f9997 100644 --- a/moderncvbodyvi.sty +++ b/moderncvbodyvi.sty @@ -18,6 +18,10 @@ % required packages %------------------------------------------------------------------------------- \RequirePackage{moderncvverticaltimeline} +% No customization currently exists for `modercvbodyvi`; just reuse +% `moderncvbodyi`. We might consider supporting a short table format (only skill +% name and rating) in the future. +\RequirePackage[moderncvbodyi,circle]{moderncvskillmatrix} %------------------------------------------------------------------------------- @@ -61,6 +65,7 @@ \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}% \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}% \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}% + \recompute@cvskillmatrix@lengths % regular lengths \setlength{\parskip}{0\p@}} diff --git a/moderncvstylecontemporary.sty b/moderncvstylecontemporary.sty index a37c856..848b94d 100644 --- a/moderncvstylecontemporary.sty +++ b/moderncvstylecontemporary.sty @@ -41,6 +41,13 @@ % symbols \moderncvicons{marvosym} +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% skillmatrix +\colorlet{bodyrulecolor}{color1} +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} %------------------------------------------------------------------------------- % header, body & footer From 5353471fcecfb4cd8bb37d16dcbcddd124f97d4f Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Mon, 6 May 2024 17:52:09 +0200 Subject: [PATCH 14/19] [contemporary] Fix social icons appering in the header --- commons/colors.tex | 2 +- moderncvstylecontemporary.sty | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/commons/colors.tex b/commons/colors.tex index aaa6319..7f840ff 100644 --- a/commons/colors.tex +++ b/commons/colors.tex @@ -15,7 +15,7 @@ % default colors %------------------------------------------------------------------------------- -\colorlet{default-socialicon-color}{darkgrey} +\@ifundefined{\string\color@default-socialicon-color}{\colorlet{default-socialicon-color}{darkgrey}}{} %------------------------------------------------------------------------------- % colors for social icons diff --git a/moderncvstylecontemporary.sty b/moderncvstylecontemporary.sty index 848b94d..32f02ce 100644 --- a/moderncvstylecontemporary.sty +++ b/moderncvstylecontemporary.sty @@ -39,7 +39,8 @@ %\fi % symbols -\moderncvicons{marvosym} +\providecolor{default-socialicon-color}{named}{headtext} +\moderncvicons{symbols} %------------------------------------------------------------------------------- % Colors From b15f06573e0740de3e18d4a3026c49cbe50a6a4c Mon Sep 17 00:00:00 2001 From: Mark E Fuller Date: Wed, 8 May 2024 19:48:05 +0300 Subject: [PATCH 15/19] make hidden head options available (#150) add '(no)details' option to head in all styles, plus 'alternate' in casual Co-authored-by: David --- CHANGELOG | 3 +++ moderncvheadvi.sty | 2 +- moderncvstylebanking.sty | 13 ++++++++++++- moderncvstylecasual.sty | 16 ++++++++++++++-- moderncvstyleclassic.sty | 13 ++++++++++++- moderncvstylefancy.sty | 17 +++++++++++++++-- moderncvstyleoldstyle.sty | 19 ++++++++++++++++--- 7 files changed, 73 insertions(+), 10 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index f386ab7..32c5ba4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -22,6 +22,8 @@ version 2.?.? (29 Jun 2023) - New \social options: arXiv, INSPIRE (#185) - Systematize colors and make them user adjustable. See documentation for details. This requires the \moderncvcolor to be issued BEFORE \moderncvstyle. +- all styles: make the head options 'details' and 'nodetails' available to the user. (previously they were hidden). Oldstyle does not respond too well to nodetails. +- casual style: make the head options 'alternate', 'details' and 'nodetails' available to the user. (previously they were hidden). version 2.3.1 (21 Feb 2022) - Fix duplicate GitLab icon (#105). @@ -35,6 +37,7 @@ version 2.3.0 (16 Dec 2021) version: 2.2.0 (28 Jul 2021) - Remove dot in \cventry when using moderncvbodyi. + - Remove http baseurl in hyperref. - Change font encoding to use fontspec with Latin Modern for LuaTeX and XeTeX, else inputenc / fontenc / lmodern (https://tex.stackexchange.com/a/496643). diff --git a/moderncvheadvi.sty b/moderncvheadvi.sty index 7364d0e..73ed246 100644 --- a/moderncvheadvi.sty +++ b/moderncvheadvi.sty @@ -24,7 +24,7 @@ \DeclareOption{right} {\@leftfalse\@righttrue} \DeclareOption*{}% avoid choking on unknown options -\ExecuteOptions{details, left} +\ExecuteOptions{details,left} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package diff --git a/moderncvstylebanking.sty b/moderncvstylebanking.sty index f8ed6f7..448d30e 100644 --- a/moderncvstylebanking.sty +++ b/moderncvstylebanking.sty @@ -24,6 +24,12 @@ \DeclareOption{center} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,center}} \DeclareOption{right} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,right}} +% head options +\@initializecommand{\moderncvstyleheadoptions}{} +\@initializeif{\if@datainhead}\@datainheadtrue +\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}} +\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}} + % toggle use of symbol fonts. \@initializeif{\if@symbols}\@symbolsfalse \DeclareOption{symbols} {\@symbolstrue} @@ -86,9 +92,14 @@ %------------------------------------------------------------------------------- % header, body & footer %------------------------------------------------------------------------------- -\moderncvhead{3} +\moderncvhead[\moderncvstyleheadoptions]{3} \moderncvbody[\moderncvstylebodyoptions]{3} +\if@datainhead +% if data is shown in head, do not include the footer +\else + \moderncvfoot{1} +\fi \endinput diff --git a/moderncvstylecasual.sty b/moderncvstylecasual.sty index cf5a1b8..a646615 100644 --- a/moderncvstylecasual.sty +++ b/moderncvstylecasual.sty @@ -16,6 +16,12 @@ \@initializecommand{\moderncvstyleheadoptions}{} \DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}} \DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}} +% head options alternate, details and no details +\DeclareOption{alternate}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,alternate}} +\@initializeif{\if@datainhead}\@datainheadfalse +\DeclareOption{details}{\@datainheadtrue\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}} +\DeclareOption{nodetails}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}} + % toggle use of symbol fonts. \@initializeif{\if@symbols}\@symbolsfalse @@ -23,7 +29,7 @@ \DeclareOption{nosymbols} {\@symbolsfalse} \DeclareOption*{}% avoid choking on unknown options -\ExecuteOptions{right,symbols} +\ExecuteOptions{right,symbols,nodetails} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package %------------------------------------------------------------------------------- @@ -75,7 +81,13 @@ %------------------------------------------------------------------------------- \moderncvhead[\moderncvstyleheadoptions]{2} \moderncvbody{1} -\moderncvfoot{1} +% include foot only if nodetails option is active since otherwise we have two times the information +% on the page +\if@datainhead +% if data is shown in head, do not include the footer +\else + \moderncvfoot{1} +\fi \endinput diff --git a/moderncvstyleclassic.sty b/moderncvstyleclassic.sty index 125e63c..8510b2a 100644 --- a/moderncvstyleclassic.sty +++ b/moderncvstyleclassic.sty @@ -18,13 +18,17 @@ \DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}} \DeclareOption{top}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,top}} +\@initializeif{\if@datainhead}\@datainheadtrue +\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}} +\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}} + % toggle use of symbol fonts. \@initializeif{\if@symbols}\@symbolsfalse \DeclareOption{symbols} {\@symbolstrue} \DeclareOption{nosymbols} {\@symbolsfalse} \DeclareOption*{}% avoid choking on unknown options -\ExecuteOptions{left,symbols} +\ExecuteOptions{left,symbols,details} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package %------------------------------------------------------------------------------- @@ -76,6 +80,13 @@ %------------------------------------------------------------------------------- \moderncvhead[\moderncvstyleheadoptions]{1} \moderncvbody{1} +% include foot only if nodetails option is active since otherwise we have two times the information +% on the page +\if@datainhead +% if data is shown in head, do not include the footer +\else + \moderncvfoot{1} +\fi \endinput diff --git a/moderncvstylefancy.sty b/moderncvstylefancy.sty index 25cde7d..980388d 100644 --- a/moderncvstylefancy.sty +++ b/moderncvstylefancy.sty @@ -12,13 +12,19 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{moderncvstylefancy}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: fancy] +% headoptions +\@initializecommand{\moderncvstyleheadoptions}{} +\@initializeif{\if@datainhead}\@datainheadtrue +\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}} +\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}} + % toggle use of symbol fonts. \@initializeif{\if@symbols}\@symbolsfalse \DeclareOption{symbols} {\@symbolstrue} \DeclareOption{nosymbols} {\@symbolsfalse} \DeclareOption*{}% avoid choking on unknown options -\ExecuteOptions{symbols} +\ExecuteOptions{symbols,details} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package %------------------------------------------------------------------------------- @@ -71,9 +77,16 @@ %------------------------------------------------------------------------------- % header, body & footer %------------------------------------------------------------------------------- -\moderncvhead{5} +\moderncvhead[\moderncvstyleheadoptions]{5} \moderncvbody{5} +% include foot only if nodetails option is active since otherwise we have two times the information +% on the page +\if@datainhead +% if data is shown in head, do not include the footer +\else + \moderncvfoot{1} +\fi \endinput diff --git a/moderncvstyleoldstyle.sty b/moderncvstyleoldstyle.sty index 466af7e..ccc92cd 100644 --- a/moderncvstyleoldstyle.sty +++ b/moderncvstyleoldstyle.sty @@ -12,13 +12,20 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{moderncvstyleoldstyle}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: oldstyle] +% headoptions +\@initializecommand{\moderncvstyleheadoptions}{} +\@initializeif{\if@datainhead}\@datainheadtrue +\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}} +\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}} + + % toggle use of symbol fonts. \@initializeif{\if@symbols}\@symbolsfalse \DeclareOption{symbols} {\@symbolstrue} \DeclareOption{nosymbols} {\@symbolsfalse} \DeclareOption*{}% avoid choking on unknown options -\ExecuteOptions{symbols} +\ExecuteOptions{symbols,details} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package %------------------------------------------------------------------------------- @@ -77,9 +84,15 @@ %------------------------------------------------------------------------------- % header, body & footer %------------------------------------------------------------------------------- -\moderncvhead{4} +\moderncvhead[\moderncvstyleheadoptions]{4} \moderncvbody{4} - +% include foot only if nodetails option is active since otherwise we have two times the information +% on the page +\if@datainhead +% if data is shown in head, do not include the footer +\else + \moderncvfoot{1} +\fi \endinput From beb45fb23a7bcd49670036647bb9a916e24d9e60 Mon Sep 17 00:00:00 2001 From: daniel Date: Fri, 10 May 2024 16:56:23 +0200 Subject: [PATCH 16/19] documentation paragraph for contemporary style, ignoring .toc in git (#187) Co-authored-by: LLdaniel --- .gitignore | 1 + manual/moderncv_userguide.pdf | Bin 119938 -> 118672 bytes manual/moderncv_userguide.tex | 15 +++++++++++++++ 3 files changed, 16 insertions(+) diff --git a/.gitignore b/.gitignore index 84f231c..2e83ea9 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ *.out *.synctex.gz *.xdv +*.toc # template.tex output # move to *.pdf once manual is done diff --git a/manual/moderncv_userguide.pdf b/manual/moderncv_userguide.pdf index 2260f9401d3508b0ccf81f55b0616e762293ddf9..ac6ee99e58033b3022313f224224db99e528572b 100644 GIT binary patch delta 76037 zcmZ^}V~{R9w6@u{ZF{$E+q-RJw{1La+qP}nwr$()dB2+ZGc)I;@*`DARZ^8y?sZ>l z1(ZX^UGK}`C(&Z!g+mnuT6R

)biU#M6xuVtXHfy%_asH?@ta!O)SZ( zG(?pU1gRuy5YCx*ez2kkScHY~WU)K5(mi{b{7zvGCy@pj&j-AwZ6N5SN_9#_igRdc zMs>PhcW7*EHa1lg-T~$1f$$PxNtrzZ=HxRy&1%t_x> zdfUn}r75R@*b_LHUiudttZox@R-2Fa8mg+Q z+P6zwHdr<58$hgTtmf2IQ<^+F>t9zjAHyBackG|p5(S+4~9xEcZxqsLO%_AfeGL1@|Jaub-e$v>lTmgRbQoFfI`!jg9-C3$GNg!w(`8rP;TdbKO= z871#_xB>d}9237SbYG(6vhyg2ISC)SbQH07))e!Q-{Lm}s;5I(5i%E~s|Mvy^d~1D zCL*eai8^E#w|*`aLnIK~;+&nMmjf!Mo|DYg4WJqx8l6Xdi+Q4%x6X=atXA_mb{54- zb5LSPSX!bgSB#)Q?5!Q7g)vjI(J4$)e9kbU@d14Hhq)aiyxz~1UfUAfaqaUr*Hiki zgduvy*~>h|93f4c!Dz${>|J$^Ji=E1!raUTf1y1{>C|c-^U@rn2&1c$dItd3n9a&d zt`q1hYv1maX=ruL)@RFY|E65W`bmd_+Xh>k)FWPdIj|$A0lY;3g0gWHk}B&SqmbmW zIAHn@tR3G!D5i*HrXO1w1Y79U1RyJ{!J{qnni*t9+>yL!myKgTa$HCqi&}Iz=h*U5ufoU`QJ1Q+ za8Sl`?cS)9j!`G3p~RbP&Ra!6u!y}2DnMRLfE&1|SPr6PCLEb+W*Z*u+H1g@0O%Kz zm}i@0r+F4L_}QT7p-L7F_Vco;I>$A>BqQQqq-Y$4iC56=1Sk}qq^!b{Lt5~6J05y# zp7GV=@Nhuv1S)MnGKgDw`isXwaZTe8b_zS)8jj4nPw;UsdY^I7?JORg^Bt8z0)TWw zc_Ci7KjF1Qqgl}~cV&}xTsE64A4)<2av5LLT8-VzjCk+SEjLO)SWFv3_Z`AbW?S$t z8jB0u{b)Q>U&^d;pje$RMGnHr*_$GLRRG=sZrws*oG2bWom~TTa*$10+_6T*<6D%t$xz|EAzvQa^gdWg)`wHcH>D(zn z6ygPjboIrVNl;`QX7i=`hk(Wi40?D~!qxmBdDr*y)uLyhCI8^fK?Z(;3lO1t6m^k` zWB!dn{qm{Sw(G*;(8Na{^{T`a#FE2di7ga0n&V#sMZxPmf1UM$+Pl3F+%|Fn+tbM%SNNW)~}EAWMU1`Y_Cl4c_dFfAY=aOn}a zKDDT~TmkAtJHq-vjAsmbBF6DPlL;X!;e+q=;fw9!gG(a_+1Blr9L@n65@|aT@98A%zySK5-nP1SA_{ORfvqGPDe6XP{n-0HV2;Eda%v|hD|C8WuYi&Diwjl#%_46exM?&tU;ygNKoW`58btp?)($Am$Qw+k{#45

c?LRe{ia0GmphseqRq} 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�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 delta 77063 zcmZ^~b8ui$*QXoXwr$(C)3H0YofF%3(m}_zjgHl^ZKLCPXYSOkxp%(r)IO{B-@8uj z=U2~KC$RuJxB{A)Qbj_Fk(G%Pj&g2kWEGB;lZ}Lh#L?6SPCx*TS;5@F(#?v5m5ZB& z(n?wI4%ez@ zkI!Ou*!HxHDqTf0x&?n|rt8p^1Gm-p028S@jHiqA**XdJQ-?m=VHa`b)(vW8IG zSSK<^6sOLomA=2J!90s+PjZ-*pMH6!1gHec77`>-g*+8?6V(P6MXGVMG5#HO!JA=# zz`Q-+U(?DVMPfe+W7;|(=f8p_Dw{2U$eqc?{~4ViLX-hc2@CyaIA~nvcJ^VhvqEEe zlfrmbE||q)E`%ClDOE;>6*ZYGDe{jW;=(cg6(nyM>;A4j#cK(eckyrG>VF)BayJz0 z@esFG%J+%V+{yPp{0|^XIkq!8&w6GSt<=+ibeLT%gLkYWP(ujiw^0Ty_fuhddSKCx zyK`C5EV|V3_WbQkM^BT=_QB)ook`&#$=R9_lxBf~h@1|D;NW#tuE*D&hAhZ ziFrx$idbQ<4qF{gzgA%_Jic@7xKrv`RHAM=b%JEX(~+)cj+pg#m>~l7zq?AfApsNM z>ZiGjd-g?HuR)dFQAE0B?~#kSANpx^uv%F><}%?=J9_!V*bwfeeRVxyhqq5NuxPH7Y zzgQNkc5r?BBviX#h;27Aq0v=zaJU5&wET{Q!|dd zPd#jgrn8niZroJF!go@2< zN#lp>gY!BJ&2F7p5Uz8f(%Iq1XrKbI{3EU6&4tl>+*x-@MW8x73GbcEgcU{hehD)glZc<9BS2wX)oW2i0o zK~mc*L%T)cIWs97G_r2Oj+Y^NfRXVr12lBOh+eyuP>9gOR~%HX-eQ$LbTwH)vH=iHT-Bh{~>Mnbq`%SqsH$hpJH~ii>4%E zr+a_1(ZxrTIm-E`96W6x8vIfM+5r12Ai}4PLEpfP-t(`>Na8KI93RMf>2wjXMv(QE_=u_=it7Kc{=Fv101PUq6dNm^%4h=rtOMfO+fPDZJ*23PG%d z!PhXZ;`v?WtglFjn)PaUHs-9gETKPQ6(}v8=U1{V9rnjU?;@*qNQx z^E#|uKR@%Ry_P4yCggX8vnF&WK3kanLwUOr$MLr^$8}}F#q`zjaQ9Ycrz`jS# zHA_MbcxC`a5zRo|*S1eL+Gs*f2K1g^TC2awzik9CiCU!=^BS2|)W3w4hk=b25sZC8 z|BgGgx#&T(;Cv`<1%LH|o^6?^Le~mk5dsv@sZry0quL$E6F;$r zd5*_6pUlgRW_3E~(V`g~vHdd<0qt^j%}Xzv^e~%sxg8YZdvMP}+C8I_%N0gbA7iEr zf2Kar=;udth9&5AqLf2leo{}Gh7eU#|Jr(I2VTg{9VU5 zY+qc^=*TJ)D3{9s>Od=@OVw7JYi8s-^63z7-&DZ|v_`J@&?l z!t>SPirrDlH-^&zL6Qw{;J=(9^C03$5AIkc#x=?<;eTb$!xDzT`l75pD&`HKP9PHP z)$%RzR30xtw7E6@?xAnA=!Hq)F@6XGh58yJHj5IJTNb;pqO*Ak70z?Z1LCtN_5vop zT*oi$;?y?Fs&d@Sj&LIW6iCDaxlYiFniN}oY57UDmG@dRn!Psox$V;%jJU2{)8`dv z8b#j)rR53ocQ#DkPOE`_&53{o`R9;?vN!1EkB9}R!?2j~2^LZsD;PP1n??_qF~yu^ z#!zGuc?}5p*t7CLu~HK?V5B*p7w)F21LQy&&OU6`hiRWgo))cTBiHX|MtVeZA>v0j zXfZ{Q{Xd1NeVpgNO)556E~^31{7hvMoeeovorK)3=q2V~zSv;yXeEzNopf*uU)_X+pM~cgDYPk@QKqPFcP1+d-+!ULN ze3>b5p7NIrhTKG!W{9bRZ@@SnS(J5?24kvL*V4V?&1DHs>9;k`h=c~sh$*>WB}O~b z<(_+DQ|zAAE}>zf=RbY0MadxMCmQ%OA&`ap0+~T&5JJ90B3lk#O=Kd*T%xOGT}#cK zIs6LozH&YVG}fUffcJbZ8@DQ9rehspS9je5iw3v(7UljnZus~>PZ-#>*XD*sTx;2ns9NlVW`Do zHBTP%P?D07Lfn-G$f5-jd3BjdmZNx{VLv9q`0y;c(~_G2ZOX5S*g;Ucc%DZvqg|N} zb2u``mYdZw zB(ud8>PKddYmK1GGScWm6x!wSC^YnYXJ>F@SP?Vaf|8bEiV@~dTSZL*A6o)8m9CoX zDe9qks#ZvV$bvM;B*&JeOIC}=ZY2uug>i9sqfbXay+xXU3ch#AF|5eZ(hO?# zc^HMzE`v9{lsb@j&AhgL7y?TSMS^!M`$g*DyvnM_hxS6KN0k;l^%je2YQR2lQt~js8DsVH@zpN`5<*WJdTa1~Uv%KqSNE zpOYHl7f1xtkBGff-}NZ!-h^RPV&2+Lt!@Yaa%ePJb7haX%G>WbB0$%v&d>l;&(Hu@ zix4al78LG`@f^1qfei`k<*93@;YqrwoDr0Q&oFsQY*wMu9RkltSHP5@$Vdp-s%us? z4OBsXGpy5FwHsluOR2Z4CAEyOY=hQXBC5e5zNW0WYh4HUW+#5xj;cEy?>N5Q0=+U| z@Md5-cfmuzxBz>gMsRRTZS6;dX-rfd(yOv(H+B7eLt|B&-@0>YGX}ZnpXPuCi)@ulOWIeLKiWgdb z7!>Ze$40KdBt$T2G{00tekc4uv(uebgbV1&(ly?h4IVtC9a5AHJemoS z=5PxcMNr{K8x!#Kktm8d+;W26>E4cGT58|Qs$3(51YgqIo<+)85+Lk={L6O)))uhV z2Zd*v!j{=-$w7kVLnphP^_Pb2-Q$$8R}Z-ZYobY!s6{jz92TKd>;aro${4ppVhb>P z&PdU*_K>8MpZqFpfw^w`>Tj{s1;HEexekrZhDk(qRqON@R|=p-0S#hmI`-NB^cg3d z@#)cobQGj2SF(zJN_=cPxc<}v5Jllf#pi;tCzg9m=+DPF{)w5Y4V^@7Wn8;%*PRZR zdppge*RpG6jYlQ+|LPEz`@|)m=rvgg6Y;w0l3-~WwA<9d0~sfGHv=0Odz;T}j{&Wo z?#(}E*r^)(S>Q@>iS~wpOH@Pey{8>{Xl$ye8K7Ev5xXjSHc%IyiuTk3Kq{DF1~ugk zo6IcZgPq64nDNw3YSos|SDufy1YeK`tIp$G3mBmN0&U80@HbT2CA22kn}0eq%W_|! zfeGG3k8haZ^jrUG$M>w*;4=^n4&H%9R*7d_ab^h_1giimhb30ekF7+PIry4TS|p=T z95No9dW8jWwEst~Ici0*~c zh7}%QiIv+rQIYYSYUB4|M<()+9VrN>qNyghQFFuZL*SLbLQ>B0+b}4RIpa_iM7;FB zeUUKnL7oePMEN0x7C$y@=C_}{_?dSCzHaY`zxBT!y^f28g2Z`&ES!REY+E1eys{;_ z)XyaQYKE1Ra{Db7H;3~0_C1dJ@6|sTXs1Qkm*rxavi6Rerwnc0AzHL#<1U{33=zF= zD37}%j)ZGrO)VQ7B31MUezQ()t2Aq#^oxqYAxYMaCn|&j$iUWi&Dv1{-!Vm2!0hJ^rxPU zoZ5yhZ^V?`Q=(S4<&}vVCHUpeNmxx?e0w_t!)1kSMYwKkfSf671_dinT6u@BPfTq7=&}b-aV)9 z@z*b7n?XT9Jgk#V9QA1ZITQ@rzlbiU<@gZ>G9LvgUrgSsyIoVkrb0< zW2TW^htIW_;>Lj5x$P5G1h-*6I07 zkFXe+bozJ@z;bx9H^dmzKtg7M5w&~UxXtFPJ7|8*bZGzHu~rGh#ftvfT0f0N4}H0u z06ciSp7)JQxkvurf&2edNE+Tw<|NF@rZ(zs_HfKfB&;kfaLiKHF0O7QJRJYo{y&Nd zfrO2Xo#VgD<9~Ja5;jIL16JxX$Nv3V(x06IkpkHWN-2c3S&b>Y@*!T<^(od)YV91} z{(1|L-beD3h%RX|jS-3@R~usAd7ZIGqNOZx8k7+g!(}W|ISfl4JPm{&Ohlc4E6YA{R`&Dtlk45 zHbUsV{n;9+`GIa{N=P+C7ca0lWjD^E8h9k2?9q<4N~V&Tdc>=g7#?3AMN%cg#zO_o zwPqy&YB7L_;iS`GD}ho97#r1TvqiobgKK5-Y8wsIZsS&mB~T}{AOs1FFdgnu$0k~* zBppehavU_ML5OF9KR}l~N(?*(t&Rn<{Ttsl6=mvz)hCl1MJR~OW(61JP>4Y!(q`q^W4u-(>6;N|C6^n<)J^lqKH!-$(OOtobn!ez(T5d_+?TaG;?oSq?s0=bak8xfCh{J+UY0fhh$Cj$HG@tr`G3MfIw>XL z*J@<0#oQekb}rx5L%Swlir4rnf+7moC=c4VvmFP^v74SH9a?_>j_%TQYDKPmBNhXY zS+x?oG<#Ky$iw&5s;!1tjR~Fl}kB+R0i;3H@Kc=poD$Vt_cuLKaO?Pyl ztIT&dbvmsU6`UGA;D~=dj+~VRE<^z~E z{t>zJ6of;m<{@7vKd*Re_FC^C&%AXe8|h`&x;VZ4Vsa>-kC{q=6L0Pvzv8H(z3@~x z_fR+o#);jrn`M&R7EvWu5RWZ8)C{DushuY`g*`j^{M-c?zO?k>!$}`m#7|KX8sw8+ z^yDQzh+S>Moo&{euI;6FxMq9WYxN&WWYv!@pvtIm82Ilu#>(9IF}WF^7PvmnPidvH z=v$|VZ{3b&ayE%;AI=x^`1R;dqI_N}OFi6xw5N9n&z0-E0{lulrRyHw=Kpzute;$e zKD2_lW;rKw_nB@cg<3FHgq(iE>thiBim|yQr&e08tPLEqDRMtnh00)Cge}8)TppgX zp4trFHtH6>#T(b`-zPHU@JUDXSp5ZezFbD&g#n=~!_A#E)3@Wd)?5Xnn)D5qjx7M@ zh(kF~VJAK3uY(}{YqEg;TSs@6QJ=m)YKGr{q?VO3nYL!A7iUljrv!}T-$(4pBRDkX zmm6{~?*Kw)oC-XD&TyO9i1~3Fjlbnp^BQK9vl{mb|8KFQoc(eC|0|cG+kYv{9O`y{ zzB#-ACSAhc*1aDbS-tu-juTJ$q~4sLCU0$LRq`#uCQ6oi&emoO1R4zrx$qxo<-0GE zN|=0f3cjSBJFL0bVMt+XeL;MMEWIQyS2Wpu8v%*)mlO4nO8pPO$SY?3e zXnm5iT1i@(|r;-R|1fZPj!Kj zu8>ohI(EQN5I-ZWjlOuS6dxMTeu_-^5_ybTv=je|)y`|>F!bGqei6qtkw55w zE&uVZTUS_*^rs9#-6>qCOS9@PC2*MOG zjhAUXzW((Js{2kBJh`vaDg&l%FjzMZU@zY%T{(`xumXcq;7^jfeTS|{3bJGdG1Nkl z+mS7cyMR~mq;CKV;^)c_>)tK{R3Zj$$%Sjp?bR-dn2U9;m`2%{?%q$Q7xX!*`NU^B zkyNP|%pfKO#;Y#h(w&|l>0Ab|VG4Z+J&peT@{59-Km%HAG+EJ5sz^#S5x)A8=MgDQ z?|b93xSv;F37Mt{clG4XYSl}hmXh77_#5#CMiq1$Ru=%*%=YT@+n>t7dC)%kc+?EL zhC$NgCF@;og)DVY)_s@u&>x^fNGQNvKv;+q>_bH1*+yF8sAht`FckOSBNK@ zYn-C8{d!9ot@MYW!2YE0c5TU=`mL4Dpr(!5oYHg)i(rQ}I4!}#QNgYhgK*}>33fHj z35`HC4GVyeCmM!@w?3gyznGHaVOslDl&~}-Hf$~ZFj?YFut7IK0Ap+gBLQv)ExcVN z*YVd=s*%}dh0f*WbT9qZJh$cALyzZO#o0x8lX7OlbVa-CMZUgsW;A>7bEhf=|Aybz zI-kfoQcR^~+eRN|(ht{GUXZls22#YLT5AI7!vPpfWrggz#HO>bjC!vep_wZQfiz46 zNrhLI9FMi$ym|_U@v2wd&_j@OXo7OM%b`W$!z1vJmhs19?MwbeBf)_t)X>x<9}SW8 z75J3aqz!I1E?Zmd&Kql~Gkx$hBs_T%Ks+s%zqLcu7$G89Bse1vI;5Sycm!-t={(nP14-bF#CN~8BX}^8yuGqJKxZ;{V zxV+HL$TI%T)}45FNhCD+80ivPbeo$^xcVq*U=kS=Yuyfe0O_pq+)Hy#G&1UcNN^4V zvImNaBzn{^Efv`mz<6;?d(kg?z3-{^Q<4)g+!^GV0EHL{|7$6*>%thLcz0oh9t=2G zY;?C;5!(1DtI09!6SR?y{xtMmqE#Spk&yVOrqE4nY#Nimh*YbPAUT8uEsTKTWLB&E zo7%OQiskNv2;EFDkv$~5f(YhnO5cQUN<1V49G)#`5YCK(_ZxssbGy-NM-~k8{l@); zMlNO&I`PJ}h#nW39hA!|N_rO9v;lbTbm_}(nf88YSU6{UqHs@BSCc^~h`kH$lnWwQ zW7sT}c`Lx|iXsg5IL4c+uAK4V54n$-=~uu?AesgVgPvHkauQ$1)CE_hXqTlt43{G4 z|Ith;_e7&glS#>XfTdu`B2-&({!--+s}t=S=d#2$Ib33i#>pct-52oAh6X@Mu^{Y1 zLws(&-=rBsE@B_Y+c2+}-?V)vs&$Cq+%*f?V*`tyQVQPx2Ke&Y0n0t%rj%j^qMnMCPz{ zz2)`zEOb>rnuOyZZZ2Y@VH`;07T?D2DH_MH%QWEvWND2{BNL!5=}Pa>2UWX#=1!dy z0DyvMH3NkE-DkfcFiUR6F9xy=PgH3T0_w#F<>qj~+PX8wpvPoZTWktcNUZR3+=$); zC+H#)Nq^?vP7?E^OI=U-+0KkQa>cd#RV?z~VQDZ5$fa8?NzXU)22eSr1Y3j)rGQ&F zUNg4$B@>CVu&RY31~<1@Dy9JvKEnXX+BYP&`fe5ha-C#oq8vbhcZuVP(@!G`K~UH5 z4PXQgQL$&6IFW#y%bq5Dl&;ziV}?zdR(+F0j~5O}+^)Ni61M=F&rI8PY6kR>6h9+6 zA0XdtO!%M9Bx-*s0y$OrPP%KB&N`Jiv4Wtr(@k9)bGxQnt?U&Gz3ZE0RN`lZBGkg+ zDkNcPMRPFEqDC4|iF9#<#EcHrH!+pGBGXK9{7wkm3D)Vaf4Ac*Q|Jtk=jthcqp6eS z=P{p(CaT0IexWH+)h1@4M0xEl)DX8|NNQ<#9MK7{(I4cQ0X&W`wwk;=o-;5-Fx6?G z`7tQnW~pV$zCTdPGWa6p(8aHMYH+gBuiFq#_55#(zHLhj*mG>o zfWNG^)1Ze;XH`jO48;F^_ZB&i79iAr>4(=I39*SaoFTA+kx4TbzMO>50y*X2k*sQC z$6*=a^Vmz809Y{Oot{K&+G$d}cde*x`cZ>p*uj}*;eKI04P+F8hy+Tj`od79_bs0w zz=;>4guas-wSw(3oOyp5k>UNqLDM*9w?h6U!gJxO(@wCf{VtJ_ti@?}RpT#u^QY-l zxu0m@u?2Hp&$I=opvvU3SEAxX^~gpU%RaT;k$#4L1<2!l#Jo?geYvwrnY_;G6PFLr zMGE19hF+KX`N1JFV5Y1k5d_$i`#6=`X$ufKzqeE`1l);k6g3uyJJ&~%x-~JoNYsUo z6hA722lLB&O=4AH;F^xOUF=IM&*Ss$4Jw7h11`_iTCpHkK6lIch`RfDD^-(3R>}h( zGS)B{fV@~FArB`w2OU}Hqekk*Yk7MyqV2Y_OaHvvYF`BL;o*M4TAY=lagmG-Clu?- zV4N@&av@ggr=_Q{-#y${OU>+y0SnSsn{}h0B`y8S5&vl=3-QdEJDtfTUDN!-2jm5% z4?pGlyCcjq1Ee=Zh03+l!T(;x3n^Mb%hwap0NvUDI7|do9dV7AJP_F)Jvo9n)a5+q zUTtfKx+ijawK+5YY4Gd@){*a_za1mI&z?DFVdL59WV$OMPtG!<6gVNEX1>|2*z5eL ztbLcW+6bh!TR7x^3f1$wbrk-n`c{H!oU9xgT%1V_#bH<^#C;)FK9!vb`Ei2S_cDvO z0Cd~s>1ou*=BR_XqY&{4!ElvPh9~r$?~bkAS6I1+WZTrA{fQanTJJ3L2P1L95bfNZ z|19Cq=pZON9mGPpk8+omTMW#A!B9O*7+?Q4@e2AY%BrM<`v+>mOT}kl7}JWR>yGsa zf!6|Ps{DD1ZH~PgtC_|s#$xeOUAM_dJ|H)5;^&#$wk1{2EbpI9-07n1Doh&>a*Oly z^c=GQtD=HSO?--2)Mnv zE~d`{VKUuyC}UNZ{)X-GE9aHy7Y;3Deb0CSs;iXW5h0awBkx~@6RC>3#D3~Gj*hHJ z)X5*1A&1duM&ACf$9(X`1o~XQf0>yy^S<}6q~$He6MU+${*Kief(0CTnUk?>koetA zxV?Rq#y&KA>>Qur0X04ciWieM0L#t7G4oYt$fmn*^W@X7ARSN^M}G=ah9tD*G*c4M z)1fnE;G&lSl4jQ>F68Fi-u%3tMhtYc?&_Bixb(X0^z^@hl!c)es%1@*g41X@j9_A; zvrqw-_avX2?w+n!LJ13Q>;J+Uvixsvi2eVWJ>%x(`R}6fUtRhCIeXT7Q#YpyWhzx7 zAs9^}f=>Yohd~o9$*hRfEU|GeS429$W`OZ|Lx@DH7ht!XP>t0yM;@JvJLC6I=mGAy z2f2Nc)BpM9;`{K79%q`Mmh3#!z0r|j5o$gqzaI#}`r-h8!(4#Mm9;jRC!7x%8IRcPU3{O@fjU>h4sFa{_q6)k7h>I-bOOX{pXJbW6{bbSpJ*nZl zUpAAtzmwQ!JlR%CZ8mMp0limB7%?xi6@f~3Tcb-C+MEs>Ta#z>u6qw1k9V}|$%z{5 zsx%DyzLj21xIt7w9(}o&cwm?(DrAnxnpTo@+K}ko#v!1CpFkn7wfd^rUpp$S`R1x~ z8;0d>Pnn-IdvJ|YHr#`d4it%mR@t+~%Xf*eYeOvg@=8s~QQ$%4rbEr=Tg7Ft{o7v5 ztbg#}S;8^*IM2YHdA>XcceQU;Kr0;92`pbpin1jM8bh@B20xb#4Y(br`^;&CLd>-g zo#h3YaYv-OyiBp$YSzW2h&+$;zf9e*NC3TAiQoHFQ3>obgZ*j{DDiWV zCpQDg1%k@7-W19=x48n5nzg)!T$j2uezVhlZ-873}pGNoIY@PI42`R;)87g;5eA*Aoi{lPbkhEPEBuCi z*)b`4z^-R_l*hp(n4UvBJ9Zm@MU49ypUf+FEKQ-F>6cLV1&rJgSAm=-y&2QwzkyKY zzcMZ$#)Dbfl!&t9QR7pM1vW(V(hjSPvpM3qpo#uy2MOt1`kO@(ivx8_OM+3`T29cg zhhizgCla7?F=3z0t5U=N3Xv0L_fzlK;iLfEfeHSj#v&p`?PQG9`t%l02JibEw4cF% z)ITzTWL1p47_eYXn35vm>l9lr1nFmCg0rZ!H)KHPy_uf)!OYzg?$^P=IiWan&` zFOS|7gsoS?xlmXK`)!KywI24Z)Sqxbsftl^+4(>)f-Cz^XTCC{CUvpW?v3Y?L!o`w zosZzj5aO+oo}6y@g9txmj9?5$5Y24=m?{Zui%?372Y93za!2)H9sDGCk#<`RD5M5pkMFa11$XVnGIO7wbY*{Cw8~7-s(zA3CLADS*4ntlC z|BADGy_~DW<5ekgHoDV@YrK^C_{H%x>sB5o^SS+iYZSAyZK}2W&42U-TQhH55TJj> zEj;ZY4fw302^s{fwj5c8{jrJqBS*R=U=Z+i4o;zHfag2x?4G&Mdu@8+mPf;HP!?(d z(}(j5#|%F;Q-6weomWaI>~kk#pNIhg=YR(kevATv0LRf+E4otc_iWEi$_DoXMWy?V zTS%6;r>I;|$Zx^bZCspgVZ{O#GLG@LykjueP{3ay*lNh1iAc#zac{dVE|6OqM_gc# zuS1>A`^vY)KPsWM! zBev)mANr%Ug@0y62BsW;aTHDG8Z~xoxr{^xqry@Qjd;drh2%BmKayPyEg^e12mh74 zH31JJSB5j4_fb+j!QR> zj#q6nWZ(%BD5zWQC3kx*Ha2W-oyS_+9)J*EeL*|NJ|efjtI{A2e9&iK*NMj93*f!i zJ5(5EA>=O-YGp$p#&*k^7;m_JPixNAmv96@)ml=m1-HIQ`!f^x@OtA~P&p2JWqFE@!mQ;+L&Xgwq_CWn+2TtNJ#_x`g0fGT>Tr zDs(x`t|Wl!{8^HpsSpgp-!17-ZFc!}%RPBWp5ml3(dj`uHsG-6(&aB!@uWejPe*=F z_^MoYuy!d{+U0#|rNq0z*{n^fP@NqmN{$Vr>fi5 z?w)_{QsCqJFnx{A{k-E=Z`B%(0jg1<+SiB(rRpEW@Bx_>5qDwP8_TO=#HxRF>ntq; zOtQ1be~BoQ%N0#+H53t25j#45ffIzJj{X-^WoP{_eG}_{2h}Y+gM^LtJHh|xrih7% z%)K%iOv#uM`(S>3X30)144He9jrA6Xr#+c_huD#?7o><1hBZUqqi3~3=0`6H#6Pdg z2xo^DV$?T=DlhNH=Oa~Z&H_=g1ouuZ?t)RKgJweWq?8;QDOE>@X17tWyq|tgzyZ7* zPk{;<>e&=d>Qo&zq{YSZQ=ASp_o-EF{Q1g?@JZ`zN|Dpu@?c3z6AZsFRcOXR&Oz8g0C$jba0Le0doNNz!BQ6z$Q&e&#(-2ilu;#-bfB>z zB9o1xfJ{ymSx`n34a$Vr!`egGo9G*9M*89j8-h-dE^RD>U>}Xzz57Xpk%ZbM0l!>T zNmv0It5Ug#npY2t9!ry$@|zSEQ-CQ~ZM?kTyy{@~oT8D&!Hmh^x3p!LzreA?!g8w!viZ{EoCnafr=ATJgQT5G;VM zuRD1N)UyoaEJ0Gmiiz^b!+{t=d`r)b5!)9T@>ApC=u=RTgFRdtC{#j(*l zUz6Lt(Qs`_VKI=vJOqm(JumHZ_pn(8&y%gt&3s$w`)C2+ZCg`JVKTagZ1;Bj%S33m z&`i6WDCMdRv*<117gvBCY6n3Nc0BJ{d7Co`i0@eWrE zqnL30dTQBiqwf?F;2UNZcJOJ%wn<%$ub>Sdsvde_sMaOIBg#YE6S<3HW>;Am%sWUM zkF^sk+&c)&+3(M-YSE5*Vc$IEulQokUZR>FD%u&_hm?q$M>37zXrRL zRPMO?IQm1m8}sbT(F08|>kuVvWsoUjd%W8nQGwDc+Af77oEukatuP3>O_oc#xt~e) z`?Q?(Wx4x>L%4(W)+(Vq7MUkt`0m5GWHI+mB!+F6K?y!`z{L`S;R+54j?u7_ET|Ol z^zj9#X4zd{W8?3fbJOR)u?Z!ARa!=(o2tYqwcOarhuRm?Z!V@ti2dXfB-hP+?u?me z{fF^v+9U;y(K)`A8-scvIY}C1b}2S*gR)^b9Lg$vcPXiWV>^8FpE@S3VA3)OoU}5f z>Z9Dm7{b`Aw&D)jhCZ;n1h@cG6-sO5`haIq%f5!0_;nkr#AF=If$Je$@dcB7tih<) zh6!1!gWD*cmDkLOPQ-76-fYj<#TmR~!O6_;m#bZTr{zw^E4x>s*{0LHdP1`^>JD5J zuMrI^?(KXeKRz$sw^ip*u?G(;_0AF3&7xV18J;m7uSLvW|M|n^zpF}YFyursN5Bzf zkpO<|j@fC8Mb9~9%oBUEB$a`_7lGC+7!BTX9;IKgjSOkS^~b0mvnwjY;stF;w`EEj zGvn{-OUL}F#Z5nH*X!P5(6#n;3G2I73aEcWj?P}$>GpZ0+ChP|eW|~*p?LI?L1RBZ z!lRBK-ghs2`@pV{$RVk9C5IOMJb~b_69&feMYf)ov|j3y=}-)baMH|P61mak$3B2Z zx@RoQe)%_KvUgl7dz%y4Io*(SaQl?@N#4SWALtZaV|8`V8nT%J`O@P0oQRAlf7%Y z9cxd$mk9zsdB_#B-U2{u0;u}t@Sf%L<``H(AFIws7axUt5R)y z2?y8g^Rv0A6OXT1SZ|YghWoRWmS_<4d1An9-se&qnYxe>yYus*07x#T+#mT3^Edh08wiFgUord* zZ+E>8t=KiaXu_L!1;krC1@Zc`G+q7n{Oh`r5=eaprf4-62=Ztl=wAr&w&&gia>(?(w!g_hTgeslSzTNtQC;9(Iv zc6)AfWR|Vcp5SFlma(;l^0ZgDwJynz7gF~_d_uBC;ljn48{osg-7uF!BfKE}JM#@Q z5$tY&o7Xd$J{p0eppJR1lf-a7VG_5HwKM!UgRpDwbnB*PZv*~IGK-JA!E1;NV&Oj{ zr%OFyN(^fr6#BZT4<^QY2)X4h9ml^R(m84tJ*G^X)`PRw<`&jrxdrJX95$yWzK%8B zZOe?iK^5u_EP+K+v*Es+V8*}k;nsn#k{*kRFcfJQ0<72Qcfuj>;g%>HIT={4H&%x_ zi$qv?%2MDWe=Y%uAL;4l6iZCDIpiMI$N(v@p`L!zCQ|C zu2cCv-;fq6)^|);-#HmqD;s`7$@QM3jOpC(&rn=v1)i%C!L(^W^y zMY^7)Gy5sWnG^jl!l*OZzFNgdb!cn5tp%oD_S-FOs@$k=E!i)Q&o%1*!Wpok4X&x^ z8ws$~0XiOEle0nJ0D?(Iw)P9nnT_oeUuQ4W5M;+E#s;v4t|RhILK0tlW^pgU_M(GY z4A#OuM|}hbus!8I?WSQ=3D4{F>BUOC5J}J~lC{HQ*XepWM46AL^N~K#+{9G>{~{D~ za{nKp80~-m=E%mu{@<#mX`QYAq~ib8g>_5|%G~1~*>@7r<%oE0Fla{pPYc$*wnidd zUv_(%tNpuYh?G*kvB&e-&;=TtLo#V7YtQe4r>JQ``0kte#nW*|kH2Zyrq=QW zxoHW_;dRPNuKY*S`_tvvAvn6r*W#z}H9)iHCl#eJm#KruAqD>Zv4><)N3`Z-yxeQOsk9dFUPNr|pqnT4*r7sRZ9~AjI;`$tcxY8PK7q ze<1zyUWM@dw$|fY@UTTMqO3Z;Iw*cunAf~PsMz-mEWi$%9QVN zz53j5=SKjzWJ>j8Gp2m{-#1=_7Ka&)`wm3q!c~^&_x@qz)cejT$9Hwy9y)0+zc9We%??1O5C?g-xPxxubh@5$GgS#&6OruRh2fh`QnGT9LO z)t1qK_$#6ftc^-v+ue^fKNHFOPd`${d-hh5jR}zrk_ZefmCXpM*?i@PeLfQYqd#QI zXOQ_S^m{cYQRI}$dPW24+S1N>!R{wuqZBaAo#I&0=?P<}loL3Kth+TfcZVZHg)gn|3iVS7(cG)_n4O ze>IW`A(PqTc*A@#1+&Lc&}D~G6T8j~Q`T_)(g-!EgOTpD=Xe|GCv$*jINc9_?FX}u zw~whA@`xBXJUhI?+NkG(C^8W4)6*M$r8c1^4A0y30W-)gj)8Y`2I85R=0%Z9tvrO)` z4eT_nZ}wp-la%o-I>&+&T`E=kH9Ea6gI+jhZcc#_Y?wRaYVcS>JTdqSWNJ#Pyb27v zP1mEB&si>JmL)|cE`+FC?4oKpH}3f~;NErPR{tvGYkPQ2kApR|j87*F;+N^|57|AU zeZIssc}tX0U}&jNco^3k_k_td!#}$F@Q60&WVMm>_}3`4lr>HR8(eR#6S~S;Z*4z* zba6hS1&vqJ-4@kM8$ zdMEYLGS4`*5ffw&`;Rr&6gCk&m#Hb8BynW>!M;0b0HZTMg^GqnIAdm%vEpdTk-!rU2>0JTTK8Bq0xj^RLxnUn zc9vr?WAl*DPU3-dRV0%U@sosleY0or4?7w|HWJ6<)z(be_suskDoAeF(;kVz3 zSCCm^KxuTSrWipBYgVJ3hy*OiBf*|E@OgGMoHr8hl!bM+odk=F+)1K38Zxzb;qJKf zR;U!^gNEW?u+ZKV7Yz{CIbPp)jRFPk<|IpQ>VyKuNjC2=3Dve`{^hQi0Iu#F=6SCB@^2}$_0mDhFf9!c)lw_ zQb?Tpe92`6`Q^?Kj*%u!vl?>;+KG?7!gxVf7~hoP$>ISBmW-9Bugo1FJ;^IUszvnc4YKfSlEh)|`d?Y= zsv3td2qY~3JZy8;+CQK~cs254*b^xN?~ra(YRMCS40l=&?M41h#PV9npzH_aaR0(a zUh26HgyZE*2jABjY2G z)pSh@`Rgr>2l=y_*}@JAGWLF{tvf+qR1dK+GU^lVowS&szVCuHO*VT`u()m-AX~)^ zBErBrhL|&f!ap03g5q9iPl9DpK)T@FI!D;RI^nx?tgmq@8SQ0m1N-o6aEmpi$Ix6e z^OiJ8CWu#nVHQ6Xxuf_PlWc#l{4Dub77z%S9(Zyqwb z!r{WW`_BjT!5telt@rxgu_l`efQdo|m7foQpmI<(+~nW8cYS_^x2JQHC+ZV6_jBD=YD{+>p{?YtFqyhTLL4EZN$>;Os|qZc^2DVCiYBrCHa zQP?tfXw;icczW5``i$8-XS8SDZNv1p_FqHr&$Li^e9Ece|H0ThMQ0kkU7xXSb!^+V zZ5tiid1BkPZQD*d>Dac7P9~pby=&h2&zh4uxR2{zRkioNetTib*HA80+Y?Yef>$wB zPKMnKMxI006{*r~*8h*z{#oo9kBtb@)pKp-R;_w(N(mmosX_Lu$5+qSrHY-mzlMCH z{W@!w72ZkGDbszz^_I_2#p1)ZcM`^6TuG{XbJISI0771EO(tw?11Q~g6mqTIB%*wl z7+j;>gwNH`NB7~6kpGglU_Brk1TAXpBY=fli;a(8T6yu{Zad!VZP4WEnXSLL@z=q} z#Moic{L<@`4QTLwaaiYi%w_L~WYKmv?KZI!&LL`Davc_BSU}D#8 z#}!sfh7{51;BrMAH+%d-5f`AV??a#%RV(6u1nT%1|I1zO|7+ZUgZclA8xS(FG5$vZ zv_^Bs9*qOZ?Iy=u}G84p5fTcRF=LfsSae5lBI#d6CwS2Umycqh5+MBM^++7*DZ!SI zO2MajC=i+ubtghV>ik^n0wzBbNy@P%MSv{eD zHX{S>tV@$@7Yhhc9eU3C{|1t(Akn7=12K_k2CqbiLsMmKL*-G0*n(vm#WS5k&7ZEl@NCQErZdaH(CQ9;!Yd%MSi_hCXBs#_ok)m_d_F)4xAh^`*@&rmJ#}K((4IygP8pUll@vk-x zrv&S3B>slh8gX!06GJ~T8k9W?Bs5YKMvlU95X%ez)Oe7>LqZO{Ugo(^G2+*%UtBTr z>l^gw>hmd-_qwouv3{}h4}h)tvj6Z(M%a08xEhy?WSBBIl8gGgI;<}%fZV+P8N((V zFr-zj9PAAYG!J;Ruj2hGzR@>`wqIHGZF&9J zE0O>Od|emhrb;^0k;blpEWd83b+vEycKRV>UbGRQe^iDNv_dW7Kfo-qb|_)#qE#Jf z#?Ekxd7=F^!-yGi;fI5SG~$Inh`X@3VC08KWM5%mpOQL(G9d_6$m9*-B-MeTF#0^0 z>l3z4NKm3{SrxRYy5O*%?G3*|Rqq-OR(3Z6s1Zl*gn&Damh#)slWEU()vFSpZ-yMD znn>{r__q};vQGY-y!8?nOKy>y$XY>yA+l4k;WbgGVOnhvD|Y+^R>;am9H6KL8$Rh+ zD#(q4=BtLhz1j@&Y2&$!_yT+|2TeyGwwxOZ;|C8>M~wUd_)|-6LF$RN9VJ`lzP>F0 zO}o--=AL)gxBL6gyLaDolopqE0=!k`k>!NIu@em>BR+e`JZ0aYnHoT*^fLdI=d-W0 zu#>Rt1AVLbj+hC^nprIq`af+Y$>I&MyBILy%7m-kfWT({?2cjMUwYD)dc6!$(P>#T zPfje#iD4gR)B6kue3$eT)+yzuJM`6n;#J9PO^>$s!{5?>Vg>PSsMy>Nvtg^Oq+v1H z+bCx&bY{txuOIBi4Js@v@Tg`_=Q5BDMTRdWp!A8z-Iv3G7fUBBQo9j9pKJM^ zkDFq$^m49+b3Q0W7?7!AV-^8dU0YG=Azva@n>SKbiJ#4#VgJ5|W@uX#t1pvv9OCVl z!oa^9U@O{PRiBKlNuRY!!LJN_)+-g0H?uW$B`3h?MyS_LHi_AsR47^{Tq~`?bVnlO z7;TSPIm2dtSxxhIV5{v^G7M`CBp>POxRS2C(KCjbxnMrM4XgqftlW*D=d{#w zhJMGcVRP)`tK1)vYE=TRn-rQm0SDVAOMK_ua(zGY!qz?C`Q}6)r0cfjMZqlJrAE0k zLKJSjldCbhZ(UdYGXr^M)G;2$i?CW=Z=|!LaUKEM`-1NCjG;`xCb2v%b(G!NEyFZ; zp6q`W1<3ywCxV%i^S_)V|3?&HWB!kvh$U@<|0N12?4^M?A+wN@DH}ULIe^nsMe^fC z+8SKn=dWtl&9+`j->7(-5Au? z>GwI??FTol%h%eIhoG*XN!gXeFU!_qCha8dsAb9t0Cc~vq+x0(luaQbeHH?vkq-!N z>hhmHYju_`*xWgB7(RRb%3PR~lsV7P5MWi6`YE`SP*bdknl2f`;3fZgaxaq09dFE( z+F)o-Bxc!8ZGN>H&o@?1vh>xs*)FNc89YC=?vZcceyKaPRAn7?8e`1pFn+(c z!Z3gJ0O~d-5w%)XjuMajK!qJc81-^p=5@?Nlu}Q+*WCHsk|xF?0Wx1!&slM5Q;%|8 zTa09HWjptE$ejHb?pipuaSOytcFZar4p#5cR~b~$+S#+!a@YB+QWB4mlbM{>g=4tk zztl2)a%Z#U{4!@7LCP*{-vINXK%hq0C@O=N;I<+%-17Tf9p>^*>2sP7sZ51 zuSGw#-%x*Bb=`D%?X7jUF=s&iwoWah1b!w|K zzEEiSqvV6x19?(2=P20JisfQLf{xo1W0uzg11a4j;+dME;P8CqdWQf}P=ZOShwn~4 z0a)FoIx?v3ZCNS0w|mP2XzErj+5avLHpJfyxXqc*J^cX`)4&@^3KHo z7c)dQxAjI*m04|U@TZ7@9QWljH_GP~><)fL4RIVe$&5a_?gnhc|9D9z|Aae9i672~ z`|B%dp<2j2DuR>|dr6szWrv>LaRq?T0^~SN{OUamKp7|U28QMCanrj*Ie^6bvS#P+ z%P-5p^2!$Q_&{G_K6Q8BSP@8xXUycXLoKm%*6_9D9Vx*CVxQt0F^hWKopc0)dQ^Q9M7sSRe3!CE&L z9E_tWTHzY99QtpO0A^K`Po&R%b^wX7qsf@Xy>9wnPz)$7#vDip~~=hgR}R+~=OH4UM73UPC= zr=oDU>`q{8iv3=x5}^2T8NgbgpgrS7qt^A5*%JIS%V3AY_ULZ=CSE{*?Z;@CV9;bJ z^Pmdy4M_E8+1<9U7$H~>-tIjESojSzUYe+V`KFjd2RF^C$u)-pffmJ$kem25HwmV# zaRl*3-r+^pQFBKNK7$U{*!$q&L4Pk%B`sO>{^6lkX4w zpLV9mf}A{q+)tdAEda_t$Uo?RXbRu*)kHbUV}MEyNzg*dj`NxyaH;JFJ=T2@p=>8y(e21+<4|tDR zm8OOq$@5PUFR!SG8DO1ta2D186#g? zJnFP*39F%#VzkeAMEOh<#qo_ubaZ!ZP0btv^I-;D@wlr|BvmrXXPInl2 z@NFK)OEW^V(16bb;Qc}WxhX`ETXd729o8M{Jn>#|*#mm!q$NZCNPF|%O)(ej7As=@ ztV5^#mhbmIIW(U#Efbu9uXd~86AF;WG*sZ@vk3o3u?YW5F{y-`G;z+G#wS?aXInM; z+%IBeyy!-pQd0^mZ78ayQ!!%saU9gdlhu+e% z8cSVlV($^rHz>!(?OC12=DgE900RTxe;+(`vD-uj{*u#W~8~m@x%ZaT zZUN_!h&|jMu9ZS~Ne!V0SDzmr5rids>Dm`Tws?D^_8=$v&~w2p_UPvKi$>(~=J00d zB{cgkn?o-?jvu@*Kyc^k39tr;w~9@O6yN4n4pV2G(lc6_>kbV7!Raz9QuuU48JviG z(#yWX$>?6J+ThU>!N(IU(Y(B~k*+YJ8UPVlG7+2Qp^`YJ`_MRW7yt6=l*lm_zjIdT zsi!6C&`A;1E0ET_Bt1+#m}O`V0r)s<-hHe-9U&4B-W(|0s0^3p!GN&JQQ-;gCp)i& zQb;4vJh|5_F)+uc&i%@5c1U#{zXdiFhZk?%3D~1$0roa;qz`S92=DA^k%7p>5`afm zT`^o>Z(J3^Lc_b+*XVIha4zI)z@TYY7;1-3)EgS%uf#{69n-ZBPT!qP_YEN0e{zH% z|L>_IhYQy?LGJDhC`UgXK`JAc#)y4CWl^RI{grW=e-02CjO!to#}Q;`YCa}-!;m(b zAkMgioL@)pJA(-{TF(EzF4FuD=;i;$im@H92I zMKsAwRzW2~!7h9Em;9DPJ+j8;`ok`psIQxxy)fF}Ex1!@+ec!hl#ZN-pT`_S31`QC zA{+v}1$!@D8ytXl+$66dtcjHUtc`!8$H6B)Cah$tRWr67o@tK6_N~#%fXshIIHBhr zO-GUDTif6Godvx{tRLZN#^qhl$3s^;JB;apcCjzGJFh2koS1F6;!^U?q0UmZ5$aA& zCBu}*CthJeKe2oc@IS)-XfKmj@J(w9JKv9T9&G5HPd9cMgwn@;qDrayD_;dX2%K=H zWcI2YvSxk!>|#1LX}MiyfDtnWUiYkibQ=)eQMqvY5MP_mYpRq4M7y{`BKCa0>(&U{ zYH*$L7-TLZ%fuj^1~aX&hp2W8%h$Xwmlx+2+|QX^{lv9f#kW{<)^sQcR3Qz%r6mCY z`H*m%6&GKmhYEcB?!&TcH2sTMJ@Z$@0uHTzKV09ihW7GZ(TPDl!c6%ywJ( zg-{=|Lrd9?ZU{Sq{YrX^u&8kgeayVJXKqc|Sv1?U&_d(R2k6XQZgIbU|MT=%%h!I9 zbYV4Ej=iq*%HvVoC_uv4o+V-)=b*-kzuwaI?#F>TmyUaf=?>0oZSB}T!+<+uQREC= zzC(RgOWrKdegP1qBJZ}dQS$Gge9r<*eJ+AzEIzETEoDhm9%jx#?sQ za@v?@xOz*)%}>_lJXdFm|CyG>VKoPBcv5T`8o5r20wOo3EpRF#MZ$!=J^)_G7B@rD zj%GaU2gFWix>%}Q)hPzT%KMWjE7==l>0qrMtZk0Hf9+*Xw2&vxkpmRa>8g5UloV!w z+NQZ^=6XkZu6=p(QE{H;gUuPQ4);uYhMLEA{(66Jv@{ecWaC~D0foXi=~V@}uUyq~ zrKm~K!|^)5LY;=u8pBFSA&k16T15>__D59n07T%)X)^0X;0ZNnLowhvfl0%bjvfg{ zs6Y$WiudQ0g-v%>_()F`dioxYkv17NU6*RUpNgSl1c#Q8HEVE6Xqg8@A$e07Ne?R! z7!rqE2>bO_auBLxcgLRIB>SO`SZu~OL6k=_-oO!MBjEe^ZHW3{Af&=Tai2H&-gfj> z0E9;-i$p!wOjyZhGIMuvJ-Mw7Ep;$)*4YQ(STeB56(t(zrE3F@`R#R+TANm#&-@F7 z=Q~Mc7_8ZpQz}?#BZ?j0ZhBlD?KKB)u=8WLnhuy@AWH- z!$&-wD4;->?0qBTMiX+`@mO3=q?In%MU!!>R}Ja7E3-4E@1WALOcWvy$+)2jQ#0l2 z+vq%r7JUVCuxvJ0pQroeG}yu;K*z3Q21(%1p-Z-nSZtKmM8_<$&t-Oxe7{QaQNwxB zBJjZ1eRngO?m$^%)T>2&3RDqjP~{E>uk|f_7qT`=!*x8!=`uOChpP=ns)M9JX`{ZG zJe6RyCOaPswM_^3CzMzOpoB;i&@=vt z9pLF@2hE8Rxw`oS^X!8sO+6U~awZq4Qv)q1R#vheYAgu`(IaD44?T(y1{ov|A(16U zXb{ErlijtT6&k~qabSU;a=56Lw}R@4^4O0D27-Mbn)()?6*10t!AZG^e8z-JGGL-+ z2xXd%AoL>_%XLO`zKmc5bX-hQ43BwXwA5qnPHq|!Dp%brhwA|)x||**FmUYyA+$@9 z)yPW&i@3GM|FTIGFsq)DG%|xoJQQ8FPJ$JJCKaCepc%Y(`OVv%kwNJ`ZEli3>c+YL z0H^LzT{RyC%*HQ=2VZRiM++q|aeN20H#GyBzlf*K!lO!{0A)K2*qGYUpa;oRtz~XR zvHTn9a{Bd`wR{oXXwko+{~Oh@PI$^+&LtPYAupg#MG)wYl7wDE5K5{!$I7Q1P%}w` zK2F4O%%W5M$PvLUw4Cs>u`bXOLpu`1h@*Lf>L2WZ*RtS3YVD`;6#g-mY1Rc<=aT2) zTiEx&0YGo(0DXyo1=f{t`Tpjr-r5Q6JJ_0*vw5|QgKkmol>;?QAZbSBGEjB%+QrSl zw>kcZc1&drCIt?#ykgwI5o&s!YAUh)A`shmi7Kj!3+0u~>D%DG%~~GtfxRuuT!bEN z}9Mqp6b zaODeY&{d|Bn5p{i+&OGX{kpA=a`>ArKl<5TjH6t6{6!^DvgE0BXzeiz)7uZoQ8r

3?9d|5GHKGuZQ{%m+8d@1xq<0B=M81-_&Bh;H0aEabZM}D_ICI^{oA0`F(qBpWvFe7VkO}{fGwgb(59>9 zhO{?#3ly7TGrH|V5PfU)3LR7re-eQo+woj^;z?~X(W{Nd_JT*f z^UawIQm4gfP>CTP97qKypqcD#by90kog7R#%6I@ zP5+$%5f*?~M?Q6PpF`$+o0#bzoF*HnTP&gR!yGv;lSZDOps+Nar+D(T1i4e;)Aypn zMZl#+J(w|1_CztLAfK$D*ee*5s!}t_apT8;s&0LepD~$-c{Oqf zIL(wv3N!)vPEJ&Hj>`vt#DA=zj#Y#wH@atkS5BHBYT|Yc_RFZ;@R>b4%?vr#Lv^p# z+Qs@RU}?j*+lS#|8qwYi+9Sy~wABqUnM#-|HXH^rmi9}-O$6U|0}O?|2$2xHAl$)X zv;eIBp-N+OH~Mtj4A^YYnG) zYa9?W@CxxY$0%j|0Mp`l9$4+Xf;CCB2LRDqxWa5=t8;J~D0gqg%+L0>xq_=u%8uHp zPAdzemSR!CPX{4plft-3w`RLT&KqF#kW0wZi3H%T3<*Dgxi}j72{2%KW4G$1z#XwH zmW#?doD8>*CC%p0qL?r_)9)h1l^l+`jYSdzO}FT}EEjyw6mhSmVws?)|M>4mIe>;W zU&R5iw`ynu-taJ5DwL0v)LYq7^YJ#Hx~dZP#_SmqfJ=gr9(o=$GF6C<#dT z8pLKfN??*@pyqSMigb52^5;$kjhq|6mgjx?fMK3 zy>NpLr4hWu{RmLjHv$VuxGrtj1C;w-clTx;Ao8VzKuNZQ#2-93VDky=Tg$^O9`wkY z;SCn#-enA}t%b>)H*&FT)0pPR;W2R00waFjdiZ_aNuwH(dy$kOtRNY*d=UqxWyna7 zhhf$zWZ{Fbg12Rd4qK@m|74owLW}C-Z=qR{@FiE#6REzBezhl3FhI>B0`7ZVd^STS zk6^YbC!=2mUrtCaL+hDushJ=9Z}l+R=!p=DXvP!c+ z)jo$`!+B^x_2X~#)0)!R#<+vS1nzFDVBPOw(jTF@KN>*hVZ3ML-VO#;Lyiik$#@%h zqa698f!(lYGZ$mTj$RIw0F;dC8+r_2C~88ReC0tU)VKE>L!w`lx^j;a6Ot#U?x7FMo3}h=r9{fH<+GhnkX*5q_A{V^-H0%S z%SYUzYy&bJ(Vyx*M2SqNwV+m5q=KG_FhyE1IO7g7bM17!a>(GE0JiW%D=q1cupA%+ zJT@A&GJ789qiU&&#n7!V-pN_TOlKB&V`Qy4T7Q8xq|k_g&y|2@0@_g*~C4tSZL2AvHS)-{{AJWF7| zet+9)7Kg9k046!})%*V9UNn#{3~eJSosQ!(zbk&7jJK@s)qH9#7glTH$sZiBpQgC| zBQ6^tAA)`J*k)^h?AphC$41$f$B}Hh0t)ViKIIe*DMw(< zNb|k3#!Ue_mL0b2cUz`$%xMej_SxT|BIGJsll&J@_4`3`hGbIP&qEo=1Idp?M49t% z*p4D{HzoHco6{-3xXo-Vf`1C$uiqh8Z@3Pje+&w%o&hyZaW-@bEL<^9zU6;*nE$5V zKF&4RGEv-x0O$3*e)$@xa%z2PGRrejhQJUC{2B!dWqLP@Bs37m@!evH`<>%A!(ADc zioEsOY2k8lnJnrn@OW9oJj0#1uUh!GoAfRHkbIvf4o1HBugmGpZJD6V`Q@)`KT3-_ZUd_efQX7NDU+b>LD|b5gHd*@&Go>!~27k|p7VKZX2l` z8r##}MLDhq_&n_FTgC)zNm&P2MmVlQr8RHzDjBYNR%IUct-`;z^)-~lkv7aQ&EU7` ztEBY%@sGhTr*po>BQTx8@in;;&$`V>pSlp3Z z`g4HQ54vS6g*{RSy|v4-G;1giH|%v~3199jhIf+~QA|~rZjJ%&waoOp%?U9C;tXU% zfdK_ZzoMP5mUUp$sa##fuIB(&nbN~RQFdPm@rtIchmL3sUbP9^frtk1r_S9YQC z4ce~9y!>CS-~Z+Ovi$Vh{I}K{W@e`U7zf|NnTkDNzvnk7SQOT8Uh@g}f`b6H!N?$l zJw$Pl&)}O!v4y3J2o!xW37TlLzawfXcJp3egYepe6;m>8*j7_ThU@}@6!7i;dK;Pv zyI>%V1Qk{s<$||s70M*a{6iSQG{}T#7rFZqPt>Z78twQR1)!e1GFiJ+x1Mxd6Z`!!O#(Z!{G<(48s3C$6wfJ7UC49lE6!rBVvwXca* zKw0Aa4uPSdgp*65HKH7wGeQolA5>F5Endq83&5y`jt}mLLxeGg(1uGQB)%_X z7)>gk9ztNVse;%P*=SF5cY2JiHP_qPc%eo@Eudk!NA5R**XF(SYBf`^-9Jt9LT;_3 z-rJ{VR^V~V&@(v&tWFoD%;^PToUJwr4Us_}`_nITK5q%SrkV4XE3hWQ+nG2d7QF(S z^HF>02mmPNP_9b6y)-52GnUQzQ=XHF%VWnnK1yf?T;2(R`ZC(9wq@L^@i%U)IfPie z$xsd@naTdcq5`@-oHQ8zfHt|+HqkI|S6QCHq)z$`9mI51IUya!0#zqG*`BQJLteJX;l%C@%P5gs`}dVn>ut8nz0NK!uR7p zjSl+L5?He`rhO{s$uAxI#|JYBQNcDWg_EdRXE9&8%5z>!R-sIXKuWM_Y!G&=`qeHy zBLLh^x1D;vJLHvqHn31x{04deqgVN7TFfRa%R_DRC9#)pOu-p-A$^Ia z5$2OlzQm8l`_oMv*W|{hgaE`|d_2%$WDZl8n#&fON5P_P26Ba`cS+d;EeNf-{yr%T zPKq3mUL+BpW&wFhF|9-d6(3$ z(K6k`wjWdlxjN3`BSG-D14Gs15ta44b~I`h0?WC`z5wDctY!#TN9yTzH7!D%kpz|f zxA{78k)|IGZ@kcbI07wJV%3AoX1}C3J^s47Yo`IDVO6Dc4JD)}qEF@tWTAk07n7J0 z>)@B^^isnD!`El0CUAyr_9$q29H2>T#lTXwEQzQHgaWgq-#V7_St7G8d3U6ft1{k_ z>;MC`?;bOFkmwtqFrpAB<)UXKCvj>DECEZ%<+&5Jhk>tU-M_E??0VzR@OE0M?Hgef z2l-jfNHaQOnpixagdQB5x7w8YCA|c%+S=wIQLAIwdej{pBGT1%X0dx}G9WZsE=vF# zQ)~%gVSecNKD=_c1bN9iVW*O3&6dU$z;3%!k|J0;zULye_u0R<*flRL4o%%sWtw-R zMz%eDI87A@f`7+@T4qM(o>R^cQ~S{~-($HUQ&h#^4nOZ~q`D;Rel(<`lG4qhRyj4b zzaR<@X++iO(}$|9Pi@=S1>o(lmG0p>Y*RMKmgx4iVUS1VsI=A>nwbcUrYTvV6{5;W zRkp3seDdw6_(3h!xV&n&Q=#Niu9@N?W6TZsaX(;wIS(2>KCF>Z;D}KkIjh2~O^#v? z}_!Xs)l^rGwJ0f4jiy|V-5d|Q`U z1)nOy5l9)PYYxveDGz?Nnqy@dk3ydb8OKPq0%_UMI2&I1$$1)4*BmjTuLxto}x*r;^``R~997Os89`6p!-0WokLJAVC)E zFXrT-7Mr8~qt%MF1ei^2ROq(}?E(!-rz-0;7ZZlIF!x+A^aQb>Z1i_QvIzHy#2o1- zTs4BYE*{Gd=4z1F;2rPl6tD<4jrykt9~KJ%=kw-NpQ3iEW>)vl{V3zOvX*g|x}}tq zSemn>3kN4dJ@QnMir6FqWAsxD-kAP3UPWvMH9^FpkT-%!4WL3x)f6U$;5YR85yNYL z{19@O^5I7T^HSTfe6rAkotVcdrZ?I9tMr)l2+JOIn=8iyPrw-e=2eT`N8HLv2L`*et@}yfz5W6$WhB`I}s{u)6J{%ph|MR z3qm;^Ja*l4;VacmJ|+0sTtLj74sxMyTkqM`cwm`&m41e4{2HjX!mw^JOlu)m=$gM?{^<&&i`MycI+QsI|s{u2~acrN1wAsYr_sr z0?9Y8?o`6#?5y(qT*j0LJ3dJ=BG4v2QIi*|i5O~C?7|fckf&lB)NL;KL#u4I&*%A^hErQ=ArI4H~uAzwB>K zMG3k>37~9m3>MB;fiD4C{#_1AUO=&F&!;%a=b)hJlF=@LoEXV7A1pYe2f{>yfgNRR z7}5v^?>!(4uM2u)x*ICS&X~?}N*16cMm}JoyeJURVd$LLuN!Fye4JTd0(M*(44zH{ z26L^P#O|h0!-QdY4TlfnTxW$6xGM^TN}Ggc2vCV7lyFF+!o}iN;y^XrpoIv{7>+i9 zm{`N;r-UOMx-V3zH9y18N9ITcV%dM0PqM8tm1KAB=dwBOFAb49gZsm)3-L!pW0a)w zIe_YN(1siYromv~C2@}q+2;o+yZh%3j~C{f#xMj9w%3TgT`F{KnxAn4jGlHEUr1K6 z2~Y(Wx*Uy$!VPMp%)JkP58`8PI5K!@6f8T@j}FVCBknU`lSC+a&zMC{i{u7UWV+Ee zViGD`N*{=pY#{H05g7(p24oax4BN+Z zs6%+)~MuhR*X9{1LOZ@755$?Q)lc1JW@G4Ipv7 z*3VTG%IbaCF_@Ojbnb~H+57K^f`+85>cRz$cp{@gf?)rrX&0A(*43a@dLA!7%){bR znBFVx$Jy8m4KJs6OXjh}yh+QpUVdpzp2EZ3xv_Hx-%nJVnal29uh-lA<=(Lfr(Ao1 zUeQy2Dpl(j-ok8aK9sryQ#L z%EH52+FRV)AF3GG#WTDtp@0ZOQHe;n#luA72DiT^3}Aov7*D0r0o%M=VC@InBS)|w zLv;rB%Sy(vE<128Lq;{*4w|?K*3h%Iuu>giJx+EtlK7MS)#%x(Tbe1ygMd`^LN$I& zb>zbuo(2@Hi7+w7Rm$DLL6hYqUQM&e`UX_k@5niOX}k#weL1T2%Yy-PSfV_N`K>}u z5{jZ|GY0!Xj;?}z7sk;LN_j|`#q=D6(9iO77Eo$gQm1o&>V&Gfq3YAr!^N~D(X1OE z%@NYw#k9_0uP)f{9eT&HbpS&;rTvm$mP%jK^GQJ>{9l1aNVFLCQe);gH}?8q8mPTY zYf<^GPQeJDCRm?5;UbG<#f(464o(f7fj9q-I!#RhkWnJ$x>)IH`GDX7(3ADLlJhUi z=a>jPhBE9Yl(MZ5qnlbOy0fU_W4E;8UL*MHulCI$KW}aA!Bq2K>k%OmmodSJQ{`Ac zMN^T!d$0AuOOYNLc?gx`Z|5V02@NV?(Vx2MsTd9As^^b7;z^~-*_zYTurn^mJh8j{ z`W3f2?#4>qt7jYu_yE|Cd|gNBrwmyrcxqPy3>GmpgL3CF!A;+8T^{)g`E6xPM2INO zrPYy%tUpjybLh0utw*p1$7m{!_l2U!ZyptCBW<)%tEnUu6!tB^0~&6Y$t(u4g~(#a z6buOS3)$VAvc7-LZ*G^3zxhUD$lX_3)%$F$OMG{#e}`G9OaQiV^nKGVZr({OGzKH) zVnI`wm18d9*(=%1wdj?+zt5{*Jr#@VVryguRs6%}26=>+z7l}6UJ19ZM6J%&j8U?( z>e^V`SP1a(;D8_Y;`#EX=VAdZb3FjJt`|&!nTNM)n_nCo8V?^Fb;s@&8vqVWf}O2C z={*y~`rL$$f!HEL6G1yBJF(W*_*HKlXt&iHk zcc4_vPfHWgzNBiku_loTpgS?a{OJ4fNhS(Ocv3+h7lwMGC8AmJ5G?#y@Th+N!asim zwiUlW9*(jI_!%oCq7#G3ZCtnrGJZ%=888o^ zHCU+^E~;0f`}Dt14;>a$hM+= zb`dVYA|w5yTO`R4HZ0T@v+1N;Q1ASN}-B?=aI9r_fF$?(kY7 z>TpJJ5Pi+}{8w0(?Q2F5vI|%h8K1(gB(F*9IYe21eU}FXmz#Vv{C15&Rx+9eE-^`@ zSS>tgf-Fj;08^rQcMxV_teI0HMihxpG-|jrovU&L`!`e$66#IHs>D`7JP4HPnER1k zJF&79)L#H!Q2Y3uzcxb?VKC0z0yIejVgZK#z}U%Brv*C7^z24F7FaXVVIe%1pqdm< z`T4QzzZ+k5w7u|^V>r?S49q0+ZRZ4aDq(Qz;_SF82q1>PN4j`y^{C<;jr7?W%#DP6 zUF^t_C=l&D0dgm9Hpe;F!)DR7ga>1Pymj+ukyv>XEprbl%}vZN=hdL;RT0g#t>e1e%4SsNJs**i-xg zwv>+Lfd*2lg`xd!jRd+d-~33e@CD{KT3}E&9a&>bu4>t_$T7;g!pqT~l&{d@Kt+Ml zm!E)nYb1rjm9WKJgS+O71XZMwXSk>RL<#MF$$fs;IryarAk|n~qJBY>49>Vt{Gbba z>l0|*M#BsoG~2z>>hqrrJ8F>*<29rW#F-Z)R}iocX&BN6_HcyJNW&*S5M(W^52wUW zHrHJoFOLni`Gwa_yf#5y5|-l8l<@w99s)o?q64M_kjk$HcSm+u2Wh*5WH^h{6PWSa za6{DB>L^e1xc559#)3OfpX2MI?jXmBHADr*o>?i@*zOrTARxse%Dn2s17!rff0ViR z00A7RbU9-oB9@h;XYCF)@PEly)!3$%j~?wb4`s#)9dXC5EkS?l zdFySRH(`q-(dLYhCQ$P-v@bGkc293`TWO|C2uaVvr{`z zb4>X1SEZHhh45`OEgRmvD+Y`q?EsF=%JXer-!=(8xbp?K)j-MaqgtiIi;hs?fDE?B z{K~bfyh~cw)ekr#+%Q@*USXQP`7PQYw*zWPPx3 z5nhxxi8R*^iA!Wu2}Whb;-ScOqe>42R4oKOO{~{<->ees*xy|0>19P$e*;iqHvYzm zxiu_;XSk@@-r?1Fs?Kb!Hfo>rX_)0;TzffZ$^W~0xHgWbQh{^z*zDkk)8lA#ueFyT z=xH9R?Yod(GbKZnPp5m$jI>VKHeKv8OP#$e1{DT&!X$Lh%Cz2zk+hxcYbu`1deyZ! znmEWp#Ng6YJyFv|N^o$?MV+-u^65I?P+eA(`9Cg5-zT?hEZL3#>|pge?o_$Z~4H}Rc)+b;b@g1s_ZO;HFpf&j~9Y3Gif4nUO4Qit<_ zYDXX}dJlmD$}kPtRkF0EQ2&Y~oxV`yH?q+g%>s=(l*diu7anW?8f*a7J=+2dRWXlb z>D2+kMT!`6eokT&OQ;zOK0)@`7e?W(vx0$80&$T6(m#Uub|<@dFUv;@><+LSIkQ#> zCOQ4z%ROIGrG~xo`5@O&6r{ywo#k-O1tmbY?76nc@z9FZz4-?ZH)_5ISe;Bbw!0>jIP=9588(i$Stb?xQ7|E zTtTHV1U8jfN?*656^;sTIAR@V&dNNzI$eYP(kpGoois{r_vaUy^cxMEP1c>>QqTAH zpGVItCmLQvxZl>IL?M5nLEiTk@fl#l133Fs&s=3|y0tNbZhDspkho^l0v*mvGg6X1 zuUm7kleL*ytbsTOdRkr|h^J96-a7#ow5Yeww{2yUBWNs)27|e zfxj@4{{#~^`>>S7XisL`0v~M8#v^{}233;~;Zg&2i;)x8Y?_7Ac?nmiY!}8CMdxxC zH|L-or5V2Y#N8Iu{W+=&U>k(Q`W*8V!z5BLiqdj(zwn^{ODK*V0gWBuF<=z<@}Tbz zI9?;Sd;JpOXSZw1sLr>!k06-^)35va3xARzvJe}TOj(YqrDx;5zh;ZG`d5l-nK zuj3LWojvpEur%};NG-&4T|1sU%Nm|MyDR<^##iVtE)dpsbzh8FfHsdjkB*8MUXOj>XNQlA z3>*iXB+`U{?p85Nz-ONz*3w%kG=%$%(CbvevEj+0%YgXfLv2IW@|mvzBhM{``+G*PbSlHMB!;$IUY(c9N+utpkbhP zapEaRvfrM+{TO-5s;bNQi#jSnEGcdaKI5JHJq?=dOa4 z5*Ly?p0Ep&fn8k&wY5d1(~Imto4fn&IKO<-Z6$w~=i!kvPeP|S8IzL8S_(WoP^_4! zqLxC!>UUW|PWMw!qQU(UEdz`qzD**Y85?IpnZKv^M(IZ3nM`1KV5h&__-=u*Z?nG5 zqSB0zl2sgccJa)@7i2#r0Oo>SoVOJR--1ypfYK)rNVhItpR+g^xg$X-;F^iQa!t`W zqRan2Tb0Wz+kz)->We=4`7!MY!ysi}CpDC_<0@{y*I)`ZdEf3&qyprr#XND}HH7Xi z%+olc)Yvc1#8owF!%GKEaxpIoJ)z3>&Hc?ca*IC-wPJ4R<)B+2;t!ZyrnP;b@P6zj z@X=StX-GS04eothOiU7t$F4rpsh6hzi?6o;iX-aMzj1d9?he7--66QUySp{+7Th&J zaCdi?;O-hUxbtOq|F3NA?l(16Gd(r)bXVQm)3?t#&+n**ik_IBGI!%?xllHS-exM8 zBTUz$gg50?;Th(tf>B8a^MhF?Lap1_0>>*1b$-zoQ0o<2Q21y}7J>>E#3;JH!(6gh z^BKEi&>`&o_yt!EC|EFbA+<3^Mn8a#vq@_n7Y!Ize8H<7Esr(-w_vg%NKl5dpg@!BO604vpxKKUlxUudBHJE!xatyDfc%iz@2o} z#7BTu{!awk5ZN3?ywv>umv||ae6~>6xrP4km0ta|@^y#_%%GF*K7lw(o`ixE(|;_Z z>0v|_8Wkc<`>^zCZq`=usuGX{-M74&YAOs#KA*L#jOu^;3?`Qy zm^4hZXFb$J4L_!MbtBk%jzhxJMM8-#lI_g5?u>$u8Cm5%NIRmg?5oOJMJAt$tLB{s zS%?(>WX^vP14Xo?EZnBpg7-(oKV<3Y<8tY---4P85m8nK(e~bZ(c5kp2j&|)Y-l6+ zxpL(pnJwC$u36fP|H7$z-L^su?eq(7gw7njH>|28S{+D~*+}<578v)R_$qGQl#cH8 z>ilpnP#mq++ns~LEh*EZY0gcD1A}#6JeDg+&-3-wUfp6=EAF8^tZ%Rv!UO!p`nagn z|JW~F!xKSJeaRVyBvSI31>8+$$bZZ6hc`yHfU2urVLzBL_ijU`UfN8?leZqasfA7B zMNHJzl@XH(6*!d%rD%O#_a5l+aRU%VrHQW_!i)`@s&fYyk-B42#F@e3(sr{!POo2K zJ=HaznWlAYr7J`BCj%Y+Mh~pSA@VO=!y7HMhU7{s!HBRbe4RK~fV)E4tWMkh?rwLV z$eK>r8IE-~LJs#HIwl?>SejU<7Y2ChUspwE>4CDEh8@D1hTlRjZn&sLYI3z>TB(Pb z7a$2i3aHp?&{7Vw^USB-5g(lO*H9?)keucZtzcLg@Q!k|JMML-N#vFR#j$=_=Y5=5tKCR7-@<6{V{(4Msk08Q zB)J73MP>)@*A{-;CzcD8lM&u1Y9tnU7zfc414HRkLH_lZu8{J%S=}HmuyRwNx#t-q zj=Ai^Bt1>ssD?39%%ZSq-cbn~QQIjroTyr?n~f$1WNCUScD0A!LYGr4*4P1w#1P|uNK6V?U*cAq`Ge%+@QO60%{~q5D z=3pApjc;E8Mp&VjKC6ni9l0uaXZFE-@G(o<4_|s*SMi|drFG$;(Ot9U&9gZ=?(ucN zLGStFRjm#Q8`!A!-Rw6(0`EX*w6106;49J<9;MvJx!3;Uc~E#rlZ2x5O4UNJmj!$s zfQcY_fOZ?=9~0{IVffO4Z=97xK^81fE;)LrmN2bAF(1*^BJu;pcaHSxLi=?u=L$S9 z>^65CbicRSrW}l;rmM0-mEKvuEaWLJ5PDe;c^X6-6`&2PU1eE7SOtCLGcZ$8NJ18G z+J3IyQNjtqI#bC&&}2dyX_CC9g4t=eO-h*7g0b;ta}B0~TH6DN*53V|%}LtJ3L8kAD#UtSHU)(j03sT(?BcT5np z{SERA0M`29lfvP03k5|K!;=jmZ_2-RGy)KPQ1(PiRZj*+QR{F)DP{7$+@?PBC%XFw zsV4tQ81^*=rOJk|*k!=w!66A=kt@c16M^%IWj+|O>yFk^SF0x4iuJ}_DZ#qn*cKga zrTZ?9lB$=$A|sma9~$yq96#UUk3IRdi2-lCBS6pfMe16=?8^kI?i+mTSjBoJ+U~1r8kA4|oGaSf1+=!ak2$ze@A~~rqR z1@64V2H^8AZx=||XTj1uO$ybSq~=k4PI0fHmIwncIde!Ea~8xq`dx_a##gB9EHlJr zl*tf&k(K`3ew5FrJDfyWv4p9D^TV-RQ+d-ypNRFo;k6>IUe6CF4J{V4mYT_p!j|B9 zXDCmt%|s0_^;~Us>?`hoO&}u=H;b-j+Sd$R(W0NkdTuLmRe}+CGu_9BG-TNso--XD z2K6xDRCSeEd^#`C8i8mi2TNYJQj2en@Dng%c7BaDN}iFX@WPRyZ_O=2KG6d)UbeXl zgSd-%9`_4f4GFd4!>oLJGQ9H^tAdDsO}igypauz8Szb8pe1*=k~HC8-rx)ZA_A1NGbF9neyM4 zO|(jeOIY@>( zybjNoRGlly;RDk+-zj~c_qrocb`}gyqa&UO;xG)6#euThalOqNA4BlrOab*b)4h-) zP}QiCcWwn5-IRt1tR=im)=q>pG3@n`OWKBhz#LNjBa#s?4_O*KF}Z10+tiiHW=m#z zhjF5L`(8v>x^q_6P=2i8d<3-XN#Y`a9 z->HANK9(R_vUAxnSt(QPcXA&^?$m~U9E(VP5-5!K*g~Au!he zzR~?g^0t8)-Qj&l8?d)5HBBn+8Uh(|H8JGfV+)?3C|)Bh5)OQ&wij-D_yACivsog{ zmQZenv-X~F9!jj?N^gi}>m@GuKAaKH%WM7MYD%%@iHS76=9PTC(p4UC=p5n^#?}W1 z6VmVBLQ3VqEF!3>3r*_CsJZp<6P(UuoJo!s8`h={~i_`jFZgE)u zo$vY&lLqJCD!>1Hz+<1$@B0?6C(MU-_5a~@zYV-*LRv7Vu`u>2h$gl)?OdF}Q zDjj826j4tXww^ro_dahvRI3EgF3`+)s>Jk6sFU#uht3y#%UA+jVayCg+!Ehfv8IuZ zJMZq`8w5*8SH$~nsHgYNuiuR)#I8I3ghcOvQo|Hm3;RjCnTR_C90_UYx79^;Wa6Go zzSajha40eW0jWY?+VODt%Izb6>yELrED6)W&dA8Ta(ULUCFB=FbimK5SuaIlDXNHg z1>zd22)l>U<$w2_WD9kOIs0|CjTPlr zJ&iW+e&P<+$sA4uHWHqxUonvG&uDzj53Of1C9PBmI5ZCPJ%OJ{28IbednN|`Dio`b zp@HAByyUVZH5_UTDBlqBD$^1V!*pnvGtbg$DAvueLv!JGRz~v;-Du+MB|L#vlgKkw zw9oGhbw)hYtr&6pBKhcodcwlz!^-E%^o))I`LV?8k#h|v z)AmY{+uBevj9f2kSTu8->U9x9@iKoG^-i#f%ImBBj=^yfcUa* z3n*P^F7{m?$OFp?qhdl9D4RJ*VMfbD0LrB{yFHb$jdjawEjz_*=;I;U$q}Ds8A9dJ z3JBNVhJ`!c7PAdyVn4n*=J%TmB~Z;SqT5~y1%1e?F-;k=(fBxX2Lx(sI#so~@HRe_ zcisKIn6C1mf%boQaY zLo8}6v^KeZwB>!cfj23CrLa(9_&e|zZk&~RJ9~Jn3xxL}3H&NF4UQUl3BVFT5g&o_ z!9q%cn*qVfW55?s>yXr?t|lIuGbG$6n=FG)SAiHOQABDiB}8SVM#|Z{g1_V|o$Pu! zEb!kjoM8}KCkj~Fa_(|uTfHCyRX%smc$%8)jRW5e3BP2GABy{K*7fJ4Y2X!$m2ERi z#%Wr;GyLP-nN0GA#KKK{A1KnZ3*5@xaHgTY-5TI+OY^1cT+rR^`pRFa>OE>{*Hee* zBfBm=ibV9|=A3@thjA#=CsJLm;_@%uLKfQ7mek|&kjzg2Pn35=%6Vz4Chv7_h2DZ< z7F;ZAcpxaw`da4@PGu5bD`d%)-gO3fUKVC*86|UOq5^*a^p|k`As`3wiY}Ld{2myf zSHoQM_YB=eN9qizh$DcSEk#f5FbSd(SSKL9lVukiAOK#SFS)P)V$E_67t18CPUp!& z0#+yAX|D-pWb&DY`2ZujPD3)I-;sI>N`?}k%f_n!u1qRYIwmD{CmzeFKK~RuT(`%| z&NEK<{ru8`qRTcBz$p2GFLVD{0;oVqYVt`L5l|8OLEiUVT`hP%bw(N?IAVh{uYi9k z#-<;9jRU0=8Q1cOdUq!iL4%c$>&vHkihyufXOHT>-zwSC`BC$7*~{bV&u=QF#zg6` zsi5bX5Ri4VCk}cc3-)sRtL5n`-@$V$0FxO?E^uf@ahMMV$d&E&axqq@m20(VMiJhy zcu@_VJ7Kyc(lIb z7Et7GhPVhaY)Vy5az*$qm!w^lG3Zh{PM^WPOA)>|JAKoRtx2KcU zExa|jeu{>v_P8Ts%>4959xxvrrevNVk)D)JgY2G7NnSXA{c_m~&Zy7qkTx^P@VRsd zo<2tO*Yo+|eWe)M{FF?YHY=Hu#;+-DlEn4XkoFFkX=H)J5ix=yE8M{Ql1q=K-|6UV zd%EXqt0)I`s3qCx@O1{l!?5Lgc4uHep%EuAV$#EcH#{=!!`kmAwMGXzHcv4+UDgD> z_4lISE$2Pc>M)e4N21P3XKBT@=W!25lLxUX&t#!YcIn+Q!AsJe){Bb6`AS`M^hIn- zFQGLcMVfS)>$=(aX3!c?=ds(Tk80?Yz7pM?HqpuFKV_7fkv6}fr#pIlaRys@W!z{l zWcaT4i~gIQ@k+-6hL>X2KmwLze)G#6D960Pz5QcNUH9!`I;)|)UpW3|RZ$93X4 zL#NnL{{-?gsZIg^(U5ubcvMr9!O}SnC*v_-H_^@sJWC$mW2wm`>zay5O5@fi$NoGZ zNg6M=p%@9bu3A??oh-LoT@dg76>sg1s&M0ox;Jr^Y3o)~PTgI3YtSrihr6YrQyKa_ zpY~cEJ~X2wPvbfLx43YZmXW-y{HF0beMS2d=2fSqy6k{&$5+ZxxviF+_Qh=CAsxep73$1(K^$5 z)7?^*3uoPQXiO+5H_eC^mP;VfY7~}8ydX#T;>X2Sa+a7#m?|PXVy`hno=fo`*Wd4L zpf01*^e*rfo4hwm!#%_CgvgAGJx^u8mRAd&Po*7)Y}Z5mWRCkX-V*f_x+~bua`Pnr zK~LRQ5*vFK6`wm;J_9%Jr*a0HyM52!&+E^`kiM8q8`!Ug`=LcimduJTa4aF;qb5Co>s4)W zdQ>=^iW}>@-My=)PkjD@w#?bNcVQ|uZHmY}Y#$X|LAeE0Eau5KCWVDPoX|KJZx%_&1kL83k6hDZIp=i;5 zD5FgGjn08@(XQ$sWzyxMIfE5ik7oX%CuxbZ7(&vLvRVPtl`Z(bH&&nmz#6W>BUzzQ zQ~1;nHwKOp^C(zSphzQPGQzC?5GFpVPgoLCUEc(cbh>~QvoF{Sr8MLXoCOOK-mw6c z9XHm@POf-|7!JLl%2tI7x!@|Glv;NZnNq9>HX1^b=PHl}2c51`sx|pJz?9kBHoykQ z&(+73$r7>3!_P#aZD}0{Xd$S8Wf7>6J8}dm@4$hT?3i~%3Yj*rLSJ&tAWRc1shx}y z{HE($koGL7Ehe`t3fYHQqwb4PC1&YEj0s+JJwOPrYeTc98xS+zV?wYKPzp0k?t{jS zOzo}>HBAcdxPXa%7;4*UV;{9~J?jEvtR*4lx%P>2rht_^ddX8%o+0Y0SlH z(UX3KFg4VlGBL_Q5A~!Y$uxs#k`$Ti1g2$5VtlSPXA-ydVO_Ui%?sBRsO|^n(cxfc z(}9VxZZ(_s!RsUPPU0hi7MkZXu&SUe)<&ET8fLS?n1-5*aVlks3aW58g8xF?5H(Li zGs@W&M8RO0v||YbYC{4E>b>M9vcLK{Io4w5e)@5T?K=KNeMIm6a&_a-?~;=0b>-nB z@FyfR2~6PCLzo#}Vn{+1FY{>oQS?AA>Pl!JWjSyaO zG1N$?5N443Zuq&~xn|GExs5nr-Jv^j`rEhF*H54`duja;FxWTu<~@Q&CSthu08qsy?a_D%Ra(gW)*&7OEpM?A6XGva*5+KnA^(fGab8+6O77mE4E^dD zr^=ny7dt+6H|J1ugTnOdi9RlkDUC zlz*|S!21Bsk$U{8V9iJeMLM&E(go4-ZyzjE`S*b!Ta^udxSNZGy1rcwo-8R2?)BTd z+XCCB?vOFX>MaQJ9AD^75s&? zQh9-M&%(SD*Q;@#^t0EGFyY%hzkyk>`PJi!jlDP6^566@YH?*Sj^Pcc-}%`%TW+V6}kYyvtgj zkJ{GPTi*Vn0LMX3vEU)mgdY(lY!PHJj^sh&sJ=+gwhBzcyE9pK6rA;deM7VAy{!Ty z68x&U+2Uk3z5ibfgG}g&;VwuV@woC|*eLXgBtMxnHK<%yy&)1Stw_`SgZvZ>(j$`S zJR$8WNh=u$8nid&%20S7!aEx*j0BBB^<^0`W)s(zX>Zg9CDTwK}Sd6E;XsRIXNe6QORujpQ5g6U}C{~Lua>zQ2UzOoV zG7eNjbCV(7GA)cC$)@Zx1`hx(O$Ylcsbw7KC!M4R+`nE(#1DJ`J~>UPu!8}XF`jS$ zsXd#()^FFm5>O`eU!w_P_}s}7)YAJT{CJSgmA5tEII(#%&eA49ty1BJEx2-OAqEp7 z+D%L|c#w8#DQa~MH_ROw?o@P;+6?FBTES6gmE}m=v3Jsa!rv@!&(Y`=lR@<8B}flb zt9@jyPh6%I%tDm_G|8=UvkKKF)oht4IQHDr%B9n9en`w0wgj+CrFy<<7@>SsVi-!9IOh81tc?La#)%b6zBk+y20#&N-BF4nO@ zyz|YrVdzxCfNGFB)=3gA9yJaJ1I)@4br#;9+guz3VN}=!u8g%UDuu7&CTk?O)UE{2 z%caR~T(<&i^U?r8Tk*&h5ntiRaTzMx%>`MMcdKV6}>tHZV( zN%%7T{9dQSOUXNrD$a+L4|+#)_BvLL#N(P6@FNa5#yY}3r@DU577=lKb?ER5#CA=j zTF={11VL+JNMnr}*mP3e!I@qzpQOmd#}U$J-+a}|8rRKwvEffg45-;QnH=wQV_8qT zSTh1|`+ckMP~RPq0XI1C2UJ*8&tNePw^ee#s~q(ZKeCnaK5GkW!91(!us)G$BhLel z#uW}IA*|11oH&Fm`mXYsh`DO;jd-%CNY#nrZGcx%bXP6qtbw_*Hcw8ml_0n3N0j#W_Tu1hNY4+51!*oI z6L$RBSy`es$uWf+%7ls-yYfLCau?m}K$`;mI_!8U zLPC{tv?#ic3>#=|m}2aot9@C}hZ*(<&bsN_BOoWBizRF83uo(3bt$>f6(MF;VxbFg zT#vd}pPhfyFuf%hU|EdU{jtu+6W{?LNM%-G?GeU*@C6O`7k-rDJh`dN=*`cFGiq7a zx$GZ*+gnU!X9#)Y*f$d|oeHwDV{O_|zJ7fY0U^vJGW7MFGt-HPy3 z$t=oSnv?Ra$g{S1i0bR4<(+{?^;h$;l5-mlD={tVljVc^rHhlgf`3jfbIk#gEImp5 zjawJqiiVvgT#Ua;xt1+NMjFwhH1T!TwsCG%%d6CEHgm%1v}7;rg*~a8)Gz0PvT7Cb zDcKnN=f_2xY+Brt!ef*1ps6&pCpIqrQZ%m>uYRv(AoV1#bhdH_vv5g=lh1UJ_@rjd z-7)64=ZjHAWUZqnMDA3p*AxIrwu?*TM`>o_sANvrYjHya=wf>XjYY6l@!8>nD8bA` z-pGR9$jHFkp$65aetymkqim>h0vv_t%43L=$Lmd%mG&2WvyvWem-J4hKVm|Y^3MrS zo0}q9;rk5z+}#W=;AU8b^f)5k?#j>jTJ*7s*~6li)xnMn)E3^9xpct0<#w~SU2!#1 z(v||LJsb)Aq$=susLmCQnS_-@VeL_O*D8)|j?=~nNS=p$VG1#EUVMc_tdKoHpCaKo zhvH3eS0_2h;3q}sSJM@NOCco`6Bqd@P=?c*t*D%;y}41RoMDc&6@Ie$<7}aH_+Oqd zP0CGdLoxY#$UI`J<5R#-8TextrbxGDJNn*90S+^hoaIhe)(d-zvzlV{Ch0Cl)-`lk z*q=i4VhCQR=cAfrmm)jANTm^sAgz@UzIXAq2}+MIJzH+${&Mg%(0CL16a=yKo@6-d zTzTd5Qyd`{k=V(8?fP@~bJLn%W?%$EB(9Cu!K2%~R3MA^_2C^DR-0MCtV*(%l@qcM zkPe=EJLK);`ZCR$kYOOYtfo%Y6Q@b|rU^B-xjTPdy?u~c(9or~@$N4fw)`7Hv@+}@ z+2K+E=o1G0WW_bBZMssh?-eA)7^1vV?HlRn>DYD)h=G*ZUqP(zUFp*=SPVLm_;$&6 zJ_d0ISH1Dh5o8Ql3ht0>%m`x5zi>_o0;}(n*wEil$^3Mj&~%+zAK0hnQnV?Xg%R$^ z7}L-d_VCFqu5)YjQgnrzIX?D}<(EIxiLn%s2Q@-!(HXck9cRpl+Opi*?85Y(-Pqs) zX6Bc_!@LVx%tKBb_EAd9$HNVwg%{E~eX$IQmw(>wqYnjrO#0rALCE?)tuyTG|L=~Q z_IGv|5`S*`WZ^?dV6 z2>ODHLKOs4ke<9q^nnUIO$l4jWyt>icEQo-{^c&gaPr|=^WcYhQ{r!Jk8ur`=CCBK zZU<7vTJWEci_vKQv@Alr4ZRvC7m@ZeYoWU=HqZWk1+Nl`ld_bm%nn91!6TP$c#Wc5 zxsHAUhGMf!G%Z!g(iaJl?3?kDCvarzTcJx_@fz9)JQu;2Tj_E@fpw~e@m4DAi>3c> zjizp2o#Df&hLnUKw1${)Nr4faB^IoA3>*{nYWj{ZTf01$7Zjwz$QKXL!`jOvO!n(U z-_)UFeYV$`)35fx#AW2?IQhhMT45;m!ZYb3g{l2Eh}j!p z3hQZ>&iO`=oE>=sRD+|(DhA22XwA7$%9Qs-p`b0d^oy?BH|mjYnWCBFIie#CleL{S zd0Z8`%%RF*%*)Hg4$jXyoF{uOBg4cMA)1@T%HCvdTFlS$z(VEro;?24!C07JhS8>6Zph+I!a+NZb86D?1R1}koc(uxp^GuI|BngA zOw7s7^p5}!3o$3lKb^jRC*wapCuU}0|Toh2fQC`QHYInS=G8qwrUhll}h?_N?j*|tmp~a=Z?1#w?*r?VT?%xgqtLx*dF5|Pb8JQhmAHTJXq@+W0 z!0H`V^An51;-;XnqAz``iM;)ZD^a2fUTCTeSCR22F#A z1~deh)g5j#sUVxEgadMHAkZpQI2 zd8r>}ukg3azl|-efMWzl=6lCys^9}VAnKj*p%f`em^dkQZ;5AOwSYF(W;nwX1%jZ9y%=2s3K z>|JDev0ngp@ww?q!rswqhpxzq0bpfAF6V=tI0|qNyKz7T!YCiyIdVbJRamjTxqZ@l zXh1POJ?Q7(AHTnC3;hA$`#!(kee`^PHQ;_RApG-r=JQcAYh2C2;T+ZseA(INgt~ql z#a;vb*un`w*vS($F*&*WjAm|ZYW(viDE_YD;5HAWy#gRfu76kPSi-!wJqt{;%x^kY zr}XBhM%IOZ;i<7LC=+YrGj9WMs&*kKmt#wRA@}M0T2lvRiGzdv5iLK|Kew`WNra~P zX~)vU`dmZsR(xh~KR+Q8Nh@ou`00Rj-h+?%x3_6@RO!I>+J_`({R8Ev$`iDN)aVxY zj{L;vFlfHnp5fc;#|PHn*x=r6kMuJm@$hG|8KNGLP0tUq2E3XZzG*yu?!SJMe(dRu zSi@P*dTZbrX9#nr1X?Zt+7D*D4j%4zif04p9f##ll24l}d3k=hSfi!Xi`cf{syUW< zz28hOk|kn|&@b4+k|Ovrcxq8_Z#L&X?{obg+;oTn)}kkw=B?dp{Attp0?0ppB8|K- z*^UA}D)Kcqe|#foUf~m3MtN4tkik#yWp?Lh7K^%SzL>f9Hm+bVAU&2~q}<5}5MNvH zWaQ*m=h3`JZo<9&lFG$L@r?!82Mat%*g*>xFmrQ~D027&zaz)S$00m!1w9h&C?5|B zCpqI8zm#O7Qg(Raa`Cg_0)ahkb-Ws1&6#@n-*Dy(1~+Ic?)OHn2Vm7)|uK z61s!!@1d0vB*e^(>1CLihNK0{&yfA6GH#4iGt zPxnMYhStGVs}eah^ZcrXc>8T&W$*?(4+x)kMhA$A^Q|yt+z8(xo=a4x(I!5_p`pp$ zDqux_8n2aG`AhIzB|jtbB4`;;G@n9iG@3G;zR$d3bS>#$T;{SV zEeSnA`UkJ>2U4CU@>9x@j%_?;1eDrf#R!_(zm-3ip#ZPE0mXZA$9;p5H|a9C^-*K;WEe~pT%9Eq{HUR3D|P*N*-ZpX|j zcAVgM-sDrQY{@gN$Dq29H^Boc;fHR%)6D20E@~&+lwwF|j-JTQC(Qx7`2#=moA3^f z8U@*n$X6Gx*TeKR*#*0{Qt@Hd(4I}JlNflix)Ch-^gS;p)aO}*%Z#5Q5KmyK=%I&{ z6=xtao>>+m-=$48f1kaL3YRJcgOclZzAMqjDT)yE$cAbD(Y!qTp`0cZddM!SW!Cf; zX>BsYqnDvN^<#W=dRPx|Y*_t6bB*KpfIGyeF(NZ%os@jkVLpnKUc6Pqi9KXBS&jF zNZc+cn8T`1cymRslTW9%ayn^10y&BhQy*e{eA1Rw^2e70^gIyQinFfP4;4s{XQNX9 zPxw-6Lo^!d$nD`esmI5OHebJ8OcAqpc{Dsu^|(;gw`KpeTK6rtdpN31CR%UuYtZv3lAc&Y4bWPxH_YH?7f z&u$dOL^QH5-hmy9lHi_|BbY5|9JH-Mru8~x343K)6Xn$zxSKdmbstSt#oE}bM*IERyio0gMb~+hcEMCJQ6u0-|*>8Fn3Q) z@F~tT1pP1Yo9cx?kG%;~W``_1zVF^{A~0p8=T;q{f?dIt%>%qKca0%X+>Qz|bjJ`THfxD)c`TH_bJSnx=lDy(CWEYz zb5ycYNp|#zSUxM&P`H$X%Mg~PJ|=}WMi|VKi*F16fhub1D^3mLZ!K=C3mKjX>*-;H z$zZQCQJJgm%C<`S+5Yx(eKhaH3M|rda{3T+jMv~xyrWmYC5!*i-~t}HvzpTK9jG2E zkdE|W_p%X6!lK_H2JSDrZ`JAup;j{@&{r0p!wcb-CsnVT4kcyZ4M9#y(QykuW*qCU zf^E%DQ&qlp1n<2dZ8l9CO>}+TAZEVP_7RAtu5QkN%NI?Lk5%9QEYD2%=I0cgra9hl z5(%_(SQC!hK_A8^T%q|r>Fa}1vwy$?O}Ql=SY8u$vEN$vvtjurF@9E#hw?kPP?T+< z=Tge$4|u(8m14814PLjK*fADxm9*-MGjJY~@ZX~khz&?#Wn3z!Y<0^)kYKwI(IM9{ zm(=)k@ zs2mM2ZlxyRr#F!6ieMwlC?zZ~LO0CSe;$suUaV~IiXQWAe6@fzk-ATb_}X}K`b2s- zg&1pjXoPvikAyICJbX}^Z}ZGsbA@cax&3n=v{Fr2?Xf&o(c4;FvD>9DV`Sn0sc*N| zSujG?sXC~3Z@bMqZHfd}*e)LcD7Ybwu6EsbL{T3Y4RC$Yv`v#WO&=8Njef?8<=@q| znPRk=J8Dv{r+h6=IqRw zVzs9c=PzgF@I3wd`#it4cu)P1__U)lWg-pfHE*k~DEc?UKi7Pzc_^0?!QipR4@VRl zW^~fBiTxuZwSB7ONVsWNwy2J9hiD&ivN%=roB=%b$Rv5$W!?k#fgL2&EuCPX(CDJ0 zl1?9pqLy9eFl-~3P&3vxKx#h}(vAC5qMDF2PI7@O@2A#Ui6!u@%)Sub!hdvY*>1&1 zFT@{CB3+?*_v)FiDU!d<;&g)|(??XKe8$7;f2(weRZP@$$1E$r9aK^hL; zsG^fB338sQk4v$6DSY<-czH_NfXnlqnf-Yyu{(5N8JP+*);+B)Ro=@5QhJrv&;eR0 zdSEPFe97?*&uuo5WI08LGrerSPA6>!*N8Q@P#ZW;8W!b8`GU20B5xIH`AAoea3LT4 zm5E3{Am6UY`4^-Cpvh#hbeVpiB87n*mxgX2QWzrZJW#Mfn`YD`84i=l>J^>bwv-Dw zrtTPRnCy^w#k5S;bo=gtNm7k< zWwpI?06`u)A`kXAV`6m=_Yn`T&%yN_On`1^scJLY^#}v2@YqWmDEauxnVk8vj`z`~ zZ~G3(CYfRjhPnvOVqc<4I5zI*v$bufthU5m+jY#8NrppeRus!kJOOR5g?z@*B5?WVuzl zGr?bcz0}x(u%Ra1exPokC}B(VqfJPdo8Oq(R&1zm|D;5zE_!paxh%4*eEI&H*0U7& z5wp%`7BPck5y50uk6MLL)ETZ74gUIRr8p>Fn$aw`3>;JR1u?c6hf^`z%6fMaA!+`R zu$zC{LbL2p*TYtL`O^edc@i<5oNReqGZ?kI1O^f1MT1pno|PiRzIotQ_xan1Y8oe( ziM${UHEcR!7&`_Cx=)oDoz7VWi%-rcIcF;s$uhDr@+s3?L3WB((Q(M}JA;awe+F&c zf~MGg1kfBOz`|XNLa`L7P7Cl)I1LSKYGF&?&881$F?HV_wO(+I@rqn1eYLF)J)#<2 zzun*!_uJkztp%AG^Q>2jdl=sRD%PxJ9yWOvYf8mHF0o4>_AsNncBNoZaD0^dDnQq1 zwe8d3yPIKr!}meRw^C!VotC8Q$M;Lei@-m35AbrVRwwc|hRDk%>J`6>l2dBEK63`20|H5QJi|FrG*~^h>ODBeiAEQ_qHd+brnTE zG#WvMC^I7Oui*Gwyk))h_t71AG z1BgeGr*+U2yhui5@GTlqoTY@OII!K|#mhk#6E`?LaLg8}hF5Q6R1G{X`Kcc@!;@M; zOL~iT30XhkC0VGlMN<8*gP_^h=;GGshJr`F1<$dV;j-B&eq+`(h{LPTZOFd8;FQor z|BO&w{uu&{5`;J_ju7H%r12xGJVE^(t*R%Nw9cpASXz$h&R01>+8s!9UNnDyKe;h& z61k*%45sfe-q3{~pMC7|$f;kEf#F??*a_T9S;1F8c zdd(hnR<{c&J_{k$4^DX6JEmbTJLA$ou3mj_iV}V3*T#-o&}v0#1|6m%Ei@=MfwW(( zN7>!*_<`B;-Tj$^Itoiqxno8@htBw!CE}#wkT(L}ejw^iX<26WZXT^E9X;g_>g2j5 zDNTgVoa{?=y7C6{#=>?o{?!3<2oF=KFy5?JWpLLm^P9V>`L&6NM?O~YOf?w;pc zYciDvtz#S)k@x&9@}ga0s=~5{5&-YuNM5h#8Pw3m3c#z7AIn)iJ*#rz{pRhTpt2C4 zy6!mk7{c+miqz4{5O!^yhB35-BJ=ZXbLC5F;-M$5$51#G0$cBxsaL4{U_xhK!^9wA ziP;tpECW>NFJ07EQG{vnf>R1qOeKPcM_Go!s22`ZYRPeYeR#s z5;aO`s=vTHQq=OC#F>&O+WZK|5V7z!uDQO{{Axd&V@yFN$+GaM*lW&PGPcI>cGdTW z##qN8JKL9<(A`6nZZT!tBLafHz2wx?px!SqeNcXcUYIvjD#~U>mg)91;RTQ~jU5zs zP%kFZ!-Cvebv@YfF1BuvLAKt-w4=|Nx3^f4HDyNN@^fB$BkxnKCF9^gllddK^OZKu zSuM`OhtR^0p#L_&O`FK+lMbmWYxd4hXrXm*=yiX&4sI7;45Q?75d=cCDX1@879nz= zTudDsz`Fx!pq$^FQ(AXLrNBGRX1)?!O_%N@7da0N#ph;yIhJO;7N}`cfMw!o{#vEw zlI~P042ODZtVGg=)14yJT2l`pAjgTI!ATfCK+){9PxtcBdot;rw-6{ao0N4`isH?P zb8sgmHD}<%@IHi@W(jyFdQB`5YD7{H`^!7U$DnJ8pnNPAJg~nV3zH*SPM9=(Cbz{Hxf@KMt|{h6{GE>C*2zR>nmT-?eEkQ zRhu>!XGzdL%q6iz(x_>pjmgKH9-rf=#@7{K=-@?RR-$C#N&-m4f*nG|b!`H`bau1` zP!(HDRp2$AGc~TJ!e*G4^Uz`6T&!|Na4<~lvu!PxB942a zG6)wq#{S?uMN_nlXWZBb4$}QtTF^yVmb}fJQag$tx+oP3rBj13;C*J45YH4_g#Cdz z^0bAeEBWM>r4A_5709~mlium_8!GUpc0S=3D(VICaE}}GSu$XFVe>6hI%oI#HcZno z7F1~}E){0U3Rb|Vx{Ojq>l11XLsFdv48^@*V#9Z>ZBNv!FIGW)iQK2(AAi5>7<3#t zv_uBr{7;N)$y|pKLuk~kew=|V*$d(uh!XC*4{eT0Qvv6FNl(AqQ8|--vDmgoYI>~j zRjPQq`Q6w1jI^Xmpz)Y`dw`yyDraMoI>uanxVeARb@bcMGH8!w=$wAUxg_yIeEeyl zOs2#Q>-pHxP=IzzI$iv=t2AbV@yc0S-uA{bN7t$R@(LiTWIKY7fPkyL@yl;E_wpFr$4av(qQDrfrs5@&Z zZUwU&*+<}rUamGLHh)<@)cue~wp$=VCt5!h+U^Yx6@d#B#Sre1JkvBWoPIif_u^A2 zp@r`Pc?5?z9JOa8BV9UmRV=)K>@|2ggxhwddKa$_oRY%7k6<5T?hd>Dy|{@MdF_dQCA%Q9Ay;TJRWA7FDyZg4q|0Zo2yP z#{d;k!LKhu$#2OYMMDFIO2fsYT;}YDyz%)K zAvm)f13ld#s%sBgp$6)A3ogqTe1wv*0>IdcuB)ikf=t@uA6$-C0d?4DRwa^~4r%Yz%mU}DhWS?nDube81*kFeGGxb!NKPe=&0#7jgBhH}>A~ea|~K6_6c#ugUUw@W%da zIFbe5z7FQ$!xlt{D>YC&^pm(0!fpo$IwfztiUvM>2H!9uOQuO57ERpX7W$9Rj~a;) zNn6{O%cZGLXcen0ah&1Gsf@P95Tu+icLSeNZ#z%+q76piwVo-ce z)_!C`Q*uk{Q%rr7tHtAu9zwP%7QR5l2j z&ZZZTvdO}W+CT#E++cb83A*RJnA#9u4eUcG&KQ5$;fnJ;ekMqViK+O7olGuU$*@~a zj_#y@QjFN%9oAmEuoQ$#p@8%h>@w;g?2k`6C`TNlppB{5yIsZp9EA#s5+xWx83Vxn zoXA|nm4COf>JyLXNvG3*aq`C%P;Wiqd5ne4@AhckG)*m%Y|2Ztve|2;Jrm-dn@RxY zuRj<+lly(GN!HM-wS|xvQJnp0hPiQT9gk+vbdK`_DxC+!%O{VYGef<0ia=zIo=mKk zA=&p>!Cp&{8TG}=#lg74x;DLs#Czf4brMPqDV!QU2P>dS+bLD$799zNWlp{R z$A`%iSaMUQma(POMh=uW{z~$|ko1P9-p2~VWzuKA(TWB zx?~Vw)bhO6ca=9G?ZPcgD;a>=(fyzC@TtnB<`R*$QM0fV%_tAmtqGy^qW2eUo@<#c zFD3#va_f)6UxnGa;x1_8$&IH#P_(cUv~usF+*Epr7$t7yKU%w%8>~JoLSSptLyE-^ zCT4_P>pFswP08S9v23^#ILLhX6ig-=-pYf2-#xzn!AM={U9m&R!(9c;8F?V$b3*Wm zD_hF}IWk^Wk<-5>nEa^&$J4ceP|Y!IR^G{TNZa%7;jM7;+dd; ziVSAOay;EKr<39l+E16^NB47apf$`3$cq(neWmAN3(^N(I8I3^qMW(<;T?kLAdonp zp*Z8iMznM)%_U1+-VJFH*>6newnJ_wc!JU9seIzJ&&Zl+bVj&;e6 zCY5jtk=FcCFhFbn?0(6`XjVPrVn^J08r!?P&z8ht9iYBrz@vhKZy-VQRN6QsUv>mc z10!nGO`+ny_%;b)hm(xMfcet6;5iM&c;J|2eGAU1GFpLHC;CZdIaM>!8yth_uskaA ziPhVu!`H+f@xTM1@jUm^H0uVw-b7m}v$A(|pB*~wlge&I4qTgq6GizeI{iqJcAt^) zuD4wh-dFkf3^5?p?W%?h+_OX1ec5G-{wpPsZPX!Te~7HAy{R*h5}LcXLc6x-Ux)kZ zOb1z-_blOcd?oBUah@Lx`Q`r-$Tq|ljhj@s!7W}x>QJSDmH73H+{Qx21O0=2zzl90l+!k476a0E=hFQl(9l= z)$7x($M60vwXP^b32b$Y1EM!g$M{=2x}>@t>Q1o^r_RP$wxUoRVFX0HSH&&L$IHjc z#OmLk@!c>}fDDQAFy)KRjGtEcJS3GKCa2A?WU!i4+mryV`eqGu;@N7j zi1%{R>(kfyrHsBRbIdWTNkJW#S`6($$0*iYih$W%2>PlK1zy^OI~N6Q@%m50zZv~I z62L~R!PCiqe}ZBI2fPKPBM^*F?YqUO`9ofa3a+qUm=Ue-@Y6aV2 zY`h%)CsUh~?b}7@l<4TE9-EKcgz~Qx$9n+i4~MDmd+9C0htaHnGf#$iMQ~pQlnTa? zst~5so9SaheBcz4P^EV7lARE5Qa1?~&j$nORIatPRkpu)yHxQq`87_2D;H zk3XBDw~3i|l;*v@j2c44&@qNIKj8G*$%29Ge}^IFi`sT2zC9sLbF^q6pa_b(!rcK5 zDyfhO9C*A1y%7f(NnXliaY!SXqdp<+`^C`s>FsL^HIJol5op9Lu9gC#<7~?<8sFg_ z9jUDQFF?&AcIRSl8j|CIxbCSXz0B<+PD%1k`Qr|3b##OYTl`l~9O_L9Ut%Le!Spo; zQNSq^=Zb>XWKu@E#9QK`P-p^>VKxAmON7UP5iv3Fq!>b&!N+e|a2loD&8>)mMvKUs zDzo>>w*2Te>x?kZn7_$*1auKO?po5D($$D`@$cUO9bEPbX9GjrOAd*1R=(3`@wSu5 z2O!}Cds_U#HLg5D=i#z1XfxUjNT^Z!;z@3zp}|O+gK1^D8*p2|X{8kkf@pv(mo=7C zZsg|hS7iN_o&c(emGe$;?z&aO{chzV70-#0CMZo~&WOiZf?mzz82vty0IE2ccq=Pn z1qzIZV@(37#9M|csfFafw`tN-OLpTurryxCj3slL`uV9cU+;bu1+=v_n!ww4S)u&^ z;a!Slaf(Q9I*}>zm2a-ua3lbGWMyCAYvq9E+3xXR84}F{?Dhd!a)~pEO29Z9#gBDh zN_;p_b66Z{VQDb)^mi) zEzq|_%rqFi8{;M-$#GX{VAe%Z@FPwMGg%ZaMP#}9R%fes(@$v&#&dwb4Cc%fBgI%5Cy^0z#o-(3!;>6GyItKcIbzdt2_GJ!_`*>=Jgo0A z_8rki1KDjm?gum~(r@r&OWQ1#>dCSKr;o6<#YN1|l(7JW`UBFt%qRls#Pnex${8JR zf+kg^ERZ3<^7xQmx0VWNYt~tetA_jedzyy=B{`&)QKpM3vDw1G*srk&M#J|5F*Ud2ASf|dX7 z?ED1!e1QD>{}UBHC!wA-Pb9QGeD8;IJTg?9T`}F1bJh|DVl>}r!mks}lQ)oau zskk>7cI&De)h8Icr>=!eN6y39<5yvS?J~>UJq_=rfxI#w`-V7_5+}5@xp5p(jMm-nwPhz1ObzRRep#)v0S$PVCp-wJ z+!UP4_(-0avi-F`Qv=PXVR$v)*{pljG$Wq7s+ROe))g^JPY*WOylSIVsDO3uQtq(tNaRMn`M~ikdu>`rlzM%W3qydf{Wl^%&(zI zy%63e*gNEk+-Bmz>$FJjc7|#)Op*SieD!%agXEnw&C<1eX4^KYnKQX+4wM6jYuZP= z#PgNb^TR{x7oo{tJC(HL`Ee%i!Q25b$+6{tQ7p@NUeaMS1~WMSVpr_(1x26aTh z-k^fm$&}$ha}(*~^UR;;ZE{@_UH@oXH5?ql2sZhc`Ub@Me()wmaU2SL!3@?x=H%n+ z6S=Ct&9RfjK+z{5e7$8Z+TOvyywKEFpu#xfQhACu%PDb3k`@{V-vl?n(2uUNqbYGAD^!t zGD+BlvHGzY@$N-k*FZliI~g?}N{@Q}aEVrcoQru1AoM*po>#T8;|dRSv0kxDb_MKW zdZeZT%OtC@Q&`hTsIq$xGtG0YGw{MQAc1OoY)xThkwY(Aw=*7|B9pI_o}TvrXzl#M zb7oE?TUMeB=0dlY=uFW#^CjxGU^wK;t^kg>jP8Gh+|lJJ3&dw64|T#MusYZJS^<*I z5|1i&I_xxC`nM;K4vdVgM{j!_I;_DKig5A$2Inj&Yq0JF1rxFeMkZM`2Eo3!-g%Yf zRDi_c&@YIH)C~sH&)9mhmN7&?bYt;Hv^@n;)imV5bh{#OftlKikC>)k_LzQ%R?0?L z6ex%j51XoSm|Rb`T1olxSg_=T#!u4*Vv)}u2T*6{P+tQB#ADTAV?_xa8~`HL&sc@A zNFmFZWnRO{$1p5r?fs#__n7>9O#*@IQYAtN@oZ<}r)LQ#p`{4Ra1%bjZc~A7lzffy znSr}=0Ped(Ln?jEY7BV@ZqJ_!YeZ9b*RknhOyP=jyS9NCMp1`h+|9PvkT4D6zoXta zPdkAHnsK)lNOG$e1i#Xa;#Y=OsLq4bXdR)-+OT5#3HKLE5ME@Ed&z?uuOJYz!14N~ zvB00C0w9hg=1~fkJza?a^e3O>0kV)i%nh{YJ@$Bo`a%9{S#p*=S)dg9)s{d-1)$f+ z21p2qQ4|LHj@uwEIgL8&sr(=m<=4h(OI&e12tr=@o^t5~A=&uBqY@EEs;oP)r5=v= ze>i!DBt>fZ*Y+Q||xyTKN&(K%DPV?cFPxRih`}TnLHpu3cVz-@ zPr!Wtb)SQ~ss|cy4t$ZdIb{`-ml&c_m`V;Yl*y@VgA~s_y2P8)+~T#iEyLxMDW~}( zlJIr+SX$CnT@2C+p!^p2uzn%fH(0|pfTWx6d|8=8{tO+NtU0Qr3VMtotwj4)67P>$ z#xNUXu-xp8Q@kbCu_-)bXcR8u{-NYO4+mRtl8fO#keuaQtaCv~C-#t1$9+#ZXADLg zDKFJ&K>{h0l_~2=;!nO_RB*ND(r_f0gRNS|UDTr7?_b9Qh!1{BGATl4|IG?mw#w0^ zx`ZVzd)$y|!v9FCkPuPKo3bc0p|5QNsv<^pJNq(l0- z?7Im2Yf#Buum{t9(eU@KOLhB2{lxAq3;SW;b%FoWyc0a!^3p5=#Qf-syrL^Kg|4;=|4{RI}?Ue@?e^526*5tJd5W>}1(+`Gw02hU^_g_4Q%}2t?_(?hlTdn5WeZaIFpk}0^&|P6&swo~ob_PSx0Wy~HGXxj+ z73WwGQKzZnvI09Yd)^HhHr=#n7yDYJf;p*;xo>anXT zi8&mTw?fQ`rBnBhOHZzF5tn6&>Nx7pf|~}dhG)c;xUH@STTdyh1AG;;rZPRT2HB>C0(>jBm>DKQAr0mD9*SPM3M{A<3AT<7miq}>_2z2oLdG+dpQGom?W>gSjX)p zfA*^Kuwrq+C&JxJqw>MS*Xr{rqD9)KUg?Y)Ec0}dsB|Ow?OhGr#pk_JzhQGOYev&n z`0hlG`F`(}2Sk3_7Nj6GQ9ZuZ+`K*Fw9rudS&6eV@2l0%31mSDh%oFBP&Eil(-Bh9sAG&nH0}zbF z8y6H&;5b}FN%x0|MmJ-hibNL+{PEXEVpddTPY%Fz3h`~Cug4d>R(+=smFe{ikN^Z)HDlo_3u`v85+y;U0%C3NF3qLUyVEb1Ff1bi zHu75@W@Ej0=hr({u@OJ8$_is2$o_8_w5hS0=~c1xRowxMKM>%D1vXGMnE(%ijaurl z7RV{qGCFMMjRYcu^HsZ-KENe@qGCY98|({qkM9L5SDvdD28ZWoyYJ3ltLfzQ6!I&p zm>%T#NcTL%;)hCXs>mx80U%7g70s^GHmgoDtwX~ckHH!|cQMS;h-&Cvaf=!BI)stg zJ`^k`&ip;T!EWi8X74pjB3|XA5JHQOM7pA%GXZgg$oME_y>j&RHlFz!pCcY(`Q;#) zf}Ia?1nxO!>eoocyZ;CjS0NFmTNeYeX58#L&MOZ72ig0*t7U*`I3VDo8K`SuvQzsh zyvI$0ezQO#4E-b=nfb~cysgAodO;(jGW?zB;p^>$0XO!GWQ0=@+SSze&9s%a@w`4I zXmpM2Fm|U&74pOQi22@ptAS_1dl$2=d(JMAJOfKj?#98z#*n(xE#ps=SK;W=4_u%j zg)yl9Dj%6}K6E3jFF>grcWdQOyTE={CJka+e%{*cHz(WQ^LgneMq|klmqkL8`B5O1 z@&rnWrnX&!?4@Sg`uRt`t=L8{F12f@3!UUzB4j%HXKpUWxxSUW!4`6zQ^Rlg%*!L4 zNJFv;l!3@V=~s1zhY6AL;XVqj@>8z%vYY}EH4PsK>o9zl7=X3aCnTB=tX4;z3)Ic7 zp5N2Ry8od|qCT`L3(KSNae zG19*#V#j+={+_>lt}5W^m-;cjAc%EH%;kP^+?iu|mKQ?d5rxsF)t7E50yo5s(codd zg%Jf|X~-~g)mUoo>Jr9WfOaChj&G^^_Km@rmyWeoQoFeN-oHHBmRP0`n-fET;rgS_ z*>R}zs9gj;%O}1$er>emV5M^(;pH3R@iOm2c3@D?HUsuYuoR29;xNd%rZkm%DD>IA z@ADF-SMePECa%nC4}7AUY-;6Dku<^HYIL%0T2VPp`__L=ssl&Yf0@5|b-;oek9}qQ)w><99PC&htuM0s-hj#5naKPE^we zIEKX?mOOux7OK8pUmwLG^AC4z4tKVStg3-##ghqpSX^ra8XA|khQm`T=TN0&cT0%i`l6@Oj_Ht8Iua^>I3ux&5;L$9{$O&#!E56dL&I3oVPb#aJ%>GkX{_E^;(0uYee7)Zyr*5>R0dqYe3|71@(Gx zt{&jlzZycLC|m^ln@6ri-vCb8de5PT*~JhMr7+J4Gb?XhMfi8qUZs>*;j5rFK0->S zzYml>=oTF$orO9i7XgO3gH2f^ z%l&pf7J?oo=@!TC`37|2IS7J(p1)=mSta1_B(hVwj1?xD2PivkKcVXtZ?$eWKWomr z8FHUjng%9XH5I&zZO`jVC3fV{kPo3sU>u|s?*bA;JXw5Mjz&^ZUGsLKXDG37{sI5#R$;u zE9UYRb>!LvY<`RBNe$J^(!e-@v}CP-z>ax)3oL@ zHU&Xl77x-ctT9LU)m)~j+$I&1L#Ix`+yi)H4K&+O9DN%Y4^kxkW(_Kgoen8Nq%J9* zJuJuv^~vT}r|bYQv!&{mYB)?b<23;1R7TE%s$Z}h`fY$=px%tzY?6bcl4UtbtIJeg zXl-v~YIw>!1{}dbnO#^6vvr(BvC8-gQ^-Zc6mIjAn0@!o9K<5oQF# z2VabjU%i*UWU@Q9^IzA$1f?J?GDkTv@-pBu16L^~aG;{{EBOu2bIZ;%1Ze}7d(lIZ zQgax{e1`q|sGMz_3tzQoMqU9C^eXy3-dW`hCQ95pwyM!1!__QsL9CfFc@Tw?dvRe$G}g5^^vh4g&=mB}EM z8-PR82)S3>#v798cgc=+$X3YUP_T&-&PWS)e@=Uqo+%u5N|a5Dq z>JQ;4=oe1xGYtd#>-@L(xqtLsZMvHKRP^;yAKA0n3757vy`0ywWh{xhK@|Q3`{|u0 z_F6a$pT85>jJ}bGJe3GwyB*^jo((Vfm4U^;xAH}iAei4NkB_;&TdgMmIq^O|Z2cl+ z&kpUH^QVC(labj>CO@9b#<<5J#y4t~ip{RcX};p1J1SeP$GaKqkgTyn6q=d}U6`!u zuKq9@it)kYbV4Zkbqwu>7B?6eImC`NvUwsQv74pj>6Z8K+CU9(5Yf82x&pH^^2T_m zKGBPp%^#RS7}oIAuJht$*p_yB5Wg7+j4C{5!x>huqoy4|tO+cPJ#eIEgi~UP9EcUr z`IhjzNTnB|`~s7YA^WizZCBs&{Le7k-ih_Tw@^s##n)`s1LL zd|iz#54Sm@=|eDpF0ym3FGf0XRm^4-1QZ2(nc%NxeSI7yY2g`t5-x+KM;BoT95I=! zh7pcuU#>b{iEl^B9Ckz}t96F$Zs8q~eBJ#nfCyhdnbMdEqKfJuekLVD;y~OlcIBLc z<4z^mcZ|;4%iyjhe(@4g*7_%vpDQ*ZRuQ(Z_LRQ!O9%!)ViP_Vt!MY=gwb^BXU0iVX2D`c za&^`FZdV2n8NrRT&e$k@X4YeEr0vKLhC(q|&fe4|m-mj(>(b;>M(%auLcomqgeK9I zD@QuSV^3jQ3%FRmZY7c`IuqtPo> zzU(#8U_ShI();XqDX zMRJLD;m0eF-1!`y@F9D$V3$0r*~pbHbN`S08KTKP=qR9{p~?o0Rf7SMH**ZF^py2c zmgG_8; z{#p*cZqntCDebEbswHl14eB|G)N7{fiTxKJ23!Y^F%Ac=+Hc*_8G0<{dnxj#uo1#o-)GRpo zs0Vah#I30@<*_6eCi8gr@oFD%((T_w{&3Uq6&JXu8GY{*H3ZKvvI`eV>6p10qJQL_ zN1ou+9{Q5Prav`$yhybhur3(~@jBrp@h^)wC(Ell42{9Xi#|ct@AkTc>10a_TeEQi zq!meiPS2)$QT{Ug{>J3g&jYK-oW*M;O6|W=uqhz}kw(w;Go&)iMo}1Cwif#8zg?qT zdd2OnWVwvqOp3Z#nJs#OT}&Is0+kijHsvw7P%kQEL`-VkQsiXC*}@fLuM1uq+J$g6@O>SL3K0$z>VZNz2T+}b^~whITX*G2yqU>$QNNx_c1`x zG-ikGSpf8^BN?!i`-KBpq@fx z*-RD2xAdi~SlQ1DTSEo%;6}sspX4^_65@|m6sz#Z_}4UzvQg{k^0ir35cwGaXy(3m z5=UDvI0Sw7zeo1NPO~TiJ@p;hU!f<@^7`18M}IaKtzFxj8ah|9MO`_$9Kf28A+KfL zQ#8<>QxLRxA8OZ>Az!-s5W%51eb7v>Ahj->;*Bbbyf?e>lpXGprOeCvRQHd@5DRni zozF%9y@j905vhe%W*p1IH8f=d$Qij($@BNXG8mDjbP;Q%6{T0ygw1nUqflIYIOh+X zu${BD6$)YxndE^qWLV7}eDU=$Ze!AQL@kSNK1JLf>hj$wB(!Yn5b{W;byr%$zSn{r zRmaCiM3Bj?7EyDYtZYb|Ii3_rtRop5M#U(X#z~$%1K8(@wGI5BmuSoZECeqTsMmR} zV-6tB&S^{Hc0QvHknk?+tiT0ZcafirQg@U$Or26gTLfUuyv^ZW{_0I6uTsLHdSN>b*I zHH!@vD1gy2Q6Uha#d5|E*(6U5dMFlGg=e^n(du7E z6UfW)C2NR$Z!l=|Bqu8YV{GEkE2;s163d)fL!<_Wv9pcnaZ;rK*q>}}`h-;ja*s)+ z)Y61fEVRCmxsZH9@;&$Gv%O%9Eo9b>dREKI@hpk97I4XT@TLUFiQ_Ol8C3XeD%stt zRxOR^_Ik4H)UM{;Fcgp+^PcYsC$36+$UR-fcL7elS^;>DY2x9ln{3-x_i^fi65-^) zPjSpFds$R^oeH4~ zpJfQe{l0Tv?s0g<*u(7L+USnkEm=eP%s){E}W?M$}}sqo3qS`1*XrR zGK20-NX|lPG?ep+Mbz{lAA!B1%oecqr{4#AtGXf`KMD{NjZk&S-Qa*J;F}%dM5%Wh z-r{HcELnn^-exsGgvE?;)aFXLjA3w1Y*zBgxB`d^UXO9T*PvMiD@$l|acW9#!Aq*& zm-Lw0!046%@9S7k`$fSuo>&;0CzV#AIF1y;5p7~bt*{F^MInRK%_2TzO~}j_b&KJ} z)IQP^5Wa?2y1!A=hhaV9Cb2cD<^~>BnwNM?9qdTLvQ9}4=5)sU?pyewKmg@(zfG&b zxd!x)ZoP8E$rv1cz64oF=rA?CjCN~eZ+nG}^wh^o{xoBJ^&bRgTaV9g1Ga*_4-O4*v(>+mXFH#9K zm2GD?!D0~klZDexH0<3d>cm*47ehf*o1X_#^|{P4kJZlF*03w5{oUnAO4?I$zbLz; zE8?QMEv8p&&k|qfjwbU{rAS9B+&4lvFyWgXumnN%YR$fvjEt@@IXUdsg^mCF16{s<88C;!k$Esw35foBTRk`$^av6*mnOl0Kb}FIV=I=h6`- zI=nQ$*D9@*_?u}92H1Wo1o?>P#?_hwM12=c}DIo`YxJN9K%c!!uSM*15W z5#;rmL>?_?Jah&fibdjFp%V+rZV6I5nddAsBAXYIS~wRI=H=z4Ol;e9p*1tNCME5V zkUNeX-Oz*-m&2FBfw%@Rr+EE=uhlkMfTTwfSWBsH<6FXE4hJP^CY3`WrNIlJMY@qADyvcgWG+S3YZ$wY4bu1VaP;X-# zR{G1Jt5=u(CFBYK61^Q@oGXm&706gN0?Wal_4&chFNnaCP_m!~8qWH7M~6(C076v* zF5!3dabknIpFEyY1*{x_ccFJ{3(m7e{S}qJ==s>fE?Dn-WWW1t(U7Dy-cC27-|X|q zseyoup>&cu%j$+?sl<8iJt@vvT(bZoySufaokFEh)18OC1lv+}AP*M0!- zrb=J<6Mq>E^R2*N@^*__Wl1XfW}f@+fs8R!<;pZ2cWwlFMN@6w7Ir5~1Adnw4qivj ze^Y}V(}{Mgs`mm7C!ecIp%8B|I(Eh0!8;ILxbpaj>y=TMOC37p4#@psk--UPhXL{e zL5S8#|6yn0otEXV*nrA+dUM2ni~F09BLyPdt@oWo_>Z&R;ihaY`|D%5U2pP_6hThV z0S79usU+*cnzY*V8tcpyG=NL5VjN9Lx%zZ9))1`ANU4(+p*{V~ScA;qLhd!#q*BX( zm?7ez5s|aLit+~F65*}sXXCQuJogqSLMz!)P%e=}q_-RpewFgJ1s?mOg$WjVLEqqz z0Wt}C+seAy1yf=hR`jC6GEkuT>q0bVSkd4tlVRIzSAvp&q|eOi1^~)IryAG`yt!wc zwuyXTd9KW$c*UR+1$j^(-lBJnK-br@uDs7IwM90|s32K(=`g(Cw%C4Ck3ZT>6$LQO z!bG`P@Wpt)PfF*kTN{=~spEMWmSsljtMEnGG&}3rD!&BSV<#AkCG}`Rmbx0Whk8V2 zXn}(rQEKgsrWY4t1q{HuMeK>7=3>Be2yg>i>t0>@cw-Job=}M0iiojVi*BB<4cZcv zLv98H!J`@LyprQit9^bc>1#=T%jht9aJWTfIhV!XzdV%H2W1ZRCvSJ#6fIB-5=%79p0h<;gD63^pRmTl1NsdJW_}0K`I0N*@L7JU z_u=G1xC-dvh|M-E@*?oObcMnU6LwecD?5~wR4)haKWb-x7T zr?#G+eY({#aOZ^`fd?`MrQ(+Xs?NfKdds%^w0+^vv}M23fP#?GGcv*fB?w#d&tatH z*9uQ)AdS010T|3%i~eCvgF^YD3-`9OiKGKA#R}Z735$eFcssXpeD2jgK{cA%iq)1e zBU5~>yNRHhERSmAWY+P)^{A7k-&H8n&;y7OCBrnrwxttl!a~_iPJ54D;7mY1%N2_1 zaMq5Ri`$2gG0W{F^$MZ=h_trY|42O0ilvTy#1cNs0n8tLb+mgQ?$Ye6~2T=M>;;urN4? zR~3Lr1Y{TG26mM3G&jJY%BRXt{swO?KLSl?uY6Vt4O5zuGM1>Vbp1PRQTST5=jLMj z0HfjK^y}TPIZ<2x4f6?4$u0r0>Xe>%id?t(qd4?!PA?-dy>4gCd4In=gru+=O8>A> zXIKYK&N{5{?cvWdSVrb}_iSP2ggbdJGsYU$h9$2Toh?OUr%lx{+tP!UCNd|BU_hzZ zbIY`W1hJA&HBt98OwjSkG|P2Isg(M+C;jLVb5U%?@;2in0mWO2Rt^A=JmOE-)R3e`uvdnf{Xnijj@we`uiC*jfLh zVTqlUgZ+OOOSQB{0C(ewGW}Oo>Hn!%VrBdPzU8kCiH(KnKN*&oSeXA0Syjto8E_sn zAuIF0tDydV_^)oD{~%biQJS#b7eMNKr#3|tKip+t^A#{Adi5to$Pfmuas-zXqUl@3 z-hh0%Xz74VFdqW0&{kT|S!yKj*>15dPX}$iH>2dswSrLc&-mVMnKo8rS+WP->H(pU zKd^Wv-j-3a$-`LiRw)}nzJwxEzda7Z%HYlC(snU^{ z*V)QZ__M1_Nb0K?K>q=}uoUI{W4j^o?|y-*hf^L<7IQ}$Qp4PG-SYTmW+>>ZBadEb z`?;OnMf`bFS9a!FhJwDO5As6J@U1>~;}zEE?^wXJ zB`GRy9saTJmY%>Qeqjf->k9hsnValKWmcGWS3Uo=3lxs9MC!Q2qjBJ>FYW;v?<4z8 z3m?QLUx65PPwJn<{ZdlG!iS-Oe{a0Vz<8oqC=|}|rNX%H(qOA>VHm=dX;2vAg^Q$3 ztiigPrF+i}9g1*o*~JxkD(IB2OZjbL{mQqo@$B zbYM`$T=640)k5#=QJd9R$U7TTS;`*K<3bia4;5mt{aWc5r7Yc$Q^>NuB2)H3U>m>6v1D>sQ66(CIBO3W%*Z)?tcO)K_Moe z0X1mn6>SR=<;1^^Hr&-v8i?r5z>KV5?Xn{IJl>oLJU$E1!%NGN7KNA|v$3$?G-2}R zz=wd$#7EKKL3%92@?u*Y&6Gbzh9S+`YHcU+S~rPGg|oVu{%~v2v4)Fj%5@{Fx}BVQ z+rr~Y3cy;9AED?{_K*U05_=~2i6BG%oqoHhwo*M$6!awTqE_M2C~Y0(UGbykD22&J z54?e0iAw1VHqBScRPD)U0icbhh=gs;R;X-dW$p#w-9}C0wY;U{ z^kxgUf1dQF(nu+{iB?Q2=q}ZlISa0gFhrry`D$Uim3jR#8sS$zu_`8D#`iZR0OzqjO_eg?i28-hvE+>&w z)D9FyVJl(&GwSP zK1ubtrl1Vx(vkmJBZ`1AdpmrWVBVN^@}Fq^yIYQsoq_S6A^D%sQtq?O5J2j>N81o8 zJlu81fYT+OK!zZBo&6bJP_BlvOsNP5WmNY1KAoXKZm|Gr{&Y3j$sS`;)6Hv3uCaBs z^|O8Hd@QT|UcOD@%Vz~rO-)2CE2bLnCaXfnXN`BOY$UIu*;aYwwRp90%3WwIqZ#1I zyK)`>_+6OfWw9QEdRuy7_UyzI+4FwanzL$g}-}5LN z)XA1#a&GB%?v{k(dKCeSu1UX?Pm|(rbpd#irXhVFAZ5?f<{g=soQ(Hl-H-S85cI1< z%}CTWNS%a&n&Ug0S?P^pN?`4C`MmHr^!n!{4sPE37h~bAPS(uA|oag zilI5d$MQ5jRhtA?N0Ik)rNsg_UjaWxH?R_?kJG8f%uNL{P9cso#B_EbUdAvh*X!{2 z2I@hGK+XQmB>4-mrXYrO&?{@^*fjaZIr2R3fjx#bva2?lp+cH2k z`jb7RdKSQaORi}+X+}Do+lPIP)sKiHiSSX&lOU1T_a+2v!A%p;9W#ZjOJ}bn(8m2q&1-U6#wN1FrlOmA6D#YdDzo1XR-hn~=@89zO7u+HLC+;Kvj(bU2r_R4dBtWe2eqqTY~y|y)or~ z;?5v_$uKAGZ9B{^`BGm3C66KC@CT6{H>0{s=~&fDrnkN7{u=0PMF0G3>4C<4r}1%@ zwG@K_M!NL882dAPXUU&O;O^;@qkW)w%dO8auUM|p12@EN*%d{aAb1^K=Doa{z8-2D zkp1>GB^WT@=U8UhQew+;^Lf3y_%NYO@IG_Xr9@N{bz0WGj`yx}6s+@p9uTxF)kHC2 zvb+A4!;2y{Hu062Azz(+U}9=2(TnXc*4s(gs~#>RS;HW03ijKaz%i@%FQ$VK=o2TL>b|@xPM$UFfY|?3Gn&pg^0k&{lX&63t5>nfxpv)NbAGH zlfrvxN^%e4Na7IcjK|D(nVwEZQnea(5@(&XBmO(`#2<``-BUCjG$_N`t6v4;>3pc2YcC3EPNizDL%AYi1_6oio z2#yEkrsk9&hWt_cG{KWDbE6Syr#Fd7Ez>FbyQnt_Z67B`;coW3 z`s-nDWa#ma1A%ghL2gCB4PiIFM9GvU?ZS6A??%>9k2X1N*0R{fpiMjj7!G)MeXuAOF0-$wo)%hxmsYTNYWZ5Rm z4YHLVLg_|8W+wYdMhkH}*weqP_jkE%`CQG54xTxj_;xpenA>XOJDobs;zJl8{>Wa| z))v@8NS>?ELU;KEtln>cot)42@vh*Rew%XBh7#xbtFN2Axi#fo54zVyMErIBJH>%R%`RuNk$mykqO|KY;eh`b8?afTAhRrD-{C_Q>sql3@vyp z(huoKXnFw^1xQpIMju)nZpewQ5CyeKU#s+Ye7q=X2{VK=0#GDC8S@_*A4PM5jb&+E z`p=9PaHWj|slNd6iKzQ4Ez?h-hM*t=x>Sr*hy>0e|8a3|{Ev)32J*o}r!+;Dq=x40 zjOJTms40rWDlRY@3+!%2u0bk6HVail9%!8Qs3#jNWj)}m#9n6qp~+rJAR4J>POd&f zx4fMb_6-=`o%>lInA)8dK~`+e6wP{317;?3CqnLT2&XE>dGcm+w0gto9prnHn`0g} zmy^U12x--78tSns&ygB(lr0T|xJ&@!-cXl``Cws^%sJwX?E;3#cA))aq!us`cob-0 zSPlKnVmPfM6;r9@$P+lTXyu>t=5r93CP{ao3oCms(S?3qs0(|-Mr&+4E2%*}opu1A zG&c#FjG8H({BP>P?;VK#L48Mn9npVNU;3ANbbjxFEIY;jqP{lIUHreOPq~Hw{vRpN z!uGFQ+J8FKD9PCEGaz-ntGOeJKg13@yj13k6Zs7qY?SAgujnH#B0CV1$0Y-L@VO1v z!UG2~(%9{?`7u8|cOcU$qmc$@B7FsvTto$8zv(QQu&b!&l5#iHfS?^q+2|j(lnoJS z@lHA(Wh;@vd0xu8KW7y%aGW<}o$_6T?cyVML<1Sq)NE*41$n2LzyUFze3R85qg zIr-IlDAEN~pT7#shErv%8z(D}*=J*G*#!ssmL)7KJjowIyTu2~l=H7hp3#bUp{=*| zGSJ7f_*8yMn7hBAYe&Cz#)&PHn8u{PMyH6}STh>rPs1aQ4NfAQS82fCk&F%2@uWKGW-tz_hx z4rU#XbEZ$(8+5isTp4K^+P(v(+vSKKhTM6?BE61KqMceZ#xmKS*Kv6rYYYJ5OjCH- z`O}*RoclxA4lH9d)1IB@a^qQW_}qN48$RLFm|jcQXl>ks8%o%=h*i~=myQ!%vwJgs za~sJY;0|<<#Q)5`e}60>${`tiiFakzENxDRu-Pb;ZjRTNt#VaR)$E6CU5(KJw6UQb&p+4 z-;xR|%Sqrx3Bhzzb=PI~_2K{ri=3_E%2Dz9!h8f6M(m`0F2M+$O}z_hwuK%mdU( zk??fA!7gVX?r{93!1llSca<)o`mlrBNg(d)$t`nTd!`rsH{I^VdOXsH+2`F+CT~WT zqjbK@0oD9c_gZo%2M#xcLTCC-id9~BXrCYa&5$L>debk{9=_aMX!Gl})u!fKXRS7y ztyg+FwTqrb$u3M1? zET-0OqLb2YtTXoO(WclqpQ+!aoqbDUlzn+p;n6MlTsb zk$JQcm<7Jg`kfGD0QkSN3Xux@QdlVD2d{ZVDDgL={!!eEXr)F zX)cm+ldK;{^|C?)DDT#c5okG#1!y@&`gds@`^=sicUU+1X#cCSuKfPO6&iHKP=<#IaXg6UFS2IaY-g4yVm`#t>kYkV4m1U1r35S?;JEFLj zAZNURAm;~1x79Ju355^#NxBO{%GM-&w3{p^BIm?LLT`j-NF)3)?F+%<2{q}O`1FQT zkA}*FDs~CoL$K!iN^&u+=TN#k=jQ{|X7Ey5!Q>s{&XZ`^#{GuV$odWkdei%zvOcEe z^TT@$Av}4Daj0W0>^x%HpXv_X5o6g{Fonpzj&9sPqtfA?k2$(UEmkjvqPukKbe zvjv^49`~5&{!`~sw|tpHIW`#%YD)`K=RAPJ*Zi&CBf1NNeN#ngpObPNMLeV-MMLE? z^O!UKhIqb1&bV8jrH4lcJ&c!QU&uMovT^3wHd`i;-1GZ7VI<@%LlYO4FPmxg*r)FX zoT!UVvWeknr(xCZ?`GReAp2^AcO$2}&R(u>^4zKnzRvvelN7&&4#U4*>!O-4avWh6 zNf|uTnZ_*_rUu14VPt&U{zm?qS&#B%W*kbP z3{VcZDzSl@hb$*y2lWS@3RDQjT}zTg6v&!Ezob_kI6?VtUa3AQlNI&d41jKS z!5xGjYA3gYFeMUJAYty;)rCcd{$;zX6_2Yqg6G@hUbJ`EWVE7>N#`Fjt$WjGllhU_ zEH)}nJbdiQyOvoka2@o!$gH&~bhQ7Ow>Ni!K=ui8BZSjCn>gIi?p`=SAIC_fJmr zt+0m$_mxkKTxTfM+4rLvQ{5?V(tcV+>6cwaQ1pG8d5|AgWOQJfuukPNxP4WJbZej7eIrWrn(gpj&` zNcl0eT`Av1tD$zfJea0P-Sx4CTtP3Z2p+#OKv+_2e|u`Yp*o?-iuCO{&Rg?(z8bc! zaDjDdq7C~hQ$!GJWkjDE+%6cC-%hmCmRCz%;Fu%1m4ahDh(65!kMF3 zD*bnyX}my@|Ku3>|MGMGlOO=d!}b3rRr_UN=(He5EeZ@!{r^zDZpHV+gj`iZ2sx#%mXkiy=Xt=GThz8PQhr^U8KvMq8q) zVnj-7&$(BRyHAvr^aSG-ad=+w^q6gH72+Objc8TT{laaDgHYXgWrxI3C|a`f#18pc zqBr8C*K?kVxEigpau-pJaJwR3CJ(es(ETzdMO)%eUt!Kg7D2<(O$W*Z3G*T;Vj=f; zyhMwpWAu6|5rRQ2t0(z+^;`k#Dxx3dPR1IUowaE%@NmYI^^BO%xPySuB+wJnit_yv z{J79}SVvfhWAK8f=(@lRjT2r4JWNTlUAZ3=0GQqy6Le7+av&rqhQb@ ztblB`^0dqcoqnA24VOYBiVvC%Efy!HtVTk$6gJk!=e#Z0NI0P)bb+P{1O(Kq+<;#z zoYceslimUVoan_%s)>j<&atfF1D&+AGNeX9?*<*%%Lf_lz9*odjbm{~<5DCRheiW{ z*4zwAyc7`OxZ-ycX3t*)`Pbll-XV$3DuX7 zyC;z@PoA;4Rpidyd4O&?Z#Gl?zcC*hm45g(vaR(o*uH!?=K0R-&f@nE0rf*{+;(y0 z$BpZ#4voXv>cRHlu|}M(J0%X+O3WK=+M)=HxN=g6;IK=ueaMhHMX)`3-LVFKoqMB1 z1a8eVLu!{bfzsv#z>P&V)^^S=vPn8Jzf6U?sf3DSYySY=8ck(KQk3~~U(foPRmooD z;8+s%IJDJ(ouM+y-6N%1SH6!zn60g%ws&*4K@FWcx-ydRmgF$%+9#ysa>~D3HFA2* zLy!rg^F9>X@QI9U@+7!t_8@va6j?b!uvglYM$EMChfP1)*bx?}tULf?S^QKFL|P8EXa?hd?3!I?>;vEMK-JD(;0 zt_zIq;84EM#Ok1-XZHo_sJLj85$g6x>4 zRShdI-ri@~zPbPv4$!nrAE#9@3$97~=vNBeS&zpunbG2sZX!MusO}fj5pc|FTiNToPYbp#pM9Ngvz;By6w~q^sI3!% z4K7S@x5YTw*nGX%nR~;w`!3Lca+tq{KqK|a>2oKRI5SujGah;a%#w_Z@f*m}8x20c zQ)J~kHJ`57EWMRyO7w1sZ`n(QFe~QJPb(FkTKcPQPhR_E-XFlcb4q#L8!@Z+c&o# z8?+oe3hTOrnROC3&nA7USv~zYdilM6A5X(PopRv%6|dgzKG^$(=&nqxNG|5Uzu=!7 zPV}WqNge|ET3sp_>clsH{)!bBWiHg6JqZdeJ`^{BT1^hzUr(3i!e;l^wj8#m!dokc z>hs{U>+}vx5cBPyaise>5Li64Xb1dJk-vQzXX9ZZf4hjdze1p@b150c75CeZnNk{P zXJ)p#kx9+8eM^&L-zr|j`o?NLKcww@E$Q3Q*?p==ugH&}Z4^Tj4*om=>Iu`bCz;NN z=J5+8@v1MdU&L4sjm%wp{pJeoVK@jPIY=1W4^IiTGfF0x3u-g;b8$KBK4ZJ(_db_ zk(G&aR~WX&s_hcIEkRNZrC_e!ij z;S?uYRG&3UrMC(ax%oL6r13lf)ZXrUadDX_%u&d{-B6m?GaM!B<&g^SymeL3n@a0c zeNl1ur*}*B=oh_x3L@h6z#bi}{QGnyYvgUQ&dM_^oJ=SrA zstCt^3OQf(tND(kh0D|0!WsuYYureWz7~RMDQFgR(EM;p{-q5{m06o++0q!YP^#fx zGT-YH3Wp^6EBDn%nXmP&4V2lsJTpu=(q^1F^N6>UEI`jdpDr0^{cgLbJh@UibGYf6 zjHw7V?ey?vjuE@*T|71uew}dSwZo8b^21BJdsNTYYqd{Vo*TVB^ ztM!ewr89H?)<|*o@WP@fepl9FG6JJtdQUGU_gWxGZpT;)J#~*aMIQ1S%T^RQ_ zeQ76-cre4VbQRdTXg21TZ6Lso2TrlmCOdUihjs0?eRgMBC^4JA`PHvf9n()0TYRc9 zh5i!Kz(6vMk~CE{wh(v+0^XF^$u7GuP1G#;naQ@_L@ec~a#WS9pz{UzzBIa4Nn&h> zPiJk%$dBe2-PBd339!J`_opu&6zSJ$+ykEx6?T3{>a078*r4T;(MQ;ARx8#gq=4Fv$e=7${7xk z_OiahYnfF$m=EjVKez!k^3f80P)nV~P)km9aM9|6bhW28-wS7UoV8(EN>|%y9{8BM z07_Mls3!{tCh^8jUrH>;s=4*rrg=JSIb>{qd-ZaG)5*bU6l>`GWxazyy{|yMhPrdvR`C&KVi8`SO0GIE#Z||lCHL8)M=VknXAPNM5O#Y z$GEeV+?r->t7L=f;rulHi2189)ATJznuQuO!*6qkhOr6m3%^FT> z$d4#xl<}Vb-NgZM{_9NO8y6=F_jh0yAfvN|r50F^jfN#mmKq;D_VmVdG|p zfc~Rjh!$Wypt6kz82Cpg6VT4t%+1;rYzFlByCsO7haJ&M|+YWAV*!)5mqlsNE+vX{)r$&L) zke$LVi+_YvGy3(o%(^ijaqAQ1B68)Sh)21^mi2avNcxA&v_9E@{-L9LD%mY4a-|kE zBZOGGTbj%g=+bMrmOAk4C~-5))KA$fZ1YQyXaAM0{tNn)18#8(BB^jsnI5!gNiCKB zl{H!^wmTOWhNi(A1}F0~))&>C5%qLGHLl3$sh3DeGt%~09+k+Ksz=CKe5+2|DNkS- z8y)f4W^~6ZDoSryF%z+6HmqyFEKG?5)R3}+yrIr3+RUu-)_fync7hBRVb){RN5)ve zVgXH*1sQvZync^lQ*8Wh{PCo{WA1d@JZ5|YQK%$+CMD6nQRG*qD&sGd7s$1`7q#_c zWkLbJv7}^`-(j#FYrf!$%i&%erE~3Gg+>bKfMS?26Cw^{ndK)MQSk7-oZcm|!XVDa z@-?hovNI^E@9|U>Qo!Gnj;UeJf@=}r?`v~5pjD>c=F0Xq-%Ds1EUb3*%HXu2*>l-t zq^^kONIZvzBTMw#UI9qux7Z-*zrBr9` zE?>TUL{>PXR! z_NY+^e9%_QvZF0o`_)Leoq|bvq8bm>aukMRf&t)-!U3pjMF$;h-Q!3BA}E70s1&8& z)VDXgDlq*^9(nRM23!x|1oYW3T`SdUP?c=q8ltwMsV1bj48yciS`C`usKnNHd_>#wev{(Js9A0!p5@Mj7o%38`_yS_!)-vT&hHR1z+PH*)whr&ntLszQ!w~F(p*d z8(*JL0id3>SYoPENj)qKrEahh~GW?dLL}eJEo+2a{r^9EB zHBll5kThq6(a|YHH!;6V)bFh0ElvI*bj$UPyO^~+dLT%2Kv*$QB@*{zF&isVJXgJJmvTf;XY zz{@~i`tcT#o$&m);LHyx_I4oIbmF(OpWWny>*~ zYN}%m#u5M`+TKO`L)w5T7UB_}lN5g~E@b2=c%Pe(7Ed}w9?A$P81H4g>?9)bMd7!^&ZB;tllI2)@waRwMAs8wvBYeQI=5jk8|k^rd>XX|@wrMC{OW{W+#K(-S^&4sh3n)t zMpQj29M5CQXU0un+C1dKbMj1FijTO$JDskG723~^5^lbx+$7>%gAnnO`9UZkgLg^BFFY>)v4MNJ?WM zYOJ%YqAtFt`Ih%9BuM&xoq6!uV;d~=#(}%(!9VDYc)o^syvAcwveNeeW{n10|GNON z)IDOSEgAjP{;TtSLgw?{ian*JL-QNbxErm)J&5LR3*W2T!@!%+Kp(E$072#Zwj5ji z;Q_n0qgPdssY<2lapjMXGZUJ{X8|&gc z_Mac{;msV$|IT9&0CGb9Nxb|I3tCSDY>CaG=x71<0vd7xL7ald*c_TRKHxt|Yz|$Z zAs3Jb$b~4>aB@Nz*PI}P5w7v4g{2cB_s0kMlam1&ihu+`AU+vckemQ7x2%jHCyykE zheu9^i${`^PllUcS`3H~;r$z+j#h5gKrSB8zi?dtSG%2lrm-?xo}%w0ecgY# zp|K5q>EAwkaen9p+Y^YQ>Ql@L)c9a6b&_-@AsK>(@*z$_g3#t=(o@PLlm`^-NJ7!4 zp8?yaV}3`sBHN3XL&D3;LoHvDeh(KUDSid7ukYqekf{w?c*L88M8Kbl>L%WqRzu(# zt#^Y@^-3CyMvWO@rj78D-PS&B4 zAfQV9h^iHulxcceXK#0I!r0KE)9UI&!`$%0qxIBhG+8)z*Ldt!LJ(E>+;Lx2b0kPU zT-HY|x!DW~H*dX6_BG3aQ?_0vL2g$A;c~5>$(XBga8RpfQrK!Z{7LJp!F*@sqgeRD z;Q9*7d)=ez-!HQ!eASNFHf;p*jQ~!}qf)Ah4~NeNPvf9YF1`DMQO=5us3w{tKUyX} z#^@%eu10d-i)omIpvO+^xqnCIUnN}(6?P^w`QYnJL){_Wf4hmliREG~2-)&W^BeTL z%Sz3v${NU8%ep1b(W#u)m;tM5PHA=xUpGJD2V$NLY2z^lCq04ffEjqo(#=l}8+};A zKiSC@zZ$jEzp1U+@g7^4LAFftWe5g#~1J!Z9%=9&TvkngY-)%4txa?7xzzxM7Mb48X7` z&Osg6C6h3@p^r-t!><{y?9j$%!(8gz)g*cKC@wvh7{mU|804c$PGSraLWCxJx4E5~ zad19NF7>afzY9Y0aHJv286yJ$IQY?4B zE%vjHq%6$hZWQw2=)7A1fQrA7*}oo6S+JM;1^gK_Z&r0umv7o^(?@%m=UYK;Uu5g; z!Vw1XAY~5{{XG03JI@&7R`Qlu>_dowiAX=B8DsW`kDZQ5GdifjlJA=?5b|40Brxn4 z%OqrW#oY@P{;^?&OF%pWHD8c+zS&gG-e$SRDaGp+=~GwOF^X6a^n*=lHO6E-#@m_S z-t+it!H2oRJJg@p1fV4KcW0S*pCV$k>-`=f!umBdBgJ}{`;uru8$dw?yoBK875*zg zz@O+h;~M{OBt-bR%Ky6x5yH**l0i;`^8XP@bFS0( z+l+}ugU3X#s2Y8@2S(0JeF|(6!a_t{ct%sRMSh*02hU6X%JtZYhqTW;jJAljOSATF z83bG}9gHK|+~Eaa*8eTB@bn+4_sZoDhqK-+g<;;*jS#nMsv+D2%mKQ$SPInFl+JA_ z;s=9|t#4qdZ#SlU3?9z3O^i!6_bX3rD^ehjtd(1K+3?xvO@nr?BwbzG`+E zu=`d7vXESPeX&)$Cm;SGQE(QDkf!0Uj<8Ha)$pnjH530f!V4YXATM diff --git a/manual/moderncv_userguide.tex b/manual/moderncv_userguide.tex index 46076ae..6b8b8de 100644 --- a/manual/moderncv_userguide.tex +++ b/manual/moderncv_userguide.tex @@ -628,6 +628,21 @@ This style allows the following options: \moderncvstyle[left, nosymbols]{casual} \end{lstlisting} +\paragraph{\code{contemporary}} +This style allows the following options which \emph{only} affect header and footer styles: + +\begin{tabular}{r@{\hspace{2ex}}p{0.75\textwidth}} + \textbf{\code{alignment}} & values: \code{left} (default), \code{right}. + Aligns the address block and the picture. \\ + \textbf{\code{data in head}} & values: \code{details} (default), \code{nodetails}. + Toggles between the header and footer as the location of personal data on the page. \\ + \textbf{\code{qr}} & values: \code{qr} (default), \code{noqr}. + Enables or disables the inclusion of a QR code of your personal website. +\end{tabular} +\note For the \code{contemporary} style it is recommended to use the \code{\\moderncvcolor\{cerulean\}} color scheme. The \code{contemporary} style is even more appealing with reduced margins. Use this in your preamble: +\begin{lstlisting} + \usepackage[hmargin=0.5in,vmargin=10pt]{geometry} +\end{lstlisting} \subsection{Adjusting colors} The colors of each style can be adjusted. From 9687f709b7ec450556ba083fed7a19380f7f4407 Mon Sep 17 00:00:00 2001 From: daniel Date: Fri, 10 May 2024 21:28:17 +0200 Subject: [PATCH 17/19] [cvlistitem] Space control between list symbol and text feature (#74) (#182) * space control between list symbol and text feature (#74) * space control feature realized with option 2 (option 1 reverted) --- CHANGELOG | 1 + moderncvbodyi.sty | 7 ++++--- moderncvbodyiii.sty | 7 ++++--- moderncvbodyiv.sty | 7 ++++--- moderncvbodyv.sty | 7 ++++--- moderncvbodyvi.sty | 7 ++++--- template.tex | 1 + 7 files changed, 22 insertions(+), 15 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 32c5ba4..b23350a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -24,6 +24,7 @@ version 2.?.? (29 Jun 2023) This requires the \moderncvcolor to be issued BEFORE \moderncvstyle. - all styles: make the head options 'details' and 'nodetails' available to the user. (previously they were hidden). Oldstyle does not respond too well to nodetails. - casual style: make the head options 'alternate', 'details' and 'nodetails' available to the user. (previously they were hidden). +- Setting \listitemsymbolspace allows custom spacing between list symbol and text item (for \cvlistitem and \cvlistdoubleitem). version 2.3.1 (21 Feb 2022) - Fix duplicate GitLab icon (#105). diff --git a/moderncvbodyi.sty b/moderncvbodyi.sty index 37ecee0..4f46194 100644 --- a/moderncvbodyi.sty +++ b/moderncvbodyi.sty @@ -49,6 +49,7 @@ \@initializelength{\listitemcolumnwidth} % used by \cvlistdoubleitem \@initializelength{\listdoubleitemcolumnwidth} +\@initializelength{\listitemsymbolspace} \settowidth{\listitemsymbolspace}{0pt} % default moderncv \photo (change the definition such that by default the photo and its box align with the section bars \RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}% @@ -98,14 +99,14 @@ \begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}} \renewcommand*{\cvlistitem}[2][.25em]{% - \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}} + \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}} \renewcommand*{\cvlistdoubleitem}[3][.25em]{% - \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}% + \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}% \hfill% fill of \separatorcolumnwidth \ifthenelse{\equal{#3}{}}% {}% - {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}} + {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}} \renewcommand*{\cventry}[7][.25em]{% \cvitem[#1]{#2}{% diff --git a/moderncvbodyiii.sty b/moderncvbodyiii.sty index 7b7c40b..453d821 100644 --- a/moderncvbodyiii.sty +++ b/moderncvbodyiii.sty @@ -88,6 +88,7 @@ \@initializelength{\listitemcolumnwidth} % used by \cvlistdoubleitem \@initializelength{\listdoubleitemcolumnwidth} +\@initializelength{\listitemsymbolspace} \settowidth{\listitemsymbolspace}{0pt} % commands \renewcommand*{\recomputecvbodylengths}{% @@ -156,15 +157,15 @@ \par\addvspace{#1}} \renewcommand*{\cvlistitem}[2][.25em]{% - \listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}% + \listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}% \par\addvspace{#1}} \renewcommand*{\cvlistdoubleitem}[3][.25em]{% - \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}% + \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}% \hfill% fill of \separatorcolumnwidth \ifstrempty{#3}% {}% - {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}} + {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}} \renewcommand*{\cventry}[7][.25em]{ \begin{tabular*}{\maincolumnwidth}{l@{\extracolsep{\fill}}r}% diff --git a/moderncvbodyiv.sty b/moderncvbodyiv.sty index a29d8c2..606d6d7 100644 --- a/moderncvbodyiv.sty +++ b/moderncvbodyiv.sty @@ -49,6 +49,7 @@ \@initializelength{\listitemcolumnwidth} % used by \cvlistdoubleitem \@initializelength{\listdoubleitemcolumnwidth} +\@initializelength{\listitemsymbolspace} \settowidth{\listitemsymbolspace}{0pt} % commands \renewcommand*{\recomputecvbodylengths}{% @@ -88,14 +89,14 @@ \par\addvspace{#1}} \renewcommand*{\cvlistitem}[2][.25em]{% - \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}} + \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}} \renewcommand*{\cvlistdoubleitem}[3][.25em]{% - \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}% + \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}% \hfill% fill of \separatorcolumnwidth \ifthenelse{\equal{#3}{}}% {}% - {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}} + {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}} \@initializebox{\cventryyearbox} \@initializelength{\cventrytitleboxwidth} diff --git a/moderncvbodyv.sty b/moderncvbodyv.sty index 52ce05d..336dc83 100644 --- a/moderncvbodyv.sty +++ b/moderncvbodyv.sty @@ -53,6 +53,7 @@ % used by \cvlistdoubleitem \@initializelength{\listdoubleitemcolumnwidth} %\@initializelength{\listdoubleitemmaincolumnwidth} +\@initializelength{\listitemsymbolspace} \settowidth{\listitemsymbolspace}{0pt} % commands \@initializecommand{\recomputecvbodylengths}{% @@ -118,14 +119,14 @@ \begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}}} \renewcommand*{\cvlistitem}[2][.5ex]{% - \@cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}} + \@cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}} \renewcommand*{\cvlistdoubleitem}[3][.5ex]{% - \@cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}% + \@cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}% \hfill% fill of \separatorcolumnwidth \ifthenelse{\equal{#3}{}}% {}% - {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}} + {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}} \@initializebox{\cventryyearbox} \@initializelength{\cventrytitleboxwidth} diff --git a/moderncvbodyvi.sty b/moderncvbodyvi.sty index 60f9997..b7f2525 100644 --- a/moderncvbodyvi.sty +++ b/moderncvbodyvi.sty @@ -53,6 +53,7 @@ \@initializelength{\listitemcolumnwidth} % used by \cvlistdoubleitem \@initializelength{\listdoubleitemcolumnwidth} +\@initializelength{\listitemsymbolspace} \settowidth{\listitemsymbolspace}{0pt} % default moderncv \photo (change the definition such that by default the photo and its box align with the section bars \RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}% @@ -105,14 +106,14 @@ \begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}} \renewcommand*{\cvlistitem}[2][.25em]{% - \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}} + \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}} \renewcommand*{\cvlistdoubleitem}[3][.25em]{% - \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}% + \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}% \hfill% fill of \separatorcolumnwidth \ifthenelse{\equal{#3}{}}% {}% - {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}} + {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}} \renewcommand*{\cventry}[7][.25em]{% \cvitem[#1]{\tl@milestone{#2}}{% diff --git a/template.tex b/template.tex index 48a7fce..7988dae 100644 --- a/template.tex +++ b/template.tex @@ -20,6 +20,7 @@ %\usepackage[scale=0.75]{geometry} %\setlength{\hintscolumnwidth}{3cm} % if you want to change the width of the column with the dates %\setlength{\makecvheadnamewidth}{10cm} % for the 'classic' style, if you want to force the width allocated to your name and avoid line breaks. be careful though, the length is normally calculated to avoid any overlap with your personal info; use this at your own typographical risks... +%\setlength{\listitemsymbolspace}{10pt} % set custom spacing between list symbol and text item (influences \cvlistitem and \cvlistdoubleitem) % the 'contemporary' style allows to append additional elements to the head background; uncomment and customize if needed %\def\@moderncvheadBackground{ From 1f82bb91d7ee92fb7ef274db3778626e6af5339f Mon Sep 17 00:00:00 2001 From: daniel Date: Thu, 16 May 2024 21:15:59 +0200 Subject: [PATCH 18/19] restore previous cvlistitem spacing, resolves #188 (#189) --- moderncvbodyi.sty | 2 +- moderncvbodyiii.sty | 2 +- moderncvbodyiv.sty | 2 +- moderncvbodyv.sty | 2 +- moderncvbodyvi.sty | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/moderncvbodyi.sty b/moderncvbodyi.sty index 4f46194..8736f6a 100644 --- a/moderncvbodyi.sty +++ b/moderncvbodyi.sty @@ -49,7 +49,7 @@ \@initializelength{\listitemcolumnwidth} % used by \cvlistdoubleitem \@initializelength{\listdoubleitemcolumnwidth} -\@initializelength{\listitemsymbolspace} \settowidth{\listitemsymbolspace}{0pt} +\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt} % default moderncv \photo (change the definition such that by default the photo and its box align with the section bars \RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}% diff --git a/moderncvbodyiii.sty b/moderncvbodyiii.sty index 453d821..c70895d 100644 --- a/moderncvbodyiii.sty +++ b/moderncvbodyiii.sty @@ -88,7 +88,7 @@ \@initializelength{\listitemcolumnwidth} % used by \cvlistdoubleitem \@initializelength{\listdoubleitemcolumnwidth} -\@initializelength{\listitemsymbolspace} \settowidth{\listitemsymbolspace}{0pt} +\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt} % commands \renewcommand*{\recomputecvbodylengths}{% diff --git a/moderncvbodyiv.sty b/moderncvbodyiv.sty index 606d6d7..f606238 100644 --- a/moderncvbodyiv.sty +++ b/moderncvbodyiv.sty @@ -49,7 +49,7 @@ \@initializelength{\listitemcolumnwidth} % used by \cvlistdoubleitem \@initializelength{\listdoubleitemcolumnwidth} -\@initializelength{\listitemsymbolspace} \settowidth{\listitemsymbolspace}{0pt} +\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt} % commands \renewcommand*{\recomputecvbodylengths}{% diff --git a/moderncvbodyv.sty b/moderncvbodyv.sty index 336dc83..24a779f 100644 --- a/moderncvbodyv.sty +++ b/moderncvbodyv.sty @@ -53,7 +53,7 @@ % used by \cvlistdoubleitem \@initializelength{\listdoubleitemcolumnwidth} %\@initializelength{\listdoubleitemmaincolumnwidth} -\@initializelength{\listitemsymbolspace} \settowidth{\listitemsymbolspace}{0pt} +\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt} % commands \@initializecommand{\recomputecvbodylengths}{% diff --git a/moderncvbodyvi.sty b/moderncvbodyvi.sty index b7f2525..ec7405d 100644 --- a/moderncvbodyvi.sty +++ b/moderncvbodyvi.sty @@ -53,7 +53,7 @@ \@initializelength{\listitemcolumnwidth} % used by \cvlistdoubleitem \@initializelength{\listdoubleitemcolumnwidth} -\@initializelength{\listitemsymbolspace} \settowidth{\listitemsymbolspace}{0pt} +\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt} % default moderncv \photo (change the definition such that by default the photo and its box align with the section bars \RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}% From 72603c495e863b31dae9625753bcef355da3a1ea Mon Sep 17 00:00:00 2001 From: daniel Date: Tue, 21 May 2024 18:50:07 +0200 Subject: [PATCH 19/19] Feature/cvtripleitem (#177) * first dive into cvtripleitem for classic style * cvtripleitem for banking style * cvtripleitem for oldstyle * cvtripleitem for fancy style * cvtripleitem for contemporary style * add a changelog entry and a documentation for \cvtripleitem command * simplified math for \tripleitemcolumnwidth --- CHANGELOG | 1 + manual/moderncv_userguide.pdf | Bin 118672 -> 118963 bytes manual/moderncv_userguide.tex | 10 +++++++++- moderncv.cls | 4 ++++ moderncvbodyi.sty | 17 +++++++++++++++++ moderncvbodyiii.sty | 12 ++++++++++++ moderncvbodyiv.sty | 13 +++++++++++++ moderncvbodyv.sty | 12 ++++++++++++ moderncvbodyvi.sty | 16 ++++++++++++++++ template.tex | 1 + 10 files changed, 85 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index b23350a..8ff4448 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -25,6 +25,7 @@ version 2.?.? (29 Jun 2023) - all styles: make the head options 'details' and 'nodetails' available to the user. (previously they were hidden). Oldstyle does not respond too well to nodetails. - casual style: make the head options 'alternate', 'details' and 'nodetails' available to the user. (previously they were hidden). - Setting \listitemsymbolspace allows custom spacing between list symbol and text item (for \cvlistitem and \cvlistdoubleitem). +- Introducing \cvtripleitem command for items in three columns. Closing feature request #174. version 2.3.1 (21 Feb 2022) - Fix duplicate GitLab icon (#105). diff --git a/manual/moderncv_userguide.pdf b/manual/moderncv_userguide.pdf index ac6ee99e58033b3022313f224224db99e528572b..4110f1fb1fd379a0aa30c616bee6f78daa98aaa6 100644 GIT binary patch delta 18632 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

(@ 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 D3#s_y delta 18361 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 diff --git a/manual/moderncv_userguide.tex b/manual/moderncv_userguide.tex index 6b8b8de..9e4e7b2 100644 --- a/manual/moderncv_userguide.tex +++ b/manual/moderncv_userguide.tex @@ -93,7 +93,7 @@ belowcaptionskip=0.75\baselineskip, % frame=L, emph={ - cvitem, cventry, cvdoubleentry, cvdoubleitem, cvlistitem, cvlistdoubleitem, cvcolumns, moderncvstyle, moderncvcolor, + cvitem, cventry, cvdoubleentry, cvdoubleitem, cvtripleitem, cvlistitem, cvlistdoubleitem, cvcolumns, moderncvstyle, moderncvcolor, cvskill, cvskilllegend, cvskillplainlegend, cvskillhead, cvskillentry, nopagenumbers, name, born, address, email, link, social, phone, homepage, extrainfo, photo, quote, section, subsection, setlength, NewDocumentCommand, definecolor, colorlet, cvitemwithcomment }, @@ -432,6 +432,14 @@ Can be used to enter skills, such as computer skills or language skills, in a tw \cvdoubleitem{}{}{}{} \end{lstlisting} +\paragraph{\code{\\cvtripleitem}} +A three-column variation of \code{\\cvitem}. +Takes six required arguments: the descriptor and body text of the first column, second and third column. +Can be used to enter skills, such as computer skills or language skills, in a three-column fashion. +\begin{lstlisting} + \cvtripleitem{}{}{}{}{}{} +\end{lstlisting} + \paragraph{\code{\\cvitemwithcomment}} A variation of \code{\\cvitem} with an additional argument for a comment. Can be used to enter skills such as computer skills or language skills. diff --git a/moderncv.cls b/moderncv.cls index 227b773..b057970 100644 --- a/moderncv.cls +++ b/moderncv.cls @@ -560,6 +560,10 @@ % usage: \cvdoubleitem[spacing]{header1}{text1}{header2}{text2} \newcommand*{\cvdoubleitem}[5][.25em]{} +% makes a resume line 3 headers and their corresponding text +% usage: \cvtripleitem[spacing]{header1}{text1}{header2}{text2}{header3}{text3} +\newcommand*{\cvtripleitem}[7][.1em]{} + % makes a resume line with a list item % usage: \cvlistitem[spacing]{item} \newcommand*{\cvlistitem}[2][\listitemsymbol]{} diff --git a/moderncvbodyi.sty b/moderncvbodyi.sty index 8736f6a..361cdfc 100644 --- a/moderncvbodyi.sty +++ b/moderncvbodyi.sty @@ -44,6 +44,8 @@ \@initializelength{\maincolumnwidth} % used by \cvdoubleitem \@initializelength{\doubleitemcolumnwidth} +% used by \cvtripleitem +\@initializelength{\tripleitemcolumnwidth} % used by \cvlistitem \@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol} \@initializelength{\listitemcolumnwidth} @@ -60,6 +62,8 @@ \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}% \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}% \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}% + \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\hintscolumnwidth-3\separatorcolumnwidth}% + \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}% \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}% \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}% \recompute@cvskillmatrix@lengths @@ -98,6 +102,19 @@ \hspace*{\separatorcolumnwidth}% \begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}} +\renewcommand*{\cvtripleitem}[7][.1em]{% + \cvitem[#1]{#2}{% + \begin{minipage}[t]{\tripleitemcolumnwidth}#3\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}% + \hspace*{\separatorcolumnwidth}% + \begin{minipage}[t]{\tripleitemcolumnwidth}#5\end{minipage}% + \hspace*{\separatorcolumnwidth}% + \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#6}\end{minipage}% + \hspace*{\separatorcolumnwidth}% + \begin{minipage}[t]{\tripleitemcolumnwidth}#7\end{minipage}}} + + \renewcommand*{\cvlistitem}[2][.25em]{% \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}} diff --git a/moderncvbodyiii.sty b/moderncvbodyiii.sty index c70895d..beb4f57 100644 --- a/moderncvbodyiii.sty +++ b/moderncvbodyiii.sty @@ -83,6 +83,8 @@ \@initializelength{\maincolumnwidth} % used by \cvdoubleitem \@initializelength{\doubleitemcolumnwidth} +% used by \cvtripleitem +\@initializelength{\tripleitemcolumnwidth} % used by \cvlistitem \@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol} \@initializelength{\listitemcolumnwidth} @@ -97,6 +99,8 @@ \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}% \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}% \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}% + \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\separatorcolumnwidth}% + \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}% \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}% \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}% \recompute@cvskillmatrix@lengths @@ -156,6 +160,14 @@ \begin{minipage}[t]{\doubleitemcolumnwidth}\ifstrempty{#4}{}{\hintstyle{#4}: }#5\end{minipage}% \par\addvspace{#1}} +\renewcommand*{\cvtripleitem}[7][.1em]{% + \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#4}: #5\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \begin{minipage}[t]{\tripleitemcolumnwidth}\ifstrempty{#6}{}{\hintstyle{#6}: }#7\end{minipage}% + \par\addvspace{#1}} + \renewcommand*{\cvlistitem}[2][.25em]{% \listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}% \par\addvspace{#1}} diff --git a/moderncvbodyiv.sty b/moderncvbodyiv.sty index f606238..6e9f208 100644 --- a/moderncvbodyiv.sty +++ b/moderncvbodyiv.sty @@ -49,8 +49,11 @@ \@initializelength{\listitemcolumnwidth} % used by \cvlistdoubleitem \@initializelength{\listdoubleitemcolumnwidth} +% used by \cvtripleitem +\@initializelength{\tripleitemcolumnwidth} \@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt} + % commands \renewcommand*{\recomputecvbodylengths}{% % body lengths @@ -58,6 +61,8 @@ \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}% \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}% \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}% + \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\separatorcolumnwidth}% + \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}% \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}% \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}% \recompute@cvskillmatrix@lengths @@ -88,6 +93,14 @@ \begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}% \par\addvspace{#1}} +\renewcommand*{\cvtripleitem}[7][.1em]{% + \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#4}: #5\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \begin{minipage}[t]{\tripleitemcolumnwidth}\ifthenelse{\equal{#6}{}}{}{\hintstyle{#6}: }#7\end{minipage}% + \par\addvspace{#1}} + \renewcommand*{\cvlistitem}[2][.25em]{% \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}} diff --git a/moderncvbodyv.sty b/moderncvbodyv.sty index 24a779f..418925b 100644 --- a/moderncvbodyv.sty +++ b/moderncvbodyv.sty @@ -46,6 +46,8 @@ \@initializelength{\maincolumnwidth} % used by \cvdoubleitem \@initializelength{\doubleitemcolumnwidth} +% used by \cvtripleitem +\@initializelength{\tripleitemcolumnwidth} % used by \cvlistitem \@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol} \@initializelength{\listitemcolumnwidth} @@ -62,6 +64,8 @@ \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}% \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}% \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}% + \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\separatorcolumnwidth}% + \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}% \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}% \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}% \recompute@cvskillmatrix@lengths @@ -118,6 +122,14 @@ \hfill% fill of \separatorcolumnwidth \begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}}} +\renewcommand*{\cvtripleitem}[7][.1ex]{% + \@cvitem[#1]{}{% + \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#4}: #5\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \begin{minipage}[t]{\tripleitemcolumnwidth}\ifthenelse{\equal{#6}{}}{}{\hintstyle{#6}: }#7\end{minipage}}} + \renewcommand*{\cvlistitem}[2][.5ex]{% \@cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}} diff --git a/moderncvbodyvi.sty b/moderncvbodyvi.sty index ec7405d..76e1a15 100644 --- a/moderncvbodyvi.sty +++ b/moderncvbodyvi.sty @@ -48,6 +48,8 @@ \@initializelength{\maincolumnwidth} % used by \cvdoubleitem \@initializelength{\doubleitemcolumnwidth} +% used by \cvtripleitem +\@initializelength{\tripleitemcolumnwidth} % used by \cvlistitem \@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol} \@initializelength{\listitemcolumnwidth} @@ -64,6 +66,8 @@ \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}% \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}% \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}% + \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\hintscolumnwidth-3\separatorcolumnwidth}% + \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}% \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}% \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}% \recompute@cvskillmatrix@lengths @@ -105,6 +109,18 @@ \hspace*{\separatorcolumnwidth}% \begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}} +\renewcommand*{\cvtripleitem}[7][.1em]{% + \cvitem[#1]{#2}{% + \begin{minipage}[t]{\tripleitemcolumnwidth}#3\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}% + \hspace*{\separatorcolumnwidth}% + \begin{minipage}[t]{\tripleitemcolumnwidth}#5\end{minipage}% + \hspace*{\separatorcolumnwidth}% + \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#6}\end{minipage}% + \hspace*{\separatorcolumnwidth}% + \begin{minipage}[t]{\tripleitemcolumnwidth}#7\end{minipage}}} + \renewcommand*{\cvlistitem}[2][.25em]{% \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}} diff --git a/template.tex b/template.tex index 7988dae..c9d453f 100644 --- a/template.tex +++ b/template.tex @@ -172,6 +172,7 @@ Detailed achievements: \cvdoubleitem{category 1}{XXX, YYY, ZZZ}{category 4}{XXX, YYY, ZZZ} \cvdoubleitem{category 2}{XXX, YYY, ZZZ}{category 5}{XXX, YYY, ZZZ} \cvdoubleitem{category 3}{XXX, YYY, ZZZ}{category 6}{XXX, YYY, ZZZ} +\cvtripleitem{category 4}{XYZ}{category 5}{XYZ}{category 6}{XYZ} \section{Skill matrix} \cvitem{Skill matrix}{Alternatively, provide a skill matrix to show off your skills}