Get properly started on writing manual
This commit is contained in:
parent
d63fc4055a
commit
e7eea065bf
14 changed files with 1064 additions and 19 deletions
|
@ -1,12 +1,28 @@
|
||||||
import glob
|
import glob
|
||||||
import os
|
import os
|
||||||
|
from pathlib import PurePath
|
||||||
|
import sys
|
||||||
|
|
||||||
# https://tex.stackexchange.com/questions/101717/converting-markdown-to-latex-in-latex/246871#246871
|
# https://tex.stackexchange.com/questions/101717/converting-markdown-to-latex-in-latex/246871#246871
|
||||||
|
|
||||||
|
remove_testmodules = True
|
||||||
|
if len(sys.argv) >= 2:
|
||||||
|
remove_testmodules = False
|
||||||
|
|
||||||
outfilename = '/tmp/out.md'
|
outfilename = '/tmp/out.md'
|
||||||
with open(outfilename, 'w') as outfile:
|
with open(outfilename, 'w') as outfile:
|
||||||
for filepath in glob.iglob('../src/modules/*/doc/index.md'):
|
all_modules = sorted(glob.glob('../src/modules/*/doc/index.md'))
|
||||||
|
if remove_testmodules:
|
||||||
|
all_modules = [p for p in all_modules if 'testmodule_' not in p]
|
||||||
|
without_info = [p for p in all_modules if "info_" not in p]
|
||||||
|
only_info = [p for p in all_modules if "info_" in p]
|
||||||
|
for filepath in without_info:
|
||||||
with open(filepath) as infile:
|
with open(filepath) as infile:
|
||||||
outfile.write(infile.read())
|
outfile.write(infile.read())
|
||||||
outfile.write("\n\\newpage{}\n")
|
outfile.write("\n\\newpage{}\n")
|
||||||
os.system(f"pandoc --from=markdown --output=docs.pdf {outfilename} --highlight-style=espresso")
|
outfile.write("\n\\part{Appendix}\\newpage\n")
|
||||||
|
for filepath in only_info:
|
||||||
|
with open(filepath) as infile:
|
||||||
|
outfile.write(infile.read())
|
||||||
|
outfile.write("\n\\newpage{}\n")
|
||||||
|
os.system(f"pandoc --from=markdown --template=template.tex --output=docs.pdf prefix.yaml {outfilename} --highlight-style=espresso")
|
||||||
|
|
BIN
docs/images/puzzle_maze/description.png
Normal file
BIN
docs/images/puzzle_maze/description.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
BIN
docs/images/puzzle_maze/maze.png
Normal file
BIN
docs/images/puzzle_maze/maze.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
11
docs/prefix.yaml
Normal file
11
docs/prefix.yaml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
---
|
||||||
|
title: OBUS handleiding
|
||||||
|
author: Zeus WPI
|
||||||
|
papersize: a4
|
||||||
|
documentclass: scrartcl
|
||||||
|
geometry: "left=2cm,right=2cm,top=2cm,bottom=3cm"
|
||||||
|
fontsize: 14pt
|
||||||
|
---
|
||||||
|
|
||||||
|
\graphicspath{ {./images/} }
|
||||||
|
\newpage{}
|
552
docs/template.tex
Normal file
552
docs/template.tex
Normal file
|
@ -0,0 +1,552 @@
|
||||||
|
% Options for packages loaded elsewhere
|
||||||
|
\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref}
|
||||||
|
\PassOptionsToPackage{hyphens}{url}
|
||||||
|
$if(colorlinks)$
|
||||||
|
\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor}
|
||||||
|
$endif$
|
||||||
|
$if(dir)$
|
||||||
|
$if(latex-dir-rtl)$
|
||||||
|
\PassOptionsToPackage{RTLdocument}{bidi}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(CJKmainfont)$
|
||||||
|
\PassOptionsToPackage{space}{xeCJK}
|
||||||
|
$endif$
|
||||||
|
%
|
||||||
|
\documentclass[
|
||||||
|
$if(fontsize)$
|
||||||
|
$fontsize$,
|
||||||
|
$endif$
|
||||||
|
$if(lang)$
|
||||||
|
$babel-lang$,
|
||||||
|
$endif$
|
||||||
|
$if(papersize)$
|
||||||
|
$papersize$paper,
|
||||||
|
$endif$
|
||||||
|
$if(beamer)$
|
||||||
|
ignorenonframetext,
|
||||||
|
$if(handout)$
|
||||||
|
handout,
|
||||||
|
$endif$
|
||||||
|
$if(aspectratio)$
|
||||||
|
aspectratio=$aspectratio$,
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$for(classoption)$
|
||||||
|
$classoption$$sep$,
|
||||||
|
$endfor$
|
||||||
|
]{$documentclass$}
|
||||||
|
$if(beamer)$
|
||||||
|
$if(background-image)$
|
||||||
|
\usebackgroundtemplate{%
|
||||||
|
\includegraphics[width=\paperwidth]{$background-image$}%
|
||||||
|
}
|
||||||
|
$endif$
|
||||||
|
\usepackage{pgfpages}
|
||||||
|
|
||||||
|
\setbeamertemplate{caption}[numbered]
|
||||||
|
\setbeamertemplate{caption label separator}{: }
|
||||||
|
\setbeamercolor{caption name}{fg=normal text.fg}
|
||||||
|
\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$
|
||||||
|
$for(beameroption)$
|
||||||
|
\setbeameroption{$beameroption$}
|
||||||
|
$endfor$
|
||||||
|
% Prevent slide breaks in the middle of a paragraph
|
||||||
|
\widowpenalties 1 10000
|
||||||
|
\raggedbottom
|
||||||
|
$if(section-titles)$
|
||||||
|
\setbeamertemplate{part page}{
|
||||||
|
\centering
|
||||||
|
\begin{beamercolorbox}[sep=16pt,center]{part title}
|
||||||
|
\usebeamerfont{part title}\insertpart\par
|
||||||
|
\end{beamercolorbox}
|
||||||
|
}
|
||||||
|
\setbeamertemplate{section page}{
|
||||||
|
\centering
|
||||||
|
\begin{beamercolorbox}[sep=12pt,center]{part title}
|
||||||
|
\usebeamerfont{section title}\insertsection\par
|
||||||
|
\end{beamercolorbox}
|
||||||
|
}
|
||||||
|
\setbeamertemplate{subsection page}{
|
||||||
|
\centering
|
||||||
|
\begin{beamercolorbox}[sep=8pt,center]{part title}
|
||||||
|
\usebeamerfont{subsection title}\insertsubsection\par
|
||||||
|
\end{beamercolorbox}
|
||||||
|
}
|
||||||
|
\AtBeginPart{
|
||||||
|
\frame{\partpage}
|
||||||
|
}
|
||||||
|
\AtBeginSection{
|
||||||
|
\ifbibliography
|
||||||
|
\else
|
||||||
|
\frame{\sectionpage}
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\AtBeginSubsection{
|
||||||
|
\frame{\subsectionpage}
|
||||||
|
}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(beamerarticle)$
|
||||||
|
\usepackage{beamerarticle} % needs to be loaded first
|
||||||
|
$endif$
|
||||||
|
\usepackage{amsmath,amssymb}
|
||||||
|
$if(fontfamily)$
|
||||||
|
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
|
||||||
|
$else$
|
||||||
|
\usepackage{lmodern}
|
||||||
|
$endif$
|
||||||
|
$if(linestretch)$
|
||||||
|
\usepackage{setspace}
|
||||||
|
$endif$
|
||||||
|
\usepackage{iftex}
|
||||||
|
\ifPDFTeX
|
||||||
|
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage{textcomp} % provide euro and other symbols
|
||||||
|
\else % if luatex or xetex
|
||||||
|
$if(mathspec)$
|
||||||
|
\ifXeTeX
|
||||||
|
\usepackage{mathspec}
|
||||||
|
\else
|
||||||
|
\usepackage{unicode-math}
|
||||||
|
\fi
|
||||||
|
$else$
|
||||||
|
\usepackage{unicode-math}
|
||||||
|
$endif$
|
||||||
|
\defaultfontfeatures{Scale=MatchLowercase}
|
||||||
|
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
|
||||||
|
$if(mainfont)$
|
||||||
|
\setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
|
||||||
|
$endif$
|
||||||
|
$if(sansfont)$
|
||||||
|
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
|
||||||
|
$endif$
|
||||||
|
$if(monofont)$
|
||||||
|
\setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$}
|
||||||
|
$endif$
|
||||||
|
$for(fontfamilies)$
|
||||||
|
\newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$}
|
||||||
|
$endfor$
|
||||||
|
$if(mathfont)$
|
||||||
|
$if(mathspec)$
|
||||||
|
\ifXeTeX
|
||||||
|
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||||
|
\else
|
||||||
|
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||||
|
\fi
|
||||||
|
$else$
|
||||||
|
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(CJKmainfont)$
|
||||||
|
\ifXeTeX
|
||||||
|
\usepackage{xeCJK}
|
||||||
|
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
|
||||||
|
\fi
|
||||||
|
$endif$
|
||||||
|
$if(luatexjapresetoptions)$
|
||||||
|
\ifLuaTeX
|
||||||
|
\usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
|
||||||
|
\fi
|
||||||
|
$endif$
|
||||||
|
$if(CJKmainfont)$
|
||||||
|
\ifLuaTeX
|
||||||
|
\usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
|
||||||
|
\setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
|
||||||
|
\fi
|
||||||
|
$endif$
|
||||||
|
\fi
|
||||||
|
$if(zero-width-non-joiner)$
|
||||||
|
%% Support for zero-width non-joiner characters.
|
||||||
|
\makeatletter
|
||||||
|
\def\zerowidthnonjoiner{%
|
||||||
|
% Prevent ligatures and adjust kerning, but still support hyphenating.
|
||||||
|
\texorpdfstring{%
|
||||||
|
\textormath{\nobreak\discretionary{-}{}{\kern.03em}%
|
||||||
|
\ifvmode\else\nobreak\hskip\z@skip\fi}{}%
|
||||||
|
}{}%
|
||||||
|
}
|
||||||
|
\makeatother
|
||||||
|
\ifPDFTeX
|
||||||
|
\DeclareUnicodeCharacter{200C}{\zerowidthnonjoiner}
|
||||||
|
\else
|
||||||
|
\catcode`^^^^200c=\active
|
||||||
|
\protected\def ^^^^200c{\zerowidthnonjoiner}
|
||||||
|
\fi
|
||||||
|
%% End of ZWNJ support
|
||||||
|
$endif$
|
||||||
|
$if(beamer)$
|
||||||
|
$if(theme)$
|
||||||
|
\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$}
|
||||||
|
$endif$
|
||||||
|
$if(colortheme)$
|
||||||
|
\usecolortheme{$colortheme$}
|
||||||
|
$endif$
|
||||||
|
$if(fonttheme)$
|
||||||
|
\usefonttheme{$fonttheme$}
|
||||||
|
$endif$
|
||||||
|
$if(mainfont)$
|
||||||
|
\usefonttheme{serif} % use mainfont rather than sansfont for slide text
|
||||||
|
$endif$
|
||||||
|
$if(innertheme)$
|
||||||
|
\useinnertheme{$innertheme$}
|
||||||
|
$endif$
|
||||||
|
$if(outertheme)$
|
||||||
|
\useoutertheme{$outertheme$}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
% Use upquote if available, for straight quotes in verbatim environments
|
||||||
|
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
|
||||||
|
\IfFileExists{microtype.sty}{% use microtype if available
|
||||||
|
\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
|
||||||
|
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
|
||||||
|
}{}
|
||||||
|
$if(indent)$
|
||||||
|
$else$
|
||||||
|
\makeatletter
|
||||||
|
\@ifundefined{KOMAClassName}{% if non-KOMA class
|
||||||
|
\IfFileExists{parskip.sty}{%
|
||||||
|
\usepackage{parskip}
|
||||||
|
}{% else
|
||||||
|
\setlength{\parindent}{0pt}
|
||||||
|
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
|
||||||
|
}{% if KOMA class
|
||||||
|
\KOMAoptions{parskip=half}}
|
||||||
|
\makeatother
|
||||||
|
$endif$
|
||||||
|
$if(verbatim-in-note)$
|
||||||
|
\usepackage{fancyvrb}
|
||||||
|
$endif$
|
||||||
|
\usepackage{xcolor}
|
||||||
|
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
|
||||||
|
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
|
||||||
|
\hypersetup{
|
||||||
|
$if(title-meta)$
|
||||||
|
pdftitle={$title-meta$},
|
||||||
|
$endif$
|
||||||
|
$if(author-meta)$
|
||||||
|
pdfauthor={$author-meta$},
|
||||||
|
$endif$
|
||||||
|
$if(lang)$
|
||||||
|
pdflang={$lang$},
|
||||||
|
$endif$
|
||||||
|
$if(subject)$
|
||||||
|
pdfsubject={$subject$},
|
||||||
|
$endif$
|
||||||
|
$if(keywords)$
|
||||||
|
pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
|
||||||
|
$endif$
|
||||||
|
$if(colorlinks)$
|
||||||
|
colorlinks=true,
|
||||||
|
linkcolor={$if(linkcolor)$$linkcolor$$else$Maroon$endif$},
|
||||||
|
filecolor={$if(filecolor)$$filecolor$$else$Maroon$endif$},
|
||||||
|
citecolor={$if(citecolor)$$citecolor$$else$Blue$endif$},
|
||||||
|
urlcolor={$if(urlcolor)$$urlcolor$$else$Blue$endif$},
|
||||||
|
$else$
|
||||||
|
hidelinks,
|
||||||
|
$endif$
|
||||||
|
pdfcreator={LaTeX via pandoc}}
|
||||||
|
\urlstyle{same} % disable monospaced font for URLs
|
||||||
|
$if(verbatim-in-note)$
|
||||||
|
\VerbatimFootnotes % allow verbatim text in footnotes
|
||||||
|
$endif$
|
||||||
|
$if(geometry)$
|
||||||
|
$if(beamer)$
|
||||||
|
\geometry{$for(geometry)$$geometry$$sep$,$endfor$}
|
||||||
|
$else$
|
||||||
|
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(beamer)$
|
||||||
|
\newif\ifbibliography
|
||||||
|
$endif$
|
||||||
|
$if(listings)$
|
||||||
|
\usepackage{listings}
|
||||||
|
\newcommand{\passthrough}[1]{#1}
|
||||||
|
\lstset{defaultdialect=[5.3]Lua}
|
||||||
|
\lstset{defaultdialect=[x86masm]Assembler}
|
||||||
|
$endif$
|
||||||
|
$if(lhs)$
|
||||||
|
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
|
||||||
|
$endif$
|
||||||
|
$if(highlighting-macros)$
|
||||||
|
$highlighting-macros$
|
||||||
|
$endif$
|
||||||
|
$if(tables)$
|
||||||
|
\usepackage{longtable,booktabs,array}
|
||||||
|
$if(multirow)$
|
||||||
|
\usepackage{multirow}
|
||||||
|
$endif$
|
||||||
|
\usepackage{calc} % for calculating minipage widths
|
||||||
|
$if(beamer)$
|
||||||
|
\usepackage{caption}
|
||||||
|
% Make caption package work with longtable
|
||||||
|
\makeatletter
|
||||||
|
\def\fnum@table{\tablename~\thetable}
|
||||||
|
\makeatother
|
||||||
|
$else$
|
||||||
|
% Correct order of tables after \paragraph or \subparagraph
|
||||||
|
\usepackage{etoolbox}
|
||||||
|
\makeatletter
|
||||||
|
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
|
||||||
|
\makeatother
|
||||||
|
% Allow footnotes in longtable head/foot
|
||||||
|
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
|
||||||
|
\makesavenoteenv{longtable}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\makeatletter
|
||||||
|
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
|
||||||
|
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
|
||||||
|
\makeatother
|
||||||
|
% Scale images if necessary, so that they will not overflow the page
|
||||||
|
% margins by default, and it is still possible to overwrite the defaults
|
||||||
|
% using explicit options in \includegraphics[width, height, ...]{}
|
||||||
|
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
|
||||||
|
% Set default figure placement to htbp
|
||||||
|
\makeatletter
|
||||||
|
\def\fps@figure{htbp}
|
||||||
|
\makeatother
|
||||||
|
$if(links-as-notes)$
|
||||||
|
% Make links footnotes instead of hotlinks:
|
||||||
|
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
|
||||||
|
$endif$
|
||||||
|
$if(strikeout)$
|
||||||
|
$-- also used for underline
|
||||||
|
\usepackage[normalem]{ulem}
|
||||||
|
% Avoid problems with \sout in headers with hyperref
|
||||||
|
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
|
||||||
|
$endif$
|
||||||
|
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
||||||
|
\providecommand{\tightlist}{%
|
||||||
|
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||||
|
$if(numbersections)$
|
||||||
|
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
|
||||||
|
$else$
|
||||||
|
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
|
||||||
|
$endif$
|
||||||
|
$if(beamer)$
|
||||||
|
$else$
|
||||||
|
$if(block-headings)$
|
||||||
|
% Make \paragraph and \subparagraph free-standing
|
||||||
|
\ifx\paragraph\undefined\else
|
||||||
|
\let\oldparagraph\paragraph
|
||||||
|
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
|
||||||
|
\fi
|
||||||
|
\ifx\subparagraph\undefined\else
|
||||||
|
\let\oldsubparagraph\subparagraph
|
||||||
|
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
|
||||||
|
\fi
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(pagestyle)$
|
||||||
|
\pagestyle{$pagestyle$}
|
||||||
|
$endif$
|
||||||
|
$if(csl-refs)$
|
||||||
|
\newlength{\cslhangindent}
|
||||||
|
\setlength{\cslhangindent}{1.5em}
|
||||||
|
\newlength{\csllabelwidth}
|
||||||
|
\setlength{\csllabelwidth}{3em}
|
||||||
|
\newlength{\cslentryspacingunit} % times entry-spacing
|
||||||
|
\setlength{\cslentryspacingunit}{\parskip}
|
||||||
|
\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing
|
||||||
|
{% don't indent paragraphs
|
||||||
|
\setlength{\parindent}{0pt}
|
||||||
|
% turn on hanging indent if param 1 is 1
|
||||||
|
\ifodd #1
|
||||||
|
\let\oldpar\par
|
||||||
|
\def\par{\hangindent=\cslhangindent\oldpar}
|
||||||
|
\fi
|
||||||
|
% set entry spacing
|
||||||
|
\setlength{\parskip}{#2\cslentryspacingunit}
|
||||||
|
}%
|
||||||
|
{}
|
||||||
|
\usepackage{calc}
|
||||||
|
\newcommand{\CSLBlock}[1]{#1\hfill\break}
|
||||||
|
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}}
|
||||||
|
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break}
|
||||||
|
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
|
||||||
|
$endif$
|
||||||
|
$for(header-includes)$
|
||||||
|
$header-includes$
|
||||||
|
$endfor$
|
||||||
|
$if(lang)$
|
||||||
|
\ifXeTeX
|
||||||
|
% Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic)
|
||||||
|
\usepackage{polyglossia}
|
||||||
|
\setmainlanguage[$for(polyglossia-lang.options)$$polyglossia-lang.options$$sep$,$endfor$]{$polyglossia-lang.name$}
|
||||||
|
$for(polyglossia-otherlangs)$
|
||||||
|
\setotherlanguage[$for(polyglossia-otherlangs.options)$$polyglossia-otherlangs.options$$sep$,$endfor$]{$polyglossia-otherlangs.name$}
|
||||||
|
$endfor$
|
||||||
|
\else
|
||||||
|
\usepackage[$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
|
||||||
|
% get rid of language-specific shorthands (see #6817):
|
||||||
|
\let\LanguageShortHands\languageshorthands
|
||||||
|
\def\languageshorthands#1{}
|
||||||
|
$if(babel-newcommands)$
|
||||||
|
$babel-newcommands$
|
||||||
|
$endif$
|
||||||
|
\fi
|
||||||
|
$endif$
|
||||||
|
\ifLuaTeX
|
||||||
|
\usepackage{selnolig} % disable illegal ligatures
|
||||||
|
\fi
|
||||||
|
$if(dir)$
|
||||||
|
\ifXeTeX
|
||||||
|
% Load bidi as late as possible as it modifies e.g. graphicx
|
||||||
|
\usepackage{bidi}
|
||||||
|
\fi
|
||||||
|
\ifPDFTeX
|
||||||
|
\TeXXeTstate=1
|
||||||
|
\newcommand{\RL}[1]{\beginR #1\endR}
|
||||||
|
\newcommand{\LR}[1]{\beginL #1\endL}
|
||||||
|
\newenvironment{RTL}{\beginR}{\endR}
|
||||||
|
\newenvironment{LTR}{\beginL}{\endL}
|
||||||
|
\fi
|
||||||
|
$endif$
|
||||||
|
$if(natbib)$
|
||||||
|
\usepackage[$natbiboptions$]{natbib}
|
||||||
|
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
|
||||||
|
$endif$
|
||||||
|
$if(biblatex)$
|
||||||
|
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
|
||||||
|
$for(bibliography)$
|
||||||
|
\addbibresource{$bibliography$}
|
||||||
|
$endfor$
|
||||||
|
$endif$
|
||||||
|
$if(nocite-ids)$
|
||||||
|
\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
|
||||||
|
$endif$
|
||||||
|
$if(csquotes)$
|
||||||
|
\usepackage{csquotes}
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
$if(title)$
|
||||||
|
\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
|
||||||
|
$endif$
|
||||||
|
$if(subtitle)$
|
||||||
|
$if(beamer)$
|
||||||
|
$else$
|
||||||
|
\usepackage{etoolbox}
|
||||||
|
\makeatletter
|
||||||
|
\providecommand{\subtitle}[1]{% add subtitle to \maketitle
|
||||||
|
\apptocmd{\@title}{\par {\large #1 \par}}{}{}
|
||||||
|
}
|
||||||
|
\makeatother
|
||||||
|
$endif$
|
||||||
|
\subtitle{$subtitle$}
|
||||||
|
$endif$
|
||||||
|
\author{$for(author)$$author$$sep$ \and $endfor$}
|
||||||
|
\date{$date$}
|
||||||
|
$if(beamer)$
|
||||||
|
$if(institute)$
|
||||||
|
\institute{$for(institute)$$institute$$sep$ \and $endfor$}
|
||||||
|
$endif$
|
||||||
|
$if(titlegraphic)$
|
||||||
|
\titlegraphic{\includegraphics{$titlegraphic$}}
|
||||||
|
$endif$
|
||||||
|
$if(logo)$
|
||||||
|
\logo{\includegraphics{$logo$}}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
|
||||||
|
\usepackage{wrapfig}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
$if(has-frontmatter)$
|
||||||
|
\frontmatter
|
||||||
|
$endif$
|
||||||
|
$if(title)$
|
||||||
|
$if(beamer)$
|
||||||
|
\frame{\titlepage}
|
||||||
|
$else$
|
||||||
|
\maketitle
|
||||||
|
$endif$
|
||||||
|
$if(abstract)$
|
||||||
|
\begin{abstract}
|
||||||
|
$abstract$
|
||||||
|
\end{abstract}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
$for(include-before)$
|
||||||
|
$include-before$
|
||||||
|
|
||||||
|
$endfor$
|
||||||
|
$if(toc)$
|
||||||
|
$if(toc-title)$
|
||||||
|
\renewcommand*\contentsname{$toc-title$}
|
||||||
|
$endif$
|
||||||
|
$if(beamer)$
|
||||||
|
\begin{frame}[allowframebreaks]
|
||||||
|
$if(toc-title)$
|
||||||
|
\frametitle{$toc-title$}
|
||||||
|
$endif$
|
||||||
|
\tableofcontents[hideallsubsections]
|
||||||
|
\end{frame}
|
||||||
|
$else$
|
||||||
|
{
|
||||||
|
$if(colorlinks)$
|
||||||
|
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$}
|
||||||
|
$endif$
|
||||||
|
\setcounter{tocdepth}{$toc-depth$}
|
||||||
|
\tableofcontents
|
||||||
|
}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(lof)$
|
||||||
|
\listoffigures
|
||||||
|
$endif$
|
||||||
|
$if(lot)$
|
||||||
|
\listoftables
|
||||||
|
$endif$
|
||||||
|
$if(linestretch)$
|
||||||
|
\setstretch{$linestretch$}
|
||||||
|
$endif$
|
||||||
|
$if(has-frontmatter)$
|
||||||
|
\mainmatter
|
||||||
|
$endif$
|
||||||
|
$body$
|
||||||
|
|
||||||
|
$if(has-frontmatter)$
|
||||||
|
\backmatter
|
||||||
|
$endif$
|
||||||
|
$if(natbib)$
|
||||||
|
$if(bibliography)$
|
||||||
|
$if(biblio-title)$
|
||||||
|
$if(has-chapters)$
|
||||||
|
\renewcommand\bibname{$biblio-title$}
|
||||||
|
$else$
|
||||||
|
\renewcommand\refname{$biblio-title$}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(beamer)$
|
||||||
|
\begin{frame}[allowframebreaks]{$biblio-title$}
|
||||||
|
\bibliographytrue
|
||||||
|
$endif$
|
||||||
|
\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
|
||||||
|
$if(beamer)$
|
||||||
|
\end{frame}
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(biblatex)$
|
||||||
|
$if(beamer)$
|
||||||
|
\begin{frame}[allowframebreaks]{$biblio-title$}
|
||||||
|
\bibliographytrue
|
||||||
|
\printbibliography[heading=none]
|
||||||
|
\end{frame}
|
||||||
|
$else$
|
||||||
|
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
$endif$
|
||||||
|
$for(include-after)$
|
||||||
|
$include-after$
|
||||||
|
|
||||||
|
$endfor$
|
||||||
|
\end{document}
|
|
@ -183,6 +183,12 @@ pre {
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<tr id="puzzle-0">
|
||||||
|
<td class="mod-id">0</td>
|
||||||
|
<td class="issuee">Zeus WPI</td>
|
||||||
|
<td class="mod-nm">Doolhof</td>
|
||||||
|
<td class="remark"></td>
|
||||||
|
</tr>
|
||||||
<tr id="puzzle-255">
|
<tr id="puzzle-255">
|
||||||
<td class="mod-id">255</td>
|
<td class="mod-id">255</td>
|
||||||
<td class="issuee"><span class="keyword">private use</span></td>
|
<td class="issuee"><span class="keyword">private use</span></td>
|
||||||
|
|
|
@ -1,8 +1,4 @@
|
||||||
## Serial number
|
# Appendix A: Serienummer
|
||||||
|
|
||||||
This module provides a serial number for other modules to use. It consists of
|
Het serienummer bestaat uit 7 willekeurige letters/cijfers, en bevat ten minste
|
||||||
7 random letters/digits that are shown on a LCD display. The serial number has
|
één cijfer en één letter. Het wordt op een LCD-scherm getoond.
|
||||||
at least one digit and one letter.
|
|
||||||
|
|
||||||
### Credits
|
|
||||||
Module developed by redfast00.
|
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
## Testmodule needy buttons
|
# Testmodule needy buttons
|
||||||
|
|
||||||
If the module starts making a sound, press the button.
|
Als de module geluid maakt, druk op de knop.
|
||||||
|
|
||||||
### Credits
|
|
||||||
Module developed by redfast00.
|
|
||||||
|
|
1
src/modules/puzzle_maze/3d/.gitignore
vendored
Normal file
1
src/modules/puzzle_maze/3d/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*.stl
|
117
src/modules/puzzle_maze/3d/case.scad
Normal file
117
src/modules/puzzle_maze/3d/case.scad
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
led_display_size=32;
|
||||||
|
led_display_total_size=50;
|
||||||
|
border_clearance = 10;
|
||||||
|
front_panel_thickness=2;
|
||||||
|
button_size=12;
|
||||||
|
button_clearance=1.5;
|
||||||
|
cut=50;
|
||||||
|
button_under_size=button_size+3;
|
||||||
|
button_under_thickness=2;
|
||||||
|
container_wall_thickness=1;
|
||||||
|
$fn=50;
|
||||||
|
|
||||||
|
front_panel_height=border_clearance + led_display_size + 3 * button_under_size + 4 + border_clearance/4;
|
||||||
|
front_panel_width=border_clearance + led_display_size + border_clearance;
|
||||||
|
|
||||||
|
module ccube(size = [1,1,1], center = false)
|
||||||
|
{
|
||||||
|
sz = (len(size) == 3)?size:[size,size,size];
|
||||||
|
if (len(center) == 1)
|
||||||
|
cube(size, center);
|
||||||
|
else
|
||||||
|
translate([center[0]?-sz[0]/2:0,center[1]?-sz[1]/2:0,center[2]?-sz[2]/2:0])
|
||||||
|
cube(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
module button() {
|
||||||
|
color([1, 0.5, 0]) difference() {
|
||||||
|
union() {
|
||||||
|
translate([0, 0, -front_panel_thickness]) cylinder(d=button_size, h=front_panel_thickness+button_under_thickness, $fn=3);
|
||||||
|
translate([0, 0, -front_panel_thickness]) cylinder(d=button_under_size, h=button_under_thickness, $fn=3);
|
||||||
|
}
|
||||||
|
translate([0, 0, -front_panel_thickness -0.2]) cylinder(d=3.55, h=1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module front_panel() {
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
ccube([front_panel_height, front_panel_width, front_panel_thickness], center=[0, 1, 0]);
|
||||||
|
translate([0, 0, -4]) {
|
||||||
|
translate([container_wall_thickness, -front_panel_width/2 + container_wall_thickness]) cube(5);
|
||||||
|
translate([container_wall_thickness, front_panel_width/2 - container_wall_thickness - 5]) cube(5);
|
||||||
|
translate([front_panel_height-container_wall_thickness-5, -front_panel_width/2 + container_wall_thickness]) cube(5);
|
||||||
|
translate([front_panel_height-container_wall_thickness-5, front_panel_width/2 - container_wall_thickness - 5]) cube(5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([0, 0, -1]) union() {
|
||||||
|
translate([border_clearance, 0, 0]) ccube([led_display_size, led_display_size, cut], center=[0, 1, 0]);
|
||||||
|
%translate([border_clearance, 0, -12.6+1+front_panel_thickness]) ccube([50, led_display_size, 12.6], center=[0, 1, 0]);
|
||||||
|
up_button_trans=border_clearance+led_display_total_size+button_under_size/2+1;
|
||||||
|
// Up button
|
||||||
|
translate([up_button_trans, 0]) rotate([0, 0, 180]) {
|
||||||
|
translate([0, 0, 1]) %button();
|
||||||
|
cylinder(d=button_size+button_clearance, h=cut ,$fn=3);
|
||||||
|
}
|
||||||
|
// Down button
|
||||||
|
translate([up_button_trans+(button_size+button_clearance), 0]) rotate([0, 0, 0]) {
|
||||||
|
translate([0, 0, 1]) %button();
|
||||||
|
cylinder(d=button_size+button_clearance, h=cut ,$fn=3);
|
||||||
|
}
|
||||||
|
// Right button
|
||||||
|
translate([up_button_trans+(button_size+button_clearance)/2, button_size]) rotate([0, 0, 90]) {
|
||||||
|
translate([0, 0, 1]) %button();
|
||||||
|
cylinder(d=button_size+button_clearance, h=cut ,$fn=3);
|
||||||
|
}
|
||||||
|
// Left button
|
||||||
|
translate([up_button_trans+(button_size+button_clearance)/2, -button_size]) rotate([0, 0, -90]) {
|
||||||
|
translate([0, 0, 1]) %button();
|
||||||
|
cylinder(d=button_size+button_clearance, h=cut ,$fn=3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
button_height=5;
|
||||||
|
|
||||||
|
module back_panel() {
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
ccube([front_panel_height, front_panel_width, 13+container_wall_thickness], center=[0, 1, 0]);
|
||||||
|
}
|
||||||
|
union() {
|
||||||
|
translate([container_wall_thickness, 0, container_wall_thickness]) ccube([front_panel_height-2*container_wall_thickness, front_panel_width-2*container_wall_thickness, cut], center=[0, 1, 0]);
|
||||||
|
translate([0, 0, -1]) {
|
||||||
|
translate([container_wall_thickness, -front_panel_width/2 + container_wall_thickness]) cube(5);
|
||||||
|
translate([container_wall_thickness, front_panel_width/2 - container_wall_thickness - 5]) cube(5);
|
||||||
|
translate([front_panel_height-container_wall_thickness-5, -front_panel_width/2 + container_wall_thickness]) cube(5);
|
||||||
|
translate([front_panel_height-container_wall_thickness-5, front_panel_width/2 - container_wall_thickness - 5]) cube(5);
|
||||||
|
}
|
||||||
|
translate([border_clearance+led_display_total_size, 0, -1]) cylinder(d=10, h=cut);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
up_button_trans=border_clearance+led_display_total_size+button_under_size/2+1;
|
||||||
|
button_bottom_size=6;
|
||||||
|
pillar_height=13+container_wall_thickness - button_height - button_under_thickness;
|
||||||
|
// Up button
|
||||||
|
translate([up_button_trans, 0]) rotate([0, 0, 180+45]) {
|
||||||
|
cylinder(d=button_bottom_size, h=pillar_height, $fn=4);
|
||||||
|
}
|
||||||
|
// Down button
|
||||||
|
translate([up_button_trans+(button_size+button_clearance), 0]) rotate([0, 0, 45]) {
|
||||||
|
cylinder(d=button_bottom_size, h=pillar_height, $fn=4);
|
||||||
|
}
|
||||||
|
// Right button
|
||||||
|
translate([up_button_trans+(button_size+button_clearance)/2, button_size]) rotate([0, 0, 90+45]) {
|
||||||
|
cylinder(d=button_bottom_size, h=pillar_height, $fn=4);
|
||||||
|
}
|
||||||
|
// Left button
|
||||||
|
translate([up_button_trans+(button_size+button_clearance)/2, -button_size]) rotate([0, 0, -90+45]) {
|
||||||
|
cylinder(d=button_bottom_size, h=pillar_height, $fn=4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// front_panel();
|
||||||
|
// button();
|
||||||
|
translate([0, 0, -13-container_wall_thickness]) back_panel();
|
20
src/modules/puzzle_maze/doc/index.md
Normal file
20
src/modules/puzzle_maze/doc/index.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Doolhof
|
||||||
|
|
||||||
|
\begin{figure}[!b]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=24cm,height=5cm,keepaspectratio]{./puzzle_maze/description.png}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
- Zoek het juiste doolhof en oriëntatie van dit doolhof aan de hand van de cirkelvormige markeringen op de rand van de doolhofkaarten
|
||||||
|
|
||||||
|
- Het knipperend licht in het doolhof is de bestemming, het licht dat blijft branden
|
||||||
|
is je karakter. Navigeer je karakter naar de bestemming met de gele knoppen, zonder
|
||||||
|
dat die door de muren van het doolhof gaat. Let wel, de ontmijner kan de muren niet zien!
|
||||||
|
|
||||||
|
|
||||||
|
## Doolhofkaarten
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=10cm, height=10cm,keepaspectratio]{./puzzle_maze/maze.png}
|
||||||
|
\end{center}
|
309
src/modules/puzzle_maze/graphics.svg
Normal file
309
src/modules/puzzle_maze/graphics.svg
Normal file
|
@ -0,0 +1,309 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg id="svg5" width="210mm" height="297mm" version="1.1" viewBox="0 0 210 297" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g id="layer1">
|
||||||
|
<path id="path2299-0" d="m48 100v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-4" d="m48 116v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-3-8" d="m48 104v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-6-71" d="m48 112v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-7-7" d="m48 108v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-3-5-2" d="m52 104v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-6-2" d="m52 112v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-2-6" d="m52 108v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-3-2-6" d="m56 104v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-93-9" d="m60 100v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-6-4" d="m60 116v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-6-9" d="m60 108v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-9-1" d="m64 112v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-2-5" d="m68 100v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-37-9" d="m68 116v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-28-6" d="m68 108v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-97-7" d="m72 100v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-36-3" d="m72 116v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-3-1-6" d="m72 104v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-6-29-5" d="m72 112v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-7-3-6" d="m72 108v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-19-9" d="m48 120v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-19-7-4" d="m56 120v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-8-8" d="m60 120v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-0-2" d="m64 120v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-3-9" d="m72 120v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-6-39" d="m48 124h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-1-0" d="m52 124h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-0-8" d="m56 124h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-63-85" d="m60 124h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-2-0" d="m64 124h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-06-9" d="m68 124h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-0-5-8" d="m56 116h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-06-6-1" d="m68 116h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-6-5" d="m52 120h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-3-8" d="m60 120h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-6-7" d="m56 108h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-8-6" d="m60 108h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-06-4-1" d="m68 108h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-3-7" d="m48 104h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-4-9" d="m56 104h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-9-6" d="m60 104h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-8-7" d="m48 100h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-1-9-8" d="m52 100h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-0-2-5" d="m56 100h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-63-6-7" d="m60 100h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-2-6-4" d="m64 100h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-06-49-1" d="m68 100h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-0-7-3-8" d="m52 112h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-44-0" d="m64 112h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<rect id="rect31-3-7" x="143.5" y="23.5" width="33" height="33" fill="none" stroke="#000" stroke-linecap="round"/>
|
||||||
|
<path id="path2299" d="m148 28v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303" d="m148 44v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-3" d="m148 32v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-6" d="m148 40v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-7" d="m148 36v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-5" d="m152 28v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-3" d="m152 44v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-3-5" d="m152 32v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-6" d="m152 40v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-2" d="m152 36v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-9" d="m156 28v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-1" d="m156 44v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-3-2" d="m156 32v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-7" d="m156 40v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-0" d="m156 36v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-93" d="m160 28v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-6" d="m160 44v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-3-0" d="m160 32v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-62" d="m160 40v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-6" d="m160 36v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-1" d="m164 28v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-8" d="m164 44v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-3-7" d="m164 32v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-9" d="m164 40v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-20" d="m164 36v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-2" d="m168 28v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-37" d="m168 44v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-3-59" d="m168 32v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-2" d="m168 40v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-28" d="m168 36v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-97" d="m172 28v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-36" d="m172 44v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-3-1" d="m172 32v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-6-29" d="m172 40v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-7-3" d="m172 36v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-19-4" d="m152 48v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19" d="m148 48v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-19-7" d="m156 48v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-8" d="m160 48v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-45" d="m168 48v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-0" d="m164 48v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-3" d="m172 48v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-6" d="m148 52h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-1" d="m152 52h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-0" d="m156 52h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-63" d="m160 52h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-2" d="m164 52h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-06" d="m168 52h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-6-1" d="m148 44h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-5" d="m152 44h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-5" d="m156 44h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-4" d="m160 44h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-7" d="m164 44h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-06-6" d="m168 44h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-5" d="m148 48h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-6" d="m152 48h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-9" d="m156 48h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-3" d="m160 48h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-74" d="m164 48h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-06-5" d="m168 48h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-2" d="m148 40h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-54" d="m152 40h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-7" d="m156 40h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-44" d="m160 40h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-3" d="m164 40h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-06-0" d="m168 40h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-7" d="m148 36h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-8" d="m152 36h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-6" d="m156 36h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-8" d="m160 36h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-8" d="m164 36h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-06-4" d="m168 36h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-3" d="m148 32h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-1" d="m152 32h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-4" d="m156 32h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-9" d="m160 32h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-2" d="m164 32h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-06-06" d="m168 32h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-8" d="m148 28h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-1-9" d="m152 28h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-0-2" d="m156 28h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-63-6" d="m160 28h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-2-6" d="m164 28h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-06-49" d="m168 28h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-75" d="m96 100v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-38" d="m96 116v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-3-83" d="m96 104v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-6-1" d="m96 112v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-7-8" d="m96 108v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-5-9" d="m100 100v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-3-6" d="m100 116v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-2-3" d="m100 108v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-1-8" d="m104 116v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-7-4" d="m104 112v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-6-8" d="m108 116v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-3-0-9" d="m108 104v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-62-7" d="m108 112v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-1-6" d="m112 100v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-9-0" d="m112 112v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-3-59-5" d="m116 104v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-2-4" d="m116 112v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-97-5" d="m120 100v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-36-9" d="m120 116v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-3-1-4" d="m120 104v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-6-29-6" d="m120 112v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-7-3-9" d="m120 108v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-19-2" d="m96 120v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-19-8-7" d="m108 120v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-45-5" d="m116 120v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-0-4" d="m112 120v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-3-8" d="m120 120v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-6-12" d="m96 124h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-1-89" d="m100 124h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-0-3" d="m104 124h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-63-68" d="m108 124h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-2-02" d="m112 124h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-06-1" d="m116 124h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-6-1-0" d="m96 116h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-5-5" d="m100 116h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-4-1" d="m108 116h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-3-8" d="m112 112h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-8-2" d="m100 108h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-6-4" d="m104 108h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-8-0" d="m108 108h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-8-6" d="m112 108h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-06-4-2" d="m116 108h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-4-0" d="m104 104h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-8-1" d="m96 100h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-1-9-1" d="m100 100h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-0-2-0" d="m104 100h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-63-6-3" d="m108 100h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-2-6-40" d="m112 100h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-06-49-3" d="m116 100h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<rect id="rect31-3-7-1" x="44" y="144" width="32" height="32" fill="none" stroke="#000" stroke-linecap="round" stroke-width=".5"/>
|
||||||
|
<path id="path2299-4" d="m48 148v4z" fill="none" stroke="#000" stroke-linejoin="bevel" stroke-width=".5"/>
|
||||||
|
<path id="path2303-69" d="m48 164v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-3-4" d="m48 152v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-6-22" d="m48 160v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-7-64" d="m48 156v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-5-1" d="m52 148v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-6-8" d="m52 160v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-9-2" d="m56 148v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-3-2-8" d="m56 152v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-7-6" d="m56 160v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-0-8" d="m56 156v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-3-0-3" d="m60 152v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-6-8" d="m60 156v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-9-6" d="m64 160v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-28-7" d="m68 156v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-97-9" d="m72 148v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-36-0" d="m72 164v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-3-1-3" d="m72 152v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-6-29-3" d="m72 160v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-7-3-3" d="m72 156v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-19-32" d="m48 168v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-19-45-2" d="m68 168v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-0-6" d="m64 168v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-3-5" d="m72 168v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-6-87" d="m48 172h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-1-96" d="m52 172h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-0-0" d="m56 172h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-63-41" d="m60 172h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-2-04" d="m64 172h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-06-8" d="m68 172h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-63-4-2" d="m60 164h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-7-4" d="m64 164h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-5-9" d="m48 168h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-6-3" d="m52 168h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-9-9" d="m56 168h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-2-0" d="m48 160h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-7-7" d="m56 160h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-44-8" d="m60 160h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-06-0-1" d="m68 160h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-8-4" d="m52 156h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-8-5" d="m64 156h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-2-9" d="m64 152h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-06-06-3" d="m68 152h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-8-5" d="m48 148h4" fill="none" stroke="#000" stroke-linejoin="bevel" stroke-width=".5"/>
|
||||||
|
<path id="path3322-1-9-7" d="m52 148h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-0-2-08" d="m56 148h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-63-6-1" d="m60 148h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-2-6-9" d="m64 148h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-06-49-9" d="m68 148h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-13" d="m96 148v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-7" d="m96 164v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-3-72" d="m96 152v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-6-64" d="m96 160v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-7-5" d="m96 156v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-5-2" d="m100 148v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-2-9" d="m100 156v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-3-2-5" d="m104 152v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-6-7" d="m108 164v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-3-0-8" d="m108 152v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-62-8" d="m108 160v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-7-6-6" d="m108 156v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-8-4" d="m112 164v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-37-97" d="m116 164v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-6-2-7" d="m116 160v4z" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2299-97-53" d="m120 148v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-36-38" d="m120 164v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-3-1-37" d="m120 152v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-6-29-9" d="m120 160v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2299-7-3-37" d="m120 156v4z" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-19-4-8" d="m100 168v4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path2303-19-74" d="m96 168v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path2303-19-3-88" d="m120 168v4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-6-58" d="m96 172h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-1-4" d="m100 172h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-0-37" d="m104 172h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-63-1" d="m108 172h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-2-38" d="m112 172h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-06-09" d="m116 172h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-6-1-7" d="m96 164h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-5-9" d="m100 164h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-4-3" d="m108 164h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-7-2" d="m112 164h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-6-7" d="m100 168h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-2-2" d="m96 160h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-7-75" d="m104 160h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-44-1" d="m108 160h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-1-8-7" d="m100 156h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-8-1" d="m112 156h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-06-4-7" d="m116 156h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-0-4-08" d="m104 152h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-63-9-5" d="m108 152h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-2-2-1" d="m112 152h4" fill="none" stroke="#000" stroke-width=".2"/>
|
||||||
|
<path id="path3322-6-8-6" d="m96 148h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-1-9-2" d="m100 148h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-0-2-1" d="m104 148h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-63-6-9" d="m108 148h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-2-6-6" d="m112 148h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<path id="path3322-06-49-4" d="m116 148h4" fill="none" stroke="#000" stroke-width=".5"/>
|
||||||
|
<circle id="path19291-0" cx="46" cy="170" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
|
||||||
|
<circle id="path19291-2" cx="58" cy="146" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
|
||||||
|
<circle id="path19291-2-9" cx="50" cy="146" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
|
||||||
|
<circle id="path19291-2-7" cx="94" cy="150" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
|
||||||
|
<circle id="path19291-2-5" cx="98" cy="174" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
|
||||||
|
<circle id="path19291-2-6" cx="122" cy="154" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
|
||||||
|
<circle id="path19291-2-4" cx="50" cy="126" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
|
||||||
|
<circle id="path19291-2-63" cx="70" cy="126" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
|
||||||
|
<circle id="path19291-2-79" cx="70" cy="98" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
|
||||||
|
<circle id="path19291-2-74" cx="94" cy="110" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
|
||||||
|
<circle id="path19291-2-91" cx="122" cy="114" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
|
||||||
|
<circle id="path19291-2-70" cx="106" cy="126" r="1.5" fill-rule="evenodd" stroke-width=".26458"/>
|
||||||
|
<rect id="rect31-3-7-1-0" x="44" y="96" width="32" height="32" fill="none" stroke="#000" stroke-linecap="round" stroke-width=".5"/>
|
||||||
|
<rect id="rect31-3-7-1-8" x="92" y="96" width="32" height="32" fill="none" stroke="#000" stroke-linecap="round" stroke-width=".5"/>
|
||||||
|
<rect id="rect31-3-7-1-5" x="92" y="144" width="32" height="32" fill="none" stroke="#000" stroke-linecap="round" stroke-width=".5"/>
|
||||||
|
<path id="path22143" transform="matrix(0 -.26458 .26458 0 80 208)" d="m514.02 257.01 13.093 22.677h-26.185z" fill-rule="evenodd"/>
|
||||||
|
<path id="path22143-3" transform="matrix(.26458 0 0 .26458 24 -4)" d="m514.02 257.01 13.093 22.677h-26.185z" fill-rule="evenodd"/>
|
||||||
|
<path id="path22143-9" transform="matrix(0 .26458 -.26458 0 240 -64)" d="m514.02 257.01 13.093 22.677h-26.185z" fill-rule="evenodd"/>
|
||||||
|
<path id="path22143-4" transform="matrix(-.26458 0 0 -.26458 296 148)" d="m514.02 257.01 13.093 22.677h-26.185z" fill-rule="evenodd"/>
|
||||||
|
<rect id="rect22295" x="136" y="16" width="48" height="68" fill="none" stroke="#000" stroke-width=".26458"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 27 KiB |
23
src/modules/puzzle_maze/puzzle_maze.ino
Normal file
23
src/modules/puzzle_maze/puzzle_maze.ino
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
// (c) 2022, redfast00
|
||||||
|
// See the LICENSE file for conditions for copying
|
||||||
|
|
||||||
|
#include <obus_module.h>
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
obus_module::setup(OBUS_TYPE_PUZZLE, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
obus_can::message message;
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
bool is_message_valid = obus_module::loopPuzzle(&message, callback_game_start, callback_game_stop);
|
||||||
|
}
|
||||||
|
|
||||||
|
void callback_game_start() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void callback_game_stop() {
|
||||||
|
|
||||||
|
}
|
|
@ -1,6 +1,3 @@
|
||||||
## Testmodule buttons
|
# Testmodule knoppen
|
||||||
|
|
||||||
If the blue LED is lit, press the green button, otherwise press the red button.
|
Als de LED aan is, druk op de groene knop, anders op de rode knop.
|
||||||
|
|
||||||
### Credits
|
|
||||||
Module developed by redfast00.
|
|
||||||
|
|
Loading…
Reference in a new issue