gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-cashless2ecash] branch master updated: docs: add overview diagram


From: gnunet
Subject: [taler-cashless2ecash] branch master updated: docs: add overview diagram, fix api spec, cleanup structure
Date: Wed, 20 Mar 2024 22:13:42 +0100

This is an automated email from the git hooks/post-receive script.

joel-haeberli pushed a commit to branch master
in repository cashless2ecash.

The following commit(s) were added to refs/heads/master by this push:
     new 10d0648  docs: add overview diagram, fix api spec, cleanup structure
10d0648 is described below

commit 10d064835e8ed272a9ff09bf74ac371e19e2675b
Author: Joel-Haeberli <haebu@rubigen.ch>
AuthorDate: Wed Mar 20 22:13:35 2024 +0100

    docs: add overview diagram, fix api spec, cleanup structure
---
 .gitignore                                        |   2 +
 docs/content/architecture/c2ec.tex                |  92 +++++++
 docs/content/architecture/nonce2ecash.tex         |  84 ------
 docs/content/architecture/overview.tex            |  16 +-
 docs/content/architecture/terminal.tex            |   8 -
 docs/content/architecture/usecase.tex             |   1 -
 docs/content/{sysview => architecture}/wallee.tex |  10 +-
 docs/content/architecture/wallet.tex              |   1 -
 docs/content/sysview/sysview.tex                  |   4 -
 docs/content/sysview/taler.tex                    |   9 -
 docs/pictures/diagrams/system_overview.png        | Bin 0 -> 93245 bytes
 docs/project.bib                                  |  14 +
 docs/thesis.pdf                                   | Bin 812625 -> 1387923 bytes
 docs/thesis.tex                                   |   6 +-
 nonce2ecash/pkg/db/provider.go                    |   1 +
 specs/{api-nonce2ecash.rst => api-c2ec.rst}       |  76 ++++--
 specs/system_overview.odg                         | Bin 0 -> 26993 bytes
 specs/system_overview.svg                         | 310 ++++++++++++++++++++++
 18 files changed, 477 insertions(+), 157 deletions(-)

diff --git a/.gitignore b/.gitignore
index a2663d3..bcbd7bc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,8 @@ infra/
 
 LocalMakefile
 
+.~lock.*.odg#
+
 *.png
 !/docs/**/*.png
 
diff --git a/docs/content/architecture/c2ec.tex 
b/docs/content/architecture/c2ec.tex
new file mode 100644
index 0000000..28b32c1
--- /dev/null
+++ b/docs/content/architecture/c2ec.tex
@@ -0,0 +1,92 @@
+\section{C2EC}
+
+The API of the C2EC (cashless2ecash) component mirrors the flow from the 
creation of a C2EC mapping to the creation of the reserve. For the integration 
into the Taler ecosystem additionally to the newly created API, the new 
component must implement the Taler Wirewatch Gateway API \cite{} and the Taler 
Bank Integration API.
+
+A specification of the API in yaml format can be found in 
\autoref*{appendix-api-spec}.
+
+\subsection{The C2EC RESTful API}
+
+\subsubsection{Authentication}
+
+Terminals which authenticate against the C2EC API must provide their 
respective access token. Therefore, they provide a \texttt{Authorization: 
Bearer \$ACCESS\_TOKEN} header, where \texttt{\$ACCESS\_TOKEN} is a secret 
authentication token configured by the exchange and must begin with the prefix 
specified in RFC 8959 \cite{rfc8959}: \textit{secret-token}.
+
+\subsubsection{Configuration of C2EC}
+
+\begin{itemize}
+  \item \textbf{Method:} GET
+  \item \textbf{Endpoint:} /config
+  \item \textbf{Description:} Return the protocol version and configuration 
information about the C2EC API.
+  \item \textbf{Response:} HTTP status code 200 OK. The exchange responds with 
a \texttt{C2ECConfig} object.
+\end{itemize}
+
+\subsubsection{Withdrawing using C2EC}
+
+Withdrawals with a C2EC are based on withdrawal operations which register a 
withdrawal identifier (nonce) at the C2EC component. The provider must first 
create a unique identifier for the withdrawal operation (the 
\texttt{WITHDRAWAL\_ID}) to interact with the withdrawal operation and 
eventually withdraw using the wallet.
+
+\textbf{POST - withdrawal-operation}
+\begin{itemize}
+  \item \textbf{Method:} POST
+  \item \textbf{Endpoint:} /withdrawal-operation
+  \item \textbf{Description:} Initiate the withdrawal operation, identified by 
the \texttt{WITHDRAWAL\_ID}.
+  \item \textbf{Request:} The request body contains a 
\texttt{WithdrawRegistration} object.
+  \item \textbf{Response:} HTTP status code 204 No content, 400 Bad request, 
or 500 Internal Server error.
+\end{itemize}
+
+\textbf{GET - withdrawal-operation by withdrawal-id}
+\begin{itemize}
+  \item \textbf{Method:} GET
+  \item \textbf{Endpoint:} /withdrawal-operation/\$WITHDRAWAL\_ID
+  \item \textbf{Description:} Query information about a withdrawal operation, 
identified by the \texttt{WITHDRAWAL\_ID}.
+  \item \textbf{Response:} HTTP status code 200 OK or 404 Not found.
+\end{itemize}
+
+\textbf{POST - withdrawal-operation by withdrawal-id}
+\begin{itemize}
+  \item \textbf{Method:} POST
+  \item \textbf{Endpoint:} /withdrawal-operation/\$WITHDRAWAL\_ID
+  \item \textbf{Description:} Notifies C2EC about an executed payment for a 
specific withdrawal.
+  \item \textbf{Request:} The request body contains a 
\texttt{PaymentNotification} object.
+  \item \textbf{Response:} HTTP status code 204 No content, 400 Bad request, 
404 Not found, or 500 Internal Server error.
+\end{itemize}
+
+\subsection{Taler Wirewatch Gateway API}
+The Taler Wirewatch Gateway \cite{taler-wirewatch-gateway-api} must be 
implemented in order to capture incoming transactions and allow the withdrawal 
of money. The specification of the Taler Wirewatch Gateway can be found in the 
official Taler documentation \cite{taler-wirewatch-gateway-api}.
+
+The wirewatch gateway helps the Exchange communicate with the C2EC component 
using a the API. It helps the Exchange to get guarantees, that a certain 
transaction went through and that the reserve can be created and withdrawn. 
This will help C2EC to capture the transaction of the Terminal Backend to the 
Exchange's account and therefore allow the withdrawal by the customer. 
Therefore the wirewatch gateway API is used in C2EC. When the wirewatch gateway 
can get the proof, that a transaction [...]
+
+\subsection{Taler Bank Integration API}
+The Taler Bank Integration \cite{taler-bank-integration-api} must be 
implemented in order to allow the Wallet to withdraw money using already 
implemented flows. The wallet will use the implementation of the Bank 
Integration API to withdraw. The documentation for the Bank Integration API can 
also be found in the official Taler documentation.
+
+\subsection{The C2EC database}
+
+The database of the C2EC component must track two different aspects. The first 
is the mapping of a nonce to a reserve public key to enable withdrawals and the 
second aspect is the authentication of terminals allowing withdrawals owned by 
terminal providers like \textit{Wallee}.
+
+\subsubsection{Terminal Provider}
+Table in \autoref{fig-erd-terminal-provider} describing providers of C2EC 
compliant terminals. The name of the provider is important, because it decides 
which flow shall be taken in order to attest the payment. For example will the 
name \textit{Wallee} signal the terminal provider to 
+
+\begin{figure}[h]
+  \centering
+  
\includegraphics[width=0.7\textwidth]{pictures/database/table_terminal_provider.png}
+  \caption{Terminal Provider Table}
+  \label{fig-erd-terminal-provider}
+\end{figure}
+
+\subsubsection{Terminal}
+Table in \autoref{fig-erd-terminal} contains information about terminals of 
providers. This includes the provider they belong to and an authentication 
token, which is generated by the Exchange and allows authenticating the 
terminal. A terminal belongs to one terminal provider.
+
+\begin{figure}[h]
+  \centering
+  \includegraphics[width=0.7\textwidth]{pictures/database/table_terminal.png}
+  \caption{Terminal Table}
+  \label{fig-erd-terminal}
+\end{figure}
+
+\subsubsection{Withdrawal}
+Table in \autoref{fig-erd-withdrawal} represents the withdrawal processes 
initiated by terminals. This table therefore contains information about the 
withdrawal like the amount, which terminal the withdrawal was initiated from 
and which reserve public key is used to create a reserve in the Exchange.
+
+\begin{figure}[h]
+  \centering
+  \includegraphics[width=0.7\textwidth]{pictures/database/table_withdrawal.png}
+  \caption{Withdrawal Table}
+  \label{fig-erd-withdrawal}
+\end{figure}
diff --git a/docs/content/architecture/nonce2ecash.tex 
b/docs/content/architecture/nonce2ecash.tex
deleted file mode 100644
index a4570ac..0000000
--- a/docs/content/architecture/nonce2ecash.tex
+++ /dev/null
@@ -1,84 +0,0 @@
-\section{nonce2ecash}
-
-The API of the nonce2ecash component mirrors the flow from the creation of a 
nonce2ecash mapping to the creation of the reserve. Therefore three endpoints 
are implemented.
-
-A specification of the API in yaml format can be found in 
\autoref*{appendix-api-spec}.
-
-\subsection{The nonce2ecash RESTful API}
-
-\subsubsection{Authentication}
-
-Terminals which authenticate against the nonce2ecash API must provide their 
respective access token. Therefore, they provide a \texttt{Authorization: 
Bearer \$ACCESS\_TOKEN} header, where \texttt{\$ACCESS\_TOKEN} is a secret 
authentication token configured by the exchange and must begin with the RFC 
8959 \cite{rfc8959} prefix \textit{secret-token}.
-
-\subsubsection{Configuration of nonce2ecash}
-
-\begin{itemize}
-  \item \textbf{Method:} GET
-  \item \textbf{Endpoint:} /config
-  \item \textbf{Description:} Return the protocol version and configuration 
information about the nonce2ecash API.
-  \item \textbf{Response:} HTTP status code 200 OK. The exchange responds with 
a \texttt{Nonce2ecashConfig} object.
-\end{itemize}
-
-\subsubsection{Withdrawing using nonce2ecash}
-
-Withdrawals with a nonce2ecash are based on withdrawal operations which 
register a withdrawal identifier (nonce) at the nonce2ecash component. The 
provider must first create a unique identifier for the withdrawal operation 
(the \texttt{WITHDRAWAL\_ID}) to interact with the withdrawal operation and 
eventually withdraw using the wallet.
-
-\textbf{POST - withdrawal-operation}
-\begin{itemize}
-  \item \textbf{Method:} POST
-  \item \textbf{Endpoint:} /withdrawal-operation
-  \item \textbf{Description:} Initiate the withdrawal operation, identified by 
the \texttt{WITHDRAWAL\_ID}.
-  \item \textbf{Request:} The request body contains a 
\texttt{WithdrawRegistration} object.
-  \item \textbf{Response:} HTTP status code 204 No content, 400 Bad request, 
or 500 Internal Server error.
-\end{itemize}
-
-\textbf{GET - withdrawal-operation by withdrawal-id}
-\begin{itemize}
-  \item \textbf{Method:} GET
-  \item \textbf{Endpoint:} /withdrawal-operation/\$WITHDRAWAL\_ID
-  \item \textbf{Description:} Query information about a withdrawal operation, 
identified by the \texttt{WITHDRAWAL\_ID}.
-  \item \textbf{Response:} HTTP status code 200 OK or 404 Not found.
-\end{itemize}
-
-\textbf{POST - withdrawal-operation by withdrawal-id}
-\begin{itemize}
-  \item \textbf{Method:} POST
-  \item \textbf{Endpoint:} /withdrawal-operation/\$WITHDRAWAL\_ID
-  \item \textbf{Description:} Notifies nonce2ecash about an executed payment 
for a specific withdrawal.
-  \item \textbf{Request:} The request body contains a 
\texttt{PaymentNotification} object.
-  \item \textbf{Response:} HTTP status code 204 No content, 400 Bad request, 
404 Not found, or 500 Internal Server error.
-\end{itemize}
-
-\subsection{The nonce2ecash database}
-
-The database of the nonce2ecash component must track two different aspects. 
The first is the mapping of a nonce to a reserve public key to enable 
withdrawals and the second aspect is the authentication of terminals allowing 
withdrawals owned by terminal providers like \textit{Wallee}.
-
-\subsubsection{Terminal Provider}
-Table in \autoref{fig-erd-terminal-provider} describing providers of 
nonce2ecash terminals. The name of the provider is important, because it 
decides which flow shall be taken in order to attest the payment.
-
-\begin{figure}[h]
-  \centering
-  
\includegraphics[width=0.7\textwidth]{pictures/database/table_terminal_provider.png}
-  \caption{Terminal Provider Table}
-  \label{fig-erd-terminal-provider}
-\end{figure}
-
-\subsubsection{Terminal}
-Table in \autoref{fig-erd-terminal} contains information about terminals of 
providers. This includes the provider they belong to and an authentication 
token, which is generated by the Exchange and allows authenticating the 
terminal. A terminal belongs to one terminal provider.
-
-\begin{figure}[h]
-  \centering
-  \includegraphics[width=0.7\textwidth]{pictures/database/table_terminal.png}
-  \caption{Terminal Table}
-  \label{fig-erd-terminal}
-\end{figure}
-
-\subsubsection{Withdrawal}
-Table in \autoref{fig-erd-withdrawal} represents the withdrawal processes 
initiated by terminals. This table therefore contains information about the 
withdrawal like the amount, which terminal the withdrawal was initiated from 
and which reserve public key is used to create a reserve in the Exchange.
-
-\begin{figure}[h]
-  \centering
-  \includegraphics[width=0.7\textwidth]{pictures/database/table_withdrawal.png}
-  \caption{Withdrawal Table}
-  \label{fig-erd-withdrawal}
-\end{figure}
diff --git a/docs/content/architecture/overview.tex 
b/docs/content/architecture/overview.tex
index 46a3d62..fe9103d 100644
--- a/docs/content/architecture/overview.tex
+++ b/docs/content/architecture/overview.tex
@@ -4,12 +4,12 @@
 
 \begin{figure}[h]
     \centering
