commit 6f735733a3429874f70b20e7b72dbdfc66204337
parent 6961d7c3a1dd8a9ae87b878fb1bf61f18bcd9229
Author: Christian Grothoff <grothoff@gnunet.org>
Date: Sat, 21 Feb 2026 08:03:05 +0100
hny slides
Diffstat:
4 files changed, 609 insertions(+), 0 deletions(-)
diff --git a/presentations/comprehensive/2026-hny.tex b/presentations/comprehensive/2026-hny.tex
@@ -0,0 +1,605 @@
+\documentclass[aspectratio=169,t]{beamer}
+\input taler-macros
+
+\newcommand{\TITLE}{NEXT \\ GENERATION \\ INTERNET}
+\newcommand{\SUB}{The GNU Taler Payment System}
+\newcommand{\AUTHOR}{Christian Grothoff}
+\newcommand{\SPEAKER}{Christian Grothoff}
+\newcommand{\INST}{The GNU Project}
+\newcommand{\DATE}{February 2026}
+
+% Do not edit this part
+\title{\TITLE}
+\subtitle{\SUB}
+\date{\DATE}
+\author[\SPEAKER]{\AUTHOR}
+\institute{\INST}
+
+
+\usepackage{amsmath}
+\usepackage{multimedia}
+\usepackage[utf8]{inputenc}
+\usepackage{framed,color,ragged2e}
+\usepackage[absolute,overlay]{textpos}
+\definecolor{shadecolor}{rgb}{0.8,0.8,0.8}
+\usetheme{boxes}
+\setbeamertemplate{navigation symbols}{}
+\usepackage{xcolor}
+\usepackage[normalem]{ulem}
+\usepackage{listings}
+\usepackage{adjustbox}
+\usepackage{array}
+\usepackage{bbding}
+\usepackage{relsize}
+\usepackage{graphicx}
+\usepackage{tikz,eurosym,calc}
+\usetikzlibrary{tikzmark}
+\usetikzlibrary{shapes,arrows,arrows.meta}
+\usetikzlibrary{positioning,fit,patterns}
+\usetikzlibrary{calc}
+\usepackage{multicol}
+\usepackage{pgf-umlsd}
+\usepackage{relsize}
+
+\usepackage{booktabs}
+\usepackage{makecell}
+\usepackage{arydshln}
+
+
+
+% "The GNU Taler Payment System", including
+% an introduction to our objectives,
+% background on the technology,
+% demonstration of the system,
+% social implications and open issues.
+
+% CSS
+\lstdefinelanguage{CSS}{
+ basicstyle=\ttfamily\scriptsize,
+ keywords={color,background-image:,margin,padding,font,weight,display,position,top,left,right,bottom,list,style,border,size,white,space,min,width, transition:, transform:, transition-property, transition-duration, transition-timing-function},
+ sensitive=true,
+ morecomment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ morestring=[b]',
+ morestring=[b]",
+ alsoletter={:},
+ alsodigit={-}
+}
+
+% JavaScript
+\lstdefinelanguage{JavaScript}{
+ basicstyle=\ttfamily\scriptsize,
+ morekeywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
+ morecomment=[s]{/*}{*/},
+ morecomment=[l]//,
+ morestring=[b]",
+ morestring=[b]'
+}
+
+\lstdefinelanguage{HTML5}{
+ basicstyle=\ttfamily\scriptsize,
+ language=html,
+ sensitive=true,
+ alsoletter={<>=-},
+ morecomment=[s]{<!-}{-->},
+ tag=[s],
+ otherkeywords={
+ % General
+ >,
+ % Standard tags
+ <!DOCTYPE,
+ </html, <html, <head, <title, </title, <style, </style, <link, </head, <meta, />,
+ % body
+ </body, <body,
+ % Divs
+ </div, <div, </div>,
+ % Paragraphs
+ </p, <p, </p>,
+ % scripts
+ </script, <script,
+ % More tags...
+ <canvas, /canvas>, <svg, <rect, <animateTransform, </rect>, </svg>, <video, <source, <iframe, </iframe>, </video>, <image, </image>
+ },
+ ndkeywords={
+ % General
+ =,
+ % HTML attributes
+ charset=, src=, id=, width=, height=, style=, type=, rel=, href=,
+ % SVG attributes
+ fill=, attributeName=, begin=, dur=, from=, to=, poster=, controls=, x=, y=, repeatCount=, xlink:href=,
+ % CSS properties
+ margin:, padding:, background-image:, border:, top:, left:, position:, width:, height:,
+ % CSS3 properties
+ transform:, -moz-transform:, -webkit-transform:,
+ animation:, -webkit-animation:,
+ transition:, transition-duration:, transition-property:, transition-timing-function:,
+ }
+}
+
+\lstdefinelanguage{JavaScript}{
+ basicstyle=\ttfamily\scriptsize,
+ keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, for},
+ keywordstyle=\color{blue}\bfseries,
+ ndkeywords={class, export, boolean, throw, implements, import, this},
+ ndkeywordstyle=\color{darkgray}\bfseries,
+ identifierstyle=\color{black},
+ sensitive=false,
+ comment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ commentstyle=\color{purple}\ttfamily,
+ stringstyle=\color{red}\ttfamily,
+ morestring=[b]',
+ morestring=[b]"
+}
+
+\setbeamersize{description width=1em}
+
+\definecolor{blue}{rgb}{0,0,0.7}
+\newcommand{\orange}[1]{{\color{orange}#1}}
+\newcommand{\blue}[1]{{\color{blue}#1}}
+\newcommand{\red}[1]{{\color{red}#1}}
+\newcommand{\Guardian}{\mathcal{G}}
+\newcommand{\Child}{\mathcal{C}}
+\newcommand{\Customer}{\mathcal{C}}
+\newcommand{\Merchant}{\mathcal{M}}
+\newcommand{\Exchange}{\mathcal{E}}
+
+\newcommand{\Commit}{\mathsf{Commit}}
+\newcommand{\Attest}{\mathsf{Attest}}
+\newcommand{\Verify}{\mathsf{Verify}}
+\newcommand{\Derive}{\mathsf{Derive}}
+\newcommand{\DeriveCompare}{\mathsf{DeriveCompare_\kappa}}
+\newcommand{\Compare}{\mathsf{Compare}}
+\newcommand{\AgeVer}{\mathsf{AgeVer}}
+
+\newcommand{\HashF}{\mathsf{H}}
+\newcommand{\Hash}{\mathsf{H}}
+\newcommand{\Block}{\mathbb{B}}
+\newcommand{\Pub}{\mathsf{Pub}}
+\newcommand{\Sign}{\mathsf{Sig}}
+\newcommand{\Ver}{\mathsf{Ver}}
+\newcommand{\Encoding}{\mathsf{Encoding}}
+\newcommand{\ECDSA}{\mathsf{ECDSA}}
+\newcommand{\Null}{\mathcal{O}}
+\newcommand{\EC}{\mathrm{ec}}
+\newcommand{\Curve}{\mathsf{Curve25519}}
+\newcommand{\SHA}{\mathsf{SHA256}}
+\newcommand{\SHAF}{\mathsf{SHA252}}
+\newcommand{\FDH}{\mathsf{FDH}}
+
+\newcommand{\negl}{\epsilon}
+
+\newcommand{\rand}{\mathsf{rand}}
+\newcommand{\age}{\mathsf{a}}
+\newcommand{\Age}{\mathsf{M}}
+\newcommand{\bage}{\mathsf{b}}
+\newcommand{\minage}{\mathsf{m}}
+\newcommand{\attest}{\mathsf{T}}
+\newcommand{\commitment}{\mathsf{Q}}
+\newcommand{\pruf}{\mathsf{P}}
+\newcommand{\Vcommitment}{\vec{\mathsf{Q}}}
+\newcommand{\Vpruf}{\vec{\mathsf{P}}}
+\newcommand{\blinding}{\beta}
+
+\newcommand{\ZN}{\mathbb{Z}_N}
+\newcommand{\Z}{\mathbb{Z}}
+\newcommand{\N}{\mathbb{N}}
+\newcommand{\A}{\mathbb{A}}
+\newcommand{\E}{\mathbb{E}}
+\newcommand{\F}{\mathbb{F}}
+\newcommand{\seck}{\mathsf{s}}
+\newcommand{\pubk}{\mathsf{P}}
+\renewcommand{\H}{\mathbb{H}}
+\newcommand{\K}{\mathbb{K}}
+\newcommand{\Proofs}{\mathbb{P}}
+\newcommand{\Commitments}{\mathbb{O}}
+\newcommand{\Attests}{\mathbb{T}}
+\newcommand{\Blindings}{\mathbb{B}}
+\newcommand{\Nil}{\perp}
+
+\newcommand{\p}{\mathsf{p}}
+\newcommand{\com}{\mathsf{com}}
+\newcommand{\prf}{\mathsf{prf}}
+
+\newcommand{\Adv}{\mathcal{A}}
+\newcommand{\PPT}{\mathfrak{A}}
+\newcommand{\Probability}{\mathrm{Pr}}
+\newcommand{\Algorithm}{f}
+\renewcommand{\Game}[1]{G_\Adv^\mathsf{#1}}
+
+\DeclareMathOperator{\Image}{Im}
+\DeclareMathOperator{\Mod}{mod}
+
+\newcommand{\Encode}[1]{\overbracket[0.5pt][2pt]{\,#1\,}}
+\newcommand{\Decode}[1]{\underbracket[0.5pt][3pt]{\,#1\,}}
+\newcommand{\FDHg}[1]{[#1]_g\,}
+\newcommand{\logg}{{\breve{g}}}
+
+
+\newcommand{\drawfrom}{\xleftarrow{\$}}
+\newcommand\Exists{%
+ \mathop{\lower0.75ex\hbox{\ensuremath{%
+ \mathlarger{\mathlarger{\mathlarger{\mathlarger{\exists}}}}}}}%
+ \limits}
+
+\newcommand\Forall{%
+ \mathop{\lower0.75ex\hbox{\ensuremath{%
+ \mathlarger{\mathlarger{\mathlarger{\mathlarger{\forall}}}}}}}%
+ \limits}
+
+
+\begin{document}
+
+\begin{frame}[plain]
+\maketitle
+\end{frame}
+
+\begin{frame}{Agenda}
+ \tableofcontents
+\end{frame}
+
+\section{Motivation \& Background}
+
+
+\begin{frame}{A Social Problem}
+\begin{minipage}{12cm}
+``I think one of the big things that we need to do, is we need
+to get away from true-name payments on the Internet. The credit
+card payment system is one of the worst things that happened for the
+user, in terms of being able to divorce their access from their
+identity.'' \hfill --Edward Snowden, IETF 93 (2015)
+\end{minipage}
+
+\end{frame}
+
+
+\begin{frame}{Banks have Problems, too!}
+
+ 3D secure (``verified by visa'') is a nightmare:
+
+ \begin{minipage}{5cm}
+ \begin{itemize}
+ \item Complicated process
+ \item Shifts liability to consumer
+ \item Significant latency
+ \item Can refuse valid requests
+ \item Legal vendors excluded
+ \item No privacy for buyers
+ \end{itemize}
+ \end{minipage}
+ \begin{minipage}{5cm}
+ \includegraphics[width=\textwidth]{illustrations/cc3ds.pdf}
+ \end{minipage}
+ \vfill
+ Online credit card payments will be replaced, but with what?
+\end{frame}
+
+
+\begin{frame}{The Bank's Problem}
+ \begin{itemize}
+ \item Global tech companies push oligopolies
+ \item Privacy and federated finance are at risk
+% \item 30\% fees are conceivable
+ \item Economic sovereignty is in danger
+ \end{itemize}
+\begin{textblock*}{4cm}(11.5cm,5.2cm) % {block width} (coords)
+ {\includegraphics[width=\textwidth]{../investors/competitor-logos/amazon.png}}
+\end{textblock*}
+\begin{textblock*}{2cm}(11cm,3cm) % {block width} (coords)
+ {\includegraphics[width=\textwidth]{../investors/competitor-logos/alipay.jpeg}}
+\end{textblock*}
+\begin{textblock*}{2cm}(11cm,7cm) % {block width} (coords)
+ {\includegraphics[width=\textwidth]{../investors/competitor-logos/paypal.jpeg}}
+\end{textblock*}
+\begin{textblock*}{2cm}(3cm,9cm) % {block width} (coords)
+ {\includegraphics[width=\textwidth]{../investors/competitor-logos/applepay.jpeg}}
+\end{textblock*}
+\begin{textblock*}{2cm}(7cm,7cm) % {block width} (coords)
+ {\includegraphics[width=\textwidth]{../investors/competitor-logos/samsungpay.jpeg}}
+\end{textblock*}
+\begin{textblock*}{1cm}(9.5cm,6.3cm) % {block width} (coords)
+ {\includegraphics[width=\textwidth]{../investors/competitor-logos/android_pay.png}}
+\end{textblock*}
+\vfill
+\end{frame}
+
+
+\begin{frame}{Central Bank Digital Currency?}
+Speech by Augustin Carstens, Bank of International Settlements (October 2020) on the difference between Central Bank Digital Currencies and cash.
+ \begin{center}
+ \movie[height = 0.5\paperheight, poster, showcontrols]{Central Bank Digital Currency vs. Cash}
+ {bis-cbdc.mp4}
+
+{\tiny
+\url{https://www.youtube.com/watch?v=R_E4Uu7ycqE} (10'2020)}
+\end{center}
+\end{frame}
+
+
+
+\section{GNU Taler: Introduction}
+
+\begin{frame}
+ \vfill
+ \begin{center}
+ {\bf GNU Taler: Introduction}
+ \end{center}
+ \vfill
+\end{frame}
+
+
+\begin{frame}{GNU Taler~\cite{taler2016space,DBLP:phd/hal/Dold19,cbdc2021chaum}}
+ \vfill
+ \begin{center}
+ {\huge {\bf Digital} cash, made \textbf{socially responsible}.}
+ \end{center}
+ \vfill
+ \begin{center}
+ \includegraphics[scale=0.3]{taler-logo-2021-inkscape.pdf}
+ \end{center}
+ \vfill
+ \begin{center}
+ Privacy-Preserving, Practical, Taxable, Free Software, Efficient
+ \end{center}
+ \vfill
+ \vfill
+\ %
+\end{frame}
+
+
+\begin{frame}{What is Taler?}
+ \framesubtitle{\url{https://taler.net/en/features.html}} \noindent
+Taler is
+ \vfill
+ \begin{itemize}
+ \item a Free/Libre software \emph{payment system} infrastructure project
+ \item ... with a surrounding software ecosystem
+ \item ... and a company (Taler Systems S.A.) and community that wants to deploy it
+ as widely as possible.
+ \end{itemize}
+ \vfill
+\noindent
+ However, Taler is
+ \begin{itemize}
+ \item \emph{not} a currency or speculative asset
+ \item \emph{not} a long-term store of value
+ \item \emph{not} a network or instance of a system
+ \item \emph{not} based on proof-of-work or proof-of-stake
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}{Design principles}
+ \framesubtitle{https://taler.net/en/principles.html}
+GNU Taler must ...
+\begin{enumerate}
+ \item {... be implemented as {\bf free software}.}
+ \item {... protect the {\bf privacy of buyers}.}
+ \item {... enable the state to {\bf tax income} and crack down on
+ illegal business activities.}
+ \item {... prevent payment fraud.}
+ \item {... only {\bf disclose the minimal amount of information
+ necessary}.}
+ \item {... be usable.}
+ \item {... be efficient.}
+ \item {... avoid single points of failure.}
+ \item {... foster {\bf competition}.}
+\end{enumerate}
+\end{frame}
+
+
+\begin{frame}
+\frametitle{Taler Overview}
+\begin{center}
+\begin{tikzpicture}
+ \tikzstyle{def} = [node distance= 5em and 6.5em, inner sep=1em, outer sep=.3em];
+ \node (origin) at (0,0) {};
+ \node (exchange) [def,above=of origin,draw]{Exchange};
+ \node (customer) [def, draw, below left=of origin] {Customer};
+ \node (merchant) [def, draw, below right=of origin] {Merchant};
+ \node (auditor) [def, draw, above right=of origin]{Auditor};
+% \node (regulator) [def, draw, above=of auditor]{CSSF};
+
+ \tikzstyle{C} = [color=black, line width=1pt]
+
+ \draw [<-, C] (customer) -- (exchange) node [midway, above, sloped] (TextNode) {withdraw coins};
+ \draw [<-, C] (exchange) -- (merchant) node [midway, above, sloped] (TextNode) {deposit coins};
+ \draw [<-, C] (merchant) -- (customer) node [midway, above, sloped] (TextNode) {spend coins};
+ \draw [<-, C] (exchange) -- (auditor) node [midway, above, sloped] (TextNode) {verify};
+% \draw [<-, C] (regulator) -- (auditor) node [midway, above, sloped] (TextNode) {report};
+
+\end{tikzpicture}
+\end{center}
+\end{frame}
+
+
+
+\begin{frame}
+\frametitle{Architecture of Taler}
+\begin{center}
+ \includegraphics[width=0.8\textwidth]{operations.png}
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Usability of Taler}
+ \vfill
+ \begin{center}
+ \url{https://demo.taler.net/}
+ \end{center}
+ \begin{enumerate}
+ \item Install browser extension.
+ \item Visit the {\tt bank.demo.taler.net} to withdraw coins.
+ \item Visit the {\tt shop.demo.taler.net} to spend coins.
+ \end{enumerate}
+ \vfill
+\end{frame}
+
+
+
+\begin{frame}
+ \vfill
+ \begin{center}
+ {\bf Protocol Basics}
+ \end{center}
+ \vfill
+\end{frame}
+
+
+\begin{frame}[plain]
+ \begin{tikzpicture}[remember picture,overlay]
+ \node[anchor=south west, inner sep=0pt] at (current page.south west) {%
+ \movie[height = \paperheight, width = \paperwidth, poster, showcontrols] {BFH Bachelor's thesis video}{cs-movie.mp4}%
+ };
+ \end{tikzpicture}
+\end{frame}
+
+
+\begin{frame}{How does it work?}
+We use a few ancient constructions:
+ \begin{itemize}
+ \item Cryptographic hash function (1989)
+ \item Blind signature (1983)
+ \item Schnorr signature (1989)
+ \item Diffie-Hellman key exchange (1976) or Unique signatures (1977) or VRF (1999) % 1977: RSA
+ \item Cut-and-choose zero-knowledge proof (1985)
+ \end{itemize}
+But of course we use modern instantiations.
+\end{frame}
+
+
+\include{offline.tex}
+
+\section{Future Work \& Conclusion}
+
+\begin{frame}
+ \vfill
+ \begin{center}
+ {\bf Future Work \& Conclusion}
+ \end{center}
+ \vfill
+\end{frame}
+
+
+\begin{frame}{Taler: Project Status}
+\framesubtitle{\url{https://taler-ops.ch/}}
+\begin{center}
+ {\bf Taler Operations is live Swiss-wide!}
+
+ \vfill
+
+ \includegraphics[width=0.3\textwidth]{tops-qr.png}
+
+ \vfill
+\end{center}
+\end{frame}
+
+
+\begin{frame}{Competitor comparison}
+ \begin{center} \small
+ \begin{tabular}{l||c|c|c|c|c}
+ & Cash & Bitcoin & Zerocoin & Creditcard & GNU Taler \\ \hline \hline
+ Online &$-$$-$$-$ & ++ & ++ & + & +++ \\ \hline
+ Offline & +++ & $-$$-$ & $-$$-$ & + & $+$$+$ \\ \hline
+ Trans. cost & + & $-$$-$$-$ & $-$$-$$-$ & $-$ & ++ \\ \hline
+ Speed & + & $-$$-$$-$ & $-$$-$$-$ & o & ++ \\ \hline
+ Taxation & $-$ & $-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline
+ Payer-anon & ++ & o & ++ & $-$$-$$-$ & +++ \\ \hline
+ Payee-anon & ++ & o & ++ & $-$$-$$-$ & $-$$-$$-$ \\ \hline
+ Security & $-$ & o & o & $-$$-$ & ++ \\ \hline
+ Conversion & +++ & $-$$-$$-$ & $-$$-$$-$ & +++ & +++ \\ \hline
+ Libre & $-$ & +++ & +++ & $-$ $-$ $-$& +++ \\
+ \end{tabular}
+ \end{center}
+\end{frame}
+
+
+\begin{frame}{How to support?}
+ \begin{description}
+ \item[Join:] {\small \url{https://lists.gnu.org/mailman/listinfo/taler}}
+ \item[Discuss:] {\small \url{https://ich.taler.net/}}
+ \item[Develop:] \url{https://bugs.taler.net/}, \url{https://git-www.taler.net/}
+ \item[Apply:] \url{https://nlnet.nl/propose}, \url{https://nlnet.nl/taler}
+ \item[Translate:] \url{translation-volunteer@taler.net}
+ \item[Integrate:] \url{https://docs.taler.net/}
+ \item[Donate:] \url{https://gnunet.org/ev}
+ \item[Partner:] \url{https://taler-systems.com/}
+ \end{description}
+\end{frame}
+
+
+\begin{frame}{Conclusion}
+ \begin{center}
+ {\bf What can we do?}
+ \end{center}
+ \vfill
+\begin{itemize}
+ \item{Suffer mass-surveillance enabled by credit card oligopolies with high fees, and}
+ \item{Engage in arms race with deliberately unregulatable blockchains}
+% \item{Enjoy the ``benefits'' of cash \\
+% \hfill \includegraphics[height=0.3\textheight]{atm-rupee.jpg} \hfill}
+\end{itemize}
+\vfill
+\begin{center}
+ {\bf OR}
+\end{center}
+\vfill
+\begin{itemize}
+ \item{Establish free software alternative balancing social goals!}
+\end{itemize}
+\vfill
+\end{frame}
+
+
+
+\section*{References}
+\begin{frame}[allowframebreaks]{References}
+\bibliographystyle{plain}
+\bibliography{ref,extra,rfc,biblio-defqa}
+\end{frame}
+
+
+% This should be last...
+\begin{frame}{Acknowledgments}
+
+ \begin{minipage}{0.45\textwidth} \ \\
+ {\tiny Funded by the European Union (Project 101135475).}
+
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{../bandera.jpg}
+ \end{center}
+ \end{minipage}
+ \hfill
+ \begin{minipage}{0.45\textwidth}
+ {\tiny Funded by SERI (HEU-Projekt 101135475-TALER).}
+
+ \begin{center}
+ \includegraphics[width=0.65\textwidth]{../sbfi.jpg}
+ \end{center}
+ \end{minipage}
+
+ \vfill
+
+ {\tiny
+
+ Views and opinions expressed are however those of the author(s) only
+ and do not necessarily reflect those of the European Union. Neither the
+ European Union nor the granting authority can be held responsible for
+ them.
+
+ }
+\end{frame}
+
+
+\end{document}
+
+
+
+\begin{frame}{Future work}
+ \begin{itemize}
+ \item Performance improvements for RSA in FLOSS crypto libraries
+ \item Integrate with e-ID for easier \& cheaper KYC
+ \item Buy anonymous pre-paid debit cards on-demand with Taler wallet
+ \item Implement PQC across the stack (with cipher agility, where possible with additive security)
+ \end{itemize}
+\end{frame}
diff --git a/presentations/comprehensive/offline.tex b/presentations/comprehensive/offline.tex
@@ -182,3 +182,5 @@ Many central banks today demand offline capabilities for CBDCs.
}
\end{center}
\end{frame}
+
+
diff --git a/presentations/comprehensive/tops-qr.png b/presentations/comprehensive/tops-qr.png
Binary files differ.
diff --git a/presentations/comprehensive/tops-qr.svg b/presentations/comprehensive/tops-qr.svg
@@ -0,0 +1 @@
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 82 82" preserveAspectRatio="xMinYMin meet"><rect width="100%" height="100%" fill="white" cx="0" cy="0"/><path d="M8,8l2,0 0,2 -2,0 0,-2z M10,8l2,0 0,2 -2,0 0,-2z M12,8l2,0 0,2 -2,0 0,-2z M14,8l2,0 0,2 -2,0 0,-2z M16,8l2,0 0,2 -2,0 0,-2z M18,8l2,0 0,2 -2,0 0,-2z M20,8l2,0 0,2 -2,0 0,-2z M24,8l2,0 0,2 -2,0 0,-2z M26,8l2,0 0,2 -2,0 0,-2z M34,8l2,0 0,2 -2,0 0,-2z M44,8l2,0 0,2 -2,0 0,-2z M46,8l2,0 0,2 -2,0 0,-2z M48,8l2,0 0,2 -2,0 0,-2z M50,8l2,0 0,2 -2,0 0,-2z M54,8l2,0 0,2 -2,0 0,-2z M60,8l2,0 0,2 -2,0 0,-2z M62,8l2,0 0,2 -2,0 0,-2z M64,8l2,0 0,2 -2,0 0,-2z M66,8l2,0 0,2 -2,0 0,-2z M68,8l2,0 0,2 -2,0 0,-2z M70,8l2,0 0,2 -2,0 0,-2z M72,8l2,0 0,2 -2,0 0,-2z M8,10l2,0 0,2 -2,0 0,-2z M20,10l2,0 0,2 -2,0 0,-2z M34,10l2,0 0,2 -2,0 0,-2z M48,10l2,0 0,2 -2,0 0,-2z M52,10l2,0 0,2 -2,0 0,-2z M54,10l2,0 0,2 -2,0 0,-2z M60,10l2,0 0,2 -2,0 0,-2z M72,10l2,0 0,2 -2,0 0,-2z M8,12l2,0 0,2 -2,0 0,-2z M12,12l2,0 0,2 -2,0 0,-2z M14,12l2,0 0,2 -2,0 0,-2z M16,12l2,0 0,2 -2,0 0,-2z M20,12l2,0 0,2 -2,0 0,-2z M24,12l2,0 0,2 -2,0 0,-2z M30,12l2,0 0,2 -2,0 0,-2z M32,12l2,0 0,2 -2,0 0,-2z M34,12l2,0 0,2 -2,0 0,-2z M36,12l2,0 0,2 -2,0 0,-2z M38,12l2,0 0,2 -2,0 0,-2z M40,12l2,0 0,2 -2,0 0,-2z M44,12l2,0 0,2 -2,0 0,-2z M48,12l2,0 0,2 -2,0 0,-2z M56,12l2,0 0,2 -2,0 0,-2z M60,12l2,0 0,2 -2,0 0,-2z M64,12l2,0 0,2 -2,0 0,-2z M66,12l2,0 0,2 -2,0 0,-2z M68,12l2,0 0,2 -2,0 0,-2z M72,12l2,0 0,2 -2,0 0,-2z M8,14l2,0 0,2 -2,0 0,-2z M12,14l2,0 0,2 -2,0 0,-2z M14,14l2,0 0,2 -2,0 0,-2z M16,14l2,0 0,2 -2,0 0,-2z M20,14l2,0 0,2 -2,0 0,-2z M24,14l2,0 0,2 -2,0 0,-2z M26,14l2,0 0,2 -2,0 0,-2z M30,14l2,0 0,2 -2,0 0,-2z M34,14l2,0 0,2 -2,0 0,-2z M36,14l2,0 0,2 -2,0 0,-2z M38,14l2,0 0,2 -2,0 0,-2z M40,14l2,0 0,2 -2,0 0,-2z M42,14l2,0 0,2 -2,0 0,-2z M46,14l2,0 0,2 -2,0 0,-2z M52,14l2,0 0,2 -2,0 0,-2z M54,14l2,0 0,2 -2,0 0,-2z M56,14l2,0 0,2 -2,0 0,-2z M60,14l2,0 0,2 -2,0 0,-2z M64,14l2,0 0,2 -2,0 0,-2z M66,14l2,0 0,2 -2,0 0,-2z M68,14l2,0 0,2 -2,0 0,-2z M72,14l2,0 0,2 -2,0 0,-2z M8,16l2,0 0,2 -2,0 0,-2z M12,16l2,0 0,2 -2,0 0,-2z M14,16l2,0 0,2 -2,0 0,-2z M16,16l2,0 0,2 -2,0 0,-2z M20,16l2,0 0,2 -2,0 0,-2z M24,16l2,0 0,2 -2,0 0,-2z M26,16l2,0 0,2 -2,0 0,-2z M28,16l2,0 0,2 -2,0 0,-2z M30,16l2,0 0,2 -2,0 0,-2z M38,16l2,0 0,2 -2,0 0,-2z M40,16l2,0 0,2 -2,0 0,-2z M42,16l2,0 0,2 -2,0 0,-2z M46,16l2,0 0,2 -2,0 0,-2z M52,16l2,0 0,2 -2,0 0,-2z M56,16l2,0 0,2 -2,0 0,-2z M60,16l2,0 0,2 -2,0 0,-2z M64,16l2,0 0,2 -2,0 0,-2z M66,16l2,0 0,2 -2,0 0,-2z M68,16l2,0 0,2 -2,0 0,-2z M72,16l2,0 0,2 -2,0 0,-2z M8,18l2,0 0,2 -2,0 0,-2z M20,18l2,0 0,2 -2,0 0,-2z M26,18l2,0 0,2 -2,0 0,-2z M32,18l2,0 0,2 -2,0 0,-2z M44,18l2,0 0,2 -2,0 0,-2z M46,18l2,0 0,2 -2,0 0,-2z M48,18l2,0 0,2 -2,0 0,-2z M50,18l2,0 0,2 -2,0 0,-2z M52,18l2,0 0,2 -2,0 0,-2z M56,18l2,0 0,2 -2,0 0,-2z M60,18l2,0 0,2 -2,0 0,-2z M72,18l2,0 0,2 -2,0 0,-2z M8,20l2,0 0,2 -2,0 0,-2z M10,20l2,0 0,2 -2,0 0,-2z M12,20l2,0 0,2 -2,0 0,-2z M14,20l2,0 0,2 -2,0 0,-2z M16,20l2,0 0,2 -2,0 0,-2z M18,20l2,0 0,2 -2,0 0,-2z M20,20l2,0 0,2 -2,0 0,-2z M24,20l2,0 0,2 -2,0 0,-2z M28,20l2,0 0,2 -2,0 0,-2z M32,20l2,0 0,2 -2,0 0,-2z M36,20l2,0 0,2 -2,0 0,-2z M40,20l2,0 0,2 -2,0 0,-2z M44,20l2,0 0,2 -2,0 0,-2z M48,20l2,0 0,2 -2,0 0,-2z M52,20l2,0 0,2 -2,0 0,-2z M56,20l2,0 0,2 -2,0 0,-2z M60,20l2,0 0,2 -2,0 0,-2z M62,20l2,0 0,2 -2,0 0,-2z M64,20l2,0 0,2 -2,0 0,-2z M66,20l2,0 0,2 -2,0 0,-2z M68,20l2,0 0,2 -2,0 0,-2z M70,20l2,0 0,2 -2,0 0,-2z M72,20l2,0 0,2 -2,0 0,-2z M26,22l2,0 0,2 -2,0 0,-2z M30,22l2,0 0,2 -2,0 0,-2z M40,22l2,0 0,2 -2,0 0,-2z M42,22l2,0 0,2 -2,0 0,-2z M44,22l2,0 0,2 -2,0 0,-2z M48,22l2,0 0,2 -2,0 0,-2z M54,22l2,0 0,2 -2,0 0,-2z M8,24l2,0 0,2 -2,0 0,-2z M10,24l2,0 0,2 -2,0 0,-2z M12,24l2,0 0,2 -2,0 0,-2z M14,24l2,0 0,2 -2,0 0,-2z M20,24l2,0 0,2 -2,0 0,-2z M24,24l2,0 0,2 -2,0 0,-2z M36,24l2,0 0,2 -2,0 0,-2z M40,24l2,0 0,2 -2,0 0,-2z M42,24l2,0 0,2 -2,0 0,-2z M44,24l2,0 0,2 -2,0 0,-2z M46,24l2,0 0,2 -2,0 0,-2z M50,24l2,0 0,2 -2,0 0,-2z M52,24l2,0 0,2 -2,0 0,-2z M58,24l2,0 0,2 -2,0 0,-2z M64,24l2,0 0,2 -2,0 0,-2z M66,24l2,0 0,2 -2,0 0,-2z M68,24l2,0 0,2 -2,0 0,-2z M72,24l2,0 0,2 -2,0 0,-2z M8,26l2,0 0,2 -2,0 0,-2z M10,26l2,0 0,2 -2,0 0,-2z M16,26l2,0 0,2 -2,0 0,-2z M18,26l2,0 0,2 -2,0 0,-2z M26,26l2,0 0,2 -2,0 0,-2z M36,26l2,0 0,2 -2,0 0,-2z M40,26l2,0 0,2 -2,0 0,-2z M46,26l2,0 0,2 -2,0 0,-2z M48,26l2,0 0,2 -2,0 0,-2z M54,26l2,0 0,2 -2,0 0,-2z M58,26l2,0 0,2 -2,0 0,-2z M60,26l2,0 0,2 -2,0 0,-2z M68,26l2,0 0,2 -2,0 0,-2z M70,26l2,0 0,2 -2,0 0,-2z M72,26l2,0 0,2 -2,0 0,-2z M8,28l2,0 0,2 -2,0 0,-2z M10,28l2,0 0,2 -2,0 0,-2z M12,28l2,0 0,2 -2,0 0,-2z M18,28l2,0 0,2 -2,0 0,-2z M20,28l2,0 0,2 -2,0 0,-2z M24,28l2,0 0,2 -2,0 0,-2z M40,28l2,0 0,2 -2,0 0,-2z M48,28l2,0 0,2 -2,0 0,-2z M52,28l2,0 0,2 -2,0 0,-2z M54,28l2,0 0,2 -2,0 0,-2z M60,28l2,0 0,2 -2,0 0,-2z M62,28l2,0 0,2 -2,0 0,-2z M66,28l2,0 0,2 -2,0 0,-2z M68,28l2,0 0,2 -2,0 0,-2z M70,28l2,0 0,2 -2,0 0,-2z M72,28l2,0 0,2 -2,0 0,-2z M8,30l2,0 0,2 -2,0 0,-2z M10,30l2,0 0,2 -2,0 0,-2z M12,30l2,0 0,2 -2,0 0,-2z M24,30l2,0 0,2 -2,0 0,-2z M30,30l2,0 0,2 -2,0 0,-2z M32,30l2,0 0,2 -2,0 0,-2z M34,30l2,0 0,2 -2,0 0,-2z M38,30l2,0 0,2 -2,0 0,-2z M40,30l2,0 0,2 -2,0 0,-2z M44,30l2,0 0,2 -2,0 0,-2z M46,30l2,0 0,2 -2,0 0,-2z M48,30l2,0 0,2 -2,0 0,-2z M56,30l2,0 0,2 -2,0 0,-2z M58,30l2,0 0,2 -2,0 0,-2z M62,30l2,0 0,2 -2,0 0,-2z M12,32l2,0 0,2 -2,0 0,-2z M14,32l2,0 0,2 -2,0 0,-2z M16,32l2,0 0,2 -2,0 0,-2z M20,32l2,0 0,2 -2,0 0,-2z M22,32l2,0 0,2 -2,0 0,-2z M24,32l2,0 0,2 -2,0 0,-2z M26,32l2,0 0,2 -2,0 0,-2z M30,32l2,0 0,2 -2,0 0,-2z M34,32l2,0 0,2 -2,0 0,-2z M36,32l2,0 0,2 -2,0 0,-2z M42,32l2,0 0,2 -2,0 0,-2z M44,32l2,0 0,2 -2,0 0,-2z M48,32l2,0 0,2 -2,0 0,-2z M52,32l2,0 0,2 -2,0 0,-2z M58,32l2,0 0,2 -2,0 0,-2z M62,32l2,0 0,2 -2,0 0,-2z M64,32l2,0 0,2 -2,0 0,-2z M66,32l2,0 0,2 -2,0 0,-2z M70,32l2,0 0,2 -2,0 0,-2z M10,34l2,0 0,2 -2,0 0,-2z M12,34l2,0 0,2 -2,0 0,-2z M14,34l2,0 0,2 -2,0 0,-2z M22,34l2,0 0,2 -2,0 0,-2z M26,34l2,0 0,2 -2,0 0,-2z M28,34l2,0 0,2 -2,0 0,-2z M30,34l2,0 0,2 -2,0 0,-2z M34,34l2,0 0,2 -2,0 0,-2z M36,34l2,0 0,2 -2,0 0,-2z M38,34l2,0 0,2 -2,0 0,-2z M40,34l2,0 0,2 -2,0 0,-2z M46,34l2,0 0,2 -2,0 0,-2z M50,34l2,0 0,2 -2,0 0,-2z M56,34l2,0 0,2 -2,0 0,-2z M62,34l2,0 0,2 -2,0 0,-2z M66,34l2,0 0,2 -2,0 0,-2z M68,34l2,0 0,2 -2,0 0,-2z M8,36l2,0 0,2 -2,0 0,-2z M10,36l2,0 0,2 -2,0 0,-2z M12,36l2,0 0,2 -2,0 0,-2z M18,36l2,0 0,2 -2,0 0,-2z M20,36l2,0 0,2 -2,0 0,-2z M24,36l2,0 0,2 -2,0 0,-2z M26,36l2,0 0,2 -2,0 0,-2z M32,36l2,0 0,2 -2,0 0,-2z M34,36l2,0 0,2 -2,0 0,-2z M42,36l2,0 0,2 -2,0 0,-2z M44,36l2,0 0,2 -2,0 0,-2z M46,36l2,0 0,2 -2,0 0,-2z M48,36l2,0 0,2 -2,0 0,-2z M50,36l2,0 0,2 -2,0 0,-2z M60,36l2,0 0,2 -2,0 0,-2z M62,36l2,0 0,2 -2,0 0,-2z M64,36l2,0 0,2 -2,0 0,-2z M68,36l2,0 0,2 -2,0 0,-2z M8,38l2,0 0,2 -2,0 0,-2z M12,38l2,0 0,2 -2,0 0,-2z M14,38l2,0 0,2 -2,0 0,-2z M16,38l2,0 0,2 -2,0 0,-2z M18,38l2,0 0,2 -2,0 0,-2z M26,38l2,0 0,2 -2,0 0,-2z M28,38l2,0 0,2 -2,0 0,-2z M32,38l2,0 0,2 -2,0 0,-2z M36,38l2,0 0,2 -2,0 0,-2z M46,38l2,0 0,2 -2,0 0,-2z M50,38l2,0 0,2 -2,0 0,-2z M52,38l2,0 0,2 -2,0 0,-2z M54,38l2,0 0,2 -2,0 0,-2z M68,38l2,0 0,2 -2,0 0,-2z M12,40l2,0 0,2 -2,0 0,-2z M18,40l2,0 0,2 -2,0 0,-2z M20,40l2,0 0,2 -2,0 0,-2z M24,40l2,0 0,2 -2,0 0,-2z M30,40l2,0 0,2 -2,0 0,-2z M34,40l2,0 0,2 -2,0 0,-2z M44,40l2,0 0,2 -2,0 0,-2z M50,40l2,0 0,2 -2,0 0,-2z M52,40l2,0 0,2 -2,0 0,-2z M58,40l2,0 0,2 -2,0 0,-2z M60,40l2,0 0,2 -2,0 0,-2z M64,40l2,0 0,2 -2,0 0,-2z M66,40l2,0 0,2 -2,0 0,-2z M68,40l2,0 0,2 -2,0 0,-2z M70,40l2,0 0,2 -2,0 0,-2z M12,42l2,0 0,2 -2,0 0,-2z M14,42l2,0 0,2 -2,0 0,-2z M16,42l2,0 0,2 -2,0 0,-2z M26,42l2,0 0,2 -2,0 0,-2z M28,42l2,0 0,2 -2,0 0,-2z M32,42l2,0 0,2 -2,0 0,-2z M34,42l2,0 0,2 -2,0 0,-2z M38,42l2,0 0,2 -2,0 0,-2z M44,42l2,0 0,2 -2,0 0,-2z M48,42l2,0 0,2 -2,0 0,-2z M54,42l2,0 0,2 -2,0 0,-2z M58,42l2,0 0,2 -2,0 0,-2z M60,42l2,0 0,2 -2,0 0,-2z M62,42l2,0 0,2 -2,0 0,-2z M64,42l2,0 0,2 -2,0 0,-2z M66,42l2,0 0,2 -2,0 0,-2z M68,42l2,0 0,2 -2,0 0,-2z M70,42l2,0 0,2 -2,0 0,-2z M72,42l2,0 0,2 -2,0 0,-2z M12,44l2,0 0,2 -2,0 0,-2z M20,44l2,0 0,2 -2,0 0,-2z M24,44l2,0 0,2 -2,0 0,-2z M30,44l2,0 0,2 -2,0 0,-2z M32,44l2,0 0,2 -2,0 0,-2z M34,44l2,0 0,2 -2,0 0,-2z M38,44l2,0 0,2 -2,0 0,-2z M40,44l2,0 0,2 -2,0 0,-2z M50,44l2,0 0,2 -2,0 0,-2z M62,44l2,0 0,2 -2,0 0,-2z M66,44l2,0 0,2 -2,0 0,-2z M70,44l2,0 0,2 -2,0 0,-2z M8,46l2,0 0,2 -2,0 0,-2z M10,46l2,0 0,2 -2,0 0,-2z M16,46l2,0 0,2 -2,0 0,-2z M24,46l2,0 0,2 -2,0 0,-2z M26,46l2,0 0,2 -2,0 0,-2z M28,46l2,0 0,2 -2,0 0,-2z M32,46l2,0 0,2 -2,0 0,-2z M42,46l2,0 0,2 -2,0 0,-2z M46,46l2,0 0,2 -2,0 0,-2z M54,46l2,0 0,2 -2,0 0,-2z M58,46l2,0 0,2 -2,0 0,-2z M60,46l2,0 0,2 -2,0 0,-2z M62,46l2,0 0,2 -2,0 0,-2z M66,46l2,0 0,2 -2,0 0,-2z M70,46l2,0 0,2 -2,0 0,-2z M72,46l2,0 0,2 -2,0 0,-2z M8,48l2,0 0,2 -2,0 0,-2z M10,48l2,0 0,2 -2,0 0,-2z M18,48l2,0 0,2 -2,0 0,-2z M20,48l2,0 0,2 -2,0 0,-2z M22,48l2,0 0,2 -2,0 0,-2z M24,48l2,0 0,2 -2,0 0,-2z M28,48l2,0 0,2 -2,0 0,-2z M30,48l2,0 0,2 -2,0 0,-2z M32,48l2,0 0,2 -2,0 0,-2z M36,48l2,0 0,2 -2,0 0,-2z M38,48l2,0 0,2 -2,0 0,-2z M40,48l2,0 0,2 -2,0 0,-2z M42,48l2,0 0,2 -2,0 0,-2z M44,48l2,0 0,2 -2,0 0,-2z M50,48l2,0 0,2 -2,0 0,-2z M54,48l2,0 0,2 -2,0 0,-2z M56,48l2,0 0,2 -2,0 0,-2z M62,48l2,0 0,2 -2,0 0,-2z M68,48l2,0 0,2 -2,0 0,-2z M70,48l2,0 0,2 -2,0 0,-2z M8,50l2,0 0,2 -2,0 0,-2z M10,50l2,0 0,2 -2,0 0,-2z M12,50l2,0 0,2 -2,0 0,-2z M24,50l2,0 0,2 -2,0 0,-2z M32,50l2,0 0,2 -2,0 0,-2z M34,50l2,0 0,2 -2,0 0,-2z M40,50l2,0 0,2 -2,0 0,-2z M44,50l2,0 0,2 -2,0 0,-2z M46,50l2,0 0,2 -2,0 0,-2z M48,50l2,0 0,2 -2,0 0,-2z M50,50l2,0 0,2 -2,0 0,-2z M52,50l2,0 0,2 -2,0 0,-2z M54,50l2,0 0,2 -2,0 0,-2z M58,50l2,0 0,2 -2,0 0,-2z M60,50l2,0 0,2 -2,0 0,-2z M66,50l2,0 0,2 -2,0 0,-2z M72,50l2,0 0,2 -2,0 0,-2z M14,52l2,0 0,2 -2,0 0,-2z M18,52l2,0 0,2 -2,0 0,-2z M20,52l2,0 0,2 -2,0 0,-2z M26,52l2,0 0,2 -2,0 0,-2z M30,52l2,0 0,2 -2,0 0,-2z M32,52l2,0 0,2 -2,0 0,-2z M34,52l2,0 0,2 -2,0 0,-2z M36,52l2,0 0,2 -2,0 0,-2z M42,52l2,0 0,2 -2,0 0,-2z M50,52l2,0 0,2 -2,0 0,-2z M54,52l2,0 0,2 -2,0 0,-2z M56,52l2,0 0,2 -2,0 0,-2z M58,52l2,0 0,2 -2,0 0,-2z M60,52l2,0 0,2 -2,0 0,-2z M62,52l2,0 0,2 -2,0 0,-2z M68,52l2,0 0,2 -2,0 0,-2z M70,52l2,0 0,2 -2,0 0,-2z M72,52l2,0 0,2 -2,0 0,-2z M10,54l2,0 0,2 -2,0 0,-2z M12,54l2,0 0,2 -2,0 0,-2z M14,54l2,0 0,2 -2,0 0,-2z M24,54l2,0 0,2 -2,0 0,-2z M26,54l2,0 0,2 -2,0 0,-2z M28,54l2,0 0,2 -2,0 0,-2z M34,54l2,0 0,2 -2,0 0,-2z M36,54l2,0 0,2 -2,0 0,-2z M44,54l2,0 0,2 -2,0 0,-2z M46,54l2,0 0,2 -2,0 0,-2z M56,54l2,0 0,2 -2,0 0,-2z M58,54l2,0 0,2 -2,0 0,-2z M62,54l2,0 0,2 -2,0 0,-2z M66,54l2,0 0,2 -2,0 0,-2z M70,54l2,0 0,2 -2,0 0,-2z M8,56l2,0 0,2 -2,0 0,-2z M14,56l2,0 0,2 -2,0 0,-2z M16,56l2,0 0,2 -2,0 0,-2z M18,56l2,0 0,2 -2,0 0,-2z M20,56l2,0 0,2 -2,0 0,-2z M32,56l2,0 0,2 -2,0 0,-2z M34,56l2,0 0,2 -2,0 0,-2z M36,56l2,0 0,2 -2,0 0,-2z M38,56l2,0 0,2 -2,0 0,-2z M40,56l2,0 0,2 -2,0 0,-2z M42,56l2,0 0,2 -2,0 0,-2z M46,56l2,0 0,2 -2,0 0,-2z M54,56l2,0 0,2 -2,0 0,-2z M56,56l2,0 0,2 -2,0 0,-2z M58,56l2,0 0,2 -2,0 0,-2z M60,56l2,0 0,2 -2,0 0,-2z M62,56l2,0 0,2 -2,0 0,-2z M64,56l2,0 0,2 -2,0 0,-2z M66,56l2,0 0,2 -2,0 0,-2z M70,56l2,0 0,2 -2,0 0,-2z M24,58l2,0 0,2 -2,0 0,-2z M26,58l2,0 0,2 -2,0 0,-2z M30,58l2,0 0,2 -2,0 0,-2z M32,58l2,0 0,2 -2,0 0,-2z M36,58l2,0 0,2 -2,0 0,-2z M38,58l2,0 0,2 -2,0 0,-2z M40,58l2,0 0,2 -2,0 0,-2z M46,58l2,0 0,2 -2,0 0,-2z M50,58l2,0 0,2 -2,0 0,-2z M54,58l2,0 0,2 -2,0 0,-2z M56,58l2,0 0,2 -2,0 0,-2z M64,58l2,0 0,2 -2,0 0,-2z M66,58l2,0 0,2 -2,0 0,-2z M70,58l2,0 0,2 -2,0 0,-2z M8,60l2,0 0,2 -2,0 0,-2z M10,60l2,0 0,2 -2,0 0,-2z M12,60l2,0 0,2 -2,0 0,-2z M14,60l2,0 0,2 -2,0 0,-2z M16,60l2,0 0,2 -2,0 0,-2z M18,60l2,0 0,2 -2,0 0,-2z M20,60l2,0 0,2 -2,0 0,-2z M26,60l2,0 0,2 -2,0 0,-2z M28,60l2,0 0,2 -2,0 0,-2z M30,60l2,0 0,2 -2,0 0,-2z M34,60l2,0 0,2 -2,0 0,-2z M36,60l2,0 0,2 -2,0 0,-2z M44,60l2,0 0,2 -2,0 0,-2z M46,60l2,0 0,2 -2,0 0,-2z M48,60l2,0 0,2 -2,0 0,-2z M50,60l2,0 0,2 -2,0 0,-2z M54,60l2,0 0,2 -2,0 0,-2z M56,60l2,0 0,2 -2,0 0,-2z M60,60l2,0 0,2 -2,0 0,-2z M64,60l2,0 0,2 -2,0 0,-2z M8,62l2,0 0,2 -2,0 0,-2z M20,62l2,0 0,2 -2,0 0,-2z M26,62l2,0 0,2 -2,0 0,-2z M30,62l2,0 0,2 -2,0 0,-2z M36,62l2,0 0,2 -2,0 0,-2z M44,62l2,0 0,2 -2,0 0,-2z M46,62l2,0 0,2 -2,0 0,-2z M48,62l2,0 0,2 -2,0 0,-2z M50,62l2,0 0,2 -2,0 0,-2z M54,62l2,0 0,2 -2,0 0,-2z M56,62l2,0 0,2 -2,0 0,-2z M64,62l2,0 0,2 -2,0 0,-2z M66,62l2,0 0,2 -2,0 0,-2z M68,62l2,0 0,2 -2,0 0,-2z M8,64l2,0 0,2 -2,0 0,-2z M12,64l2,0 0,2 -2,0 0,-2z M14,64l2,0 0,2 -2,0 0,-2z M16,64l2,0 0,2 -2,0 0,-2z M20,64l2,0 0,2 -2,0 0,-2z M26,64l2,0 0,2 -2,0 0,-2z M28,64l2,0 0,2 -2,0 0,-2z M34,64l2,0 0,2 -2,0 0,-2z M40,64l2,0 0,2 -2,0 0,-2z M44,64l2,0 0,2 -2,0 0,-2z M46,64l2,0 0,2 -2,0 0,-2z M48,64l2,0 0,2 -2,0 0,-2z M50,64l2,0 0,2 -2,0 0,-2z M52,64l2,0 0,2 -2,0 0,-2z M54,64l2,0 0,2 -2,0 0,-2z M56,64l2,0 0,2 -2,0 0,-2z M58,64l2,0 0,2 -2,0 0,-2z M60,64l2,0 0,2 -2,0 0,-2z M62,64l2,0 0,2 -2,0 0,-2z M64,64l2,0 0,2 -2,0 0,-2z M66,64l2,0 0,2 -2,0 0,-2z M68,64l2,0 0,2 -2,0 0,-2z M70,64l2,0 0,2 -2,0 0,-2z M72,64l2,0 0,2 -2,0 0,-2z M8,66l2,0 0,2 -2,0 0,-2z M12,66l2,0 0,2 -2,0 0,-2z M14,66l2,0 0,2 -2,0 0,-2z M16,66l2,0 0,2 -2,0 0,-2z M20,66l2,0 0,2 -2,0 0,-2z M24,66l2,0 0,2 -2,0 0,-2z M28,66l2,0 0,2 -2,0 0,-2z M34,66l2,0 0,2 -2,0 0,-2z M36,66l2,0 0,2 -2,0 0,-2z M38,66l2,0 0,2 -2,0 0,-2z M52,66l2,0 0,2 -2,0 0,-2z M54,66l2,0 0,2 -2,0 0,-2z M56,66l2,0 0,2 -2,0 0,-2z M70,66l2,0 0,2 -2,0 0,-2z M8,68l2,0 0,2 -2,0 0,-2z M12,68l2,0 0,2 -2,0 0,-2z M14,68l2,0 0,2 -2,0 0,-2z M16,68l2,0 0,2 -2,0 0,-2z M20,68l2,0 0,2 -2,0 0,-2z M24,68l2,0 0,2 -2,0 0,-2z M26,68l2,0 0,2 -2,0 0,-2z M34,68l2,0 0,2 -2,0 0,-2z M38,68l2,0 0,2 -2,0 0,-2z M54,68l2,0 0,2 -2,0 0,-2z M60,68l2,0 0,2 -2,0 0,-2z M62,68l2,0 0,2 -2,0 0,-2z M66,68l2,0 0,2 -2,0 0,-2z M68,68l2,0 0,2 -2,0 0,-2z M70,68l2,0 0,2 -2,0 0,-2z M8,70l2,0 0,2 -2,0 0,-2z M20,70l2,0 0,2 -2,0 0,-2z M24,70l2,0 0,2 -2,0 0,-2z M26,70l2,0 0,2 -2,0 0,-2z M28,70l2,0 0,2 -2,0 0,-2z M36,70l2,0 0,2 -2,0 0,-2z M38,70l2,0 0,2 -2,0 0,-2z M42,70l2,0 0,2 -2,0 0,-2z M44,70l2,0 0,2 -2,0 0,-2z M48,70l2,0 0,2 -2,0 0,-2z M52,70l2,0 0,2 -2,0 0,-2z M54,70l2,0 0,2 -2,0 0,-2z M56,70l2,0 0,2 -2,0 0,-2z M58,70l2,0 0,2 -2,0 0,-2z M60,70l2,0 0,2 -2,0 0,-2z M62,70l2,0 0,2 -2,0 0,-2z M72,70l2,0 0,2 -2,0 0,-2z M8,72l2,0 0,2 -2,0 0,-2z M10,72l2,0 0,2 -2,0 0,-2z M12,72l2,0 0,2 -2,0 0,-2z M14,72l2,0 0,2 -2,0 0,-2z M16,72l2,0 0,2 -2,0 0,-2z M18,72l2,0 0,2 -2,0 0,-2z M20,72l2,0 0,2 -2,0 0,-2z M24,72l2,0 0,2 -2,0 0,-2z M26,72l2,0 0,2 -2,0 0,-2z M28,72l2,0 0,2 -2,0 0,-2z M32,72l2,0 0,2 -2,0 0,-2z M36,72l2,0 0,2 -2,0 0,-2z M42,72l2,0 0,2 -2,0 0,-2z M44,72l2,0 0,2 -2,0 0,-2z M50,72l2,0 0,2 -2,0 0,-2z M66,72l2,0 0,2 -2,0 0,-2z M68,72l2,0 0,2 -2,0 0,-2z " stroke="transparent" fill="black"/></svg>
+\ No newline at end of file