-    \includegraphics[width=0.7\textwidth]{pictures/diagrams/component.png}
-    \caption{Diagram of included components}
+    
\includegraphics[width=0.7\textwidth]{pictures/diagrams/system_overview.png}
+    \caption{Diagram of included components and their interactions}
     \label{fig-diagram-all-components}
 \end{figure}
 
-The component diagram shows the components involved by the withdrawal using 
the terminal. Besides the credit card owned by the user, two systems are 
involved and within each system two components are required to fulfill the 
task. We have the Taler system which represents the ecosystem for the Taler 
payment system with the Taler Wallet and the Taler Exchange involved in the 
withdrawal of Taler coins. In the Terminal system, the terminal and the backend 
system of the terminal manufacturer  [...]
+The component diagram shows the components involved by the withdrawal using 
the terminal. Besides the credit card owned by the user, two systems are 
involved and within each system two components are required to fulfill the 
task. The Taler ecosystem which represents the Taler Wallet and the Taler 
Exchange involved in the withdrawal process. In the Terminal system, the 
terminal and the backend system of the terminal manufacturer are leveraged in 
the process.
 
 \begin{figure}[h]
     \centering
@@ -18,7 +18,7 @@ The component diagram shows the components involved by the 
withdrawal using the
     \label{fig-diagram-all-sequence}
 \end{figure}
 
-The diagram in \autoref{fig-diagram-all-sequence} shows the high level flow to 
withdraw Taler using the credit card terminal. It shows when the components of 
\autoref{fig-diagram-all-components} interact with each other. It shows the 
implementation of the \textbf{nonce2ecash} flow. Terminal, Wallet and Exchange 
are linked leveraging a nonce initially generated by the terminal and presented 
to the Exchange by the withdrawing Wallet accompanied by a public key. 
+The diagram in \autoref{fig-diagram-all-sequence} shows the high level flow to 
withdraw Taler using the credit card terminal. It shows when the components of 
\autoref{fig-diagram-all-components} interact with each other. It shows the 
implementation of the flow. Terminal, Wallet and Exchange are linked leveraging 
a nonce initially generated by the terminal and presented to the Exchange by 
the withdrawing Wallet accompanied by a public key. 
 
 \subsection{Process}
 
@@ -82,19 +82,17 @@ The Wallet gains the nonce value when scanning the QR code 
at the Terminal and t
 Besides the entropy needed to establish a correct nonce, the hash function 
leveraged must be specified. (TODO - e.g. FIPS 180-4 \cite{fips-180-4} (SHA-1 
and SHA-2 families) or FIPS-202 \cite{fips-202} (SHA-3 family, which is still 
beeing reviewed))
 
 \subsection{Reserve Public Key}
-The reserve public key is created by the Wallet and sent to the Exchange to 
establish the mapping between the nonce and the reserve public key. The reserve 
public key, can then be retrieved by the Terminal and used during the payment. 
The reserve public key is used to eventually create a reserve at the exchange 
which contains the money. The Wallet can then withdraw the money from this 
reserve using the withdrawal process of the wallet \cite{wallet-withdrawal}.
+The reserve public key is created by the Wallet and sent to the Exchange to 
establish the mapping between the nonce and the reserve public key. The reserve 
public key is used to eventually create a reserve at the exchange which 
contains the money. The Wallet can then withdraw the money from this reserve 
using the withdrawal process of the wallet \cite{wallet-withdrawal}.
 
 \subsection{Payto wallee-transaction extension}
 RFC 8905 \cite{rfc8905} specifies a URI scheme (complying with RFC 3986 
\cite{rfc3986}), which allows to address a creditor with theoretically any 
protocol that can be used to pay someone (such as IBAN, BIC etc.) in a 
standardized way. Therefore it introduces a registry which holds the specific 
official values of the standard. The registry is supervised by the GANA (GNUnet 
Assigned Numbers Authority) \cite{gnunet-gana}.
 
-For the case of refunds, which might occur in case a credit card transaction 
does not succeed, a new \textit{target type} called \textit{wallee-transaction} 
is registered. It takes a transaction identifier as \textit{target identifier} 
which identifies the transaction for which a refund process shall be triggered. 
The idea is that the handler of the payto URI is able to deduct the transaction 
from the payto-uri and trigger the refund process.
-
-The idea of the \textit{wallee-transaction target type} is to trigger a refund 
process by the owner of the refund process without other services needing to 
deal with the refund logic. Therefore transactions which allow refund but the 
receiver cannot directly execute the refund, the payto 
\textit{wallee-transaction target type} can be used to advice the owner to of 
the refund process to start the refund process.
+In case a refund becomes necessary, which might occur if a credit card 
transaction does not succeed, a new \textit{target type} called 
\textit{wallee-transaction} is registered. It takes a transaction identifier as 
\textit{target identifier} which identifies the transaction for which a refund 
process shall be triggered. The idea is that the handler of the payto URI is 
able to deduct the transaction from the payto-uri and trigger the refund 
process.
 
 \subsubsection{Payto refund using Wallee}
 Wallee allows to trigger refunds using the Refund Service of the Wallee 
backend. The service allows to trigger a refund given a transaction identifier. 
Therefore the nonce2ecash component can trigger the refund using the refund 
service if needed, and the payto-uri retrieved as debit account by the 
wirewatch gateway API, is leveraged to delegate the refund process to the 
Wallee Backend using the Refund Service and parsing the transaction identifier 
of the payto-uri.
 
 \subsubsection{Extensibility}
-The flow is extensible and other providers than Wallee might be added. They 
just register their own refund payto-uri with the GANA and they can implement 
the refund process likewise.
+The flow is extensible and other providers like Wallee might be added. They 
must therefore register their own refund payto-uri with the GANA and then the 
refund process can be implemented likewise.
 
 \pagebreak
\ No newline at end of file
diff --git a/docs/content/architecture/terminal.tex 
b/docs/content/architecture/terminal.tex
index b10cc56..e69de29 100644
--- a/docs/content/architecture/terminal.tex
+++ b/docs/content/architecture/terminal.tex
@@ -1,8 +0,0 @@
-\section{Wallee Terminal Application}
-
-\subsection{Wallee Transaction Process}
-describe: https://app-wallee.com/de-de/doc/payment/transaction-process
-document implications for cashless2ecash component (which states are reliable 
to cashout coins).
-
-https://app-wallee.com/de-de/doc/api/web-service#_transactionstate
-https://app-wallee.com/de-de/doc/api/web-service#_transaction
\ No newline at end of file
diff --git a/docs/content/architecture/usecase.tex 
b/docs/content/architecture/usecase.tex
deleted file mode 100644
index 87f19da..0000000
--- a/docs/content/architecture/usecase.tex
+++ /dev/null
@@ -1 +0,0 @@
-\section{Use Case}
\ No newline at end of file
diff --git a/docs/content/sysview/wallee.tex 
b/docs/content/architecture/wallee.tex
similarity index 62%
rename from docs/content/sysview/wallee.tex
rename to docs/content/architecture/wallee.tex
index 33c0e60..72fd763 100644
--- a/docs/content/sysview/wallee.tex
+++ b/docs/content/architecture/wallee.tex
@@ -8,12 +8,4 @@ Wallee Terminals are based on android and run a modified, 
certified android vers
 Terminals of Wallee are used to communicate with the customer at the shop of 
the merchant. The payment and processing of the transaction is run on the 
wallee backend. This means that 
 
 \subsubsection{Wallee Transaction State}
-In order to decide if a transaction was successful, the states of a 
transaction within Wallee must be mapped to the world of Taler. This means that 
a reserve shall only be created, if the transaction is in a state which allows 
Taler not having any liabilities regarding the transaction and that Wallee 
could process the payment successfully. The documentation states that 
\textit{only} in the transaction state (see 
\autoref*{fig-wallee-transasction-states}) \textit{fulfill}, the delivery of 
[...]
-
-\begin{figure}[h]
-    \centering
-    
\includegraphics[width=0.7\textwidth]{pictures/wallee/wallee_transaction_states.png}
-    \caption{Wallee Transaction States}
-    \label{fig-wallee-transasction-states}
-\end{figure}
-
+In order to decide if a transaction was successful, the states of a 
transaction within Wallee must be mapped to the world of Taler. This means that 
a reserve shall only be created, if the transaction is in a state which allows 
Taler not having any liabilities regarding the transaction and that Wallee 
could process the payment successfully. The documentation states that 
\textit{only} in the transaction state \textit{fulfill}, the delivery of the 
goods (in case of withdrawal this means, th [...]
diff --git a/docs/content/architecture/wallet.tex 
b/docs/content/architecture/wallet.tex
deleted file mode 100644
index 1c6e6d6..0000000
--- a/docs/content/architecture/wallet.tex
+++ /dev/null
@@ -1 +0,0 @@
-\section{Wallet}
\ No newline at end of file
diff --git a/docs/content/sysview/sysview.tex b/docs/content/sysview/sysview.tex
deleted file mode 100644
index b20664a..0000000
--- a/docs/content/sysview/sysview.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-To better understand the architecture, specification and the implementation of 
the new components, this chapter contains the description of the necessary 
components of the Taler system and the Wallee system. This is however not a 
complete documentation or explanation but rather a compilation of the features 
needed to implement the respective components.
-
-\include{content/sysview/taler}
-\include{content/sysview/wallee}
\ No newline at end of file
diff --git a/docs/content/sysview/taler.tex b/docs/content/sysview/taler.tex
deleted file mode 100644
index 8801f61..0000000
--- a/docs/content/sysview/taler.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-\section{GNU Taler}
-
-GNU Taler is a payment system which allows paying for goods in an anonymous 
way while maintaining a trustworthy relationship between exchanges, merchants 
and customers. This goal is reached by implementing strong cryptographic 
primitives. Taler is wether a blockchain nor a currency. It is a payment 
system. It allows transferring money from A to B anonymously but still letting 
regulators control that no regulations are bypassed or ignored.
-
-\subsection{Wirewatch Gateway RESTful API}
-
-The wirewatch gateway helps communicating with the Exchange core using a 
convenient API. It helps the Exchange to get guarantees, that a certain 
transaction went through and that the reserve can be created and withdrawn. 
This will help nonce2ecash to capture the transaction of the Terminal Backend 
to the Exchange's account and therefore allow the withdrawal by the customer. 
Therefore the wirewatch gateway API is used in nonce2ecash. When the wirewatch 
gateway captures a transaction point [...]
-
-
diff --git a/docs/pictures/diagrams/system_overview.png 
b/docs/pictures/diagrams/system_overview.png
new file mode 100644
index 0000000..33c6ed6
Binary files /dev/null and b/docs/pictures/diagrams/system_overview.png differ
diff --git a/docs/project.bib b/docs/project.bib
index c8cae9b..3221814 100644
--- a/docs/project.bib
+++ b/docs/project.bib
@@ -112,6 +112,20 @@
     howpublished = {\url{https://gana.gnunet.org/}}
 }
 
+@misc{taler-bank-integration-api,
+    author = {Taler},
+    title = {Taler Bank Integration API},
+    url = {https://docs.taler.net/core/api-bank-integration.html},
+    howpublished = 
{\url{https://docs.taler.net/core/api-bank-integration.html}}
+}
+
+@misc{taler-wirewatch-gateway-api,
+    author = {Taler},
+    title = {Taler Wire Gateway HTTP API},
+    url = {https://docs.taler.net/core/api-bank-wire.html},
+    howpublished = {\url{https://docs.taler.net/core/api-bank-wire.html}}
+}
+
 @misc{wallet-withdrawal,
     author       = {Taler},
     title        = {Withdrawal},
diff --git a/docs/thesis.pdf b/docs/thesis.pdf
index ec29fae..9f1cd5f 100644
Binary files a/docs/thesis.pdf and b/docs/thesis.pdf differ
diff --git a/docs/thesis.tex b/docs/thesis.tex
index a0d932c..0079545 100644
--- a/docs/thesis.tex
+++ b/docs/thesis.tex
@@ -178,11 +178,11 @@
 \input{content/introduction/goal}
 
 \chapter{System Overview}
-\input{content/sysview/sysview}
+\input{content/architecture/overview}
 
 \chapter{Architecture}
-\input{content/architecture/overview}
-\input{content/architecture/nonce2ecash}
+\input{content/architecture/c2ec}
+\input{content/architecture/wallee}
 
 \chapter{Implementation}
 \input{content/implementation/exchange}
diff --git a/nonce2ecash/pkg/db/provider.go b/nonce2ecash/pkg/db/provider.go
index 212e9f9..e91eaca 100644
--- a/nonce2ecash/pkg/db/provider.go
+++ b/nonce2ecash/pkg/db/provider.go
@@ -13,6 +13,7 @@ type TerminalProvider struct {
 
 type Terminal struct {
        gorm.Model
+
        TerminalID  int64            `gorm:"primaryKey"`
        AccessToken []byte           `gorm:"type:bytea;not 
null;check:LENGTH(access_token)=32"`
        Active      bool             `gorm:"not null;default:true"`
diff --git a/specs/api-nonce2ecash.rst b/specs/api-c2ec.rst
similarity index 62%
rename from specs/api-nonce2ecash.rst
rename to specs/api-c2ec.rst
index 9e69e95..030b961 100644
--- a/specs/api-nonce2ecash.rst
+++ b/specs/api-c2ec.rst
@@ -17,7 +17,7 @@
   @author Joel Häberli
 
 ===========================
-The nonce2ecash RESTful API
+The C2EC RESTful API
 ===========================
 
 .. note::
@@ -33,45 +33,45 @@ withdrawals through indirect payment channels like credit 
cards or ATM.
 Authentication
 --------------
 
-Terminals which authenticate against the nonce2ecash API must provide their 
respective 
+Terminals which authenticate against the C2EC API must provide their 
respective 
 access token. Therefore they provide a ``Authorization: Bearer $ACCESS_TOKEN`` 
header, 
 where `$ACCESS_TOKEN`` is a secret authentication token configured by the 
exchange and
 must begin with the RFC 8959 prefix.
 
 ----------------------------
-Configuration of nonce2ecash
+Configuration of C2EC
 ----------------------------
 
 .. http:get:: /config
 
-  Return the protocol version and configuration information about the 
nonce2ecash API.
+  Return the protocol version and configuration information about the C2EC API.
 
   **Response:**
 
   :http:statuscode:`200 OK`:
-    The exchange responds with a `Nonce2ecashConfig` object. This request 
should
+    The exchange responds with a `C2ECConfig` object. This request should
     virtually always be successful.
 
   **Details:**
 
-  .. ts:def:: Nonce2ecashConfig
+  .. ts:def:: C2ECConfig
 
-    interface Nonce2ecashConfig {
+    interface C2ECConfig {
       // Name of the API.
-      name: "taler-nonce2ecash";
+      name: "taler-c2ec";
 
-      // libtool-style representation of the nonce2ecash protocol version, see
+      // libtool-style representation of the C2EC protocol version, see
       // 
https://www.gnu.org/software/libtool/manual/html_node/Versioning.html#Versioning
       // The format is "current:revision:age".
       version: string;
     }
 
 -----------------------------
-Withdrawing using nonce2ecash
+Withdrawing using C2EC
 -----------------------------
 
-Withdrawals with a nonce2ecash are based on withdrawal operations which 
register a withdrawal identifier
-(nonce) at the nonce2ecash component. The provider must first create a unique 
identifier for the withdrawal 
+Withdrawals with a C2EC are based on withdrawal operations which register a 
withdrawal identifier
+(nonce) at the C2EC component. The provider must first create a unique 
identifier for the withdrawal 
 operation (the ``WITHDRAWAL_ID``) to interact with the withdrawal operation 
and eventually withdraw using the wallet.
 
 .. http:post:: /withdrawal-operation
@@ -80,7 +80,7 @@ operation (the ``WITHDRAWAL_ID``) to interact with the 
withdrawal operation and
 
   **Request:**
 
-  .. ts:def:: WithdrawRegistration
+  .. ts:def:: C2ECWithdrawalOperationPostRequest
 
     interface WithdrawRegistration {
       // Maps a nonce generated by the provider to a reserve public key 
generated by the wallet.
@@ -114,30 +114,48 @@ operation (the ``WITHDRAWAL_ID``) to interact with the 
withdrawal operation and
   **Response:**
 
   :http:statuscode:`200 Ok`:
-    The withdrawal was found and is returned in the response body as 
``Withdrawal``.
+    The withdrawal was found and is returned in the response body as 
``C2ECWithdrawalStatus``.
   :http:statuscode:`404 Not found`:
-    nonce2ecash does not have a withdrawal registered with the specified 
``WITHDRAWAL_ID``.
+    C2EC does not have a withdrawal registered with the specified 
``WITHDRAWAL_ID``.
 
   **Details**
 
-    .. ts:def:: Withdrawal
-
-      interface Withdrawal {
-
-        // Reserve public key generated by the wallet.
-        // According to TALER_ReservePublicKeyP 
(https://docs.taler.net/core/api-common.html#cryptographic-primitives)
-        reserve_pub_key: EddsaPublicKey;
+    .. ts:def:: C2ECWithdrawalStatus
+
+      interface C2ECWithdrawalStatus {
+        // Current status of the operation
+        // pending: the operation is pending parameters selection (exchange 
and reserve public key)
+        // selected: the operations has been selected and is pending 
confirmation
+        // aborted: the operation has been aborted
+        // confirmed: the transfer has been confirmed and registered by the 
bank
+        // Since protocol v1.
+        status: "pending" | "selected" | "aborted" | "confirmed";
+
+        // Amount that will be withdrawn with this operation
+        // (raw amount without fee considerations).
+        amount: Amount;
+
+        // A refund address as ``payto`` URI. This address shall be used
+        // in case a refund must be done. Only not-null if the status
+        // is "confirmed" or "aborted"
+        refund_wire?: string;
+
+        // Reserve public key selected by the exchange,
+        // only non-null if ``status`` is ``selected`` or ``confirmed``.
+        // Since protocol v1.
+        selected_reserve_pub?: string;
       }
 
+
 .. http:post:: /withdrawal-operation/$WITHDRAWAL_ID
 
-    Notifies nonce2ecash about an executed payment for a specific withdrawal.
+    Notifies C2EC about an executed payment for a specific withdrawal.
 
   **Request:**
 
-  .. ts:def:: PaymentNotification
+  .. ts:def:: C2ECPaymentNotification
 
-    interface PaymentNotification {
+    interface C2ECPaymentNotification {
 
       // Unique identifier of the provider transaction.
       provider_transaction_id: string;
@@ -153,11 +171,11 @@ operation (the ``WITHDRAWAL_ID``) to interact with the 
withdrawal operation and
   **Response:**
 
   :http:statuscode:`204 No content`:
-    nonce2ecash received the ``PaymentNotification`` successfully and will 
further process
+    C2EC received the ``C2ECPaymentNotification`` successfully and will 
further process
     the withdrawal.
   :http:statuscode:`400 Bad request`:
-    The ``PaymentNotification`` request was malformed or contained invalid 
parameters.
+    The ``C2ECPaymentNotification`` request was malformed or contained invalid 
parameters.
   :http:statuscode:`404 Not found`:
-    nonce2ecash does not have a withdrawal registered with the specified 
``WITHDRAWAL_ID``.
+    C2EC does not have a withdrawal registered with the specified 
``WITHDRAWAL_ID``.
   :http:statuscode:`500 Internal Server error`:
-    The ``PaymentNotification`` could not be processed due to server side 
issues.
+    The ``C2ECPaymentNotification`` could not be processed due to server side 
issues.
diff --git a/specs/system_overview.odg b/specs/system_overview.odg
new file mode 100644
index 0000000..5a98be7
Binary files /dev/null and b/specs/system_overview.odg differ
diff --git a/specs/system_overview.svg b/specs/system_overview.svg
new file mode 100644
index 0000000..e55e418
--- /dev/null
+++ b/specs/system_overview.svg
@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg version="1.2" width="297mm" height="210mm" viewBox="0 0 29700 21000" 
preserveAspectRatio="xMidYMid" fill-rule="evenodd" stroke-width="28.222" 
stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"; 
xmlns:ooo="http://xml.openoffice.org/svg/export"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:presentation="http://sun.com/xmlns/staroffice/presentation"; 
xmlns:smil="http://www.w3.org/2001/SMIL20/"; 
xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" 
xmlns:svg="urn:oasi [...]
+ <defs class="ClipPathGroup">
+  <clipPath id="presentation_clip_path" clipPathUnits="userSpaceOnUse">
+   <rect x="0" y="0" width="29700" height="21000"/>
+  </clipPath>
+  <clipPath id="presentation_clip_path_shrink" clipPathUnits="userSpaceOnUse">
+   <rect x="29" y="21" width="29641" height="20958"/>
+  </clipPath>
+ </defs>
+ <defs>
+  <font id="EmbeddedFont_1" horiz-adv-x="2048">
+   <font-face font-family="Liberation Sans embedded" units-per-em="2048" 
font-weight="normal" font-style="normal" ascent="1852" descent="423"/>
+   <missing-glyph horiz-adv-x="2048" d="M 0,0 L 2047,0 2047,2047 0,2047 0,0 
Z"/>
+   <glyph unicode="y" horiz-adv-x="1033" d="M 191,-425 C 142,-425 100,-421 
67,-414 L 67,-279 C 92,-283 120,-285 151,-285 263,-285 352,-203 417,-38 L 434,5 
5,1082 197,1082 425,484 C 428,475 432,464 437,451 442,438 457,394 482,320 
507,246 521,205 523,196 L 593,393 830,1082 1020,1082 604,0 C 559,-115 518,-201 
479,-258 440,-314 398,-356 351,-384 304,-411 250,-425 191,-425 Z"/>
+   <glyph unicode="x" horiz-adv-x="1006" d="M 801,0 L 510,444 217,0 23,0 
408,556 41,1082 240,1082 510,661 778,1082 979,1082 612,558 1002,0 801,0 Z"/>
+   <glyph unicode="w" horiz-adv-x="1509" d="M 1174,0 L 965,0 776,765 740,934 C 
734,904 725,861 712,805 699,748 631,480 508,0 L 300,0 -3,1082 175,1082 358,347 
C 363,331 377,265 401,149 L 418,223 644,1082 837,1082 1026,339 1072,149 
1103,288 1308,1082 1484,1082 1174,0 Z"/>
+   <glyph unicode="t" horiz-adv-x="531" d="M 554,8 C 495,-8 434,-16 372,-16 
228,-16 156,66 156,229 L 156,951 31,951 31,1082 163,1082 216,1324 336,1324 
336,1082 536,1082 536,951 336,951 336,268 C 336,216 345,180 362,159 379,138 
408,127 450,127 474,127 509,132 554,141 L 554,8 Z"/>
+   <glyph unicode="s" horiz-adv-x="901" d="M 950,299 C 950,197 912,118 835,63 
758,8 650,-20 511,-20 376,-20 273,2 200,47 127,91 79,160 57,254 L 216,285 C 
231,227 263,185 311,158 359,131 426,117 511,117 602,117 669,131 712,159 754,187 
775,229 775,285 775,328 760,362 731,389 702,416 654,438 589,455 L 460,489 C 
357,516 283,542 240,568 196,593 162,624 137,661 112,698 100,743 100,796 100,895 
135,970 206,1022 276,1073 378,1099 513,1099 632,1099 727,1078 798,1036 868,994 
912,927 931,834 L 769,8 [...]
+   <glyph unicode="r" horiz-adv-x="530" d="M 142,0 L 142,830 C 142,906 140,990 
136,1082 L 306,1082 C 311,959 314,886 314,861 L 318,861 C 347,954 380,1017 
417,1051 454,1085 507,1102 575,1102 599,1102 623,1099 648,1092 L 648,927 C 
624,934 592,937 552,937 477,937 420,905 381,841 342,776 322,684 322,564 L 322,0 
142,0 Z"/>
+   <glyph unicode="o" horiz-adv-x="980" d="M 1053,542 C 1053,353 1011,212 
928,119 845,26 724,-20 565,-20 407,-20 288,28 207,125 126,221 86,360 86,542 
86,915 248,1102 571,1102 736,1102 858,1057 936,966 1014,875 1053,733 1053,542 Z 
M 864,542 C 864,691 842,800 798,868 753,935 679,969 574,969 469,969 393,935 
346,866 299,797 275,689 275,542 275,399 298,292 345,221 391,149 464,113 563,113 
671,113 748,148 795,217 841,286 864,395 864,542 Z"/>
+   <glyph unicode="n" horiz-adv-x="874" d="M 825,0 L 825,686 C 825,757 818,813 
804,852 790,891 768,920 737,937 706,954 661,963 602,963 515,963 447,933 397,874 
347,815 322,732 322,627 L 322,0 142,0 142,851 C 142,977 140,1054 136,1082 L 
306,1082 C 307,1079 307,1070 308,1055 309,1040 310,1024 311,1005 312,986 
313,950 314,897 L 317,897 C 358,972 406,1025 461,1056 515,1087 582,1102 
663,1102 782,1102 869,1073 924,1014 979,955 1006,857 1006,721 L 1006,0 825,0 
Z"/>
+   <glyph unicode="m" horiz-adv-x="1457" d="M 768,0 L 768,686 C 768,791 
754,863 725,903 696,943 645,963 570,963 493,963 433,934 388,875 343,816 321,734 
321,627 L 321,0 142,0 142,851 C 142,977 140,1054 136,1082 L 306,1082 C 307,1079 
307,1070 308,1055 309,1040 310,1024 311,1005 312,986 313,950 314,897 L 317,897 
C 356,974 400,1027 450,1057 500,1087 561,1102 633,1102 715,1102 780,1086 
828,1053 875,1020 908,968 927,897 L 930,897 C 967,970 1013,1022 1066,1054 
1119,1086 1183,1102 1258,1102 1367 [...]
+   <glyph unicode="l" horiz-adv-x="187" d="M 138,0 L 138,1484 318,1484 318,0 
138,0 Z"/>
+   <glyph unicode="k" horiz-adv-x="901" d="M 816,0 L 450,494 318,385 318,0 
138,0 138,1484 318,1484 318,557 793,1082 1004,1082 565,617 1027,0 816,0 Z"/>
+   <glyph unicode="i" horiz-adv-x="187" d="M 137,1312 L 137,1484 317,1484 
317,1312 137,1312 Z M 137,0 L 137,1082 317,1082 317,0 137,0 Z"/>
+   <glyph unicode="h" horiz-adv-x="874" d="M 317,897 C 356,968 402,1020 
457,1053 511,1086 580,1102 663,1102 780,1102 867,1073 923,1015 978,956 1006,858 
1006,721 L 1006,0 825,0 825,686 C 825,762 818,819 804,856 790,893 767,920 
735,937 703,954 659,963 602,963 517,963 450,934 399,875 348,816 322,737 322,638 
L 322,0 142,0 142,1484 322,1484 322,1098 C 322,1057 321,1015 319,972 316,929 
315,904 314,897 L 317,897 Z"/>
+   <glyph unicode="g" horiz-adv-x="927" d="M 548,-425 C 430,-425 336,-402 
266,-356 196,-309 151,-243 131,-158 L 312,-132 C 324,-182 351,-220 392,-248 
433,-274 486,-288 553,-288 732,-288 822,-183 822,27 L 822,201 820,201 C 786,132 
739,80 680,45 621,10 551,-8 472,-8 339,-8 242,36 180,124 117,212 86,350 86,539 
86,730 120,872 187,963 254,1054 355,1099 492,1099 569,1099 635,1082 692,1047 
748,1012 791,962 822,897 L 824,897 C 824,917 825,952 828,1001 831,1050 833,1077 
836,1082 L 1007,1082 C 100 [...]
+   <glyph unicode="e" horiz-adv-x="980" d="M 276,503 C 276,379 302,283 353,216 
404,149 479,115 578,115 656,115 719,131 766,162 813,193 844,233 861,281 L 
1019,236 C 954,65 807,-20 578,-20 418,-20 296,28 213,123 129,218 87,360 87,548 
87,727 129,864 213,959 296,1054 416,1102 571,1102 889,1102 1048,910 1048,527 L 
1048,503 276,503 Z M 862,641 C 852,755 823,838 775,891 727,943 658,969 568,969 
481,969 412,940 361,882 310,823 282,743 278,641 L 862,641 Z"/>
+   <glyph unicode="d" horiz-adv-x="927" d="M 821,174 C 788,105 744,55 689,25 
634,-5 565,-20 484,-20 347,-20 247,26 183,118 118,210 86,349 86,536 86,913 
219,1102 484,1102 566,1102 634,1087 689,1057 744,1027 788,979 821,914 L 823,914 
821,1035 821,1484 1001,1484 1001,223 C 1001,110 1003,36 1007,0 L 835,0 C 833,11 
831,35 829,74 826,113 825,146 825,174 L 821,174 Z M 275,542 C 275,391 295,282 
335,217 375,152 440,119 530,119 632,119 706,154 752,225 798,296 821,405 821,554 
821,697 798,802 752,86 [...]
+   <glyph unicode="c" horiz-adv-x="901" d="M 275,546 C 275,402 298,295 343,226 
388,157 457,122 548,122 612,122 666,139 709,174 752,209 778,262 788,334 L 
970,322 C 956,218 912,135 837,73 762,11 668,-20 553,-20 402,-20 286,28 207,124 
127,219 87,359 87,542 87,724 127,863 207,959 287,1054 402,1102 551,1102 
662,1102 754,1073 827,1016 900,959 945,880 964,779 L 779,765 C 770,825 746,873 
708,908 670,943 616,961 546,961 451,961 382,929 339,866 296,803 275,696 275,546 
Z"/>
+   <glyph unicode="a" horiz-adv-x="1060" d="M 414,-20 C 305,-20 224,9 169,66 
114,123 87,202 87,302 87,414 124,500 198,560 271,620 390,652 554,656 L 797,660 
797,719 C 797,807 778,870 741,908 704,946 645,965 565,965 484,965 426,951 
389,924 352,897 330,853 323,793 L 135,810 C 166,1005 310,1102 569,1102 705,1102 
807,1071 876,1009 945,946 979,856 979,738 L 979,272 C 979,219 986,179 1000,152 
1014,125 1041,111 1080,111 1097,111 1117,113 1139,118 L 1139,6 C 1094,-5 
1047,-10 1000,-10 933,-10 885, [...]
+   <glyph unicode="W" horiz-adv-x="1932" d="M 1511,0 L 1283,0 1039,895 C 
1023,951 1000,1051 969,1196 952,1119 937,1054 925,1002 913,950 822,616 652,0 L 
424,0 9,1409 208,1409 461,514 C 491,402 519,287 544,168 560,241 579,321 600,408 
621,495 713,828 877,1409 L 1060,1409 1305,532 C 1342,389 1372,267 1393,168 L 
1402,203 C 1420,280 1435,342 1446,391 1457,439 1551,778 1727,1409 L 1926,1409 
1511,0 Z"/>
+   <glyph unicode="T" horiz-adv-x="1192" d="M 720,1253 L 720,0 530,0 530,1253 
46,1253 46,1409 1204,1409 1204,1253 720,1253 Z"/>
+   <glyph unicode="P" horiz-adv-x="1112" d="M 1258,985 C 1258,852 1215,746 
1128,667 1041,588 922,549 773,549 L 359,549 359,0 168,0 168,1409 761,1409 C 
919,1409 1041,1372 1128,1298 1215,1224 1258,1120 1258,985 Z M 1066,983 C 
1066,1165 957,1256 738,1256 L 359,1256 359,700 746,700 C 959,700 1066,794 
1066,983 Z"/>
+   <glyph unicode="I" horiz-adv-x="213" d="M 189,0 L 189,1409 380,1409 380,0 
189,0 Z"/>
+   <glyph unicode="H" horiz-adv-x="1165" d="M 1121,0 L 1121,653 359,653 359,0 
168,0 168,1409 359,1409 359,813 1121,813 1121,1409 1312,1409 1312,0 1121,0 Z"/>
+   <glyph unicode="G" horiz-adv-x="1377" d="M 103,711 C 103,940 164,1117 
287,1242 410,1367 582,1430 804,1430 960,1430 1087,1404 1184,1351 1281,1298 
1356,1214 1409,1098 L 1227,1044 C 1187,1124 1132,1182 1062,1219 991,1256 
904,1274 799,1274 636,1274 512,1225 426,1127 340,1028 297,890 297,711 297,533 
343,393 434,290 525,187 652,135 813,135 905,135 991,149 1071,177 1150,205 
1215,243 1264,291 L 1264,545 843,545 843,705 1440,705 1440,219 C 1365,143 
1274,84 1166,43 1057,1 940,-20 813,-20 666,-2 [...]
+   <glyph unicode="E" horiz-adv-x="1138" d="M 168,0 L 168,1409 1237,1409 
1237,1253 359,1253 359,801 1177,801 1177,647 359,647 359,156 1278,156 1278,0 
168,0 Z"/>
+   <glyph unicode="D" horiz-adv-x="1218" d="M 1381,719 C 1381,574 1353,447 
1296,338 1239,229 1159,145 1055,87 951,29 831,0 695,0 L 168,0 168,1409 634,1409 
C 873,1409 1057,1349 1187,1230 1316,1110 1381,940 1381,719 Z M 1189,719 C 
1189,894 1141,1027 1046,1119 950,1210 811,1256 630,1256 L 359,1256 359,153 
673,153 C 776,153 867,176 946,221 1024,266 1084,332 1126,417 1168,502 1189,603 
1189,719 Z"/>
+   <glyph unicode="C" horiz-adv-x="1324" d="M 792,1274 C 636,1274 515,1224 
428,1124 341,1023 298,886 298,711 298,538 343,400 434,295 524,190 646,137 
800,137 997,137 1146,235 1245,430 L 1401,352 C 1343,231 1262,138 1157,75 
1052,12 930,-20 791,-20 649,-20 526,10 423,69 319,128 240,212 186,322 131,431 
104,561 104,711 104,936 165,1112 286,1239 407,1366 575,1430 790,1430 940,1430 
1065,1401 1166,1342 1267,1283 1341,1196 1388,1081 L 1207,1021 C 1174,1103 
1122,1166 1050,1209 977,1252 891,1274 79 [...]
+   <glyph unicode="B" horiz-adv-x="1112" d="M 1258,397 C 1258,272 1212,174 
1121,105 1030,35 903,0 740,0 L 168,0 168,1409 680,1409 C 1011,1409 1176,1295 
1176,1067 1176,984 1153,914 1106,857 1059,800 993,762 908,743 1020,730 1106,692 
1167,631 1228,569 1258,491 1258,397 Z M 984,1044 C 984,1120 958,1174 906,1207 
854,1240 779,1256 680,1256 L 359,1256 359,810 680,810 C 782,810 858,829 909,868 
959,906 984,965 984,1044 Z M 1065,412 C 1065,578 948,661 715,661 L 359,661 
359,153 730,153 C 847,153 9 [...]
+   <glyph unicode="A" horiz-adv-x="1377" d="M 1167,0 L 1006,412 364,412 202,0 
4,0 579,1409 796,1409 1362,0 1167,0 Z M 685,1265 L 676,1237 C 659,1182 635,1111 
602,1024 L 422,561 949,561 768,1026 C 749,1072 731,1124 712,1182 L 685,1265 Z"/>
+   <glyph unicode="-" horiz-adv-x="531" d="M 91,464 L 91,624 591,624 591,464 
91,464 Z"/>
+   <glyph unicode=" " horiz-adv-x="556"/>
+  </font>
+ </defs>
+ <defs>
+  <font id="EmbeddedFont_2" horiz-adv-x="2048">
+   <font-face font-family="Liberation Sans embedded" units-per-em="2048" 
font-weight="bold" font-style="normal" ascent="1852" descent="423"/>
+   <missing-glyph horiz-adv-x="2048" d="M 0,0 L 2047,0 2047,2047 0,2047 0,0 
Z"/>
+   <glyph unicode="c" horiz-adv-x="1007" d="M 594,-20 C 430,-20 303,29 214,127 
125,224 80,360 80,535 80,714 125,853 215,953 305,1052 433,1102 598,1102 
725,1102 831,1070 914,1006 997,942 1050,854 1071,741 L 788,727 C 780,782 
760,827 728,860 696,893 651,909 592,909 447,909 375,788 375,546 375,297 449,172 
596,172 649,172 694,189 730,223 766,256 788,306 797,373 L 1079,360 C 1069,286 
1043,220 1000,162 957,104 900,59 830,28 760,-4 681,-20 594,-20 Z"/>
+   <glyph unicode="b" horiz-adv-x="1033" d="M 1167,545 C 1167,366 1131,228 
1060,129 988,30 885,-20 752,-20 675,-20 609,-3 553,30 497,63 454,111 424,174 L 
422,174 C 422,151 421,119 418,78 415,37 411,11 408,0 L 135,0 C 140,62 143,144 
143,247 L 143,1484 424,1484 424,1070 420,894 424,894 C 487,1033 603,1102 
770,1102 898,1102 996,1054 1065,957 1133,860 1167,722 1167,545 Z M 874,545 C 
874,668 856,759 820,818 784,877 728,907 653,907 577,907 519,875 480,812 440,748 
420,656 420,536 420,421 440,33 [...]
+   <glyph unicode="a" horiz-adv-x="1112" d="M 393,-20 C 288,-20 207,9 148,66 
89,123 60,203 60,306 60,418 97,503 170,562 243,621 348,651 487,652 L 720,656 
720,711 C 720,782 708,834 683,869 658,903 618,920 562,920 510,920 472,908 
448,885 423,861 408,822 402,767 L 109,781 C 127,886 175,966 254,1021 332,1075 
439,1102 574,1102 711,1102 816,1068 890,1001 964,934 1001,838 1001,714 L 
1001,320 C 1001,259 1008,218 1022,195 1035,172 1058,160 1090,160 1111,160 
1132,162 1152,166 L 1152,14 C 1135,10 1 [...]
+   <glyph unicode="9" horiz-adv-x="1006" d="M 1063,727 C 1063,477 1017,290 
926,166 835,42 705,-20 537,-20 413,-20 316,7 246,60 175,113 125,196 96,311 L 
360,348 C 386,250 446,201 540,201 619,201 679,239 722,314 764,389 786,501 
787,649 762,599 720,560 663,532 605,503 543,489 476,489 352,489 254,531 181,616 
108,700 71,814 71,958 71,1106 114,1222 200,1305 285,1388 406,1430 563,1430 
732,1430 857,1372 940,1255 1022,1138 1063,962 1063,727 Z M 766,924 C 766,1011 
747,1081 709,1133 670,1184 619,12 [...]
+   <glyph unicode="8" horiz-adv-x="1033" d="M 1076,397 C 1076,265 1032,163 
945,90 858,17 733,-20 571,-20 410,-20 286,16 198,89 109,162 65,264 65,395 
65,485 91,561 143,623 195,684 265,722 352,737 L 352,741 C 276,758 215,795 
168,854 121,913 98,980 98,1057 98,1172 139,1263 221,1330 302,1397 418,1430 
567,1430 720,1430 837,1398 919,1333 1000,1268 1041,1175 1041,1055 1041,978 
1018,911 972,853 925,795 863,758 785,743 L 785,739 C 876,724 947,687 999,628 
1050,568 1076,491 1076,397 Z M 752,1040 C  [...]
+   <glyph unicode="7" horiz-adv-x="980" d="M 1049,1186 C 986,1086 926,989 
870,895 813,801 764,707 722,612 680,517 647,419 623,319 598,218 586,112 586,0 L 
293,0 C 293,117 308,231 339,341 370,450 414,562 472,676 530,789 635,957 
788,1178 L 88,1178 88,1409 1049,1409 1049,1186 Z"/>
+   <glyph unicode="6" horiz-adv-x="1033" d="M 1065,461 C 1065,311 1023,193 
939,108 855,23 739,-20 591,-20 425,-20 298,38 209,155 120,271 75,443 75,672 
75,923 120,1113 211,1240 301,1367 430,1430 598,1430 717,1430 812,1404 881,1351 
950,1298 998,1217 1027,1106 L 762,1069 C 737,1162 680,1208 592,1208 517,1208 
458,1170 415,1095 372,1020 350,905 350,752 380,802 422,840 475,867 528,894 
589,907 656,907 782,907 882,867 955,787 1028,707 1065,598 1065,461 Z M 783,453 
C 783,533 765,594 728,637 691,6 [...]
+   <glyph unicode="5" horiz-adv-x="1033" d="M 1082,469 C 1082,320 1036,201 
943,113 850,24 722,-20 560,-20 419,-20 306,12 221,76 136,139 83,231 63,352 L 
344,375 C 359,315 385,271 422,244 459,217 506,203 563,203 633,203 689,225 
731,270 772,315 793,379 793,463 793,537 773,596 734,641 695,685 640,707 569,707 
491,707 427,677 378,616 L 104,616 153,1409 1000,1409 1000,1200 408,1200 385,844 
C 453,904 538,934 640,934 774,934 881,892 962,809 1042,726 1082,612 1082,469 
Z"/>
+   <glyph unicode="4" horiz-adv-x="1113" d="M 940,287 L 940,0 672,0 672,287 
31,287 31,498 626,1409 940,1409 940,496 1128,496 1128,287 940,287 Z M 672,957 C 
672,993 673,1032 676,1074 678,1116 680,1143 681,1155 664,1118 632,1064 587,993 
L 260,496 672,496 672,957 Z"/>
+   <glyph unicode="3" horiz-adv-x="1060" d="M 1065,391 C 1065,259 1022,157 
935,85 848,13 725,-23 565,-23 414,-23 293,12 204,82 115,151 62,252 47,383 L 
333,408 C 351,273 428,205 564,205 631,205 684,222 721,255 758,288 777,339 
777,408 777,471 754,519 709,552 664,585 596,602 507,602 L 409,602 409,829 
501,829 C 582,829 642,846 683,879 724,912 744,959 744,1020 744,1078 728,1124 
696,1157 663,1190 616,1206 554,1206 496,1206 449,1190 414,1158 378,1126 
357,1081 352,1022 L 71,1042 C 86,1163 136,12 [...]
+   <glyph unicode="2" horiz-adv-x="1006" d="M 71,0 L 71,195 C 108,276 160,354 
228,431 295,508 380,588 483,671 582,751 651,817 691,869 730,921 750,972 
750,1022 750,1145 688,1206 565,1206 505,1206 459,1190 428,1158 396,1125 
375,1077 366,1012 L 83,1028 C 99,1159 148,1258 230,1327 311,1396 422,1430 
563,1430 715,1430 832,1395 913,1326 994,1257 1035,1159 1035,1034 1035,968 
1022,908 996,855 970,802 937,753 896,708 855,663 810,620 761,581 711,542 
663,503 616,466 569,429 527,391 489,353 450,315 4 [...]
+   <glyph unicode="1" horiz-adv-x="980" d="M 129,0 L 129,209 478,209 478,1170 
140,959 140,1180 493,1409 759,1409 759,209 1082,209 1082,0 129,0 Z"/>
+   <glyph unicode="0" horiz-adv-x="980" d="M 1055,705 C 1055,467 1014,287 
933,164 851,41 728,-20 565,-20 242,-20 81,222 81,705 81,874 99,1011 134,1118 
169,1225 222,1303 293,1354 364,1405 457,1430 573,1430 740,1430 862,1370 
939,1249 1016,1128 1055,947 1055,705 Z M 773,705 C 773,835 767,936 754,1008 
741,1080 721,1132 693,1163 665,1194 624,1210 571,1210 514,1210 472,1194 
443,1163 414,1131 393,1079 381,1008 368,936 362,835 362,705 362,576 369,476 
382,404 395,331 415,279 444,248 472,217 513,2 [...]
+   <glyph unicode="/" horiz-adv-x="557" d="M 20,-41 L 311,1484 549,1484 
263,-41 20,-41 Z"/>
+   <glyph unicode=" " horiz-adv-x="556"/>
+  </font>
+ </defs>
+ <defs class="TextShapeIndex">
+  <g ooo:slide="id1" ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 
id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26"/>
+ </defs>
+ <defs class="EmbeddedBulletChars">
+  <g id="bullet-char-template-57356" 
transform="scale(0.00048828125,-0.00048828125)">
+   <path d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"/>
+  </g>
+  <g id="bullet-char-template-57354" 
transform="scale(0.00048828125,-0.00048828125)">
+   <path d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"/>
+  </g>
+  <g id="bullet-char-template-10146" 
transform="scale(0.00048828125,-0.00048828125)">
+   <path d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 
659,739 1358,739 Z"/>
+  </g>
+  <g id="bullet-char-template-10132" 
transform="scale(0.00048828125,-0.00048828125)">
+   <path d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 
717,1481 1274,1481 2015,739 Z"/>
+  </g>
+  <g id="bullet-char-template-10007" 
transform="scale(0.00048828125,-0.00048828125)">
+   <path d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 
215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 
381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 
835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 
727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 
111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 
Z"/>
+  </g>
+  <g id="bullet-char-template-10004" 
transform="scale(0.00048828125,-0.00048828125)">
+   <path d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 
55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 
377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 
1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 
338,-33 285,-33 Z"/>
+  </g>
+  <g id="bullet-char-template-9679" 
transform="scale(0.00048828125,-0.00048828125)">
+   <path d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 
276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 
1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"/>
+  </g>
+  <g id="bullet-char-template-8226" 
transform="scale(0.00048828125,-0.00048828125)">
+   <path d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 
101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 
608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"/>
+  </g>
+  <g id="bullet-char-template-8211" 
transform="scale(0.00048828125,-0.00048828125)">
+   <path d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"/>
+  </g>
+  <g id="bullet-char-template-61548" 
transform="scale(0.00048828125,-0.00048828125)">
+   <path d="M 173,740 C 173,903 231,1043 346,1159 462,1274 601,1332 765,1332 
928,1332 1067,1274 1183,1159 1299,1043 1357,903 1357,740 1357,577 1299,437 
1183,322 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 
173,740 Z"/>
+  </g>
+ </defs>
+ <g>
+  <g id="id2" class="Master_Slide">
+   <g id="bg-id2" class="Background"/>
+   <g id="bo-id2" class="BackgroundObjects"/>
+  </g>
+ </g>
+ <g class="SlideGroup">
+  <g>
+   <g id="container-id1">
+    <g id="id1" class="Slide" clip-path="url(#presentation_clip_path)">
+     <g class="Page">
+      <g class="com.sun.star.drawing.CustomShape">
+       <g id="id3">
+        <rect class="BoundingBox" stroke="none" fill="none" x="1316" y="1951" 
width="6670" height="1590"/>
+        <path fill="rgb(114,159,207)" stroke="none" d="M 4651,3539 L 1317,3539 
1317,1952 7984,1952 7984,3539 4651,3539 Z"/>
+        <path fill="none" stroke="rgb(52,101,164)" d="M 4651,3539 L 1317,3539 
1317,1952 7984,1952 7984,3539 4651,3539 Z"/>
+        <text class="SVGTextShape"><tspan class="TextParagraph"><tspan 
class="TextPosition" x="2368" y="2966"><tspan font-family="Liberation Sans, 
sans-serif" font-size="635px" font-weight="400" fill="rgb(0,0,0)" stroke="none" 
style="white-space: pre">Wallee Backend</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.CustomShape">
+       <g id="id4">
+        <rect class="BoundingBox" stroke="none" fill="none" x="1316" y="16238" 
width="6670" height="1590"/>
+        <path fill="rgb(114,159,207)" stroke="none" d="M 4651,17826 L 
1317,17826 1317,16239 7984,16239 7984,17826 4651,17826 Z"/>
+        <path fill="none" stroke="rgb(52,101,164)" d="M 4651,17826 L 
1317,17826 1317,16239 7984,16239 7984,17826 4651,17826 Z"/>
+        <text class="SVGTextShape"><tspan class="TextParagraph"><tspan 
class="TextPosition" x="2410" y="17253"><tspan font-family="Liberation Sans, 
sans-serif" font-size="635px" font-weight="400" fill="rgb(0,0,0)" stroke="none" 
style="white-space: pre">Wallee Terminal</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.CustomShape">
+       <g id="id5">
+        <rect class="BoundingBox" stroke="none" fill="none" x="12745" 
y="16238" width="6670" height="1590"/>
+        <path fill="rgb(114,159,207)" stroke="none" d="M 16080,17826 L 
12746,17826 12746,16239 19413,16239 19413,17826 16080,17826 Z"/>
+        <path fill="none" stroke="rgb(52,101,164)" d="M 16080,17826 L 
12746,17826 12746,16239 19413,16239 19413,17826 16080,17826 Z"/>
+        <text class="SVGTextShape"><tspan class="TextParagraph"><tspan 
class="TextPosition" x="14434" y="17253"><tspan font-family="Liberation Sans, 
sans-serif" font-size="635px" font-weight="400" fill="rgb(0,0,0)" stroke="none" 
style="white-space: pre">Taler Wallet</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.CustomShape">
+       <g id="id6">
+        <rect class="BoundingBox" stroke="none" fill="none" x="10524" y="1633" 
width="8893" height="8576"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 14970,10207 L 10525,10207 
10525,1634 19415,1634 19415,10207 14970,10207 Z"/>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.CustomShape">
+       <g id="id7">
+        <rect class="BoundingBox" stroke="none" fill="none" x="10840" y="1952" 
width="8258" height="2543"/>
+        <path fill="rgb(114,159,207)" stroke="none" d="M 14969,4493 L 
10841,4493 10841,1953 19096,1953 19096,4493 14969,4493 Z"/>
+        <path fill="none" stroke="rgb(52,101,164)" d="M 14969,4493 L 
10841,4493 10841,1953 19096,1953 19096,4493 14969,4493 Z"/>
+        <text class="SVGTextShape"><tspan class="TextParagraph"><tspan 
class="TextPosition" x="11564" y="3443"><tspan font-family="Liberation Sans, 
sans-serif" font-size="635px" font-weight="400" fill="rgb(0,0,0)" stroke="none" 
style="white-space: pre">Wirewatch Gateway API</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.CustomShape">
+       <g id="id8">
+        <rect class="BoundingBox" stroke="none" fill="none" x="10840" y="6713" 
width="8258" height="3178"/>
+        <path fill="rgb(114,159,207)" stroke="none" d="M 14969,9889 L 
10841,9889 10841,6714 19096,6714 19096,9889 14969,9889 Z"/>
+        <path fill="none" stroke="rgb(52,101,164)" d="M 14969,9889 L 
10841,9889 10841,6714 19096,6714 19096,9889 14969,9889 Z"/>
+        <text class="SVGTextShape"><tspan class="TextParagraph"><tspan 
class="TextPosition" x="12074" y="8522"><tspan font-family="Liberation Sans, 
sans-serif" font-size="635px" font-weight="400" fill="rgb(0,0,0)" stroke="none" 
style="white-space: pre">Bank Integration API</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.CustomShape">
+       <g id="id9">
+        <rect class="BoundingBox" stroke="none" fill="none" x="22906" y="2268" 
width="3496" height="2227"/>
+        <path fill="rgb(114,159,207)" stroke="none" d="M 22907,2619 L 
22907,2619 C 22907,2558 22988,2497 23141,2444 23294,2391 23515,2347 23780,2316 
24046,2285 24347,2269 24654,2269 L 24654,2269 C 24960,2269 25261,2285 
25527,2316 25792,2347 26013,2391 26166,2444 26319,2497 26400,2558 26400,2619 L 
26400,2619 26400,4142 26400,4143 C 26400,4204 26319,4265 26166,4318 26013,4371 
25792,4415 25527,4446 25261,4477 24960,4493 24654,4493 L 24654,4493 C 
24347,4493 24046,4477 23780,4446 23515,4415 2 [...]
+        <path fill="none" stroke="rgb(52,101,164)" d="M 22907,2619 L 
22907,2619 C 22907,2558 22988,2497 23141,2444 23294,2391 23515,2347 23780,2316 
24046,2285 24347,2269 24654,2269 L 24654,2269 C 24960,2269 25261,2285 
25527,2316 25792,2347 26013,2391 26166,2444 26319,2497 26400,2558 26400,2619 L 
26400,2619 26400,4142 26400,4143 C 26400,4204 26319,4265 26166,4318 26013,4371 
25792,4415 25527,4446 25261,4477 24960,4493 24654,4493 L 24654,4493 C 
24347,4493 24046,4477 23780,4446 23515,4415 23 [...]
+        <path fill="rgb(114,159,207)" stroke="none" d="M 22907,2619 L 
22907,2619 C 22907,2681 22988,2741 23141,2794 23294,2847 23515,2892 23780,2922 
24046,2953 24347,2969 24654,2969 L 24654,2969 C 24960,2969 25261,2953 
25527,2922 25792,2892 26013,2847 26166,2794 26319,2741 26400,2681 26400,2619 L 
22907,2619 Z"/>
+        <path fill="none" stroke="rgb(52,101,164)" d="M 22907,2619 L 
22907,2619 C 22907,2681 22988,2741 23141,2794 23294,2847 23515,2892 23780,2922 
24046,2953 24347,2969 24654,2969 L 24654,2969 C 24960,2969 25261,2953 
25527,2922 25792,2892 26013,2847 26166,2794 26319,2741 26400,2681 26400,2619"/>
+        <text class="SVGTextShape"><tspan class="TextParagraph"><tspan 
class="TextPosition" x="23402" y="3776"><tspan font-family="Liberation Sans, 
sans-serif" font-size="635px" font-weight="400" fill="rgb(0,0,0)" stroke="none" 
style="white-space: pre">Postgres</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.CustomShape">
+       <g id="id10">
+        <rect class="BoundingBox" stroke="none" fill="none" x="21318" y="8618" 
width="6670" height="1590"/>
+        <path fill="rgb(114,159,207)" stroke="none" d="M 24653,10206 L 
21319,10206 21319,8619 27986,8619 27986,10206 24653,10206 Z"/>
+        <path fill="none" stroke="rgb(52,101,164)" d="M 24653,10206 L 
21319,10206 21319,8619 27986,8619 27986,10206 24653,10206 Z"/>
+        <text class="SVGTextShape"><tspan class="TextParagraph"><tspan 
class="TextPosition" x="22076" y="9633"><tspan font-family="Liberation Sans, 
sans-serif" font-size="635px" font-weight="400" fill="rgb(0,0,0)" stroke="none" 
style="white-space: pre">Exchange-HTTPD</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id11">
+        <rect class="BoundingBox" stroke="none" fill="none" x="5444" y="9890" 
width="5717" height="6352"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 5445,16240 L 10973,10098"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 10848,10013 L 11160,9890 
11071,10213 10848,10013 Z"/>
+        <text class="SVGTextShape" transform="rotate(-48 8335 13265)"><tspan 
class="TextParagraph"><tspan class="TextPosition" x="8335" y="13265"><tspan 
font-family="Liberation Sans, sans-serif" font-size="458px" font-weight="700" 
fill="rgb(0,0,0)" stroke="none" style="white-space: 
pre">1</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id12">
+        <rect class="BoundingBox" stroke="none" fill="none" x="7984" y="16714" 
width="4765" height="321"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 8264,16875 L 12747,16875"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 8284,17025 L 7984,16875 
8284,16725 8284,17025 Z"/>
+        <text class="SVGTextShape"><tspan class="TextParagraph"><tspan 
class="TextPosition" x="10238" y="17034"><tspan font-family="Liberation Sans, 
sans-serif" font-size="458px" font-weight="700" fill="rgb(0,0,0)" stroke="none" 
style="white-space: pre">2</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id13">
+        <rect class="BoundingBox" stroke="none" fill="none" x="15444" y="9890" 
width="327" height="6352"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 15605,16240 L 15605,10170"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 15455,10190 L 15605,9890 
15755,10190 15455,10190 Z"/>
+        <text class="SVGTextShape" transform="rotate(-90 15764 13192)"><tspan 
class="TextParagraph"><tspan class="TextPosition" x="15764" y="13192"><tspan 
font-family="Liberation Sans, sans-serif" font-size="458px" font-weight="700" 
fill="rgb(0,0,0)" stroke="none" style="white-space: 
pre">3</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id14">
+        <rect class="BoundingBox" stroke="none" fill="none" x="6080" y="9889" 
width="5717" height="6352"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 6267,16032 L 11795,9890"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 6392,16117 L 6080,16240 
6169,15917 6392,16117 Z"/>
+        <text class="SVGTextShape" transform="rotate(-48 8970 13265)"><tspan 
class="TextParagraph"><tspan class="TextPosition" x="8970" y="13265"><tspan 
font-family="Liberation Sans, sans-serif" font-size="458px" font-weight="700" 
fill="rgb(0,0,0)" stroke="none" style="white-space: 
pre">4</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.CustomShape">
+       <g id="id15">
+        <rect class="BoundingBox" stroke="none" fill="none" x="12746" 
y="18143" width="6671" height="1273"/>
+        <path fill="rgb(114,159,207)" stroke="none" d="M 16081,19414 L 
12747,19414 12747,18144 19415,18144 19415,19414 16081,19414 Z"/>
+        <path fill="none" stroke="rgb(52,101,164)" d="M 16081,19414 L 
12747,19414 12747,18144 19415,18144 19415,19414 16081,19414 Z"/>
+        <text class="SVGTextShape"><tspan class="TextParagraph"><tspan 
class="TextPosition" x="14459" y="18999"><tspan font-family="Liberation Sans, 
sans-serif" font-size="635px" font-weight="400" fill="rgb(0,0,0)" stroke="none" 
style="white-space: pre">Credit Card</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id16">
+        <rect class="BoundingBox" stroke="none" fill="none" x="7985" y="17442" 
width="4765" height="1340"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 8256,17582 L 12748,18780"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 8236,17732 L 7985,17510 
8314,17442 8236,17732 Z"/>
+        <text class="SVGTextShape" transform="rotate(14.9 10202 18265)"><tspan 
class="TextParagraph"><tspan class="TextPosition" x="10202" y="18265"><tspan 
font-family="Liberation Sans, sans-serif" font-size="458px" font-weight="700" 
fill="rgb(0,0,0)" stroke="none" style="white-space: 
pre">5</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id17">
+        <rect class="BoundingBox" stroke="none" fill="none" x="1791" y="3540" 
width="326" height="12702"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 1952,16240 L 1952,3820"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 1802,3840 L 1952,3540 
2102,3840 1802,3840 Z"/>
+        <text class="SVGTextShape" transform="rotate(-90 2111 10017)"><tspan 
class="TextParagraph"><tspan class="TextPosition" x="2111" y="10017"><tspan 
font-family="Liberation Sans, sans-serif" font-size="458px" font-weight="700" 
fill="rgb(0,0,0)" stroke="none" style="white-space: 
pre">6</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id18">
+        <rect class="BoundingBox" stroke="none" fill="none" x="2414" y="3539" 
width="343" height="12702"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 2587,15960 L 2587,3540"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 2737,15940 L 2587,16240 
2437,15940 2737,15940 Z"/>
+        <text class="SVGTextShape" transform="rotate(-90 2746 10601)"><tspan 
class="TextParagraph"><tspan class="TextPosition" x="2746" y="10601"><tspan 
font-family="Liberation Sans, sans-serif" font-size="458px" font-weight="700" 
fill="rgb(0,0,0)" stroke="none" style="white-space: pre">7a / 
7b</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id19">
+        <rect class="BoundingBox" stroke="none" fill="none" x="6714" y="9890" 
width="5717" height="6352"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 6715,16240 L 12243,10098"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 12118,10013 L 12430,9890 
12341,10213 12118,10013 Z"/>
+        <text class="SVGTextShape" transform="rotate(-48 9215 13699)"><tspan 
class="TextParagraph"><tspan class="TextPosition" x="9215" y="13699"><tspan 
font-family="Liberation Sans, sans-serif" font-size="458px" font-weight="700" 
fill="rgb(0,0,0)" stroke="none" style="white-space: pre">8a / 
8b</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id20">
+        <rect class="BoundingBox" stroke="none" fill="none" x="7984" y="2427" 
width="2860" height="326"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 8264,2588 L 10842,2588"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 8284,2738 L 7984,2588 
8284,2438 8284,2738 Z"/>
+        <text class="SVGTextShape"><tspan class="TextParagraph"><tspan 
class="TextPosition" x="9158" y="2747"><tspan font-family="Liberation Sans, 
sans-serif" font-size="458px" font-weight="700" fill="rgb(0,0,0)" stroke="none" 
style="white-space: pre">8c</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id21">
+        <rect class="BoundingBox" stroke="none" fill="none" x="7985" y="3066" 
width="2860" height="317"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 8265,3223 L 10843,3223"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 8285,3373 L 7985,3223 
8285,3073 8285,3373 Z"/>
+        <text class="SVGTextShape"><tspan class="TextParagraph"><tspan 
class="TextPosition" x="9172" y="3382"><tspan font-family="Liberation Sans, 
sans-serif" font-size="458px" font-weight="700" fill="rgb(0,0,0)" stroke="none" 
style="white-space: pre">11</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id22">
+        <rect class="BoundingBox" stroke="none" fill="none" x="14797" y="4493" 
width="343" height="2224"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 14970,6715 L 14970,4773"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 14820,4793 L 14970,4493 
15120,4793 14820,4793 Z"/>
+        <text class="SVGTextShape" transform="rotate(-90 15129 6315)"><tspan 
class="TextParagraph"><tspan class="TextPosition" x="15129" y="6315"><tspan 
font-family="Liberation Sans, sans-serif" font-size="458px" font-weight="700" 
fill="rgb(0,0,0)" stroke="none" style="white-space: pre">9a / 
9b</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id23">
+        <rect class="BoundingBox" stroke="none" fill="none" x="19097" y="3540" 
width="5082" height="5082"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 19295,3738 L 24177,8620"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 19203,3858 L 19097,3540 
19415,3646 19203,3858 Z"/>
+        <text class="SVGTextShape" transform="rotate(44.9 21345 6012)"><tspan 
class="TextParagraph"><tspan class="TextPosition" x="21345" y="6012"><tspan 
font-family="Liberation Sans, sans-serif" font-size="458px" font-weight="700" 
fill="rgb(0,0,0)" stroke="none" style="white-space: 
pre">10</tspan></tspan></tspan></text>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id24">
+        <rect class="BoundingBox" stroke="none" fill="none" x="24662" y="4493" 
width="301" height="4129"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 24812,8620 L 24812,4773"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 24662,4793 L 24812,4493 
24962,4793 24662,4793 Z"/>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id25">
+        <rect class="BoundingBox" stroke="none" fill="none" x="19096" y="3073" 
width="3812" height="301"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 22627,3223 L 19097,3223"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 22607,3073 L 22907,3223 
22607,3373 22607,3073 Z"/>
+       </g>
+      </g>
+      <g class="com.sun.star.drawing.LineShape">
+       <g id="id26">
+        <rect class="BoundingBox" stroke="none" fill="none" x="19096" 
y="10208" width="5717" height="6034"/>
+        <path fill="none" stroke="rgb(0,0,0)" d="M 19097,16240 L 24619,10411"/>
+        <path fill="rgb(0,0,0)" stroke="none" d="M 24497,10323 L 24812,10208 
24715,10529 24497,10323 Z"/>
+       </g>
+      </g>
+     </g>
+    </g>
+   </g>
+  </g>
+ </g>
+</svg>
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]