gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis] 01/01: folding history in preparation of GNU Anastasis


From: gnunet
Subject: [taler-anastasis] 01/01: folding history in preparation of GNU Anastasis v0.0.0 release
Date: Fri, 30 Jul 2021 10:40:27 +0200

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

grothoff pushed a commit to branch master
in repository anastasis.

commit 7e669bcf6b6336ec429da949bcb4aa456971dba2
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Fri Jul 30 10:38:27 2021 +0200

    folding history in preparation of GNU Anastasis v0.0.0 release
---
 .gitignore                                         |   127 +
 .gitmodules                                        |     3 +
 ABOUT-NLS                                          |  1379 +++
 AUTHORS                                            |     3 +
 COPYING                                            |   661 ++
 COPYING.AGPL                                       |   661 ++
 ChangeLog                                          |     8 +
 INSTALL                                            |   368 +
 Makefile.am                                        |    25 +
 NEWS                                               |     0
 README                                             |    42 +
 bootstrap                                          |    35 +
 config.rpath                                       |   684 ++
 configure.ac                                       |   349 +
 contrib/Makefile.am                                |    31 +
 contrib/gana                                       |     1 +
 contrib/gana-update.sh                             |    11 +
 contrib/gana.sh                                    |    10 +
 contrib/gnunet.tag                                 |   235 +
 contrib/microhttpd.tag                             |   122 +
 contrib/pogen.sh                                   |     3 +
 contrib/provider-list.json                         |    22 +
 contrib/redux.al.json                              |    33 +
 contrib/redux.be.json                              |    39 +
 contrib/redux.ch.json                              |    40 +
 contrib/redux.countries.json                       |   166 +
 contrib/redux.cz.json                              |    33 +
 contrib/redux.de.json                              |    54 +
 contrib/redux.dk.json                              |    32 +
 contrib/redux.in.json                              |    39 +
 contrib/redux.it.json                              |    33 +
 contrib/redux.jp.json                              |    39 +
 contrib/redux.sk.json                              |    33 +
 contrib/redux.us.json                              |    38 +
 contrib/redux.xx.json                              |    29 +
 contrib/redux.xy.json                              |    29 +
 contrib/uncrustify.cfg                             |    95 +
 contrib/uncrustify_precommit                       |    35 +
 debian/.gitignore                                  |    13 +
 debian/anastasis-cli.install                       |     2 +
 debian/anastasis-httpd.README.Debian               |    10 +
 debian/anastasis-httpd.config                      |    38 +
 debian/anastasis-httpd.install                     |    13 +
 debian/anastasis-httpd.postinst                    |    93 +
 debian/anastasis-httpd.postrm                      |    72 +
 debian/anastasis-httpd.prerm                       |    16 +
 debian/anastasis-httpd.service                     |     8 +
 debian/anastasis-httpd.templates                   |     7 +
 debian/changelog                                   |    37 +
 debian/conf/apache.conf                            |    11 +
 debian/conf/nginx.conf                             |     8 +
 debian/control                                     |    77 +
 debian/copyright                                   |   699 ++
 debian/db/install/pgsql                            |    78 +
 debian/etc/taler/conf.d/anastasis.conf             |     2 +
 debian/libanastasis-dev.install                    |     2 +
 debian/libanastasis.docs                           |     1 +
 debian/libanastasis.install                        |     4 +
 debian/po/POTFILES.in                              |     1 +
 debian/rules                                       |    39 +
 debian/source/format                               |     1 +
 debian/source/options                              |     3 +
 debian/upstream/metadata                           |     4 +
 debian/upstream/signing-key.asc                    |   637 +
 debian/watch                                       |     3 +
 doc/.gitignore                                     |     8 +
 doc/Makefile.am                                    |    23 +
 doc/agpl.texi                                      |   698 ++
 doc/anastasis-config.1                             |   123 +
 doc/anastasis-figures/anastasis-db.png             |   Bin 0 -> 38801 bytes
 .../anastasis_challenge_payment.png                |   Bin 0 -> 20331 bytes
 doc/anastasis-figures/anastasis_challengecode.png  |   Bin 0 -> 17678 bytes
 doc/anastasis-figures/anastasis_reducer_backup.png |   Bin 0 -> 59981 bytes
 .../anastasis_reducer_recovery.png                 |   Bin 0 -> 52610 bytes
 doc/anastasis-figures/anastasis_truth.png          |   Bin 0 -> 19493 bytes
 doc/anastasis-figures/anastasis_truth_payment.png  |   Bin 0 -> 13430 bytes
 doc/anastasis-httpd.1                              |    78 +
 doc/anastasis-reducer.1                            |    93 +
 doc/anastasis.conf.5                               |   151 +
 doc/anastasis.texi                                 |  6093 ++++++++++
 doc/brown-paper.css                                |    63 +
 doc/config.sh                                      |   116 +
 doc/docstyle.css                                   |    76 +
 doc/doxygen/.gitignore                             |     2 +
 doc/doxygen/Makefile.am                            |    18 +
 doc/doxygen/anastasis.doxy                         |   247 +
 doc/doxygen/taler-exchange.tag                     |     0
 doc/doxygen/taler-merchant.tag                     |     0
 doc/fdl-1.3.texi                                   |   506 +
 doc/highlight.pack.js                              |     2 +
 doc/lgpl.texi                                      |   549 +
 doc/manual.info                                    |   Bin 0 -> 140832 bytes
 doc/mdate-sh                                       |   228 +
 doc/sphinx/.gitignore                              |     1 +
 doc/sphinx/Makefile                                |   179 +
 doc/sphinx/README                                  |    10 +
 .../__pycache__/typescriptdomain.cpython-39.pyc    |   Bin 0 -> 15399 bytes
 doc/sphinx/_exts/httpdomain/__init__.py            |    14 +
 .../httpdomain/__pycache__/__init__.cpython-37.pyc |   Bin 0 -> 514 bytes
 .../httpdomain/__pycache__/__init__.cpython-38.pyc |   Bin 0 -> 518 bytes
 .../httpdomain/__pycache__/__init__.cpython-39.pyc |   Bin 0 -> 520 bytes
 .../__pycache__/httpdomain.cpython-37.pyc          |   Bin 0 -> 24431 bytes
 .../__pycache__/httpdomain.cpython-38.pyc          |   Bin 0 -> 24436 bytes
 .../__pycache__/httpdomain.cpython-39.pyc          |   Bin 0 -> 24344 bytes
 doc/sphinx/_exts/httpdomain/autohttp/__init__.py   |    11 +
 doc/sphinx/_exts/httpdomain/autohttp/bottle.py     |   114 +
 doc/sphinx/_exts/httpdomain/autohttp/common.py     |    36 +
 doc/sphinx/_exts/httpdomain/autohttp/flask.py      |    48 +
 doc/sphinx/_exts/httpdomain/autohttp/flask_base.py |   215 +
 doc/sphinx/_exts/httpdomain/autohttp/flaskqref.py  |    80 +
 doc/sphinx/_exts/httpdomain/autohttp/tornado.py    |   128 +
 doc/sphinx/_exts/httpdomain/httpdomain.py          |   772 ++
 doc/sphinx/_exts/taler_sphinx_theme/__init__.py    |   166 +
 .../__pycache__/__init__.cpython-37.pyc            |   Bin 0 -> 6508 bytes
 .../__pycache__/__init__.cpython-38.pyc            |   Bin 0 -> 6560 bytes
 .../__pycache__/__init__.cpython-39.pyc            |   Bin 0 -> 6548 bytes
 .../guzzle_sphinx_theme/comments.html              |    16 +
 .../guzzle_sphinx_theme/globaltoc.html             |    14 +
 .../guzzle_sphinx_theme/layout.html                |   172 +
 .../guzzle_sphinx_theme/localtoc.html              |    10 +
 .../guzzle_sphinx_theme/logo-text.html             |     1 +
 .../guzzle_sphinx_theme/search.html                |    48 +
 .../guzzle_sphinx_theme/searchbox.html             |    15 +
 .../static/css/bootstrap-theme.min.css             |     7 +
 .../static/css/bootstrap.min.css                   |     7 +
 .../static/fonts/glyphicons-halflings-regular.eot  |   Bin 0 -> 20290 bytes
 .../static/fonts/glyphicons-halflings-regular.svg  |   229 +
 .../static/fonts/glyphicons-halflings-regular.ttf  |   Bin 0 -> 41236 bytes
 .../static/fonts/glyphicons-halflings-regular.woff |   Bin 0 -> 23292 bytes
 .../open-sans/fonts/OpenSans-Bold-webfont.eot      |   Bin 0 -> 30858 bytes
 .../open-sans/fonts/OpenSans-Bold-webfont.svg      |   251 +
 .../open-sans/fonts/OpenSans-Bold-webfont.ttf      |   Bin 0 -> 30680 bytes
 .../open-sans/fonts/OpenSans-Bold-webfont.woff     |   Bin 0 -> 19788 bytes
 .../fonts/OpenSans-BoldItalic-webfont.eot          |   Bin 0 -> 34166 bytes
 .../fonts/OpenSans-BoldItalic-webfont.svg          |   251 +
 .../fonts/OpenSans-BoldItalic-webfont.ttf          |   Bin 0 -> 33960 bytes
 .../fonts/OpenSans-BoldItalic-webfont.woff         |   Bin 0 -> 21940 bytes
 .../open-sans/fonts/OpenSans-ExtraBold-webfont.eot |   Bin 0 -> 30602 bytes
 .../open-sans/fonts/OpenSans-ExtraBold-webfont.svg |   251 +
 .../open-sans/fonts/OpenSans-ExtraBold-webfont.ttf |   Bin 0 -> 30404 bytes
 .../fonts/OpenSans-ExtraBold-webfont.woff          |   Bin 0 -> 19972 bytes
 .../fonts/OpenSans-ExtraBoldItalic-webfont.eot     |   Bin 0 -> 33758 bytes
 .../fonts/OpenSans-ExtraBoldItalic-webfont.svg     |   251 +
 .../fonts/OpenSans-ExtraBoldItalic-webfont.ttf     |   Bin 0 -> 33532 bytes
 .../fonts/OpenSans-ExtraBoldItalic-webfont.woff    |   Bin 0 -> 21824 bytes
 .../open-sans/fonts/OpenSans-Italic-webfont.eot    |   Bin 0 -> 34798 bytes
 .../open-sans/fonts/OpenSans-Italic-webfont.svg    |   251 +
 .../open-sans/fonts/OpenSans-Italic-webfont.ttf    |   Bin 0 -> 34612 bytes
 .../open-sans/fonts/OpenSans-Italic-webfont.woff   |   Bin 0 -> 22416 bytes
 .../open-sans/fonts/OpenSans-Light-webfont.eot     |   Bin 0 -> 29794 bytes
 .../open-sans/fonts/OpenSans-Light-webfont.svg     |   252 +
 .../open-sans/fonts/OpenSans-Light-webfont.ttf     |   Bin 0 -> 29612 bytes
 .../open-sans/fonts/OpenSans-Light-webfont.woff    |   Bin 0 -> 19396 bytes
 .../fonts/OpenSans-LightItalic-webfont.eot         |   Bin 0 -> 34578 bytes
 .../fonts/OpenSans-LightItalic-webfont.svg         |   252 +
 .../fonts/OpenSans-LightItalic-webfont.ttf         |   Bin 0 -> 34368 bytes
 .../fonts/OpenSans-LightItalic-webfont.woff        |   Bin 0 -> 22444 bytes
 .../open-sans/fonts/OpenSans-Regular-webfont.eot   |   Bin 0 -> 29934 bytes
 .../open-sans/fonts/OpenSans-Regular-webfont.svg   |   252 +
 .../open-sans/fonts/OpenSans-Regular-webfont.ttf   |   Bin 0 -> 29744 bytes
 .../open-sans/fonts/OpenSans-Regular-webfont.woff  |   Bin 0 -> 19624 bytes
 .../open-sans/fonts/OpenSans-Semibold-webfont.eot  |   Bin 0 -> 30350 bytes
 .../open-sans/fonts/OpenSans-Semibold-webfont.svg  |   251 +
 .../open-sans/fonts/OpenSans-Semibold-webfont.ttf  |   Bin 0 -> 30156 bytes
 .../open-sans/fonts/OpenSans-Semibold-webfont.woff |   Bin 0 -> 19736 bytes
 .../fonts/OpenSans-SemiboldItalic-webfont.eot      |   Bin 0 -> 34866 bytes
 .../fonts/OpenSans-SemiboldItalic-webfont.svg      |   251 +
 .../fonts/OpenSans-SemiboldItalic-webfont.ttf      |   Bin 0 -> 34644 bytes
 .../fonts/OpenSans-SemiboldItalic-webfont.woff     |   Bin 0 -> 22332 bytes
 .../static/fonts/open-sans/stylesheet.css          |   136 +
 .../source-serif-pro/EOT/SourceSerifPro-Black.eot  |   Bin 0 -> 111902 bytes
 .../source-serif-pro/EOT/SourceSerifPro-Bold.eot   |   Bin 0 -> 113630 bytes
 .../EOT/SourceSerifPro-ExtraLight.eot              |   Bin 0 -> 112362 bytes
 .../source-serif-pro/EOT/SourceSerifPro-Light.eot  |   Bin 0 -> 112866 bytes
 .../EOT/SourceSerifPro-Regular.eot                 |   Bin 0 -> 112354 bytes
 .../EOT/SourceSerifPro-Semibold.eot                |   Bin 0 -> 113510 bytes
 .../static/fonts/source-serif-pro/LICENSE.txt      |    93 +
 .../source-serif-pro/OTF/SourceSerifPro-Black.otf  |   Bin 0 -> 91216 bytes
 .../source-serif-pro/OTF/SourceSerifPro-Bold.otf   |   Bin 0 -> 92760 bytes
 .../OTF/SourceSerifPro-ExtraLight.otf              |   Bin 0 -> 89720 bytes
 .../source-serif-pro/OTF/SourceSerifPro-Light.otf  |   Bin 0 -> 91424 bytes
 .../OTF/SourceSerifPro-Regular.otf                 |   Bin 0 -> 91276 bytes
 .../OTF/SourceSerifPro-Semibold.otf                |   Bin 0 -> 93144 bytes
 .../static/fonts/source-serif-pro/README.md        |    18 +
 .../static/fonts/source-serif-pro/ReadMe.html      |    72 +
 .../source-serif-pro/SourceSerifProReadMe.html     |   189 +
 .../source-serif-pro/TTF/SourceSerifPro-Black.ttf  |   Bin 0 -> 111572 bytes
 .../source-serif-pro/TTF/SourceSerifPro-Bold.ttf   |   Bin 0 -> 113320 bytes
 .../TTF/SourceSerifPro-ExtraLight.ttf              |   Bin 0 -> 112004 bytes
 .../source-serif-pro/TTF/SourceSerifPro-Light.ttf  |   Bin 0 -> 112528 bytes
 .../TTF/SourceSerifPro-Regular.ttf                 |   Bin 0 -> 112048 bytes
 .../TTF/SourceSerifPro-Semibold.ttf                |   Bin 0 -> 113168 bytes
 .../WOFF/OTF/SourceSerifPro-Black.otf.woff         |   Bin 0 -> 48788 bytes
 .../WOFF/OTF/SourceSerifPro-Bold.otf.woff          |   Bin 0 -> 51188 bytes
 .../WOFF/OTF/SourceSerifPro-ExtraLight.otf.woff    |   Bin 0 -> 47136 bytes
 .../WOFF/OTF/SourceSerifPro-Light.otf.woff         |   Bin 0 -> 49672 bytes
 .../WOFF/OTF/SourceSerifPro-Regular.otf.woff       |   Bin 0 -> 48972 bytes
 .../WOFF/OTF/SourceSerifPro-Semibold.otf.woff      |   Bin 0 -> 51272 bytes
 .../WOFF/TTF/SourceSerifPro-Black.ttf.woff         |   Bin 0 -> 49496 bytes
 .../WOFF/TTF/SourceSerifPro-Bold.ttf.woff          |   Bin 0 -> 51924 bytes
 .../WOFF/TTF/SourceSerifPro-ExtraLight.ttf.woff    |   Bin 0 -> 48784 bytes
 .../WOFF/TTF/SourceSerifPro-Light.ttf.woff         |   Bin 0 -> 50792 bytes
 .../WOFF/TTF/SourceSerifPro-Regular.ttf.woff       |   Bin 0 -> 49604 bytes
 .../WOFF/TTF/SourceSerifPro-Semibold.ttf.woff      |   Bin 0 -> 51772 bytes
 .../static/fonts/source-serif-pro/bower.json       |    15 +
 .../fonts/source-serif-pro/source-serif-pro.css    |    65 +
 .../guzzle_sphinx_theme/static/guzzle.css_t        |  1037 ++
 .../guzzle_sphinx_theme/static/jquery.js           |     5 +
 .../guzzle_sphinx_theme/static/jquery.min.map      |     1 +
 .../guzzle_sphinx_theme/static/js/bootstrap.js     |  1951 +++
 .../guzzle_sphinx_theme/static/js/bootstrap.min.js |     6 +
 .../guzzle_sphinx_theme/theme.conf                 |    40 +
 doc/sphinx/_exts/typescriptdomain.py               |   587 +
 doc/sphinx/_static/.gitignore                      |     0
 doc/sphinx/anastasis-db.png                        |   Bin 0 -> 38801 bytes
 doc/sphinx/anastasis_challenge_payment.png         |   Bin 0 -> 20331 bytes
 doc/sphinx/anastasis_challengecode.png             |   Bin 0 -> 17678 bytes
 doc/sphinx/anastasis_reducer_backup.drawio         |     1 +
 doc/sphinx/anastasis_reducer_backup.png            |   Bin 0 -> 59981 bytes
 doc/sphinx/anastasis_reducer_backup.svg            |     3 +
 doc/sphinx/anastasis_reducer_recovery.drawio       |     1 +
 doc/sphinx/anastasis_reducer_recovery.png          |   Bin 0 -> 52610 bytes
 doc/sphinx/anastasis_reducer_recovery.svg          |     3 +
 doc/sphinx/anastasis_truth.png                     |   Bin 0 -> 19493 bytes
 doc/sphinx/anastasis_truth_payment.png             |   Bin 0 -> 13430 bytes
 doc/sphinx/authentication.rst                      |   110 +
 doc/sphinx/conf.py                                 |   304 +
 doc/sphinx/configuration.rst                       |    30 +
 doc/sphinx/core/api-common.rst                     |   360 +
 doc/sphinx/cryptography.rst                        |   298 +
 doc/sphinx/db.rst                                  |    28 +
 doc/sphinx/design-documents/001-anastasis-ux.rst   |   318 +
 doc/sphinx/design-documents/999-template.rst       |    25 +
 doc/sphinx/design-documents/index.rst              |    13 +
 doc/sphinx/fdl-1.3.rst                             |   453 +
 doc/sphinx/frags/README.md                         |    18 +
 doc/sphinx/frags/configuration-format.rst          |    69 +
 doc/sphinx/frags/installing-anastasis-gtk.rst      |    31 +
 doc/sphinx/frags/installing-anastasis.rst          |    30 +
 doc/sphinx/frags/installing-debian.rst             |    59 +
 doc/sphinx/frags/installing-gnunet-gtk.rst         |    28 +
 doc/sphinx/frags/installing-gnunet.rst             |    21 +
 doc/sphinx/frags/installing-taler-exchange.rst     |    16 +
 doc/sphinx/frags/installing-taler-merchant.rst     |    34 +
 doc/sphinx/frags/installing-ubuntu.rst             |    27 +
 doc/sphinx/frags/list-of-dependencies.rst          |    21 +
 doc/sphinx/frags/using-anastasis-config.rst        |    50 +
 doc/sphinx/genindex.rst                            |     2 +
 doc/sphinx/global-licensing.rst                    |    64 +
 doc/sphinx/index.rst                               |    74 +
 doc/sphinx/installation.rst                        |   175 +
 doc/sphinx/introduction.rst                        |    77 +
 doc/sphinx/manindex.rst                            |     9 +
 doc/sphinx/manpages/anastasis-config.1.rst         |   101 +
 doc/sphinx/manpages/anastasis-gtk.1.rst            |    54 +
 doc/sphinx/manpages/anastasis-httpd.1.rst          |    58 +
 doc/sphinx/manpages/anastasis-reducer.1.rst        |    71 +
 doc/sphinx/manpages/anastasis.conf.5.rst           |   133 +
 doc/sphinx/reducer.rst                             |  1656 +++
 doc/sphinx/rest.rst                                |   508 +
 doc/stamp-1                                        |     4 +
 doc/stamp-2                                        |     4 +
 doc/stamp-3                                        |     4 +
 doc/stamp-vti                                      |     4 +
 doc/syntax.texi                                    |    44 +
 doc/system-documentation/.gitignore                |     7 +
 doc/system-documentation/bibliothek.bib            |   407 +
 doc/system-documentation/client_architecture.tex   |   309 +
 doc/system-documentation/design.tex                |   466 +
 doc/system-documentation/glossary.tex              |    19 +
 .../images/SD_truthupload.jpeg                     |   Bin 0 -> 72655 bytes
 doc/system-documentation/images/anastasis-db.png   |   Bin 0 -> 58761 bytes
 doc/system-documentation/images/bitcoin-keys.png   |   Bin 0 -> 166153 bytes
 doc/system-documentation/images/client_api.png     |   Bin 0 -> 17388 bytes
 doc/system-documentation/images/keys_anastasis.png |   Bin 0 -> 128275 bytes
 .../images/legend_keys_anastasis.png               |   Bin 0 -> 33015 bytes
 .../images/recovery_process.png                    |   Bin 0 -> 56690 bytes
 doc/system-documentation/images/secret_split.png   |   Bin 0 -> 71801 bytes
 doc/system-documentation/images/server_api.png     |   Bin 0 -> 32112 bytes
 .../images/system-architecture.png                 |   Bin 0 -> 139182 bytes
 .../images/system-architecture_2.png               |   Bin 0 -> 76910 bytes
 doc/system-documentation/images/system_design.png  |   Bin 0 -> 57272 bytes
 .../images/truth_anastasis.png                     |   Bin 0 -> 29767 bytes
 doc/system-documentation/images/user_id.png        |   Bin 0 -> 44157 bytes
 doc/system-documentation/implementation.tex        |   421 +
 doc/system-documentation/introduction.tex          |   224 +
 doc/system-documentation/related_work.tex          |   484 +
 doc/system-documentation/server_architecture.tex   |   134 +
 doc/system-documentation/thesis.bbl                |  1412 +++
 doc/system-documentation/thesis.pdf                |   Bin 0 -> 859824 bytes
 doc/system-documentation/thesis.tex                |    64 +
 doc/texinfo.tex                                    | 11772 +++++++++++++++++++
 doc/version-manual.texi                            |     4 +
 doc/visualization/anastasis_visualisation.odg      |   Bin 0 -> 23703 bytes
 doc/visualization/anastasis_visualisation.pdf      |   Bin 0 -> 48288 bytes
 doc/wireframe/logo-2018-dold.svg                   |    87 +
 doc/wireframe/menu-items.png                       |   Bin 0 -> 3475 bytes
 doc/wireframe/png-export/addpolicy.png             |   Bin 0 -> 29531 bytes
 doc/wireframe/png-export/addpolicymethod.png       |   Bin 0 -> 32358 bytes
 doc/wireframe/png-export/addtruth.png              |   Bin 0 -> 34171 bytes
 doc/wireframe/png-export/addtruthmail.png          |   Bin 0 -> 40073 bytes
 doc/wireframe/png-export/backupsettings.png        |   Bin 0 -> 35877 bytes
 doc/wireframe/png-export/menu.png                  |   Bin 0 -> 20556 bytes
 doc/wireframe/png-export/policy.png                |   Bin 0 -> 40257 bytes
 doc/wireframe/png-export/settings.png              |   Bin 0 -> 64908 bytes
 doc/wireframe/png-export/truth.png                 |   Bin 0 -> 43449 bytes
 doc/wireframe/png-export/userid.png                |   Bin 0 -> 46595 bytes
 doc/wireframe/settings.png                         |   Bin 0 -> 32191 bytes
 doc/wireframe/wireframes.epgz                      |   Bin 0 -> 91005 bytes
 m4/ax_lib_postgresql.m4                            |   155 +
 m4/ax_prog_doxygen.m4                              |   586 +
 m4/gettext.m4                                      |   420 +
 m4/iconv.m4                                        |   271 +
 m4/lib-ld.m4                                       |   119 +
 m4/lib-link.m4                                     |   777 ++
 m4/lib-prefix.m4                                   |   224 +
 m4/libcurl.m4                                      |   251 +
 m4/libgnurl.m4                                     |   250 +
 m4/nls.m4                                          |    32 +
 m4/po.m4                                           |   453 +
 m4/progtest.m4                                     |    91 +
 po/ChangeLog                                       |    12 +
 po/Makefile.in.in                                  |   483 +
 po/Makevars                                        |    78 +
 po/POTFILES.in                                     |     2 +
 po/Rules-quot                                      |    58 +
 po/boldquot.sed                                    |    10 +
 po/en@boldquot.header                              |    25 +
 po/en@quot.header                                  |    22 +
 po/insert-header.sin                               |    23 +
 po/quot.sed                                        |     6 +
 po/remove-potcdate.sin                             |    19 +
 src/Makefile.am                                    |     3 +
 src/authorization/Makefile.am                      |    98 +
 src/authorization/anastasis_authorization_plugin.c |   239 +
 .../anastasis_authorization_plugin_email.c         |   616 +
 .../anastasis_authorization_plugin_file.c          |   302 +
 .../anastasis_authorization_plugin_post.c          |   655 ++
 .../anastasis_authorization_plugin_sms.c           |   607 +
 .../authorization-email-messages.json              |    10 +
 src/authorization/authorization-post-messages.json |     7 +
 src/authorization/authorization-sms-messages.json  |     6 +
 src/backend/Makefile.am                            |    45 +
 src/backend/anastasis-httpd.c                      |   943 ++
 src/backend/anastasis-httpd.h                      |   225 +
 src/backend/anastasis-httpd_config.c               |   132 +
 src/backend/anastasis-httpd_config.h               |    41 +
 src/backend/anastasis-httpd_mhd.c                  |    70 +
 src/backend/anastasis-httpd_mhd.h                  |    61 +
 src/backend/anastasis-httpd_policy.c               |   252 +
 src/backend/anastasis-httpd_policy.h               |    66 +
 src/backend/anastasis-httpd_policy_upload.c        |  1211 ++
 src/backend/anastasis-httpd_terms.c                |    98 +
 src/backend/anastasis-httpd_terms.h                |    62 +
 src/backend/anastasis-httpd_truth.c                |  1428 +++
 src/backend/anastasis-httpd_truth.h                |    75 +
 src/backend/anastasis-httpd_truth_upload.c         |   855 ++
 src/backend/anastasis.conf                         |    77 +
 src/cli/.gitignore                                 |     6 +
 src/cli/Makefile.am                                |    56 +
 src/cli/anastasis-cli-redux.c                      |   366 +
 src/cli/resources/00-backup.json                   |     8 +
 src/cli/resources/00-recovery.json                 |     8 +
 src/cli/resources/01-backup.json                   |    41 +
 src/cli/resources/01-recovery.json                 |    41 +
 src/cli/resources/02-backup.json                   |    83 +
 src/cli/resources/02-recovery.json                 |    83 +
 src/cli/resources/03-backup.json                   |   155 +
 src/cli/resources/04-backup.json                   |   172 +
 src/cli/resources/05-backup.json                   |   213 +
 src/cli/resources/06-backup.json                   |   223 +
 src/cli/test_anastasis_reducer_1.conf              |     9 +
 src/cli/test_anastasis_reducer_2.conf              |     9 +
 src/cli/test_anastasis_reducer_3.conf              |     9 +
 src/cli/test_anastasis_reducer_4.conf              |     9 +
 .../test_anastasis_reducer_add_authentication.sh   |   134 +
 ...astasis_reducer_backup_enter_user_attributes.sh |   140 +
 .../test_anastasis_reducer_done_authentication.sh  |    65 +
 .../test_anastasis_reducer_done_policy_review.sh   |   105 +
 src/cli/test_anastasis_reducer_enter_secret.sh     |   417 +
 src/cli/test_anastasis_reducer_initialize_state.sh |    64 +
 ...tasis_reducer_recovery_enter_user_attributes.sh |   516 +
 src/cli/test_anastasis_reducer_select_continent.sh |   116 +
 src/cli/test_anastasis_reducer_select_country.sh   |   144 +
 src/cli/test_reducer.conf                          |   197 +
 src/cli/user-details-example.json                  |     6 +
 src/include/Makefile.am                            |    15 +
 src/include/anastasis.h                            |   986 ++
 src/include/anastasis_authorization_lib.h          |    52 +
 src/include/anastasis_authorization_plugin.h       |   183 +
 src/include/anastasis_crypto_lib.h                 |   533 +
 src/include/anastasis_database_lib.h               |    49 +
 src/include/anastasis_database_plugin.h            |   655 ++
 src/include/anastasis_json.h                       |   410 +
 src/include/anastasis_redux.h                      |   127 +
 src/include/anastasis_service.h                    |   703 ++
 src/include/anastasis_testing_lib.h                |   884 ++
 src/include/anastasis_util_lib.h                   |    82 +
 src/include/gettext.h                              |    71 +
 src/include/platform.h                             |    60 +
 src/lib/Makefile.am                                |    27 +
 src/lib/anastasis_backup.c                         |   979 ++
 src/lib/anastasis_recovery.c                       |  1425 +++
 src/lib/test_merchant.priv                         |     1 +
 src/reducer/Makefile.am                            |    45 +
 src/reducer/anastasis_api_backup_redux.c           |  4893 ++++++++
 src/reducer/anastasis_api_recovery_redux.c         |  2558 ++++
 src/reducer/anastasis_api_redux.c                  |  1730 +++
 src/reducer/anastasis_api_redux.h                  |   347 +
 src/reducer/validation_CH_AHV.c                    |    57 +
 src/reducer/validation_CZ_BN.c                     |    59 +
 src/reducer/validation_DE_SVN.c                    |    98 +
 src/reducer/validation_DE_TIN.c                    |    57 +
 src/reducer/validation_IN_AADHAR.c                 |   113 +
 src/reducer/validation_IT_CF.c                     |   198 +
 src/reducer/validation_XX_SQUARE.c                 |    48 +
 src/reducer/validation_XY_PRIME.c                  |    53 +
 src/restclient/Makefile.am                         |    42 +
 src/restclient/anastasis_api_config.c              |   317 +
 src/restclient/anastasis_api_curl_defaults.c       |    46 +
 src/restclient/anastasis_api_curl_defaults.h       |    38 +
 src/restclient/anastasis_api_keyshare_lookup.c     |   508 +
 src/restclient/anastasis_api_policy_lookup.c       |   356 +
 src/restclient/anastasis_api_policy_store.c        |   527 +
 src/restclient/anastasis_api_truth_store.c         |   354 +
 src/stasis/Datenbank-Schema.xml                    |     1 +
 src/stasis/Makefile.am                             |    95 +
 src/stasis/anastasis-dbinit.c                      |   112 +
 src/stasis/anastasis_db_plugin.c                   |   146 +
 src/stasis/anastasis_db_postgres.conf              |     7 +
 src/stasis/drop0001.sql                            |    37 +
 src/stasis/plugin_anastasis_postgres.c             |  2301 ++++
 src/stasis/stasis-0000.sql                         |   293 +
 src/stasis/stasis-0001.sql                         |   194 +
 src/stasis/stasis-postgres.conf                    |     6 +
 src/stasis/test_anastasis_db.c                     |   344 +
 src/stasis/test_anastasis_db_postgres.conf         |    10 +
 src/testing/.gitignore                             |     3 +
 src/testing/Makefile.am                            |    91 +
 src/testing/sms_authentication.sh                  |    10 +
 src/testing/test_anastasis.c                       |   464 +
 src/testing/test_anastasis_api.c                   |   421 +
 src/testing/test_anastasis_api.conf                |   264 +
 .../.config/taler/exchange/account-2.json          |     3 +
 .../.config/taler/merchant/account-3.json          |     1 +
 .../.config/taler/merchant/default.priv            |     1 +
 .../.config/taler/merchant/dtip.priv               |     1 +
 .../.config/taler/merchant/nulltip.priv            |     1 +
 .../.config/taler/merchant/reserve/dtip.priv       |     1 +
 .../.config/taler/merchant/reserve/nulltip.priv    |     1 +
 .../.config/taler/merchant/reserve/tip.priv        |     1 +
 .../.config/taler/merchant/tip.priv                |   Bin 0 -> 32 bytes
 .../.config/taler/merchant/tor.priv                |   Bin 0 -> 32 bytes
 .../.config/taler/test.json                        |     8 +
 .../share/taler/exchange/offline-keys/master.priv  |     1 +
 .../.local/share/taler/merchant/merchant.priv      |     1 +
 src/testing/testing_api_cmd_config.c               |   206 +
 src/testing/testing_api_cmd_keyshare_lookup.c      |   465 +
 src/testing/testing_api_cmd_policy_lookup.c        |   267 +
 src/testing/testing_api_cmd_policy_store.c         |   397 +
 src/testing/testing_api_cmd_truth_store.c          |   436 +
 src/testing/testing_api_helpers.c                  |   173 +
 src/testing/testing_api_trait_account_priv.c       |    72 +
 src/testing/testing_api_trait_account_pub.c        |    72 +
 src/testing/testing_api_trait_code.c               |    73 +
 src/testing/testing_api_trait_eks.c                |    58 +
 src/testing/testing_api_trait_hash.c               |    72 +
 src/testing/testing_api_trait_payment_secret.c     |    73 +
 src/testing/testing_api_trait_salt.c               |    74 +
 src/testing/testing_api_trait_truth_key.c          |    58 +
 src/testing/testing_api_trait_truth_uuid.c         |    74 +
 src/testing/testing_cmd_challenge_answer.c         |   584 +
 src/testing/testing_cmd_policy_create.c            |   208 +
 src/testing/testing_cmd_recover_secret.c           |   518 +
 src/testing/testing_cmd_secret_share.c             |   441 +
 src/testing/testing_cmd_truth_upload.c             |   383 +
 src/testing/testing_trait_challenge.c              |    72 +
 src/testing/testing_trait_core_secret.c            |    74 +
 src/testing/testing_trait_policy.c                 |    73 +
 src/testing/testing_trait_truth.c                  |    73 +
 src/util/Makefile.am                               |    57 +
 src/util/anastasis-config.in                       |    12 +
 src/util/anastasis_crypto.c                        |   637 +
 src/util/os_installation.c                         |    71 +
 src/util/paths.conf                                |    29 +
 src/util/test_anastasis_crypto.c                   |   346 +
 486 files changed, 93323 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f10bbe4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,127 @@
+*~
+Makefile
+Makefile.in
+aclocal.m4
+anastasis_config.h
+anastasis_config.h.in
+anastasis_config.h.in~
+autom4te.cache/
+compile
+config.guess
+config.log
+config.status
+config.sub
+configure
+contrib/uncrustify.sh
+depcomp
+doc/Makefile
+install-sh
+libtool
+ltmain.sh
+missing
+src/Makefile
+src/Makefile.in
+m4/*.m4
+po/POTFILES
+po/Makevars.template
+po/anastasis.pot
+po/remove-potcdate.sed
+po/stamp-po
+**/.deps/
+**/.libs/
+src/stasis/Makefile
+src/stasis/Makefile.in
+src/stasis/libanastasis_plugin_db_postgres.la
+src/stasis/plugin_anastasis_postgres.lo
+src/stasis/plugin_anastasis_postgres.o
+src/stasis/.deps/
+src/backend/Makefile
+src/backend/Makefile.in
+src/include/Makefile
+src/include/Makefile.in
+src/testing/test_anastasis_api_home/.local/share/taler/exchange/live-keys/
+src/testing/test_anastasis_api_home/.local/share/taler/exchange/revocations/
+src/testing/test_anastasis_api_home/.local/share/taler/exchange/wirefees/
+src/testing/test_anastasis_api_home/.local/share/taler/auditors/
+src/testing/test_anastasis_api_home/.local/share/taler/auditor/
+src/testing/test_anastasis_api_home/.local/share/taler/taler-exchange-secmod-*/
+src/testing/test_anastasis_api_home/.local/share/taler/exchange/offline-keys/*.pub
+src/util/child_management_test.txt
+**/*.log
+src/lib/*.in
+**/*.o
+**/*.la
+**/*.lo
+**/*.trs
+**/Makefile
+**/Makefile.in
+stamp-h1
+test-driver
+uncrustify.cfg
+doc/Makefile.in
+m4/libtool.m4
+m4/ltoptions.m4
+m4/ltsugar.m4
+m4/ltversion.m4
+m4/lt~obsolete.m4
+*.swp
+src/lib/.libs
+*.lo
+*.o
+*.la
+src/util/.deps/
+src/backend/.deps/
+src/backend/.idea/
+src/backend/.libs/
+src/stasis/.libs/
+src/backend/anastasis-httpd
+doc/Makefile.in
+src/include/Makefile.in
+
+A
+A
+
+src/stasis/anastasis-dbinit
+src/stasis/test_anastasis_db-postgres
+src/stasis/test_anastasis_db-postgres.log
+src/stasis/test_anastasis_db-postgres.trs
+src/stasis/test-suite.log
+src/util/test-suite.log
+src/util/test_anastasis_crypto.log
+src/util/test_anastasis_crypto
+src/util/test_anastasis_crypto.trs
+src/lib/test_anastasisrest_api
+src/lib/vgcore.*
+src/util/vgcore.*
+src/statis/vgcore.*
+src/lib/valgrind*.txt
+src/stasis/valgrind*.txt
+src/util/valgrind*.txt
+src/lib/test_anastasis
+src/cli/anastasis-splitter
+src/cli/anastasis-assembler
+src/cli/.deps/
+src/cli/.deps/anastasis-cli-splitter.Po
+src/cli/.deps/anastasis-cli-assembler.Po
+src/cli/.libs/
+src/cli/.libs/anastasis-assembler
+src/cli/.libs/anastasis-splitter
+
+doc/thesis/*.aux
+doc/thesis/*.bcf
+doc/thesis/*.log
+doc/thesis/*.xml
+doc/thesis/*.toc
+doc/thesis/*.pdf
+doc/thesis/*.blg
+doc/thesis/*.lot
+doc/thesis/*.lof
+doc/thesis/*.blg
+doc/thesis/*.bbl
+doc/thesis/*.gzsrc/cli/anastasis-reducer
+contrib/anastasis.tag
+src/util/anastasis-config
+src/util/test_anastasis_child_management
+src/include/anastasis_error_codes.h
+src/lib/test_anastasis_api_home/
+doc/anastasis.info
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..16d1fe5
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "contrib/gana"]
+       path = contrib/gana
+       url = git://git.gnunet.org/gana
diff --git a/ABOUT-NLS b/ABOUT-NLS
new file mode 100644
index 0000000..3cc8286
--- /dev/null
+++ b/ABOUT-NLS
@@ -0,0 +1,1379 @@
+1 Notes on the Free Translation Project
+***************************************
+
+Free software is going international!  The Free Translation Project is a
+way to get maintainers of free software, translators, and users all
+together, so that free software will gradually become able to speak many
+languages.  A few packages already provide translations for their
+messages.
+
+   If you found this 'ABOUT-NLS' file inside a distribution, you may
+assume that the distributed package does use GNU 'gettext' internally,
+itself available at your nearest GNU archive site.  But you do _not_
+need to install GNU 'gettext' prior to configuring, installing or using
+this package with messages translated.
+
+   Installers will find here some useful hints.  These notes also
+explain how users should proceed for getting the programs to use the
+available translations.  They tell how people wanting to contribute and
+work on translations can contact the appropriate team.
+
+1.1 INSTALL Matters
+===================
+
+Some packages are "localizable" when properly installed; the programs
+they contain can be made to speak your own native language.  Most such
+packages use GNU 'gettext'.  Other packages have their own ways to
+internationalization, predating GNU 'gettext'.
+
+   By default, this package will be installed to allow translation of
+messages.  It will automatically detect whether the system already
+provides the GNU 'gettext' functions.  Installers may use special
+options at configuration time for changing the default behaviour.  The
+command:
+
+     ./configure --disable-nls
+
+will _totally_ disable translation of messages.
+
+   When you already have GNU 'gettext' installed on your system and run
+configure without an option for your new package, 'configure' will
+probably detect the previously built and installed 'libintl' library and
+will decide to use it.  If not, you may have to to use the
+'--with-libintl-prefix' option to tell 'configure' where to look for it.
+
+   Internationalized packages usually have many 'po/LL.po' files, where
+LL gives an ISO 639 two-letter code identifying the language.  Unless
+translations have been forbidden at 'configure' time by using the
+'--disable-nls' switch, all available translations are installed
+together with the package.  However, the environment variable 'LINGUAS'
+may be set, prior to configuration, to limit the installed set.
+'LINGUAS' should then contain a space separated list of two-letter
+codes, stating which languages are allowed.
+
+1.2 Using This Package
+======================
+
+As a user, if your language has been installed for this package, you
+only have to set the 'LANG' environment variable to the appropriate
+'LL_CC' combination.  If you happen to have the 'LC_ALL' or some other
+'LC_xxx' environment variables set, you should unset them before setting
+'LANG', otherwise the setting of 'LANG' will not have the desired
+effect.  Here 'LL' is an ISO 639 two-letter language code, and 'CC' is
+an ISO 3166 two-letter country code.  For example, let's suppose that
+you speak German and live in Germany.  At the shell prompt, merely
+execute 'setenv LANG de_DE' (in 'csh'), 'export LANG; LANG=de_DE' (in
+'sh') or 'export LANG=de_DE' (in 'bash').  This can be done from your
+'.login' or '.profile' file, once and for all.
+
+   You might think that the country code specification is redundant.
+But in fact, some languages have dialects in different countries.  For
+example, 'de_AT' is used for Austria, and 'pt_BR' for Brazil.  The
+country code serves to distinguish the dialects.
+
+   The locale naming convention of 'LL_CC', with 'LL' denoting the
+language and 'CC' denoting the country, is the one use on systems based
+on GNU libc.  On other systems, some variations of this scheme are used,
+such as 'LL' or 'LL_CC.ENCODING'.  You can get the list of locales
+supported by your system for your language by running the command
+'locale -a | grep '^LL''.
+
+   Not all programs have translations for all languages.  By default, an
+English message is shown in place of a nonexistent translation.  If you
+understand other languages, you can set up a priority list of languages.
+This is done through a different environment variable, called
+'LANGUAGE'.  GNU 'gettext' gives preference to 'LANGUAGE' over 'LANG'
+for the purpose of message handling, but you still need to have 'LANG'
+set to the primary language; this is required by other parts of the
+system libraries.  For example, some Swedish users who would rather read
+translations in German than English for when Swedish is not available,
+set 'LANGUAGE' to 'sv:de' while leaving 'LANG' to 'sv_SE'.
+
+   Special advice for Norwegian users: The language code for Norwegian
+bokma*l changed from 'no' to 'nb' recently (in 2003).  During the
+transition period, while some message catalogs for this language are
+installed under 'nb' and some older ones under 'no', it's recommended
+for Norwegian users to set 'LANGUAGE' to 'nb:no' so that both newer and
+older translations are used.
+
+   In the 'LANGUAGE' environment variable, but not in the 'LANG'
+environment variable, 'LL_CC' combinations can be abbreviated as 'LL' to
+denote the language's main dialect.  For example, 'de' is equivalent to
+'de_DE' (German as spoken in Germany), and 'pt' to 'pt_PT' (Portuguese
+as spoken in Portugal) in this context.
+
+1.3 Translating Teams
+=====================
+
+For the Free Translation Project to be a success, we need interested
+people who like their own language and write it well, and who are also
+able to synergize with other translators speaking the same language.
+Each translation team has its own mailing list.  The up-to-date list of
+teams can be found at the Free Translation Project's homepage,
+'http://translationproject.org/', in the "Teams" area.
+
+   If you'd like to volunteer to _work_ at translating messages, you
+should become a member of the translating team for your own language.
+The subscribing address is _not_ the same as the list itself, it has
+'-request' appended.  For example, speakers of Swedish can send a
+message to 'sv-request@li.org', having this message body:
+
+     subscribe
+
+   Keep in mind that team members are expected to participate _actively_
+in translations, or at solving translational difficulties, rather than
+merely lurking around.  If your team does not exist yet and you want to
+start one, or if you are unsure about what to do or how to get started,
+please write to 'coordinator@translationproject.org' to reach the
+coordinator for all translator teams.
+
+   The English team is special.  It works at improving and uniformizing
+the terminology in use.  Proven linguistic skills are praised more than
+programming skills, here.
+
+1.4 Available Packages
+======================
+
+Languages are not equally supported in all packages.  The following
+matrix shows the current state of internationalization, as of Jun 2014.
+The matrix shows, in regard of each package, for which languages PO
+files have been submitted to translation coordination, with a
+translation percentage of at least 50%.
+
+     Ready PO files       af am an ar as ast az be bg bn bn_IN bs ca crh cs
+                        +---------------------------------------------------+
+     a2ps               |                       []                []     [] |
+     aegis              |                                                   |
+     anubis             |                                                   |
+     aspell             |                []                       []     [] |
+     bash               |                          []             []     [] |
+     bfd                |                                                   |
+     binutils           |                                         []        |
+     bison              |                                                   |
+     bison-runtime      |                []                                 |
+     buzztrax           |                                                [] |
+     ccd2cue            |                                                   |
+     ccide              |                                                   |
+     cflow              |                                                   |
+     clisp              |                                                   |
+     coreutils          |                                         []     [] |
+     cpio               |                                                   |
+     cppi               |                                                   |
+     cpplib             |                                         []        |
+     cryptsetup         |                                                [] |
+     datamash           |                                                   |
+     denemo             |                                         []     [] |
+     dfarc              |                                         []        |
+     dialog             |       []                                []     [] |
+     dico               |                                                   |
+     diffutils          |                                                [] |
+     dink               |                                         []        |
+     direvent           |                                                   |
+     doodle             |                                                [] |
+     dos2unix           |                                                   |
+     dos2unix-man       |                                                   |
+     e2fsprogs          |                                         []     [] |
+     enscript           |                                         []        |
+     exif               |                                                [] |
+     fetchmail          |                                         []     [] |
+     findutils          |                                                [] |
+     flex               |                                         []        |
+     freedink           |                                         []     [] |
+     fusionforge        |                                                   |
+     gas                |                                                   |
+     gawk               |                                         []        |
+     gcal               |                                         []        |
+     gcc                |                                                   |
+     gdbm               |                                                   |
+     gettext-examples   | []             []        []             []     [] |
+     gettext-runtime    |                          []             []     [] |
+     gettext-tools      |                          []             []        |
+     gjay               |                                                   |
+     glunarclock        |                []        []                    [] |
+     gnubiff            |                                                [] |
+     gnubik             |          []                                       |
+     gnucash            |          ()              ()             []        |
+     gnuchess           |                                                   |
+     gnulib             |                                                [] |
+     gnunet             |                                                   |
+     gnunet-gtk         |                                                   |
+     gold               |                                                   |
+     gphoto2            |                                                [] |
+     gprof              |                          []                       |
+     gramadoir          |                                                   |
+     grep               |                          []             []     [] |
+     grub               |                                         []        |
+     gsasl              |                                                   |
+     gss                |                                                   |
+     gst-plugins-bad    |                          []                    [] |
+     gst-plugins-base   |                          []             []     [] |
+     gst-plugins-good   |                          []             []     [] |
+     gst-plugins-ugly   |                          []             []     [] |
+     gstreamer          |                []        []             []     [] |
+     gtick              |                                                [] |
+     gtkam              |                       []                       [] |
+     gtkspell           | []             []     []                []     [] |
+     guix               |                                                   |
+     guix-packages      |                                                   |
+     gutenprint         |                                         []        |
+     hello              |                                         []        |
+     help2man           |                                                   |
+     help2man-texi      |                                                   |
+     hylafax            |                                                   |
+     idutils            |                                                   |
+     iso_15924          |                                                [] |
+     iso_3166           | []          []        [] [] []  []   [] [] []  [] |
+     iso_3166_2         |                                                   |
+     iso_4217           |                                                [] |
+     iso_639            |             [] []     [] [] []  []      [] []  [] |
+     iso_639_3          |                []                          []     |
+     iso_639_5          |                                                   |
+     jwhois             |                                                   |
+     kbd                |                                                [] |
+     klavaro            |          []              [] []          []     [] |
+     ld                 |                          []                       |
+     leafpad            |                       [] []             []     [] |
+     libc               |                          []             []     [] |
+     libexif            |                       ()                          |
+     libextractor       |                                                   |
+     libgnutls          |                                                [] |
+     libgphoto2         |                                                [] |
+     libgphoto2_port    |                                                [] |
+     libgsasl           |                                                   |
+     libiconv           |                          []                    [] |
+     libidn             |                                                [] |
+     liferea            |          []    []                       []     [] |
+     lilypond           |                                         []     [] |
+     lordsawar          |                                         []        |
+     lprng              |                                                   |
+     lynx               |                                         []     [] |
+     m4                 |                                                [] |
+     mailfromd          |                                                   |
+     mailutils          |                                                   |
+     make               |                                                [] |
+     man-db             |                                         []     [] |
+     man-db-manpages    |                                                   |
+     midi-instruments   |          []                             []     [] |
+     minicom            |                                                [] |
+     mkisofs            |                                                [] |
+     myserver           |                                                [] |
+     nano               |                          []             []     [] |
+     opcodes            |                                                   |
+     parted             |                                                [] |
+     pies               |                                                   |
+     pnmixer            |                                                   |
+     popt               |                                                [] |
+     procps-ng          |                                                   |
+     procps-ng-man      |                                                   |
+     psmisc             |                                                [] |
+     pspp               |                                         []        |
+     pushover           |                                                [] |
+     pwdutils           |                                                   |
+     pyspread           |                                                   |
+     radius             |                                         []        |
+     recode             |                       []                []     [] |
+     recutils           |                                                   |
+     rpm                |                                                   |
+     rush               |                                                   |
+     sarg               |                                                   |
+     sed                |                []        []             []     [] |
+     sharutils          |                                                [] |
+     shishi             |                                                   |
+     skribilo           |                                                   |
+     solfege            |                                         []     [] |
+     solfege-manual     |                                                   |
+     spotmachine        |                                                   |
+     sudo               |                                         []     [] |
+     sudoers            |                                         []     [] |
+     sysstat            |                                                [] |
+     tar                |                          []             []     [] |
+     texinfo            |                                         []     [] |
+     texinfo_document   |                                         []     [] |
+     tigervnc           |                          []                       |
+     tin                |                                                   |
+     tin-man            |                                                   |
+     tracgoogleappsa... |                                                   |
+     trader             |                                                   |
+     util-linux         |                                                [] |
+     ve                 |                                                   |
+     vice               |                                                   |
+     vmm                |                                                   |
+     vorbis-tools       |                                                [] |
+     wastesedge         |                                                   |
+     wcd                |                                                   |
+     wcd-man            |                                                   |
+     wdiff              |                                         []     [] |
+     wget               |                                                [] |
+     wyslij-po          |                                                   |
+     xboard             |                                                   |
+     xdg-user-dirs      | []    []    [] []     [] []     []      [] []  [] |
+     xkeyboard-config   |                          []             []     [] |
+                        +---------------------------------------------------+
+                          af am an ar as ast az be bg bn bn_IN bs ca crh cs
+                           4  0  2  5  3 11   0  8 25  3   3    1 55  4  74
+
+                          da  de  el en en_GB en_ZA eo es et eu fa fi  fr 
+                        +--------------------------------------------------+
+     a2ps               | []  []  []     []         [] [] []       []  []  |
+     aegis              | []  []                       []              []  |
+     anubis             | []  []                       []          []  []  |
+     aspell             | []  []         []         [] []          []  []  |
+     bash               |                           [] []              []  |
+     bfd                | []                           []          []  []  |
+     binutils           |                              []          []  []  |
+     bison              | []  []  []                [] [] []       []  []  |
+     bison-runtime      | []  []  []                [] [] []       []  []  |
+     buzztrax           | []  []                                   []  []  |
+     ccd2cue            | []  []                    []                 []  |
+     ccide              | []  []                    [] []          []  []  |
+     cflow              | []  []                    []             []  []  |
+     clisp              | []  []     []                []              []  |
+     coreutils          | []  []                       [] []           []  |
+     cpio               | []  []                       []          []  []  |
+     cppi               | []  []                    []             []  []  |
+     cpplib             | []  []                    [] []          []  []  |
+     cryptsetup         | []  []                       []          []  []  |
+     datamash           | []  []                    []                 []  |
+     denemo             | []                                               |
+     dfarc              | []  []                    [] []          []  []  |
+     dialog             | []  []  []                [] []    [] [] []  []  |
+     dico               | []  []                                   []  []  |
+     diffutils          | []  []  []                [] []              []  |
+     dink               | []  []                    [] []          []  []  |
+     direvent           | []  []                    []                 []  |
+     doodle             | []  []                    []             []      |
+     dos2unix           | []  []                    [] []              []  |
+     dos2unix-man       |     []                       []              []  |
+     e2fsprogs          | []  []                    [] []              []  |
+     enscript           | []  []         []         []             []  []  |
+     exif               | []  []                    [] []          []  []  |
+     fetchmail          | []  ()  []     []         [] []              []  |
+     findutils          | []  []  []                [] [] []       []  []  |
+     flex               | []  []                    [] []          []  []  |
+     freedink           | []  []  []                [] []    []    []  []  |
+     fusionforge        |     []                       []              []  |
+     gas                |                              []          []  []  |
+     gawk               | []  []                       []          []  []  |
+     gcal               | []  []                       []              []  |
+     gcc                |     []                                           |
+     gdbm               | []  []                    []             []  []  |
+     gettext-examples   | []  []  []                [] []          []  []  |
+     gettext-runtime    | []  []                    [] []          []  []  |
+     gettext-tools      | []  []                       []          []  []  |
+     gjay               |     []                    []             []  []  |
+     glunarclock        | []  []                    []             []  []  |
+     gnubiff            |     ()                    []             []  ()  |
+     gnubik             | []  []                    []             []  []  |
+     gnucash            | []  ()  ()     ()            ()          ()  ()  |
+     gnuchess           |     []                    [] []              []  |
+     gnulib             | []  []                    [] [] []       []  []  |
+     gnunet             |                              []                  |
+     gnunet-gtk         |     []                                           |
+     gold               |                              []          []  []  |
+     gphoto2            | []  ()                    []                 []  |
+     gprof              | []  []                    [] []          []  []  |
+     gramadoir          | []  []                    []             []  []  |
+     grep               | []  []                    [] [] []       []  []  |
+     grub               | []  []                       []          []  []  |
+     gsasl              | []  []                    []             []  []  |
+     gss                | []  []                    []             []  []  |
+     gst-plugins-bad    | []  []                                       []  |
+     gst-plugins-base   | []  []  []                   []          []  []  |
+     gst-plugins-good   | []  []  []                   []    []    []  []  |
+     gst-plugins-ugly   | []  []  []                [] []    []    []  []  |
+     gstreamer          | []  []  []                   []    []    []  []  |
+     gtick              | []  ()                    []             []  []  |
+     gtkam              | []  ()                    [] []          []  []  |
+     gtkspell           | []  []  []                [] []    []    []  []  |
+     guix               | []                        []                     |
+     guix-packages      |                                                  |
+     gutenprint         | []  []                                   []  []  |
+     hello              | []  []  []                [] [] []       []  []  |
+     help2man           | []  []  []                [] []          []  []  |
+     help2man-texi      |     []                       []              []  |
+     hylafax            |     []                       []                  |
+     idutils            | []  []                    []             []  []  |
+     iso_15924          | []  ()                    [] []    ()    []  ()  |
+     iso_3166           | []  ()  []                [] [] [] ()    []  ()  |
+     iso_3166_2         | []  ()                             ()        ()  |
+     iso_4217           | []  ()  []                   [] [] ()    []  ()  |
+     iso_639            | []  ()                    [] []    ()    []  ()  |
+     iso_639_3          |     ()                             ()        ()  |
+     iso_639_5          |     ()                             ()        ()  |
+     jwhois             |     []                    [] []          []  []  |
+     kbd                | []  []  []                [] []              []  |
+     klavaro            | []  []  []                [] []    []        []  |
+     ld                 | []                           []          []  []  |
+     leafpad            | []  []  []                [] []    []    []  []  |
+     libc               | []  []                       []          []  []  |
+     libexif            | []  []         ()            []              []  |
+     libextractor       |     []                                           |
+     libgnutls          |     []                    []             []  []  |
+     libgphoto2         | []  ()                                       []  |
+     libgphoto2_port    | []  ()                       []    []    []  []  |
+     libgsasl           | []  []                    []             []  []  |
+     libiconv           | []  []                    [] [] []       []  []  |
+     libidn             | []  []                    []             []  []  |
+     liferea            | []  ()  []                   []    []    []  []  |
+     lilypond           | []  []  []                [] []              []  |
+     lordsawar          | []  []                                           |
+     lprng              |                                                  |
+     lynx               | []  []                    []    []       []  []  |
+     m4                 | []  []  []                []             []  []  |
+     mailfromd          |                                              []  |
+     mailutils          |     []                       []          []  []  |
+     make               | []  []                       []          []  []  |
+     man-db             | []  []                    []                 []  |
+     man-db-manpages    |     []                                       []  |
+     midi-instruments   | []  []  []                [] [] []    [] []  []  |
+     minicom            | []  []                       []          []  []  |
+     mkisofs            |                           []             []  []  |
+     myserver           |     []                    []             []  []  |
+     nano               | []  []                    [] []    []    []  []  |
+     opcodes            | []  []                       []          []  []  |
+     parted             | []  []                                       []  |
+     pies               |     []                                           |
+     pnmixer            |     []                                       []  |
+     popt               | []  []                    [] []          []  []  |
+     procps-ng          |     []                                       []  |
+     procps-ng-man      |     []                                       []  |
+     psmisc             | []  []  []                []       []    []  []  |
+     pspp               |     []                       []              []  |
+     pushover           |     ()                    [] []              []  |
+     pwdutils           | []  []                                       []  |
+     pyspread           | []  []                                       []  |
+     radius             |                              []              []  |
+     recode             | []  []  []                [] []          []  []  |
+     recutils           |     []                       []          []  []  |
+     rpm                | []  []                    []             []  []  |
+     rush               |     []                                   []  []  |
+     sarg               | []                                           []  |
+     sed                | []  []  []                [] [] []       []  []  |
+     sharutils          |     []                    []    []           []  |
+     shishi             |     []                                   []  []  |
+     skribilo           | []                           []              []  |
+     solfege            | []  []                    [] [] []    [] []  []  |
+     solfege-manual     |     []                    [] [] []           []  |
+     spotmachine        | []  []                    []             []  []  |
+     sudo               | []  []                    [] []          []  []  |
+     sudoers            | []  []  []                []             []  []  |
+     sysstat            | []  []                    [] []          []  []  |
+     tar                | []  []                    [] [] []       []  []  |
+     texinfo            | []  []                    [] []              []  |
+     texinfo_document   |     []                    [] []              []  |
+     tigervnc           | []  []  []                []             []  []  |
+     tin                | []  []                          []           []  |
+     tin-man            |                []                                |
+     tracgoogleappsa... | []  []                    []             []  []  |
+     trader             | []  []         []         []             []  []  |
+     util-linux         | []  []                       []              []  |
+     ve                 |     []                    [] []          []  []  |
+     vice               | ()  ()                                       ()  |
+     vmm                |     []                                   []      |
+     vorbis-tools       | []  []                    []                 []  |
+     wastesedge         | []                                               |
+     wcd                |     []                    [] []          []      |
+     wcd-man            |     []                                           |
+     wdiff              | []  []                    [] [] []       []  []  |
+     wget               |     []                    [] [] []       []  []  |
+     wyslij-po          |     []                    []             []  []  |
+     xboard             | []  []                       []              []  |
+     xdg-user-dirs      | []  []  []                [] [] [] [] [] []  []  |
+     xkeyboard-config   | []  []  []                [] []          []  []  |
+                        +--------------------------------------------------+
+                          da  de  el en en_GB en_ZA eo es et eu fa fi  fr 
+                          119 131 32  1   6     0   94 95 22 13  4 102 139
+
+                          ga gd gl gu he hi hr hu hy ia id is it ja ka kk
+                        +-------------------------------------------------+
+     a2ps               |                   []          []    [] []       |
+     aegis              |                                     []          |
+     anubis             |                   [] []       []    []          |
+     aspell             | []                []          []    [] []       |
+     bash               |                      []       []    [] []       |
+     bfd                |                               []       []       |
+     binutils           |                               []    [] []       |
+     bison              |                   []                            |
+     bison-runtime      | []    []          [] []    [] []    [] []       |
+     buzztrax           |                                                 |
+     ccd2cue            |                      []                         |
+     ccide              |                   [] []                         |
+     cflow              | []                []          []                |
+     clisp              |                                                 |
+     coreutils          |                      []                []       |
+     cpio               | []                [] []       []    [] []       |
+     cppi               |       []          [] []             [] []       |
+     cpplib             |                               []       []       |
+     cryptsetup         |                                     []          |
+     datamash           |                                                 |
+     denemo             |                                     []          |
+     dfarc              |                   [] []             []          |
+     dialog             | [] [] []          [] []    [] [] [] [] []       |
+     dico               |                                                 |
+     diffutils          |                      []       []    [] []       |
+     dink               |                      []                         |
+     direvent           |                      []                         |
+     doodle             | []                                  []          |
+     dos2unix           |                      []                []       |
+     dos2unix-man       |                                                 |
+     e2fsprogs          |                      []       []                |
+     enscript           | []                []          []                |
+     exif               |       []          []          [] [] [] []       |
+     fetchmail          |                               []    [] []       |
+     findutils          | []    []          [] []       []    [] []       |
+     flex               | []                                              |
+     freedink           |                   [] []       []    []          |
+     fusionforge        |                                                 |
+     gas                |                               []                |
+     gawk               |                               []    () []       |
+     gcal               |                                                 |
+     gcc                |                                                 |
+     gdbm               |                                                 |
+     gettext-examples   | []    []          [] []       []    [] []       |
+     gettext-runtime    | []    []          [] []       []    [] []       |
+     gettext-tools      |                               []    [] []       |
+     gjay               |       []                                        |
+     glunarclock        | []    []          [] []       []    []          |
+     gnubiff            |                      []       []    ()          |
+     gnubik             |       []          []                []          |
+     gnucash            |          () () ()    ()             ()          |
+     gnuchess           |                                                 |
+     gnulib             | []    []             []             [] []       |
+     gnunet             |                                                 |
+     gnunet-gtk         |                                                 |
+     gold               |                               []    []          |
+     gphoto2            |                      []       []    [] []       |
+     gprof              | []                   []       []    []          |
+     gramadoir          | []                   []       []                |
+     grep               | []    []          [] []       []    [] []       |
+     grub               |       []             []             []          |
+     gsasl              | []                [] []       []    []          |
+     gss                | []                [] []       []    []          |
+     gst-plugins-bad    |                   [] []       []                |
+     gst-plugins-base   |       []          [] []       []                |
+     gst-plugins-good   |       []          [] []       []    [] []       |
+     gst-plugins-ugly   |       []          [] []       []    [] []       |
+     gstreamer          |       []          [] []       []    []          |
+     gtick              | []    []             []       []    []          |
+     gtkam              |                      []       [] [] [] []       |
+     gtkspell           | []    []    []    [] [] []    [] [] [] []       |
+     guix               |                                                 |
+     guix-packages      |                                                 |
+     gutenprint         |       []             []             []          |
+     hello              | []    []          [] []       []                |
+     help2man           |                   []                [] []       |
+     help2man-texi      |                                                 |
+     hylafax            |                               []                |
+     idutils            |                      []       []                |
+     iso_15924          |       []             []    [] [] [] []          |
+     iso_3166           | []    [] [] [] [] [] []    [] [] [] [] []    [] |
+     iso_3166_2         |                               []    []          |
+     iso_4217           |                   [] []       [] [] [] []       |
+     iso_639            | []    [] []       [] []       [] [] [] []       |
+     iso_639_3          |       []                            []          |
+     iso_639_5          |                                                 |
+     jwhois             |       []             []       []    []          |
+     kbd                |                      []       []    []          |
+     klavaro            |       []          [] []             []       [] |
+     ld                 | []                            []    [] []       |
+     leafpad            | []    []    []    [] []       []    [] ()       |
+     libc               |       []          []          []    [] []       |
+     libexif            |                                     []          |
+     libextractor       |                                                 |
+     libgnutls          |                                     []          |
+     libgphoto2         |                                     [] []       |
+     libgphoto2_port    |                                     [] []       |
+     libgsasl           | []                   []       []    []          |
+     libiconv           | []    []          [] []       []    [] []       |
+     libidn             |                   [] []       []    []          |
+     liferea            |       []    []       []             [] []       |
+     lilypond           |                                     []          |
+     lordsawar          |                                                 |
+     lprng              |                               []                |
+     lynx               |                      []       []    [] []       |
+     m4                 | []    []          []          []       []       |
+     mailfromd          |                                                 |
+     mailutils          |                                                 |
+     make               |                   []          []    [] []       |
+     man-db             |                               []       []       |
+     man-db-manpages    |                               []       []       |
+     midi-instruments   |       []    []    [] [] []    [] [] [] []       |
+     minicom            |                      []       []       []       |
+     mkisofs            |                               []    []          |
+     myserver           |                                     []          |
+     nano               | []    []          [] []             [] []       |
+     opcodes            | []                            []    []          |
+     parted             |       []             []       []    [] []       |
+     pies               |                                                 |
+     pnmixer            |                   []                []          |
+     popt               | []    [] []       [] []    [] [] [] [] []       |
+     procps-ng          |                                                 |
+     procps-ng-man      |                                                 |
+     psmisc             |                   [] []       []    []          |
+     pspp               |       []                               []       |
+     pushover           |                                     []          |
+     pwdutils           |                               []                |
+     pyspread           |                                                 |
+     radius             |                               []                |
+     recode             | []    []    []    [] []       []    []          |
+     recutils           |                                                 |
+     rpm                |                               []                |
+     rush               |       []                                        |
+     sarg               |                                                 |
+     sed                | []    []          [] []       []    [] []       |
+     sharutils          |                                                 |
+     shishi             |                                                 |
+     skribilo           |                      []                         |
+     solfege            |       []                            []          |
+     solfege-manual     |                                                 |
+     spotmachine        |                                                 |
+     sudo               |       []          []                [] []       |
+     sudoers            |                   []                [] []       |
+     sysstat            |                   [] []       []       []       |
+     tar                | []                [] []       []    [] []       |
+     texinfo            |                   []          []    []          |
+     texinfo_document   |                   [] []             []          |
+     tigervnc           |                                                 |
+     tin                |                                                 |
+     tin-man            |                                                 |
+     tracgoogleappsa... |       []    []    [] []                         |
+     trader             |                   [] []                         |
+     util-linux         |                                        []       |
+     ve                 |                                     []          |
+     vice               |                      ()             ()          |
+     vmm                |                                                 |
+     vorbis-tools       |                   []          []                |
+     wastesedge         |                                     []          |
+     wcd                |                                                 |
+     wcd-man            |                                                 |
+     wdiff              |       []             []             []          |
+     wget               |                   [] []             [] []       |
+     wyslij-po          |       []          []          []                |
+     xboard             |                                                 |
+     xdg-user-dirs      | [] [] [] [] [] [] [] []    [] [] [] [] []    [] |
+     xkeyboard-config   |       []          [] []       []    [] []       |
+                        +-------------------------------------------------+
+                          ga gd gl gu he hi hr hu hy ia id is it ja ka kk
+                          35  2 47  4  8  2 60 71  2  6 81 11 87 57  0  3
+
+                          kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl 
+                        +--------------------------------------------------+
+     a2ps               |                                  []          []  |
+     aegis              |                                              []  |
+     anubis             |                                  []    []    []  |
+     aspell             |                            []                []  |
+     bash               |                                        []    []  |
+     bfd                |                                                  |
+     binutils           |                                                  |
+     bison              |                                              []  |
+     bison-runtime      |          []    [] []             []    []    []  |
+     buzztrax           |                                                  |
+     ccd2cue            |                                                  |
+     ccide              |                   []                         []  |
+     cflow              |                                              []  |
+     clisp              |                                              []  |
+     coreutils          |                                        []    []  |
+     cpio               |                                              []  |
+     cppi               |                                                  |
+     cpplib             |                                              []  |
+     cryptsetup         |                                              []  |
+     datamash           |                                        []    []  |
+     denemo             |                                                  |
+     dfarc              |                      []                      []  |
+     dialog             |       []       [] []             []    []    []  |
+     dico               |                                                  |
+     diffutils          |                   []                   []    []  |
+     dink               |                                              []  |
+     direvent           |                                              []  |
+     doodle             |                                              []  |
+     dos2unix           |                                        []    []  |
+     dos2unix-man       |                                              []  |
+     e2fsprogs          |                                              []  |
+     enscript           |                                              []  |
+     exif               |    []             []                         []  |
+     fetchmail          |                                              []  |
+     findutils          |                                        []    []  |
+     flex               |                                              []  |
+     freedink           |                                        []    []  |
+     fusionforge        |                                                  |
+     gas                |                                                  |
+     gawk               |                                              []  |
+     gcal               |                                                  |
+     gcc                |                                                  |
+     gdbm               |                                                  |
+     gettext-examples   |          []       []             [] [] []    []  |
+     gettext-runtime    |    []                                  []    []  |
+     gettext-tools      |    []                                            |
+     gjay               |                                                  |
+     glunarclock        |                   []                         []  |
+     gnubiff            |                                              []  |
+     gnubik             |                                        []    []  |
+     gnucash            | () ()          () ()          ()       () () []  |
+     gnuchess           |                                        []    []  |
+     gnulib             |                                              []  |
+     gnunet             |                                                  |
+     gnunet-gtk         |                                                  |
+     gold               |                                                  |
+     gphoto2            |                                              []  |
+     gprof              |                                  []          []  |
+     gramadoir          |                                              []  |
+     grep               |                                        []    []  |
+     grub               |                []                      []    []  |
+     gsasl              |                                              []  |
+     gss                |                                                  |
+     gst-plugins-bad    |                   []                   []    []  |
+     gst-plugins-base   |                   []                   []    []  |
+     gst-plugins-good   |                [] []                   []    []  |
+     gst-plugins-ugly   |                   []             [] [] []    []  |
+     gstreamer          |                []                      []    []  |
+     gtick              |                                              []  |
+     gtkam              |                                        []    []  |
+     gtkspell           |          []    [] []       []    []    []    []  |
+     guix               |                                                  |
+     guix-packages      |                                                  |
+     gutenprint         |                                              []  |
+     hello              |                   []                   []    []  |
+     help2man           |                                        []        |
+     help2man-texi      |                                                  |
+     hylafax            |                                              []  |
+     idutils            |                                              []  |
+     iso_15924          |                () []                         []  |
+     iso_3166           | [] [] []       () [] [] []    []       []    []  |
+     iso_3166_2         |                ()                            []  |
+     iso_4217           |                () []                   []    []  |
+     iso_639            | [] []          () []    []    []             []  |
+     iso_639_3          | []             ()             []                 |
+     iso_639_5          |                ()                                |
+     jwhois             |                   []                         []  |
+     kbd                |                                              []  |
+     klavaro            |                                        []    []  |
+     ld                 |                                                  |
+     leafpad            |    []    []    [] []                         []  |
+     libc               |    []                                        []  |
+     libexif            |                                              []  |
+     libextractor       |                                              []  |
+     libgnutls          |                                  []          []  |
+     libgphoto2         |                                              []  |
+     libgphoto2_port    |                                              []  |
+     libgsasl           |                                              []  |
+     libiconv           |                []                            []  |
+     libidn             |                                              []  |
+     liferea            |                [] []                         []  |
+     lilypond           |                                              []  |
+     lordsawar          |                                                  |
+     lprng              |                                                  |
+     lynx               |                                              []  |
+     m4                 |                                              []  |
+     mailfromd          |                                                  |
+     mailutils          |                                                  |
+     make               |    []                                        []  |
+     man-db             |                                              []  |
+     man-db-manpages    |                                              []  |
+     midi-instruments   |    [] []       []          []    []       [] []  |
+     minicom            |                                        []        |
+     mkisofs            |                                              []  |
+     myserver           |                                                  |
+     nano               |                                  []    []    []  |
+     opcodes            |                                              []  |
+     parted             |    []                                        []  |
+     pies               |                                                  |
+     pnmixer            |                                              []  |
+     popt               | [] []             []                   []    []  |
+     procps-ng          |                                                  |
+     procps-ng-man      |                                                  |
+     psmisc             |                                              []  |
+     pspp               |                []                            []  |
+     pushover           |                                                  |
+     pwdutils           |                                              []  |
+     pyspread           |                                                  |
+     radius             |                                              []  |
+     recode             |                                        []    []  |
+     recutils           |                                              []  |
+     rpm                |                                              []  |
+     rush               |                                              []  |
+     sarg               |                                                  |
+     sed                |                                        []    []  |
+     sharutils          |                                              []  |
+     shishi             |                                                  |
+     skribilo           |                                                  |
+     solfege            |                                        []    []  |
+     solfege-manual     |                                              []  |
+     spotmachine        |                                              []  |
+     sudo               |    []                                  []    []  |
+     sudoers            |    []                                  []    []  |
+     sysstat            |                                        []    []  |
+     tar                |          []                            []    []  |
+     texinfo            |                                              []  |
+     texinfo_document   |                                              []  |
+     tigervnc           |                                              []  |
+     tin                |                                                  |
+     tin-man            |                                                  |
+     tracgoogleappsa... |                   []                   []    []  |
+     trader             |                                        []        |
+     util-linux         |                                              []  |
+     ve                 |                                              []  |
+     vice               |                                              []  |
+     vmm                |                                              []  |
+     vorbis-tools       |                                              []  |
+     wastesedge         |                                              []  |
+     wcd                |                                              []  |
+     wcd-man            |                                              []  |
+     wdiff              |                                              []  |
+     wget               |                                        []    []  |
+     wyslij-po          |                                              []  |
+     xboard             |                                              []  |
+     xdg-user-dirs      | [] [] [] []    [] [] [] []    []       []    []  |
+     xkeyboard-config   |    []          []                            []  |
+                        +--------------------------------------------------+
+                          kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl 
+                           5 15  4  6  0 13 23  3  3  3  4 11  2 42  1 125
+
+                          nn or pa pl  ps pt pt_BR ro ru rw sk sl sq sr 
+                        +------------------------------------------------+
+     a2ps               |          []     []  []   [] []       []    []  |
+     aegis              |                     []      []                 |
+     anubis             |          []                 []             []  |
+     aspell             |          []         []   [] []    [] []    []  |
+     bash               |          []         []      []    [] []    []  |
+     bfd                |                             []             []  |
+     binutils           |                             []             []  |
+     bison              |          []         []                     []  |
+     bison-runtime      |          []     []  []   [] []       [] [] []  |
+     buzztrax           |                     []                         |
+     ccd2cue            |                     []                     []  |
+     ccide              |          []                 []             []  |
+     cflow              |          []         []                     []  |
+     clisp              |                             []                 |
+     coreutils          |          []                 []       []    []  |
+     cpio               |          []                 []             []  |
+     cppi               |          []         []                     []  |
+     cpplib             |                     []      []             []  |
+     cryptsetup         |          []         []                     []  |
+     datamash           |                     []                     []  |
+     denemo             |                                                |
+     dfarc              |          []         []                     []  |
+     dialog             |          []         []   [] []    [] []    []  |
+     dico               |          []                                    |
+     diffutils          |          []         []                     []  |
+     dink               |                                                |
+     direvent           |          []         []                     []  |
+     doodle             |                                         [] []  |
+     dos2unix           |          []         []      []             []  |
+     dos2unix-man       |          []         []                         |
+     e2fsprogs          |          []                                    |
+     enscript           |          []         []   [] []       []    []  |
+     exif               |          []         []   [] []    []       []  |
+     fetchmail          |          []                 []          []     |
+     findutils          |          []         []      []    [] []    []  |
+     flex               |          []         []   [] []             []  |
+     freedink           |          []         []      []       []    []  |
+     fusionforge        |                                                |
+     gas                |                                                |
+     gawk               |          []                                    |
+     gcal               |                                                |
+     gcc                |                                                |
+     gdbm               |          []         []                     []  |
+     gettext-examples   |          []     []  []   [] []    [] []    []  |
+     gettext-runtime    | []       []     []  []   [] []    [] []    []  |
+     gettext-tools      |          []         []   [] []    [] []    []  |
+     gjay               |                                            []  |
+     glunarclock        |          []         []   []       [] []    []  |
+     gnubiff            |                                            []  |
+     gnubik             |          []         []               []    []  |
+     gnucash            |          ()     ()  ()   () ()             []  |
+     gnuchess           |                     []                     []  |
+     gnulib             |          []         []      []       []    []  |
+     gnunet             |                                                |
+     gnunet-gtk         |                                                |
+     gold               |                                                |
+     gphoto2            |          []         []   [] []             []  |
+     gprof              |                     []   [] []             []  |
+     gramadoir          |                                   []       []  |
+     grep               |          []         []      []    [] []    []  |
+     grub               |          []         []      []       []    []  |
+     gsasl              |          []                       []       []  |
+     gss                |          []              []       []       []  |
+     gst-plugins-bad    |          []         []      []    []       []  |
+     gst-plugins-base   |          []         []      []    [] []    []  |
+     gst-plugins-good   |          []         []   [] []    [] []    []  |
+     gst-plugins-ugly   |          []         []   [] []    [] []    []  |
+     gstreamer          |          []         []   [] []    [] []    []  |
+     gtick              |          []         []      []    []       []  |
+     gtkam              |       [] []         []      []    []       []  |
+     gtkspell           |          []     []  []   [] []    [] [] [] []  |
+     guix               |                                                |
+     guix-packages      |                                                |
+     gutenprint         |                                   [] []        |
+     hello              |          []         []      []    [] []    []  |
+     help2man           |          []         []      []             []  |
+     help2man-texi      |          []                                    |
+     hylafax            |                                                |
+     idutils            |          []                 []             []  |
+     iso_15924          |          []     ()       [] []       []    []  |
+     iso_3166           | [] [] [] []     ()  []   [] [] [] [] [] [] []  |
+     iso_3166_2         |          []     ()                         []  |
+     iso_4217           | []       []     ()       [] [] []    []    []  |
+     iso_639            |    [] [] []     ()       [] [] [] [] []    []  |
+     iso_639_3          |       []        ()                             |
+     iso_639_5          |                 ()                         []  |
+     jwhois             |          []         []   []                []  |
+     kbd                |          []                 []                 |
+     klavaro            |       [] []         []      []       []        |
+     ld                 |                                                |
+     leafpad            | []       []     []  []      []    [] []    []  |
+     libc               |          []                 []    []           |
+     libexif            |          []         ()            []           |
+     libextractor       |          []                                    |
+     libgnutls          |          []                                    |
+     libgphoto2         |          []                                    |
+     libgphoto2_port    |          []         []      []    []       []  |
+     libgsasl           |          []              []       []       []  |
+     libiconv           |          []         []            [] []    []  |
+     libidn             |          []         []                     []  |
+     liferea            |          []     []  []   [] ()    []    []     |
+     lilypond           |                                                |
+     lordsawar          |                                                |
+     lprng              |          []                                    |
+     lynx               |                     []      []                 |
+     m4                 |          []         []   [] []             []  |
+     mailfromd          |          []                                    |
+     mailutils          |          []                                    |
+     make               |          []         []      []                 |
+     man-db             |          []                 []             []  |
+     man-db-manpages    |          []                 []             []  |
+     midi-instruments   |          []     []  []   [] []    [] []    []  |
+     minicom            |          []         []   [] []                 |
+     mkisofs            |          []                 []             []  |
+     myserver           |                                      []    []  |
+     nano               |          []         []   [] []       []    []  |
+     opcodes            |                                                |
+     parted             |          []         []      []    [] []    []  |
+     pies               |          []                                    |
+     pnmixer            |                             []                 |
+     popt               |          []     []  []      []       []    []  |
+     procps-ng          |          []                                    |
+     procps-ng-man      |          []                                    |
+     psmisc             |          []         []      []             []  |
+     pspp               |          []                 []                 |
+     pushover           |                                                |
+     pwdutils           |          []                                    |
+     pyspread           | []                  []                         |
+     radius             |          []                 []                 |
+     recode             |          []     []  []   [] []    [] []    []  |
+     recutils           |                     []                     []  |
+     rpm                |          []                                    |
+     rush               |          []         []                     []  |
+     sarg               |                     []      []                 |
+     sed                |          []     []  []   [] []    [] []    []  |
+     sharutils          |          []         []                     []  |
+     shishi             |          []                                []  |
+     skribilo           |                                            []  |
+     solfege            |          []         []      []                 |
+     solfege-manual     |          []         []                         |
+     spotmachine        |                     []                     []  |
+     sudo               |          []         []      []    [] []    []  |
+     sudoers            |          []         []               []    []  |
+     sysstat            |          []         []      []    []       []  |
+     tar                |          []         []      []       []    []  |
+     texinfo            |          []         []      []                 |
+     texinfo_document   |          []         []                         |
+     tigervnc           |                     []      []             []  |
+     tin                |                             []                 |
+     tin-man            |                                                |
+     tracgoogleappsa... |          []         []      []             []  |
+     trader             |                             []             []  |
+     util-linux         |          []         []                         |
+     ve                 |          []         []                     []  |
+     vice               |                                                |
+     vmm                |                                                |
+     vorbis-tools       |          []                          []    []  |
+     wastesedge         |                                                |
+     wcd                |                                                |
+     wcd-man            |                                                |
+     wdiff              |          []         []      []       []    []  |
+     wget               |          []         []      []    []       []  |
+     wyslij-po          | []       []         []                     []  |
+     xboard             |          []                 []             []  |
+     xdg-user-dirs      | [] [] [] []  [] []  []   [] []    [] [] [] []  |
+     xkeyboard-config   |          []         []      []       []        |
+                        +------------------------------------------------+
+                          nn or pa pl  ps pt pt_BR ro ru rw sk sl sq sr 
+                           7  3  6 114  1 12  88   32 82  3 40 45  7 101
+
+                          sv  sw ta te tg th tr uk  ur vi  wa wo zh_CN
+                        +----------------------------------------------+
+     a2ps               | []              [] [] []     []              |
+     aegis              |                              []              |
+     anubis             | []                 [] []     []              |
+     aspell             | []                    []     []  []     []   |
+     bash               | []                    []     []         []   |
+     bfd                | []                    []     []              |
+     binutils           | []                    []     []              |
+     bison              | []                    []     []         []   |
+     bison-runtime      | []              [] [] []     []         []   |
+     buzztrax           | []                           []         []   |
+     ccd2cue            |                       []     []         []   |
+     ccide              | []                    []     []         []   |
+     cflow              | []                    []     []         []   |
+     clisp              |                                              |
+     coreutils          | []                    []     []              |
+     cpio               | []                 [] []     []         []   |
+     cppi               | []                    []     []         []   |
+     cpplib             | []                 [] []     []         []   |
+     cryptsetup         |                       []     []         []   |
+     datamash           | []                    []     []              |
+     denemo             |                                         []   |
+     dfarc              | []                           []              |
+     dialog             | []  []          []           []  []     []   |
+     dico               |                       []                     |
+     diffutils          | []                 [] []     []         []   |
+     dink               | []                                           |
+     direvent           |                       []     []              |
+     doodle             | []                           []              |
+     dos2unix           | []                    []     []         []   |
+     dos2unix-man       | []                    []                []   |
+     e2fsprogs          | []                    []     []         []   |
+     enscript           | []                 [] []     []              |
+     exif               | []                 [] []     []         []   |
+     fetchmail          | []                 []        []         []   |
+     findutils          | []                 [] []     []         []   |
+     flex               | []                 []        []         []   |
+     freedink           | []              []           []              |
+     fusionforge        |                                              |
+     gas                |                       []                     |
+     gawk               | []                           []         []   |
+     gcal               | []                 []                   []   |
+     gcc                | []                                           |
+     gdbm               |                       []     []              |
+     gettext-examples   | []                 [] []     []         []   |
+     gettext-runtime    | []                 [] []     []         []   |
+     gettext-tools      | []                 [] []     []         []   |
+     gjay               |                 []           []         []   |
+     glunarclock        | []                           []  []     []   |
+     gnubiff            | []                           []              |
+     gnubik             | []                    []     []         []   |
+     gnucash            |        () ()              () ()         []   |
+     gnuchess           |                       []     []         []   |
+     gnulib             | []                    []     []         []   |
+     gnunet             |                                              |
+     gnunet-gtk         |                                              |
+     gold               |                       []     []              |
+     gphoto2            | []                    []     []         []   |
+     gprof              | []                 [] []     []              |
+     gramadoir          | []                           []         []   |
+     grep               | []              []    []     []         []   |
+     grub               | []                 [] []     []              |
+     gsasl              | []                    []     []         []   |
+     gss                | []                           []         []   |
+     gst-plugins-bad    | []                 [] []     []         []   |
+     gst-plugins-base   | []                 [] []     []         []   |
+     gst-plugins-good   | []                 [] []     []         []   |
+     gst-plugins-ugly   | []                 [] []     []         []   |
+     gstreamer          | []                 [] []     []         []   |
+     gtick              |                       []     []         []   |
+     gtkam              | []                    []     []         []   |
+     gtkspell           | []              [] [] []     []  []     []   |
+     guix               |                                              |
+     guix-packages      |                                              |
+     gutenprint         |                    [] []     []         []   |
+     hello              | []              [] [] []     []         []   |
+     help2man           |                       []     []         []   |
+     help2man-texi      |                       []                     |
+     hylafax            |                              []              |
+     idutils            |                       []     []         []   |
+     iso_15924          | []              () [] []     ()         []   |
+     iso_3166           | []        []    () [] []     ()  []     []   |
+     iso_3166_2         |                 () [] []     ()         []   |
+     iso_4217           | []              () [] []     ()         []   |
+     iso_639            | []     [] []    () [] []     ()  []     []   |
+     iso_639_3          |        []       () [] []     ()              |
+     iso_639_5          |                 ()    []     ()              |
+     jwhois             | []                 []        []         []   |
+     kbd                | []                    []     []         []   |
+     klavaro            | []                    []  [] []     []  []   |
+     ld                 | []                 [] []     []         []   |
+     leafpad            | []              [] [] []     []         []   |
+     libc               | []                 [] []     []         []   |
+     libexif            | []                           []         ()   |
+     libextractor       |                       []     []              |
+     libgnutls          | []                    []     []         []   |
+     libgphoto2         | []                    []     []              |
+     libgphoto2_port    | []                    []     []         []   |
+     libgsasl           | []                    []     []         []   |
+     libiconv           | []                    []     []  []     []   |
+     libidn             | ()                    []     []         []   |
+     liferea            | []                 [] []     []         []   |
+     lilypond           |                              []              |
+     lordsawar          |                                              |
+     lprng              |                              []              |
+     lynx               | []                 [] []     []              |
+     m4                 | []                           []         []   |
+     mailfromd          |                       []     []              |
+     mailutils          |                              []              |
+     make               | []                    []     []         []   |
+     man-db             | []                           []         []   |
+     man-db-manpages    | []                                      []   |
+     midi-instruments   | []              [] [] []     []         []   |
+     minicom            | []                           []              |
+     mkisofs            |                       []     []         []   |
+     myserver           |                              []              |
+     nano               | []                    []     []         []   |
+     opcodes            |                       []     []         []   |
+     parted             | []                 [] []     []         []   |
+     pies               |                       []     []              |
+     pnmixer            |                       []     []         []   |
+     popt               | []     []       [] [] []     []         []   |
+     procps-ng          |                       []     []              |
+     procps-ng-man      |                       []                     |
+     psmisc             | []                    []     []         []   |
+     pspp               |                    [] []                []   |
+     pushover           | []                                           |
+     pwdutils           | []                           []              |
+     pyspread           |                       []                     |
+     radius             |                       []     []              |
+     recode             | []                 []        []         []   |
+     recutils           | []                    []     []              |
+     rpm                | []                    []     []         []   |
+     rush               |                       []     []              |
+     sarg               |                                              |
+     sed                | []                 [] []     []         []   |
+     sharutils          | []                    []     []         []   |
+     shishi             |                              []         []   |
+     skribilo           | []                    []                     |
+     solfege            | []                 []        []         []   |
+     solfege-manual     |                    []                        |
+     spotmachine        | []                    []     []              |
+     sudo               | []                 [] []     []         []   |
+     sudoers            | []                    []     []         []   |
+     sysstat            | []                 [] []     []         []   |
+     tar                | []                 [] []     []         []   |
+     texinfo            |                    [] []     []              |
+     texinfo_document   |                       []                     |
+     tigervnc           | []                    []                []   |
+     tin                |                                         []   |
+     tin-man            |                                              |
+     tracgoogleappsa... | []              []    []     []         []   |
+     trader             | []                                           |
+     util-linux         | []                    []     []         []   |
+     ve                 | []                    []     []         []   |
+     vice               | ()                 ()                        |
+     vmm                |                                              |
+     vorbis-tools       | []                           []              |
+     wastesedge         |                                              |
+     wcd                |                       []     []         []   |
+     wcd-man            |                       []                     |
+     wdiff              | []                    []     []         []   |
+     wget               |                       []     []         []   |
+     wyslij-po          |                       []     []              |
+     xboard             |                       []                []   |
+     xdg-user-dirs      | []     [] []    [] [] []     []         []   |
+     xkeyboard-config   | []                 [] []     []              |
+                        +----------------------------------------------+
+                          sv  sw ta te tg th tr uk  ur vi  wa wo zh_CN
+                          106  1  4  3  0 13 51 115  1 125  7  1  100 
+
+                          zh_HK zh_TW
+                        +-------------+
+     a2ps               |             | 30
+     aegis              |             |  9
+     anubis             |             | 19
+     aspell             |             | 29
+     bash               |        []   | 23
+     bfd                |             | 11
+     binutils           |             | 12
+     bison              |        []   | 18
+     bison-runtime      |        []   | 38
+     buzztrax           |             |  9
+     ccd2cue            |             | 10
+     ccide              |             | 17
+     cflow              |             | 16
+     clisp              |             | 10
+     coreutils          |             | 18
+     cpio               |             | 20
+     cppi               |             | 17
+     cpplib             |        []   | 19
+     cryptsetup         |             | 14
+     datamash           |             | 11
+     denemo             |             |  5
+     dfarc              |             | 17
+     dialog             |        []   | 42
+     dico               |             |  6
+     diffutils          |             | 22
+     dink               |             | 10
+     direvent           |             | 11
+     doodle             |             | 12
+     dos2unix           |        []   | 18
+     dos2unix-man       |             |  9
+     e2fsprogs          |             | 15
+     enscript           |             | 21
+     exif               |             | 27
+     fetchmail          |             | 19
+     findutils          |             | 29
+     flex               |        []   | 19
+     freedink           |             | 24
+     fusionforge        |             |  3
+     gas                |             |  5
+     gawk               |             | 13
+     gcal               |             |  8
+     gcc                |             |  2
+     gdbm               |             | 10
+     gettext-examples   |  []    []   | 40
+     gettext-runtime    |  []    []   | 35
+     gettext-tools      |        []   | 24
+     gjay               |             |  9
+     glunarclock        |        []   | 27
+     gnubiff            |             |  9
+     gnubik             |             | 19
+     gnucash            |        ()   |  6
+     gnuchess           |             | 11
+     gnulib             |             | 23
+     gnunet             |             |  1
+     gnunet-gtk         |             |  1
+     gold               |             |  7
+     gphoto2            |        []   | 19
+     gprof              |             | 21
+     gramadoir          |             | 14
+     grep               |        []   | 31
+     grub               |             | 21
+     gsasl              |        []   | 19
+     gss                |             | 17
+     gst-plugins-bad    |             | 21
+     gst-plugins-base   |             | 27
+     gst-plugins-good   |             | 32
+     gst-plugins-ugly   |             | 34
+     gstreamer          |        []   | 32
+     gtick              |             | 19
+     gtkam              |             | 24
+     gtkspell           |  []    []   | 48
+     guix               |             |  2
+     guix-packages      |             |  0
+     gutenprint         |             | 15
+     hello              |        []   | 30
+     help2man           |             | 18
+     help2man-texi      |             |  5
+     hylafax            |             |  5
+     idutils            |             | 14
+     iso_15924          |        []   | 23
+     iso_3166           |  []    []   | 58
+     iso_3166_2         |             |  9
+     iso_4217           |  []    []   | 28
+     iso_639            |  []    []   | 46
+     iso_639_3          |             | 10
+     iso_639_5          |             |  2
+     jwhois             |        []   | 20
+     kbd                |             | 17
+     klavaro            |             | 30
+     ld                 |        []   | 15
+     leafpad            |        []   | 39
+     libc               |        []   | 24
+     libexif            |             | 10
+     libextractor       |             |  5
+     libgnutls          |             | 13
+     libgphoto2         |             | 10
+     libgphoto2_port    |        []   | 19
+     libgsasl           |             | 18
+     libiconv           |        []   | 29
+     libidn             |             | 17
+     liferea            |             | 29
+     lilypond           |             | 11
+     lordsawar          |             |  3
+     lprng              |             |  3
+     lynx               |             | 19
+     m4                 |        []   | 22
+     mailfromd          |             |  4
+     mailutils          |             |  6
+     make               |             | 19
+     man-db             |             | 15
+     man-db-manpages    |             | 10
+     midi-instruments   |        []   | 43
+     minicom            |        []   | 17
+     mkisofs            |             | 13
+     myserver           |             |  9
+     nano               |        []   | 30
+     opcodes            |             | 12
+     parted             |        []   | 23
+     pies               |             |  4
+     pnmixer            |             |  9
+     popt               |        []   | 36
+     procps-ng          |             |  5
+     procps-ng-man      |             |  4
+     psmisc             |        []   | 22
+     pspp               |             | 13
+     pushover           |             |  6
+     pwdutils           |             |  8
+     pyspread           |             |  6
+     radius             |             |  9
+     recode             |             | 31
+     recutils           |             | 10
+     rpm                |        []   | 13
+     rush               |             | 10
+     sarg               |             |  4
+     sed                |        []   | 35
+     sharutils          |             | 13
+     shishi             |             |  7
+     skribilo           |             |  7
+     solfege            |             | 21
+     solfege-manual     |             |  9
+     spotmachine        |             | 11
+     sudo               |             | 26
+     sudoers            |             | 22
+     sysstat            |             | 23
+     tar                |        []   | 30
+     texinfo            |             | 17
+     texinfo_document   |             | 13
+     tigervnc           |             | 14
+     tin                |        []   |  7
+     tin-man            |             |  1
+     tracgoogleappsa... |        []   | 22
+     trader             |             | 12
+     util-linux         |             | 13
+     ve                 |             | 14
+     vice               |             |  1
+     vmm                |             |  3
+     vorbis-tools       |             | 13
+     wastesedge         |             |  3
+     wcd                |             |  8
+     wcd-man            |             |  3
+     wdiff              |        []   | 23
+     wget               |             | 21
+     wyslij-po          |             | 14
+     xboard             |             | 10
+     xdg-user-dirs      |  []    []   | 68
+     xkeyboard-config   |        []   | 28
+                        +-------------+
+       89 teams           zh_HK zh_TW
+      166 domains           7    42    2809
+
+   Some counters in the preceding matrix are higher than the number of
+visible blocks let us expect.  This is because a few extra PO files are
+used for implementing regional variants of languages, or language
+dialects.
+
+   For a PO file in the matrix above to be effective, the package to
+which it applies should also have been internationalized and distributed
+as such by its maintainer.  There might be an observable lag between the
+mere existence a PO file and its wide availability in a distribution.
+
+   If Jun 2014 seems to be old, you may fetch a more recent copy of this
+'ABOUT-NLS' file on most GNU archive sites.  The most up-to-date matrix
+with full percentage details can be found at
+'http://translationproject.org/extra/matrix.html'.
+
+1.5 Using 'gettext' in new packages
+===================================
+
+If you are writing a freely available program and want to
+internationalize it you are welcome to use GNU 'gettext' in your
+package.  Of course you have to respect the GNU Lesser General Public
+License which covers the use of the GNU 'gettext' library.  This means
+in particular that even non-free programs can use 'libintl' as a shared
+library, whereas only free software can use 'libintl' as a static
+library or use modified versions of 'libintl'.
+
+   Once the sources are changed appropriately and the setup can handle
+the use of 'gettext' the only thing missing are the translations.  The
+Free Translation Project is also available for packages which are not
+developed inside the GNU project.  Therefore the information given above
+applies also for every other Free Software Project.  Contact
+'coordinator@translationproject.org' to make the '.pot' files available
+to the translation teams.
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..32bb59b
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,3 @@
+Christian Grothoff
+Dennis Neufeld
+Dominik Meister
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..dba13ed
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,661 @@
+                    GNU AFFERO GENERAL PUBLIC LICENSE
+                       Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+  A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate.  Many developers of free software are heartened and
+encouraged by the resulting cooperation.  However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+  The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community.  It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server.  Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+  An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals.  This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU Affero General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Remote Network Interaction; Use with the GNU General Public License.
+
+  Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software.  This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time.  Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Affero General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Affero General Public License for more details.
+
+    You should have received a copy of the GNU Affero General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source.  For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code.  There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/COPYING.AGPL b/COPYING.AGPL
new file mode 100644
index 0000000..dba13ed
--- /dev/null
+++ b/COPYING.AGPL
@@ -0,0 +1,661 @@
+                    GNU AFFERO GENERAL PUBLIC LICENSE
+                       Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+  A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate.  Many developers of free software are heartened and
+encouraged by the resulting cooperation.  However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+  The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community.  It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server.  Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+  An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals.  This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU Affero General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Remote Network Interaction; Use with the GNU General Public License.
+
+  Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software.  This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time.  Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Affero General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Affero General Public License for more details.
+
+    You should have received a copy of the GNU Affero General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source.  For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code.  There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..1c4cf10
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,8 @@
+Fri 30 Jul 2021 09:56:51 AM CEST
+       Preparing for first release. -CG
+
+Mon 05 Apr 2021 08:09:30 PM CEST
+       Add gettext support to build system. -CG
+
+Tue 18 Jun 2019 04:19:29 PM CEST
+       Initial project setup. -CG
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..8865734
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,368 @@
+Installation Instructions
+*************************
+
+   Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
+Foundation, Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell command './configure && make && make install'
+should configure, build, and install this package.  The following
+more-detailed instructions are generic; see the 'README' file for
+instructions specific to this package.  Some packages provide this
+'INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The 'configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a 'Makefile' in each directory of the package.
+It may also create one or more '.h' files containing system-dependent
+definitions.  Finally, it creates a shell script 'config.status' that
+you can run in the future to recreate the current configuration, and a
+file 'config.log' containing compiler output (useful mainly for
+debugging 'configure').
+
+   It can also use an optional file (typically called 'config.cache' and
+enabled with '--cache-file=config.cache' or simply '-C') that saves the
+results of its tests to speed up reconfiguring.  Caching is disabled by
+default to prevent problems with accidental use of stale cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how 'configure' could check whether to do them, and mail
+diffs or instructions to the address given in the 'README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point 'config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file 'configure.ac' (or 'configure.in') is used to create
+'configure' by a program called 'autoconf'.  You need 'configure.ac' if
+you want to change it or regenerate 'configure' using a newer version of
+'autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. 'cd' to the directory containing the package's source code and type
+     './configure' to configure the package for your system.
+
+     Running 'configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type 'make' to compile the package.
+
+  3. Optionally, type 'make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type 'make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the 'make install' phase executed with root
+     privileges.
+
+  5. Optionally, type 'make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior 'make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing 'make clean'.  To also remove the
+     files that 'configure' created (so you can compile the package for
+     a different kind of computer), type 'make distclean'.  There is
+     also a 'make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type 'make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide 'make
+     distcheck', which can by used by developers to test that all other
+     targets like 'make install' and 'make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the 'configure' script does not know about.  Run './configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give 'configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here is
+an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU 'make'.  'cd' to the
+directory where you want the object files and executables to go and run
+the 'configure' script.  'configure' automatically checks for the source
+code in the directory that 'configure' is in and in '..'.  This is known
+as a "VPATH" build.
+
+   With a non-GNU 'make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use 'make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple '-arch' options to the
+compiler but only a single '-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the 'lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, 'make install' installs the package's commands under
+'/usr/local/bin', include files under '/usr/local/include', etc.  You
+can specify an installation prefix other than '/usr/local' by giving
+'configure' the option '--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like '--bindir=DIR' to specify different values for particular
+kinds of files.  Run 'configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the default
+for these options is expressed in terms of '${prefix}', so that
+specifying just '--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to 'configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+'make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, 'make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+'${prefix}'.  Any directories that were specified during 'configure',
+but not in terms of '${prefix}', must each be overridden at install time
+for the entire installation to be relocated.  The approach of makefile
+variable overrides for each directory variable is required by the GNU
+Coding Standards, and ideally causes no recompilation.  However, some
+platforms have known limitations with the semantics of shared libraries
+that end up requiring recompilation when using this method, particularly
+noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the 'DESTDIR' variable.  For
+example, 'make install DESTDIR=/alternate/directory' will prepend
+'/alternate/directory' before all installation names.  The approach of
+'DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of '${prefix}'
+at 'configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving 'configure' the
+option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
+
+   Some packages pay attention to '--enable-FEATURE' options to
+'configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to '--with-PACKAGE' options, where PACKAGE
+is something like 'gnu-as' or 'x' (for the X Window System).  The
+'README' should mention any '--enable-' and '--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, 'configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the 'configure' options '--x-includes=DIR' and
+'--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of 'make' will be.  For these packages, running './configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with 'make V=1'; while running './configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with 'make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU CC
+is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX 'make' updates targets which have the same time stamps as their
+prerequisites, which makes it generally unusable when shipped generated
+files such as 'configure' are involved.  Use GNU 'make' instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its '<wchar.h>' header file.  The option '-nodtk' can be used as a
+workaround.  If GNU CC is not installed, it is therefore recommended to
+try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put '/usr/ucb' early in your 'PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in '/usr/bin'.  So, if you need '/usr/ucb'
+in your 'PATH', put it _after_ '/usr/bin'.
+
+   On Haiku, software installed for all users goes in '/boot/common',
+not '/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features 'configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, 'configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+'--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as 'sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file 'config.sub' for the possible values of each field.  If
+'config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option '--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with '--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for 'configure' scripts to share,
+you can create a site shell script called 'config.site' that gives
+default values for variables like 'CC', 'cache_file', and 'prefix'.
+'configure' looks for 'PREFIX/share/config.site' if it exists, then
+'PREFIX/etc/config.site' if it exists.  Or, you can set the
+'CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all 'configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to 'configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the 'configure' command line, using 'VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified 'gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
+Autoconf limitation.  Until the limitation is lifted, you can use this
+workaround:
+
+     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+'configure' Invocation
+======================
+
+   'configure' recognizes the following options to control how it
+operates.
+
+'--help'
+'-h'
+     Print a summary of all of the options to 'configure', and exit.
+
+'--help=short'
+'--help=recursive'
+     Print a summary of the options unique to this package's
+     'configure', and exit.  The 'short' variant lists options used only
+     in the top level, while the 'recursive' variant lists options also
+     present in any nested packages.
+
+'--version'
+'-V'
+     Print the version of Autoconf used to generate the 'configure'
+     script, and exit.
+
+'--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally 'config.cache'.  FILE defaults to '/dev/null' to
+     disable caching.
+
+'--config-cache'
+'-C'
+     Alias for '--cache-file=config.cache'.
+
+'--quiet'
+'--silent'
+'-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to '/dev/null' (any error
+     messages will still be shown).
+
+'--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     'configure' can determine that directory automatically.
+
+'--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names:: for
+     more details, including other options available for fine-tuning the
+     installation locations.
+
+'--no-create'
+'-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+'configure' also accepts some other, not widely useful, options.  Run
+'configure --help' for more details.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..9d2a8f8
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,25 @@
+# This Makefile is in the public domain
+
+if DOC_ONLY
+if ENABLE_DOC
+  SUBDIRS = . doc po
+else
+  SUBDIRS = . po
+endif
+else
+if ENABLE_DOC
+  SUBDIRS = . contrib src doc po
+else
+  SUBDIRS = . contrib src doc po
+endif
+endif
+
+@DX_RULES@
+
+ACLOCAL_AMFLAGS = -I m4
+EXTRA_DIST = config.rpath  \
+ AUTHORS \
+ COPYING.AGPL \
+ contrib/gnunet.tag \
+ contrib/uncrustify.cfg \
+ contrib/uncrustify_precommit
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..e69de29
diff --git a/README b/README
new file mode 100644
index 0000000..7a09d7b
--- /dev/null
+++ b/README
@@ -0,0 +1,42 @@
+=============
+GNU ANASTASIS
+=============
+
+This package includes the Anastasis core logic.  The code is released
+under the GNU Affero General Public License (v3 or later).  See
+COPYING for details.
+
+Description
+===========
+
+GNU Anastasis is a key backup and recovery tool from the GNU project.
+This package includes the backend run by the Anastasis providers as
+well as libraries for clients and a command-line interface.
+
+Dependencies
+============
+
+libjansson  : MIT License
+libgcrypt   : LGPL
+postgresql  : PostgreSQL License
+libgnunet*  : GPLv3+,
+libtaler*   : GPLv3+
+GNU recutils: GPLv3+ (when building from Git)
+
+
+Directory structure
+===================
+
+src/include/ includes installed (public) headers
+src/util/ implements helper and crypto routines
+src/backend/ contains the REST service
+src/stasis/ implements the database logic for the backend
+src/authorization/ contains various authorization plugins
+src/restclient/ implements a REST client for the backend
+src/lib/ implements the main client-side backup and recovery logic
+src/testing/ contains test cases for 'src/restclient/' and 'src/lib/'
+src/reducer/ implements a reducer API on top of 'src/lib/'
+src/cli/ includes a reducer-based command-line interface
+contrib/ contains resource files, like what identity attributes to ask for
+doc/ contains documentation files, like TeXinfo
+po/ internationalization via GNU gettext
diff --git a/bootstrap b/bootstrap
new file mode 100755
index 0000000..a7414cd
--- /dev/null
+++ b/bootstrap
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+if ! git --version >/dev/null; then
+  echo "git not installed"
+  exit 1
+fi
+
+echo "$0: Updating submodules"
+echo | git submodule update --init
+
+git submodule update --init
+
+./contrib/gana-update.sh
+
+# This is more portable than `which' but comes with
+# the caveat of not(?) properly working on busybox's ash:
+existence()
+{
+    command -v "$1" >/dev/null 2>&1
+}
+
+
+if existence uncrustify; then
+    echo "Installing uncrustify hook and configuration"
+    # Install uncrustify format symlink (if possible)
+    ln -s contrib/uncrustify.cfg uncrustify.cfg 2> /dev/null
+    # Install pre-commit hook (if possible)
+    ln -s ../../contrib/uncrustify_precommit .git/hooks/pre-commit 2> /dev/null
+else
+    echo "Uncrustify not detected, hook not installed. Please install 
uncrustify if you plan on doing development"
+fi
+
+
+echo "$0: Running autoreconf"
+autoreconf -if
diff --git a/config.rpath b/config.rpath
new file mode 100755
index 0000000..98183ff
--- /dev/null
+++ b/config.rpath
@@ -0,0 +1,684 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+#   Copyright 1996-2016 Free Software Foundation, Inc.
+#   Taken from GNU libtool, 2001
+#   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+#   This file is free software; the Free Software Foundation gives
+#   unlimited permission to copy and/or distribute it, with or without
+#   modifications, as long as this notice is preserved.
+#
+# The first argument passed to this file is the canonical host specification,
+#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+#   than 256 bytes, otherwise the compiler driver will dump core. The only
+#   known workaround is to choose shorter directory names for the build
+#   directory and/or the installation directory.
+
+# All known linkers require a '.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's _LT_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+  wl='-Wl,'
+else
+  case "$host_os" in
+    aix*)
+      wl='-Wl,'
+      ;;
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      ;;
+    hpux9* | hpux10* | hpux11*)
+      wl='-Wl,'
+      ;;
+    irix5* | irix6* | nonstopux*)
+      wl='-Wl,'
+      ;;
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+        ecc*)
+          wl='-Wl,'
+          ;;
+        icc* | ifort*)
+          wl='-Wl,'
+          ;;
+        lf95*)
+          wl='-Wl,'
+          ;;
+        nagfor*)
+          wl='-Wl,-Wl,,'
+          ;;
+        pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+          wl='-Wl,'
+          ;;
+        ccc*)
+          wl='-Wl,'
+          ;;
+        xl* | bgxl* | bgf* | mpixl*)
+          wl='-Wl,'
+          ;;
+        como)
+          wl='-lopt='
+          ;;
+        *)
+          case `$CC -V 2>&1 | sed 5q` in
+            *Sun\ F* | *Sun*Fortran*)
+              wl=
+              ;;
+            *Sun\ C*)
+              wl='-Wl,'
+              ;;
+          esac
+          ;;
+      esac
+      ;;
+    newsos6)
+      ;;
+    *nto* | *qnx*)
+      ;;
+    osf3* | osf4* | osf5*)
+      wl='-Wl,'
+      ;;
+    rdos*)
+      ;;
+    solaris*)
+      case $cc_basename in
+        f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+          wl='-Qoption ld '
+          ;;
+        *)
+          wl='-Wl,'
+          ;;
+      esac
+      ;;
+    sunos4*)
+      wl='-Qoption ld '
+      ;;
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      wl='-Wl,'
+      ;;
+    sysv4*MP*)
+      ;;
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      wl='-Wl,'
+      ;;
+    unicos*)
+      wl='-Wl,'
+      ;;
+    uts4*)
+      ;;
+  esac
+fi
+
+# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # Set some defaults for GNU ld with shared library support. These
+  # are reset later if shared libraries are not supported. Putting them
+  # here allows them to be overridden if necessary.
+  # Unlike libtool, we use -rpath here, not --rpath, since the documented
+  # option of GNU ld is called -rpath, not --rpath.
+  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+  case "$host_os" in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+        ld_shlibs=no
+      fi
+      ;;
+    amigaos*)
+      case "$host_cpu" in
+        powerpc)
+          ;;
+        m68k)
+          hardcode_libdir_flag_spec='-L$libdir'
+          hardcode_minus_L=yes
+          ;;
+      esac
+      ;;
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    cygwin* | mingw* | pw32* | cegcc*)
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    haiku*)
+      ;;
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      ;;
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    netbsd*)
+      ;;
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+        ld_shlibs=no
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; 
then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+          ld_shlibs=no
+          ;;
+        *)
+          if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; 
then
+            hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo 
${wl}-rpath,$libdir`'
+          else
+            ld_shlibs=no
+          fi
+          ;;
+      esac
+      ;;
+    sunos4*)
+      hardcode_direct=yes
+      ;;
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+  esac
+  if test "$ld_shlibs" = no; then
+    hardcode_libdir_flag_spec=
+  fi
+else
+  case "$host_os" in
+    aix3*)
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes; then
+        # Neither direct hardcoding nor static linking is supported with a
+        # broken collect2.
+        hardcode_direct=unsupported
+      fi
+      ;;
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+        # On IA64, the linker does run time linking by default, so we don't
+        # have to do anything special.
+        aix_use_runtimelinking=no
+      else
+        aix_use_runtimelinking=no
+        # Test if we are trying to use run time linking or normal
+        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+        # need to do runtime linking.
+        case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+          for ld_flag in $LDFLAGS; do
+            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+              aix_use_runtimelinking=yes
+              break
+            fi
+          done
+          ;;
+        esac
+      fi
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      if test "$GCC" = yes; then
+        case $host_os in aix4.[012]|aix4.[012].*)
+          collect2name=`${CC} -print-prog-name=collect2`
+          if test -f "$collect2name" && \
+            strings "$collect2name" | grep resolve_lib_name >/dev/null
+          then
+            # We have reworked collect2
+            :
+          else
+            # We have old collect2
+            hardcode_direct=unsupported
+            hardcode_minus_L=yes
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_libdir_separator=
+          fi
+          ;;
+        esac
+      fi
+      # Begin _LT_AC_SYS_LIBPATH_AIX.
+      echo 'int main () { return 0; }' > conftest.c
+      ${CC} ${LDFLAGS} conftest.c -o conftest
+      aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File 
Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+      if test -z "$aix_libpath"; then
+        aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File 
Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+      fi
+      if test -z "$aix_libpath"; then
+        aix_libpath="/usr/lib:/lib"
+      fi
+      rm -f conftest.c conftest
+      # End _LT_AC_SYS_LIBPATH_AIX.
+      if test "$aix_use_runtimelinking" = yes; then
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+      else
+        if test "$host_cpu" = ia64; then
+          hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+        else
+          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        fi
+      fi
+      ;;
+    amigaos*)
+      case "$host_cpu" in
+        powerpc)
+          ;;
+        m68k)
+          hardcode_libdir_flag_spec='-L$libdir'
+          hardcode_minus_L=yes
+          ;;
+      esac
+      ;;
+    bsdi[45]*)
+      ;;
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      libext=lib
+      ;;
+    darwin* | rhapsody*)
+      hardcode_direct=no
+      if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; 
then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    dgux*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      ;;
+    freebsd2.[01]*)
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      ;;
+    freebsd* | dragonfly*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    hpux9*)
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      ;;
+    hpux10*)
+      if test "$with_gnu_ld" = no; then
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        hardcode_direct=yes
+        # hardcode_minus_L: Not really in the search PATH,
+        # but as the default location of the library.
+        hardcode_minus_L=yes
+      fi
+      ;;
+    hpux11*)
+      if test "$with_gnu_ld" = no; then
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct=no
+            ;;
+          *)
+            hardcode_direct=yes
+            # hardcode_minus_L: Not really in the search PATH,
+            # but as the default location of the library.
+            hardcode_minus_L=yes
+            ;;
+        esac
+      fi
+      ;;
+    irix5* | irix6* | nonstopux*)
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    netbsd*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    newsos6)
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    *nto* | *qnx*)
+      ;;
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+        hardcode_direct=yes
+        if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test 
"$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+        else
+          case "$host_os" in
+            openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+              hardcode_libdir_flag_spec='-R$libdir'
+              ;;
+            *)
+              hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+              ;;
+          esac
+        fi
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      ;;
+    osf3*)
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    osf4* | osf5*)
+      if test "$GCC" = yes; then
+        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+        # Both cc and cxx compiler support -rpath directly
+        hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+    solaris*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      ;;
+    sunos4*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      ;;
+    sysv4)
+      case $host_vendor in
+        sni)
+          hardcode_direct=yes # is this really true???
+          ;;
+        siemens)
+          hardcode_direct=no
+          ;;
+        motorola)
+          hardcode_direct=no #Motorola manual says yes, but my tests say they 
lie
+          ;;
+      esac
+      ;;
+    sysv4.3*)
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+        ld_shlibs=yes
+      fi
+      ;;
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | 
sco3.2v5.0.[024]*)
+      ;;
+    sysv5* | sco3.2v5* | sco5v6*)
+      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo 
${wl}-R,$libdir`'
+      hardcode_libdir_separator=':'
+      ;;
+    uts4*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      ;;
+    *)
+      ld_shlibs=no
+      ;;
+  esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec=      # the last element of library_names_spec in libtool.m4
+libname_spec='lib$name'
+case "$host_os" in
+  aix3*)
+    library_names_spec='$libname.a'
+    ;;
+  aix[4-9]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  amigaos*)
+    case "$host_cpu" in
+      powerpc*)
+        library_names_spec='$libname$shrext' ;;
+      m68k)
+        library_names_spec='$libname.a' ;;
+    esac
+    ;;
+  beos*)
+    library_names_spec='$libname$shrext'
+    ;;
+  bsdi[45]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  cygwin* | mingw* | pw32* | cegcc*)
+    shrext=.dll
+    library_names_spec='$libname.dll.a $libname.lib'
+    ;;
+  darwin* | rhapsody*)
+    shrext=.dylib
+    library_names_spec='$libname$shrext'
+    ;;
+  dgux*)
+    library_names_spec='$libname$shrext'
+    ;;
+  freebsd[23].*)
+    library_names_spec='$libname$shrext$versuffix'
+    ;;
+  freebsd* | dragonfly*)
+    library_names_spec='$libname$shrext'
+    ;;
+  gnu*)
+    library_names_spec='$libname$shrext'
+    ;;
+  haiku*)
+    library_names_spec='$libname$shrext'
+    ;;
+  hpux9* | hpux10* | hpux11*)
+    case $host_cpu in
+      ia64*)
+        shrext=.so
+        ;;
+      hppa*64*)
+        shrext=.sl
+        ;;
+      *)
+        shrext=.sl
+        ;;
+    esac
+    library_names_spec='$libname$shrext'
+    ;;
+  interix[3-9]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  irix5* | irix6* | nonstopux*)
+    library_names_spec='$libname$shrext'
+    case "$host_os" in
+      irix5* | nonstopux*)
+        libsuff= shlibsuff=
+        ;;
+      *)
+        case $LD in
+          *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+          *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 
shlibsuff=N32 ;;
+          *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+          *) libsuff= shlibsuff= ;;
+        esac
+        ;;
+    esac
+    ;;
+  linux*oldld* | linux*aout* | linux*coff*)
+    ;;
+  linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    library_names_spec='$libname$shrext'
+    ;;
+  knetbsd*-gnu)
+    library_names_spec='$libname$shrext'
+    ;;
+  netbsd*)
+    library_names_spec='$libname$shrext'
+    ;;
+  newsos6)
+    library_names_spec='$libname$shrext'
+    ;;
+  *nto* | *qnx*)
+    library_names_spec='$libname$shrext'
+    ;;
+  openbsd*)
+    library_names_spec='$libname$shrext$versuffix'
+    ;;
+  os2*)
+    libname_spec='$name'
+    shrext=.dll
+    library_names_spec='$libname.a'
+    ;;
+  osf3* | osf4* | osf5*)
+    library_names_spec='$libname$shrext'
+    ;;
+  rdos*)
+    ;;
+  solaris*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sunos4*)
+    library_names_spec='$libname$shrext$versuffix'
+    ;;
+  sysv4 | sysv4.3*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sysv4*MP*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    library_names_spec='$libname$shrext'
+    ;;
+  tpf*)
+    library_names_spec='$libname$shrext'
+    ;;
+  uts4*)
+    library_names_spec='$libname$shrext'
+    ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e 
"$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e 
"$sed_quote_subst"`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 
's/^X//' -e "$sed_quote_subst"`
+
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..65ae2c8
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,349 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+#
+# This configure file is in the public domain
+
+AC_PREREQ([2.69])
+AC_INIT([anastasis], [0.0.0], [taler-bug@gnu.org])
+AC_CONFIG_SRCDIR([src/backend/anastasis-httpd.c])
+AC_CONFIG_HEADERS([anastasis_config.h])
+# support for non-recursive builds
+AM_INIT_AUTOMAKE([subdir-objects 1.9 tar-pax])
+
+# pretty build rules
+AM_SILENT_RULES([yes])
+
+AC_CONFIG_MACRO_DIR([m4])
+
+AC_PROG_AWK
+AC_PROG_CC_C99
+AC_PROG_OBJC
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AM_PROG_CC_C_O
+
+LT_INIT([disable-static dlopen])
+
+DX_INIT_DOXYGEN([anastasis],,,
+DX_PS_FEATURE(OFF),
+DX_PDF_FEATURE(OFF),
+DX_RTF_FEATURE(OFF),
+DX_CHI_FEATURE(OFF),
+DX_XML_FEATURE(OFF))
+
+AC_MSG_CHECKING([whether to compile documentation ONLY])
+AC_ARG_ENABLE([only-doc],
+  [AS_HELP_STRING([--enable-only-doc], [only compile Taler documentation])],
+  [doc_only=${enableval}],
+  [doc_only=no])
+AC_MSG_RESULT($doc_only)
+AM_CONDITIONAL([DOC_ONLY], [test "$doc_only" = "yes"])
+
+
+# Not indented as it covers most of the file...
+AS_IF([test "x$doc_only" != xyes],[
+
+
+# Checks for programs.
+AC_PROG_CC
+AC_PROG_CC_C99
+
+# check for gettext
+AM_GNU_GETTEXT([external])
+AM_GNU_GETTEXT_VERSION([0.19.8])
+
+
+CFLAGS="-Wall $CFLAGS"
+
+# Checks for header files.
+AC_CHECK_HEADERS([stdint.h stdlib.h string.h unistd.h])
+
+ANASTASIS_LIB_LDFLAGS="-export-dynamic -no-undefined"
+ANASTASIS_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
+
+AC_SUBST(TALER_LIB_LDFLAGS)
+AC_SUBST(TALER_PLUGIN_LDFLAGS)
+
+
+# check for libgnurl
+# libgnurl
+LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
+AS_IF([test "x$gnurl" = x1],[
+       AM_CONDITIONAL(HAVE_LIBGNURL, true)
+       AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
+],[
+       AM_CONDITIONAL(HAVE_LIBGNURL, false)
+])
+
+# libcurl-gnutls
+LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
+AS_IF([test "x$curl" = xtrue],
+      [LDFLAGS="-L$with_libcurl/lib $LDFLAGS"
+       CPPFLAGS="-I$with_libcurl/include $CPPFLAGS"
+       AC_CHECK_HEADERS([curl/curl.h],
+                        [AC_CHECK_DECLS(CURLINFO_TLS_SESSION,
+                         [curl=true],
+                         [curl=false],
+                         [[#include <curl/curl.h>]])],
+                        [curl=false])
+       # need libcurl-gnutls.so, everything else is not acceptable
+       AC_CHECK_LIB([curl-gnutls],
+                    [curl_easy_getinfo],,
+                    [curl=false])])
+       # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
+
+# Check for curl/curl.h and gnurl/curl.h so we can use #ifdef
+# HAVE_CURL_CURL_H later (the above LIBCURL_CHECK_CONFIG accepted
+# *either* header set).
+AC_CHECK_HEADERS([curl/curl.h],,
+  curl=false
+  AC_CHECK_HEADERS([gnurl/curl.h],,
+  gnurl=false))
+
+# libgnurl
+AS_IF([test "x$gnurl" = "x0"],
+      [AS_IF([test "x$curl" = "x0"],
+              [AC_MSG_NOTICE([NOTICE: libgnurl not found. taler-bank support 
will not be compiled.])],
+              [AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use 
libcurl-gnutls instead.])])])
+
+AS_IF([test x$curl = xfalse],
+       [AM_CONDITIONAL(HAVE_LIBCURL, false)
+        AS_IF([test "x$gnurl" = "x0"],
+              [AC_MSG_WARN([GNU Taler requires libcurl-gnutls  >= 7.34])])],
+       [AM_CONDITIONAL(HAVE_LIBCURL, true)
+       AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])])
+
+# gcov compilation
+AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
+AC_ARG_ENABLE([coverage],
+              AS_HELP_STRING([--enable-coverage],
+                             [compile the library with code coverage support]),
+              [use_gcov=${enableval}],
+              [use_gcov=no])
+AC_MSG_RESULT($use_gcov)
+AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
+
+
+# Check for GNUnet's libgnunetutil.
+libgnunetutil=0
+AC_MSG_CHECKING([for libgnunetutil])
+AC_ARG_WITH(gnunet,
+            [AS_HELP_STRING([--with-gnunet=PFX], [base of GNUnet 
installation])],
+            [AC_MSG_RESULT([given as $with_gnunet])],
+            [AC_MSG_RESULT(not given)
+             with_gnunet=yes])
+AS_CASE([$with_gnunet],
+        [yes], [],
+        [no], [AC_MSG_ERROR([--with-gnunet is required])],
+        [LDFLAGS="-L$with_gnunet/lib $LDFLAGS"
+         CPPFLAGS="-I$with_gnunet/include $CPPFLAGS"])
+AC_CHECK_HEADERS([gnunet/platform.h gnunet/gnunet_util_lib.h],
+ [AC_CHECK_LIB([gnunetutil],
+               [GNUNET_SCHEDULER_run],
+               [libgnunetutil=1])],
+ [],
+ [#ifdef HAVE_GNUNET_PLATFORM_H
+     #include <gnunet/platform.h>
+  #endif])
+AS_IF([test $libgnunetutil != 1],
+  [AC_MSG_ERROR([[
+***
+*** You need libgnunetutil to build this program.
+*** This library is part of GNUnet, available at
+***   https://gnunet.org
+*** ]])])
+
+
+# test for postgres
+AX_LIB_POSTGRESQL([9.3])
+AS_IF([test "x$found_postgresql" = "xyes"],[postgres=true])
+AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
+
+
+
+
+# Check for Taler's libtalerutil
+libtalerutil=0
+AC_MSG_CHECKING([for libtalerutil])
+AC_ARG_WITH(exchange,
+            [AS_HELP_STRING([--with-exchange=PFX], [base of Taler EXCHANGE 
installation])],
+            [AC_MSG_RESULT([given as $with_exchange])],
+            [AC_MSG_RESULT(not given)
+             with_exchange=yes])
+AS_CASE([$with_exchange],
+        [yes], [],
+        [no], [AC_MSG_ERROR([--with-exchange is required])],
+        [LDFLAGS="-L$with_exchange/lib $LDFLAGS"
+         CPPFLAGS="-I$with_exchange/include $CPPFLAGS $POSTGRESQL_CPPFLAGS"])
+
+CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
+LDFLAGS="$LDFLAGS -L/usr/local/lib"
+
+AC_CHECK_HEADERS([taler/taler_util.h],
+ [AC_CHECK_LIB([talerutil],
+               [TALER_b2s],
+               [libtalerutil=1],
+               [AC_MSG_ERROR([libtalerutil not found])])],
+ [AC_MSG_ERROR([taler/taler_util.h not found])],
+ [#include <taler/platform.h>])
+
+# Check for Taler's libtalermerchant
+libtalermerchant=0
+AC_MSG_CHECKING([for libtalermerchant])
+AC_ARG_WITH(merchant,
+            [AS_HELP_STRING([--with-merchant=PFX], [base of Taler MERCHANT 
installation])],
+            [AC_MSG_RESULT([given as $with_merchant])],
+            [AC_MSG_RESULT(not given)
+             with_merchant=yes])
+AS_CASE([$with_merchant],
+        [yes], [],
+        [no], [AC_MSG_ERROR([--with-merchant is required])],
+        [LDFLAGS="-L$with_merchant/lib $LDFLAGS"
+         CPPFLAGS="-I$with_merchant/include $CPPFLAGS $POSTGRESQL_CPPFLAGS"])
+
+AC_CHECK_HEADERS([taler/taler_merchant_service.h],
+ [AC_CHECK_LIB([talermerchant],
+               [TALER_MERCHANT_parse_pay_uri],
+               [libtalermerchant=1],
+               [AC_MSG_ERROR([libtalermerchant not found])])],
+ [AC_MSG_ERROR([taler/taler_merchant_service.h found])],
+ [#include <taler/platform.h>])
+
+
+
+
+# check for libmicrohttpd
+microhttpd=0
+AC_MSG_CHECKING([for microhttpd])
+AC_ARG_WITH([microhttpd],
+            [AS_HELP_STRING([--with-microhttpd=PFX], [base of microhttpd 
installation])],
+            [AC_MSG_RESULT([given as $with_microhttpd])],
+            [AC_MSG_RESULT([not given])
+             with_microhttpd=yes])
+AS_CASE([$with_microhttpd],
+        [yes], [],
+        [no], [AC_MSG_ERROR([--with-microhttpd is required])],
+        [LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
+         CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"])
+AC_CHECK_LIB(microhttpd,MHD_start_daemon,
+  [AC_CHECK_HEADER([microhttpd.h],[microhttpd=1])])
+AS_IF([test $microhttpd = 0],
+  [AC_MSG_ERROR([[
+***
+*** You need libmicrohttpd to build this program.
+*** ]])])
+
+jansson=0
+PKG_CHECK_MODULES([JANSSON], [jansson >= 2.3],
+                  [LDFLAGS="$JANSSON_LIBS $LDFLAGS"
+                   CPPFLAGS="$JANSSON_CFLAGS $CPPFLAGS"],
+                  [AC_MSG_ERROR([[
+***
+*** You need libjansson to build this program.
+***]])])
+
+
+# Require minimum libgcrypt version
+need_libgcrypt_version=1.6.1
+AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], ["$need_libgcrypt_version"],
+                                             [minimum version of libgcrypt 
required])
+AM_PATH_LIBGCRYPT([$need_libgcrypt_version])
+
+# logging
+extra_logging=0
+AC_ARG_ENABLE([logging],
+   AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. 
Possible values: yes,no,verbose ('yes' is the default)]),
+   [AS_IF([test "x$enableval" = "xyes"], [],
+          [test "x$enableval" = "xno"], 
[AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
+          [test "x$enableval" = "xverbose"], [extra_logging=1]
+          [test "x$enableval" = "xveryverbose"], [extra_logging=2])
+   ], [])
+AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging 
is enabled, 2 for very verbose extra logging, 0 otherwise])
+
+# version info
+AC_PATH_PROG(gitcommand, git)
+AC_MSG_CHECKING(for source being under a VCS)
+git_version=
+AS_IF([test ! "X$gitcommand" = "X"],
+[
+  git_version=$(cd $srcdir ; git rev-list --full-history --all --abbrev-commit 
| head -n 1 2>/dev/null)
+])
+AS_IF([test "X$git_version" = "X"],
+  [
+    vcs_name="no"
+    vcs_version="\"release\""
+  ],
+  [
+    vcs_name="yes, git-svn"
+    vcs_version="\"git-$git_version\""
+  ])
+AC_MSG_RESULT($vcs_name)
+
+AC_MSG_CHECKING(VCS version)
+AC_MSG_RESULT($vcs_version)
+AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball 
version])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_TYPE_UINT16_T
+AC_TYPE_UINT32_T
+AC_TYPE_UINT64_T
+AC_TYPE_INTMAX_T
+AC_TYPE_UINTMAX_T
+
+# Checks for library functions.
+AC_CHECK_FUNCS([strdup])
+
+
+AC_ARG_ENABLE([[doc]],
+  [AS_HELP_STRING([[--disable-doc]], [do not build any documentation])], ,
+    [enable_doc=yes])
+test "x$enable_doc" = "xno" || enable_doc=yes
+AM_CONDITIONAL([ENABLE_DOC], [test "x$enable_doc" = "xyes"])
+
+
+],[  # this is about the doc-only if on top of the file
+
+# logic if doc_only is set, make sure conditionals are still defined
+AM_CONDITIONAL([HAVE_POSTGRESQL], [false])
+AM_CONDITIONAL([HAVE_LIBCURL], [false])
+AM_CONDITIONAL([HAVE_LIBGNURL], [false])
+AM_CONDITIONAL([USE_COVERAGE], [false])
+AM_CONDITIONAL([ENABLE_DOC], [true])
+
+
+# end of 'doc_only'
+])
+
+
+# should experimental code be compiled (code that may not yet compile / have 
passing test cases)?
+AC_MSG_CHECKING(whether to compile experimental code)
+AC_ARG_ENABLE([experimental],
+   [AS_HELP_STRING([--enable-experimental], [enable compiling experimental 
code])],
+   [enable_experimental=${enableval}],
+   [enable_experimental=no])
+AC_MSG_RESULT($enable_experimental)
+AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
+
+
+AC_CONFIG_FILES([
+Makefile
+contrib/Makefile
+doc/Makefile
+doc/doxygen/Makefile
+po/Makefile.in
+src/Makefile
+src/authorization/Makefile
+src/backend/Makefile
+src/cli/Makefile
+src/include/Makefile
+src/lib/Makefile
+src/util/Makefile
+src/reducer/Makefile
+src/restclient/Makefile
+src/stasis/Makefile
+src/testing/Makefile
+])
+AC_OUTPUT
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
new file mode 100644
index 0000000..4304bcf
--- /dev/null
+++ b/contrib/Makefile.am
@@ -0,0 +1,31 @@
+# This Makefile.am is in the public domain
+# Process this file with automake to produce Makefile.in
+
+SUBDIRS = .
+
+pkgdatadir= $(prefix)/share/anastasis/
+
+EXTRA_DIST = \
+  $(pkgdata_DATA) \
+  pogen.sh \
+  gana.sh \
+  gana-update.sh \
+  gnunet.tag \
+  microhttpd.tag
+
+pkgdata_DATA = \
+  redux.al.json \
+  redux.be.json \
+  redux.ch.json \
+  redux.cz.json \
+  redux.de.json \
+  redux.dk.json \
+  redux.in.json \
+  redux.it.json \
+  redux.jp.json \
+  redux.sk.json \
+  redux.us.json \
+  redux.xx.json \
+  redux.xy.json \
+  redux.countries.json \
+  provider-list.json
diff --git a/contrib/gana b/contrib/gana
new file mode 160000
index 0000000..0f1eb85
--- /dev/null
+++ b/contrib/gana
@@ -0,0 +1 @@
+Subproject commit 0f1eb8555b89056fe62e093211e53a1f9ba85d56
diff --git a/contrib/gana-update.sh b/contrib/gana-update.sh
new file mode 100755
index 0000000..94b2719
--- /dev/null
+++ b/contrib/gana-update.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Helper script to recompute error codes based on submodule
+# Run from exchange/ main directory.
+set -eu
+
+# Generate taler-error-codes.h in gana and copy it to
+# src/include/taler_error_codes.h
+cd contrib/gana/gnu-taler-error-codes
+make
+cd ../../..
+cat contrib/gana/gnu-taler-error-codes/taler_error_codes.h | sed -e 
"s/GNU_TALER_ERROR_CODES_H/GNU_ANASTASIS_ERROR_CODES_H/" -e 
"s/taler_error_codes.h/anastasis_error_codes.h/" > 
src/include/anastasis_error_codes.h
diff --git a/contrib/gana.sh b/contrib/gana.sh
new file mode 100755
index 0000000..30dc799
--- /dev/null
+++ b/contrib/gana.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Helper script to update to latest GANA
+# Run from exchange/ main directory.
+set -eu
+
+cd contrib/gana
+git pull origin master
+cd ../..
+
+exec ./contrib/gana-update.sh
diff --git a/contrib/gnunet.tag b/contrib/gnunet.tag
new file mode 100644
index 0000000..f270ba5
--- /dev/null
+++ b/contrib/gnunet.tag
@@ -0,0 +1,235 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
+<tagfile>
+  <compound kind="file">
+    <name>gnunet_util_lib.h</name>
+    <path></path>
+    <filename>gnunet_util_lib.h</filename>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_YES</name>
+      <anchorfile>gnunet_util_lib.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_OK</name>
+      <anchorfile>gnunet_util_lib.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_NO</name>
+      <anchorfile>gnunet_util_lib.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_SYSERR</name>
+      <anchorfile>gnunet_util_lib.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_TIME_UNIT_FOREVER_ABS</name>
+      <anchorfile>gnunet_util_lib.h</anchorfile>
+      <arglist></arglist>
+    </member>
+  </compound>
+
+  <compound kind="file">
+    <name>gnunet_common.h</name>
+    <path></path>
+    <filename>gnunet_db_lib.h</filename>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_free</name>
+      <anchorfile>gnunet_common.h</anchorfile>
+      <arglist>(ptr)</arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_free_non_null</name>
+      <anchorfile>gnunet_common.h</anchorfile>
+      <arglist>(ptr)</arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_malloc_large</name>
+      <anchorfile>gnunet_common.h</anchorfile>
+      <arglist>(size)</arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_realloc</name>
+      <anchorfile>gnunet_common.h</anchorfile>
+      <arglist>(ptr, size)</arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_new</name>
+      <anchorfile>gnunet_common.h</anchorfile>
+      <arglist>(type)</arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_malloc</name>
+      <anchorfile>gnunet_common.h</anchorfile>
+      <arglist>(size)</arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_new_array</name>
+      <anchorfile>gnunet_common.h</anchorfile>
+      <arglist>(n, type)</arglist>
+    </member>
+  </compound>
+
+  <compound kind="file">
+    <name>gnunet_strings_lib.h</name>
+    <path></path>
+    <filename>gnunet_strings_lib.h</filename>
+    <member kind="function">
+      <type>#define</type>
+      <name>GNUNET_STRINGS_filename_expand</name>
+      <anchorfile>gnunet_strings_lib.h</anchorfile>
+      <arglist>(const char *name)</arglist>
+    </member>
+  </compound>
+
+  <compound kind="file">
+    <name>gnunet_db_lib.h</name>
+    <path></path>
+    <filename>gnunet_db_lib.h</filename>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_DB_STATUS_SUCCESS_ONE_RESULT</name>
+      <anchorfile>gnunet_db_lib.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_DB_STATUS_SUCCESS_NO_RESULTS</name>
+      <anchorfile>gnunet_db_lib.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_DB_STATUS_HARD_ERROR</name>
+      <anchorfile>gnunet_db_lib.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_DB_STATUS_SOFT_ERROR</name>
+      <anchorfile>gnunet_db_lib.h</anchorfile>
+      <arglist></arglist>
+    </member>
+  </compound>
+  <compound kind="file">
+    <name>gnunet_pq_lib.h</name>
+    <path></path>
+    <filename>gnunet_pq_lib.h</filename>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_PQ_query_param_auto_from_type</name>
+      <anchorfile>gnunet_pq_lib.h</anchorfile>
+      <arglist>(x)</arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <anchorfile>gnunet_pq_lib.h</anchorfile>
+      <name>GNUNET_PQ_result_spec_end</name>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <anchorfile>gnunet_sq_lib.h</anchorfile>
+      <name>GNUNET_SQ_result_spec_absolute_time_nbo</name>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <anchorfile>gnunet_pq_lib.h</anchorfile>
+      <name>GNUNET_PQ_result_spec_auto_from_type</name>
+      <arglist>(name, dst)</arglist>
+    </member>
+    <member kind="function">
+      <type>struct GNUNET_PQ_ResultSpec</type>
+      <name>GNUNET_PQ_result_spec_absolute_time</name>
+      <anchorfile>gnunet_pq_lib.h</anchorfile>
+      <arglist>(const char *name, struct GNUNET_TIME_Absolute *at)</arglist>
+    </member>
+    <member kind="function">
+      <type>struct GNUNET_PQ_ResultSpec</type>
+      <name>GNUNET_PQ_result_spec_absolute_time_nbo</name>
+      <anchorfile>gnunet_pq_lib.h</anchorfile>
+      <arglist>(const char *name, struct GNUNET_TIME_AbsoluteNBO *at)</arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <anchorfile>gnunet_pq_lib.h</anchorfile>
+      <name>GNUNET_PQ_PREPARED_STATEMENT_END</name>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <anchorfile>gnunet_pq_lib.h</anchorfile>
+      <name>GNUNET_PQ_EXECUTE_STATEMENT_END</name>
+      <arglist></arglist>
+    </member>
+    <member kind="function">
+      <type>struct GNUNET_PQ_QueryParam</type>
+      <name>GNUNET_PQ_query_param_absolute_time</name>
+      <anchorfile>gnunet_pq_lib.h</anchorfile>
+      <arglist>(const struct GNUNET_TIME_Absolute *x)</arglist>
+    </member>
+    <member kind="function">
+      <type>struct GNUNET_PQ_QueryParam</type>
+      <name>GNUNET_PQ_query_param_absolute_time_nbo</name>
+      <anchorfile>gnunet_pq_lib.h</anchorfile>
+      <arglist>(const struct GNUNET_TIME_AbsoluteNBO *x)</arglist>
+    </member>
+    <member kind="function">
+      <type>struct GNUNET_SQ_QueryParam</type>
+      <name>GNUNET_SQ_query_param_absolute_time</name>
+      <anchorfile>gnunet_sq_lib.h</anchorfile>
+      <arglist>(const struct GNUNET_TIME_Absolute *x)</arglist>
+    </member>
+    <member kind="function">
+      <type>struct GNUNET_SQ_QueryParam</type>
+      <name>GNUNET_SQ_query_param_absolute_time_nbo</name>
+      <anchorfile>gnunet_sq_lib.h</anchorfile>
+      <arglist>(const struct GNUNET_TIME_Absolute *x)</arglist>
+    </member>
+    <member kind="function">
+      <type>struct GNUNET_SQ_QueryParam</type>
+      <name>GNUNET_PQ_query_param_absolute_time_nbo</name>
+      <anchorfile>gnunet_sq_lib.h</anchorfile>
+      <arglist>(const struct GNUNET_TIME_AbsoluteNBO *x)</arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_PQ_query_param_end</name>
+      <anchorfile>gnunet_pq_lib.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>GNUNET_SQ_query_param_end</name>
+      <anchorfile>gnunet_sq_lib.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="typedef">
+      <type>int</type>
+      <name>GNUNET_PQ_ResultConverter</name>
+      <anchorfile>gnunet_pq_lib.h</anchorfile>
+      <arglist>)(void *cls, PGresult *result, int row, const char *fname, 
size_t *dst_size, void *dst)</arglist>
+    </member>
+    <member kind="typedef">
+      <type>int</type>
+      <name>GNUNET_SQ_ResultConverter</name>
+      <anchorfile>gnunet_sq_lib.h</anchorfile>
+      <arglist>)(void *cls, sqlite3_stmt *result, unsigned int column, size_t 
*dst_size, void *dst)</arglist>
+    </member>
+  </compound>
+</tagfile>
diff --git a/contrib/microhttpd.tag b/contrib/microhttpd.tag
new file mode 100644
index 0000000..5ae125e
--- /dev/null
+++ b/contrib/microhttpd.tag
@@ -0,0 +1,122 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
+<tagfile>
+  <compound kind="file">
+    <name>microhttpd_lib.h</name>
+    <path></path>
+    <filename>microhttpd.h</filename>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_YES</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_NO</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_OK</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_BAD_REQUEST</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_URI_TOO_LONG</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_PAYLOAD_TOO_LARGE</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_REQUEST_TIMEOUT</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_ACCEPTED</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_NOT_FOUND</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_NO_CONTENT</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_GONE</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_PRECONDITION_FAILED</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_CONFLICT</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_FORBIDDEN</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_SERVICE_UNAVAILABLE</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_FAILED_DEPENDENCY</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_HTTP_INTERNAL_SERVER_ERROR</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>MHD_OPTION_NOTIFY_COMPLETED</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist></arglist>
+    </member>
+    <member kind="typedef">
+      <type>int</type>
+      <name>MHD_AccessHandlerCallback</name>
+      <anchorfile>microhttpd.h</anchorfile>
+      <arglist>)(void *cls, struct MHD_Connection *connection, const char 
*url, const char *method, const char *version, const char *upload_data, size_t 
*upload_data_size, void **con_cls)</arglist>
+    </member>
+  </compound>
+</tagfile>
diff --git a/contrib/pogen.sh b/contrib/pogen.sh
new file mode 100755
index 0000000..89140ea
--- /dev/null
+++ b/contrib/pogen.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+find src -name "*.c" | sort  > po/POTFILES.in
+find contrib -name "*.json" | sort >> po/POTFILES.in
diff --git a/contrib/provider-list.json b/contrib/provider-list.json
new file mode 100644
index 0000000..37200a4
--- /dev/null
+++ b/contrib/provider-list.json
@@ -0,0 +1,22 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "anastasis_provider": [
+       {
+            "url" : "http://localhost:8086/";,
+            "currency" : "TESTKUDOS"
+       },
+       {
+            "url" : "http://localhost:8087/";,
+            "currency" : "TESTKUDOS"
+       },
+       {
+            "url" : "http://localhost:8088/";,
+            "currency" : "TESTKUDOS"
+       },
+       {
+            "url" : "http://localhost:8089/";,
+            "currency" : "TESTKUDOS"
+       }
+    ]
+}
diff --git a/contrib/redux.al.json b/contrib/redux.al.json
new file mode 100644
index 0000000..bb4360e
--- /dev/null
+++ b/contrib/redux.al.json
@@ -0,0 +1,33 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+       },
+       {
+           "type": "string",
+           "name": "birthplace",
+           "label": "Birthplace",
+           "widget": "anastasis_gtk_ia_birthplace",
+            "uuid" : "4c822e8e-89c6-11eb-95c4-8b077ad8489f"
+       },
+       {
+           "type": "string",
+           "name": "nid_number",
+           "label": "Numri i Identitetit",
+           "label_i18n":{
+               "en": "Identity Number",
+               "al": "Numri i Identitetit"
+           },
+           "widget": "anastasis_gtk_ia_nid_al",
+            "uuid": "256e5d30-d65e-481b-9ac4-55f5ac03b24a",
+           "validation-regex": 
"^[0-9A-T][0-9](((0|5)[0-9])|10|11|51|52)[0-9]{3}[A-W]$",
+           "validation-logic": "AL_NID_check"
+       }
+    ]
+}
diff --git a/contrib/redux.be.json b/contrib/redux.be.json
new file mode 100644
index 0000000..821a3eb
--- /dev/null
+++ b/contrib/redux.be.json
@@ -0,0 +1,39 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+       },
+       {
+           "type": "date",
+           "name": "birthdate",
+           "label": "Birthdate",
+           "widget": "anastasis_gtk_ia_birthdate",
+            "uuid" : "83d655c7-bdb6-484d-904e-80c1058c8854"
+       },
+       {
+           "type": "string",
+           "name": "birthplace",
+           "label": "Birthplace",
+           "widget": "anastasis_gtk_ia_birthplace",
+            "uuid" : "4c822e8e-89c6-11eb-95c4-8b077ad8489f"
+       },
+       {
+           "type": "string",
+           "name": "nrn_number",
+           "label": "National Register Number",
+           "label_i18n":{
+               "en": "National Register Number"
+           },
+           "widget": "anastasis_gtk_ia_nid_be",
+            "uuid": "0452f99a-06f7-48bd-8ac0-2e4ed9a24560",
+           "validation-regex": "^[0-9]{11}$",
+           "validation-logic": "BE_NRN_check"
+       }
+    ]
+}
diff --git a/contrib/redux.ch.json b/contrib/redux.ch.json
new file mode 100644
index 0000000..48e8e7a
--- /dev/null
+++ b/contrib/redux.ch.json
@@ -0,0 +1,40 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+       },
+       {
+           "type": "date",
+           "name": "birthdate",
+           "label": "Birthdate",
+           "widget": "anastasis_gtk_ia_birthdate",
+            "uuid" : "83d655c7-bdb6-484d-904e-80c1058c8854"
+       },
+       {
+           "type": "string",
+           "name": "birthplace",
+           "label": "Birthplace",
+           "widget": "anastasis_gtk_ia_birthplace",
+            "uuid" : "4c822e8e-89c6-11eb-95c4-8b077ad8489f"
+       },
+       {
+           "type": "string",
+           "name": "ahv_number",
+           "label": "AHV number",
+           "label_i18n":{
+               "de_DE":"AHV-Nummer",
+               "de_CH":"AHV-Nummer"
+           },
+           "widget": "anastasis_gtk_ia_ahv",
+            "uuid" : "1da87570-ba16-4f62-8a7e-cbda92f51591",
+           "validation-regex": 
"^(756).[0-9]{4}.[0-9]{4}.[0-9]{2}|(756)[0-9]{10}$",
+           "validation-logic": "CH_AHV_check"
+       }
+    ]
+}
diff --git a/contrib/redux.countries.json b/contrib/redux.countries.json
new file mode 100644
index 0000000..aaaf134
--- /dev/null
+++ b/contrib/redux.countries.json
@@ -0,0 +1,166 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "countries": [
+       {
+               "code" : "al",
+               "name" : "Albania",
+               "continent" : "Europe",
+               "name_i18n" : {
+                       "de_DE": "Albanien",
+                       "en_UK": "Albania"
+               },
+               "currency": "ALL",
+               "call_code" : "+355"
+       },
+       {
+               "code" : "be",
+               "name" : "Belgium",
+               "continent" : "Europe",
+               "name_i18n" : {
+                       "de_DE": "Belgien",
+                       "en_UK": "Belgium"
+               },
+               "currency": "EUR",
+               "call_code" : "+32"
+       },
+       {
+               "code" : "ch",
+               "name" : "Switzerland",
+               "continent" : "Europe",
+               "name_i18n" : {
+                       "de_DE": "Schweiz",
+                       "de_CH": "Schwiiz",
+                       "fr_FR": "Suisse",
+                       "en_UK": "Swiss"
+               },
+               "currency": "CHF",
+               "call_code" : "+41"
+       },
+       {
+               "code" : "cz",
+               "name" : "Czech Republic",
+               "continent" : "Europe",
+               "name_i18n" : {
+                       "en_UK": "Czech Republic"
+               },
+               "currency": "CZK",
+               "call_code" : "+420"
+       },
+       {
+               "code" : "de",
+               "name" : "Germany",
+               "continent" : "Europe",
+               "continent_i18n" : { "de_DE" : "Europa" },
+               "name_i18n" : {
+                        "de_DE": "Deutschland",
+                       "de_CH": "Deutschland",
+                       "fr_FR": "Allemagne",
+                       "en_UK": "Germany"
+                },
+               "currency": "EUR",
+               "call_code" : "+49"
+       },
+       {
+               "code" : "dk",
+               "name" : "Denmark",
+               "continent" : "Europe",
+               "continent_i18n" : { "de_DE" : "Europa" },
+               "name_i18n" : {
+                       "en_UK": "Denmark"
+                },
+               "currency": "DKK",
+               "call_code" : "+45"
+       },
+       {
+               "code" : "in",
+               "name" : "India",
+               "continent" : "India",
+               "continent_i18n" : { "en_EN" : "India" },
+               "name_i18n" : {
+                        "de_DE": "Indien",
+                       "de_CH": "Indien",
+                       "fr_FR": "l'Inde",
+                       "en_UK": "India"
+                },
+               "currency": "INR",
+               "call_code" : "+91"
+       },
+       {
+               "code" : "it",
+               "name" : "Italy",
+               "continent" : "Europe",
+               "name_i18n" : {
+                       "de_DE": "Italien",
+                       "en_UK": "Italy"
+               },
+               "currency": "EUR",
+               "call_code" : "+39"
+       },
+       {
+               "code" : "jp",
+               "name" : "Japan",
+               "continent" : "Asia",
+               "continent_i18n" : { "en_EN" : "Japan" },
+               "name_i18n" : {
+                        "de_DE": "Japan",
+                       "de_CH": "Japan",
+                       "en_UK": "Japan"
+                },
+               "currency": "JPY",
+               "call_code" : "+81"
+       },
+       {
+               "code" : "sl",
+               "name" : "Slovakia",
+               "continent" : "Europe",
+               "name_i18n" : {
+                       "en_UK": "Slovakia"
+               },
+               "currency": "EUR",
+               "call_code" : "+421"
+       },
+       {
+               "code" : "us",
+               "name" : "United States of America (USA)",
+               "continent" : "North America",
+               "continent_i18n" : { "de_DE" : "Nordamerika" },
+               "name_i18n" : {
+                        "de_DE": "Vereinigte Staaten von Amerika (USA)",
+                       "de_CH": "Vereinigte Staaten von Amerika (USA)",
+                       "fr_FR": "États-Unis d'Amérique (USA)",
+                       "en_UK": "United States of America (USA)"
+                },
+               "currency": "USD",
+               "call_code" : "+1"
+       },
+       {
+               "code" : "xx",
+               "name" : "Testland",
+               "continent" : "Testcontinent",
+               "continent_i18n" : { "de_DE" : "Testkontinent" },
+               "name_i18n" : {
+                        "de_DE": "Testlandt",
+                       "de_CH": "Testlandi",
+                       "fr_FR": "Testpais",
+                       "en_UK": "Testland"
+                },
+               "currency": "TESTKUDOS",
+               "call_code" : "+00"
+       },
+       {
+               "code" : "xy",
+               "name" : "Demoland",
+               "continent" : "Testcontinent",
+               "continent_i18n" : { "de_DE" : "Testkontinent" },
+               "name_i18n" : {
+                        "de_DE":"Demolandt",
+                       "de_CH":"Demolandi",
+                       "fr_FR": "Demopais",
+                       "en_UK": "Demoland"
+                },
+               "currency": "KUDOS",
+               "call_code" : "+01"
+       }
+    ]
+}
diff --git a/contrib/redux.cz.json b/contrib/redux.cz.json
new file mode 100644
index 0000000..e7118a8
--- /dev/null
+++ b/contrib/redux.cz.json
@@ -0,0 +1,33 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+       },
+       {
+           "type": "string",
+           "name": "birthplace",
+           "label": "Birthplace",
+           "widget": "anastasis_gtk_ia_birthplace",
+            "uuid" : "4c822e8e-89c6-11eb-95c4-8b077ad8489f"
+       },
+       {
+           "type": "string",
+           "name": "birth_number",
+           "label": "Birth Number",
+           "label_i18n":{
+               "en": "Birth Number",
+               "cz": "rodné číslo"
+           },
+           "widget": "anastasis_gtk_ia_birthnumber_cz",
+            "uuid": "03e3a05b-1192-44f1-ac36-7425512eee1a",
+           "validation-regex": 
"^[0-9]{2}(((0|2|5|7)[0-9])|10|11|31|32|51|52|81|82)/[0-9]{3}[0-9]?$",
+           "validation-logic": "CZ_BN_check"
+       }
+    ]
+}
diff --git a/contrib/redux.de.json b/contrib/redux.de.json
new file mode 100644
index 0000000..862a463
--- /dev/null
+++ b/contrib/redux.de.json
@@ -0,0 +1,54 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+       },
+       {
+           "type": "date",
+           "name": "birthdate",
+           "label": "Birthdate",
+           "widget": "anastasis_gtk_ia_birthdate",
+            "uuid" : "83d655c7-bdb6-484d-904e-80c1058c8854"
+       },
+       {
+           "type": "string",
+           "name": "birthplace",
+           "label": "Birthplace",
+           "widget": "anastasis_gtk_ia_birthplace",
+            "uuid" : "4c822e8e-89c6-11eb-95c4-8b077ad8489f"
+       },
+       {
+           "type": "string",
+           "name": "tax_number",
+           "label": "Taxpayer identification number",
+           "label_i18n":{
+               "de_DE": "Steuerliche Identifikationsnummer",
+               "en": "German taxpayer identification number"
+           },
+           "widget": "anastasis_gtk_ia_tax_de",
+            "uuid": "dae48f85-e3ff-47a4-a4a3-ed981ed8c3c6",
+           "validation-regex": "^[0-9]{11}$",
+           "validation-logic": "DE_TIN_check"
+       },
+       {
+           "type": "string",
+           "name": "social_security_number",
+           "label": "Social security number",
+           "label_i18n":{
+               "de_DE": "Deutsche Sozialversicherungsnummer",
+               "en": "German Social security number"
+           },
+           "widget": "anastasis_gtk_ia_ssn_de",
+            "uuid": "d5e2aa79-1c88-4cf4-a4d2-252508b38e05",
+           "validation-regex": "^[0-9]{8}[[:upper:]][0-9]{3}$",
+           "validation-logic": "DE_SVN_check",
+            "optional" : true
+       }
+    ]
+}
diff --git a/contrib/redux.dk.json b/contrib/redux.dk.json
new file mode 100644
index 0000000..29c7c6c
--- /dev/null
+++ b/contrib/redux.dk.json
@@ -0,0 +1,32 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+       },
+       {
+           "type": "string",
+           "name": "birthplace",
+           "label": "Birthplace",
+           "widget": "anastasis_gtk_ia_birthplace",
+            "uuid" : "4c822e8e-89c6-11eb-95c4-8b077ad8489f"
+       },
+       {
+           "type": "string",
+           "name": "cpr_number",
+           "label": "CPR-nummer",
+           "label_i18n":{
+               "en": "CPR Number",
+               "dk": "CPR-nummer"
+           },
+           "widget": "anastasis_gtk_ia_cpr_dk",
+            "uuid": "38f13a4d-4302-4ada-ada1-c3ff4a8ff689",
+           "validation-regex": 
"^(0[1-9]|[1-2][0-9]|30|31)((0[1-9]|10|11|12))[0-9]{2}-[0-9A-Z]{4}$"
+       }
+    ]
+}
diff --git a/contrib/redux.in.json b/contrib/redux.in.json
new file mode 100644
index 0000000..a53035c
--- /dev/null
+++ b/contrib/redux.in.json
@@ -0,0 +1,39 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+       },
+       {
+           "type": "date",
+           "name": "birthdate",
+           "label": "Birthdate",
+           "widget": "anastasis_gtk_ia_birthdate",
+            "uuid" : "83d655c7-bdb6-484d-904e-80c1058c8854"
+       },
+       {
+           "type": "string",
+           "name": "birthplace",
+           "label": "Birthplace",
+           "widget": "anastasis_gtk_ia_birthplace",
+            "uuid" : "4c822e8e-89c6-11eb-95c4-8b077ad8489f"
+       },
+       {
+           "type": "string",
+           "name": "aadhar_number",
+           "label": "Aadhar number",
+           "label_i18n":{
+               "en": "Aadhar number"
+           },
+           "widget": "anastasis_gtk_ia_aadhar_in",
+            "uuid": "55afe97a-98bc-48d1-bb37-a9658be3fdc9",
+           "validation-regex": "^[2-9]{1}[0-9]{3}\\s[0-9]{4}\\s[0-9]{4}$",
+           "validation-logic": "IN_AADHAR_check"
+       }
+    ]
+}
diff --git a/contrib/redux.it.json b/contrib/redux.it.json
new file mode 100644
index 0000000..f744497
--- /dev/null
+++ b/contrib/redux.it.json
@@ -0,0 +1,33 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+       },
+       {
+           "type": "string",
+           "name": "birthplace",
+           "label": "Birthplace",
+           "widget": "anastasis_gtk_ia_birthplace",
+            "uuid" : "4c822e8e-89c6-11eb-95c4-8b077ad8489f"
+       },
+       {
+           "type": "string",
+           "name": "fiscal_code",
+           "label": "Codice fiscale",
+           "label_i18n":{
+               "it": "Codice fiscale",
+               "en": "Fiscal code"
+           },
+           "widget": "anastasis_gtk_ia_cf_it",
+            "uuid": "88f53c51-52ad-4d63-a163-ec042589f925",
+           "validation-regex": 
"^[[:upper:]]{6}[0-9]{2}[A-EHLMPRT](([0-24-6][0-9])|(30|31|70|71))[A-MZ][0-9]{3}[A-Z]$",
+           "validation-logic": "IT_CF_check"
+       }
+    ]
+}
diff --git a/contrib/redux.jp.json b/contrib/redux.jp.json
new file mode 100644
index 0000000..2a80cdf
--- /dev/null
+++ b/contrib/redux.jp.json
@@ -0,0 +1,39 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+       },
+       {
+           "type": "date",
+           "name": "birthdate",
+           "label": "Birthdate",
+           "widget": "anastasis_gtk_ia_birthdate",
+            "uuid" : "83d655c7-bdb6-484d-904e-80c1058c8854"
+       },
+       {
+           "type": "string",
+           "name": "birthplace",
+           "label": "Birthplace",
+           "widget": "anastasis_gtk_ia_birthplace",
+            "uuid" : "4c822e8e-89c6-11eb-95c4-8b077ad8489f"
+       },
+       {
+           "type": "string",
+           "name": "my_number",
+           "label": "My number",
+           "label_i18n":{
+               "en": "My number",
+               "jp": "マイナンバー"
+           },
+           "widget": "anastasis_gtk_ia_my_jp",
+            "uuid": "90848f42-a83e-4226-8186-329696c14152",
+           "validation-regex": "^[0-9]{12}$"
+       }
+    ]
+}
diff --git a/contrib/redux.sk.json b/contrib/redux.sk.json
new file mode 100644
index 0000000..e2acef7
--- /dev/null
+++ b/contrib/redux.sk.json
@@ -0,0 +1,33 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+       },
+       {
+           "type": "string",
+           "name": "birthplace",
+           "label": "Birthplace",
+           "widget": "anastasis_gtk_ia_birthplace",
+            "uuid" : "4c822e8e-89c6-11eb-95c4-8b077ad8489f"
+       },
+       {
+           "type": "string",
+           "name": "birth_number",
+           "label": "Birth Number",
+           "label_i18n":{
+               "en": "Birth Number",
+               "sk": "rodné číslo"
+           },
+           "widget": "anastasis_gtk_ia_birthnumber_sk",
+            "uuid": "1cd372fe-2cea-4928-9f29-66f2bdd8555c",
+           "validation-regex": 
"^[0-9]{2}(((0|2|5|7)[0-9])|10|11|31|32|51|52|81|82)/[0-9]{3}[0-9]?$",
+           "validation-logic": "CZ_BN_check"
+       }
+    ]
+}
diff --git a/contrib/redux.us.json b/contrib/redux.us.json
new file mode 100644
index 0000000..17e7556
--- /dev/null
+++ b/contrib/redux.us.json
@@ -0,0 +1,38 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+        },
+       {
+           "type": "date",
+           "name": "birthdate",
+           "label": "Birthdate",
+           "widget": "anastasis_gtk_ia_birthdate",
+            "uuid" : "83d655c7-bdb6-484d-904e-80c1058c8854"
+       },
+       {
+           "type": "string",
+           "name": "birthplace",
+           "label": "Birthplace",
+           "widget": "anastasis_gtk_ia_birthplace",
+            "uuid" : "4c822e8e-89c6-11eb-95c4-8b077ad8489f"
+       },
+       {
+           "type": "string",
+           "name": "social_security_number",
+           "label": "Social security number",
+           "label_i18n":{
+               "en": "US Social security number"
+           },
+           "widget": "anastasis_gtk_ia_ssn_us",
+            "uuid": "310a138c-b0b7-4985-b8b8-d00e765e9f9b",
+            "validation-regex": "^d{3}-d{2}-d{4}$"
+       }
+    ]
+}
diff --git a/contrib/redux.xx.json b/contrib/redux.xx.json
new file mode 100644
index 0000000..b28af81
--- /dev/null
+++ b/contrib/redux.xx.json
@@ -0,0 +1,29 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+       },
+       {
+           "type": "date",
+           "name": "birthdate",
+           "label": "Birthdate",
+           "widget": "anastasis_gtk_ia_birthdate",
+            "uuid" : "83d655c7-bdb6-484d-904e-80c1058c8854"
+       },
+       {
+           "type": "string",
+           "name": "sq_number",
+           "label": "Square number",
+           "widget": "anastasis_gtk_xx_square",
+            "uuid" : "ed790bca-89bf-11eb-96f2-233996cf644e",
+           "validation-regex": "^[0-9]+$",
+           "validation-logic": "XX_SQUARE_check"
+       }
+    ]
+}
diff --git a/contrib/redux.xy.json b/contrib/redux.xy.json
new file mode 100644
index 0000000..2091d9a
--- /dev/null
+++ b/contrib/redux.xy.json
@@ -0,0 +1,29 @@
+{
+    "license": "GPLv3+",
+    "SPDX-License-Identifier": "GPL3.0-or-later",
+    "required_attributes": [
+       {
+           "type": "string",
+           "name": "full_name",
+           "label": "Full name",
+           "widget": "anastasis_gtk_ia_full_name",
+            "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+       },
+       {
+           "type": "date",
+           "name": "birthdate",
+           "label": "Birthdate",
+           "widget": "anastasis_gtk_ia_birthdate",
+            "uuid" : "83d655c7-bdb6-484d-904e-80c1058c8854"
+       },
+       {
+           "type": "string",
+           "name": "prime_number",
+           "label": "Prime number",
+           "widget": "anastasis_gtk_xx_prime",
+            "uuid" : "39190a95-cacb-4412-8bae-1f7da3f980b4",
+           "validation-regex": "^[0-9]+$",
+           "validation-logic": "XY_PRIME_check"
+       }
+    ]
+}
diff --git a/contrib/uncrustify.cfg b/contrib/uncrustify.cfg
new file mode 100644
index 0000000..8c9df2c
--- /dev/null
+++ b/contrib/uncrustify.cfg
@@ -0,0 +1,95 @@
+input_tab_size = 2
+output_tab_size = 2
+
+indent_columns = 2
+indent_with_tabs = 0
+indent_case_brace = 2
+indent_label=-16
+
+code_width=80
+#cmd_width=80
+
+# Leave most comments alone for now
+cmt_indent_multi=false
+sp_cmt_cpp_start=add
+
+sp_not=add
+
+sp_func_call_user_paren_paren=remove
+sp_inside_fparen=remove
+sp_after_cast=add
+
+ls_for_split_full=true
+ls_func_split_full=true
+ls_code_width=true
+
+# Arithmetic operations in wrapped expressions should be at the start
+# of the line.
+pos_arith=lead
+
+# Fully parenthesize boolean exprs
+mod_full_paren_if_bool=true
+
+# Braces should be on their own line
+nl_fdef_brace=add
+nl_enum_brace=add
+nl_struct_brace=add
+nl_union_brace=add
+nl_if_brace=add
+nl_brace_else=add
+nl_elseif_brace=add
+nl_while_brace=add
+nl_switch_brace=add
+
+# no newline between "else" and "if"
+nl_else_if=remove
+
+nl_func_paren=remove
+nl_assign_brace=remove
+
+# No extra newlines that cause noisy diffs
+nl_start_of_file=remove
+nl_after_func_proto = 2
+nl_after_func_body = 3
+# If there's no new line, it's not a text file!
+nl_end_of_file=add
+nl_max_blank_in_func = 3
+nl_max = 3
+
+sp_inside_paren = remove
+
+sp_arith = add
+sp_arith_additive = add
+
+# We want spaces before and after "="
+sp_before_assign = add
+sp_after_assign = add
+
+# we want "char *foo;"
+sp_after_ptr_star = remove
+sp_between_ptr_star = remove
+
+# we want "if (foo) { ... }"
+sp_before_sparen = add
+
+sp_inside_fparen = remove
+sp_inside_sparen = remove
+
+# add space before function call and decl: "foo (x)"
+sp_func_call_paren = add
+sp_func_proto_paren = add
+sp_func_proto_paren_empty = add
+sp_func_def_paren = add
+sp_func_def_paren_empty = add
+
+# We'd want it for "if ( (foo) || (bar) )", but not for "if (m())",
+# so as uncrustify doesn't give exactly what we want => ignore
+sp_paren_paren = ignore
+sp_inside_paren = remove
+sp_bool = force
+
+nl_func_type_name = force
+#nl_branch_else = add
+nl_else_brace = add
+nl_elseif_brace = add
+nl_for_brace = add
diff --git a/contrib/uncrustify_precommit b/contrib/uncrustify_precommit
new file mode 100755
index 0000000..2487333
--- /dev/null
+++ b/contrib/uncrustify_precommit
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# use as .git/hooks/pre-commit
+
+exec 1>&2
+
+RET=0
+changed=$(git diff --cached --name-only)
+crustified=""
+
+for f in $changed;
+do
+ if echo $f | grep \\.[c,h]\$ > /dev/null
+ then
+    # compare result of uncrustify with changes
+    #
+    # only change any of the invocations here if
+    # they are portable across all cmp and shell
+    # implementations !
+    uncrustify -q -c uncrustify.cfg -f $f | cmp -s $f -
+    if test $? = 1 ;
+    then
+      crustified=" $crustified $f"
+      RET=1
+    fi
+  fi
+done
+
+if [ $RET = 1 ];
+then
+  echo "Run"
+  echo "uncrustify --no-backup -c uncrustify.cfg ${crustified}"
+  echo "before committing."
+fi
+exit $RET
diff --git a/debian/.gitignore b/debian/.gitignore
new file mode 100644
index 0000000..7dcd9f0
--- /dev/null
+++ b/debian/.gitignore
@@ -0,0 +1,13 @@
+.debhelper/
+*.substvars
+*.log
+libanastasis/
+libanastasis-dev/
+anastasis-httpd/
+anastasis-cli/
+*.debhelper
+autoreconf.after
+autoreconf.before
+debhelper-build-stamp
+files
+tmp/
\ No newline at end of file
diff --git a/debian/anastasis-cli.install b/debian/anastasis-cli.install
new file mode 100644
index 0000000..6921bea
--- /dev/null
+++ b/debian/anastasis-cli.install
@@ -0,0 +1,2 @@
+usr/bin/anastasis-reducer
+usr/share/man/man1/anastasis-reducer.1
diff --git a/debian/anastasis-httpd.README.Debian 
b/debian/anastasis-httpd.README.Debian
new file mode 100644
index 0000000..f2e608c
--- /dev/null
+++ b/debian/anastasis-httpd.README.Debian
@@ -0,0 +1,10 @@
+anastasis
+--------------
+
+This package is a backend to operate an Anastasis provider.
+
+This package is integrated with Apache or Nginx, automatically
+deploying a configuration for the backend to the respective
+Web server at the "/anastasis/" endpoint.
+
+ -- Christian Grothoff <grothoff@gnu.org>  Fri 01 Apr 2021 11:37:14 AM CET
diff --git a/debian/anastasis-httpd.config b/debian/anastasis-httpd.config
new file mode 100644
index 0000000..7ea8a7b
--- /dev/null
+++ b/debian/anastasis-httpd.config
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+_USERNAME=anastasis-httpd
+_GROUPNAME=www-data
+
+db_input low anastasis/reconfigure-webserver || true
+db_go
+
+# Set permissions for sqlite3 file
+# (for when we support sqlite3 in the future)
+dbc_dbfile_owner="${_USERNAME}:${_GROUPNAME}"
+dbc_dbfile_perms="0600"
+
+dbc_psql_createdb_encoding="UTF8"
+
+# Set MySQL encoding to UTF8, just in case MySQL
+# support is added in the future.
+dbc_mysql_createdb_encoding="UTF8"
+
+# Try to get it to use UNIX domain sockets, if possible.
+# (Note: doesn't seem to do much, still uses username+PW+TCP
+#  on my system :-(  dbconfig documentation sucks.).
+dbc_authmethod_user=ident
+dbc_authmethod_admin=ident
+
+dbc_dbuser=${_USERNAME}
+
+
+if [ -f /usr/share/dbconfig-common/dpkg/config.pgsql ]; then
+    . /usr/share/dbconfig-common/dpkg/config.pgsql
+    dbc_go anastasis "$@"
+fi
+
+db_stop
diff --git a/debian/anastasis-httpd.install b/debian/anastasis-httpd.install
new file mode 100644
index 0000000..a97180b
--- /dev/null
+++ b/debian/anastasis-httpd.install
@@ -0,0 +1,13 @@
+usr/bin/
+usr/lib/*/anastasis/
+usr/lib/*/libanastasisauthorization.*
+usr/lib/*/libanastasisdb.*
+usr/share/man/man5/*
+usr/share/man/man1/anastasis-httpd.1
+usr/share/man/man1/anastasis-config.1
+usr/share/anastasis/*
+usr/share/anastasis/sql/*
+usr/share/anastasis/config.d/*
+debian/etc/* /etc/
+debian/conf/* etc/anastasis/
+debian/db/install/* usr/share/dbconfig-common/scripts/anastasis/install/
diff --git a/debian/anastasis-httpd.postinst b/debian/anastasis-httpd.postinst
new file mode 100644
index 0000000..77acf49
--- /dev/null
+++ b/debian/anastasis-httpd.postinst
@@ -0,0 +1,93 @@
+#!/bin/bash
+
+set -e
+
+_USERNAME=anastasis-httpd
+_GROUPNAME=www-data
+
+# Set permissions for sqlite3 file
+# (for when we support sqlite3 in the future)
+dbc_dbfile_owner="${_USERNAME}:${_GROUPNAME}"
+dbc_dbfile_perms="0600"
+
+# 1st argument will be the SECURITYTOKEN to use.
+apache_install() {
+  echo -n "Starting Apache setup..."
+  mkdir -p /etc/apache2/conf-available
+  if [ ! -f /etc/apache2/conf-available/anastasis.conf ]; then
+    echo -n "..."
+    cat /etc/anastasis/apache.conf | sed -e "s/%SECURITYTOKEN%/$1/" 
>/etc/apache2/conf-available/anastasis.conf
+  fi
+  echo "Done"
+}
+
+# 1st argument will be the SECURITYTOKEN to use.
+nginx_install() {
+  echo -n "Starting Nginx setup..."
+  mkdir -p /etc/nginx/conf-available
+  if [ ! -f /etc/nginx/conf-available/anastasis.conf ]; then
+    echo -n "..."
+    cat /etc/anastasis/nginx.conf | sed -e "s/%SECURITYTOKEN%/$1/" 
>/etc/nginx/conf-available/anastasis.conf
+  fi
+  echo "Done"
+}
+
+. /usr/share/debconf/confmodule
+
+case "${1}" in
+configure)
+  db_start
+  db_version 2.0
+
+  # Read default values
+  CONFIG_FILE="/etc/default/anastasis"
+  TALER_HOME="/var/lib/taler/"
+
+  echo "  User setup"
+  # Creating taler users if needed
+  if ! getent passwd ${_USERNAME} >/dev/null; then
+    adduser --quiet --system --ingroup ${_GROUPNAME} --home ${TALER_HOME} 
${_USERNAME}
+  fi
+
+  # Setup postgres database (needs dbconfig-pgsql package)
+  if [ -f /usr/share/dbconfig-common/dpkg/postinst.pgsql ]; then
+    . /usr/share/dbconfig-common/dpkg/postinst.pgsql
+    dbc_pgsql_createdb_encoding="UTF8"
+    dbc_go anastasis "$@"
+  fi
+
+  cat >"/etc/systemd/system/anastasis-httpd.service" <<EOF
+EOF
+
+  # Configure Webserver
+  echo "  Configuring Webserver"
+  db_get anastasis/reconfigure-webserver
+  webservers="$RET"
+  for webserver in $webservers; do
+    webserver=${webserver%,}
+    if [ "$webserver" = "nginx" ]; then
+      nginx_install "$SECRET"
+    else
+      apache_install "$SECRET"
+    fi
+  done
+  echo "Done."
+
+  db_stop
+
+  # Cleaning
+  echo "All done."
+
+  ;;
+
+abort-upgrade | abort-remove | abort-deconfigure) ;;
+
+  *)
+  echo "postinst called with unknown argument \`${1}'" >&2
+  exit 1
+  ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/anastasis-httpd.postrm b/debian/anastasis-httpd.postrm
new file mode 100644
index 0000000..fc96f0e
--- /dev/null
+++ b/debian/anastasis-httpd.postrm
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+set -e
+
+pathfind() {
+  OLDIFS="$IFS"
+  IFS=:
+  for p in $PATH; do
+    if [ -x "$p/$*" ]; then
+      IFS="$OLDIFS"
+      return 0
+    fi
+  done
+  IFS="$OLDIFS"
+  return 1
+}
+
+apache_remove() {
+  if [ diff /etc/anastasis/apache.conf 
/etc/apache2/conf-available/anastasis.conf ] >/dev/null 2>&1; then
+    rm -f /etc/apache2/conf-available/anastasis.conf
+  fi
+}
+
+nginx_remove() {
+  if [ diff /etc/taler-exchange/nginx.conf 
/etc/apache2/conf-available/taler-exchange.conf ] >/dev/null 2>&1; then
+    rm -f /etc/nginx/conf-available/anastasis.conf
+  fi
+}
+
+if [ -f /usr/share/debconf/confmodule ]; then
+  . /usr/share/debconf/confmodule
+fi
+
+if [ -f /usr/share/dbconfig-common/dpkg/postrm.pgsql ]; then
+  . /usr/share/dbconfig-common/dpkg/postrm.pgsql
+  dbc_go anastasis "$@"
+fi
+
+if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then
+  if [ -f /usr/share/debconf/confmodule ]; then
+    . /usr/share/debconf/confmodule
+    db_version 2.0
+    db_get anastasis/reconfigure-webserver
+    webservers="$RET"
+    for webserver in $webservers; do
+      webserver=${webserver%,}
+      if [ "$webserver" = "nginx" ]; then
+        nginx_remove
+      else
+        apache_remove
+      fi
+    done
+  fi
+fi
+
+case "${1}" in
+purge)
+  rm -f /var/lib/anastasis/master-api-key.txt
+  rm -rf /var/lib/anastasis/httpd/
+  ;;
+remove | upgrade | failed-upgrade | abort-install | abort-upgrade | disappear) 
;;
+
+\
+  *)
+  echo "postrm called with unknown argument \`${1}'" >&2
+  exit 1
+  ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/anastasis-httpd.prerm b/debian/anastasis-httpd.prerm
new file mode 100644
index 0000000..570b20f
--- /dev/null
+++ b/debian/anastasis-httpd.prerm
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+set -e
+
+if [ -f /usr/share/debconf/confmodule ]; then
+  . /usr/share/debconf/confmodule
+fi
+. /usr/share/dbconfig-common/dpkg/prerm
+
+if [ -f /usr/share/dbconfig-common/dpkg/prerm.pgsql ]; then
+  . /usr/share/dbconfig-common/dpkg/prerm.pgsql
+  dbc_go anastasis "$@"
+fi
+
+db_stop
+exit 0
diff --git a/debian/anastasis-httpd.service b/debian/anastasis-httpd.service
new file mode 100644
index 0000000..ab764cc
--- /dev/null
+++ b/debian/anastasis-httpd.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Anastasis key recovery backend
+
+[Service]
+User=anastasis-httpd
+Type=simple
+Restart=on-failure
+ExecStart=/usr/bin/anastasis-httpd -c /etc/taler/taler.conf
diff --git a/debian/anastasis-httpd.templates b/debian/anastasis-httpd.templates
new file mode 100644
index 0000000..1b1db15
--- /dev/null
+++ b/debian/anastasis-httpd.templates
@@ -0,0 +1,7 @@
+Template: anastasis/reconfigure-webserver
+Type: multiselect
+Choices: apache2, nginx
+Default: apache2, nginx
+_Description: Web server to reconfigure automatically:
+ Please choose the web server that should be automatically configured
+ as a frontend for anastasis-httpd.
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..ea5ab8a
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,37 @@
+anastasis (0.0.0-5) unstable; urgency=low
+
+  * Fixes in packaging files.
+
+ -- Florian Dold <dold@taler.net>  Mon, 26 Jul 2021 11:16:02 +0200
+
+anastasis (0.0.0-4) unstable; urgency=low
+
+  * Fix quoting bug.
+
+ -- Christian Grothoff <grothoff@gnu.org>  Wed, 21 Jul 2021 14:02:10 +0100
+
+anastasis (0.0.0-3) unstable; urgency=low
+
+  * Update to latest upstream code with minor design improvements.
+
+ -- Christian Grothoff <grothoff@gnu.org>  Tue, 20 Jul 2021 14:02:10 +0100
+
+anastasis (0.0.0-2) unstable; urgency=low
+
+  * Improved reducer structure to address UX issues.
+  * Added ability to name secrets.
+  * Modified API to allow applications to more easily control expiration.
+
+ -- Christian Grothoff <grothoff@gnu.org>  Wed, 14 Jul 2021 00:00:00 +0000
+
+anastasis (0.0.0-1) unstable; urgency=low
+
+  * Various fixes in packaging and code logic.
+
+ -- Christian Grothoff <grothoff@gnu.org>  Thu, 24 Jun 2021 00:00:00 +0000
+
+anastasis (0.0.0-0) unstable; urgency=medium
+
+  * Initial Release.
+
+ -- Christian Grothoff <grothoff@gnu.org>  Fri, 01 Apr 2021 00:00:00 +0000
diff --git a/debian/conf/apache.conf b/debian/conf/apache.conf
new file mode 100644
index 0000000..1d73ed1
--- /dev/null
+++ b/debian/conf/apache.conf
@@ -0,0 +1,11 @@
+<!--
+  Make sure to enable the following Apache modules before
+  integrating this into your configuration:
+
+  # a2enmod proxy
+  # a2enmod proxy_http
+-->
+
+<Location "/anastasis/">
+ProxyPass "unix:/var/lib/anastasis/httpd/anastasis.sock|http://example.com/";
+</Location>
diff --git a/debian/conf/nginx.conf b/debian/conf/nginx.conf
new file mode 100644
index 0000000..6828f0b
--- /dev/null
+++ b/debian/conf/nginx.conf
@@ -0,0 +1,8 @@
+location /anastasis/ {
+         proxy_pass http://unix:/var/lib/anastasis/httpd/anastasis.sock;
+         proxy_redirect off;
+         proxy_set_header Host $host;
+         proxy_set_header X-Forwarded-Host "example.com";
+         proxy_set_header X-Forwarded-Proto "https";
+
+}
\ No newline at end of file
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..532c623
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,77 @@
+Source: anastasis
+Section: net
+Priority: optional
+Maintainer: Christian Grothoff <grothoff@gnu.org>
+Build-Depends:
+ autoconf (>=2.59),
+ automake (>=1.11.1),
+ autopoint,
+ debhelper-compat (= 13),
+ gettext,
+ libgnunet-dev,
+ libtalerexchange-dev,
+ libtalermerchant-dev,
+ libpq-dev (>=9.5),
+ libsqlite3-dev (>=3.8),
+ pkg-config,
+ po-debconf,
+ libqrencode-dev,
+ uuid-dev,
+ zlib1g-dev
+Build-Conflicts:
+ autoconf2.13,
+ automake1.4
+Standards-Version: 4.5.0
+Vcs-Git: https://salsa.debian.org/debian/anastasis.git
+Vcs-browser: https://salsa.debian.org/debian/anastasis
+Homepage: https://anastasis.lu/
+
+Package: libanastasis
+Architecture: any
+Pre-Depends:
+ ${misc:Pre-Depends}
+Depends:
+ lsb-base,
+ netbase,
+ ${misc:Depends},
+ ${shlibs:Depends}
+Description: libraries to talk to an Anastasis provider.
+
+Package: anastasis-httpd
+Architecture: any
+Pre-Depends:
+ ${misc:Pre-Depends}
+Depends:
+ libtalerexchange (>= 0.9.0),
+ adduser,
+ lsb-base,
+ netbase,
+ apache2 | nginx | httpd,
+ postgresql,
+ dbconfig-pgsql | dbconfig-no-thanks,
+ ${misc:Depends},
+ ${shlibs:Depends}
+Description: GNU's key escrow provider.
+
+Package: anastasis-cli
+Architecture: any
+Pre-Depends:
+ ${misc:Pre-Depends}
+Depends:
+ libanastasis (>= 0.0.0),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Description: Command-line interface for the Anastasis key escrow provider 
service.
+
+Package: libanastasis-dev
+Section: libdevel
+Architecture: any
+Depends:
+ libtalermerchant-dev (>= 0.9.0),
+ libtalerexchange-dev (>= 0.9.0),
+ libgnunet-dev (>=0.14.0),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Description: libraries to talk to a GNU Anastasis provider (development)
+ .
+ This package contains the development files.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..555d608
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,699 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: GNU Taler
+Upstream-Contact: Christian Grothoff <christian@grothoff.org>
+Source: https://taler.net/
+
+Files: *
+Copyright:
+ (C) 2013-2020 Taler Systems SA
+License: AGPL-3+
+Comment: Many contributors are mentioned in AUTHORS
+
+Files: debian/*
+Copyright:
+ (C) 2020 Christian Grothoff <grothoff@gnu.org>
+License: GPL-3+
+
+Files: debian/po/*
+Copyright:
+License: GPL-3+
+
+License: GPL-3+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ .
+ The complete text of the GNU General Public License
+ can be found in /usr/share/common-licenses/GPL-3 file.
+
+License: AGPL-3+
+                    GNU AFFERO GENERAL PUBLIC LICENSE
+                       Version 3, 19 November 2007
+ .
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+ .
+                            Preamble
+ .
+ The GNU Affero General Public License is a free, copyleft license for
+ software and other kinds of works, specifically designed to ensure
+ cooperation with the community in the case of network server software.
+ .
+ The licenses for most software and other practical works are designed
+ to take away your freedom to share and change the works.  By contrast,
+ our General Public Licenses are intended to guarantee your freedom to
+ share and change all versions of a program--to make sure it remains free
+ software for all its users.
+ .
+  When we speak of free software, we are referring to freedom, not
+ price.  Our General Public Licenses are designed to make sure that you
+ have the freedom to distribute copies of free software (and charge for
+ them if you wish), that you receive source code or can get it if you
+ want it, that you can change the software or use pieces of it in new
+ free programs, and that you know you can do these things.
+ .
+  Developers that use our General Public Licenses protect your rights
+ with two steps: (1) assert copyright on the software, and (2) offer
+ you this License which gives you legal permission to copy, distribute
+ and/or modify the software.
+ .
+ A secondary benefit of defending all users' freedom is that
+ improvements made in alternate versions of the program, if they
+ receive widespread use, become available for other developers to
+ incorporate.  Many developers of free software are heartened and
+ encouraged by the resulting cooperation.  However, in the case of
+ software used on network servers, this result may fail to come about.
+ The GNU General Public License permits making a modified version and
+ letting the public access it on a server without ever releasing its
+ source code to the public.
+ .
+ The GNU Affero General Public License is designed specifically to
+ ensure that, in such cases, the modified source code becomes available
+ to the community.  It requires the operator of a network server to
+ provide the source code of the modified version running there to the
+ users of that server.  Therefore, public use of a modified version, on
+ a publicly accessible server, gives the public access to the source
+ code of the modified version.
+ .
+ An older license, called the Affero General Public License and
+ published by Affero, was designed to accomplish similar goals.  This is
+ a different license, not a version of the Affero GPL, but Affero has
+ released a new version of the Affero GPL which permits relicensing under
+ this license.
+ .
+ The precise terms and conditions for copying, distribution and
+ modification follow.
+ .
+                       TERMS AND CONDITIONS
+ .
+  0. Definitions.
+ .
+  "This License" refers to version 3 of the GNU Affero General Public License.
+ .
+  "Copyright" also means copyright-like laws that apply to other kinds of
+ works, such as semiconductor masks.
+ .
+ "The Program" refers to any copyrightable work licensed under this
+ License.  Each licensee is addressed as "you".  "Licensees" and
+ "recipients" may be individuals or organizations.
+ .
+ To "modify" a work means to copy from or adapt all or part of the work
+ in a fashion requiring copyright permission, other than the making of an
+ exact copy.  The resulting work is called a "modified version" of the
+ earlier work or a work "based on" the earlier work.
+ .
+ A "covered work" means either the unmodified Program or a work based
+ on the Program.
+ .
+ To "propagate" a work means to do anything with it that, without
+ permission, would make you directly or secondarily liable for
+ infringement under applicable copyright law, except executing it on a
+ computer or modifying a private copy.  Propagation includes copying,
+ distribution (with or without modification), making available to the
+ public, and in some countries other activities as well.
+ .
+ To "convey" a work means any kind of propagation that enables other
+ parties to make or receive copies.  Mere interaction with a user through
+ a computer network, with no transfer of a copy, is not conveying.
+ .
+ An interactive user interface displays "Appropriate Legal Notices"
+ to the extent that it includes a convenient and prominently visible
+ feature that (1) displays an appropriate copyright notice, and (2)
+ tells the user that there is no warranty for the work (except to the
+ extent that warranties are provided), that licensees may convey the
+ work under this License, and how to view a copy of this License.  If
+ the interface presents a list of user commands or options, such as a
+ menu, a prominent item in the list meets this criterion.
+ .
+ 1. Source Code.
+ .
+ The "source code" for a work means the preferred form of the work
+ for making modifications to it.  "Object code" means any non-source
+ form of a work.
+ .
+ A "Standard Interface" means an interface that either is an official
+ standard defined by a recognized standards body, or, in the case of
+ interfaces specified for a particular programming language, one that
+ is widely used among developers working in that language.
+ .
+ The "System Libraries" of an executable work include anything, other
+ than the work as a whole, that (a) is included in the normal form of
+ packaging a Major Component, but which is not part of that Major
+ Component, and (b) serves only to enable use of the work with that
+ Major Component, or to implement a Standard Interface for which an
+ implementation is available to the public in source code form.  A
+ "Major Component", in this context, means a major essential component
+ (kernel, window system, and so on) of the specific operating system
+ (if any) on which the executable work runs, or a compiler used to
+ produce the work, or an object code interpreter used to run it.
+ .
+ The "Corresponding Source" for a work in object code form means all
+ the source code needed to generate, install, and (for an executable
+ work) run the object code and to modify the work, including scripts to
+ control those activities.  However, it does not include the work's
+ System Libraries, or general-purpose tools or generally available free
+ programs which are used unmodified in performing those activities but
+ which are not part of the work.  For example, Corresponding Source
+ includes interface definition files associated with source files for
+ the work, and the source code for shared libraries and dynamically
+ linked subprograms that the work is specifically designed to require,
+ such as by intimate data communication or control flow between those
+ subprograms and other parts of the work.
+ .
+ The Corresponding Source need not include anything that users
+ can regenerate automatically from other parts of the Corresponding
+ Source.
+ .
+ The Corresponding Source for a work in source code form is that
+ same work.
+ .
+  2. Basic Permissions.
+ .
+  All rights granted under this License are granted for the term of
+ copyright on the Program, and are irrevocable provided the stated
+ conditions are met.  This License explicitly affirms your unlimited
+ permission to run the unmodified Program.  The output from running a
+ covered work is covered by this License only if the output, given its
+ content, constitutes a covered work.  This License acknowledges your
+ rights of fair use or other equivalent, as provided by copyright law.
+ .
+ You may make, run and propagate covered works that you do not
+ convey, without conditions so long as your license otherwise remains
+ in force.  You may convey covered works to others for the sole purpose
+ of having them make modifications exclusively for you, or provide you
+ with facilities for running those works, provided that you comply with
+ the terms of this License in conveying all material for which you do
+ not control copyright.  Those thus making or running the covered works
+ for you must do so exclusively on your behalf, under your direction
+ and control, on terms that prohibit them from making any copies of
+ your copyrighted material outside their relationship with you.
+ .
+ Conveying under any other circumstances is permitted solely under
+ the conditions stated below.  Sublicensing is not allowed; section 10
+ makes it unnecessary.
+ .
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+ .
+ No covered work shall be deemed part of an effective technological
+ measure under any applicable law fulfilling obligations under article
+ 11 of the WIPO copyright treaty adopted on 20 December 1996, or
+ similar laws prohibiting or restricting circumvention of such
+ measures.
+ .
+ When you convey a covered work, you waive any legal power to forbid
+ circumvention of technological measures to the extent such circumvention
+ is effected by exercising rights under this License with respect to
+ the covered work, and you disclaim any intention to limit operation or
+ modification of the work as a means of enforcing, against the work's
+ users, your or third parties' legal rights to forbid circumvention of
+ technological measures.
+ .
+  4. Conveying Verbatim Copies.
+ .
+ You may convey verbatim copies of the Program's source code as you
+ receive it, in any medium, provided that you conspicuously and
+ appropriately publish on each copy an appropriate copyright notice;
+ keep intact all notices stating that this License and any
+ non-permissive terms added in accord with section 7 apply to the code;
+ keep intact all notices of the absence of any warranty; and give all
+ recipients a copy of this License along with the Program.
+ .
+ You may charge any price or no price for each copy that you convey,
+ and you may offer support or warranty protection for a fee.
+ .
+  5. Conveying Modified Source Versions.
+ .
+ You may convey a work based on the Program, or the modifications to
+ produce it from the Program, in the form of source code under the
+ terms of section 4, provided that you also meet all of these conditions:
+ .
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+ .
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+ .
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+ .
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+ .
+ A compilation of a covered work with other separate and independent
+ works, which are not by their nature extensions of the covered work,
+ and which are not combined with it such as to form a larger program,
+ in or on a volume of a storage or distribution medium, is called an
+ "aggregate" if the compilation and its resulting copyright are not
+ used to limit the access or legal rights of the compilation's users
+ beyond what the individual works permit.  Inclusion of a covered work
+ in an aggregate does not cause this License to apply to the other
+ parts of the aggregate.
+ .
+  6. Conveying Non-Source Forms.
+ .
+ You may convey a covered work in object code form under the terms
+ of sections 4 and 5, provided that you also convey the
+ machine-readable Corresponding Source under the terms of this License,
+ in one of these ways:
+ .
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+ .
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+ .
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+ .
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+ .
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+ .
+ A separable portion of the object code, whose source code is excluded
+ from the Corresponding Source as a System Library, need not be
+ included in conveying the object code work.
+ .
+ A "User Product" is either (1) a "consumer product", which means any
+ tangible personal property which is normally used for personal, family,
+ or household purposes, or (2) anything designed or sold for incorporation
+ into a dwelling.  In determining whether a product is a consumer product,
+ doubtful cases shall be resolved in favor of coverage.  For a particular
+  product received by a particular user, "normally used" refers to a
+ typical or common use of that class of product, regardless of the status
+ of the particular user or of the way in which the particular user
+ actually uses, or expects or is expected to use, the product.  A product
+ is a consumer product regardless of whether the product has substantial
+ commercial, industrial or non-consumer uses, unless such uses represent
+ the only significant mode of use of the product.
+ .
+ "Installation Information" for a User Product means any methods,
+ procedures, authorization keys, or other information required to install
+ and execute modified versions of a covered work in that User Product from
+ a modified version of its Corresponding Source.  The information must
+ suffice to ensure that the continued functioning of the modified object
+ code is in no case prevented or interfered with solely because
+ modification has been made.
+ .
+ If you convey an object code work under this section in, or with, or
+ specifically for use in, a User Product, and the conveying occurs as
+ part of a transaction in which the right of possession and use of the
+ User Product is transferred to the recipient in perpetuity or for a
+ fixed term (regardless of how the transaction is characterized), the
+ Corresponding Source conveyed under this section must be accompanied
+ by the Installation Information.  But this requirement does not apply
+ if neither you nor any third party retains the ability to install
+ modified object code on the User Product (for example, the work has
+ been installed in ROM).
+ .
+ The requirement to provide Installation Information does not include a
+ requirement to continue to provide support service, warranty, or updates
+ for a work that has been modified or installed by the recipient, or for
+ the User Product in which it has been modified or installed.  Access to a
+ network may be denied when the modification itself materially and
+ adversely affects the operation of the network or violates the rules and
+ protocols for communication across the network.
+ .
+ Corresponding Source conveyed, and Installation Information provided,
+ in accord with this section must be in a format that is publicly
+ documented (and with an implementation available to the public in
+ source code form), and must require no special password or key for
+ unpacking, reading or copying.
+ .
+  7. Additional Terms.
+ .
+ "Additional permissions" are terms that supplement the terms of this
+ License by making exceptions from one or more of its conditions.
+ Additional permissions that are applicable to the entire Program shall
+ be treated as though they were included in this License, to the extent
+ that they are valid under applicable law.  If additional permissions
+ apply only to part of the Program, that part may be used separately
+ under those permissions, but the entire Program remains governed by
+ this License without regard to the additional permissions.
+ .
+ When you convey a copy of a covered work, you may at your option
+ remove any additional permissions from that copy, or from any part of
+ it.  (Additional permissions may be written to require their own
+ removal in certain cases when you modify the work.)  You may place
+ additional permissions on material, added by you to a covered work,
+ for which you have or can give appropriate copyright permission.
+ .
+ Notwithstanding any other provision of this License, for material you
+ add to a covered work, you may (if authorized by the copyright holders of
+ that material) supplement the terms of this License with terms:
+ .
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+ .
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+ .
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+ .
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+ .
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+ .
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+ .
+ All other non-permissive additional terms are considered "further
+ restrictions" within the meaning of section 10.  If the Program as you
+ received it, or any part of it, contains a notice stating that it is
+ governed by this License along with a term that is a further
+ restriction, you may remove that term.  If a license document contains
+ a further restriction but permits relicensing or conveying under this
+ License, you may add to a covered work material governed by the terms
+ of that license document, provided that the further restriction does
+ not survive such relicensing or conveying.
+ .
+ If you add terms to a covered work in accord with this section, you
+ must place, in the relevant source files, a statement of the
+ additional terms that apply to those files, or a notice indicating
+ where to find the applicable terms.
+ .
+ Additional terms, permissive or non-permissive, may be stated in the
+ form of a separately written license, or stated as exceptions;
+ the above requirements apply either way.
+ .
+  8. Termination.
+ .
+ You may not propagate or modify a covered work except as expressly
+ provided under this License.  Any attempt otherwise to propagate or
+ modify it is void, and will automatically terminate your rights under
+ this License (including any patent licenses granted under the third
+ paragraph of section 11).
+ .
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly and
+ finally terminates your license, and (b) permanently, if the copyright
+ holder fails to notify you of the violation by some reasonable means
+ prior to 60 days after the cessation.
+ .
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from that
+ copyright holder, and you cure the violation prior to 30 days after
+ your receipt of the notice.
+ .
+ Termination of your rights under this section does not terminate the
+ licenses of parties who have received copies or rights from you under
+ this License.  If your rights have been terminated and not permanently
+ reinstated, you do not qualify to receive new licenses for the same
+ material under section 10.
+ .
+  9. Acceptance Not Required for Having Copies.
+ .
+ You are not required to accept this License in order to receive or
+ run a copy of the Program.  Ancillary propagation of a covered work
+ occurring solely as a consequence of using peer-to-peer transmission
+ to receive a copy likewise does not require acceptance.  However,
+ nothing other than this License grants you permission to propagate or
+ modify any covered work.  These actions infringe copyright if you do
+ not accept this License.  Therefore, by modifying or propagating a
+ covered work, you indicate your acceptance of this License to do so.
+ .
+  10. Automatic Licensing of Downstream Recipients.
+ .
+ Each time you convey a covered work, the recipient automatically
+ receives a license from the original licensors, to run, modify and
+ propagate that work, subject to this License.  You are not responsible
+ for enforcing compliance by third parties with this License.
+ .
+ An "entity transaction" is a transaction transferring control of an
+ organization, or substantially all assets of one, or subdividing an
+ organization, or merging organizations.  If propagation of a covered
+ work results from an entity transaction, each party to that
+ transaction who receives a copy of the work also receives whatever
+ licenses to the work the party's predecessor in interest had or could
+ give under the previous paragraph, plus a right to possession of the
+ Corresponding Source of the work from the predecessor in interest, if
+ the predecessor has it or can get it with reasonable efforts.
+ .
+  You may not impose any further restrictions on the exercise of the
+ rights granted or affirmed under this License.  For example, you may
+ not impose a license fee, royalty, or other charge for exercise of
+ rights granted under this License, and you may not initiate litigation
+ (including a cross-claim or counterclaim in a lawsuit) alleging that
+ any patent claim is infringed by making, using, selling, offering for
+ sale, or importing the Program or any portion of it.
+ .
+  11. Patents.
+ .
+ A "contributor" is a copyright holder who authorizes use under this
+ License of the Program or a work on which the Program is based.  The
+ work thus licensed is called the contributor's "contributor version".
+ .
+ A contributor's "essential patent claims" are all patent claims
+ owned or controlled by the contributor, whether already acquired or
+ hereafter acquired, that would be infringed by some manner, permitted
+ by this License, of making, using, or selling its contributor version,
+ but do not include claims that would be infringed only as a
+ consequence of further modification of the contributor version.  For
+ purposes of this definition, "control" includes the right to grant
+ patent sublicenses in a manner consistent with the requirements of
+ this License.
+ .
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+ patent license under the contributor's essential patent claims, to
+ make, use, sell, offer for sale, import and otherwise run, modify and
+ propagate the contents of its contributor version.
+ .
+ In the following three paragraphs, a "patent license" is any express
+ agreement or commitment, however denominated, not to enforce a patent
+ (such as an express permission to practice a patent or covenant not to
+ sue for patent infringement).  To "grant" such a patent license to a
+ party means to make such an agreement or commitment not to enforce a
+ patent against the party.
+ .
+ If you convey a covered work, knowingly relying on a patent license,
+ and the Corresponding Source of the work is not available for anyone
+ to copy, free of charge and under the terms of this License, through a
+ publicly available network server or other readily accessible means,
+ then you must either (1) cause the Corresponding Source to be so
+ available, or (2) arrange to deprive yourself of the benefit of the
+ patent license for this particular work, or (3) arrange, in a manner
+ consistent with the requirements of this License, to extend the patent
+ license to downstream recipients.  "Knowingly relying" means you have
+ actual knowledge that, but for the patent license, your conveying the
+ covered work in a country, or your recipient's use of the covered work
+ in a country, would infringe one or more identifiable patents in that
+ country that you have reason to believe are valid.
+ .
+ If, pursuant to or in connection with a single transaction or
+ arrangement, you convey, or propagate by procuring conveyance of, a
+ covered work, and grant a patent license to some of the parties
+ receiving the covered work authorizing them to use, propagate, modify
+ or convey a specific copy of the covered work, then the patent license
+ you grant is automatically extended to all recipients of the covered
+ work and works based on it.
+ .
+ A patent license is "discriminatory" if it does not include within
+ the scope of its coverage, prohibits the exercise of, or is
+ conditioned on the non-exercise of one or more of the rights that are
+ specifically granted under this License.  You may not convey a covered
+ work if you are a party to an arrangement with a third party that is
+ in the business of distributing software, under which you make payment
+ to the third party based on the extent of your activity of conveying
+ the work, and under which the third party grants, to any of the
+ parties who would receive the covered work from you, a discriminatory
+ patent license (a) in connection with copies of the covered work
+ conveyed by you (or copies made from those copies), or (b) primarily
+ for and in connection with specific products or compilations that
+ contain the covered work, unless you entered into that arrangement,
+ or that patent license was granted, prior to 28 March 2007.
+ .
+ Nothing in this License shall be construed as excluding or limiting
+ any implied license or other defenses to infringement that may
+ otherwise be available to you under applicable patent law.
+ .
+  12. No Surrender of Others' Freedom.
+ .
+ If conditions are imposed on you (whether by court order, agreement or
+ otherwise) that contradict the conditions of this License, they do not
+ excuse you from the conditions of this License.  If you cannot convey a
+ covered work so as to satisfy simultaneously your obligations under this
+ License and any other pertinent obligations, then as a consequence you may
+ not convey it at all.  For example, if you agree to terms that obligate you
+ to collect a royalty for further conveying from those to whom you convey
+ the Program, the only way you could satisfy both those terms and this
+ License would be to refrain entirely from conveying the Program.
+ .
+  13. Remote Network Interaction; Use with the GNU General Public License.
+ .
+ Notwithstanding any other provision of this License, if you modify the
+ Program, your modified version must prominently offer all users
+ interacting with it remotely through a computer network (if your version
+ supports such interaction) an opportunity to receive the Corresponding
+ Source of your version by providing access to the Corresponding Source
+ from a network server at no charge, through some standard or customary
+ means of facilitating copying of software.  This Corresponding Source
+ shall include the Corresponding Source for any work covered by version 3
+ of the GNU General Public License that is incorporated pursuant to the
+ following paragraph.
+ .
+ Notwithstanding any other provision of this License, you have
+ permission to link or combine any covered work with a work licensed
+ under version 3 of the GNU General Public License into a single
+ combined work, and to convey the resulting work.  The terms of this
+ License will continue to apply to the part which is the covered work,
+ but the work with which it is combined will remain governed by version
+ 3 of the GNU General Public License.
+ .
+ 14. Revised Versions of this License.
+ .
+ The Free Software Foundation may publish revised and/or new versions of
+ the GNU Affero General Public License from time to time.  Such new versions
+ will be similar in spirit to the present version, but may differ in detail to
+ address new problems or concerns.
+ .
+ Each version is given a distinguishing version number.  If the
+ Program specifies that a certain numbered version of the GNU Affero General
+ Public License "or any later version" applies to it, you have the
+ option of following the terms and conditions either of that numbered
+ version or of any later version published by the Free Software
+ Foundation.  If the Program does not specify a version number of the
+ GNU Affero General Public License, you may choose any version ever published
+ by the Free Software Foundation.
+ .
+ If the Program specifies that a proxy can decide which future
+ versions of the GNU Affero General Public License can be used, that proxy's
+ public statement of acceptance of a version permanently authorizes you
+ to choose that version for the Program.
+ .
+ Later license versions may give you additional or different
+ permissions.  However, no additional obligations are imposed on any
+ author or copyright holder as a result of your choosing to follow a
+ later version.
+ .
+  15. Disclaimer of Warranty.
+ .
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+ APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+ OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+ IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+ .
+  16. Limitation of Liability.
+ .
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+ THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+ GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+ USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+ DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+ EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGES.
+ .
+  17. Interpretation of Sections 15 and 16.
+ .
+ If the disclaimer of warranty and limitation of liability provided
+ above cannot be given local legal effect according to their terms,
+ reviewing courts shall apply local law that most closely approximates
+ an absolute waiver of all civil liability in connection with the
+ Program, unless a warranty or assumption of liability accompanies a
+ copy of the Program in return for a fee.
+ .
+                     END OF TERMS AND CONDITIONS
+ .
+            How to Apply These Terms to Your New Programs
+ .
+ If you develop a new program, and you want it to be of the greatest
+ possible use to the public, the best way to achieve this is to make it
+ free software which everyone can redistribute and change under these terms.
+ .
+ To do so, attach the following notices to the program.  It is safest
+ to attach them to the start of each source file to most effectively
+ state the exclusion of warranty; and each file should have at least
+ the "copyright" line and a pointer to where the full notice is found.
+ .
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+ .
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Affero General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+ .
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Affero General Public License for more details.
+ .
+    You should have received a copy of the GNU Affero General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ .
+ Also add information on how to contact you by electronic and paper mail.
+ .
+ If your software can interact with users remotely through a computer
+ network, you should also make sure that it provides a way for users to
+ get its source.  For example, if your program is a web application, its
+ interface could display a "Source" link that leads users to an archive
+ of the code.  There are many ways you could offer source, and different
+ solutions will be better for different programs; see section 13 for the
+ specific requirements.
+ .
+ You should also get your employer (if you work as a programmer) or school,
+ if any, to sign a "copyright disclaimer" for the program, if necessary.
+ For more information on this, and how to apply and follow the GNU AGPL, see
+ <http://www.gnu.org/licenses/>.
diff --git a/debian/db/install/pgsql b/debian/db/install/pgsql
new file mode 100755
index 0000000..d61008c
--- /dev/null
+++ b/debian/db/install/pgsql
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+set -eu
+
+# get database settings from dbconfig-common and configure
+# for ADMINISTRATIVE access
+if [ -f /etc/dbconfig-common/anastasis.conf ]; then
+    . /etc/dbconfig-common/anastasis.conf
+    case "$dbc_dbtype" in
+        pgsql)
+            anastasis-config -w \
+                         -c /etc/anastasis.conf \
+                         -s "stasis-postgres" \
+                         -o "CONFIG" \
+                         -V "postgres:///$dbc_dbname"
+            anastasis-config -w \
+                         -c /etc/anastasis.conf \
+                         -s "anastasis" \
+                         -o "DB" \
+                         -V "postgres"
+            ;;
+        sqlite3)
+            # Later: use something like:
+            # sqlite:///$DATA_DIR/merchant.db
+            # But for now, sqlite is unsupported:
+            echo "Unsupported database type $dbc_type."
+            exit 1
+            ;;
+        "")
+            ;;
+        *)
+            echo "Unsupported database type $dbc_type."
+            exit 1
+            ;;
+    esac
+fi
+
+# Run database initialization logic
+sudo -u postgres anastasis-dbinit -c /etc/anastasis.conf
+
+
+# get database settings from dbconfig-common and configure
+# for service access!
+if [ -f /etc/dbconfig-common/anastasis.conf ]; then
+    . /etc/dbconfig-common/anastasis.conf
+    case "$dbc_dbtype" in
+        pgsql)
+            echo "GRANT INSERT, SELECT, UPDATE, DELETE ON ALL TABLES IN SCHEMA 
public TO \"$dbc_dbuser\";" \
+                | sudo -u postgres psql "postgres:///$dbc_dbname"
+            echo "GRANT SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA public TO 
\"$dbc_dbuser\";" \
+            | sudo -u postgres psql "postgres:///$dbc_dbname"
+
+            anastasis-config -w \
+                         -c /etc/anastasis.conf \
+                         -s "stasis-postgres" \
+                         -o "CONFIG" \
+                         -V 
"postgres://$dbc_dbuser:$dbc_dbpass@$dbc_dbserver/$dbc_dbname"
+            anastasis-config -w \
+                         -c /etc/anastasis.conf \
+                         -s "anastasis" \
+                         -o "DB" \
+                         -V "postgres"
+            ;;
+        sqlite3)
+            # Later: use something like:
+            # sqlite:///$DATA_DIR/merchant.db
+            # But for now, sqlite is unsupported:
+            echo "Unsupported database type $dbc_type."
+            exit 1
+            ;;
+        "")
+            ;;
+        *)
+            echo "Unsupported database type $dbc_type."
+            exit 1
+            ;;
+    esac
+fi
diff --git a/debian/etc/taler/conf.d/anastasis.conf 
b/debian/etc/taler/conf.d/anastasis.conf
new file mode 100644
index 0000000..96b66b3
--- /dev/null
+++ b/debian/etc/taler/conf.d/anastasis.conf
@@ -0,0 +1,2 @@
+[anastasis]
+DATABASE = postgres
diff --git a/debian/libanastasis-dev.install b/debian/libanastasis-dev.install
new file mode 100644
index 0000000..38d21e9
--- /dev/null
+++ b/debian/libanastasis-dev.install
@@ -0,0 +1,2 @@
+usr/include
+usr/lib/*/libanastasistesting.*
\ No newline at end of file
diff --git a/debian/libanastasis.docs b/debian/libanastasis.docs
new file mode 100644
index 0000000..62deb04
--- /dev/null
+++ b/debian/libanastasis.docs
@@ -0,0 +1 @@
+AUTHORS
diff --git a/debian/libanastasis.install b/debian/libanastasis.install
new file mode 100644
index 0000000..482c865
--- /dev/null
+++ b/debian/libanastasis.install
@@ -0,0 +1,4 @@
+usr/lib/*/libanastasis.so*
+usr/lib/*/libanastasis*.so*
+usr/share/anastasis/redux.*
+usr/share/info/anastasis*
diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in
new file mode 100644
index 0000000..c70621f
--- /dev/null
+++ b/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] anastasis.templates
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..6d2058a
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,39 @@
+#!/usr/bin/make -f
+
+SHELL := sh -e
+
+include /usr/share/dpkg/architecture.mk
+
+%:
+       dh ${@}
+
+override_dh_auto_configure-arch:
+       dh_auto_configure -- --disable-rpath --with-microhttpd=yes $(shell 
dpkg-buildflags --export=configure)
+
+override_dh_auto_configure-indep:
+
+override_dh_auto_build-indep:
+
+override_dh_auto_test:
+       # Disabling test suite, incomplete
+
+override_dh_auto_install-arch:
+       dh_auto_install
+
+       # Removing useless files
+       rm -f debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/*.la \
+               debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/anastasis/*.la \
+               debian/tmp/usr/share/doc/anastasis/COPYING
+
+override_dh_auto_install-indep:
+
+override_dh_auto_clean:
+       dh_auto_clean
+
+# Remove files already present in libtalerexchange from main taler-exchange 
package
+override_dh_install:
+       dh_install
+       cd debian/libanastasis-dev; find . -type f,l -exec rm -f 
../anastasis-httpd/{} \;
+       cd debian/anastasis-cli; find . -type f -exec rm -f 
../anastasis-httpd/{} \;
+       cd debian/libanastasis-dev; find . -type f,l -exec rm -f 
../libanastasis/{} \;
+       cd debian/libanastasis; find . -type f,l -exec rm -f 
../anastasis-httpd/{} \;
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/options b/debian/source/options
new file mode 100644
index 0000000..e928a91
--- /dev/null
+++ b/debian/source/options
@@ -0,0 +1,3 @@
+extend-diff-ignore = "^(config\.sub|config\.guess|Makefile)$"
+
+
diff --git a/debian/upstream/metadata b/debian/upstream/metadata
new file mode 100644
index 0000000..be7ec13
--- /dev/null
+++ b/debian/upstream/metadata
@@ -0,0 +1,4 @@
+Bug-Submit: https://bugs.taler.net/
+Documentation: https://docs.taler.net/
+Repository: git.taler.net/anastasis.git
+Repository-Browse: https://git.taler.net/anastasis.git
diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..d70f731
--- /dev/null
+++ b/debian/upstream/signing-key.asc
@@ -0,0 +1,637 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+UJUbAoLQgUTaX99KUKeyCuiGUA==
+=17vI
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+HJ4WgA4J3NpdbFpWe+Al47qoLxT6pPJbWiNZpj4p0189itQNEA7g2nfz47LBjZYv
+lyyIXMIlZe4t6rkpO7QjTmlscyBHaWxsbWFubiA8Z2lsbG1hbm5AZ251bmV0Lm9y
+Zz6JAjYEMAEKACAWIQSojIrdEpgo1+rALlLiL5u/7jSFiAUCXSx0xQIdIAAKCRDi
+L5u/7jSFiJBcD/4ilWSQRaxbgWms9PXZ4HTvfrFEb2TTn86BYiYxEN3aT7xk1Tor
+6bzEmLVkhraN2NKgaYgCFt1/Wzzo9N4o9Ojtq6ES3SFx0ZSpnlIU6YaLB++710gj
+mP9KW8sBcGrNBYa0eisZuwqM68GApGDxbdzqo9K7O3alYdf6UsmTal7iWHCRCz4d
+RShxFYWJbOk842rL8e1AWkF6nvWIq+7/eKLYyD5XAIXKw/ZB/hlcdgd8m0eO4pZ7
+s+fhuaVPFryVzAlAnLQRdMStUo8VeGbOqFCfS0ZB2cPt/D5d8xRvnaCeSae3xMLp
+sytCjDFz53fSTx62ZiwqOZoncPmjZDzw26vOaX4Y3fVB6cQKYRGke7V7pagIeH5N
+W60mruk2IVoA/lgOSZmNT7/iVojHpYQnbaIZZRx0a+VjfgtNjcVouo9Hkll14397
+vPRMLszDHmpvG6/WAcFkG8uJjRihqwVzY+gsAKP5r94IQpQ6rKVCJYxmko5xpYOD
+g+FRnt21GQ3XzUnOjdD+9ayPULA8sm3/IYraP6k2hB3SCKhMpEjno8otabv9h0M3
+FlN8qxJbXKWmMS3Ttq1DxpK5JwJ5jaBE9WfeDtXM1cnCju+qzlYSXogje9dc508s
+wSIO1PLzTYFCanCDUKqNaNX5OqvjtUWslKc/hUPdqtptolGvrXiGhnrc1bQpTmls
+cyBHaWxsbWFubiA8Z2lsbG1hbm5AaW5mb3Ryb3BpcXVlLm9yZz6JAjYEMAEKACAW
+IQSojIrdEpgo1+rALlLiL5u/7jSFiAUCXSx0xQIdIAAKCRDiL5u/7jSFiInyD/9m
+/qoOIXFmAKlGjNVs2nYaP6vQCCAzcOm1WrwP6DYoeG1JWjNlFr0kKhJa/mzR0hFY
+b2+49+Er06l7N0txPRcUhoD/8kKTIx8ljX27icd7BpD52XBqLfnX3Th3OHJA5CtZ
+epQ4/bgUqXkHqUPsmVQHyjlq7liYIlZWwMBfA+L6eLF4MQhcnIoHkfVLyHvJ3B07
+VpJAH5wBBC3NEaPTCAeHbXdSY7vVea3kSZZ+dHcmcIcpBcFFTggruGlPdBfUlt8/
+aeRdfAause3xkQ3/n7wTXugYPRcIM1MsDmHuFaADWEx9eEEg0WY+Fb9TD02iwTyj
+n2zISITI4k/FGIW+8bG+qrE5EDxVxeuociVNi76byaPN3Wx2JhDq8nKtfVWLCbZN
+NN0HYpgfoHYUtFR7SCDbHvL0MVW607Alyubxo5n/WN6RC6jxmFaE1CZpl1jVp5cx
+/Uw5NBv5OwQzd/OqLiTXisM0Jou20c777XRL8nTrFniW2ym38xDkC7q17yhDPesU
++00TR0PWO7RFpw1mzxggGXxmuxA+OZeR/fHdc6CpGmEj8YlpeOOoRw/58/w1LwQr
++zKUzuNo0wKvcn+K0rHoSVOX5O3XAxTg2FRpa48YCY2U4kUH6RITHZRg+Eh5LHHs
+Yj4ow1BsIfW9VAzHkt7b0MxdWsUwqFuXtsaMAg2HGLQObmcwQE5ldEJTRC5vcmeJ
+AlcEEwEKAEECGwMFCQVTg+sFCwkIBwMFFQoJCAsFFgMCAQACHgECF4AWIQSojIrd
+Epgo1+rALlLiL5u/7jSFiAUCXSx1iQIZAQAKCRDiL5u/7jSFiIP0D/4i40WiFeRM
+E3l9El3UOE/AsoldFGSfzXtkfad5X9arry4C4UFRFcQ3OtJnGvfW3Nr/mMNa6w+x
+3z4KnQRqhx8hw3dvQXHZQUjOEAQMg2K5ns38Wixk0OD5Mmqv9qyImwm5A7MOZt5p
+uZqGv21YS8BXQsMw+CLXRsapNAqI4N454bDBoA+l34tOiN4jPgG0jBy9aPZKWh+7
+nLHIn/DJ7xxT9Z3P7gSPcv8cwEumiBA4x79Ac9YszhafMiqwkk3b20DGjAyXZmEK
+l2annmwce/u3P8oQd/+hmcprQZMgh1vxA0wm9yQZ2zUZXAYZASVew9v4KdNVJE+g
+wKfJd4TiPrOkKoll91ikGCY38PPfLCyvGobdrE2LW+6ApQtcTrKu8nzkCGdZiyZ/
+SE2gHMOrYAmCpDH6ujD0z76ywo3a3Ta3njId3S+LTPtpBJNq7jRgXJPTw2OVjt23
+7QrM0QbNTvbjy5OR60BSFhvd4F7LCzhM1b/T9P8oFf+uO2hQxtLnNqdYR4idIRFP
+gXjD5dYpEfTOp1dZviiWqXm6jJFsLJy3FtRvtICLzram0nSO3xA0bB0QH6MqDp4c
+4kcZ8JEunBvsOkIVlzT83CGrBCOaydw+1d3wheFQItPOydVrqVtH+0rGHUTpapL7
+BXttYTzl6n7YIpNDqBufZcWhmqBF2FPTWLQWdGVrLm5vLmthdHplQGdtYWlsLmNv
+bYkCVAQTAQoAPhYhBKiMit0SmCjX6sAuUuIvm7/uNIWIBQJc3Zx9AhsDBQkFU4Pr
+BQsJCAcDBRUKCQgLBRYDAgEAAh4BAheAAAoJEOIvm7/uNIWIZ0YP/RM+jV5mCCf9
+Yj4KIZ7u4FTUQ4k9KqfvEw134efgZAR5n3+3MvG09glEunMaeoGQDZ3E7qHJs9MT
+cSA8RSfXT/Xp5+dDDpobV7TKzV5heTK6+PjsKH1KlvT3mTDcnRFnwRMQaK6BP1KB
+bLTpxW6kDFD50OChVC+iEBunkgplVl593KLLkqeAmuIzThKIbZLOT6H+bGthSu+V
+IGLp8MfVtjw4dflK0TbvyIVQRVxqQPv/egKIaLAQwah+21svfXib2tJ5kxKlFVbC
+K9IpTcBXljiS7ZQo7/Ok1Z4IyySMeA9CpRZjL0zSygNpHwk8Ml8UcNmcvd1Jbe94
+jUOJk6YIOhAs2LkzxoZdzuxx2RrB4kTHBkM+zMKSJGMXspIdelTOYfjOPvS+wb55
+QobWo6tey4z5LEWt1ymeGTs3pCnAY6Y9FNV2x3+MExhFK9AumKXgfTa9H0ew36wf
+Iju4oAMVWHk6nz+Mv5IwwcFGiH4QZNLZj0r0F0dAelngphersaPZLK3sjqlZNY0L
+atQn8BOZoY8n9JN++JPIwq0LZH5k8Fp5mcGcOVNukXghj59kpXDLJTxnlzdqAQ+R
+9ank2vf9K6aEkzfg+7zjd2r/gkaluTfELmu2SE2zOPKQqwPI3+k+LU7TGAMOVFQv
+wnqwjo4JWx53R2sfHzJiLIeefZ2dGtDRtAluZzBAbjAucG2JAlQEEwEKAD4WIQSo
+jIrdEpgo1+rALlLiL5u/7jSFiAUCXSx09AIbAwUJBVOD6wULCQgHAwUVCgkICwUW
+AwIBAAIeAQIXgAAKCRDiL5u/7jSFiH+hD/9Cp3c2QVCVfEF+eKIPwyKB5jgbmY15
+rsBb75xcNAYK73O4DrYn69a0GdiazxYghafQeg8FOLmxF5XB5e1vvzXOTe0cEOaO
+nnsr/0JhTU9CHIaLeOtgNI6XTF3RQ/r4pxmZ/kIpsHzjrc5t5SlOnGdcElkhT5mi
+YpeLywJyBjwJvnTQr6ks8QF4RGgUpp8V04we2vCkdsuSGzcCDm40NyDfEeLa8tCp
+h93almEtDFI3gcXHr7JiAxj0yxVWi0KaejwphwnudxWu8kyfQUEAKmn+J9gOkOXs
+vTMvRc1f3z12QRSWd6DnZzL9EctDbYXgG7F55me1zLBSCuZP7rj3gw1VfW5+XFEH
+Giq8hqf/V/e7Gq6Dtx5NpAj7TCmBOUOAL80Z5jjOaPSBhALlE0RLuFF4OMQm+hg7
+2tZC06AUJQKmEtdxWt96DKe2lD3pNdsb54T3mxjdgHyO6sxDYHeMGu+D6OhP+L1Q
+WnPnkv4hrsjEnbbHUp98nbiGA53NWTLllsHXmWIkeokau1VmF6ad45z+d2Dtjgo4
+kphux0lYAOqHV6zL0DfTT2MyCpm38dHpHEKzAQVaeppeCetg8HXOMdvbe7b5Tsk4
+HQNryD5B2PD3elvD09amc5SAske2z5ZSYKdjDnrNjUhOESRb5eDEE0b9f5wYzQxW
+qV10dXdgccCIfbQNbmcwQHRhbGVyLm5ldIkCVAQTAQoAPhYhBKiMit0SmCjX6sAu
+UuIvm7/uNIWIBQJdLHbsAhsDBQkFU4PrBQsJCAcDBRUKCQgLBRYDAgEAAh4BAheA
+AAoJEOIvm7/uNIWIbAsQALJNb8HvAPNySloMN8tkBy6jjfzndJGq0JkA5rhT4Zu0
+U3rolSXoo3RC4uXK9vWQXAzE0H9csmC0+4JquXOIJ6Rbm5oRRwtX51MdLJKxb+L5
+kuqkkIbFgnqjWNCqAKB5IRnI4nHroqBwi7ZUWAvR9SXsFT7jNFv/DK0stTf7OEs0
+XsZfwnVZlGzn26JSeFrQEYyJB0/ecrcKZVohge0/FMi6LddjfiJqR8dREiW/mNZS
+lzxWyteluxd1CzIhPUCoJfLJu9g1BFZv5kjurVUsoXcNomYvQksT4mNEVj/wwIPk
+yJZZ6vAQHts3kDy1rRSiJCOShG305m+jc98wRBKhr+YJf+bZzBtMf+Rgfgav1ywx
+3fh8kzds+hFCektsPzGp4CgyT4jdn4Rh3QdqjMH5ah5rWbwxA8G0q8duXc7UUsog
+lMmmXiNiUD7Bg/TJoQPmL1Pj+RPgqH2xeVwnSSwDCfr/U2tHxBpgB55KfrH92U18
+EfW4oW+w2UUhaBEZyrruKdaPUhv8gtx8YEEarWKi6w0e31KXmyPvqS5GnjOZ9PX3
+RtBHQkqg7iiUBBPz9TM+kMX5oHuKymv9w7aVMNPmnT6jKlFJur/hkBn9yxfAWWyV
+yEBAuMW04YjSYRbxjbvH+0Bh0cDpK9bTp6maCLnP15IIOmz6a8uH3M3y00wf5elA
+tA5naWxsbWFubkBuMC5pc4kCVAQTAQoAPhYhBKiMit0SmCjX6sAuUuIvm7/uNIWI
+BQJdLHTXAhsDBQkFU4PrBQsJCAcDBRUKCQgLBRYDAgEAAh4BAheAAAoJEOIvm7/u
+NIWI7Q8P/3IB/0RHO/oRz/1bclxGuCJYFZ/xa+SEnnE/XjAYvQAUn1jSfkdC8yRX
+3Lq2s321hjo0xQXgst0zV4adPOfSyGKFoodnO5mFY6a5pYq2CdFGmuQ6pQD+/OvQ
+O4PLLbtC3z6EtA2GGSlXgNTz0krqjaUX9FwBlbzgNoycFQrhVwx9PpXKDlORjgYU
+4m/VjOi0f0yLzZ7BWDrenw45Brv6zZuFjfqxSHV+u6ecGpnEx4GjB7o0w8MGV/v2
+XZm2p591cJ4agmewjQhfBLP6D+fw20ENsTxgvYYCX+k7dTeFRSrKyariSy702ryu
+QYsh3c9+0EDomQOA0PH5/063f7msXNNwn9MsGqXQJ8umHDRnmC0aMdzQG5m8Orsg
+ZnPBRhvQmDuQRUVworotAqqEfoQ2WWFedNxRUgd3dClaDts5Uc65Tzzd8JA+zYIo
+byKqE9fP3vtPhO1y3+BV2W3YLsmgQtVInzPJq0HBjPXuulFN73eA1PJanRT0n8Al
+730Y10CKmxAMP+pQ416OrYUHwFSCAD5v8EL6AET/NgnI4d19imyoAcjR/W4MyNTx
+YXRlQ8v38Av1B6pvNC3/9ktPtyf6RRY8GVhMVQ7DUSLm2JOVx9vQj2jYM9a79i1+
+sx5OfDGnSnFfQgg+koqyiR82KSqwIZImiDhWWyDkVfnWxY9TvuaxtA5naWxsbWFu
+bkBuMC5wbYkCVAQTAQoAPhYhBKiMit0SmCjX6sAuUuIvm7/uNIWIBQJdLHUDAhsD
+BQkFU4PrBQsJCAcDBRUKCQgLBRYDAgEAAh4BAheAAAoJEOIvm7/uNIWI6ykQALBm
+K4s0xRE8T+MzxoeSV0gM+bQPqcBJW0FzTFHMOw8U0iJU3kDd/DolliEj2qSnyzxW
+Wp5WJVAp9UVyDxRb9MVp5l1qsniAkyeOVknFD6xbMOohY+5AYgwb6TzwIXXyKxCq
+O3nLE/qzTQE8WI4uLU+PXFQW2KkWY1+XzSGDGtP7c25mA+Rsy46Q9KskEe2S5m/j
+/Xt44pTU1AeMMdN4b4PzM8X60tlHAa/mLg06RT838cQEtJvYJn4nUj595f1aNmqW
+2OQ8AYa9AWBTaQRZls+zSQ3pDp0vEn7pvAn4gJ0cC2CLE86HaloIgBYUeXfc78u3
+XXn9RGdvgNJ9wKI541YLaH+GS+tezXP7qHtVeoLjqYve840Oj/D0fA+HqfnR0AjY
+h4aYc034ShiVUlEfWv2JjvRLIn7QegT1GSW17CftVmp7Na9UyYtizYra4bTVTaUJ
+fh2oKAfLwQRaAxq0knboBkFbXlvLBLgLks6o0hok39VWcaikd9veT8c1QlGID7FU
+Inleo/RAMaI1uJyZgCoXtlmCBz2/cOolTn+YeVfa26x4Yemy+habFkKoeVobwl/8
+1LN1q1L2CJn0sPB6xfNwIKEyab3Nx5CeQIuXZIk4Zi+wwkD8Y1K5SlNW/shEpQCd
+/bPrxvf32IOIfTSOnwK93MQc01r1Z2R3BRc664/dtBNnaWxsbWFubkBnbnVuZXQu
+b3JniQJUBBMBCgA+FiEEqIyK3RKYKNfqwC5S4i+bv+40hYgFAl0sdSECGwMFCQVT
+g+sFCwkIBwMFFQoJCAsFFgMCAQACHgECF4AACgkQ4i+bv+40hYgRXBAAm9A7Go5a
+2PINqMnVob2qJ+uwe+CXnvCnAkIagshn/MXZ3s0+SEyDsK8+zpSXw9IZ62kYPaqG
+Ao9FrB2sQXPfrhWw74OKcHG5GcT3ep49PUV2CcmyGzFV+YoJm7lsy4wbrl4i4PpY
+ijrkT6mICwXFjWaKakEbFKlnKDvGHEWvPLCJhWCszsfnfbqcRKwUykmEmwiD/Te+
+B2H4iavQbgzY1y2UPxCKZFWEhp9IMVGaZFW5H/H6XwzAGNWiOBLSsEQenN1C8TQR
+UgLN64oAuFtt2KY5SQCVnI+cHnHZzBq0Mpi5WdLhQfhXZh7lr+EzMuOlvqQg0zTz
+yH9jgXuh0Hi92Hx7ctzFtCK4DPNatMLlxQbo4TAseqBIy0ltQaIqrn0V1Qp0Tvnj
+jIT/maKfcJZrmCQQT5vsEgPNlsaK5R2pNDWjg3QtvK2+AtavSf3/d08fDIlneNlC
+/8E6XfZ0+0jJdEw2axyFymNhD3uDPEZ9Zo9ZCQQ/lwP1fqjVQhxrWLcSWdpGnhlu
+VWd4pJ9VB2HdXdbKYmyNakmFTbmTeu1CwePcS65mzEs4Eoq2CRxf3t8t3525cQWT
+MG6CPm8pRC7iueDVS6O+qnlV6BARr7wBinp9X2+uG2M9+P7JIBioFc7DCG0DIjDE
+ykq8ZGR5E4+Zv1cUBTWsw2N9EjF5rxvDbnO0GWdpbGxtYW5uQGluZm90cm9waXF1
+ZS5vcmeJAlQEEwEKAD4WIQSojIrdEpgo1+rALlLiL5u/7jSFiAUCXSx1VQIbAwUJ
+BVOD6wULCQgHAwUVCgkICwUWAwIBAAIeAQIXgAAKCRDiL5u/7jSFiIO+D/9foiQJ
+w9fpkXQQD6gP5fPZmgKuM0OHRuw6pEF26JgJFxtrDSx5SPbQxs4PlqavmXk0fbtz
+jWHd8w9X661yf890XxnzSSRZNItCfc7P/DZYTK48YN/13qv30zl5UlZv9p7Zca/f
+2C8VKICIJrSgbWNhW9Ctgh8r3pWCHA1rwtOWvwiKoyrQmG1/L9juOH4SlXtbeT/B
+/xxZxwq3EILVZl5rA0zVI9Qf326ElbDfLwxzpFCaSNVPB1HNSyBRSEdMe3s30IQ6
+LYBDM2ZqQJW1LOUhJIiiEyYTMfTpQROmAQ8k7GuGVPt1YekPjPdn7kyZdW/kbJAE
+CLT4isHgdi+O3PVIUUZn2ZZG2abUnPEdDPuT5lKS5FUfBUcWlHX0jtmtMsQwOwJo
+isNo9fS+8TRsWyGrNxO3L9KEu8ZSZK6frGMvJ+y6nJW0F6yTFVikUEMxYoHRZ+A0
+krenG9/ypHEAi54tSAhKLg/t0yae01M9rZn4YuztWdgu8uIEW9JA4tWDXyqJj7r8
+YZ8/A3oK9qiFRXdZ7oS8njnQzmi8fjFTWiTp7l3z9MHn6+DFwYJMN9adx2lgUvHg
+1Cc9fVOuYt6rSTEwURzJSOc+3uFxH1Cc6MI6b6CiZDe2ulHBh726ng+/8rFKhk4o
+z5BtRWCYPwDrkYok5VeAkdOgFvPrxvZXOKuvq7kCDQRY+5dUARAAvoopO5WMdMk0
+DY5su+KR4V3fR2byaCSoZjbirSZanAUj7PYa4qM8EcJ3zj4FsZDPymKPo/J5XIa5
+Cn2mj9K9n9Y3vVf+tUIl6/lKuJxkBsPSqzM/6gltWb0oA5QkBFX7+pZTW2pURbWo
+vpv6H1aMQJoYyBdbSx+Zu5d/6cVPwO1ZXPiNDcWiHdLVeFMNqL4LHdgMk+igzfQP
+22XTOMUB1CCF8umaR3qkrmyZsJZe4XyJQC709QENHqsUQwfz2grGA8pvKo/ZPImT
+sjDydc9EsHzwwTkD0t08b1ft7aseuYjrY7/cP8vWwYUaNTrLwZHcEv91gV0aIjE0
+U2tpV21Vm4p3f15kqRUPfP8lUiI0inFTp3pu/+4cTBJCmASSQyvoSTlwtGdmDgWF
+L+x7Db//xtvIvfmibVcazcL4eoaI9FKqZvMyxySLYXbibBO+G/g4aQHDCycyFOp8
+dtJ/skOb1ADufFHXnzkEUKJ+5H4YN1Qklw9WT9YwvY/vWcOI2chVD+L8x4+H/LMg
+7OBjVQIySlYHK1qvFSFgM2nNhMwxbtUMSpzXrfpJRdUZ76LZu3IqcV+WHCrCwxIZ
+n6CJ5QXC1423B38GsUterRzI7K9ug5Wvq4yuRrAK2MjgcgpOjsVv9wMwxQ4APtR/
+hQbXN4rLAXhrj0QcUMnEP4W7gqBXTVMAEQEAAYkCNgQYAQoAIAIbDBYhBKiMit0S
+mCjX6sAuUuIvm7/uNIWIBQJZOVxvAAoJEOIvm7/uNIWIWsIP/jAYpQcV/fn/DVs2
+vBfGTgFVKyaYIQJvXxVpapcytKWngWwb01K6r7x1d4vIrUbmAhDbA6n9Tv+NWgIY
+H1O67431TZPOP+iXRTSJyRLopcJXY8xrNFd2tviQ4sglo2sH4l8gar9zXOSh68a2
+foSzLb9ZCsaNnvwFagnNXLwzBFGM+v/U0xkwU2xU65sh/TiyQ1DKgG6JQ4v0TtGb
+ae/B0wJlOHtRXyCtrmmTshGLXQsJc8iduHyRo0we+rneG2yhy1BMig8MjQXY+8bR
+P0wVW4WqRrwfykXjAtW6Qx8wU6fz46q+ve2Qhq/Ok9KpHzlGMgP6c6mThAZLW+3c
+GIdQBZlFsZ2KL62C6s8ynbab7C6yCNT7k9zHAstoDNgPORx5m/mArmvUqMdXycLl
+XPwlTAuA8YUsOGxEkmrZW+GGgq53uy+TQGmWqkSeO5uyWSs5yXbRf292PC6ZzAQX
+xHsVFXScqibBU49ELWTqUvDUV7zMOwjQy+8VBSMrXGGsLE5tj5On+HPHi26vri5W
+e5QzYrai384FSRSpdtnqqCysIQGPb+D6AgLJHdtnp+C6/0OULRrRIHF7JfVeuTde
+sc2h5G07wqj7SCNBRZC5VP/0JvpdGUHfa4WGEDUCXEZiMXiIVLMblfS04pAr4qzB
+1vCWqzb8xCxA+wTd8lTDFobV/pV1uQINBFk4U2wBEADgRM0G+Dnl/wlrHNb9sr3/
+yW9tHA8weIbwvfly/NRW6LHSLIPvsLksabVQsYbUH6i2aK2ZlE3Oo+H/R2wrs7dm
+VCo57O4MbZk8Kb0fatN3qhq6g/+bNobVIexS5XN6g5JcmXM4ZzR8Q0rEd46oaxFW
+y8nDSw4RR1d+OU5/Z/LHR1VUTCQKU0Q1Jv//4YFVq/BEf6oj4SU9+/Li9kUo9f++
+i4PaiWyrQDm1FAYtMGW5MBKH3ohO1dlPgqNjdeqTjZfgvCMPdbyV6Xwtz7KVkCR0
++r9u7JefCCKUXL3Ap4VPtjhyCLoRuqJ+ZIp9XR2wf3rVGR6KRcLWPEXLkGfAPCs+
+7uAnfReBxNiWYt+FHuQpeyUld8u8E0G8u9FSf/l25A85QrQK0EUrVHdFc1q8tcCe
+q0EomoIPl7GnwtDIwYmkWtViCz0ivVRvNBUTXvq0XtI/9kLgcBgKfzap8dLeVSXJ
+rUhYlbcOZNnstzkmut1ce8my5TwSRzr2dxgUF8563cM3cdLu+C9bdMWvR/s4xwu6
+Q5opbehdFHd2Hj/Lnqv+xwNKNFkhZCHiyum8L/VKQAsboXgJ7/sB7CHsEcBif73R
+Wj3bFcMnPHHlJgxXB1aOH4kM+y6fF8wW/bGC/9gGiYXzovdbopv3B89oyuT73aoX
+g4TIPz6gv6Bg1OiGpfseGwARAQABiQI2BBgBCgAgAhsgFiEEqIyK3RKYKNfqwC5S
+4i+bv+40hYgFAlk5XBkACgkQ4i+bv+40hYiyTA//XnNjay+uK31lmven3gLQ/BRu
+liydFotXRugBMExTNhBmv279krSpREbvZfFLSXshMcTDclzCY4SrjOgrXfFS8Eqd
+RCnxmqVxBQsS7T2ObAMQQLp1yyFdupT2M7no5bnDWetH9c/CBZP0bZa4Ar3oFZXn
+CKvs2ACef1BJ8f5vgx7noi8bpggUP6uDZF1gyyB2yLZEvlV8AWz3hN1otzkSmVgx
+bvD9d+ugcqOgAMv6JpbxxiNvqMX2CVjjoBeQC5/uKCkJW51NnZzHXtDHqcKKKlbp
++WrkwxjoF05uqRDFXnnCTTC3PUrg1stYkn7M+52dAG8HAFBtReuTZoZ3AL1kdtsp
+XoG8PtWHGzu1NNrPrxCL6KLn5jzjLGkWR17uGhmflKwdvRgrbWO97XhZoHaocaTE
+1pbRBRhJ8bhmkw08Yaatt9qcUqJLPyj0cEeNIU0I5h9n7n1CpTyns3Ow28H4k1p9
+8Sf19UqEOaUIeGtU/Gf/7qbD8q6lmpgZ5/0/7wNoBYM5MdvfMDU0NJJ3qESLiEm6
+lCGq4nq+GsLyFmIXyTeFbsyO/Ion1WJdtrGvEgkQRuVUB8HqsFQ1b4+EJAiBTMsF
+z+yxUcZJNEngQegSMaNyXFptrFrXzZHOXFADYmuTgtk5SbF0V5am4IfineWNSmM+
+nlBNsWyazlZNA3vuAvc=
+=bioM
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=tbKl
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..10ca7c1
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,3 @@
+version=4
+opts="pgpmode=auto, uversionmangle=s/pre/~pre/;s/rc/~rc/" \
+ https://ftp.gnu.org/gnu/@PACKAGE@/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@
diff --git a/doc/.gitignore b/doc/.gitignore
new file mode 100644
index 0000000..3b7342f
--- /dev/null
+++ b/doc/.gitignore
@@ -0,0 +1,8 @@
+business.aux
+business.log
+business.nav
+business.out
+business.pdf
+business.snm
+business.toc
+business.vrb
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..90f6797
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,23 @@
+# This Makefile.am is in the public domain
+
+SUBDIRS = . doxygen
+
+man_MANS = \
+  anastasis-httpd.1 \
+  anastasis-reducer.1 \
+  anastasis.conf.5 \
+  anastasis-config.1
+
+info_TEXINFOS = \
+  anastasis.texi
+
+EXTRA_DIST = \
+ $(info_TEXINFOS) \
+ $(man_MANS) \
+ anastasis-figures/anastasis-db.png \
+ anastasis-figures/anastasis_reducer_backup.png \
+ anastasis-figures/anastasis_truth_payment.png \
+ anastasis-figures/anastasis_challenge_payment.png \
+ anastasis-figures/anastasis_reducer_recovery.png \
+ anastasis-figures/anastasis_challengecode.png \
+ anastasis-figures/anastasis_truth.png
diff --git a/doc/agpl.texi b/doc/agpl.texi
new file mode 100644
index 0000000..e6ee662
--- /dev/null
+++ b/doc/agpl.texi
@@ -0,0 +1,698 @@
+@c The GNU Affero General Public License.
+@center Version 3, 19 November 2007
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2007 Free Software Foundation, Inc. 
@url{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+@end display
+
+@heading Preamble
+
+The GNU Affero General Public License is a free, copyleft license
+for software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+The licenses for most software and other practical works are
+designed to take away your freedom to share and change the works.  By
+contrast, our General Public Licenses are intended to guarantee your
+freedom to share and change all versions of a program--to make sure it
+remains free software for all its users.
+
+When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate.  Many developers of free software are heartened and
+encouraged by the resulting cooperation.  However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community.  It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server.  Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals.  This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+The precise terms and conditions for copying, distribution and
+modification follow.
+
+@heading TERMS AND CONDITIONS
+
+@enumerate 0
+@item Definitions.
+
+``This License'' refers to version 3 of the GNU Affero General Public License.
+
+``Copyright'' also means copyright-like laws that apply to other kinds
+of works, such as semiconductor masks.
+
+``The Program'' refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as ``you''.  ``Licensees'' and
+``recipients'' may be individuals or organizations.
+
+To ``modify'' a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of
+an exact copy.  The resulting work is called a ``modified version'' of
+the earlier work or a work ``based on'' the earlier work.
+
+A ``covered work'' means either the unmodified Program or a work based
+on the Program.
+
+To ``propagate'' a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+To ``convey'' a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user
+through a computer network, with no transfer of a copy, is not
+conveying.
+
+An interactive user interface displays ``Appropriate Legal Notices'' to
+the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+@item Source Code.
+
+The ``source code'' for a work means the preferred form of the work for
+making modifications to it.  ``Object code'' means any non-source form
+of a work.
+
+A ``Standard Interface'' means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+The ``System Libraries'' of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+``Major Component'', in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+The ``Corresponding Source'' for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+The Corresponding Source need not include anything that users can
+regenerate automatically from other parts of the Corresponding Source.
+
+The Corresponding Source for a work in source code form is that same
+work.
+
+@item Basic Permissions.
+
+All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+You may make, run and propagate covered works that you do not convey,
+without conditions so long as your license otherwise remains in force.
+You may convey covered works to others for the sole purpose of having
+them make modifications exclusively for you, or provide you with
+facilities for running those works, provided that you comply with the
+terms of this License in conveying all material for which you do not
+control copyright.  Those thus making or running the covered works for
+you must do so exclusively on your behalf, under your direction and
+control, on terms that prohibit them from making any copies of your
+copyrighted material outside their relationship with you.
+
+Conveying under any other circumstances is permitted solely under the
+conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+@item Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such
+circumvention is effected by exercising rights under this License with
+respect to the covered work, and you disclaim any intention to limit
+operation or modification of the work as a means of enforcing, against
+the work's users, your or third parties' legal rights to forbid
+circumvention of technological measures.
+
+@item Conveying Verbatim Copies.
+
+You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+@item Conveying Modified Source Versions.
+
+You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these
+conditions:
+
+@enumerate a
+@item
+The work must carry prominent notices stating that you modified it,
+and giving a relevant date.
+
+@item
+The work must carry prominent notices stating that it is released
+under this License and any conditions added under section 7.  This
+requirement modifies the requirement in section 4 to ``keep intact all
+notices''.
+
+@item
+You must license the entire work, as a whole, under this License to
+anyone who comes into possession of a copy.  This License will
+therefore apply, along with any applicable section 7 additional terms,
+to the whole of the work, and all its parts, regardless of how they
+are packaged.  This License gives no permission to license the work in
+any other way, but it does not invalidate such permission if you have
+separately received it.
+
+@item
+If the work has interactive user interfaces, each must display
+Appropriate Legal Notices; however, if the Program has interactive
+interfaces that do not display Appropriate Legal Notices, your work
+need not make them do so.
+@end enumerate
+
+A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+``aggregate'' if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+@item  Conveying Non-Source Forms.
+
+You may convey a covered work in object code form under the terms of
+sections 4 and 5, provided that you also convey the machine-readable
+Corresponding Source under the terms of this License, in one of these
+ways:
+
+@enumerate a
+@item
+Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by the
+Corresponding Source fixed on a durable physical medium customarily
+used for software interchange.
+
+@item
+Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by a written
+offer, valid for at least three years and valid for as long as you
+offer spare parts or customer support for that product model, to give
+anyone who possesses the object code either (1) a copy of the
+Corresponding Source for all the software in the product that is
+covered by this License, on a durable physical medium customarily used
+for software interchange, for a price no more than your reasonable
+cost of physically performing this conveying of source, or (2) access
+to copy the Corresponding Source from a network server at no charge.
+
+@item
+Convey individual copies of the object code with a copy of the written
+offer to provide the Corresponding Source.  This alternative is
+allowed only occasionally and noncommercially, and only if you
+received the object code with such an offer, in accord with subsection
+6b.
+
+@item
+Convey the object code by offering access from a designated place
+(gratis or for a charge), and offer equivalent access to the
+Corresponding Source in the same way through the same place at no
+further charge.  You need not require recipients to copy the
+Corresponding Source along with the object code.  If the place to copy
+the object code is a network server, the Corresponding Source may be
+on a different server (operated by you or a third party) that supports
+equivalent copying facilities, provided you maintain clear directions
+next to the object code saying where to find the Corresponding Source.
+Regardless of what server hosts the Corresponding Source, you remain
+obligated to ensure that it is available for as long as needed to
+satisfy these requirements.
+
+@item
+Convey the object code using peer-to-peer transmission, provided you
+inform other peers where the object code and Corresponding Source of
+the work are being offered to the general public at no charge under
+subsection 6d.
+
+@end enumerate
+
+A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+A ``User Product'' is either (1) a ``consumer product'', which means any
+tangible personal property which is normally used for personal,
+family, or household purposes, or (2) anything designed or sold for
+incorporation into a dwelling.  In determining whether a product is a
+consumer product, doubtful cases shall be resolved in favor of
+coverage.  For a particular product received by a particular user,
+``normally used'' refers to a typical or common use of that class of
+product, regardless of the status of the particular user or of the way
+in which the particular user actually uses, or expects or is expected
+to use, the product.  A product is a consumer product regardless of
+whether the product has substantial commercial, industrial or
+non-consumer uses, unless such uses represent the only significant
+mode of use of the product.
+
+``Installation Information'' for a User Product means any methods,
+procedures, authorization keys, or other information required to
+install and execute modified versions of a covered work in that User
+Product from a modified version of its Corresponding Source.  The
+information must suffice to ensure that the continued functioning of
+the modified object code is in no case prevented or interfered with
+solely because modification has been made.
+
+If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or
+updates for a work that has been modified or installed by the
+recipient, or for the User Product in which it has been modified or
+installed.  Access to a network may be denied when the modification
+itself materially and adversely affects the operation of the network
+or violates the rules and protocols for communication across the
+network.
+
+Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+@item Additional Terms.
+
+``Additional permissions'' are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders
+of that material) supplement the terms of this License with terms:
+
+@enumerate a
+@item
+Disclaiming warranty or limiting liability differently from the terms
+of sections 15 and 16 of this License; or
+
+@item
+Requiring preservation of specified reasonable legal notices or author
+attributions in that material or in the Appropriate Legal Notices
+displayed by works containing it; or
+
+@item
+Prohibiting misrepresentation of the origin of that material, or
+requiring that modified versions of such material be marked in
+reasonable ways as different from the original version; or
+
+@item
+Limiting the use for publicity purposes of names of licensors or
+authors of the material; or
+
+@item
+Declining to grant rights under trademark law for use of some trade
+names, trademarks, or service marks; or
+
+@item
+Requiring indemnification of licensors and authors of that material by
+anyone who conveys the material (or modified versions of it) with
+contractual assumptions of liability to the recipient, for any
+liability that these contractual assumptions directly impose on those
+licensors and authors.
+@end enumerate
+
+All other non-permissive additional terms are considered ``further
+restrictions'' within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions; the
+above requirements apply either way.
+
+@item Termination.
+
+You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+@item Acceptance Not Required for Having Copies.
+
+You are not required to accept this License in order to receive or run
+a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+@item Automatic Licensing of Downstream Recipients.
+
+Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+An ``entity transaction'' is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+@item Patents.
+
+A ``contributor'' is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's ``contributor version''.
+
+A contributor's ``essential patent claims'' are all patent claims owned
+or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, ``control'' includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+In the following three paragraphs, a ``patent license'' is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To ``grant'' such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  ``Knowingly relying'' means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+A patent license is ``discriminatory'' if it does not include within the
+scope of its coverage, prohibits the exercise of, or is conditioned on
+the non-exercise of one or more of the rights that are specifically
+granted under this License.  You may not convey a covered work if you
+are a party to an arrangement with a third party that is in the
+business of distributing software, under which you make payment to the
+third party based on the extent of your activity of conveying the
+work, and under which the third party grants, to any of the parties
+who would receive the covered work from you, a discriminatory patent
+license (a) in connection with copies of the covered work conveyed by
+you (or copies made from those copies), or (b) primarily for and in
+connection with specific products or compilations that contain the
+covered work, unless you entered into that arrangement, or that patent
+license was granted, prior to 28 March 2007.
+
+Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+@item No Surrender of Others' Freedom.
+
+If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey
+a covered work so as to satisfy simultaneously your obligations under
+this License and any other pertinent obligations, then as a
+consequence you may not convey it at all.  For example, if you agree
+to terms that obligate you to collect a royalty for further conveying
+from those to whom you convey the Program, the only way you could
+satisfy both those terms and this License would be to refrain entirely
+from conveying the Program.
+
+@item Remote Network Interaction; Use with the GNU General Public License.
+
+Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users interacting
+with it remotely through a computer network (if your version supports such
+interaction) an opportunity to receive the Corresponding Source of your
+version by providing access to the Corresponding Source from a network
+server at no charge, through some standard or customary means of
+facilitating copying of software.  This Corresponding Source shall include
+the Corresponding Source for any work covered by version 3 of the GNU
+General Public License that is incorporated pursuant to the following
+paragraph.
+
+Notwithstanding any other provision of this License, you have permission to
+link or combine any covered work with a work licensed under version 3 of
+the GNU General Public License into a single combined work, and to convey
+the resulting work.  The terms of this License will continue to apply to
+the part which is the covered work, but the work with which it is combined
+will remain governed by version 3 of the GNU General Public License.
+
+@item Revised Versions of this License.
+
+The Free Software Foundation may publish revised and/or new versions
+of the GNU Affero General Public License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies that a certain numbered version of the GNU Affero General Public
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that numbered version or
+of any later version published by the Free Software Foundation.  If
+the Program does not specify a version number of the GNU Affero General
+Public License, you may choose any version ever published by the Free
+Software Foundation.
+
+If the Program specifies that a proxy can decide which future versions
+of the GNU Affero General Public License can be used, that proxy's public
+statement of acceptance of a version permanently authorizes you to
+choose that version for the Program.
+
+Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+@item Disclaimer of Warranty.
+
+THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+@item Limitation of Liability.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
+CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
+NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
+LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
+TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
+PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+@item Interpretation of Sections 15 and 16.
+
+If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+@end enumerate
+
+@heading END OF TERMS AND CONDITIONS
+
+@heading How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the ``copyright'' line and a pointer to where the full notice is found.
+
+@smallexample
+@var{one line to give the program's name and a brief idea of what it does.}
+Copyright (C) @var{year} @var{name of author}
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or (at
+your option) any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program.  If not, see @url{http://www.gnu.org/licenses/}.
+@end smallexample
+
+Also add information on how to contact you by electronic and paper mail.
+
+If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source.  For example, if your program is a web application, its
+interface could display a ``Source'' link that leads users to an archive
+of the code.  There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+You should also get your employer (if you work as a programmer) or school,
+if any, to sign a ``copyright disclaimer'' for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+@url{http://www.gnu.org/licenses/}.
diff --git a/doc/anastasis-config.1 b/doc/anastasis-config.1
new file mode 100644
index 0000000..bb1512d
--- /dev/null
+++ b/doc/anastasis-config.1
@@ -0,0 +1,123 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "ANASTASIS-CONFIG" "1" "Jul 18, 2021" "0.0" "Anastasis"
+.SH NAME
+anastasis-config \- anastasis configuration file manipulation
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBanastasis\-config\fP
+[\fB\-b\fP\ \fIbackend\fP\ |\ \fB––supported\-backend=\fP\fIbackend\fP]
+[\fB\-c\fP\ \fIfilename\fP\ |\ \fB––config=\fP\fIfilename\fP]
+[\fB\-f\fP\ |\ \fB––filename\fP]
+[\fB\-F\fP\ |\ \fB––full\fP]
+[\fB\-h\fP\ |\ \fB––help\fP]
+[\fB\-L\fP\ \fIloglevel\fP\ |\ \fB––loglevel=\fP\fIloglevel\fP]
+[\fB\-l\fP\ \fIfilename\fP\ |\ \fB––logfile=\fP‌\fIfilename\fP]
+[\fB\-o\fP\ \fIoption\fP\ |\ \fB––option=\fP\fIoption\fP]
+[\fB\-r\fP\ |\ \fB––rewrite\fP]
+[\fB\-S\fP\ |\ \fB––list\-sections\fP]
+[\fB\-s\fP\ \fIsection\fP\ |\ \fB––section=\fP\fIsection\fP]
+[\fB\-V\fP\ \fIvalue\fP\ |\ \fB––value=\fP\fIvalue\fP]
+[\fB\-v\fP\ |\ \fB––version\fP]
+.SH DESCRIPTION
+.sp
+\fBanastasis\-config\fP can be used to read or modify Anastasis configuration 
files.
+.INDENT 0.0
+.TP
+\fB\-b\fP \fIBACKEND\fP | \fB––supported\-backend=\fP\fIBACKEND\fP
+Tests whether the specified \fIBACKEND\fP is supported by the current 
installation.
+The backend must match the name of a plugin, i.e. “namestore_postgres” for
+the Postgres database backend of the “NAMESTORE” service.  If \fIBACKEND\fP is
+supported, anastasis\-config will return a status code of 0 (success), 
otherwise
+77 (unsupported).  When this option is specified, no other options may be
+specified. Specifying this option together with other options will cause
+anastasis\-config to return a status code of 1 (error).
+.TP
+\fB\-c\fP \fIFILENAME\fP | \fB––config=\fP\fIFILENAME\fP
+Use the configuration file \fIFILENAME\fP\&.
+.TP
+\fB\-f\fP | \fB––filename\fP
+Try to perform expansions as if the option values represent filenames (will
+also be applied even if the option is not really a filename).
+.TP
+\fB\-F\fP | \fB––full\fP
+Write the full configuration file, not just the differences to the defaults.
+.TP
+\fB\-h\fP | \fB––help\fP
+Print short help on options.
+.TP
+\fB\-L\fP \fILOGLEVEL\fP | \fB––loglevel=\fP\fILOGLEVEL\fP
+Use \fILOGLEVEL\fP for logging.
+Valid values are \fBDEBUG\fP, \fBINFO\fP, \fBWARNING\fP, and \fBERROR\fP\&.
+.TP
+\fB\-l\fP \fIFILENAME\fP | \fB––logfile=\fP‌\fIFILENAME\fP
+Send logging output to \fIFILENAME\fP\&.
+.TP
+\fB\-o\fP \fIOPTION\fP | \fB––option=\fP\fIOPTION\fP
+Which configuration option should be accessed or edited.  Required to set a
+value.  If not given, all values of a given section will be printed in the
+format “OPTION = VALUE”.
+.TP
+\fB\-r\fP | \fB––rewrite\fP
+Write the configuration file even if nothing changed. Will remove all comments!
+.TP
+\fB\-S\fP | \fB––list\-sections\fP
+List available configuration sections for use with \fB\-\-section\fP\&.
+.TP
+\fB\-s\fP \fISECTION\fP | \fB––section=\fP\fISECTION\fP
+Which configuration section should be accessed or edited.
+Required option.
+.TP
+\fB\-V\fP \fIVALUE\fP | \fB––value=\fP\fIVALUE\fP
+Configuration value to store in the given section under the given option.
+Must only be given together with \fB\-s\fP and \fB\-o\fP options.
+.INDENT 7.0
+.TP
+.B Note:
+Changing the configuration file with \fB\-V\fP will remove comments
+and may reorder sections and remove \fB@INLINE@\fP directives.
+.UNINDENT
+.TP
+\fB\-v\fP | \fB––version\fP
+Print Anastasis version number.
+.UNINDENT
+.SH SEE ALSO
+.sp
+anastasis.conf(5)
+.SH BUGS
+.sp
+Report bugs by using \fI\%https://bugs.anastasis.lu\fP or by sending electronic
+mail to <\fI\%contact@anastasis.lu\fP>.
+.SH AUTHOR
+Anastasis SARL
+.SH COPYRIGHT
+2020-2021 Anastasis SARL (AGPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/doc/anastasis-figures/anastasis-db.png 
b/doc/anastasis-figures/anastasis-db.png
new file mode 100644
index 0000000..03eed9d
Binary files /dev/null and b/doc/anastasis-figures/anastasis-db.png differ
diff --git a/doc/anastasis-figures/anastasis_challenge_payment.png 
b/doc/anastasis-figures/anastasis_challenge_payment.png
new file mode 100644
index 0000000..a0593eb
Binary files /dev/null and 
b/doc/anastasis-figures/anastasis_challenge_payment.png differ
diff --git a/doc/anastasis-figures/anastasis_challengecode.png 
b/doc/anastasis-figures/anastasis_challengecode.png
new file mode 100644
index 0000000..fc30f4f
Binary files /dev/null and b/doc/anastasis-figures/anastasis_challengecode.png 
differ
diff --git a/doc/anastasis-figures/anastasis_reducer_backup.png 
b/doc/anastasis-figures/anastasis_reducer_backup.png
new file mode 100644
index 0000000..53daf7c
Binary files /dev/null and b/doc/anastasis-figures/anastasis_reducer_backup.png 
differ
diff --git a/doc/anastasis-figures/anastasis_reducer_recovery.png 
b/doc/anastasis-figures/anastasis_reducer_recovery.png
new file mode 100644
index 0000000..b08c763
Binary files /dev/null and 
b/doc/anastasis-figures/anastasis_reducer_recovery.png differ
diff --git a/doc/anastasis-figures/anastasis_truth.png 
b/doc/anastasis-figures/anastasis_truth.png
new file mode 100644
index 0000000..7f23fa2
Binary files /dev/null and b/doc/anastasis-figures/anastasis_truth.png differ
diff --git a/doc/anastasis-figures/anastasis_truth_payment.png 
b/doc/anastasis-figures/anastasis_truth_payment.png
new file mode 100644
index 0000000..70a6b3d
Binary files /dev/null and b/doc/anastasis-figures/anastasis_truth_payment.png 
differ
diff --git a/doc/anastasis-httpd.1 b/doc/anastasis-httpd.1
new file mode 100644
index 0000000..131be44
--- /dev/null
+++ b/doc/anastasis-httpd.1
@@ -0,0 +1,78 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "ANASTASIS-HTTPD" "1" "Jul 18, 2021" "0.0" "Anastasis"
+.SH NAME
+anastasis-httpd \- anastasis HTTP backend
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBanastasis\-httpd\fP
+.SH DESCRIPTION
+.sp
+Banastasis\-httpd is a command line tool to run the Anastasis (HTTP
+backend).  The required configuration and database must exist before
+running this command.
+.sp
+Its options are as follows:
+.INDENT 0.0
+.TP
+\fB\-C\fP | \fB–connection\-close\fP
+Force each HTTP connection to be closed after each request.
+.TP
+\fB\-c\fP \fIFILENAME\fP | \fB––config=\fP‌\fIFILENAME\fP
+Use the configuration and other resources for the merchant to operate
+from FILENAME.
+.TP
+\fB\-h\fP | \fB––help\fP
+Print short help on options.
+.TP
+\fB\-v\fP | \fB––version\fP
+Print version information.
+.UNINDENT
+.SH SIGNALS
+.sp
+\fBanastasis\-httpd\fP responds to the following signals:
+.INDENT 0.0
+.TP
+.B \fBSIGTERM\fP
+Sending a SIGTERM to the process will cause it to shutdown cleanly.
+.UNINDENT
+.SH SEE ALSO
+.sp
+anastasis\-dbinit(1), anastasis\-config(1), anastasis\-gtk(1), 
anastasis\-reducer(1)
+.SH BUGS
+.sp
+Report bugs by using \fI\%https://bugs.anastasis.lu\fP or by sending
+electronic mail to <\fI\%contact@anastasis.lu\fP>.
+.SH AUTHOR
+Anastasis SARL
+.SH COPYRIGHT
+2020-2021 Anastasis SARL (AGPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/doc/anastasis-reducer.1 b/doc/anastasis-reducer.1
new file mode 100644
index 0000000..8a79075
--- /dev/null
+++ b/doc/anastasis-reducer.1
@@ -0,0 +1,93 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "ANASTASIS-REDUCER" "1" "Jul 18, 2021" "0.0" "Anastasis"
+.SH NAME
+anastasis-reducer \- anastasis CLI frontend
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBanastasis\-reducer\fP
+[\fB\-a**_*JSON*_|_\fP–arguments=\fIJSON\fP]
+[\fB\-b**_|_\fP–backup]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB––config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB––help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB––loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB––logfile=\fP‌\fIFILENAME\fP]
+[\fB\-r**_|_\fP–restore]
+[\fB\-v\fP\ |\ \fB––version\fP] COMMAND
+.SH DESCRIPTION
+.sp
+\fBanastasis\-reducer\fP is a command\-line tool to run Anastasis
+key recover and backup operations using a reducer\-style interface.
+The reducer will read the current state from standard input and
+write the resulting state to standard output.  A COMMAND must
+be given on the command line.  The arguments (if any) are to
+be given in JSON format to the \fB\-a\fP option.  A list of
+commands can be found in the \&../reducer
+chapter.
+.INDENT 0.0
+.TP
+\fB\-a\fP \fIJSON\fP | \fB––arguments=\fP\fIJSON\fP
+Provide JSON inputs for the given command.
+.TP
+\fB\-b\fP | \fB–backup\fP
+Begin fresh reducer operation for a back up operation.
+.TP
+\fB\-c\fP \fIFILENAME\fP | \fB––config=\fP‌\fIFILENAME\fP
+Use the configuration from \fIFILENAME\fP\&.
+.TP
+\fB\-h\fP | \fB––help\fP
+Print short help on options.
+.TP
+\fB\-L\fP \fILOGLEVEL\fP | \fB––loglevel=\fP‌\fILOGLEVEL\fP
+Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
+\fBWARNING\fP, \fBERROR\fP\&.
+.TP
+\fB\-l\fP \fIFILENAME\fP | \fB––logfile=\fP‌\fIFILENAME\fP
+Send logging output to \fIFILENAME\fP\&.
+.TP
+\fB\-r\fP | \fB–restore\fP
+Begin fresh reducer operation for a restore operation.
+.TP
+\fB\-v\fP | \fB––version\fP
+Print version information.
+.UNINDENT
+.SH SEE ALSO
+.sp
+anastasis\-gtk(1), anastasis\-httpd(1), anastasis.conf(5).
+.SH BUGS
+.sp
+Report bugs by using \fI\%https://bugs.anastasis.lu/\fP or by sending 
electronic
+mail to <\fI\%contact@anastasis.lu\fP>.
+.SH AUTHOR
+Anastasis SARL
+.SH COPYRIGHT
+2020-2021 Anastasis SARL (AGPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/doc/anastasis.conf.5 b/doc/anastasis.conf.5
new file mode 100644
index 0000000..446531a
--- /dev/null
+++ b/doc/anastasis.conf.5
@@ -0,0 +1,151 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "ANASTASIS.CONF" "5" "Jul 18, 2021" "0.0" "Anastasis"
+.SH NAME
+anastasis.conf \- anastasis configuration file
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH DESCRIPTION
+.sp
+The configuration file is line\-oriented.
+Blank lines and whitespace at the beginning and end of a line are ignored.
+Comments start with \fB#\fP or \fB%\fP in the first column
+(after any beginning\-of\-line whitespace) and go to the end of the line.
+.sp
+The file is split into sections.
+Every section begins with “[SECTIONNAME]” and
+contains a number of options of the form “OPTION=VALUE”.
+There may be whitespace around the \fB=\fP (equal sign).
+Section names and options are \fIcase\-insensitive\fP\&.
+.sp
+The values, however, are \fIcase\-sensitive\fP\&.
+In particular, boolean values are one of \fBYES\fP or \fBNO\fP\&.
+Values can include whitespace by surrounding
+the entire value with \fB"\fP (double quote).
+Note, however, that there are no escape characters in such strings;
+all characters between the double quotes (including other double quotes)
+are taken verbatim.
+.sp
+Values that represent filenames can begin with a \fB/bin/sh\fP\-like
+variable reference.
+This can be simple, such as \fB$TMPDIR/foo\fP, or complex,
+such as \fB${TMPDIR:\-${TMP:\-/tmp}}/foo\fP\&.
+See \fB[PATHS]\fP (below).
+.sp
+Values that represent a time duration are represented as a series of one or
+more \fBNUMBER UNIT\fP pairs, e.g. \fB60 s\fP, \fB4 weeks 1 day\fP, \fB5 years 
2 minutes\fP\&.
+.sp
+Values that represent an amount are in the usual amount syntax:
+\fBCURRENCY:VALUE.FRACTION\fP, e.g. \fBEUR:1.50\fP\&.
+The \fBFRACTION\fP portion may extend up to 8 places.
+.sp
+Files containing default values for many of the options described below
+are installed under \fB$ANASTASIS_PREFIX/share/taler/config.d/\fP\&.
+The configuration file given with \fB\-c\fP to Anastasis binaries
+overrides these defaults.
+.sp
+A configuration file may include another, by using the \fB@INLINE@\fP 
directive,
+for example, in \fBmain.conf\fP, you could write \fB@INLINE@ sub.conf\fP to
+include the entirety of \fBsub.conf\fP at that point in \fBmain.conf\fP\&.
+.. TODO: Document ‘anastasis\-config \-V’ in light of ‘@INLINE@’ in 
taler\-config(1).
+.SS GLOBAL OPTIONS
+.sp
+The following options are from the \fB[anastasis]\fP section and used by
+the \fBanastasis\-httpd\fP service.
+.INDENT 0.0
+.TP
+.B PAYMENT_BACKEND_URL
+Base\-URL of the Taler merchant backend instance to use for payments.
+FIXME: How do we pass the access token?
+.TP
+.B ANNUAL_FEE
+Annual fee to be paid for policy uploads, i.e. “EUR:1.5”.
+.TP
+.B TRUTH_UPLOAD_FEE
+Annual fee to be paid for truth uploads, i.e. “EUR:1.5”.
+.TP
+.B DB
+Database backend to use, only \fBpostgres\fP is supported right now.
+.TP
+.B UPLOAD_LIMIT_MB
+Maximum upload size for policy uploads in megabytes. Default is 1.
+.TP
+.B ANNUAL_POLICY_UPLOAD_LIMIT
+Maximum number of policies uploaded per year of service. Default is 42.
+.TP
+.B BUSINESS_NAME
+Name of the business.
+.TP
+.B SERVER_SALT
+Must be set to a high\-entropy random server salt that the provider must never
+change after the initial configuration.
+.TP
+.B PORT
+TCP port on which the HTTP service should listen on.
+.UNINDENT
+.SS Authorization options
+.sp
+For each active authorization plugin, options must be configured in
+a section called \fB[authorization\-$PLUGIN]\fP where \fB$PLUGIN\fP is
+the name of the authorization plugin.
+.INDENT 0.0
+.TP
+.B COST
+Fee the user has to pay to obtain a challenge from this
+authorization plugin during recovery.
+.TP
+.B ENABLED
+\fByes\fP to enable this plugin, \fBno\fP to disable.
+.TP
+.B COMMAND
+Helper command to run (only relevant for some plugins).
+.UNINDENT
+.SS Postgres database configuration
+.sp
+The following options must be in the section \fB[statis\-postgres]\fP if
+\fBpostgress\fP was used for the database under \fBDB\fP in the
+\fB[anastasis]\fP section.
+.INDENT 0.0
+.TP
+.B CONFIG
+Path under which the Postgres database is that the service
+should use, i.e. \fBpostgres://anastasis\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+anastasis\-httpd(1), anastasis\-config(1)
+.SH BUGS
+.sp
+Report bugs by using \fI\%https://bugs.anastasis.lu/\fP or by sending 
electronic
+mail to <\fI\%contact@anastasis.lu\fP>.
+.SH AUTHOR
+Anastasis SARL
+.SH COPYRIGHT
+2020-2021 Anastasis SARL (AGPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/doc/anastasis.texi b/doc/anastasis.texi
new file mode 100644
index 0000000..a5d8b11
--- /dev/null
+++ b/doc/anastasis.texi
@@ -0,0 +1,6093 @@
+\input texinfo   @c -*-texinfo-*-
+@c %**start of header
+@setfilename anastasis.info
+@documentencoding UTF-8
+@ifinfo
+@*Generated by Sphinx 3.4.3.@*
+@end ifinfo
+@settitle Anastasis Manual
+@defindex ge
+@paragraphindent 0
+@exampleindent 4
+@finalout
+@dircategory CATEGORY
+@direntry
+* MENU ENTRY: (anastasis.info). DESCRIPTION
+@end direntry
+
+@definfoenclose strong,`,'
+@definfoenclose emph,`,'
+@c %**end of header
+
+@copying
+@quotation
+GNU Anastasis 0.0.0, Jul 30, 2021
+
+Anastasis SARL
+
+Copyright @copyright{} 2020-2021 Anastasis SARL (AGPLv3+ or GFDL 1.3+)
+@end quotation
+
+@end copying
+
+@titlepage
+@title Anastasis Manual
+@insertcopying
+@end titlepage
+@contents
+
+@c %** start of user preamble
+
+@c %** end of user preamble
+
+@ifnottex
+@node Top
+@top Anastasis Manual
+@insertcopying
+@end ifnottex
+
+@c %**start of body
+@anchor{index doc}@anchor{0}
+@c This file is part of GNU Anastasis.
+@c Copyright (C) 2020-2021 Anastasis SARL
+@c
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more 
details.
+@c
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c
+@c @author Christian Grothoff
+
+GNU Anastasis is Free Software protocol and implementation that allows
+users to securely deposit @strong{core secrets} with an open set of escrow
+providers and to recover these secrets if their original copies are
+lost.
+
+Anastasis is intended for users that want to make backups of key
+material, such as OpenPGP encryption keys, hard disk encryption keys
+or master keys of electronic wallets. Anastasis is NOT intended to
+store large amounts of secret data, it is only designed to safeguard
+key material.
+
+Anastasis solves the issue of keeping key material both available
+to the authorized user(s), and confidential from anyone else.
+
+With Anastasis, the @strong{core secrets} are protected from the Anastasis
+escrow providers by encrypting each with a @strong{master key}.  The
+@strong{master key} can be split and distributed across the escrow
+providers to ensure that no single escrow provider can recover the
+@strong{master key} on its own.  Which subset(s) of Anastasis providers
+must be contacted to recover a @strong{master key} is freely configurable.
+
+With Anastasis, users can reliably recover their @strong{core secret},
+while Anastasis makes this difficult for everyone else.  This is even
+true if the user is unable to reliably remember any secret with
+sufficiently high entropy: Anastasis does not simply reduce the
+problem to encrypting the @strong{core secret} using some other key
+material in possession of the user.
+
+@menu
+* Documentation Overview::
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+Documentation Overview
+
+* Introduction::
+* Installation::
+* Configuration::
+* Cryptography::
+* REST API::
+* Reducer API::
+* Authentication Methods::
+* DB Schema::
+* Design Documents::
+* Anastasis licensing information::
+* Man Pages::
+* Complete Index::
+* GNU Free Documentation License::
+
+Introduction
+
+* User Identifiers::
+* Adversary models::
+* The recovery document::
+
+Installation
+
+* Installing from source::
+* Installing Anastasis binary packages on Debian::
+* Installing Anastasis binary packages on Ubuntu::
+
+Installing from source
+
+* Installing GNUnet::
+* Installing the Taler Exchange::
+* Installing the Taler Merchant::
+* Installing Anastasis::
+* Installing GNUnet-gtk::
+* Installing Anastasis-gtk::
+
+Installing Anastasis binary packages on Debian
+
+* Installing the graphical front-end::
+* Installing the backend::
+
+Installing Anastasis binary packages on Ubuntu
+
+* Installing the graphical front-end: Installing the graphical front-end<2>.
+* Installing the backend: Installing the backend<2>.
+
+Configuration
+
+* Configuration format::
+* Using anastasis-config::
+
+Cryptography
+
+* Key derivations::
+* Key Usage::
+* Availability Considerations::
+
+Key derivations
+
+* Verification::
+* Encryption::
+
+Key Usage
+
+* Encryption: Encryption<2>.
+* Signatures::
+
+REST API
+
+* HTTP Request and Response::
+* Protocol Version Ranges::
+* Common encodings::
+
+Common encodings
+
+* Binary Data::
+* Hash codes::
+* Large numbers::
+* Timestamps::
+* Integers::
+* Objects::
+* Keys::
+* Signatures: Signatures<2>.
+* Amounts::
+* Time::
+* Cryptographic primitives::
+* Signatures: Signatures<3>.
+* Receiving Configuration::
+* Receiving Terms of Service::
+* Manage policy::
+* Managing truth::
+
+Reducer API
+
+* States::
+* Backup Reducer::
+* Recovery Reducer::
+* Reducer transitions::
+
+Reducer transitions
+
+* Initial state::
+* Common transitions::
+* Backup transitions::
+* Recovery transitions::
+
+Authentication Methods
+
+* SMS (sms): SMS sms.
+* Email verification (email): Email verification email.
+* Video identification (vid): Video identification vid.
+* Security question (qa): Security question qa.
+* Snail mail verification (post): Snail mail verification post.
+
+Design Documents
+
+* Design Doc 001; Anastasis User Experience: Design Doc 001 Anastasis User 
Experience.
+* Template::
+
+Design Doc 001: Anastasis User Experience
+
+* Summary::
+* Motivation::
+* Setup Steps::
+* Show Service Status After Setup::
+* Recovery Steps::
+
+Setup Steps
+
+* Entry point; Settings: Entry point Settings.
+* Providing Identification::
+* Add Authentication Methods::
+* Confirm/Change Service Providers::
+* Defining Recovery Options::
+* Pay for Setup::
+
+Recovery Steps
+
+* Entry point; Settings: Entry point Settings<2>.
+* Providing Identification: Providing Identification<2>.
+* Select Authentication Challenge::
+* Payment::
+* Enter Challenge Response::
+* Success::
+
+Template
+
+* Summary: Summary<2>.
+* Motivation: Motivation<2>.
+* Requirements::
+* Proposed Solution::
+* Alternatives::
+* Drawbacks::
+* Discussion / Q&A::
+
+Anastasis licensing information
+
+* Anastasis (git;//git.taler.net/anastasis): Anastasis git //git taler 
net/anastasis.
+* Anastasis-gtk (git;//git.taler.net/anastasis-gtk): Anastasis-gtk git //git 
taler net/anastasis-gtk.
+* Documentation::
+
+Anastasis (git://git.taler.net/anastasis)
+
+* Runtime dependencies::
+
+Anastasis-gtk (git://git.taler.net/anastasis-gtk)
+
+* Runtime dependencies: Runtime dependencies<2>.
+
+Man Pages
+
+* anastasis-config(1): anastasis-config 1.
+* anastasis-gtk(1): anastasis-gtk 1.
+* anastasis-httpd(1): anastasis-httpd 1.
+* anastasis-reducer(1): anastasis-reducer 1.
+* anastasis.conf(5): anastasis conf 5.
+
+anastasis-config(1)
+
+* Synopsis::
+* Description::
+* See Also::
+* Bugs::
+
+anastasis-gtk(1)
+
+* Synopsis: Synopsis<2>.
+* Description: Description<2>.
+* See Also: See Also<2>.
+* Bugs: Bugs<2>.
+
+anastasis-httpd(1)
+
+* Synopsis: Synopsis<3>.
+* Description: Description<3>.
+* Signals::
+* See also::
+* Bugs: Bugs<3>.
+
+anastasis-reducer(1)
+
+* Synopsis: Synopsis<4>.
+* Description: Description<4>.
+* See Also: See Also<3>.
+* Bugs: Bugs<4>.
+
+anastasis.conf(5)
+
+* Description: Description<5>.
+* SEE ALSO::
+* BUGS::
+
+Description
+
+* GLOBAL OPTIONS::
+* Authorization options::
+* Postgres database configuration::
+
+GNU Free Documentation License
+
+* 0. PREAMBLE: 0 PREAMBLE.
+* 1. APPLICABILITY AND DEFINITIONS: 1 APPLICABILITY AND DEFINITIONS.
+* 2. VERBATIM COPYING: 2 VERBATIM COPYING.
+* 3. COPYING IN QUANTITY: 3 COPYING IN QUANTITY.
+* 4. MODIFICATIONS: 4 MODIFICATIONS.
+* 5. COMBINING DOCUMENTS: 5 COMBINING DOCUMENTS.
+* 6. COLLECTIONS OF DOCUMENTS: 6 COLLECTIONS OF DOCUMENTS.
+* 7. AGGREGATION WITH INDEPENDENT WORKS: 7 AGGREGATION WITH INDEPENDENT WORKS.
+* 8. TRANSLATION: 8 TRANSLATION.
+* 9. TERMINATION: 9 TERMINATION.
+* 10. FUTURE REVISIONS OF THIS LICENSE: 10 FUTURE REVISIONS OF THIS LICENSE.
+* 11. RELICENSING: 11 RELICENSING.
+* ADDENDUM; How to use this License for your documents: ADDENDUM How to use 
this License for your documents.
+
+@end detailmenu
+@end menu
+
+@node Documentation Overview,,Top,Top
+@anchor{index anastasis-documentation}@anchor{1}@anchor{index 
documentation-overview}@anchor{2}
+@chapter Documentation Overview
+
+
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
+
+@menu
+* Introduction::
+* Installation::
+* Configuration::
+* Cryptography::
+* REST API::
+* Reducer API::
+* Authentication Methods::
+* DB Schema::
+* Design Documents::
+* Anastasis licensing information::
+* Man Pages::
+* Complete Index::
+* GNU Free Documentation License::
+
+@end menu
+
+@node Introduction,Installation,,Documentation Overview
+@anchor{introduction doc}@anchor{3}@anchor{introduction introduction}@anchor{4}
+@section Introduction
+
+
+To understand how Anastasis works, you need to understand three key
+concepts: user identifiers, our adversary model and the role of the
+recovery document.
+
+@menu
+* User Identifiers::
+* Adversary models::
+* The recovery document::
+
+@end menu
+
+@node User Identifiers,Adversary models,,Introduction
+@anchor{introduction user-identifiers}@anchor{5}
+@subsection User Identifiers
+
+
+To uniquely identify users, an “unforgettable” @strong{identifier} is used.  
This
+identifier should be difficult to guess for anybody but the user. However, the
+@strong{identifier} is not expected to have sufficient entropy or secrecy to be
+cryptographically secure. Examples for such identifier would be a
+concatenation of the full name of the user and their social security or
+passport number(s).  For Swiss citizens, the AHV number could also be used.
+
+@node Adversary models,The recovery document,User Identifiers,Introduction
+@anchor{introduction adversary-models}@anchor{6}
+@subsection Adversary models
+
+
+The adversary model of Anastasis has two types of adversaries: weak
+adversaries which do not know the user’s @strong{identifier}, and strong
+adversaries which somehow do know a user’s @strong{identifier}.  For weak
+adversaries the system guarantees full confidentiality.  For strong
+adversaries, breaking confidentiality additionally requires that Anastasis
+escrow providers must have colluded.  The user is able to specify a set of
+@strong{policies} which determine which Anastasis escrow providers would need 
to
+collude to break confidentiality. These policies also set the bar for the user
+to recover their core secret.
+
+@node The recovery document,,Adversary models,Introduction
+@anchor{introduction the-recovery-document}@anchor{7}
+@subsection The recovery document
+
+
+A @strong{recovery document} includes all of the information a user needs to
+recover access to their core secret.  It specifies a set of @strong{escrow
+methods}, which specify how the user should convince the Anastasis server
+that they are “real”.  Escrow methods can for example include SMS-based
+verification, video identification or a security question.  For each escrow
+method, the Anastasis server is provided with @strong{truth}, that is data the
+Anastasis operator may learn during the recovery process to authenticate the
+user.  Examples for truth would be a phone number (for SMS), a picture of the
+user (for video identification), or the (hash of) a security answer.  A strong
+adversary is assumed to be able to learn the truth, while weak adversaries
+must not.  In addition to a set of escrow methods and associated Anastasis
+server operators, the @strong{recovery document} also specifies 
@strong{policies}, which
+describe the combination(s) of the escrow methods that suffice to obtain
+access to the core secret.  For example, a @strong{policy} could say that the
+escrow methods (A and B) suffice, and a second policy may permit (A and C).  A
+different user may choose to use the policy that (A and B and C) are all
+required.  Anastasis imposes no limit on the number of policies in a
+@strong{recovery document}, or the set of providers or escrow methods involved 
in
+guarding a user’s secret.  Weak adversaries must not be able to deduce
+information about a user’s @strong{recovery document} (except for its length, 
which
+may be exposed to an adversary which monitors the user’s network traffic).
+
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
+
+@node Installation,Configuration,Introduction,Documentation Overview
+@anchor{installation doc}@anchor{8}@anchor{installation installation}@anchor{9}
+@section Installation
+
+
+Please install the following packages before proceeding with the
+exchange compilation.
+
+
+@itemize -
+
+@item
+libsqlite3 >= 3.16.2
+
+@item
+GNU libunistring >= 0.9.3
+
+@item
+libcurl >= 7.26 (or libgnurl >= 7.26)
+
+@item
+libqrencode >= 4.0.0
+
+@item
+GNU libgcrypt >= 1.6
+
+@item
+libsodium >= 1.0
+
+@item
+libargon2 >= 20171227
+
+@item
+libjansson >= 2.7
+
+@item
+Postgres >= 9.6, including libpq
+
+@item
+GNU libmicrohttpd >= 0.9.71
+
+@item
+GNUnet >= 0.14.0 (from source 
tarball@footnote{http://ftpmirror.gnu.org/gnunet/})
+
+@item
+GNU Taler exchange
+
+@item
+GNU Taler merchant backend
+@end itemize
+
+Except for the last two, these are available in most GNU/Linux distributions
+and should just be installed using the respective package manager.
+
+@menu
+* Installing from source::
+* Installing Anastasis binary packages on Debian::
+* Installing Anastasis binary packages on Ubuntu::
+
+@end menu
+
+@node Installing from source,Installing Anastasis binary packages on 
Debian,,Installation
+@anchor{installation installing-from-source}@anchor{a}
+@subsection Installing from source
+
+
+The following instructions will show how to install libgnunetutil and
+the GNU Taler exchange from source.
+
+@menu
+* Installing GNUnet::
+* Installing the Taler Exchange::
+* Installing the Taler Merchant::
+* Installing Anastasis::
+* Installing GNUnet-gtk::
+* Installing Anastasis-gtk::
+
+@end menu
+
+@node Installing GNUnet,Installing the Taler Exchange,,Installing from source
+@anchor{installation installing-gnunet}@anchor{b}
+@subsubsection Installing GNUnet
+
+
+Before you install GNUnet, you must download and install the dependencies
+mentioned in the previous section, otherwise the build may succeed, but could
+fail to export some of the tooling required by GNU Taler.
+
+To install GNUnet, unpack the tarball and change
+into the resulting directory, then proceed as follows:
+
+@example
+$ ./configure [--prefix=GNUNETPFX]
+$ # Each dependency can be fetched from non standard locations via
+$ # the '--with-<LIBNAME>' option. See './configure --help'.
+$ make
+# make install
+# ldconfig
+@end example
+
+If you did not specify a prefix, GNUnet will install to @code{/usr/local},
+which requires you to run the last step as @code{root}.
+The @code{ldconfig} command (also run as @code{root}) makes the
+shared object libraries (@code{.so} files)
+visible to the various installed programs.
+
+@node Installing the Taler Exchange,Installing the Taler Merchant,Installing 
GNUnet,Installing from source
+@anchor{installation installing-the-taler-exchange}@anchor{c}
+@subsubsection Installing the Taler Exchange
+
+
+After installing GNUnet, unpack the GNU Taler exchange tarball,
+change into the resulting directory, and proceed as follows:
+
+@example
+$ ./configure [--prefix=EXCHANGEPFX] \
+              [--with-gnunet=GNUNETPFX]
+$ # Each dependency can be fetched from non standard locations via
+$ # the '--with-<LIBNAME>' option. See './configure --help'.
+$ make
+# make install
+@end example
+
+If you did not specify a prefix, the exchange will install to 
@code{/usr/local},
+which requires you to run the last step as @code{root}.  You have to specify
+@code{--with-gnunet=/usr/local} if you installed GNUnet to @code{/usr/local} 
in the
+previous step.
+
+@node Installing the Taler Merchant,Installing Anastasis,Installing the Taler 
Exchange,Installing from source
+@anchor{installation installing-the-taler-merchant}@anchor{d}
+@subsubsection Installing the Taler Merchant
+
+
+GNU Taler merchant has these additional dependencies:
+
+
+@itemize -
+
+@item
+libqrencode >= 4.0.0
+@end itemize
+
+The following steps assume all dependencies are installed.
+
+First, unpack the GNU Taler merchant tarball and change into
+the resulting directory.
+Then, use the following commands to build and install the merchant backend:
+
+@example
+$ ./configure [--prefix=PFX] \
+              [--with-gnunet=GNUNETPFX] \
+              [--with-exchange=EXCHANGEPFX]
+$ # Each dependency can be fetched from non standard locations via
+$ # the '--with-<LIBNAME>' option. See './configure --help'.
+$ make
+# make install
+@end example
+
+If you did not specify a prefix, the exchange will install to
+@code{/usr/local}, which requires you to run the last step as @code{root}.
+
+You have to specify @code{--with-exchange=/usr/local} and/or
+@code{--with-gnunet=/usr/local} if you installed the exchange and/or
+GNUnet to @code{/usr/local} in the previous steps.
+
+Depending on the prefixes you specified for the installation and the
+distribution you are using, you may have to edit @code{/etc/ld.so.conf}, adding
+lines for @code{GNUNETPFX/lib/} and @code{EXCHANGEPFX/lib/} and @code{PFX/lib/}
+(replace the prefixes with the actual paths you used). Afterwards, you should
+run @code{ldconfig}. Without this step, it is possible that the linker may not
+find the installed libraries and launching the Taler merchant backend would
+then fail.
+
+@node Installing Anastasis,Installing GNUnet-gtk,Installing the Taler 
Merchant,Installing from source
+@anchor{installation installing-anastasis}@anchor{e}
+@subsubsection Installing Anastasis
+
+
+The following steps assume all dependencies are installed.
+
+First, unpack the Anastasis tarball and change into
+the resulting directory.
+Then, use the following commands to build and install Anastasis:
+
+@example
+$ ./configure [--prefix=PFX] \
+              [--with-gnunet=GNUNETPFX] \
+              [--with-exchange=EXCHANGEPFX]
+$ # Each dependency can be fetched from non standard locations via
+$ # the '--with-<LIBNAME>' option. See './configure --help'.
+$ make
+# make install
+@end example
+
+If you did not specify a prefix, Anastasis will be installed to
+@code{/usr/local}, which requires you to run the last step as @code{root}.
+
+You have to specify @code{--with-exchange=/usr/local} and/or
+@code{--with-gnunet=/usr/local} if you installed the exchange and/or
+GNUnet to @code{/usr/local} in the previous steps.
+
+Depending on the prefixes you specified for the installation and the
+distribution you are using, you may have to edit @code{/etc/ld.so.conf}, adding
+lines for @code{GNUNETPFX/lib/} and @code{EXCHANGEPFX/lib/} and @code{PFX/lib/}
+(replace the prefixes with the actual paths you used). Afterwards, you should
+run @code{ldconfig}. Without this step, it is possible that the linker may not
+find the installed libraries and launching the Anastasis backend would
+then fail.
+
+@node Installing GNUnet-gtk,Installing Anastasis-gtk,Installing 
Anastasis,Installing from source
+@anchor{installation installing-gnunet-gtk}@anchor{f}
+@subsubsection Installing GNUnet-gtk
+
+
+The following steps assume at least the GNUnet and Gtk+ dependencies are 
installed.
+
+First, unpack the gnunet-gtk tarball and change into the resulting directory.
+Then, use the following commands to build and install gnunet-gtk:
+
+@example
+$ ./configure [--prefix=$PFX] \
+              [--with-gnunet=$GNUNETPFX]
+$ # Each dependency can be fetched from non standard locations via
+$ # the '--with-<LIBNAME>' option. See './configure --help'.
+$ make
+# make install
+@end example
+
+It is highly recommended to use the same prefix ($PFX) for gnunet-gtk that was
+used for GNUnet ($GNUNETPFX).  If you did not specify a prefix, gnunet-gtk
+will be installed to @code{/usr/local}, which requires you to run the last step
+as @code{root}.
+
+You have to specify @code{--with-gnunet=/usr/local} if you installed
+GNUnet to @code{/usr/local} in the previous steps.
+
+Depending on the prefixes you specified for the installation and the
+distribution you are using, you may have to edit @code{/etc/ld.so.conf}, adding
+lines for @code{$GNUNETPFX/lib/} and @code{$PFX/lib/} (replace the prefixes 
with the
+actual paths you used). Afterwards, you should run @code{ldconfig}. Without 
this
+step, it is possible that the linker may not find the installed libraries and
+launching gnunet-gtk would then fail.
+
+@node Installing Anastasis-gtk,,Installing GNUnet-gtk,Installing from source
+@anchor{installation installing-anastasis-gtk}@anchor{10}
+@subsubsection Installing Anastasis-gtk
+
+
+The following steps assume at least the GNUnet, gnunet-gtk and Anastasis
+dependencies are installed.
+
+First, unpack the anastasis-gtk tarball and change into the resulting
+directory.  Then, use the following commands to build and install
+anastasis-gtk:
+
+@example
+$ ./configure [--prefix=PFX] \
+              [--with-gnunet=GNUNETPFX] \
+              [--with-exchange=EXCHANGEPFX] \
+              [--with-anastasis=ANASTASISPFX]
+$ # Each dependency can be fetched from non standard locations via
+$ # the '--with-<LIBNAME>' option. See './configure --help'.
+$ make
+# make install
+@end example
+
+If you did not specify a prefix, anastasis-gtk will be installed to
+@code{/usr/local}, which requires you to run the last step as @code{root}.
+
+You have to specify @code{-with-anastasis=/usr/local}, 
@code{--with-exchange=/usr/local} and/or
+@code{--with-gnunet=/usr/local} if you installed the exchange and/or
+GNUnet to @code{/usr/local} in the previous steps.
+
+Depending on the prefixes you specified for the installation and the
+distribution you are using, you may have to edit @code{/etc/ld.so.conf}, adding
+lines for @code{GNUNETPFX/lib/} and @code{EXCHANGEPFX/lib/} and @code{PFX/lib/}
+(replace the prefixes with the actual paths you used). Afterwards, you should
+run @code{ldconfig}. Without this step, it is possible that the linker may not
+find the installed libraries and launching anastasis-gtk would then fail.
+
+@node Installing Anastasis binary packages on Debian,Installing Anastasis 
binary packages on Ubuntu,Installing from source,Installation
+@anchor{installation installing-anastasis-binary-packages-on-debian}@anchor{11}
+@subsection Installing Anastasis binary packages on Debian
+
+
+To install the GNU Taler Debian packages, first ensure that you have
+the right Debian distribution. At this time, the packages are built for
+Sid, which means you should use a system which at least includes
+unstable packages in its source list.  We recommend using APT pinning
+to limit unstable packages to those explicitly requested. To do this,
+set your @code{/etc/apt/preferences} as follows:
+
+@example
+Package: *
+Pin: release a=stable
+Pin-Priority: 700
+
+Package: *
+Pin: release a=testing
+Pin-Priority: 650
+
+Package: *
+Pin: release a=unstable
+Pin-Priority: 600
+
+Package: *
+Pin: release l=Debian-Security
+Pin-Priority: 1000
+@end example
+
+A typical @code{/etc/apt/sources.list} file for this setup
+which combines Debian stable with more recent packages
+from testing and unstable would look like this:
+
+@example
+deb http://ftp.ch.debian.org/debian/ buster main
+deb http://security.debian.org/debian-security buster/updates main
+deb http://ftp.ch.debian.org/debian/ testing main
+deb http://ftp.ch.debian.org/debian/ unstable main
+@end example
+
+Naturally, you may want to use different mirrors depending on your region.
+Additionally, you must add a file to import the GNU Taler packages. Typically,
+this is done by adding a file @code{/etc/apt/sources.list.d/taler.list} that
+looks like this:
+
+@example
+deb https://deb.taler.net/apt/debian sid main
+@end example
+
+Next, you must import the Taler Systems SA public package signing key
+into your keyring and update the package lists:
+
+@example
+# wget -O - https://taler.net/taler-systems.gpg.key | apt-key add -
+# apt update
+@end example
+
+@cartouche
+@quotation Note
+You may want to verify the correctness of the Taler Systems key out-of-band.
+@end quotation
+@end cartouche
+
+Now your system is ready to install the official GNU Taler binary packages
+using apt.
+
+@menu
+* Installing the graphical front-end::
+* Installing the backend::
+
+@end menu
+
+@node Installing the graphical front-end,Installing the backend,,Installing 
Anastasis binary packages on Debian
+@anchor{installation installing-the-graphical-front-end}@anchor{12}
+@subsubsection Installing the graphical front-end
+
+
+To install the Anastasis Gtk+ frontend, you can simply run:
+
+@example
+# apt install anastasis-gtk
+@end example
+
+To use @code{anastasis-gtk}, you can simply run:
+
+@example
+$ anastasis-gtk
+@end example
+
+@node Installing the backend,,Installing the graphical front-end,Installing 
Anastasis binary packages on Debian
+@anchor{installation installing-the-backend}@anchor{13}
+@subsubsection Installing the backend
+
+
+If you want to install the Anastasis backend-end (which normal users do not
+need), you should run:
+
+@example
+# apt install -t sid anastasis-httpd
+@end example
+
+Note that the latter package does not perform all of the configuration work.
+It does setup the user users and the systemd service scripts, but you still
+must configure the database backup, HTTP reverse proxy (typically with TLS
+certificates), Taler merchant backend for payments, authentication services,
+prices and the terms of service.
+
+Sample configuration files for the HTTP reverse proxy can be found in
+@code{/etc/anastasis.conf}.
+
+Note that the package does not complete the integration of the backend
+with the HTTP reverse proxy (typically with TLS certificates).  A
+configuration fragment for Nginx or Apache will be placed in
+@code{/etc/@{apache,nginx@}/conf-available/anastasis.conf}.
+
+To operate an Anastasis backend with payments, you additionally
+need to install a Taler merchant backend via:
+
+@example
+# apt install -t sid taler-merchant-httpd
+@end example
+
+@node Installing Anastasis binary packages on Ubuntu,,Installing Anastasis 
binary packages on Debian,Installation
+@anchor{installation installing-anastasis-binary-packages-on-ubuntu}@anchor{14}
+@subsection Installing Anastasis binary packages on Ubuntu
+
+
+To install the GNU Taler Ubuntu packages, first ensure that you have
+the right Ubuntu distribution. At this time, the packages are built for
+Ubuntu 20.04 LTS (Focal Fossa).
+
+A typical @code{/etc/apt/sources.list.d/taler.list} file for this setup
+would look like this:
+
+@example
+deb https://deb.taler.net/apt/ubuntu/ focal-fossa main
+@end example
+
+The last line is crucial, as it adds the GNU Taler packages.
+
+Next, you must import the Taler Systems SA public package signing key
+into your keyring and update the package lists:
+
+@example
+# wget -O - https://taler.net/taler-systems.gpg.key | apt-key add -
+# apt update
+@end example
+
+@cartouche
+@quotation Note
+You may want to verify the correctness of the Taler Systems key out-of-band.
+@end quotation
+@end cartouche
+
+Now your system is ready to install the official GNU Taler binary packages
+using apt.
+
+@menu
+* Installing the graphical front-end: Installing the graphical front-end<2>.
+* Installing the backend: Installing the backend<2>.
+
+@end menu
+
+@node Installing the graphical front-end<2>,Installing the 
backend<2>,,Installing Anastasis binary packages on Ubuntu
+@anchor{installation id1}@anchor{15}
+@subsubsection Installing the graphical front-end
+
+
+To install the Anastasis front-end, you can now simply run:
+
+@example
+# apt install -t focal-fossa anastasis-gtk
+@end example
+
+To use @code{anastasis-gtk}, you can simply run:
+
+@example
+$ anastasis-gtk
+@end example
+
+@node Installing the backend<2>,,Installing the graphical 
front-end<2>,Installing Anastasis binary packages on Ubuntu
+@anchor{installation id2}@anchor{16}
+@subsubsection Installing the backend
+
+
+If you want to install the Anastasis backend-end (which normal users do not
+need), you should run:
+
+@example
+# apt install -t focal-fossa anastasis-httpd
+@end example
+
+Note that the latter package does not perform all of the configuration work.
+It does setup the user users and the systemd service scripts, but you still
+must configure the database backup, HTTP reverse proxy (typically with TLS
+certificates), Taler merchant backend for payments, authentication services,
+prices and the terms of service.
+
+Sample configuration files for the HTTP reverse proxy can be found in
+@code{/etc/anastasis.conf}.
+
+To operate an Anastasis backend with payments, you additionally
+need to install a Taler merchant backend via:
+
+@example
+# apt install -t sid taler-merchant-httpd
+@end example
+
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
+
+@node Configuration,Cryptography,Installation,Documentation Overview
+@anchor{configuration doc}@anchor{17}@anchor{configuration 
configuration}@anchor{18}
+@section Configuration
+
+
+Details about the contents of the configuration file are describe in
+the @code{anastasis.conf(5)} chapter.  This chapter only describes the
+configuration format.
+
+@menu
+* Configuration format::
+* Using anastasis-config::
+
+@end menu
+
+@node Configuration format,Using anastasis-config,,Configuration
+@anchor{configuration configuration-format}@anchor{19}
+@subsection Configuration format
+
+
+In Taler realm, any component obeys to the same pattern to get
+configuration values. According to this pattern, once the component has
+been installed, the installation deploys default values in
+$@{prefix@}/share/taler/config.d/, in .conf files. In order to override
+these defaults, the user can write a custom .conf file and either pass
+it to the component at execution time, or name it taler.conf and place
+it under $HOME/.config/.
+
+A config file is a text file containing sections, and each section
+contains its values. The right format follows:
+
+@example
+[section1]
+value1 = string
+value2 = 23
+
+[section2]
+value21 = string
+value22 = /path22
+@end example
+
+Throughout any configuration file, it is possible to use @code{$}-prefixed
+variables, like @code{$VAR}, especially when they represent filesystem
+paths. It is also possible to provide defaults values for those
+variables that are unset, by using the following syntax:
+@code{$@{VAR:-default@}}. However, there are two ways a user can set
+@code{$}-prefixable variables:
+
+by defining them under a @code{[paths]} section, see example below,
+
+@example
+[paths]
+TALER_DEPLOYMENT_SHARED = $@{HOME@}/shared-data
+..
+[section-x]
+path-x = $@{TALER_DEPLOYMENT_SHARED@}/x
+@end example
+
+or by setting them in the environment:
+
+@example
+$ export VAR=/x
+@end example
+
+The configuration loader will give precedence to variables set under
+@code{[path]}, though.
+
+The utility @code{taler-config}, which gets installed along with the
+exchange, serves to get and set configuration values without directly
+editing the .conf. The option @code{-f} is particularly useful to resolve
+pathnames, when they use several levels of @code{$}-expanded variables. See
+@code{taler-config --help}.
+
+Note that, in this stage of development, the file
+@code{$HOME/.config/taler.conf} can contain sections for @emph{all} the
+component. For example, both an exchange and a bank can read values from
+it.
+
+The repository @code{git://taler.net/deployment} contains examples of
+configuration file used in our demos. See under @code{deployment/config}.
+
+@quotation
+
+@strong{Note}
+
+Expectably, some components will not work just by using default
+values, as their work is often interdependent. For example, a
+merchant needs to know an exchange URL, or a database name.
+@end quotation
+
+@node Using anastasis-config,,Configuration format,Configuration
+@anchor{configuration using-anastasis-config}@anchor{1a}
+@subsection Using anastasis-config
+
+
+The tool @code{anastasis-config} can be used to extract or manipulate
+configuration values; however, the configuration use the well-known INI
+file format and can also be edited by hand.
+
+Run
+
+@example
+$ anastasis-config -s $SECTION
+@end example
+
+to list all of the configuration values in section @code{$SECTION}.
+
+Run
+
+@example
+$ anastasis-config -s $section -o $option
+@end example
+
+to extract the respective configuration value for option @code{$option} in
+section @code{$section}.
+
+Finally, to change a setting, run
+
+@example
+$ anastasis-config -s $section -o $option -V $value
+@end example
+
+to set the respective configuration value to @code{$value}. Note that you
+have to manually restart the Taler backend after you change the
+configuration to make the new configuration go into effect.
+
+Some default options will use $-variables, such as @code{$DATADIR} within
+their value. To expand the @code{$DATADIR} or other $-variables in the
+configuration, pass the @code{-f} option to @code{anastasis-config}. For 
example,
+compare:
+
+@example
+$ anastasis-config -s ACCOUNT-bank \
+               -o WIRE_RESPONSE
+$ anastasis-config -f -s ACCOUNT-bank \
+               -o WIRE_RESPONSE
+@end example
+
+While the configuration file is typically located at
+@code{$HOME/.config/taler.conf}, an alternative location can be specified
+to @code{taler-merchant-httpd} and @code{anastasis-config} using the @code{-c}
+option.
+
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
+
+@node Cryptography,REST API,Configuration,Documentation Overview
+@anchor{cryptography doc}@anchor{1b}@anchor{cryptography 
cryptography}@anchor{1c}
+@section Cryptography
+
+
+When a user needs to interact with Anastasis, the system first derives some key
+material, but not the master secret, from the user’s @strong{identifier} using
+different HKDFs.  These HKDFs are salted using the respective escrow
+provider’s @strong{server salt}, which ensures that the accounts for the same 
user
+cannot be easily correlated across the various Anastasis servers.
+
+Each Anastasis server uses an EdDSA @strong{account key} to identify the 
account of
+the user.  The account private key is derived from the user’s 
@strong{identifier} using
+a computationally expensive cryptographic hash function.  Using an
+expensive hash algorithm is assumed to make it infeasible for a weak adversary 
to
+determine account keys by brute force (without knowing the user’s identifier).
+However, it is assumed that a strong adversary performing a targeted attack can
+compute the account key pair.
+
+The public account key is Crockford base32-encoded in the URI to identify the
+account, and used to sign requests.  These signatures are also provided in
+base32-encoding and transmitted using the HTTP header
+@code{Anastasis-Account-Signature}.
+
+When confidential data is uploaded to an Anastasis server, the respective
+payload is encrypted using AES-GCM with a symmetric key and initialization
+vector derived from the @strong{identifier} and a high-entropy @strong{nonce}. 
 The
+nonce and the GCM tag are prepended to the ciphertext before being uploaded to
+the Anastasis server.  This is done whenever confidential data is stored with
+the server.
+
+The @strong{core secret} of the user is (AES) encrypted using a symmetric 
@strong{master
+key}.  Recovering this master key requires the user to satisfy a particular
+@strong{policy}.  Policies specify a set of @strong{escrow methods}, each of 
which leads
+the user to a @strong{key share}. Combining those key shares (by hashing) 
allows
+the user to obtain a @strong{policy key}, which can be used to decrypt the 
@strong{master
+key}.  There can be many policies, satisfying any of these will allow the
+user to recover the master key.  A @strong{recovery document} contains the
+encrypted @strong{core secret}, a set of escrow methods and a set of policies.
+
+@menu
+* Key derivations::
+* Key Usage::
+* Availability Considerations::
+
+@end menu
+
+@node Key derivations,Key Usage,,Cryptography
+@anchor{cryptography key-derivations}@anchor{1d}
+@subsection Key derivations
+
+
+EdDSA and ECDHE public keys are always points on Curve25519 and represented
+using the standard 256 bit Ed25519 compact format.  The binary representation
+is converted to Crockford Base32 when transmitted inside JSON or as part of
+URLs.
+
+To start, a user provides their private, unique and unforgettable
+@strong{identifier} as a seed to identify their account.  For example, this 
could
+be a social security number together with their full name.  Specifics may
+depend on the cultural context, in this document we will simply refer to this
+information as the @strong{identifier}.
+
+This identifier will be first hashed with Argon2, to provide a @strong{kdf_id}
+which will be used to derive other keys later. The Hash must also include the
+respective @strong{server_salt}. This also ensures that the @strong{kdf_id} is 
different
+on each server. The use of Argon2 and the respective @strong{server_salt} is 
intended
+to make it difficult to brute-force @strong{kdf_id} values and help protect 
the user’s
+privacy. Also this ensures that the @strong{kdf_id}s on every server differs. 
However,
+we do not assume that the @strong{identifier} or the @strong{kdf_id} cannot be
+determined by an adversary performing a targeted attack, as a user’s
+@strong{identifier} is likely to always be known to state actors and may
+likely also be available to other actors.
+
+@example
+kdf_id := Argon2( identifier, server_salt, keysize )
+@end example
+
+@strong{identifier}: The secret defined from the user beforehand.
+
+@strong{server_salt}: The salt from the Server.
+
+@strong{keysize}: The desired output size of the KDF, here 32 bytes.
+
+@menu
+* Verification::
+* Encryption::
+
+@end menu
+
+@node Verification,Encryption,,Key derivations
+@anchor{cryptography verification}@anchor{1e}
+@subsubsection Verification
+
+
+For users to authorize “policy” operations we need an EdDSA key pair.  As we
+cannot assure that the corresponding private key is truly secret, such policy
+operations must never be destructive: Should an adversary learn the private
+key, they could access (and with the @strong{kdf_id}, decrypt) the user’s 
policy (but
+not the core secret), or upload a new version of the
+@strong{encrypted recovery document} (but not delete an existing version).
+
+For the generation of the private key we use the @strong{kdf_id} as the 
entropy source,
+hash it to derive a base secret which will then be processed to fit the
+requirements for EdDSA private keys.  From the private key we can then
+generate the corresponding public key.  Here, “ver” is used as a salt for the
+HKDF to ensure that the result differs from other cases where we hash
+@strong{kdf_id}.
+
+@example
+ver_secret := HKDF(kdf_id, "ver", keysize)
+eddsa_priv := eddsa_d_to_a(ver_secret)
+eddsa_pub := get_EdDSA_Pub(eddsa_priv)
+@end example
+
+@strong{HKDF()}: The HKDF-function uses two phases: First we use HMAC-SHA512 
for the extraction phase, then HMAC-SHA256 is used for expansion phase.
+
+@strong{kdf_id}: Hashed identifier.
+
+@strong{key_size}: Size of the output, here 32 bytes.
+
+@strong{ver_secret}: Derived key from the @code{kdf_id}, serves as 
intermediate step for the generation of the private key.
+
+@strong{eddsa_d_to_a()}: Function which converts the ver_key to a valid EdDSA 
private key. Specifically, assuming the value @code{eddsa_priv} is in a 32-byte 
array “digest”, the function clears and sets certain bits as follows:
+
+@example
+digest[0] = (digest[0] & 0x7f) | 0x40;
+digest[31] &= 0xf8;
+@end example
+
+@strong{eddsa_priv}: The generated EdDSA private key.
+
+@strong{eddsa_pub}: The generated EdDSA public key.
+
+@node Encryption,,Verification,Key derivations
+@anchor{cryptography encryption}@anchor{1f}
+@subsubsection Encryption
+
+
+For symmetric encryption of data we use AES256-GCM. For this we need a
+symmetric key and an initialization vector (IV).  To ensure that the
+symmetric key changes for each encryption operation, we compute the
+key material using an HKDF over a @code{nonce} and the @code{kdf_id}.
+
+@example
+(iv,key) := HKDF(kdf_id, nonce, keysize + ivsize)
+@end example
+
+@strong{HKDF()}: The HKDF-function uses two phases: First we use HMAC-SHA512 
for the extraction phase, then HMAC-SHA256 is used for expansion phase.
+
+@strong{kdf_id}: Hashed identifier.
+
+@strong{keysize}: Size of the AES symmetric key, here 32 bytes.
+
+@strong{ivsize}: Size of the AES GCM IV, here 12 bytes.
+
+@strong{prekey}: Original key material.
+
+@strong{nonce}: 32-byte nonce, must never match “ver” (which it cannot as the 
length is different). Of course, we must
+avoid key reuse. So, we have to use different nonces to get different keys and 
IVs (see below).
+
+@strong{key}: Symmetric key which is later used to encrypt the documents with 
AES256-GCM.
+
+@strong{iv}: IV which will be used for AES-GCM.
+
+@node Key Usage,Availability Considerations,Key derivations,Cryptography
+@anchor{cryptography key-usage}@anchor{20}
+@subsection Key Usage
+
+
+The keys we have generated are then used to encrypt the @strong{recovery 
document} and
+the @strong{key_share} of the user.
+
+@menu
+* Encryption: Encryption<2>.
+* Signatures::
+
+@end menu
+
+@node Encryption<2>,Signatures,,Key Usage
+@anchor{cryptography id1}@anchor{21}
+@subsubsection Encryption
+
+
+Before every encryption a 32-byte nonce is generated.
+From this the symmetric key is computed as described above.
+We use AES256-GCM for the encryption of the @strong{recovery document} and
+the @strong{key_share}.  To ensure that the key derivation for the encryption
+of the @strong{recovery document} differs fundamentally from that of an
+individual @strong{key share}, we use different salts (“erd” and “eks”, 
respectively).
+
+@example
+(iv0, key0) := HKDF(key_id, nonce0, "erd", keysize + ivsize)
+(encrypted_recovery_document, aes_gcm_tag) := AES256_GCM(recovery_document, 
key0, iv0)
+(iv_i, key_i) := HKDF(key_id, nonce_i, "eks", [optional data], keysize + 
ivsize)
+(encrypted_key_share_i, aes_gcm_tag_i) := AES256_GCM(key_share_i, key_i, iv_i)
+@end example
+
+@strong{encrypted_recovery_document}: The encrypted @strong{recovery document} 
which contains the escrow methods, policies
+and the encrypted @strong{core secret}.
+
+@strong{nonce0}: Nonce which is used to generate @emph{key0} and @emph{iv0} 
which are used for the encryption of the @emph{recovery document}.
+Nonce must contain the string “ERD”.
+
+@strong{optional data}: Key material that optionally is contributed from the 
authentication method to further obfuscate the key share from the escrow 
provider.
+
+@strong{encrypted_key_share_i}: The encrypted @strong{key_share} which the 
escrow provider must release upon successful authentication.
+Here, @strong{i} must be a positive number used to iterate over the various 
@strong{key shares} used for the various @strong{escrow methods}
+at the various providers.
+
+@strong{nonce_i}: Nonce which is used to generate @emph{key_i} and @emph{iv_i} 
which are used for the encryption of the @strong{key share}. @strong{i} must be
+the same number as specified above for @emph{encrypted_key_share_i}. Nonce 
must contain the string “EKS” plus the according @emph{i}.
+
+As a special rule, when a @strong{security question} is used to authorize 
access to an
+@strong{encrypted_key_share_i}, then the salt “eks” is replaced with an 
(expensive) hash
+of the answer to the security question as an additional way to make the key 
share
+inaccessible to those who do not have the answer:
+
+@example
+powh := POW_HASH (qsalt, answer)
+ekss := HKDF("Anastasis-secure-question-uuid-salting",
+             powh,
+             uuid);
+(iv_i, key_i) := HKDF(key_id, nonce_i, ekss, [optional data], keysize + ivsize)
+@end example
+
+@strong{qsalt}: Salt value used to hash answer to satisfy the challenge to 
prevent the provider from determining the answer via guessing.
+
+@strong{answer}: Answer to the security question, in UTF-8, as entered by the 
user.
+
+@strong{powh}: Result of the (expensive, proof-of-work) hash algorithm.
+
+@strong{uuid}: UUID of the challenge associated with the security question and 
the encrypted key share.
+
+@strong{ekss}: Replacement salt to be used instead of “eks” when deriving the 
key to encrypt/decrypt the key share.
+
+@node Signatures,,Encryption<2>,Key Usage
+@anchor{cryptography signatures}@anchor{22}
+@subsubsection Signatures
+
+
+The EdDSA keys are used to sign the data sent from the client to the
+server. Everything the client sends to server is signed. The following
+algorithm is equivalent for @strong{Anastasis-Policy-Signature}.
+
+@example
+(anastasis-account-signature) := eddsa_sign(h_body, eddsa_priv)
+ver_res := eddsa_verifiy(h_body, anastasis-account-signature, eddsa_pub)
+@end example
+
+@strong{anastasis-account-signature}: Signature over the SHA-512 hash of the 
body using the purpose code @code{TALER_SIGNATURE_ANASTASIS_POLICY_UPLOAD} 
(1400) (see GNUnet EdDSA signature API for the use of purpose).
+
+@strong{h_body}: The hashed body.
+
+@strong{ver_res}: A boolean value. True: Signature verification passed, False: 
Signature verification failed.
+
+When requesting policy downloads, the client must also provide a signature:
+
+@example
+(anastasis-account-signature) := eddsa_sign(version, eddsa_priv)
+ver_res := eddsa_verifiy(version, anastasis-account-signature, eddsa_pub)
+@end example
+
+@strong{anastasis-account-signature}: Signature over the SHA-512 hash of the 
body using the purpose code @code{TALER_SIGNATURE_ANASTASIS_POLICY_DOWNLOAD} 
(1401) (see GNUnet EdDSA signature API for the use of purpose).
+
+@strong{version}: The version requested as a 64-bit integer, 2^64-1 for the 
“latest version”.
+
+@strong{ver_res}: A boolean value. True: Signature verification passed, False: 
Signature verification failed.
+
+@node Availability Considerations,,Key Usage,Cryptography
+@anchor{cryptography availability-considerations}@anchor{23}
+@subsection Availability Considerations
+
+
+Anastasis considers two main threats against availability. First, the
+Anastasis server operators must be protected against denial-of-service attacks
+where an adversary attempts to exhaust the operator’s resources.  The API 
protects
+against these attacks by allowing operators to set fees for all
+operations. Furthermore, all data stored comes with an expiration logic, so an
+attacker cannot force servers to store data indefinitely.
+
+A second availability issue arises from strong adversaries that may be able to
+compute the account keys of some user.  While we assume that such an adversary
+cannot successfully authenticate against the truth, the account key does
+inherently enable these adversaries to upload a new policy for the account.
+This cannot be prevented, as the legitimate user must be able to set or change
+a policy using only the account key.  To ensure that an adversary cannot
+exploit this, policy uploads first of all never delete existing policies, but
+merely create another version.  This way, even if an adversary uploads a
+malicious policy, a user can still retrieve an older version of the policy to
+recover access to their data.  This append-only storage for policies still
+leaves a strong adversary with the option of uploading many policies to
+exhaust the Anastasis server’s capacity.  We limit this attack by requiring a
+policy upload to include a reference to a @strong{payment identifier} from a 
payment
+made by the user.  Thus, a policy upload requires both knowledge of the
+@strong{identity} and making a payment.  This effectively prevents an adversary
+from using the append-only policy storage from exhausting Anastasis server
+capacity.
+
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
+
+@node REST API,Reducer API,Cryptography,Documentation Overview
+@anchor{rest doc}@anchor{24}@anchor{rest rest-api}@anchor{25}
+@section REST API
+
+
+@c This file is part of Anastasis
+@c
+@c Copyright (C) 2014-2021 Anastasis SARL
+@c
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero Public License as published by the Free Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c
+@c @author Christian Grothoff
+
+@menu
+* HTTP Request and Response::
+* Protocol Version Ranges::
+* Common encodings::
+
+@end menu
+
+@node HTTP Request and Response,Protocol Version Ranges,,REST API
+@anchor{rest http-common}@anchor{26}@anchor{rest 
http-request-and-response}@anchor{27}
+@subsection HTTP Request and Response
+
+
+Certain response formats are common for all requests. They are documented here
+instead of with each individual request.  Furthermore, we note that clients may
+theoretically fail to receive any response.  In this case, the client should
+verify that the Internet connection is working properly, and then proceed to
+handle the error as if an internal error (500) had been returned.
+
+@anchor{rest any--*}@anchor{28}
+@deffn {HTTP Any} ANY /*
+
+@strong{Request:}
+
+Unless specified otherwise, HTTP requests that carry a message body must
+have the content type @code{application/json}.
+
+@*Request Headers:
+
+@itemize *
+
+@item
+Content-Type@footnote{https://tools.ietf.org/html/rfc7231#section-3.1.1.5} – 
application/json
+@end itemize
+
+
+@strong{Response:}
+
+@*Response Headers:
+
+@itemize *
+
+@item
+Content-Type@footnote{https://tools.ietf.org/html/rfc7231#section-3.1.1.5} – 
application/json
+@end itemize
+
+
+
+@table @asis
+
+@item 200 
Ok@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1}:
+
+The request was successful.
+
+@item 400 Bad 
request@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1}:
+
+One of the arguments to the request is missing or malformed.
+
+@item 500 Internal server 
error@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1}:
+
+This always indicates some serious internal operational error of the Anastasis
+provider, such as a program bug, database problems, etc., and must not be used 
for
+client-side problems.  When facing an internal server error, clients should
+retry their request after some delay.  We recommended initially trying after
+1s, twice more at randomized times within 1 minute, then the user should be
+informed and another three retries should be scheduled within the next 24h.
+If the error persists, a report should ultimately be made to the auditor,
+although the auditor API for this is not yet specified.  However, as internal
+server errors are always reported to the exchange operator, a good operator
+should naturally be able to address them in a timely fashion, especially
+within 24h.
+@end table
+
+Unless specified otherwise, all error status codes (4xx and 5xx) have a message
+body with an @ref{29,,ErrorDetail} JSON object.
+
+@strong{Details:}
+
+@example
+interface ErrorDetail @{
+
+  // Numeric error code unique to the condition, see 
`@w{`}gnu-taler-error-codes`@w{`} in GANA.
+  // The other arguments are specific to the error value reported here.
+  code: number;
+
+  // Human-readable description of the error, i.e. "missing parameter", 
"commitment violation", ...
+  // Should give a human-readable hint about the error's nature. Optional, may 
change without notice!
+  hint?: string;
+
+@}
+@end example
+@end deffn
+
+@node Protocol Version Ranges,Common encodings,HTTP Request and Response,REST 
API
+@anchor{rest protocol-version-ranges}@anchor{2a}
+@subsection Protocol Version Ranges
+
+
+Anastasis services expose the range of API versions they support.  Clients in
+turn have an API version range they support.  These version ranges are written
+down in the libtool version 
format@footnote{https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html}.
+
+A protocol version is a positive, non-zero integer.  A protocol version range 
consists of three components:
+
+
+@enumerate
+
+@item
+The @code{current} version.  This is the latest version of the protocol 
supported by the client or service.
+
+@item
+The @code{revision} number.  This value should usually not be interpreted by 
the client/server, but serves
+purely as a comment.  Each time a service/client for a protocol is updated 
while supporting the same
+set of protocol versions, the revision should be increased.
+In rare cases, the revision number can be used to work around unintended 
breakage in deployed
+versions of a service.  This is discouraged and should only be used in 
exceptional situations.
+
+@item
+The @code{age} number.  This non-zero integer identifies with how many 
previous protocol versions this
+implementation is compatible.  An @code{age} of 0 implies that the 
implementation only supports
+the @code{current} protocol version.  The @code{age} must be less or equal 
than the @code{current} protocol version.
+@end enumerate
+
+To avoid confusion with semantic versions, the protocol version range is 
written down in the following format:
+
+@example
+current[:revision[:age]]
+@end example
+
+The angle brackets mark optional components. If either @code{revision} or 
@code{age} are omitted, they default to 0.
+
+Examples:
+
+
+@itemize *
+
+@item
+“1” and “1” are compatible
+
+@item
+“1” and “2” are @strong{incompatible}
+
+@item
+“2:0:1” and “1:0:0” are compatible
+
+@item
+“2:5:1” and “1:10:0” are compatible
+
+@item
+“4:0:1” and “2:0:0” are @strong{incompatible}
+
+@item
+“4:0:1” and “3:0:0” are compatible
+@end itemize
+
+@cartouche
+@quotation Note
+Semantic versions@footnote{https://semver.org/} are not a good tool for this 
job, as we concisely want to express
+that the client/server supports the last @code{n} versions of the protocol.
+Semantic versions don’t support this, and semantic version ranges are too 
complex for this.
+@end quotation
+@end cartouche
+
+@cartouche
+@quotation Warning
+A client doesn’t have one single protocol version range.  Instead, it has
+a protocol version range for each type of service it talks to.
+@end quotation
+@end cartouche
+
+@cartouche
+@quotation Warning
+For privacy reasons, the protocol version range of a client should not be
+sent to the service.  Instead, the client should just use the two version 
ranges
+to decide whether it will talk to the service.
+@end quotation
+@end cartouche
+
+@node Common encodings,,Protocol Version Ranges,REST API
+@anchor{rest common-encodings}@anchor{2b}@anchor{rest encodings-ref}@anchor{2c}
+@subsection Common encodings
+
+
+This section describes how certain types of values are represented throughout 
the API.
+
+@menu
+* Binary Data::
+* Hash codes::
+* Large numbers::
+* Timestamps::
+* Integers::
+* Objects::
+* Keys::
+* Signatures: Signatures<2>.
+* Amounts::
+* Time::
+* Cryptographic primitives::
+* Signatures: Signatures<3>.
+* Receiving Configuration::
+* Receiving Terms of Service::
+* Manage policy::
+* Managing truth::
+
+@end menu
+
+@node Binary Data,Hash codes,,Common encodings
+@anchor{rest base32}@anchor{2d}@anchor{rest binary-data}@anchor{2e}
+@subsubsection Binary Data
+
+
+@example
+type Base32 = string;
+@end example
+
+Binary data is generally encoded using Crockford’s variant of Base32
+(@indicateurl{http://www.crockford.com/wrmg/base32.html}), except that “U” is 
not excluded
+but also decodes to “V” to make OCR easy.  We will still simply use the JSON
+type “base32” and the term “Crockford Base32” in the text to refer to the
+resulting encoding.
+
+@node Hash codes,Large numbers,Binary Data,Common encodings
+@anchor{rest hash-codes}@anchor{2f}
+@subsubsection Hash codes
+
+
+Hash codes are strings representing base32 encoding of the respective
+hashed data. See @ref{2d,,base32}.
+
+@example
+// 64-byte hash code.
+type HashCode = string;
+@end example
+
+@example
+// 32-byte hash code.
+type ShortHashCode = string;
+@end example
+
+@node Large numbers,Timestamps,Hash codes,Common encodings
+@anchor{rest large-numbers}@anchor{30}
+@subsubsection Large numbers
+
+
+Large numbers such as 256 bit keys, are transmitted as other binary data in
+Crockford Base32 encoding.
+
+@node Timestamps,Integers,Large numbers,Common encodings
+@anchor{rest timestamps}@anchor{31}
+@subsubsection Timestamps
+
+
+Timestamps are represented by the following structure:
+
+@example
+interface Timestamp @{
+  // Milliseconds since epoch, or the special
+  // value "never" to represent an event that will
+  // never happen.
+  t_ms: number | "never";
+@}
+@end example
+
+@example
+interface Duration @{
+  // Duration in milliseconds or "forever"
+  // to represent an infinite duration.
+  d_ms: number | "forever";
+@}
+@end example
+
+@node Integers,Objects,Timestamps,Common encodings
+@anchor{rest integers}@anchor{32}@anchor{rest publickey}@anchor{33}
+@subsubsection Integers
+
+
+@example
+// JavaScript numbers restricted to integers.
+type Integer = number;
+@end example
+
+@node Objects,Keys,Integers,Common encodings
+@anchor{rest objects}@anchor{34}
+@subsubsection Objects
+
+
+@example
+// JavaScript objects, no further restrictions.
+type Object = object;
+@end example
+
+@node Keys,Signatures<2>,Objects,Common encodings
+@anchor{rest keys}@anchor{35}
+@subsubsection Keys
+
+
+@example
+// EdDSA and ECDHE public keys always point on Curve25519
+// and represented  using the standard 256 bits Ed25519 compact format,
+// converted to Crockford `Base32`.
+type EddsaPublicKey = string;
+@end example
+
+@example
+// EdDSA and ECDHE public keys always point on Curve25519
+// and represented  using the standard 256 bits Ed25519 compact format,
+// converted to Crockford `Base32`.
+type EddsaPrivateKey = string;
+@end example
+
+@node Signatures<2>,Amounts,Keys,Common encodings
+@anchor{rest signature}@anchor{36}@anchor{rest signatures}@anchor{37}
+@subsubsection Signatures
+
+
+@example
+// EdDSA signatures are transmitted as 64-bytes `base32`
+// binary-encoded objects with just the R and S values (base32_ binary-only).
+type EddsaSignature = string;
+@end example
+
+@node Amounts,Time,Signatures<2>,Common encodings
+@anchor{rest amount}@anchor{38}@anchor{rest amounts}@anchor{39}
+@subsubsection Amounts
+
+
+@example
+type Amount = string;
+@end example
+
+Amounts of currency are serialized as a string of the format
+@code{<Currency>:<DecimalAmount>}.  Taler treats monetary amounts as
+fixed-precision numbers, with 8 decimal places.  Unlike floating point numbers,
+this allows accurate representation of monetary amounts.
+
+The following constrains apply for a valid amount:
+
+
+@enumerate
+
+@item
+The @code{<Currency>} part must be at most 11 characters long and may only 
consist
+of ASCII letters (@code{a-zA-Z}).
+
+@item
+The integer part of @code{<DecimalAmount>} may be at most 2^52.
+
+@item
+The fractional part of @code{<DecimalAmount>} may contain at most 8 decimal 
digits.
+@end enumerate
+
+@cartouche
+@quotation Note
+“EUR:1.50” and “EUR:10” are valid amounts.  These are all invalid amounts: 
“A:B:1.5”, “EUR:4503599627370501.0”, “EUR:1.”, “EUR:.1”.
+@end quotation
+@end cartouche
+
+An amount that is prefixed with a @code{+} or @code{-} character is also used 
in certain contexts.
+When no sign is present, the amount is assumed to be positive.
+
+@node Time,Cryptographic primitives,Amounts,Common encodings
+@anchor{rest time}@anchor{3a}
+@subsubsection Time
+
+
+In signed messages, time is represented using 64-bit big-endian values,
+denoting microseconds since the UNIX Epoch.  @code{UINT64_MAX} represents 
“never”.
+
+@example
+struct GNUNET_TIME_Absolute @{
+  uint64_t timestamp_us;
+@};
+struct GNUNET_TIME_AbsoluteNBO @{
+  uint64_t abs_value_us__;       // in network byte order
+@};
+@end example
+
+@node Cryptographic primitives,Signatures<3>,Time,Common encodings
+@anchor{rest cryptographic-primitives}@anchor{3b}
+@subsubsection Cryptographic primitives
+
+
+All elliptic curve operations are on Curve25519.  Public and private keys are
+thus 32 bytes, and signatures 64 bytes.  For hashing, including HKDFs, Taler
+uses 512-bit hash codes (64 bytes).
+
+@example
+struct GNUNET_HashCode @{
+  uint8_t hash[64];      // usually SHA-512
+@};
+@end example
+@anchor{rest taler-ecdhephemeralpublickeyp}@anchor{3c}
+@example
+struct TALER_EcdhEphemeralPublicKeyP @{
+  uint8_t ecdh_pub[32];
+@};
+@end example
+
+@example
+struct UUID @{
+  uint32_t value[4];
+@};
+@end example
+
+@node Signatures<3>,Receiving Configuration,Cryptographic primitives,Common 
encodings
+@anchor{rest id1}@anchor{3d}@anchor{rest id2}@anchor{3e}
+@subsubsection Signatures
+
+
+Any piece of signed data, complies to the abstract data structure given below.
+
+@example
+struct Data @{
+  struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
+  type1_t payload1;
+  type2_t payload2;
+  ...
+@};
+
+/*From gnunet_crypto_lib.h*/
+struct GNUNET_CRYPTO_EccSignaturePurpose @{
+  /**
+
+  The following constraints apply for a valid amount:
+
+   * This field is used to express the context in
+   * which the signature is made, ensuring that a
+   * signature cannot be lifted from one part of the protocol
+   * to another. See `src/include/taler_signatures.h` within the
+   * exchange's codebase (git://taler.net/exchange).
+   */
+  uint32_t purpose;
+  /**
+   * This field equals the number of bytes being signed,
+   * namely 'sizeof (struct Data)'.
+   */
+  uint32_t size;
+@};
+@end example
+@anchor{rest salt}@anchor{3f}
+@node Receiving Configuration,Receiving Terms of Service,Signatures<3>,Common 
encodings
+@anchor{rest config}@anchor{40}@anchor{rest receiving-configuration}@anchor{41}
+@subsubsection Receiving Configuration
+
+
+@anchor{rest get--config}@anchor{42}
+@deffn {HTTP Get} GET /config
+
+Obtain the configuration details of the escrow provider.
+
+@strong{Response:}
+
+Returns an @ref{43,,EscrowConfigurationResponse}.
+@anchor{rest escrowconfigurationresponse}@anchor{43}
+@example
+interface EscrowConfigurationResponse @{
+
+  // Protocol identifier, clarifies that this is an Anastasis provider.
+  name: "anastasis";
+
+  // libtool-style representation of the Exchange protocol version, see
+  // 
https://www.gnu.org/software/libtool/manual/html_node/Versioning.html#Versioning
+  // The format is "current:revision:age".
+  version: string;
+
+  // Currency in which this provider processes payments.
+  currency: string;
+
+  // Supported authorization methods.
+  methods: AuthorizationMethodConfig[];
+
+  // Maximum policy upload size supported.
+  storage_limit_in_megabytes: number;
+
+  // Payment required to maintain an account to store policy documents for a 
year.
+  // Users can pay more, in which case the storage time will go up 
proportionally.
+  annual_fee: Amount;
+
+  // Payment required to upload truth.  To be paid per upload.
+  truth_upload_fee: Amount;
+
+  // Limit on the liability that the provider is offering with
+  // respect to the services provided.
+  liability_limit: Amount;
+
+  // Salt value with 128 bits of entropy.
+  // Different providers
+  // will use different high-entropy salt values. The resulting
+  // **provider salt** is then used in various operations to ensure
+  // cryptographic operations differ by provider.  A provider must
+  // never change its salt value.
+  server_salt: string;
+
+@}
+@end example
+@anchor{rest authorizationmethodconfig}@anchor{44}
+@example
+interface AuthorizationMethodConfig @{
+  // Name of the authorization method.
+  type: string;
+
+  // Fee for accessing key share using this method.
+  cost: Amount;
+
+@}
+@end example
+@end deffn
+
+@node Receiving Terms of Service,Manage policy,Receiving Configuration,Common 
encodings
+@anchor{rest receiving-terms-of-service}@anchor{45}@anchor{rest 
terms}@anchor{46}
+@subsubsection Receiving Terms of Service
+
+
+@anchor{rest get--terms}@anchor{47}
+@deffn {HTTP Get} GET /terms
+
+Obtain the terms of service provided by the escrow provider.
+
+@strong{Response:}
+
+Returns the terms of service of the provider, in the best language
+and format available based on the client’s request.
+@end deffn
+
+@anchor{rest get--privacy}@anchor{48}
+@deffn {HTTP Get} GET /privacy
+
+Obtain the privacy policy of the service provided by the escrow provider.
+
+@strong{Response:}
+
+Returns the privacy policy of the provider, in the best language
+and format available based on the client’s request.
+@end deffn
+
+@node Manage policy,Managing truth,Receiving Terms of Service,Common encodings
+@anchor{rest id3}@anchor{49}@anchor{rest manage-policy}@anchor{4a}
+@subsubsection Manage policy
+
+
+This API is used by the Anastasis client to deposit or request encrypted
+recovery documents with the escrow provider.  Generally, a client will deposit
+the same encrypted recovery document with each escrow provider, but provide
+a different truth to each escrow provider.
+
+Operations by the client are identified and authorized by @code{$ACCOUNT_PUB}, 
which
+should be kept secret from third parties. @code{$ACCOUNT_PUB} should be an 
account
+public key using the Crockford base32-encoding.
+
+In the following, UUID is always defined and used according to RFC 
4122@footnote{https://tools.ietf.org/html/rfc4122}.
+
+@anchor{rest get--policy-$ACCOUNT_PUB[?version=$NUMBER]}@anchor{4b}
+@deffn {HTTP Get} GET /policy/$ACCOUNT_PUB[?version=$NUMBER]
+
+Get the customer’s encrypted recovery document.  If @code{version}
+is not specified, the server returns the latest available version.  If
+@code{version} is specified, returns the policy with the respective
+@code{version}.  The response must begin with the nonce and
+an AES-GCM tag and continue with the ciphertext.  Once decrypted, the
+plaintext is expected to contain:
+
+
+@itemize *
+
+@item
+the escrow policy
+
+@item
+the separately encrypted master public key
+@end itemize
+
+Note that the key shares required to decrypt the master public key are
+not included, as for this the client needs to obtain authorization.
+The policy does provide sufficient information for the client to determine
+how to authorize requests for @strong{truth}.
+
+The client MAY provide an @code{If-None-Match} header with an Etag.
+In that case, the server MUST additionally respond with an @code{304} status
+code in case the resource matches the provided Etag.
+
+@strong{Response}:
+
+
+@table @asis
+
+@item 200 
OK@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1}:
+
+The escrow provider responds with an @ref{4c,,EncryptedRecoveryDocument} 
object.
+
+@item 304 Not 
modified@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5}:
+
+The client requested the same resource it already knows.
+
+@item 400 Bad 
request@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1}:
+
+The @code{$ACCOUNT_PUB} is not an EdDSA public key.
+
+@item 402 Payment 
Required@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}:
+
+The account’s balance is too low for the specified operation.
+See the Taler payment protocol specification for how to pay.
+
+@item 403 
Forbidden@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4}:
+
+The required account signature was invalid.
+
+@item 404 Not 
found@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5}:
+
+The requested resource was not found.
+@end table
+
+@emph{Anastasis-Version}: $NUMBER — The server must return actual version of 
the encrypted recovery document via this header.
+If the client specified a version number in the header of the request, the 
server must return that version. If the client
+did not specify a version in the request, the server returns latest version of 
the @ref{4c,,EncryptedRecoveryDocument}.
+
+@emph{Etag}: Set by the server to the Base32-encoded SHA512 hash of the body. 
Used for caching and to prevent redundancies. The server MUST send the Etag if 
the status code is @code{200 OK}.
+
+@emph{If-None-Match}: If this is not the very first request of the client, 
this contains the Etag-value which the client has received before from the 
server.
+The client SHOULD send this header with every request (except for the first 
request) to avoid unnecessary downloads.
+
+@emph{Anastasis-Account-Signature}: The client must provide Base-32 encoded 
EdDSA signature over hash of body with @code{$ACCOUNT_PRIV}, affirming desire 
to download the requested encrypted recovery document.  The purpose used MUST 
be @code{TALER_SIGNATURE_ANASTASIS_POLICY_DOWNLOAD} (1401).
+@end deffn
+
+@anchor{rest post--policy-$ACCOUNT_PUB}@anchor{4d}
+@deffn {HTTP Post} POST /policy/$ACCOUNT_PUB
+
+Upload a new version of the customer’s encrypted recovery document.
+While the document’s structure is described in JSON below, the upload
+should just be the bytestream of the raw data (i.e. 32-byte nonce followed
+by 16-byte tag followed by the encrypted document).
+If the request has been seen before, the server should do nothing, and 
otherwise store the new version.
+The body must begin with a nonce, an AES-GCM tag and continue with the 
ciphertext.  The format
+is the same as specified for the response of the GET method. The
+Anastasis server cannot fully validate the format, but MAY impose
+minimum and maximum size limits.
+
+@strong{Request}:
+
+@*Query Parameters:
+
+@itemize *
+
+@item
+@code{storage_duration=YEARS} – For how many years from now would the client 
like us to
+store the recovery document? Defaults to 0 (that is, do
+not extend / prolong existing storage contract).
+The server will respond with a @code{402 Payment required}, but only
+if the rest of the request is well-formed (account
+signature must match).  Clients that do not actually
+intend to make a new upload but that only want to pay
+may attempt to upload the latest backup again, as this
+option will be checked before the @code{304 Not modified}
+case.
+
+@item
+@code{timeout_ms=NUMBER} – @emph{Optional.}  If specified, the Anastasis 
server will
+wait up to @code{timeout_ms} milliseconds for completion of the payment before
+sending the HTTP response.  A client must never rely on this behavior, as the
+backend may return a response immediately.
+@end itemize
+
+
+@emph{If-None-Match}: This header MUST be present and set to the SHA512 hash 
(Etag) of the body by the client.
+The client SHOULD also set the @code{Expect: 100-Continue} header and wait for 
@code{100 continue}
+before uploading the body.  The server MUST
+use the Etag to check whether it already knows the encrypted recovery document 
that is about to be uploaded.
+The server MUST refuse the upload with a @code{304} status code if the Etag 
matches
+the latest version already known to the server.
+
+@emph{Anastasis-Policy-Signature}: The client must provide Base-32 encoded 
EdDSA signature over hash of body with @code{$ACCOUNT_PRIV}, affirming desire 
to upload an encrypted recovery document.
+
+@emph{Payment-Identifier}: Base-32 encoded 32-byte payment identifier that was 
included in a previous payment (see @code{402} status code). Used to allow the 
server to check that the client paid for the upload (to protect the server 
against DoS attacks) and that the client knows a real secret of financial value 
(as the @strong{kdf_id} might be known to an attacker). If this header is 
missing in the client’s request (or the associated payment has exceeded the 
upload limit), the server mus [...]
+
+@strong{Response}:
+
+
+@table @asis
+
+@item 204 No 
content@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5}:
+
+The encrypted recovery document was accepted and stored.  
@code{Anastasis-Version} and @code{Anastasis-UUID} headers
+indicate what version and UUID was assigned to this encrypted recovery 
document upload by the server.
+
+@item 304 Not 
modified@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5}:
+
+The same encrypted recovery document was previously accepted and stored.  
@code{Anastasis-Version} header
+indicates what version was previously assigned to this encrypted recovery 
document.
+
+@item 400 Bad 
request@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1}:
+
+The @code{$ACCOUNT_PUB} is not an EdDSA public key or mandatory headers are 
missing.
+The response body MUST elaborate on the error using a Taler error code in the 
typical JSON encoding.
+
+@item 402 Payment 
required@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}:
+
+The account’s balance is too low for the specified operation.
+See the Taler payment protocol specification for how to pay.
+The response body MAY provide alternative means for payment.
+
+@item 403 
Forbidden@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4}:
+
+The required account signature was invalid.  The response body may elaborate 
on the error.
+
+@item 413 Request entity too 
large@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.14}:
+
+The upload is too large @emph{or} too small. The response body may elaborate 
on the error.
+@end table
+
+@strong{Details:}
+@anchor{rest encryptedrecoverydocument}@anchor{4c}
+@example
+interface EncryptedRecoveryDocument @{
+  // Nonce used to compute the (iv,key) pair for encryption of the
+  // encrypted_compressed_recovery_document.
+  nonce: [32]; //bytearray
+
+  // Authentication tag.
+  aes_gcm_tag: [16]; //bytearray
+
+  // Variable-size encrypted recovery document. After decryption,
+  // this contains a gzip compressed JSON-encoded `RecoveryDocument`.
+  // The nonce of the HKDF for this encryption must include the
+  // string "ERD".
+  encrypted_compressed_recovery_document: []; //bytearray of undefined length
+
+@}
+@end example
+@anchor{rest recoverydocument}@anchor{4e}
+@example
+interface RecoveryDocument @{
+  // Account identifier at backup provider, AES-encrypted with
+  // the (symmetric) master_key, i.e. an URL
+  // https://sync.taler.net/$BACKUP_ID and
+  // a private key to decrypt the backup.  Anastasis is oblivious
+  // to the details of how this is ultimately encoded.
+  backup_account: []; //bytearray of undefined length
+
+  // List of escrow providers and selected authentication method.
+  methods: EscrowMethod[];
+
+  // List of possible decryption policies.
+  policy: DecryptionPolicy[];
+
+@}
+@end example
+@anchor{rest escrowmethod}@anchor{4f}
+@example
+interface EscrowMethod @{
+  // URL of the escrow provider (including possibly this Anastasis server).
+  provider_url : string;
+
+  // Type of the escrow method (e.g. security question, SMS etc.).
+  escrow_type: string;
+
+  // UUID of the escrow method (see /truth/ API below).
+  uuid: string;
+
+  // Key used to encrypt the `Truth` this `EscrowMethod` is related to.
+  // Client has to provide this key to the server when using 
`@w{`}/truth/`@w{`}.
+  truth_encryption_key: [32]; //bytearray
+
+  // Salt used to encrypt the truth on the Anastasis server.
+  truth_salt: [32]; //bytearray
+
+  // The challenge to give to the user (i.e. the security question
+  // if this is challenge-response).
+  // (Q: as string in base32 encoding?)
+  // (Q: what is the mime-type of this value?)
+  //
+  // For some methods, this value may be absent.
+  //
+  // The plaintext challenge is not revealed to the
+  // Anastasis server.
+  challenge: []; //bytearray of undefined length
+
+@}
+@end example
+@anchor{rest decryptionpolicy}@anchor{50}
+@example
+interface DecryptionPolicy @{
+  // Salt included to encrypt master key share when
+  // using this decryption policy.
+  policy_salt: [32]; //bytearray
+
+  // Master key, AES-encrypted with key derived from
+  // salt and keyshares revealed by the following list of
+  // escrow methods identified by UUID.
+  encrypted_master_key: [32]; //bytearray
+
+  // List of escrow methods identified by their UUID.
+  uuid: string[];
+
+@}
+@end example
+@end deffn
+
+@node Managing truth,,Manage policy,Common encodings
+@anchor{rest managing-truth}@anchor{51}@anchor{rest truth}@anchor{52}
+@subsubsection Managing truth
+
+
+This API is used by the Anastasis client to deposit @strong{truth} or request 
a (encrypted) @strong{key share} with
+the escrow provider.
+
+An @strong{escrow method} specifies an Anastasis provider and how the user 
should
+authorize themself.  The @strong{truth} API allows the user to provide the
+(encrypted) key share to the respective escrow provider, as well as auxiliary
+data required for such a respective escrow method.
+
+An Anastasis-server may store truth for free for a certain time period, or
+charge per truth operation using GNU Taler.
+
+@anchor{rest post--truth-$UUID}@anchor{53}
+@deffn {HTTP Post} POST /truth/$UUID
+
+Upload a @ref{54,,TruthUploadRequest}-Object according to the policy the 
client created before (see @ref{4e,,RecoveryDocument}).
+If request has been seen before, the server should do nothing, and otherwise 
store the new object.
+
+@strong{Request:}
+
+@*Query Parameters:
+
+@itemize *
+
+@item
+@code{timeout_ms=NUMBER} – @emph{Optional.}  If specified, the Anastasis 
server will
+wait up to @code{timeout_ms} milliseconds for completion of the payment before
+sending the HTTP response.  A client must never rely on this behavior, as the
+backend may return a response immediately.
+@end itemize
+
+
+@strong{Response:}
+
+
+@table @asis
+
+@item 204 No 
content@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5}:
+
+Truth stored successfully.
+
+@item 304 Not 
modified@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5}:
+
+The same truth was previously accepted and stored under this UUID.  The
+Anastasis server must still update the expiration time for the truth when 
returning
+this response code.
+
+@item 402 Payment 
required@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}:
+
+This server requires payment to store truth per item.
+See the Taler payment protocol specification for how to pay.
+The response body MAY provide alternative means for payment.
+
+@item 409 
Conflict@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10}:
+
+The server already has some truth stored under this UUID. The client should 
check that it
+is generating UUIDs with enough entropy.
+
+@item 412 Precondition 
failed@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.13}:
+
+The selected authentication method is not supported on this provider.
+@end table
+
+@strong{Details:}
+@anchor{rest truthuploadrequest}@anchor{54}
+@example
+interface TruthUploadRequest @{
+  // Contains the information of an interface `EncryptedKeyShare`, but simply
+  // as one binary block (in Crockford Base32 encoding for JSON).
+  key_share_data: []; //bytearray
+
+  // Key share method, i.e. "security question", "SMS", "e-mail", ...
+  type: string;
+
+  // Nonce used to compute the (iv,key) pair for encryption of the
+  // encrypted_truth.
+  nonce: [32]; //bytearray
+
+  // Authentication tag of `@w{`}encrypted_truth`@w{`}.
+  aes_gcm_tag: [16]; //bytearray
+
+  // Variable-size truth. After decryption,
+  // this contains the ground truth, i.e. H(challenge answer),
+  // phone number, e-mail address, picture, fingerprint, ...
+  // **base32 encoded**.
+  //
+  // The nonce of the HKDF for this encryption must include the
+  // string "ECT".
+  encrypted_truth: [80]; //bytearray
+
+  // MIME type of truth, i.e. text/ascii, image/jpeg, etc.
+  truth_mime: string;
+
+  // For how many years from now would the client like us to
+  // store the truth?
+  storage_duration_years: Integer;
+
+@}
+@end example
+@end deffn
+
+@anchor{rest get--truth-$UUID[?response=$H_RESPONSE]}@anchor{55}
+@deffn {HTTP Get} GET /truth/$UUID[?response=$H_RESPONSE]
+
+Get the stored encrypted key share. If @code{$H_RESPONSE} is specified by the 
client, the server checks
+if @code{$H_RESPONSE} matches the expected response specified before within 
the @ref{54,,TruthUploadRequest} (see @code{encrypted_truth}).
+Also, the user has to provide the correct @emph{truth_encryption_key} with 
every get request (see below).
+When @code{$H_RESPONSE} is correct, the server responds with the encrypted key 
share.
+The encrypted key share is returned simply as a byte array and not in JSON 
format.
+
+@strong{Response}:
+
+
+@table @asis
+
+@item 200 
OK@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1}:
+
+@ref{56,,EncryptedKeyShare} is returned in body (in binary).
+
+@item 202 
Accepted@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.3}:
+
+The escrow provider will respond out-of-band (i.e. SMS).
+The body may contain human-readable instructions on next steps.
+
+@item >>208 Already Reported<<:
+
+An authentication challenge was recently send, client should
+simply respond to the pending challenge.
+
+@item 303 See 
other@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4}:
+
+The provider redirects for authentication (i.e. video identification/WebRTC).
+If the client is not a browser, it should launch a browser at the URL
+given in the @code{Location} header and allow the user to re-try the operation
+after successful authorization.
+
+@item 402 Payment 
required@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}:
+
+The service requires payment for access to truth.
+See the Taler payment protocol specification for how to pay.
+The response body MAY provide alternative means for payment.
+
+@item 403 
Forbidden@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4}:
+
+The server requires a valid “response” to the challenge associated with the 
UUID.
+
+@item 404 Not 
found@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5}:
+
+The server does not know any truth under the given UUID.
+
+@item 410 
Gone@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.11}:
+
+The server has not (recently) issued a challenge under the given UUID,
+but a reply was provided. (This does not apply for secure question.)
+
+@item 417 Expectation 
Failed@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.18}:
+
+The decrypted @code{truth} does not match the expectations of the 
authentication
+backend, i.e. a phone number for sending an SMS is not a number, or
+an e-mail address for sending an E-mail is not a valid e-mail address.
+
+@item 503 Service 
Unavailable@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.4}:
+
+Server is out of Service.
+@end table
+
+@emph{Truth-Decryption-Key}: Key used to encrypt the @strong{truth} (see 
encrypted_truth within @ref{54,,TruthUploadRequest}) and which has to provided 
by the user. The key is stored with
+the according @ref{4f,,EscrowMethod}. The server needs this key to get the 
info out of @ref{54,,TruthUploadRequest} needed to verify the @code{$RESPONSE}.
+
+@strong{Details:}
+@anchor{rest encryptedkeyshare}@anchor{56}
+@example
+interface EncryptedKeyShare @{
+  // Nonce used to compute the decryption (iv,key) pair.
+  nonce_i: [32]; //bytearray
+
+  // Authentication tag.
+  aes_gcm_tag_i: [16]; //bytearray
+
+  // Encrypted key-share in base32 encoding.
+  // After decryption, this yields a `KeyShare`.  Note that
+  // the `KeyShare` MUST be encoded as a fixed-size binary
+  // block (instead of in JSON encoding).
+  //
+  // HKDF for the key generation must include the
+  // string "eks" as salt.
+  // Depending on the method,
+  // the HKDF may additionally include
+  // bits from the response (i.e. some hash over the
+  // answer to the security question).
+  encrypted_key_share_i: [32]; //bytearray
+
+@}
+@end example
+@anchor{rest keyshare}@anchor{57}
+@example
+interface KeyShare @{
+  // Key material to concatenate with policy_salt and KDF to derive
+  // the key to decrypt the master key.
+  key_share: [32]; //bytearray
+
+  // Signature over method, UUID, and `@w{`}key_share`@w{`}.
+  account_sig: EddsaSignature;
+
+@}
+@end example
+@end deffn
+
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
+
+@node Reducer API,Authentication Methods,REST API,Documentation Overview
+@anchor{reducer doc}@anchor{58}@anchor{reducer reducer-api}@anchor{59}
+@section Reducer API
+
+
+This section describes the Anastasis Reducer API which is used by client 
applications
+to store or load the different states the client application can have.
+The reducer takes a @ref{5a,,state} in JSON syntax and returns the new state 
in JSON syntax.
+
+For example a @strong{state} may take the following structure:
+
+@example
+@{
+  "backup_state": "CONTINENT_SELECTING",
+  "continents": [
+    "Europe",
+    "North_America"
+  ]
+@}
+@end example
+
+The new state depends on the previous one and on the transition 
@ref{5b,,action} with its
+arguments given to the reducer. A @strong{transition argument} also is a 
statement in JSON syntax:
+
+@example
+@{
+  "continent": "Europe"
+@}
+@end example
+
+The new state returned by the reducer with the state and transition argument 
defined
+above would look like following for the transition @ref{5b,,action} 
@code{select_continent}:
+
+@example
+@{
+  "backup_state": "COUNTRY_SELECTING",
+  "continents": [
+    "Europe",
+    "North_America"
+  ],
+  "selected_continent": "Europe",
+  "countries": [
+    @{
+      "code": "ch",
+      "name": "Switzerland",
+      "continent": "Europe",
+      "name_i18n": @{
+        "de_DE": "Schweiz",
+        "de_CH": "Schwiiz",
+        "fr": "Suisse",
+        "en": "Swiss"
+      @},
+      "currency": "CHF"
+    @},
+    @{
+      "code": "de",
+      "name": "Germany",
+      "continent": "Europe",
+      "continent_i18n": @{
+        "de": "Europa"
+      @},
+      "name_i18n": @{
+        "de_DE": "Deutschland",
+        "de_CH": "Deutschland",
+        "fr": "Allemagne",
+        "en": "Germany"
+      @},
+      "currency": "EUR"
+    @}
+  ]
+@}
+@end example
+
+@menu
+* States::
+* Backup Reducer::
+* Recovery Reducer::
+* Reducer transitions::
+
+@end menu
+
+@node States,Backup Reducer,,Reducer API
+@anchor{reducer states}@anchor{5c}
+@subsection States
+
+
+Overall, the reducer knows the following states:
+
+@quotation
+
+
+@itemize -
+
+@item
+
+@table @asis
+
+@item @strong{ERROR}: The transition led to an error. No further transitions 
are possible from
+
+this state, but the client may want to continue from a previous state.
+@end table
+
+@item
+
+@table @asis
+
+@item @strong{CONTINENT_SELECTING}: The user should specify the continent 
where they are living,
+
+so that we can show a list of countries to choose from.
+@end table
+
+@item
+
+@table @asis
+
+@item @strong{COUNTRY_SELECTING}: The user should specify the country where 
they are living,
+
+so that we can determine appropriate attributes, currencies and Anastasis
+providers.
+@end table
+
+@item
+
+@table @asis
+
+@item @strong{USER_ATTRIBUTES_COLLECTING}: The user should provide the 
country-specific personal
+
+attributes.
+@end table
+
+@item
+
+@table @asis
+
+@item @strong{AUTHENTICATIONS_EDITING}: The user should add authentication 
methods to be used
+
+during recovery.
+@end table
+
+@item
+@strong{POLICIES_REVIEWING}: The user should review the recovery policies.
+
+@item
+@strong{SECRET_EDITING}: The user should edit the secret to be backed up.
+
+@item
+
+@table @asis
+
+@item @strong{TRUTHS_PAYING}: The user needs to pay for one or more uploads of 
data associated
+
+with an authentication method.
+@end table
+
+@item
+@strong{POLICIES_PAYING}: The user needs to pay for storing the recovery 
policy document.
+
+@item
+@strong{BACKUP_FINISHED}: A backup has been successfully generated.
+
+@item
+
+@table @asis
+
+@item @strong{SECRET_SELECTING}: The user needs to select a recovery policy 
document with
+
+the secret that is to be recovered.
+@end table
+
+@item
+
+@table @asis
+
+@item @strong{CHALLENGE_SELECTING}: The user needs to select an authorization 
challenge to
+
+proceed with recovery.
+@end table
+
+@item
+@strong{CHALLENGE_PAYING}: The user needs to pay to proceed with the 
authorization challenge.
+
+@item
+@strong{CHALLENGE_SOLVING}: The user needs to solve the authorization 
challenge.
+
+@item
+@strong{RECOVERY_FINISHED}: The secret of the user has been recovered.
+@end itemize
+@end quotation
+
+State names:
+
+@quotation
+
+
+@itemize -
+
+@item
+In SELECTING-states, the user has to choose one value out of a predefined set 
of values (for example a continent out of a set of continents).
+
+@item
+In COLLECTING-states, the user has to give certain values.
+
+@item
+In EDITING-states, the user is free to choose which values he wants to give.
+
+@item
+In REVEIWING-states, the user may make a few choices, but primarily is 
expected to affirm something.
+
+@item
+in PAYING-states, the user must make a payment.
+
+@item
+in FINISHED-states, the operation has definitively concluded.
+@end itemize
+@end quotation
+
+@node Backup Reducer,Recovery Reducer,States,Reducer API
+@anchor{reducer backup-reducer}@anchor{5d}
+@subsection Backup Reducer
+
+@anchor{reducer state}@anchor{5a}@anchor{reducer action}@anchor{5b}
+
+@float Figure
+
+@image{anastasis-figures/anastasis_reducer_backup,,,fig-anastasis_reducer_backup,png}
+
+@caption{Backup states and their transitions.}
+
+@end float
+
+
+The illustration above shows the different states the reducer can have during 
a backup
+process.
+
+@node Recovery Reducer,Reducer transitions,Backup Reducer,Reducer API
+@anchor{reducer recovery-reducer}@anchor{5e}
+@subsection Recovery Reducer
+
+
+
+@float Figure
+
+@image{anastasis-figures/anastasis_reducer_recovery,,,fig-anastasis_reducer_recovery,png}
+
+@caption{Recovery states and their transitions.}
+
+@end float
+
+
+The illustration above shows the different states the reducer can have during 
a recovery
+process.
+
+@node Reducer transitions,,Recovery Reducer,Reducer API
+@anchor{reducer reducer-transitions}@anchor{5f}
+@subsection Reducer transitions
+
+
+In the following, the individual transitions will be specified in more detail.
+Note that we only show fields added by the reducer, typically the previous
+state is preserved to enable “back” transitions to function smoothly.
+
+@menu
+* Initial state::
+* Common transitions::
+* Backup transitions::
+* Recovery transitions::
+
+@end menu
+
+@node Initial state,Common transitions,,Reducer transitions
+@anchor{reducer initial-state}@anchor{60}
+@subsubsection Initial state
+
+
+The initial states for backup and recovery processes are:
+
+@strong{Initial backup state:}
+
+@example
+@{
+  "backup_state": "CONTINENT_SELECTING",
+  "continents": [
+    "Europe",
+    "North America"
+  ]
+@}
+@end example
+
+@strong{Initial recovery state:}
+
+@example
+@{
+  "recovery_state": "CONTINENT_SELECTING",
+  "continents": [
+    "Europe",
+    "North America"
+  ]
+@}
+@end example
+
+Here, “continents” is an array of English strings with the names of the
+continents which contain countries for which Anastasis could function (based
+on having providers that are known to operate and rules being provided for
+user attributes from those countries).
+
+For internationalization, another field @code{continents_i18n} may be present.
+This field would be a map of language names to arrays of translated
+continent names:
+
+@example
+@{
+  "recovery_state": "CONTINENT_SELECTING",
+  "continents": [
+    "Europe",
+    "North America"
+  ]
+  "continents_i18n":
+  @{
+    "de_DE" : [
+      "Europa",
+      "Nordamerika"
+      ],
+    "de_CH" : [
+      "Europa",
+      "Nordamerika"
+      ]
+  @}
+@}
+@end example
+
+Translations must be given in the same order as the main English array.
+
+@node Common transitions,Backup transitions,Initial state,Reducer transitions
+@anchor{reducer common-transitions}@anchor{61}
+@subsubsection Common transitions
+
+
+@strong{select_continent:}
+
+Here the user specifies the continent they live on.  Arguments (example):
+
+@example
+@{
+  "continent": "Europe"
+@}
+@end example
+
+The continent must be given using the English name from the @code{continents} 
array.
+Using a translated continent name is invalid and may result in failure.
+
+The reducer returns an updated state with a list of countries to choose from,
+for example:
+
+@example
+@{
+  "backup_state": "COUNTRY_SELECTING",
+  "selected_continent": "Europe",
+  "countries": [
+    @{
+      "code": "ch",
+      "name": "Switzerland",
+      "continent": "Europe",
+      "name_i18n": @{
+        "de_DE": "Schweiz",
+        "de_CH": "Schwiiz",
+        "fr": "Suisse",
+        "en": "Swiss"
+      @},
+      "currency": "CHF"
+    @},
+    @{
+      "code": "de",
+      "name": "Germany",
+      "continent": "Europe",
+      "continent_i18n": @{
+        "de": "Europa"
+      @},
+      "name_i18n": @{
+        "de_DE": "Deutschland",
+        "de_CH": "Deutschland",
+        "fr": "Allemagne",
+        "en": "Germany"
+      @},
+      "currency": "EUR"
+    @}
+  ]
+@}
+@end example
+
+Here @code{countries} is an array of countries on the 
@code{selected_continent}.  For
+each country, the @code{code} is the ISO 3166-1 alpha-2 country code.  The
+@code{continent} is only present because some countries span continents, the
+information is redundant and will always match @code{selected_continent}.  The
+@code{name} is the name of the country in English, internationalizations of the
+name may be provided in @code{name_i18n}.  The @code{currency} is @strong{an} 
official
+currency of the country, if a country has multiple currencies, it may appear
+multiple times in the list.  In this case, the user should select the entry
+with the currency they intend to pay with.  It is also possible for users
+to select a currency that does not match their country, but user interfaces
+should by default try to use currencies that match the user’s residence.
+
+@strong{select_country:}
+
+Selects the country (via the country code) and specifies the currency.
+The latter is needed as some countries have more than one currency,
+and some use-cases may also involve users insisting on paying with
+foreign currency.
+
+Arguments (example):
+
+@example
+@{
+  "country_code": "de",
+  "currency": "EUR"
+@}
+@end example
+
+The @code{country_code} must be an ISO 3166-1 alpha-2 country code from
+the array of @code{countries} of the reducer’s state.  The @code{currency}
+field must be a valid currency accepted by the Taler payment system.
+
+The reducer returns a new state with the list of attributes the
+user is expected to provide, as well as possible authentication
+providers that accept payments in the selected currency:
+
+@example
+@{
+  "backup_state": "USER_ATTRIBUTES_COLLECTING",
+  "selected_country": "de",
+  "currency": "EUR",
+  "required_attributes": [
+    @{
+      "type": "string",
+      "name": "full_name",
+      "label": "Full name",
+      "label_i18n": @{
+        "de_DE": "Vollstaendiger Name",
+        "de_CH": "Vollstaendiger. Name",
+        "fr": "Nom complet",
+        "en": "Full name"
+      @},
+      "widget": "anastasis_gtk_ia_full_name",
+      "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+    @},
+    @{
+      "type": "date",
+      "name": "birthdate",
+      "label": "Birthdate",
+      "label_i18n": @{
+        "de_DE": "Geburtsdatum",
+        "de_CH": "Geburtsdatum",
+        "fr": "Date de naissance",
+        "en": "Birthdate"
+      @},
+      "uuid" : "83d655c7-bdb6-484d-904e-80c1058c8854"
+      "widget": "anastasis_gtk_ia_birthdate"
+    @},
+        @{
+           "type": "string",
+       "name": "tax_number",
+           "label": "Taxpayer identification number",
+           "label_i18n":@{
+                 "de_DE": "Steuerliche Identifikationsnummer",
+                 "de_CH": "Steuerliche Identifikationsnummer",
+                 "en": "German taxpayer identification number"
+           @},
+           "widget": "anastasis_gtk_ia_tax_de",
+       "uuid": "dae48f85-e3ff-47a4-a4a3-ed981ed8c3c6",
+           "validation-regex": "^[0-9]@{11@}$",
+           "validation-logic": "DE_TIN_check"
+        @},
+    @{
+      "type": "string",
+      "name": "social_security_number",
+      "label": "Social security number",
+      "label_i18n": @{
+        "de_DE": "Sozialversicherungsnummer",
+        "de_CH": "Sozialversicherungsnummer",
+        "fr": "Numéro de sécurité sociale",
+        "en": "Social security number"
+      @},
+      "widget": "anastasis_gtk_ia_ssn",
+          "validation-regex": "^[0-9]@{8@}[[:upper:]][0-9]@{3@}$",
+          "validation-logic": "DE_SVN_check"
+      "optional" : true
+  @}
+  ],
+  "authentication_providers": @{
+    "http://localhost:8089/": @{
+      "http_status": 200,
+      "methods": [
+        @{ "type" : "question",
+          "usage_fee" : "EUR:0.0" @},
+        @{ "type" : "sms",
+          "usage_fee" : "EUR:0.5" @}
+      ],
+      "annual_fee": "EUR:4.99",
+      "truth_upload_fee": "EUR:4.99",
+      "liability_limit": "EUR:1",
+      "currency": "EUR",
+      "truth_lifetime": @{ "d_ms" : 50000000 @},
+      "storage_limit_in_megabytes": 1,
+      "provider_name": "Anastasis 4",
+      "salt": "CXAPCKSH9D3MYJTS9536RHJHCW"
+    @},
+    "http://localhost:8088/": @{
+      "http_status": 200,
+      "methods": [
+        @{ "type" : "question",
+          "usage_fee" : "EUR:0.01" @},
+        @{ "type" : "sms",
+          "usage_fee" : "EUR:0.55" @}
+      ],
+      "annual_fee": "EUR:0.99",
+      "truth_upload_fee": "EUR:3.99",
+      "liability_limit": "EUR:1",
+      "currency": "EUR",
+      "truth_lifetime": @{ "d_ms" : 50000000 @},
+      "storage_limit_in_megabytes": 1,
+      "provider_name": "Anastasis 4",
+      "salt": "CXAPCKSH9D3MYJTS9536RHJHCW"
+    @}
+  @}
+@}
+@end example
+
+The array of @code{required_attributes} contains attributes about the user
+that must be provided includes:
+
+@quotation
+
+
+@itemize -
+
+@item
+@strong{type}: The type of the attribute, for now only @code{string} and 
@code{date} are
+supported.
+
+@item
+@strong{name}: The name of the attribute, this is the key under which the
+attribute value must be provided later. The name must be unique per response.
+
+@item
+@strong{label}: A human-readable description of the attribute in English.
+Translated descriptions may be provided under @strong{label_i18n}.
+
+@item
+@strong{uuid}: A UUID that uniquely identifies identical attributes across
+different countries. Useful to preserve values should the user enter
+some attributes, and then switch to another country.  Note that
+attributes must not be preserved if they merely have the same @strong{name},
+only the @strong{uuid} will be identical if the semantics is identical.
+
+@item
+@strong{widget}: An optional name of a widget that is known to nicely render
+the attribute entry in user interfaces where named widgets are
+supported.
+
+@item
+@strong{validation-regex}: An optional extended POSIX regular expression
+that is to be used to validate (string) inputs to ensure they are
+well-formed.
+
+@item
+@strong{validation-logic}: Optional name of a function that should be called
+to validate the input.  If the function is not known to the particular
+client, the respective validation can be skipped (at the expense of
+typos by users not being detected, possibly rendering secrets
+irrecoverable).
+
+@item
+@strong{optional}: Optional boolean field that, if @code{true}, indicates that
+this attribute is not actually required but optional and users MAY leave
+it blank in case they do not have the requested information. Used for
+common fields that apply to some large part of the population but are
+not sufficiently universal to be actually required.
+@end itemize
+@end quotation
+
+The authentication providers are listed under a key that is the
+base URL of the service. For each provider, the following
+information is provided if the provider was successfully contacted:
+
+@quotation
+
+
+@itemize -
+
+@item
+@strong{http_status}: HTTP status code, always @code{200} on success.
+
+@item
+@strong{methods}: Array of authentication methods supported by this
+provider. Includes the @strong{type} of the authentication method
+and the @strong{usage_fee} (how much the user must pay for authorization
+using this method during recovery).
+
+@item
+@strong{annual_fee}: Fee the provider charges to store the recovery
+policy for one year.
+
+@item
+@strong{truth_upload_fee}: Fee the provider charges to store a key share.
+
+@item
+@strong{liability_limit}: Amount the provider can be held liable for in
+case a key share or recovery document cannot be recovered due to
+provider failures.
+
+@item
+@strong{currency}: Currency in which the provider wants to be paid,
+will match all of the fees.
+
+@item
+@strong{storage_limit_in_megabytes}: Maximum size of an upload (for
+both recovery document and truth data) in megabytes.
+
+@item
+@strong{provider_name}: Human-readable name of the provider’s business.
+
+@item
+@strong{salt}: Salt value used by the provider, used to derive the
+user’s identity at this provider. Should be unique per provider,
+and must never change for a given provider.  The salt is
+base32 encoded.
+@end itemize
+@end quotation
+
+If contacting the provider failed, the information returned is:
+
+@quotation
+
+
+@itemize -
+
+@item
+@strong{http_status}: HTTP status code (if available, possibly 0 if
+we did not even obtain an HTTP response).
+
+@item
+@strong{error_code}: Taler error code, never 0.
+@end itemize
+@end quotation
+
+@strong{add_provider}:
+
+This operation can be performed in state @code{USER_ATTRIBUTES_COLLECTING}.  It
+adds one or more Anastasis providers to the list of providers the reducer
+should henceforth consider.  Note that removing providers is not possible at
+this time.
+
+Here, the client must provide an array with the base URLs of the
+providers to add, for example:
+
+@example
+@{
+  "urls": [
+    "http://localhost:8888/";,
+    "http://localhost:8089/";
+  ]
+@}
+@end example
+
+Note that existing providers will remain in the state.  The following is an
+example for an expected new state where the service on port 8089 is
+unreachable, the service on port 8088 was previously known, and service on
+port 8888 was now added:
+
+@example
+@{
+  "backup_state": "USER_ATTRIBUTES_COLLECTING",
+  "authentication_providers": @{
+    "http://localhost:8089/": @{
+      "error_code": 11,
+      "http_status": 0
+    @},
+    "http://localhost:8088/": @{
+      "http_status": 200,
+      "methods": [
+        @{ "type" : "question",
+          "usage_fee" : "EUR:0.01" @},
+        @{ "type" : "sms",
+          "usage_fee" : "EUR:0.55" @}
+      ],
+      "annual_fee": "EUR:0.99",
+      "truth_upload_fee": "EUR:3.99",
+      "liability_limit": "EUR:1",
+      "currency": "EUR",
+      "truth_lifetime": @{ "d_ms" : 50000000 @},
+      "storage_limit_in_megabytes": 1,
+      "provider_name": "Anastasis 4",
+      "salt": "CXAPCKSH9D3MYJTS9536RHJHCW"
+    @}
+    "http://localhost:8888/": @{
+      "methods": [
+        @{ "type" : "question",
+          "usage_fee" : "EUR:0.01" @},
+        @{ "type" : "sms",
+          "usage_fee" : "EUR:0.55" @}
+      ],
+      "annual_fee": "EUR:0.99",
+      "truth_upload_fee": "EUR:3.99",
+      "liability_limit": "EUR:1",
+      "currency": "EUR",
+      "truth_lifetime": @{ "d_ms" : 50000000 @},
+      "storage_limit_in_megabytes": 1,
+      "provider_name": "Anastasis 42",
+      "salt": "BXAPCKSH9D3MYJTS9536RHJHCX"
+    @}
+  @}
+@}
+@end example
+
+@node Backup transitions,Recovery transitions,Common transitions,Reducer 
transitions
+@anchor{reducer backup-transitions}@anchor{62}
+@subsubsection Backup transitions
+
+
+@strong{enter_user_attributes:}
+
+This transition provides the user’s personal attributes. The specific set of
+attributes required depends on the country of residence of the user.  Some
+attributes may be optional, in which case they should be omitted entirely
+(that is, not simply be set to @code{null} or an empty string).  Example
+arguments would be:
+
+@example
+@{
+  "identity_attributes": @{
+    "full_name": "Max Musterman",
+    "social_security_number": "123456789",
+    "birthdate": "2000-01-01",
+    "birthplace": "Earth"
+ @}
+@}
+@end example
+
+Note that at this stage, the state machines between backup and
+recovery diverge and the @code{recovery_state} will begin to look
+very different from the @code{backup_state}.
+
+For backups, if all required attributes are present, the reducer will
+transition to an @code{AUTHENTICATIONS_EDITING} state with the attributes added
+to it:
+
+@example
+@{
+  "backup_state": "AUTHENTICATIONS_EDITING",
+  "identity_attributes": @{
+    "full_name": "Max Musterman",
+    "social_security_number": "123456789",
+    "birthdate": "2000-01-01",
+    "birthplace": "Earth"
+  @}
+@}
+@end example
+
+If required attributes are missing, do not match the required regular
+expression, or fail the custom validation logic, the reducer SHOULD transition
+to an error state indicating what was wrong about the input.  A reducer that
+does not support some specific validation logic MAY accept the invalid input
+and proceed anyway.  The error state will include a Taler error code that
+is specific to the failure, and optional details.  Example:
+
+@example
+@{
+  "backup_state": "ERROR",
+  "code": 8404,
+  "hint": "An input did not match the regular expression.",
+  "detail": "social_security_number"
+@}
+@end example
+
+Clients may safely repeat this transition to validate the user’s inputs
+until they satisfy all of the constraints.  This way, the user interface
+does not have to perform the input validation directly.
+
+@strong{add_authentication}:
+
+This transition adds an authentication method.  The method must be supported
+by one or more providers that are included in the current state.  Adding an
+authentication method requires specifying the @code{type} and 
@code{instructions} to
+be given to the user.  The @code{challenge} is encrypted and stored at the
+Anastasis provider. The specific semantics of the value depend on the
+@code{type}.  Typical challenges values are a phone number (to send an SMS to),
+an e-mail address (to send a PIN code to) or the answer to a security
+question.  Note that these challenge values will still be encrypted (and
+possibly hashed) before being given to the Anastasis providers.
+
+Note that the @code{challenge} must be given in Crockford Base32 encoding, as 
it
+MAY include binary data (such as a photograph of the user).  In the latter
+case, the optional @code{mime_type} field must be provided to give the MIME 
type
+of the value encoded in @code{challenge}.
+
+@example
+@{
+  "authentication_method":
+  @{
+    "type": "question",
+    "mime_type" : "text/plain",
+    "instructions" : "What is your favorite GNU package?",
+    "challenge" : "E1QPPS8A",
+  @}
+@}
+@end example
+
+If the information provided is valid, the reducer will add the new
+authentication method to the array of authentication methods:
+
+@example
+@{
+  "backup_state": "AUTHENTICATIONS_EDITING",
+  "authentication_methods": [
+    @{
+      "type": "question",
+      "mime_type" : "text/plain",
+      "instructions" : "What is your favorite GNU package?",
+      "challenge" : "E1QPPS8A",
+    @},
+    @{
+      "type": "email",
+      "instructions" : "E-mail to user@@*le.com",
+      "challenge": "ENSPAWJ0CNW62VBGDHJJWRVFDM50"
+    @}
+  ]
+@}
+@end example
+
+@strong{delete_authentication}:
+
+This transition can be used to remove an authentication method from the
+array of authentication methods. It simply requires the index of the
+authentication method to remove. Note that the array is 0-indexed:
+
+@example
+@{
+  "authentication_method": 1
+@}
+@end example
+
+Assuming we begin with the state from the example above, this would
+remove the @code{email} authentication method, resulting in the following
+response:
+
+@example
+@{
+  "backup_state": "AUTHENTICATIONS_EDITING",
+  "authentication_methods": [
+    @{
+      "type": "question",
+      "mime_type" : "text/plain",
+      "instructions" : "What is your favorite GNU package?",
+      "challenge" : "gdb",
+    @}
+  ]
+@}
+@end example
+
+If the index is invalid, the reducer will instead
+transition into an @code{ERROR} state.
+
+@strong{next} (from @code{AUTHENTICATIONS_EDITING}):
+
+This transition confirms that the user has finished adding (or removing)
+authentication methods, and that the system should now automatically compute
+a set of reasonable recovery policies.
+
+This transition does not take any mandatory arguments.  Optional arguments can
+be provided to upload the recovery document only to a specific subset of the
+providers:
+
+@example
+@{
+  "providers": [
+    "http://localhost:8088/";,
+    "http://localhost:8089/";
+  ]
+@}
+@end example
+
+The resulting state provides the suggested recovery policies in a way suitable
+for presentation to the user:
+
+@example
+@{
+  "backup_state": "POLICIES_REVIEWING",
+  "policy_providers" : [
+      @{ "provider_url" : "http://localhost:8088/"; @},
+      @{ "provider_url" : "http://localhost:8089/"; @}
+  ],
+  "policies": [
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8088/";
+        @},
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 2,
+          "provider": "http://localhost:8087/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8088/";
+        @},
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 3,
+          "provider": "http://localhost:8089/";
+        @}
+      ]
+    @}
+  ]
+@}
+@end example
+
+For each recovery policy, the state includes the specific details of which
+authentication @code{methods} must be solved to recovery the secret using this
+policy.  The @code{methods} array specifies the index of the
+@code{authentication_method} in the @code{authentication_methods} array, as 
well as
+the provider that was selected to supervise this authentication.
+
+If no authentication method was provided, the reducer will transition into an
+@code{ERROR} state instead of suggesting policies.
+
+@strong{add_policy}:
+
+Using this transition, the user can add an additional recovery policy to the
+state.  The argument format is the same that is used in the existing state.
+An example for a possible argument would thus be:
+
+@example
+@{
+  "policy": [
+    @{
+      "authentication_method": 1,
+      "provider": "http://localhost:8088/";
+    @},
+    @{
+      "authentication_method": 3,
+      "provider": "http://localhost:8089/";
+    @}
+  ]
+@}
+@end example
+
+Note that the specified providers must already be in the
+@code{authentication_providers} of the state. You cannot add new providers at
+this stage.  The reducer will simply attempt to append the suggested policy to
+the “policies” array, returning an updated state:
+
+@example
+@{
+  "backup_state": "POLICIES_REVIEWING",
+  "policies": [
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 2,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 2,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8088/";
+        @},
+        @{
+          "authentication_method": 3,
+          "provider": "http://localhost:8089/";
+        @}
+      ]
+    @}
+  ]
+@}
+@end example
+
+If the new policy is invalid, for example because it adds an unknown
+authentication method, or the selected provider does not support the type of
+authentication, the reducer will transition into an @code{ERROR} state instead 
of
+adding the new policy.
+
+@strong{update_policy}:
+
+Using this transition, the user can modify an existing recovery policy
+in the state.
+The argument format is the same that is used in @strong{add_policy},
+except there is an additional key @code{policy_index} which
+identifies the policy to modify.
+An example for a possible argument would thus be:
+
+@example
+@{
+  "policy_index" : 1,
+  "policy": [
+    @{
+      "authentication_method": 1,
+      "provider": "http://localhost:8088/";
+    @},
+    @{
+      "authentication_method": 3,
+      "provider": "http://localhost:8089/";
+    @}
+  ]
+@}
+@end example
+
+If the new policy is invalid, for example because it adds an unknown
+authentication method, or the selected provider does not support the type of
+authentication, the reducer will transition into an @code{ERROR} state instead 
of
+modifying the policy.
+
+@strong{delete_policy:}
+
+This transition allows the deletion of a recovery policy. The argument
+simply specifies the index of the policy to delete, for example:
+
+@example
+@{
+  "policy_index": 3
+@}
+@end example
+
+Given as input the state from the example above, the expected new state would
+be:
+
+@example
+@{
+  "backup_state": "POLICIES_REVIEWING",
+  "policies": [
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 2,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 2,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @}
+  ]
+@}
+@end example
+
+If the index given is invalid, the reducer will transition into an 
@code{ERROR} state
+instead of deleting a policy.
+
+@strong{delete_challenge:}
+
+This transition allows the deletion of an individual
+challenge from a recovery policy. The argument
+simply specifies the index of the policy and challenge
+to delete, for example:
+
+@example
+@{
+  "policy_index": 1,
+  "challenge_index" : 1
+@}
+@end example
+
+Given as input the state from the example above, the expected new state would
+be:
+
+@example
+@{
+  "backup_state": "POLICIES_REVIEWING",
+  "policies": [
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8089/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 2,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @}
+  ]
+@}
+@end example
+
+If the index given is invalid, the reducer will transition into an 
@code{ERROR} state
+instead of deleting a challenge.
+
+@strong{next} (from @code{POLICIES_REVIEWING}):
+
+Using this transition, the user confirms that the policies in the current
+state are acceptable. The transition does not take any arguments.
+
+The reducer will simply transition to the @code{SECRET_EDITING} state:
+
+@example
+@{
+  "backup_state": "SECRET_EDITING",
+  "upload_fees" : [ "KUDOS:42" ],
+  "expiration" : @{ "t_ms" : 1245362362 @}
+@}
+@end example
+
+Here, @code{upload_fees} is an array of applicable upload fees for the
+given policy expiration time. This is an array because fees could
+be in different currencies.  The final cost may be lower if the
+user already paid for some of the time.
+
+If the array of @code{policies} is currently empty, the reducer will transition
+into an @code{ERROR} state instead of allowing the user to continue.
+
+@strong{enter_secret:}
+
+This transition provides the reducer with the actual core @code{secret} of the 
user
+that Anastasis is supposed to backup (and possibly recover). The argument is
+simply the Crockford-Base32 encoded @code{value} together with its @code{mime} 
type, or a @code{text} field with a human-readable secret text.
+For example:
+
+@example
+@{
+  "secret": @{
+     "value": "EDJP6WK5EG50",
+     "mime" : "text/plain"
+  @},
+  "expiration" : @{ "t_ms" : 1245362362 @}
+@}
+@end example
+
+If the application is unaware of the format, it set the @code{mime} field to 
@code{null}.
+The @code{expiration} field is optional.
+
+The reducer remains in the @code{SECRET_EDITING} state, but now the secret and
+updated expiration time are part of the state and the cost calculations will
+be updated.
+
+@example
+@{
+  "backup_state": "SECRET_EDITING",
+  "core_secret" : @{
+     "value": "EDJP6WK5EG50",
+     "mime" : "text/plain"
+  @},
+  "expiration" : @{ "t_ms" : 1245362362 @},
+  "upload_fees" : [ "KUDOS:42" ]
+@}
+@end example
+
+@strong{clear_secret:}
+
+This transition removes the core secret from the state.  It is simply a
+convenience function to undo @code{enter_secret} without providing a new value
+immediately. The transition takes no arguments.  The resuting state will no
+longer have the @code{core_secret} field, and be otherwise unchanged. Calling
+@strong{clear_secret} on a state without a @code{core_secret} will result in 
an error.
+
+@strong{enter_secret_name:}
+
+This transition provides the reducer with a name for the core @code{secret} of 
the user. This name will be given to the user as a hint when seleting a 
recovery policy document during recovery, prior to satisfying any of the 
challenges. The argument simply contains the name for the secret.
+Applications that have built-in support for Anastasis MUST prefix the
+secret name with an underscore and an application-specific identifier
+registered in GANA so that they can use recognize their own backups.
+An example argument would be:
+
+@example
+@{
+  "name": "_TALERWALLET_MyPinePhone",
+@}
+@end example
+
+Here, @code{MyPinePhone} might be chosen by the user to identify the
+device that was being backed up.
+
+The reducer remains in the @code{SECRET_EDITING} state, but now the
+secret name is updated:
+
+@example
+@{
+  "secret_name" : "_TALERWALLET_MyPinePhone"
+@}
+@end example
+
+@strong{update_expiration:}
+
+This transition asks the reducer to change the desired expiration time
+and to update the associated cost. For example:
+
+@example
+@{
+  "expiration" : @{ "t_ms" : 1245362362 @}
+@}
+@end example
+
+The reducer remains in the @code{SECRET_EDITING} state, but the
+expiration time and cost calculation will be updated.
+
+@example
+@{
+  "backup_state": "SECRET_EDITING",
+  "expiration" : @{ "t_ms" : 1245362362 @},
+  "upload_fees" : [ @{ "fee": "KUDOS:43" @} ]
+@}
+@end example
+
+@strong{next} (from @code{SECRET_EDITING}):
+
+Using this transition, the user confirms that the secret and expiration
+settings in the current state are acceptable. The transition does not take any
+arguments.
+
+If the secret is currently empty, the reducer will transition into an
+@code{ERROR} state instead of allowing the user to continue.
+
+After adding a secret, the reducer may transition into different states
+depending on whether payment(s) are necessary.  If payments are needed, the
+@code{secret} will be stored in the state under @code{core_secret}.  
Applications
+should be careful when persisting the resulting state, as the 
@code{core_secret}
+is not protected in the @code{PAYING} states.  The @code{PAYING} states only 
differ
+in terms of what the payments are for (key shares or the recovery document),
+in all cases the state simply includes an array of Taler URIs that refer to
+payments that need to be made with the Taler wallet.
+
+If all payments are complete, the reducer will transition into the
+@code{BACKUP_FINISHED} state and (if applicable) delete the @code{core_secret} 
as an
+additional safety measure.
+
+Example results are thus:
+
+@example
+@{
+  "backup_state": "TRUTHS_PAYING",
+  "secret_name" : "$NAME",
+  "core_secret" : @{ "$anything":"$anything" @},
+  "payments": [
+    "taler://pay/...",
+    "taler://pay/..."
+  ]
+@}
+@end example
+
+@example
+@{
+  "backup_state": "POLICIES_PAYING",
+  "secret_name" : "$NAME",
+  "core_secret" : @{ "$anything":"$anything" @},
+  "payments": [
+    "taler://pay/...",
+    "taler://pay/..."
+  ]
+@}
+@end example
+
+@example
+@{
+  "backup_state": "BACKUP_FINISHED",
+@}
+@end example
+
+@strong{pay:}
+
+This transition suggests to the reducer that a payment may have been made or
+is immanent, and that the reducer should check with the Anastasis service
+provider to see if the operation is now possible.  The operation takes one
+optional argument, which is a @code{timeout} value that specifies how long the
+reducer may wait (in long polling) for the payment to complete:
+
+@example
+@{
+  "timeout":  @{ "d_ms" : 5000 @},
+@}
+@end example
+
+The specified timeout is passed on to the Anastasis service provider(s), which
+will wait this long before giving up.  If no timeout is given, the check is
+done as quickly as possible without additional delays.  The reducer will 
continue
+to either an updated state with the remaining payment requests, to the
+@code{BACKUP_FINISHED} state (if all payments have been completed and the 
backup
+finished), or into an @code{ERROR} state in case there was an irrecoverable 
error,
+indicating the specific provider and how it failed.  An example for this
+final error state would be:
+
+@example
+@{
+  "backup_state": "ERROR",
+  "http_status" : 500,
+  "upload_status" : 52,
+  "provider_url" : "https://bad.example.com/";,
+@}
+@end example
+
+Here, the fields have the following meaning:
+
+@quotation
+
+
+@itemize -
+
+@item
+@strong{http_status} is the HTTP status returned by the Anastasis provider.
+
+@item
+@strong{upload_status} is the Taler error code return by the provider.
+
+@item
+@strong{provider_url} is the base URL of the failing provider.
+@end itemize
+@end quotation
+
+In the above example, 52 would thus imply that the Anastasis provider failed to
+store information into its database.
+
+@node Recovery transitions,,Backup transitions,Reducer transitions
+@anchor{reducer recovery-transitions}@anchor{63}
+@subsubsection Recovery transitions
+
+
+@strong{enter_user_attributes:}
+
+This transition provides the user’s personal attributes. The specific set of
+attributes required depends on the country of residence of the user.  Some
+attributes may be optional, in which case they should be omitted entirely
+(that is, not simply be set to @code{null} or an empty string).  The
+arguments are identical to the @strong{enter_user_attributes} transition from
+the backup process.  Example arguments would thus be:
+
+@example
+@{
+  "identity_attributes": @{
+    "full_name": "Max Musterman",
+    "social_security_number": "123456789",
+    "birthdate": "2000-01-01",
+    "birthplace": "Earth"
+  @}
+@}
+@end example
+
+However, in contrast to the backup process, the reducer will attempt to
+retrieve the latest recovery document from all known providers for the
+selected currency given the above inputs.  If a recovery document was found
+by any provider, the reducer will attempt to load it and transition to
+a state where the user can choose which challenges to satisfy:
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SELECTING",
+  "recovery_information": @{
+    "challenges": [
+      @{
+        "uuid": "MW2R3RCBZPHNC78AW8AKWRCHF9KV3Y82EN62T831ZP54S3K5599G",
+        "cost": "TESTKUDOS:0",
+        "type": "question",
+        "instructions": "q1"
+      @},
+      @{
+        "uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+        "cost": "TESTKUDOS:0",
+        "type": "email",
+        "instructions": "e-mail address m?il@@f*.bar"
+      @},
+    ],
+    "policies": [
+      [
+        @{
+          "uuid": "MW2R3RCBZPHNC78AW8AKWRCHF9KV3Y82EN62T831ZP54S3K5599G"
+        @},
+        @{
+          "uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0"
+        @},
+      ],
+    ],
+    "provider_url": "http://localhost:8088/";,
+    "version": 1,
+  @},
+  "recovery_document": @{
+    "...": "..."
+  @}
+@}
+@end example
+
+The @code{recovery_document} is an internal representation of the recovery
+information and of no concern to the user interface. The pertinent information
+is in the @code{recovery_information}. Here, the @code{challenges} array is a 
list
+of possible challenges the user could attempt to solve next, while 
@code{policies}
+is an array of policies, with each policy being an array of challenges.
+Satisfying all of the challenges of one of the policies will enable the secret
+to be recovered.  The @code{provider_url} from where the recovery document was
+obtained and its @code{version} are also provided.  Each challenge comes with
+four mandatory fields:
+
+@quotation
+
+
+@itemize -
+
+@item
+@strong{uuid}: A unique identifier of the challenge; this is what the
+UUIDs in the policies array refer to, but also this UUID may be
+included in messages sent to the user. They allow the user to
+distinguish different PIN/TANs should say the same phone number be
+used for SMS-authentication with different providers.
+
+@item
+@strong{cost}: This is the amount the Anastasis provider will charge
+to allow the user to pass the challenge.
+
+@item
+@strong{type}: This is the type of the challenge, as a string.
+
+@item
+@strong{instructions}: Contains additional important hints for the user
+to allow the user to satisfy the challenge.  It typically includes
+an abbreviated form of the contact information or the security
+question. Details depend on @code{type}.
+@end itemize
+@end quotation
+
+If a recovery document was not found, either the user never performed
+a backup, entered incorrect attributes, or used a provider not yet in
+the list of Anastasis providers.  Hence, the user must now either
+select a different provider, or go @code{back} and update the identity
+attributes.  In the case a recovery document was not found, the
+transition fails, returning the error code and a human-readable error
+message together with a transition failure:
+
+@example
+@{
+  "recovery_state": "ERROR",
+  "error_message": "account unknown to Anastasis server",
+  "error_code": 9,
+@}
+@end example
+
+Here, the @code{error_code} is from the @code{enum ANASTASIS_RecoveryStatus}
+and describes precisely what failed about the download, while the
+@code{error_message} is a human-readable (English) explanation of the code.
+Applications may want to translate the message using GNU gettext;
+translations should be available in the @code{anastasis} text domain.
+However, in general it should be sufficient to display the slightly
+more generic Taler error code that is returned with the new state.
+
+@strong{change_version:}
+
+Even if a recovery document was found, it is possible that the user
+intended to recover a different version, or recover a backup where
+the recovery document is stored at a different provider. Thus, the
+reducer allows the user to explicitly switch to a different provider
+or recovery document version using the @code{change_version} transition,
+which takes a provider URL and policy version as arguments:
+
+@example
+@{
+  "provider_url": "https://localhost:8080/";,
+  "version": 2
+@}
+@end example
+
+Note that using a version of 0 implies fetching “the latest version”.  The
+resulting states are the same as those of the @code{enter_user_attributes}
+transition, except that the recovery document version is not necessarily the
+latest available version at the provider.
+
+@strong{select_challenge:}
+
+Selecting a challenge takes different, depending on the state of the payment.
+A comprehensive example for @code{select_challenge} would be:
+
+@example
+@{
+    "uuid": "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30"
+    "timeout" : @{ "d_ms" : 5000 @},
+    "payment_secret": "3P4561HAMHRRYEYD6CM6J7TS5VTD5SR2K2EXJDZEFSX92XKHR4KG"
+@}
+@end example
+
+The @code{uuid} field is mandatory and specifies the selected challenge.
+The other fields are optional, and are needed in case the user has
+previously been requested to pay for the challenge.  In this case,
+the @code{payment_secret} identifies the previous payment request, and
+@code{timeout} says how long the Anastasis service should wait for the
+payment to be completed before giving up (long polling).
+
+Depending on the type of the challenge and the need for payment, the
+reducer may transition into @code{CHALLENGE_SOLVING} or @code{CHALLENGE_PAYING}
+states.  In @code{CHALLENGE_SOLVING}, the new state will primarily specify
+the selected challenge:
+
+@example
+@{
+  "backup_state": "CHALLENGE_SOLVING",
+  "selected_challenge_uuid": 
"80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30"
+@}
+@end example
+
+In @code{CHALLENGE_PAYING}, the new state will include instructions for payment
+in the @code{challenge_feedback}. In general, @code{challenge_feedback} 
includes
+information about attempted challenges, with the final state being 
@code{solved}:
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SELECTING",
+  "recovery_information": @{
+    "...": "..."
+  @}
+  "challenge_feedback": @{
+    "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30" : @{
+      "state" : "solved"
+    @}
+  @}
+@}
+@end example
+
+Challenges feedback for a challenge can have many different @code{state} values
+that applications must all handle. States other than @code{solved} are:
+
+@quotation
+
+
+@itemize -
+
+@item
+@strong{payment}: Here, the user must pay for a challenge. An example would be:
+
+@example
+@{
+  "backup_state": "CHALLENGE_PAYING",
+  "selected_challenge_uuid": 
"80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30",
+  "challenge_feedback": @{
+    "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30" : @{
+     "state" : "payment",
+     "taler_pay_uri" : "taler://pay/...",
+     "provider" : "https://localhost:8080/";,
+     "payment_secret" : "3P4561HAMHRRYEYD6CM6J7TS5VTD5SR2K2EXJDZEFSX92XKHR4KG"
+    @}
+  @}
+@}
+@end example
+@end itemize
+
+@quotation
+
+
+@itemize -
+
+@item
+@strong{body}: Here, the server provided an HTTP reply for
+how to solve the challenge, but the reducer could not parse
+them into a known format. A mime-type may be provided and may
+help parse the details.
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SOLVING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "body",
+      "body": "CROCKFORDBASE32ENCODEDBODY",
+      "http_status": 403,
+      "mime_type" : "anything/possible"
+    @}
+  @}
+@}
+@end example
+
+@item
+@strong{hint}: Here, the server provided human-readable hint for
+how to solve the challenge.  Note that the @code{hint} provided this
+time is from the Anastasis provider and may differ from the @code{instructions}
+for the challenge under @code{recovery_information}:
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SOLVING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "hint",
+      "hint": "Recovery TAN send to email mail@@DOMAIN",
+      "http_status": 403
+    @}
+  @}
+@}
+@end example
+
+@item
+@strong{details}: Here, the server provided a detailed JSON status response
+related to solving the challenge:
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SOLVING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "details",
+      "details": @{
+        "code": 8111,
+        "hint": "The client's response to the challenge was invalid.",
+        "detail" : null
+      @},
+      "http_status": 403
+    @}
+  @}
+@}
+@end example
+@end itemize
+
+@quotation
+
+
+@itemize -
+
+@item
+@strong{redirect}: To solve the challenge, the user must visit the indicated
+Web site at @code{redirect_url}, for example to perform video authentication:
+@end itemize
+
+@quotation
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SOLVING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "redirect",
+      "redirect_url": "https://videoconf.example.com/";,
+      "http_status": 303
+    @}
+  @}
+@}
+@end example
+
+
+@itemize -
+
+@item
+@strong{server-failure}: This indicates that the Anastasis provider encountered
+a failure and recovery using this challenge cannot proceed at this time.
+Examples for failures might be that the provider is unable to send SMS
+messages at this time due to an outage.  The body includes details about
+the failure. The user may try again later or continue with other challenges.
+@end itemize
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SELECTING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "server-failure",
+      "http_status": "500",
+      "error_code": 52
+    @}
+  @}
+@}
+@end example
+
+
+@itemize -
+
+@item
+@strong{truth-unknown}: This indicates that the Anastasis provider is unaware 
of
+the specified challenge. This is typically a permanent failure, and user
+interfaces should not allow users to re-try this challenge.
+@end itemize
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SELECTING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "truth-unknown",
+      "error_code": 8108
+    @}
+  @}
+@}
+@end example
+
+
+@itemize -
+
+@item
+@strong{rate-limit-exceeded}:
+@end itemize
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SELECTING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "rate-limit-exceeded",
+      "error_code": 8121
+    @}
+  @}
+@}
+@end example
+@end quotation
+@end quotation
+@end quotation
+@end quotation
+
+@strong{pay:}
+
+With a @code{pay} transition, the application indicates to the reducer that
+a payment may have been made. Here, it is again possible to specify an
+optional @code{timeout} argument for long-polling, for example:
+
+@example
+@{
+    "payment_secret": "ABCDADF242525AABASD52525235ABABFDABABANALASDAAKASDAS"
+    "timeout" : @{ "d_ms" : 5000 @},
+@}
+@end example
+
+Depending on the type of the challenge and the result of the operation, the
+new state may be @code{CHALLENGE_SOLVING} (if say the SMS was now sent to the
+user), @code{CHALLENGE_SELECTING} (if the answer to the security question was
+correct), @code{RECOVERY_FINISHED} (if this was the last challenge that needed 
to
+be solved) or still @code{CHALLENGE_PAYING} (if the challenge was not actually
+paid for).  For sample messages, see the different types of
+@code{challenge_feedback} in the section about @code{select_challenge}.
+
+@strong{solve_challenge:}
+
+Solving a challenge takes various formats, depending on the type of the
+challenge and what is known about the answer.  The different supported
+formats are:
+
+@example
+@{
+    "answer": "answer to security question"
+@}
+@end example
+
+@example
+@{
+    "pin": 1234
+@}
+@end example
+
+@example
+@{
+    "hash": "SOMEBASE32ENCODEDHASHVALUE"
+@}
+@end example
+
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
+
+@node Authentication Methods,DB Schema,Reducer API,Documentation Overview
+@anchor{authentication doc}@anchor{64}@anchor{authentication 
anastasis-auth-methods}@anchor{65}@anchor{authentication 
authentication-methods}@anchor{66}
+@section Authentication Methods
+
+
+This section describes the supported authentication methods in detail.  We
+note that the server implements rate limiting for all authentication methods
+to ensure that malicious strong attackers cannot guess the values by
+brute-force. Typically, a user is given three attempts per hour to enter the
+correct code from 2^63 possible values.  Transmitted codes also come with an
+expiration date. If the user re-requests a challenge to be sent, the same
+challenge may be transmitted (with the three attempts counter not increasing!)
+for a limited period of time (depending on the authentication method) before
+the service eventually rotates to a fresh random code with a fresh retry
+counter. Given the default value range and time intervals (which providers are
+at liberty to adjust), brute-force attacks against this are expected to
+succeed with a 50% probability after about 200000 years of attempts at the
+maximum permissible frequency.
+
+@menu
+* SMS (sms): SMS sms.
+* Email verification (email): Email verification email.
+* Video identification (vid): Video identification vid.
+* Security question (qa): Security question qa.
+* Snail mail verification (post): Snail mail verification post.
+
+@end menu
+
+@node SMS sms,Email verification email,,Authentication Methods
+@anchor{authentication sms-sms}@anchor{67}
+@subsection SMS (sms)
+
+
+Sends an SMS with a code (prefixed with @code{A-}) to the user’s phone, 
including
+a UUID which identifies the challenge the code is for.  The user must send
+this code back with his request (see @code{$RESPONSE} under @ref{52,,Managing 
truth}).
+If the transmitted code is correct, the server responses with the requested
+encrypted key share.
+
+@node Email verification email,Video identification vid,SMS sms,Authentication 
Methods
+@anchor{authentication email-verification-email}@anchor{68}
+@subsection Email verification (email)
+
+
+Sends an email with a code (prefixed with @code{A-}) to the user’s mail 
address,
+including a UUID which identifies the challenge the code is for.  The user
+must send this code back with his request (see @code{$RESPONSE} under 
@ref{52,,Managing truth}).
+If the transmitted code is correct, the server responses with the
+requested encrypted key share.
+
+@node Video identification vid,Security question qa,Email verification 
email,Authentication Methods
+@anchor{authentication video-identification-vid}@anchor{69}
+@subsection Video identification (vid)
+
+
+Requires the user to identify via video-call.  In the video-call, the
+user is told the code (prefixed with @code{A-}) needed to authenticate.
+
+The user is expected to delete all metadata revealing personal information
+from the images before uploading them. Since the respective images must be
+passed on to the video identification service in the event of password
+recovery, it should be ensured that no further information about the user can
+be derived from them.
+
+Video identification will typically result in the Anastasis provider
+requesting the user to be redirected to a Web site (or other URL) for the
+video-call.
+
+@node Security question qa,Snail mail verification post,Video identification 
vid,Authentication Methods
+@anchor{authentication security-question-qa}@anchor{6a}
+@subsection Security question (qa)
+
+
+Asks the user a security question.  The user sends back a @strong{salted}
+hash over the answer.  The @strong{question-salt} is stored encrypted as
+part of the recovery document and never revealed to the providers. This
+ensures that providers cannot derive the answer from the hash value.
+Furthermore, the security question itself is also only in the recovery
+document and never given to the Anastasis provider.  A moderately expensive
+hash function is used to further limit strong attackers that have obtained
+the recovery document from brute-forcing the answer.
+
+If the hash value matches with the one the server is expecting, the server
+answers with the requested encrypted key share.  However, unlike other
+encrypted key shares, the encrypted key share of a security question uses a
+special variation of the Anastasis encryption: Here, a different hash function
+over the security answer is used to provide an additional @strong{key-salt} 
for the
+decryption of the (encrypted) @strong{key share}.  This ensures that the key 
share
+remains irrecoverable without the answer even if the Anastasis provider
+storing the security question is malicious.
+
+@node Snail mail verification post,,Security question qa,Authentication Methods
+@anchor{authentication snail-mail-verification-post}@anchor{6b}
+@subsection Snail mail verification (post)
+
+
+Sends physical mail (snail mail) with a code (prefixed with @code{A-}) to the
+user’s mail address, including a UUID which identifies the challenge the code
+is for.  The user must send this code back with their request (see
+@code{$RESPONSE} under @ref{52,,Managing truth}).  If the transmitted code is 
correct,
+the server responds with the requested encrypted key share.
+
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
+
+@node DB Schema,Design Documents,Authentication Methods,Documentation Overview
+@anchor{db doc}@anchor{6c}@anchor{db db-schema}@anchor{6d}
+@section DB Schema
+
+
+@image{anastasis-figures/anastasis-db,,,,png}
+
+@image{anastasis-figures/anastasis_challengecode,,,,png}
+
+@image{anastasis-figures/anastasis_challenge_payment,,,,png}
+
+@image{anastasis-figures/anastasis_truth,,,,png}
+
+@image{anastasis-figures/anastasis_truth_payment,,,,png}
+
+@node Design Documents,Anastasis licensing information,DB Schema,Documentation 
Overview
+@anchor{design-documents/index doc}@anchor{6e}@anchor{design-documents/index 
design-documents}@anchor{6f}
+@section Design Documents
+
+
+This is a collection of design documents related to Anastasis.
+The goal of these documents is to discuss facilitate discussion around
+new features while keeping track of the evolution of the whole system
+and protocol.
+
+@menu
+* Design Doc 001; Anastasis User Experience: Design Doc 001 Anastasis User 
Experience.
+* Template::
+
+@end menu
+
+@node Design Doc 001 Anastasis User Experience,Template,,Design Documents
+@anchor{design-documents/001-anastasis-ux 
doc}@anchor{70}@anchor{design-documents/001-anastasis-ux 
design-doc-001-anastasis-user-experience}@anchor{71}
+@subsection Design Doc 001: Anastasis User Experience
+
+
+@menu
+* Summary::
+* Motivation::
+* Setup Steps::
+* Show Service Status After Setup::
+* Recovery Steps::
+
+@end menu
+
+@node Summary,Motivation,,Design Doc 001 Anastasis User Experience
+@anchor{design-documents/001-anastasis-ux summary}@anchor{72}
+@subsubsection Summary
+
+
+This document describes the recommended way of implementing the user experience
+of setting up and making use of @ref{3,,Introduction} account recovery.
+
+@node Motivation,Setup Steps,Summary,Design Doc 001 Anastasis User Experience
+@anchor{design-documents/001-anastasis-ux motivation}@anchor{73}
+@subsubsection Motivation
+
+
+Wallet state consisting of digital cash, transaction history etc. should not 
be lost.
+Taler provides a backup mechanism to prevent that.
+As an additional protection measure Anastasis can be used to provide access to 
the backup,
+even if all devices and offline secrets have been lost.
+
+Access to the backup key is shared with escrow providers that can be chosen by 
the user.
+
+@node Setup Steps,Show Service Status After Setup,Motivation,Design Doc 001 
Anastasis User Experience
+@anchor{design-documents/001-anastasis-ux setup-steps}@anchor{74}
+@subsubsection Setup Steps
+
+@image{graphviz-2d8d83202d2b7835498d2a5c18fa9e3cc05c4b6a,,,[graphviz],png}
+
+@menu
+* Entry point; Settings: Entry point Settings.
+* Providing Identification::
+* Add Authentication Methods::
+* Confirm/Change Service Providers::
+* Defining Recovery Options::
+* Pay for Setup::
+
+@end menu
+
+@node Entry point Settings,Providing Identification,,Setup Steps
+@anchor{design-documents/001-anastasis-ux entry-point-settings}@anchor{75}
+@subsubsection Entry point: Settings
+
+
+The app settings should have a section for Anastasis using a different more
+universally understood name like Wallet Recovery.
+
+The section should have an option to setup Anastasis initially.  This option
+should be disabled as long as no backup has been set up.  The section could
+maybe be integrated into the backup settings.
+
+@image{anastasis-figures/menu,,,,png}
+
+@image{anastasis-figures/settings,,,,png}
+
+@image{anastasis-figures/backupsettings,,,,png}
+
+@node Providing Identification,Add Authentication Methods,Entry point 
Settings,Setup Steps
+@anchor{design-documents/001-anastasis-ux providing-identification}@anchor{76}
+@subsubsection Providing Identification
+
+
+Instead of a forgettable freely chosen user name, Anastasis collects various
+static information from the user to generate a unique user identifier from
+that.  Examples for such identifier would be a concatenation of the full name
+of the user and their social security or passport number(s).
+
+The information that can reasonably used here various from cultural context
+and jurisdiction.  Therefore, one idea is to start by asking for continent and
+then the country of primary legal residence, and then continue from there with
+country-specific attributes (and also offer a stateless person option).
+
+Special care should be taken to avoid that information can later be provided
+ambiguously thus changing the user identifier and not being able to restore
+the user’s data.  This can be typographic issues like someone providing
+“Seestr.”  and later “Seestrasse” or “Seestraße” or “seestrasse”.  But it can
+also be simple typos that we can only prevent in some instances like when
+checking checksums in passport numbers.
+
+The user should be made aware that this data will not leave the app and that
+it is only used to compute a unique identifier that can not be forgotten.
+
+If possible, we should guide the user in the country selection by accessing
+permission-less information such as the currently set language/locale and the
+country of the SIM card.  But nothing invasive like the actual GPS location.
+
+@image{anastasis-figures/userid,,,,png}
+
+@node Add Authentication Methods,Confirm/Change Service Providers,Providing 
Identification,Setup Steps
+@anchor{design-documents/001-anastasis-ux 
add-authentication-methods}@anchor{77}
+@subsubsection Add Authentication Methods
+
+
+After creating a unique identifier, the user can chose one or more
+@ref{65,,Authentication Methods} supported by Anastasis.
+
+When selecting a method, the user is already asked to provide the information
+required for the recovery with that method.  For example, a photo of
+themselves, their phone number or mailing address.
+
+The user interface validates that the inputs are well-formed, and refuses
+inputs that are clearly invalid. Where possible, it pre-fills the fields with
+sane values (phone number, e-mail addresses, country of residence).
+
+@image{anastasis-figures/truth,,,,png}
+
+@image{anastasis-figures/addtruth,,,,png}
+
+@image{anastasis-figures/addtruthmail,,,,png}
+
+@node Confirm/Change Service Providers,Defining Recovery Options,Add 
Authentication Methods,Setup Steps
+@anchor{design-documents/001-anastasis-ux 
confirm-change-service-providers}@anchor{78}
+@subsubsection Confirm/Change Service Providers
+
+
+From the dialog where the user is adding authentication methods, the user can
+optionally jump to a side-action with list of available providers (and their
+status) and possibly add additional providers that are not included in the
+default list provided by the wallet.
+
+@image{anastasis-figures/policy,,,,png}
+
+@image{anastasis-figures/addpolicy,,,,png}
+
+@image{anastasis-figures/addpolicymethod,,,,png}
+
+@node Defining Recovery Options,Pay for Setup,Confirm/Change Service 
Providers,Setup Steps
+@anchor{design-documents/001-anastasis-ux defining-recovery-options}@anchor{79}
+@subsubsection Defining Recovery Options
+
+
+After mapping authentication methods to providers, the user needs select which
+combinations are sufficient to recover the secret.  Here, the system
+pre-computes a reasonably sane allocation, for small @code{n} the default could
+be @code{n-1} out of @code{n}.
+
+We should propose a mapping of authentication methods to providers by
+minimizing cost (tricky: sign-up vs. recovery costs, different currencies) and
+distributing the selected authentication methods across as many providers as
+possible.
+
+The user should be able to change the proposed default selection
+and add more than one provider to each chosen method.
+
+Using Anastatis providers usually is not free.  From here on, the UI should
+show estimated recurring costs (yearly) and the cost of recovery.  These costs
+should get updated with each user action affecting those costs such as
+when the user reconfigures the policies.
+
+@node Pay for Setup,,Defining Recovery Options,Setup Steps
+@anchor{design-documents/001-anastasis-ux pay-for-setup}@anchor{7a}
+@subsubsection Pay for Setup
+
+
+As the last step when all information has been properly provided, the user is
+asked to pay for the service with the regular wallet payment confirmation
+screen.
+
+@node Show Service Status After Setup,Recovery Steps,Setup Steps,Design Doc 
001 Anastasis User Experience
+@anchor{design-documents/001-anastasis-ux 
show-service-status-after-setup}@anchor{7b}
+@subsubsection Show Service Status After Setup
+
+
+TODO
+
+@node Recovery Steps,,Show Service Status After Setup,Design Doc 001 Anastasis 
User Experience
+@anchor{design-documents/001-anastasis-ux recovery-steps}@anchor{7c}
+@subsubsection Recovery Steps
+
+@image{graphviz-834e5a93329dec2ccdefd2a21bdfb5a02bad1c84,,,[graphviz],png}
+
+@menu
+* Entry point; Settings: Entry point Settings<2>.
+* Providing Identification: Providing Identification<2>.
+* Select Authentication Challenge::
+* Payment::
+* Enter Challenge Response::
+* Success::
+
+@end menu
+
+@node Entry point Settings<2>,Providing Identification<2>,,Recovery Steps
+@anchor{design-documents/001-anastasis-ux id1}@anchor{7d}
+@subsubsection Entry point: Settings
+
+
+Like the backup, the recovery option should be available via
+the App settings.
+
+The section should have an option to recover from backup.  If a previous
+recovery was not completed, the interaction should resume from that previous
+checkpoint instead of from the beginning.
+
+@image{anastasis-figures/menu,,,,png}
+
+@image{anastasis-figures/settings,,,,png}
+
+@image{anastasis-figures/backupsettings,,,,png}
+
+@node Providing Identification<2>,Select Authentication Challenge,Entry point 
Settings<2>,Recovery Steps
+@anchor{design-documents/001-anastasis-ux id2}@anchor{7e}
+@subsubsection Providing Identification
+
+
+The first dialog(s) during recovery should be identical to the first dialog
+during backup: the user is asked to select a continent, country of residence
+and then to provide country-specific inputs for identification.
+
+@image{anastasis-figures/userid,,,,png}
+
+@node Select Authentication Challenge,Payment,Providing 
Identification<2>,Recovery Steps
+@anchor{design-documents/001-anastasis-ux 
select-authentication-challenge}@anchor{7f}
+@subsubsection Select Authentication Challenge
+
+
+If Anastasis could recover the recovery document via any provider, it should
+show a dialog allowing the user to select one of the open challenges, and
+highlight which challenges still need to be satisfied for the various policies.
+
+Additionally, the specific provider and recovery document version should be 
shown.
+The user should be able to change the provider or recovery document version,
+resulting in a switch of the recovery document and policies. If the user has
+already satisfied some challenges of the current recovery document, switching 
to a
+different recovery document should only be done after a confirmation pop-up 
dialog
+warning the user that the existing progress will be lost.
+
+When selecting a challenge, the user may be asked to confirm making a payment
+for this challenge if the provider requires payment.
+
+@node Payment,Enter Challenge Response,Select Authentication 
Challenge,Recovery Steps
+@anchor{design-documents/001-anastasis-ux payment}@anchor{80}
+@subsubsection Payment
+
+
+Typcially, this would be the canonical wallet payment confirmation dialog.
+
+However, in the case of a security question, the payment confirmation should
+be combined with the dialog where the user enters the security answer (so
+instead of an @code{Ok} button, text showing the amount due and @code{Pay} 
should be
+used – except of course if the security question challenge is free of
+charge).
+
+@node Enter Challenge Response,Success,Payment,Recovery Steps
+@anchor{design-documents/001-anastasis-ux enter-challenge-response}@anchor{81}
+@subsubsection Enter Challenge Response
+
+
+If the challenge was not a security question, the dialog to enter the security
+code (PIN/TAN) should open after payment.  The security code field should have
+a prefix @code{A-}. However, the user should be able to enter both only the
+numeric code, or the full code with the @code{A-} prefix (or ideally, the user
+cannot delete the pre-filled @code{A-} text).
+
+@node Success,,Enter Challenge Response,Recovery Steps
+@anchor{design-documents/001-anastasis-ux success}@anchor{82}
+@subsubsection Success
+
+
+The user is informed about the successful recovery.  We may want to do this
+as part of a separate screen, or simply with a notification bar in the
+main wallet screen.
+
+@node Template,,Design Doc 001 Anastasis User Experience,Design Documents
+@anchor{design-documents/999-template 
doc}@anchor{83}@anchor{design-documents/999-template template}@anchor{84}
+@subsection Template
+
+
+@menu
+* Summary: Summary<2>.
+* Motivation: Motivation<2>.
+* Requirements::
+* Proposed Solution::
+* Alternatives::
+* Drawbacks::
+* Discussion / Q&A::
+
+@end menu
+
+@node Summary<2>,Motivation<2>,,Template
+@anchor{design-documents/999-template summary}@anchor{85}
+@subsubsection Summary
+
+
+@node Motivation<2>,Requirements,Summary<2>,Template
+@anchor{design-documents/999-template motivation}@anchor{86}
+@subsubsection Motivation
+
+
+@node Requirements,Proposed Solution,Motivation<2>,Template
+@anchor{design-documents/999-template requirements}@anchor{87}
+@subsubsection Requirements
+
+
+@node Proposed Solution,Alternatives,Requirements,Template
+@anchor{design-documents/999-template proposed-solution}@anchor{88}
+@subsubsection Proposed Solution
+
+
+@node Alternatives,Drawbacks,Proposed Solution,Template
+@anchor{design-documents/999-template alternatives}@anchor{89}
+@subsubsection Alternatives
+
+
+@node Drawbacks,Discussion / Q&A,Alternatives,Template
+@anchor{design-documents/999-template drawbacks}@anchor{8a}
+@subsubsection Drawbacks
+
+
+@node Discussion / Q&A,,Drawbacks,Template
+@anchor{design-documents/999-template discussion-q-a}@anchor{8b}
+@subsubsection Discussion / Q&A
+
+
+(This should be filled in with results from discussions on mailing lists / 
personal communication.)
+
+@node Anastasis licensing information,Man Pages,Design Documents,Documentation 
Overview
+@anchor{global-licensing doc}@anchor{8c}@anchor{global-licensing 
anastasis-licensing-information}@anchor{8d}
+@section Anastasis licensing information
+
+
+This file gives an overview of all Anastasis component’s licensing and
+of runtime dependencies thereof. For “component” here is meant a set
+of source files which can be retrieved from a single repository.  If
+components consist of sources under different licensing regimes, i.e.
+because we want to enable third party developments to easily integrate
+with Taler, those are described as well.
+
+All Anastasis components are generally released under the Affero
+GPL.
+
+@menu
+* Anastasis (git;//git.taler.net/anastasis): Anastasis git //git taler 
net/anastasis.
+* Anastasis-gtk (git;//git.taler.net/anastasis-gtk): Anastasis-gtk git //git 
taler net/anastasis-gtk.
+* Documentation::
+
+@end menu
+
+@node Anastasis git //git taler net/anastasis,Anastasis-gtk git //git taler 
net/anastasis-gtk,,Anastasis licensing information
+@anchor{global-licensing 
anastasis-git-git-taler-net-anastasis}@anchor{8e}@anchor{global-licensing 
exchange-repo}@anchor{8f}
+@subsection Anastasis (git://git.taler.net/anastasis)
+
+
+Anastasis core logic is under AGPL.
+
+@menu
+* Runtime dependencies::
+
+@end menu
+
+@node Runtime dependencies,,,Anastasis git //git taler net/anastasis
+@anchor{global-licensing runtime-dependencies}@anchor{90}
+@subsubsection Runtime dependencies
+
+
+The following list encompasses all the runtime dependencies for this
+project, and gives the copyright holder for each of them:
+
+
+@itemize *
+
+@item
+libjansson: MIT License, AGPL- and LGPL-Compatible, owned by Petri Lehtinen 
and other individuals
+
+@item
+libgcrypt: LGPL, owned by Free Software Foundation
+
+@item
+postgresql: PostgreSQL License, AGPL- and LGPL-Compatible, owned by The 
PostgreSQL Global Development Group
+
+@item
+libgnunetutil (in all of its variants): GPLv3+, owned by GNUnet e.V.
+
+@item
+libgnunetjson: GPLv3+, GNUnet e.V.
+
+@item
+GNU Taler: LGPLv3+ / GPLv3+ / AGPLv3+: owned by Taler Systems SA
+@end itemize
+
+@node Anastasis-gtk git //git taler net/anastasis-gtk,Documentation,Anastasis 
git //git taler net/anastasis,Anastasis licensing information
+@anchor{global-licensing 
anastasis-gtk-git-git-taler-net-anastasis-gtk}@anchor{91}
+@subsection Anastasis-gtk (git://git.taler.net/anastasis-gtk)
+
+
+Anastasis-gtk is under AGPL.
+
+@menu
+* Runtime dependencies: Runtime dependencies<2>.
+
+@end menu
+
+@node Runtime dependencies<2>,,,Anastasis-gtk git //git taler net/anastasis-gtk
+@anchor{global-licensing id1}@anchor{92}
+@subsubsection Runtime dependencies
+
+
+The following list encompasses all the runtime dependencies for this
+project, and gives the copyright holder for each of them:
+
+
+@itemize *
+
+@item
+libjansson: MIT License, AGPL- and LGPL-Compatible, owned by Petri Lehtinen 
and other individuals
+
+@item
+libgcrypt: LGPL, owned by Free Software Foundation
+
+@item
+postgresql: PostgreSQL License, AGPL- and LGPL-Compatible, owned by The 
PostgreSQL Global Development Group
+
+@item
+libgnunetutil (in all of its variants): GPLv3+, owned by GNUnet e.V.
+
+@item
+libgnunetjson: GPLv3+, GNUnet e.V.
+
+@item
+libgnunetgtk: GPLv3+, GNUnet e.V.
+
+@item
+GNU Taler: LGPLv3+ / GPLv3+ / AGPLv3+: owned by Taler Systems SA
+@end itemize
+
+@node Documentation,,Anastasis-gtk git //git taler net/anastasis-gtk,Anastasis 
licensing information
+@anchor{global-licensing documentation}@anchor{93}
+@subsection Documentation
+
+
+The documentation is licensed under the GNU Free Documentation License Version 
1.3 or later.
+
+@node Man Pages,Complete Index,Anastasis licensing information,Documentation 
Overview
+@anchor{manindex doc}@anchor{94}@anchor{manindex man-pages}@anchor{95}
+@section Man Pages
+
+
+@menu
+* anastasis-config(1): anastasis-config 1.
+* anastasis-gtk(1): anastasis-gtk 1.
+* anastasis-httpd(1): anastasis-httpd 1.
+* anastasis-reducer(1): anastasis-reducer 1.
+* anastasis.conf(5): anastasis conf 5.
+
+@end menu
+
+@node anastasis-config 1,anastasis-gtk 1,,Man Pages
+@anchor{manpages/anastasis-config 1 
doc}@anchor{96}@anchor{manpages/anastasis-config 1 
anastasis-config-1}@anchor{97}
+@subsection anastasis-config(1)
+
+
+
+@menu
+* Synopsis::
+* Description::
+* See Also::
+* Bugs::
+
+@end menu
+
+@node Synopsis,Description,,anastasis-config 1
+@anchor{manpages/anastasis-config 1 synopsis}@anchor{98}
+@subsubsection Synopsis
+
+
+@strong{anastasis-config}
+[@strong{-b} @emph{backend} | @strong{––supported-backend=}@emph{backend}]
+[@strong{-c} @emph{filename} | @strong{––config=}@emph{filename}]
+[@strong{-f} | @strong{––filename}]
+[@strong{-F} | @strong{––full}]
+[@strong{-h} | @strong{––help}]
+[@strong{-L} @emph{loglevel} | @strong{––loglevel=}@emph{loglevel}]
+[@strong{-l} @emph{filename} | @strong{––logfile=}‌@emph{filename}]
+[@strong{-o} @emph{option} | @strong{––option=}@emph{option}]
+[@strong{-r} | @strong{––rewrite}]
+[@strong{-S} | @strong{––list-sections}]
+[@strong{-s} @emph{section} | @strong{––section=}@emph{section}]
+[@strong{-V} @emph{value} | @strong{––value=}@emph{value}]
+[@strong{-v} | @strong{––version}]
+
+@node Description,See Also,Synopsis,anastasis-config 1
+@anchor{manpages/anastasis-config 1 description}@anchor{99}
+@subsubsection Description
+
+
+@strong{anastasis-config} can be used to read or modify Anastasis 
configuration files.
+
+
+@table @asis
+
+@item @strong{-b} @emph{BACKEND} | @strong{––supported-backend=}@emph{BACKEND}
+
+Tests whether the specified @emph{BACKEND} is supported by the current 
installation.
+The backend must match the name of a plugin, i.e. “namestore_postgres” for
+the Postgres database backend of the “NAMESTORE” service.  If @emph{BACKEND} is
+supported, anastasis-config will return a status code of 0 (success), otherwise
+77 (unsupported).  When this option is specified, no other options may be
+specified. Specifying this option together with other options will cause
+anastasis-config to return a status code of 1 (error).
+
+@item @strong{-c} @emph{FILENAME} | @strong{––config=}@emph{FILENAME}
+
+Use the configuration file @emph{FILENAME}.
+
+@item @strong{-f} | @strong{––filename}
+
+Try to perform expansions as if the option values represent filenames (will
+also be applied even if the option is not really a filename).
+
+@item @strong{-F} | @strong{––full}
+
+Write the full configuration file, not just the differences to the defaults.
+
+@item @strong{-h} | @strong{––help}
+
+Print short help on options.
+
+@item @strong{-L} @emph{LOGLEVEL} | @strong{––loglevel=}@emph{LOGLEVEL}
+
+Use @emph{LOGLEVEL} for logging.
+Valid values are @code{DEBUG}, @code{INFO}, @code{WARNING}, and @code{ERROR}.
+
+@item @strong{-l} @emph{FILENAME} | @strong{––logfile=}‌@emph{FILENAME}
+
+Send logging output to @emph{FILENAME}.
+
+@item @strong{-o} @emph{OPTION} | @strong{––option=}@emph{OPTION}
+
+Which configuration option should be accessed or edited.  Required to set a
+value.  If not given, all values of a given section will be printed in the
+format “OPTION = VALUE”.
+
+@item @strong{-r} | @strong{––rewrite}
+
+Write the configuration file even if nothing changed. Will remove all comments!
+
+@item @strong{-S} | @strong{––list-sections}
+
+List available configuration sections for use with @code{--section}.
+
+@item @strong{-s} @emph{SECTION} | @strong{––section=}@emph{SECTION}
+
+Which configuration section should be accessed or edited.
+Required option.
+
+@item @strong{-V} @emph{VALUE} | @strong{––value=}@emph{VALUE}
+
+Configuration value to store in the given section under the given option.
+Must only be given together with @code{-s} and @code{-o} options.
+
+
+@table @asis
+
+@item Note:
+
+Changing the configuration file with @code{-V} will remove comments
+and may reorder sections and remove @code{@@INLINE@@} directives.
+@end table
+
+@item @strong{-v} | @strong{––version}
+
+Print Anastasis version number.
+@end table
+
+@node See Also,Bugs,Description,anastasis-config 1
+@anchor{manpages/anastasis-config 1 see-also}@anchor{9a}
+@subsubsection See Also
+
+
+anastasis.conf(5)
+
+@node Bugs,,See Also,anastasis-config 1
+@anchor{manpages/anastasis-config 1 bugs}@anchor{9b}
+@subsubsection Bugs
+
+
+Report bugs by using @indicateurl{https://bugs.anastasis.lu} or by sending 
electronic
+mail to <@email{contact@@anastasis.lu}>.
+
+@node anastasis-gtk 1,anastasis-httpd 1,anastasis-config 1,Man Pages
+@anchor{manpages/anastasis-gtk 1 doc}@anchor{9c}@anchor{manpages/anastasis-gtk 
1 anastasis-gtk-1}@anchor{9d}
+@subsection anastasis-gtk(1)
+
+
+
+@menu
+* Synopsis: Synopsis<2>.
+* Description: Description<2>.
+* See Also: See Also<2>.
+* Bugs: Bugs<2>.
+
+@end menu
+
+@node Synopsis<2>,Description<2>,,anastasis-gtk 1
+@anchor{manpages/anastasis-gtk 1 synopsis}@anchor{9e}
+@subsubsection Synopsis
+
+
+@strong{anastasis-gtk}
+[@strong{-c} @emph{FILENAME} | @strong{––config=}‌@emph{FILENAME}]
+[@strong{-h} | @strong{––help}]
+[@strong{-L} @emph{LOGLEVEL} | @strong{––loglevel=}‌@emph{LOGLEVEL}]
+[@strong{-l} @emph{FILENAME} | @strong{––logfile=}‌@emph{FILENAME}]
+[@strong{-v} | @strong{––version}]
+
+@node Description<2>,See Also<2>,Synopsis<2>,anastasis-gtk 1
+@anchor{manpages/anastasis-gtk 1 description}@anchor{9f}
+@subsubsection Description
+
+
+@strong{anastasis-gtk} is a graphical tool to run Anastasis
+key recover and backup operations.
+
+
+@table @asis
+
+@item @strong{-c} @emph{FILENAME} | @strong{––config=}‌@emph{FILENAME}
+
+Use the configuration from @emph{FILENAME}.
+
+@item @strong{-h} | @strong{––help}
+
+Print short help on options.
+
+@item @strong{-L} @emph{LOGLEVEL} | @strong{––loglevel=}‌@emph{LOGLEVEL}
+
+Specifies the log level to use. Accepted values are: @code{DEBUG}, @code{INFO},
+@code{WARNING}, @code{ERROR}.
+
+@item @strong{-l} @emph{FILENAME} | @strong{––logfile=}‌@emph{FILENAME}
+
+Send logging output to @emph{FILENAME}.
+
+@item @strong{-v} | @strong{––version}
+
+Print version information.
+@end table
+
+@node See Also<2>,Bugs<2>,Description<2>,anastasis-gtk 1
+@anchor{manpages/anastasis-gtk 1 see-also}@anchor{a0}
+@subsubsection See Also
+
+
+anastasis-reducer(1), anastasis-httpd(1), anastasis.conf(5).
+
+@node Bugs<2>,,See Also<2>,anastasis-gtk 1
+@anchor{manpages/anastasis-gtk 1 bugs}@anchor{a1}
+@subsubsection Bugs
+
+
+Report bugs by using @indicateurl{https://bugs.anastasis.lu/} or by sending 
electronic
+mail to <@email{contact@@anastasis.lu}>.
+
+@node anastasis-httpd 1,anastasis-reducer 1,anastasis-gtk 1,Man Pages
+@anchor{manpages/anastasis-httpd 1 
doc}@anchor{a2}@anchor{manpages/anastasis-httpd 1 anastasis-httpd-1}@anchor{a3}
+@subsection anastasis-httpd(1)
+
+
+
+@menu
+* Synopsis: Synopsis<3>.
+* Description: Description<3>.
+* Signals::
+* See also::
+* Bugs: Bugs<3>.
+
+@end menu
+
+@node Synopsis<3>,Description<3>,,anastasis-httpd 1
+@anchor{manpages/anastasis-httpd 1 synopsis}@anchor{a4}
+@subsubsection Synopsis
+
+
+@strong{anastasis-httpd}
+
+@node Description<3>,Signals,Synopsis<3>,anastasis-httpd 1
+@anchor{manpages/anastasis-httpd 1 description}@anchor{a5}
+@subsubsection Description
+
+
+Banastasis-httpd is a command line tool to run the Anastasis (HTTP
+backend).  The required configuration and database must exist before
+running this command.
+
+Its options are as follows:
+
+
+@table @asis
+
+@item @strong{-C} | @strong{–connection-close}
+
+Force each HTTP connection to be closed after each request.
+
+@item @strong{-c} @emph{FILENAME} | @strong{––config=}‌@emph{FILENAME}
+
+Use the configuration and other resources for the merchant to operate
+from FILENAME.
+
+@item @strong{-h} | @strong{––help}
+
+Print short help on options.
+
+@item @strong{-v} | @strong{––version}
+
+Print version information.
+@end table
+
+@node Signals,See also,Description<3>,anastasis-httpd 1
+@anchor{manpages/anastasis-httpd 1 signals}@anchor{a6}
+@subsubsection Signals
+
+
+@strong{anastasis-httpd} responds to the following signals:
+
+
+@table @asis
+
+@item @code{SIGTERM}
+
+Sending a SIGTERM to the process will cause it to shutdown cleanly.
+@end table
+
+@node See also,Bugs<3>,Signals,anastasis-httpd 1
+@anchor{manpages/anastasis-httpd 1 see-also}@anchor{a7}
+@subsubsection See also
+
+
+anastasis-dbinit(1), anastasis-config(1), anastasis-gtk(1), 
anastasis-reducer(1)
+
+@node Bugs<3>,,See also,anastasis-httpd 1
+@anchor{manpages/anastasis-httpd 1 bugs}@anchor{a8}
+@subsubsection Bugs
+
+
+Report bugs by using @indicateurl{https://bugs.anastasis.lu} or by sending
+electronic mail to <@email{contact@@anastasis.lu}>.
+
+@node anastasis-reducer 1,anastasis conf 5,anastasis-httpd 1,Man Pages
+@anchor{manpages/anastasis-reducer 1 
doc}@anchor{a9}@anchor{manpages/anastasis-reducer 1 
anastasis-reducer-1}@anchor{aa}
+@subsection anastasis-reducer(1)
+
+
+
+@menu
+* Synopsis: Synopsis<4>.
+* Description: Description<4>.
+* See Also: See Also<3>.
+* Bugs: Bugs<4>.
+
+@end menu
+
+@node Synopsis<4>,Description<4>,,anastasis-reducer 1
+@anchor{manpages/anastasis-reducer 1 synopsis}@anchor{ab}
+@subsubsection Synopsis
+
+
+@strong{anastasis-reducer}
+[@strong{-a**_*JSON*_|_}–arguments=@emph{JSON}]
+[@strong{-b**_|_}–backup]
+[@strong{-c} @emph{FILENAME} | @strong{––config=}‌@emph{FILENAME}]
+[@strong{-h} | @strong{––help}]
+[@strong{-L} @emph{LOGLEVEL} | @strong{––loglevel=}‌@emph{LOGLEVEL}]
+[@strong{-l} @emph{FILENAME} | @strong{––logfile=}‌@emph{FILENAME}]
+[@strong{-r**_|_}–restore]
+[@strong{-v} | @strong{––version}] COMMAND
+
+@node Description<4>,See Also<3>,Synopsis<4>,anastasis-reducer 1
+@anchor{manpages/anastasis-reducer 1 description}@anchor{ac}
+@subsubsection Description
+
+
+@strong{anastasis-reducer} is a command-line tool to run Anastasis
+key recover and backup operations using a reducer-style interface.
+The reducer will read the current state from standard input and
+write the resulting state to standard output.  A COMMAND must
+be given on the command line.  The arguments (if any) are to
+be given in JSON format to the @strong{-a} option.  A list of
+commands can be found in the @ref{58,,Reducer API}
+chapter.
+
+
+@table @asis
+
+@item @strong{-a} @emph{JSON} | @strong{––arguments=}@emph{JSON}
+
+Provide JSON inputs for the given command.
+
+@item @strong{-b} | @strong{–backup}
+
+Begin fresh reducer operation for a back up operation.
+
+@item @strong{-c} @emph{FILENAME} | @strong{––config=}‌@emph{FILENAME}
+
+Use the configuration from @emph{FILENAME}.
+
+@item @strong{-h} | @strong{––help}
+
+Print short help on options.
+
+@item @strong{-L} @emph{LOGLEVEL} | @strong{––loglevel=}‌@emph{LOGLEVEL}
+
+Specifies the log level to use. Accepted values are: @code{DEBUG}, @code{INFO},
+@code{WARNING}, @code{ERROR}.
+
+@item @strong{-l} @emph{FILENAME} | @strong{––logfile=}‌@emph{FILENAME}
+
+Send logging output to @emph{FILENAME}.
+
+@item @strong{-r} | @strong{–restore}
+
+Begin fresh reducer operation for a restore operation.
+
+@item @strong{-v} | @strong{––version}
+
+Print version information.
+@end table
+
+@node See Also<3>,Bugs<4>,Description<4>,anastasis-reducer 1
+@anchor{manpages/anastasis-reducer 1 see-also}@anchor{ad}
+@subsubsection See Also
+
+
+anastasis-gtk(1), anastasis-httpd(1), anastasis.conf(5).
+
+@node Bugs<4>,,See Also<3>,anastasis-reducer 1
+@anchor{manpages/anastasis-reducer 1 bugs}@anchor{ae}
+@subsubsection Bugs
+
+
+Report bugs by using @indicateurl{https://bugs.anastasis.lu/} or by sending 
electronic
+mail to <@email{contact@@anastasis.lu}>.
+
+@node anastasis conf 5,,anastasis-reducer 1,Man Pages
+@anchor{manpages/anastasis conf 5 doc}@anchor{af}@anchor{manpages/anastasis 
conf 5 anastasis-conf-5}@anchor{b0}
+@subsection anastasis.conf(5)
+
+
+
+@menu
+* Description: Description<5>.
+* SEE ALSO::
+* BUGS::
+
+@end menu
+
+@node Description<5>,SEE ALSO,,anastasis conf 5
+@anchor{manpages/anastasis conf 5 description}@anchor{b1}
+@subsubsection Description
+
+
+The configuration file is line-oriented.
+Blank lines and whitespace at the beginning and end of a line are ignored.
+Comments start with @code{#} or @code{%} in the first column
+(after any beginning-of-line whitespace) and go to the end of the line.
+
+The file is split into sections.
+Every section begins with “[SECTIONNAME]” and
+contains a number of options of the form “OPTION=VALUE”.
+There may be whitespace around the @code{=} (equal sign).
+Section names and options are @emph{case-insensitive}.
+
+The values, however, are @emph{case-sensitive}.
+In particular, boolean values are one of @code{YES} or @code{NO}.
+Values can include whitespace by surrounding
+the entire value with @code{"} (double quote).
+Note, however, that there are no escape characters in such strings;
+all characters between the double quotes (including other double quotes)
+are taken verbatim.
+
+Values that represent filenames can begin with a @code{/bin/sh}-like
+variable reference.
+This can be simple, such as @code{$TMPDIR/foo}, or complex,
+such as @code{$@{TMPDIR:-$@{TMP:-/tmp@}@}/foo}.
+See @code{[PATHS]} (below).
+
+Values that represent a time duration are represented as a series of one or
+more @code{NUMBER UNIT} pairs, e.g. @code{60 s}, @code{4 weeks 1 day}, @code{5 
years 2 minutes}.
+
+Values that represent an amount are in the usual amount syntax:
+@code{CURRENCY:VALUE.FRACTION}, e.g. @code{EUR:1.50}.
+The @code{FRACTION} portion may extend up to 8 places.
+
+Files containing default values for many of the options described below
+are installed under @code{$ANASTASIS_PREFIX/share/taler/config.d/}.
+The configuration file given with @strong{-c} to Anastasis binaries
+overrides these defaults.
+
+A configuration file may include another, by using the @code{@@INLINE@@} 
directive,
+for example, in @code{main.conf}, you could write @code{@@INLINE@@ sub.conf} to
+include the entirety of @code{sub.conf} at that point in @code{main.conf}.
+.. TODO: Document ‘anastasis-config -V’ in light of ‘@@INLINE@@’ in 
taler-config(1).
+
+@menu
+* GLOBAL OPTIONS::
+* Authorization options::
+* Postgres database configuration::
+
+@end menu
+
+@node GLOBAL OPTIONS,Authorization options,,Description<5>
+@anchor{manpages/anastasis conf 5 global-options}@anchor{b2}
+@subsubsection GLOBAL OPTIONS
+
+
+The following options are from the @code{[anastasis]} section and used by
+the @strong{anastasis-httpd} service.
+
+
+@table @asis
+
+@item PAYMENT_BACKEND_URL
+
+Base-URL of the Taler merchant backend instance to use for payments.
+FIXME: How do we pass the access token?
+
+@item ANNUAL_FEE
+
+Annual fee to be paid for policy uploads, i.e. “EUR:1.5”.
+
+@item TRUTH_UPLOAD_FEE
+
+Annual fee to be paid for truth uploads, i.e. “EUR:1.5”.
+
+@item DB
+
+Database backend to use, only @code{postgres} is supported right now.
+
+@item UPLOAD_LIMIT_MB
+
+Maximum upload size for policy uploads in megabytes. Default is 1.
+
+@item ANNUAL_POLICY_UPLOAD_LIMIT
+
+Maximum number of policies uploaded per year of service. Default is 42.
+
+@item BUSINESS_NAME
+
+Name of the business.
+
+@item SERVER_SALT
+
+Must be set to a high-entropy random server salt that the provider must never
+change after the initial configuration.
+
+@item PORT
+
+TCP port on which the HTTP service should listen on.
+@end table
+
+@node Authorization options,Postgres database configuration,GLOBAL 
OPTIONS,Description<5>
+@anchor{manpages/anastasis conf 5 authorization-options}@anchor{b3}
+@subsubsection Authorization options
+
+
+For each active authorization plugin, options must be configured in
+a section called @code{[authorization-$PLUGIN]} where @code{$PLUGIN} is
+the name of the authorization plugin.
+
+
+@table @asis
+
+@item COST
+
+Fee the user has to pay to obtain a challenge from this
+authorization plugin during recovery.
+
+@item ENABLED
+
+@code{yes} to enable this plugin, @code{no} to disable.
+
+@item COMMAND
+
+Helper command to run (only relevant for some plugins).
+@end table
+
+@node Postgres database configuration,,Authorization options,Description<5>
+@anchor{manpages/anastasis conf 5 postgres-database-configuration}@anchor{b4}
+@subsubsection Postgres database configuration
+
+
+The following options must be in the section @code{[statis-postgres]} if
+@code{postgres} was used for the database under @code{DB} in the
+@code{[anastasis]} section.
+
+
+@table @asis
+
+@item CONFIG
+
+Path under which the Postgres database is that the service
+should use, i.e. @code{postgres://anastasis}.
+@end table
+
+@node SEE ALSO,BUGS,Description<5>,anastasis conf 5
+@anchor{manpages/anastasis conf 5 see-also}@anchor{b5}
+@subsubsection SEE ALSO
+
+
+anastasis-httpd(1), anastasis-config(1)
+
+@node BUGS,,SEE ALSO,anastasis conf 5
+@anchor{manpages/anastasis conf 5 bugs}@anchor{b6}
+@subsubsection BUGS
+
+
+Report bugs by using @indicateurl{https://bugs.anastasis.lu/} or by sending 
electronic
+mail to <@email{contact@@anastasis.lu}>.
+
+@node Complete Index,GNU Free Documentation License,Man Pages,Documentation 
Overview
+@anchor{genindex doc}@anchor{b7}@anchor{genindex complete-index}@anchor{b8}
+@section Complete Index
+
+
+@node GNU Free Documentation License,,Complete Index,Documentation Overview
+@anchor{fdl-1 3 doc}@anchor{b9}@anchor{fdl-1 3 
gnu-fdl-1-3}@anchor{ba}@anchor{fdl-1 3 
gnu-free-documentation-license}@anchor{bb}
+@section GNU Free Documentation License
+
+
+Version 1.3, 3 November 2008
+
+Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation,
+Inc. @indicateurl{https://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+@menu
+* 0. PREAMBLE: 0 PREAMBLE.
+* 1. APPLICABILITY AND DEFINITIONS: 1 APPLICABILITY AND DEFINITIONS.
+* 2. VERBATIM COPYING: 2 VERBATIM COPYING.
+* 3. COPYING IN QUANTITY: 3 COPYING IN QUANTITY.
+* 4. MODIFICATIONS: 4 MODIFICATIONS.
+* 5. COMBINING DOCUMENTS: 5 COMBINING DOCUMENTS.
+* 6. COLLECTIONS OF DOCUMENTS: 6 COLLECTIONS OF DOCUMENTS.
+* 7. AGGREGATION WITH INDEPENDENT WORKS: 7 AGGREGATION WITH INDEPENDENT WORKS.
+* 8. TRANSLATION: 8 TRANSLATION.
+* 9. TERMINATION: 9 TERMINATION.
+* 10. FUTURE REVISIONS OF THIS LICENSE: 10 FUTURE REVISIONS OF THIS LICENSE.
+* 11. RELICENSING: 11 RELICENSING.
+* ADDENDUM; How to use this License for your documents: ADDENDUM How to use 
this License for your documents.
+
+@end menu
+
+@node 0 PREAMBLE,1 APPLICABILITY AND DEFINITIONS,,GNU Free Documentation 
License
+@anchor{fdl-1 3 preamble}@anchor{bc}
+@subsection 0. PREAMBLE
+
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document “free” in the sense of freedom: to assure
+everyone the effective freedom to copy and redistribute it, with or
+without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible for
+modifications made by others.
+
+This License is a kind of “copyleft”, which means that derivative works
+of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft license
+designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free program
+should come with manuals providing the same freedoms that the software
+does. But this License is not limited to software manuals; it can be
+used for any textual work, regardless of subject matter or whether it is
+published as a printed book. We recommend this License principally for
+works whose purpose is instruction or reference.
+
+@node 1 APPLICABILITY AND DEFINITIONS,2 VERBATIM COPYING,0 PREAMBLE,GNU Free 
Documentation License
+@anchor{fdl-1 3 applicability-and-definitions}@anchor{bd}
+@subsection 1. APPLICABILITY AND DEFINITIONS
+
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The “Document”, below, refers
+to any such manual or work. Any member of the public is a licensee, and
+is addressed as “you”. You accept the license if you copy, modify or
+distribute the work in a way requiring permission under copyright law.
+
+A “Modified Version” of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A “Secondary Section” is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document’s overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding them.
+
+The “Invariant Sections” are certain Secondary Sections whose titles are
+designated, as being those of Invariant Sections, in the notice that
+says that the Document is released under this License. If a section does
+not fit the above definition of Secondary then it is not allowed to be
+designated as Invariant. The Document may contain zero Invariant
+Sections. If the Document does not identify any Invariant Sections then
+there are none.
+
+The “Cover Texts” are certain short passages of text that are listed, as
+Front-Cover Texts or Back-Cover Texts, in the notice that says that the
+Document is released under this License. A Front-Cover Text may be at
+most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A “Transparent” copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the general
+public, that is suitable for revising the document straightforwardly
+with generic text editors or (for images composed of pixels) generic
+paint programs or (for drawings) some widely available drawing editor,
+and that is suitable for input to text formatters or for automatic
+translation to a variety of formats suitable for input to text
+formatters. A copy made in an otherwise Transparent file format whose
+markup, or absence of markup, has been arranged to thwart or discourage
+subsequent modification by readers is not Transparent. An image format
+is not Transparent if used for any substantial amount of text. A copy
+that is not “Transparent” is called “Opaque”.
+
+Examples of suitable formats for Transparent copies include plain ASCII
+without markup, Texinfo input format, LaTeX input format, SGML or XML
+using a publicly available DTD, and standard-conforming simple HTML,
+PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the machine-generated
+HTML, PostScript or PDF produced by some word processors for output
+purposes only.
+
+The “Title Page” means, for a printed book, the title page itself, plus
+such following pages as are needed to hold, legibly, the material this
+License requires to appear in the title page. For works in formats which
+do not have any title page as such, “Title Page” means the text near the
+most prominent appearance of the work’s title, preceding the beginning
+of the body of the text.
+
+The “publisher” means any person or entity that distributes copies of
+the Document to the public.
+
+A section “Entitled XYZ” means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as “Acknowledgements”,
+“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of
+such a section when you modify the Document means that it remains a
+section “Entitled XYZ” according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this License,
+but only as regards disclaiming warranties: any other implication that
+these Warranty Disclaimers may have is void and has no effect on the
+meaning of this License.
+
+@node 2 VERBATIM COPYING,3 COPYING IN QUANTITY,1 APPLICABILITY AND 
DEFINITIONS,GNU Free Documentation License
+@anchor{fdl-1 3 verbatim-copying}@anchor{be}
+@subsection 2. VERBATIM COPYING
+
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies to
+the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further copying
+of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@node 3 COPYING IN QUANTITY,4 MODIFICATIONS,2 VERBATIM COPYING,GNU Free 
Documentation License
+@anchor{fdl-1 3 copying-in-quantity}@anchor{bf}
+@subsection 3. COPYING IN QUANTITY
+
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document’s license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover Texts:
+Front-Cover Texts on the front cover, and Back-Cover Texts on the back
+cover. Both covers must also clearly and legibly identify you as the
+publisher of these copies. The front cover must present the full title
+with all words of the title equally prominent and visible. You may add
+other material on the covers in addition. Copying with changes limited
+to the covers, as long as they preserve the title of the Document and
+satisfy these conditions, can be treated as verbatim copying in other
+respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy a
+computer-network location from which the general network-using public
+has access to download using public-standard network protocols a
+complete Transparent copy of the Document, free of added material. If
+you use the latter option, you must take reasonably prudent steps, when
+you begin distribution of Opaque copies in quantity, to ensure that this
+Transparent copy will remain thus accessible at the stated location
+until at least one year after the last time you distribute an Opaque
+copy (directly or through your agents or retailers) of that edition to
+the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@node 4 MODIFICATIONS,5 COMBINING DOCUMENTS,3 COPYING IN QUANTITY,GNU Free 
Documentation License
+@anchor{fdl-1 3 modifications}@anchor{c0}
+@subsection 4. MODIFICATIONS
+
+
+You may copy and distribute a Modified Version of the Document under the
+conditions of sections 2 and 3 above, provided that you release the
+Modified Version under precisely this License, with the Modified Version
+filling the role of the Document, thus licensing distribution and
+modification of the Modified Version to whoever possesses a copy of it.
+In addition, you must do these things in the Modified Version:
+
+
+@itemize -
+
+@item
+A. Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions (which
+should, if there were any, be listed in the History section of the
+Document). You may use the same title as a previous version if the
+original publisher of that version gives permission.
+
+@item
+B. List on the Title Page, as authors, one or more persons or
+entities responsible for authorship of the modifications in the
+Modified Version, together with at least five of the principal
+authors of the Document (all of its principal authors, if it has
+fewer than five), unless they release you from this requirement.
+
+@item
+C. State on the Title page the name of the publisher of the Modified
+Version, as the publisher.
+
+@item
+
+@enumerate 4
+
+@item
+Preserve all the copyright notices of the Document.
+@end enumerate
+
+@item
+E. Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+F. Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+G. Preserve in that license notice the full lists of Invariant
+Sections and required Cover Texts given in the Document’s license
+notice.
+
+@item
+
+@enumerate 8
+
+@item
+Include an unaltered copy of this License.
+@end enumerate
+
+@item
+I. Preserve the section Entitled “History”, Preserve its Title, and
+add to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled “History” in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+J. Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise the
+network locations given in the Document for previous versions it was
+based on. These may be placed in the “History” section. You may omit
+a network location for a work that was published at least four years
+before the Document itself, or if the original publisher of the
+version it refers to gives permission.
+
+@item
+K. For any section Entitled “Acknowledgements” or “Dedications”,
+Preserve the Title of the section, and preserve in the section all
+the substance and tone of each of the contributor acknowledgements
+and/or dedications given therein.
+
+@item
+L. Preserve all the Invariant Sections of the Document, unaltered in
+their text and in their titles. Section numbers or the equivalent are
+not considered part of the section titles.
+
+@item
+M. Delete any section Entitled “Endorsements”. Such a section may not
+be included in the Modified Version.
+
+@item
+N. Do not retitle any existing section to be Entitled “Endorsements”
+or to conflict in title with any Invariant Section.
+
+@item
+
+@enumerate 15
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+@end itemize
+
+If the Modified Version includes new front-matter sections or appendices
+that qualify as Secondary Sections and contain no material copied from
+the Document, you may at your option designate some or all of these
+sections as invariant. To do this, add their titles to the list of
+Invariant Sections in the Modified Version’s license notice. These
+titles must be distinct from any other section titles.
+
+You may add a section Entitled “Endorsements”, provided it contains
+nothing but endorsements of your Modified Version by various
+parties—for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of Front-Cover
+Text and one of Back-Cover Text may be added by (or through arrangements
+made by) any one entity. If the Document already includes a cover text
+for the same cover, previously added by you or by arrangement made by
+the same entity you are acting on behalf of, you may not add another;
+but you may replace the old one, on explicit permission from the
+previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@node 5 COMBINING DOCUMENTS,6 COLLECTIONS OF DOCUMENTS,4 MODIFICATIONS,GNU 
Free Documentation License
+@anchor{fdl-1 3 combining-documents}@anchor{c1}
+@subsection 5. COMBINING DOCUMENTS
+
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its license
+notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by adding
+at the end of it, in parentheses, the name of the original author or
+publisher of that section if known, or else a unique number. Make the
+same adjustment to the section titles in the list of Invariant Sections
+in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled “History” in
+the various original documents, forming one section Entitled “History”;
+likewise combine any sections Entitled “Acknowledgements”, and any
+sections Entitled “Dedications”. You must delete all sections Entitled
+“Endorsements”.
+
+@node 6 COLLECTIONS OF DOCUMENTS,7 AGGREGATION WITH INDEPENDENT WORKS,5 
COMBINING DOCUMENTS,GNU Free Documentation License
+@anchor{fdl-1 3 collections-of-documents}@anchor{c2}
+@subsection 6. COLLECTIONS OF DOCUMENTS
+
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@node 7 AGGREGATION WITH INDEPENDENT WORKS,8 TRANSLATION,6 COLLECTIONS OF 
DOCUMENTS,GNU Free Documentation License
+@anchor{fdl-1 3 aggregation-with-independent-works}@anchor{c3}
+@subsection 7. AGGREGATION WITH INDEPENDENT WORKS
+
+
+A compilation of the Document or its derivatives with other separate and
+independent documents or works, in or on a volume of a storage or
+distribution medium, is called an “aggregate” if the copyright resulting
+from the compilation is not used to limit the legal rights of the
+compilation’s users beyond what the individual works permit. When the
+Document is included in an aggregate, this License does not apply to the
+other works in the aggregate which are not themselves derivative works
+of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies
+of the Document, then if the Document is less than one half of the
+entire aggregate, the Document’s Cover Texts may be placed on covers
+that bracket the Document within the aggregate, or the electronic
+equivalent of covers if the Document is in electronic form. Otherwise
+they must appear on printed covers that bracket the whole aggregate.
+
+@node 8 TRANSLATION,9 TERMINATION,7 AGGREGATION WITH INDEPENDENT WORKS,GNU 
Free Documentation License
+@anchor{fdl-1 3 translation}@anchor{c4}
+@subsection 8. TRANSLATION
+
+
+Translation is considered a kind of modification, so you may distribute
+translations of the Document under the terms of section 4. Replacing
+Invariant Sections with translations requires special permission from
+their copyright holders, but you may include translations of some or all
+Invariant Sections in addition to the original versions of these
+Invariant Sections. You may include a translation of this License, and
+all the license notices in the Document, and any Warranty Disclaimers,
+provided that you also include the original English version of this
+License and the original versions of those notices and disclaimers. In
+case of a disagreement between the translation and the original version
+of this License or a notice or disclaimer, the original version will
+prevail.
+
+If a section in the Document is Entitled “Acknowledgements”,
+“Dedications”, or “History”, the requirement (section 4) to Preserve its
+Title (section 1) will typically require changing the actual title.
+
+@node 9 TERMINATION,10 FUTURE REVISIONS OF THIS LICENSE,8 TRANSLATION,GNU Free 
Documentation License
+@anchor{fdl-1 3 termination}@anchor{c5}
+@subsection 9. TERMINATION
+
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided under this License. Any attempt otherwise to copy,
+modify, sublicense, or distribute it is void, and will automatically
+terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally terminates
+your license, and (b) permanently, if the copyright holder fails to
+notify you of the violation by some reasonable means prior to 60 days
+after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated
+permanently if the copyright holder notifies you of the violation by
+some reasonable means, this is the first time you have received notice
+of violation of this License (for any work) from that copyright holder,
+and you cure the violation prior to 30 days after your receipt of the
+notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+@node 10 FUTURE REVISIONS OF THIS LICENSE,11 RELICENSING,9 TERMINATION,GNU 
Free Documentation License
+@anchor{fdl-1 3 future-revisions-of-this-license}@anchor{c6}
+@subsection 10. FUTURE REVISIONS OF THIS LICENSE
+
+
+The Free Software Foundation may publish new, revised versions of the
+GNU Free Documentation License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns. See 
@indicateurl{https://www.gnu.org/licenses/}.
+
+Each version of the License is given a distinguishing version number. If
+the Document specifies that a particular numbered version of this
+License “or any later version” applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document specifies
+that a proxy can decide which future versions of this License can be
+used, that proxy’s public statement of acceptance of a version
+permanently authorizes you to choose that version for the Document.
+
+@node 11 RELICENSING,ADDENDUM How to use this License for your documents,10 
FUTURE REVISIONS OF THIS LICENSE,GNU Free Documentation License
+@anchor{fdl-1 3 relicensing}@anchor{c7}
+@subsection 11. RELICENSING
+
+
+“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World
+Wide Web server that publishes copyrightable works and also provides
+prominent facilities for anybody to edit those works. A public wiki that
+anybody can edit is an example of such a server. A “Massive Multiauthor
+Collaboration” (or “MMC”) contained in the site means any set of
+copyrightable works thus published on the MMC site.
+
+“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+“Incorporate” means to publish or republish a Document, in whole or in
+part, as part of another Document.
+
+An MMC is “eligible for relicensing” if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole or
+in part into the MMC, (1) had no cover texts or invariant sections, and
+(2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+@node ADDENDUM How to use this License for your documents,,11 RELICENSING,GNU 
Free Documentation License
+@anchor{fdl-1 3 addendum-how-to-use-this-license-for-your-documents}@anchor{c8}
+@subsection ADDENDUM: How to use this License for your documents
+
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+@example
+Copyright (C)  YEAR  YOUR NAME.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+@end example
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the “with … Texts.” line with this:
+
+@example
+with the Invariant Sections being LIST THEIR TITLES, with the
+Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+@end example
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of free
+software license, such as the GNU General Public License, to permit
+their use in free software.
+@anchor{29}@w{                              }
+@anchor{rest tsref-type-ErrorDetail}@w{                              }
+
+@c %**end of body
+@bye
diff --git a/doc/brown-paper.css b/doc/brown-paper.css
new file mode 100644
index 0000000..65e2e79
--- /dev/null
+++ b/doc/brown-paper.css
@@ -0,0 +1,63 @@
+/*
+
+Brown Paper style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net>
+
+*/
+
+.hljs {
+  display: block;
+  overflow-x: auto;
+  padding: 0.5em;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-literal {
+  color:#005599;
+  font-weight:bold;
+}
+
+.hljs,
+.hljs-subst {
+  color: #363c69;
+}
+
+.hljs-string,
+.hljs-title,
+.hljs-section,
+.hljs-type,
+.hljs-attribute,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-built_in,
+.hljs-addition,
+.hljs-variable,
+.hljs-template-tag,
+.hljs-template-variable,
+.hljs-link,
+.hljs-name {
+  color: #2c009f;
+}
+
+.hljs-comment,
+.hljs-quote,
+.hljs-meta,
+.hljs-deletion {
+  color: #802022;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-literal,
+.hljs-doctag,
+.hljs-title,
+.hljs-section,
+.hljs-type,
+.hljs-name,
+.hljs-strong {
+  font-weight: bold;
+}
+
+.hljs-emphasis {
+  font-style: italic;
+}
diff --git a/doc/config.sh b/doc/config.sh
new file mode 100755
index 0000000..6448b38
--- /dev/null
+++ b/doc/config.sh
@@ -0,0 +1,116 @@
+#!/bin/bash
+
+# This file is part of TALER
+# (C) 2014, 2015, 2016 INRIA
+# TALER is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Affero General Public License as published by the Free 
Software
+# Foundation; either version 3, or (at your option) any later version.
+# TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License along with
+# TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+# @author Marcello Stanisci
+# @brief Walkthrough configuration steps
+
+echo -e "\nThis script will set and show all the configuration\n\
+values needed to run an example backend. The backend will listen on port 
8888\n\
+and cooperate with exchange at https://exchange.demo.taler.net/.\n\
+Additionally, the script will also generate the backend's private\n\
+key and banking details' file.\n\n"
+
+# FIXME:
+#       1) banking details generator missing
+
+echo -n "Press ENTER to start > "
+read
+echo 
+
+echo -n "Setting section [merchant]<ENTER> "
+read
+echo 
+
+echo -n "taler-config -s merchant -o serve -V TCP<ENTER> "
+read
+echo 
+taler-config -s merchant -o serve -V TCP
+
+echo -n "taler-config -s merchant -o port -V 8888<ENTER> "
+read
+echo 
+taler-config -s merchant -o port -V 8888
+
+echo -n "taler-config -s merchant -o database -V postgres<ENTER> "
+read
+echo 
+taler-config -s merchant -o database -V postgres
+
+echo -n "taler-config -s merchant -o currency -V KUDOS<ENTER> "
+read
+echo 
+taler-config -s merchant -o currency -V KUDOS
+
+echo -n "taler-config -s merchant -o wireformat -V TEST<ENTER> "
+read
+echo 
+taler-config -s merchant -o wireformat -V TEST
+
+echo -n "Setting section [merchant-instance-default]<ENTER> "
+read
+echo 
+
+echo -ne "taler-config -s merchant-instance-default -o keyfile -V 
\${TALER_DATA_HOME}/key.priv\n\n\
+(The key will be dynamically generated once the backend starts)<ENTER> "
+read
+echo 
+taler-config -s merchant-instance-default -o keyfile -V 
'${TALER_DATA_HOME}/key.priv'
+
+echo -n "Setting section [merchant-instance-wireformat-default]<ENTER> "
+read
+echo 
+
+echo -n "taler-config -s merchant-instance-wireformat-default -o 
test_response_file -V \${TALER_DATA_HOME}/test.json<ENTER> "
+read
+echo 
+taler-config -s merchant-instance-wireformat-default -o test_response_file -V 
'${TALER_DATA_HOME}/test.json'
+
+sleep 1
+echo -ne "Generating test.json..\n\n"
+DEST=$(taler-config -s merchant-instance-wireformat-default -o 
test_response_file -f)
+echo '{
+  "type": "test",
+  "bank_uri": "https://bank.test.taler.net/";,
+  "sig": "MERCHANTSIGNATURE",
+  "account_number": 6,
+  "salt": "SALT"
+  }' > $DEST
+
+echo -n "Setting section [merchantdb-postgres]<ENTER> "
+read
+echo 
+
+echo -n "taler-config -s merchantdb-postgres -o config -V 
postgres:///donations<ENTER> "
+read
+echo 
+taler-config -s merchantdb-postgres -o config -V "postgres:///donations"
+
+echo -n "Setting section [merchant-demoexchange]<ENTER> "
+read
+echo 
+
+echo -n "taler-config -s merchant-demoexchange -o uri -V 
https://exchange.demo.taler.net/<ENTER> "
+read
+echo 
+taler-config -s merchant-demoexchange -o uri -V 
"https://exchange.demo.taler.net/";
+
+echo -n "taler-config -s merchant-demoexchange -o master_key -V 
CQQZ9DY3MZ1ARMN5K1VKDETS04Y2QCKMMCFHZSWJWWVN82BTTH00<ENTER> "
+read
+echo 
+taler-config -s merchant-demoexchange -o master_key -V 
"CQQZ9DY3MZ1ARMN5K1VKDETS04Y2QCKMMCFHZSWJWWVN82BTTH00"
+
+echo -ne "Done. Launch the backend with:\n\
+\$ taler-merchant-httpd\n\nTest it with:\n\
+\$ curl http://127.0.0.1:8888/\n\nIf everything worked \
+fine, you should see:\n\n\
+'Hello, I'm a merchant's Taler backend. This HTTP server is not for 
humans.'\n\n"
diff --git a/doc/docstyle.css b/doc/docstyle.css
new file mode 100644
index 0000000..c91d3f7
--- /dev/null
+++ b/doc/docstyle.css
@@ -0,0 +1,76 @@
+html, body {
+   font-size: 1em;
+   text-align: left;
+   text-decoration: none;
+}
+html { background-color: #e7e7e7; }
+
+body {
+   max-width: 74.92em;
+   margin: 0 auto;
+   padding: .5em 1em 1em 1em;
+   background-color: white;
+   border: .1em solid #c0c0c0;
+}
+
+h1, h2, h3, h4 { color: #333; }
+h5, h6, dt { color: #222; }
+
+
+a h3 {
+  color: #005090;
+}
+
+a[href] { color: #005090; }
+a[href]:visited { color: #100070; }
+a[href]:active, a[href]:hover {
+   color: #100070;
+   text-decoration: none;
+}
+
+.linkrow {
+  margin: 3em 0;
+}
+
+.linkrow {
+  text-align: center;
+}
+
+div.example { padding: .8em 1.2em .4em; }
+pre.example { padding: .8em 1.2em; }
+div.example, pre.example {
+   margin: 1em 0 1em 3% ;
+   -webkit-border-radius: .3em;
+   -moz-border-radius: .3em;
+   border-radius: .3em;
+   border: 1px solid #d4cbb6;
+   background-color: #f2efe4;
+}
+div.example > pre.example {
+   padding: 0 0 .4em;
+   margin: 0;
+   border: none;
+}
+
+
+/* This makes the very long tables of contents in Gnulib and other
+   manuals easier to read. */
+.contents ul, .shortcontents ul { font-weight: bold; }
+.contents ul ul, .shortcontents ul ul { font-weight: normal; }
+.contents ul { list-style: none; }
+
+/* For colored navigation bars (Emacs manual): make the bar extend
+   across the whole width of the page and give it a decent height. */
+.header, .node { margin: 0 -1em; padding: 0 1em; }
+.header p, .node p { line-height: 2em; }
+
+/* For navigation links */
+.node a, .header a { display: inline-block; line-height: 2em; }
+.node a:hover, .header a:hover { background: #f2efe4; }
+
+table.cartouche {
+  border-collapse: collapse;
+  border-color: darkred;
+  border-style: solid;
+  border-width: 3px;
+}
diff --git a/doc/doxygen/.gitignore b/doc/doxygen/.gitignore
new file mode 100644
index 0000000..754097c
--- /dev/null
+++ b/doc/doxygen/.gitignore
@@ -0,0 +1,2 @@
+html/
+anastasis.tag
diff --git a/doc/doxygen/Makefile.am b/doc/doxygen/Makefile.am
new file mode 100644
index 0000000..344d45c
--- /dev/null
+++ b/doc/doxygen/Makefile.am
@@ -0,0 +1,18 @@
+# This Makefile.am is in the public domain
+all:
+       @echo -e \
+"Generate documentation:\n" \
+"\tmake full - full documentation with dependency graphs (slow)\n" \
+"\tmake fast - fast mode without dependency graphs"
+
+full: anastasis.doxy
+       doxygen $<
+
+fast: anastasis.doxy
+       sed 's/\(HAVE_DOT.*=\).*/\1 NO/' $< | doxygen -
+
+clean:
+       rm -rf html
+
+EXTRA_DIST = \
+   anastasis.doxy
diff --git a/doc/doxygen/anastasis.doxy b/doc/doxygen/anastasis.doxy
new file mode 100644
index 0000000..0d990ec
--- /dev/null
+++ b/doc/doxygen/anastasis.doxy
@@ -0,0 +1,247 @@
+# Doxyfile 1.5.5
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           = "Anastasis"
+PROJECT_NUMBER         = 0.0.0
+OUTPUT_DIRECTORY       = .
+CREATE_SUBDIRS         = YES
+OUTPUT_LANGUAGE        = English
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = YES
+STRIP_FROM_PATH        = ../..
+STRIP_FROM_INC_PATH    = ../../src/include \
+                         src/include \
+                         include
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = NO
+QT_AUTOBRIEF           = NO
+MULTILINE_CPP_IS_BRIEF = NO
+INHERIT_DOCS           = NO
+SEPARATE_MEMBER_PAGES  = NO
+TAB_SIZE               = 8
+ALIASES                =
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+OPTIMIZE_FOR_FORTRAN   = NO
+OPTIMIZE_OUTPUT_VHDL   = NO
+BUILTIN_STL_SUPPORT    = NO
+CPP_CLI_SUPPORT        = NO
+SIP_SUPPORT            = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+TYPEDEF_HIDES_STRUCT   = NO
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = YES
+EXTRACT_ANON_NSPACES   = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_GROUP_NAMES       = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = NO
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= NO
+ENABLED_SECTIONS       =
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+FILE_VERSION_FILTER    =
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = YES
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = YES
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           =
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = ../../src/ ../../contrib ../../doc
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          = *.c \
+                         *.h
+RECURSIVE              = YES
+EXCLUDE                =
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = */test_* */.git/* */perf_* */tls_test_*  
anastasis_config.h
+EXCLUDE_SYMBOLS        = GNUNET_* JSON_*
+EXAMPLE_PATH           =
+EXAMPLE_PATTERNS       = *
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             =
+INPUT_FILTER           =
+FILTER_PATTERNS        =
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = YES
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+REFERENCES_LINK_SOURCE = YES
+USE_HTAGS              = NO
+VERBATIM_HEADERS       = NO
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = ANASTASIS_
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+#GENERATE_HTML          = YES
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            =
+HTML_FOOTER            =
+HTML_STYLESHEET        =
+GENERATE_HTMLHELP      = NO
+GENERATE_DOCSET        = NO
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+HTML_DYNAMIC_SECTIONS  = NO
+CHM_FILE               =
+HHC_LOCATION           =
+GENERATE_CHI           = NO
+BINARY_TOC             = NO
+TOC_EXPAND             = NO
+DISABLE_INDEX          = NO
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = YES
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+#GENERATE_LATEX         = YES
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = YES
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         =
+LATEX_HEADER           =
+PDF_HYPERLINKS         = YES
+USE_PDFLATEX           = YES
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+#GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = YES
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    =
+RTF_EXTENSIONS_FILE    =
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+#GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX =
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = NO
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           =
+INCLUDE_FILE_PATTERNS  =
+PREDEFINED             =
+EXPAND_AS_DEFINED      =
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+TAGFILES               = ../../contrib/gnunet.tag ../../contrib/microhttpd.tag 
taler-exchange.tag taler-merchant.tag
+GENERATE_TAGFILE       = anastasis.tag
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = NO
+MSCGEN_PATH            =
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = YES
+CLASS_GRAPH            = NO
+COLLABORATION_GRAPH    = NO
+GROUP_GRAPHS           = NO
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = NO
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = YES
+CALLER_GRAPH           = YES
+GRAPHICAL_HIERARCHY    = NO
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               =
+DOTFILE_DIRS           =
+DOT_GRAPH_MAX_NODES    = 100
+MAX_DOT_GRAPH_DEPTH    = 2
+DOT_TRANSPARENT        = YES
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE           = YES
diff --git a/doc/doxygen/taler-exchange.tag b/doc/doxygen/taler-exchange.tag
new file mode 100644
index 0000000..e69de29
diff --git a/doc/doxygen/taler-merchant.tag b/doc/doxygen/taler-merchant.tag
new file mode 100644
index 0000000..e69de29
diff --git a/doc/fdl-1.3.texi b/doc/fdl-1.3.texi
new file mode 100644
index 0000000..8805f1a
--- /dev/null
+++ b/doc/fdl-1.3.texi
@@ -0,0 +1,506 @@
+@c The GNU Free Documentation License.
+@center Version 1.3, 3 November 2008
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, 
Inc.
+@uref{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The ``Document'', below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as ``you''.  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject.  (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification.  Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
+@acronym{JPG}.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.)  To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document).  You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page.  If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on.  These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles.  Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section Entitled ``Endorsements''.  Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''.  You must delete all
+sections Entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+@uref{http://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.  If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+@item
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works.  A
+public wiki that anybody can edit is an example of such a server.  A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+@end enumerate
+
+@page
+@heading ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+  Copyright (C)  @var{year}  @var{your name}.
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.3
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts.  A copy of the license is included in the section entitled ``GNU
+  Free Documentation License''.
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with@dots{}Texts.'' line with this:
+
+@smallexample
+@group
+    with the Invariant Sections being @var{list their titles}, with
+    the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+    being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
diff --git a/doc/highlight.pack.js b/doc/highlight.pack.js
new file mode 100644
index 0000000..b2f9ff2
--- /dev/null
+++ b/doc/highlight.pack.js
@@ -0,0 +1,2 @@
+/*! highlight.js v9.12.0 | BSD3 License | git.io/hljslicense */
+!function(e){var n="object"==typeof window&&window||"object"==typeof 
self&&self;"undefined"!=typeof 
exports?e(exports):n&&(n.hljs=e({}),"function"==typeof 
define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function 
n(e){return 
e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function 
t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return 
t&&0===t.index}function a(e){return k.test(e)}function i(e){var 
n,t,r,i,o=e.className+" ";i [...]
\ No newline at end of file
diff --git a/doc/lgpl.texi b/doc/lgpl.texi
new file mode 100644
index 0000000..ab03d6c
--- /dev/null
+++ b/doc/lgpl.texi
@@ -0,0 +1,549 @@
+@c The GNU Lesser General Public License.
+@center Version 2.1, February 1999
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 1991, 1999 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+as the successor of the GNU Library Public License, version 2, hence the
+version number 2.1.]
+@end display
+
+@subheading Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software---to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software---typically libraries---of the Free
+Software Foundation and other authors who decide to use it.  You can use
+it too, but we suggest you first think carefully about whether this
+license or the ordinary General Public License is the better strategy to
+use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of it
+in new free programs; and that you are informed that you can do these
+things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the @dfn{Lesser} General Public License because it
+does @emph{Less} to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+``work based on the library'' and a ``work that uses the library''.  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+@subheading TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+@enumerate 0
+@item
+This License Agreement applies to any software library or other program
+which contains a notice placed by the copyright holder or other
+authorized party saying it may be distributed under the terms of this
+Lesser General Public License (also called ``this License'').  Each
+licensee is addressed as ``you''.
+
+  A ``library'' means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The ``Library'', below, refers to any such software library or work
+which has been distributed under these terms.  A ``work based on the
+Library'' means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term ``modification''.)
+
+  ``Source code'' for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+@item
+You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+@item
+You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+@enumerate a
+@item
+The modified work must itself be a software library.
+
+@item
+You must cause the files modified to carry prominent notices
+stating that you changed the files and the date of any change.
+
+@item
+You must cause the whole of the work to be licensed at no
+charge to all third parties under the terms of this License.
+
+@item
+If a facility in the modified Library refers to a function or a
+table of data to be supplied by an application program that uses
+the facility, other than as an argument passed when the facility
+is invoked, then you must make a good faith effort to ensure that,
+in the event an application does not supply such function or
+table, the facility still operates, and performs whatever part of
+its purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has
+a purpose that is entirely well-defined independent of the
+application.  Therefore, Subsection 2d requires that any
+application-supplied function or table used by this function must
+be optional: if the application does not supply it, the square
+root function must still compute square roots.)
+@end enumerate
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+@item
+You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+@item
+You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+@item
+A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a ``work that uses the Library''.  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a ``work that uses the Library'' with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a ``work that uses the
+library''.  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a ``work that uses the Library'' uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+@item
+As an exception to the Sections above, you may also combine or
+link a ``work that uses the Library'' with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+@enumerate a
+@item
+Accompany the work with the complete corresponding
+machine-readable source code for the Library including whatever
+changes were used in the work (which must be distributed under
+Sections 1 and 2 above); and, if the work is an executable linked
+with the Library, with the complete machine-readable ``work that
+uses the Library'', as object code and/or source code, so that the
+user can modify the Library and then relink to produce a modified
+executable containing the modified Library.  (It is understood
+that the user who changes the contents of definitions files in the
+Library will not necessarily be able to recompile the application
+to use the modified definitions.)
+
+@item
+Use a suitable shared library mechanism for linking with the Library.  A
+suitable mechanism is one that (1) uses at run time a copy of the
+library already present on the user's computer system, rather than
+copying library functions into the executable, and (2) will operate
+properly with a modified version of the library, if the user installs
+one, as long as the modified version is interface-compatible with the
+version that the work was made with.
+
+@item
+Accompany the work with a written offer, valid for at
+least three years, to give the same user the materials
+specified in Subsection 6a, above, for a charge no more
+than the cost of performing this distribution.
+
+@item
+If distribution of the work is made by offering access to copy
+from a designated place, offer equivalent access to copy the above
+specified materials from the same place.
+
+@item
+Verify that the user has already received a copy of these
+materials or that you have already sent this user a copy.
+@end enumerate
+
+  For an executable, the required form of the ``work that uses the
+Library'' must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies the
+executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+@item
+You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+@enumerate a
+@item
+Accompany the combined library with a copy of the same work
+based on the Library, uncombined with any other library
+facilities.  This must be distributed under the terms of the
+Sections above.
+
+@item
+Give prominent notice with the combined library of the fact
+that part of it is a work based on the Library, and explaining
+where to find the accompanying uncombined form of the same work.
+@end enumerate
+
+@item
+You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+@item
+You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+@item
+Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+@item
+If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+@item
+If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+@item
+The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+``any later version'', you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+@item
+If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+@center @b{NO WARRANTY}
+
+@item
+BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY ``AS IS'' WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+@item
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+@end enumerate
+
+@subheading END OF TERMS AND CONDITIONS
+
+@page
+@subheading How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+``copyright'' line and a pointer to where the full notice is found.
+
+@smallexample
+@var{one line to give the library's name and an idea of what it does.}
+Copyright (C) @var{year}  @var{name of author}
+
+This library is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or (at
+your option) any later version.
+
+This library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+USA.
+@end smallexample
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a ``copyright disclaimer'' for the library, if
+necessary.  Here is a sample; alter the names:
+
+@smallexample
+Yoyodyne, Inc., hereby disclaims all copyright interest in the library
+`Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+@var{signature of Ty Coon}, 1 April 1990
+Ty Coon, President of Vice
+@end smallexample
+
+That's all there is to it!
diff --git a/doc/manual.info b/doc/manual.info
new file mode 100644
index 0000000..9665880
Binary files /dev/null and b/doc/manual.info differ
diff --git a/doc/mdate-sh b/doc/mdate-sh
new file mode 100755
index 0000000..8c7a590
--- /dev/null
+++ b/doc/mdate-sh
@@ -0,0 +1,228 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+
+scriptversion=2018-03-07.03; # UTC
+
+# Copyright (C) 1995-2018 Free Software Foundation, Inc.
+# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+fi
+
+case $1 in
+  '')
+     echo "$0: No file.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: mdate-sh [--help] [--version] FILE
+
+Pretty-print the modification day of FILE, in the format:
+1 January 1970
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "mdate-sh $scriptversion"
+    exit $?
+    ;;
+esac
+
+error ()
+{
+  echo "$0: $1" >&2
+  exit 1
+}
+
+
+# Prevent date giving response in another language.
+LANG=C
+export LANG
+LC_ALL=C
+export LC_ALL
+LC_TIME=C
+export LC_TIME
+
+# Use UTC to get reproducible result.
+TZ=UTC0
+export TZ
+
+# GNU ls changes its time format in response to the TIME_STYLE
+# variable.  Since we cannot assume 'unset' works, revert this
+# variable to its documented default.
+if test "${TIME_STYLE+set}" = set; then
+  TIME_STYLE=posix-long-iso
+  export TIME_STYLE
+fi
+
+save_arg1=$1
+
+# Find out how to get the extended ls output of a file or directory.
+if ls -L /dev/null 1>/dev/null 2>&1; then
+  ls_command='ls -L -l -d'
+else
+  ls_command='ls -l -d'
+fi
+# Avoid user/group names that might have spaces, when possible.
+if ls -n /dev/null 1>/dev/null 2>&1; then
+  ls_command="$ls_command -n"
+fi
+
+# A 'ls -l' line looks as follows on OS/2.
+#  drwxrwx---        0 Aug 11  2001 foo
+# This differs from Unix, which adds ownership information.
+#  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
+#
+# To find the date, we split the line on spaces and iterate on words
+# until we find a month.  This cannot work with files whose owner is a
+# user named "Jan", or "Feb", etc.  However, it's unlikely that '/'
+# will be owned by a user whose name is a month.  So we first look at
+# the extended ls output of the root directory to decide how many
+# words should be skipped to get the date.
+
+# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
+set x`$ls_command /`
+
+# Find which argument is the month.
+month=
+command=
+until test $month
+do
+  test $# -gt 0 || error "failed parsing '$ls_command /' output"
+  shift
+  # Add another shift to the command.
+  command="$command shift;"
+  case $1 in
+    Jan) month=January; nummonth=1;;
+    Feb) month=February; nummonth=2;;
+    Mar) month=March; nummonth=3;;
+    Apr) month=April; nummonth=4;;
+    May) month=May; nummonth=5;;
+    Jun) month=June; nummonth=6;;
+    Jul) month=July; nummonth=7;;
+    Aug) month=August; nummonth=8;;
+    Sep) month=September; nummonth=9;;
+    Oct) month=October; nummonth=10;;
+    Nov) month=November; nummonth=11;;
+    Dec) month=December; nummonth=12;;
+  esac
+done
+
+test -n "$month" || error "failed parsing '$ls_command /' output"
+
+# Get the extended ls output of the file or directory.
+set dummy x`eval "$ls_command \"\\\$save_arg1\""`
+
+# Remove all preceding arguments
+eval $command
+
+# Because of the dummy argument above, month is in $2.
+#
+# On a POSIX system, we should have
+#
+# $# = 5
+# $1 = file size
+# $2 = month
+# $3 = day
+# $4 = year or time
+# $5 = filename
+#
+# On Darwin 7.7.0 and 7.6.0, we have
+#
+# $# = 4
+# $1 = day
+# $2 = month
+# $3 = year or time
+# $4 = filename
+
+# Get the month.
+case $2 in
+  Jan) month=January; nummonth=1;;
+  Feb) month=February; nummonth=2;;
+  Mar) month=March; nummonth=3;;
+  Apr) month=April; nummonth=4;;
+  May) month=May; nummonth=5;;
+  Jun) month=June; nummonth=6;;
+  Jul) month=July; nummonth=7;;
+  Aug) month=August; nummonth=8;;
+  Sep) month=September; nummonth=9;;
+  Oct) month=October; nummonth=10;;
+  Nov) month=November; nummonth=11;;
+  Dec) month=December; nummonth=12;;
+esac
+
+case $3 in
+  ???*) day=$1;;
+  *) day=$3; shift;;
+esac
+
+# Here we have to deal with the problem that the ls output gives either
+# the time of day or the year.
+case $3 in
+  *:*) set `date`; eval year=\$$#
+       case $2 in
+        Jan) nummonthtod=1;;
+        Feb) nummonthtod=2;;
+        Mar) nummonthtod=3;;
+        Apr) nummonthtod=4;;
+        May) nummonthtod=5;;
+        Jun) nummonthtod=6;;
+        Jul) nummonthtod=7;;
+        Aug) nummonthtod=8;;
+        Sep) nummonthtod=9;;
+        Oct) nummonthtod=10;;
+        Nov) nummonthtod=11;;
+        Dec) nummonthtod=12;;
+       esac
+       # For the first six month of the year the time notation can also
+       # be used for files modified in the last year.
+       if (expr $nummonth \> $nummonthtod) > /dev/null;
+       then
+        year=`expr $year - 1`
+       fi;;
+  *) year=$3;;
+esac
+
+# The result.
+echo $day $month $year
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/doc/sphinx/.gitignore b/doc/sphinx/.gitignore
new file mode 100644
index 0000000..69fa449
--- /dev/null
+++ b/doc/sphinx/.gitignore
@@ -0,0 +1 @@
+_build/
diff --git a/doc/sphinx/Makefile b/doc/sphinx/Makefile
new file mode 100644
index 0000000..48030b5
--- /dev/null
+++ b/doc/sphinx/Makefile
@@ -0,0 +1,179 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# User-friendly check for sphinx-build
+ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
+$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx 
installed, then set the SPHINXBUILD environment variable to point to the full 
path of the '$(SPHINXBUILD)' executable. Alternatively you can add the 
directory with the executable to your PATH. If you don't have Sphinx installed, 
grab it from http://sphinx-doc.org/)
+endif
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp 
epub latex latexpdf text man changes linkcheck doctest gettext
+
+help:
+       @echo "Please use \`make <target>' where <target> is one of"
+       @echo "  html       to make standalone HTML files"
+       @echo "  dirhtml    to make HTML files named index.html in directories"
+       @echo "  singlehtml to make a single large HTML file"
+       @echo "  pickle     to make pickle files"
+       @echo "  json       to make JSON files"
+       @echo "  htmlhelp   to make HTML files and a HTML help project"
+       @echo "  qthelp     to make HTML files and a qthelp project"
+       @echo "  devhelp    to make HTML files and a Devhelp project"
+       @echo "  epub       to make an epub"
+       @echo "  latex      to make LaTeX files, you can set PAPER=a4 or 
PAPER=letter"
+       @echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+       @echo "  latexpdfja to make LaTeX files and run them through 
platex/dvipdfmx"
+       @echo "  text       to make text files"
+       @echo "  man        to make manual pages"
+       @echo "  texinfo    to make Texinfo files"
+       @echo "  info       to make Texinfo files and run them through makeinfo"
+       @echo "  gettext    to make PO message catalogs"
+       @echo "  changes    to make an overview of all changed/added/deprecated 
items"
+       @echo "  xml        to make Docutils-native XML files"
+       @echo "  pseudoxml  to make pseudoxml-XML files for display purposes"
+       @echo "  linkcheck  to check all external links for integrity"
+       @echo "  doctest    to run all doctests embedded in the documentation 
(if enabled)"
+
+clean:
+       rm -rf $(BUILDDIR)/*
+
+# The html-linked builder does not support caching, so we
+# remove all cached state first.
+html:
+# -W = exit 1 on warning; --keep-going = complete build anyway; -w 
/tmp/sphinx-warnings.log = write log to ~/warnings.log
+       $(SPHINXBUILD) -b html-linked $(ALLSPHINXOPTS) $(BUILDDIR)/html
+       @echo
+       @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+       $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+       @echo
+       @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+       $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+       @echo
+       @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+       $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+       @echo
+       @echo "Build finished; now you can process the pickle files."
+
+json:
+       $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+       @echo
+       @echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+       $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+       @echo
+       @echo "Build finished; now you can run HTML Help Workshop with the" \
+             ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+       $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+       @echo
+       @echo "Build finished; now you can run "qcollectiongenerator" with the" 
\
+             ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+       @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/neuro.qhcp"
+       @echo "To view the help file:"
+       @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/neuro.qhc"
+
+devhelp:
+       $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+       @echo
+       @echo "Build finished."
+       @echo "To view the help file:"
+       @echo "# mkdir -p $$HOME/.local/share/devhelp/neuro"
+       @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/neuro"
+       @echo "# devhelp"
+
+epub:
+       $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+       @echo
+       @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo
+       @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+       @echo "Run \`make' in that directory to run these through (pdf)latex" \
+             "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo "Running LaTeX files through pdflatex..."
+       $(MAKE) -C $(BUILDDIR)/latex all-pdf
+       @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+latexpdfja:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo "Running LaTeX files through platex and dvipdfmx..."
+       $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
+       @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+       $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+       @echo
+       @echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+       $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+       @echo
+       @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo:
+       $(SPHINXBUILD) -b texinfo . $(BUILDDIR)/texinfo ./index.rst -D 
master_doc=index
+       @echo
+       @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo"
+       @echo "Run \`make' in that directory to run these through makeinfo"
+
+info:
+       $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+       @echo "Running Texinfo files through makeinfo..."
+       make -C $(BUILDDIR)/texinfo info
+       @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+       $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+       @echo
+       @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes:
+       $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+       @echo
+       @echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+       $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+       @echo
+       @echo "Link check complete; look for any errors in the above output " \
+             "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+       $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+       @echo "Testing of doctests in the sources finished, look at the " \
+             "results in $(BUILDDIR)/doctest/output.txt."
+
+xml:
+       $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
+       @echo
+       @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+
+pseudoxml:
+       $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
+       @echo
+       @echo "Build finished. The pseudo-XML files are in 
$(BUILDDIR)/pseudoxml."
diff --git a/doc/sphinx/README b/doc/sphinx/README
new file mode 100644
index 0000000..b7f6414
--- /dev/null
+++ b/doc/sphinx/README
@@ -0,0 +1,10 @@
+This repository contains the documentation for all main GNU Taler components.
+
+Before building the documentation, make sure that you have the required
+dependencies installed using pip3:
+
+$ pip3 install --user --upgrade recommonmark sphinx
+
+Note by Buck: when setting up on VM, I also needed:
+
+# apt install texlive-latex-extra graphviz
diff --git a/doc/sphinx/_exts/__pycache__/typescriptdomain.cpython-39.pyc 
b/doc/sphinx/_exts/__pycache__/typescriptdomain.cpython-39.pyc
new file mode 100644
index 0000000..077f3c9
Binary files /dev/null and 
b/doc/sphinx/_exts/__pycache__/typescriptdomain.cpython-39.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/__init__.py 
b/doc/sphinx/_exts/httpdomain/__init__.py
new file mode 100644
index 0000000..b5a7dc2
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/__init__.py
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+"""
+    sphinxcontrib
+    ~~~~~~~~~~~~~
+
+    This package is a namespace package that contains all extensions
+    distributed in the ``sphinx-contrib`` distribution.
+
+    :copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+__import__('pkg_resources').declare_namespace(__name__)
+
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-37.pyc 
b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000..6f0c344
Binary files /dev/null and 
b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-37.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-38.pyc 
b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000..2b7f52b
Binary files /dev/null and 
b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-38.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-39.pyc 
b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000..0323e4b
Binary files /dev/null and 
b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-39.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-37.pyc 
b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-37.pyc
new file mode 100644
index 0000000..031c4ed
Binary files /dev/null and 
b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-37.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-38.pyc 
b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-38.pyc
new file mode 100644
index 0000000..062d289
Binary files /dev/null and 
b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-38.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-39.pyc 
b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-39.pyc
new file mode 100644
index 0000000..32e2273
Binary files /dev/null and 
b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-39.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/__init__.py 
b/doc/sphinx/_exts/httpdomain/autohttp/__init__.py
new file mode 100644
index 0000000..95372d4
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/__init__.py
@@ -0,0 +1,11 @@
+"""
+    sphinxcontrib.autohttp
+    ~~~~~~~~~~~~~~~~~~~~~~
+
+    The sphinx.ext.autodoc-style HTTP API reference builder
+    for sphinxcontrib.httpdomain.
+
+    :copyright: Copyright 2011 by Hong Minhee
+    :license: BSD, see LICENSE for details.
+
+"""
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/bottle.py 
b/doc/sphinx/_exts/httpdomain/autohttp/bottle.py
new file mode 100644
index 0000000..d8c1859
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/bottle.py
@@ -0,0 +1,114 @@
+"""
+    sphinxcontrib.autohttp.bottle
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The sphinx.ext.autodoc-style HTTP API reference builder (from Bottle)
+    for sphinxcontrib.httpdomain.
+
+    :copyright: Copyright 2012 by Jameel Al-Aziz
+    :license: BSD, see LICENSE for details.
+
+"""
+
+import re
+import six
+
+from docutils import nodes
+from docutils.parsers.rst import directives
+from docutils.statemachine import ViewList
+
+from sphinx.util import force_decode
+from sphinx.util.compat import Directive
+from sphinx.util.nodes import nested_parse_with_titles
+from sphinx.util.docstrings import prepare_docstring
+from sphinx.pycode import ModuleAnalyzer
+
+from sphinxcontrib import httpdomain
+from sphinxcontrib.autohttp.common import http_directive, import_object
+
+
+def translate_bottle_rule(app, rule):
+    buf = six.StringIO()
+    if hasattr(app.router, "parse_rule"):
+        iterator = app.router.parse_rule(rule)  # bottle 0.11
+    else:
+        iterator = app.router._itertokens(rule)  # bottle 0.12
+    for name, filter, conf in iterator:
+        if filter:
+            buf.write('(')
+            buf.write(name)
+            if (filter != app.router.default_filter and filter != 'default')\
+                    or conf:
+                buf.write(':')
+                buf.write(filter)
+            if conf:
+                buf.write(':')
+                buf.write(conf)
+            buf.write(')')
+        else:
+            buf.write(name)
+    return buf.getvalue()
+
+
+def get_routes(app):
+    for route in app.routes:
+        path = translate_bottle_rule(app, route.rule)
+        yield route.method, path, route
+
+
+class AutobottleDirective(Directive):
+
+    has_content = True
+    required_arguments = 1
+    option_spec = {'endpoints': directives.unchanged,
+                   'undoc-endpoints': directives.unchanged,
+                   'include-empty-docstring': directives.unchanged}
+
+    @property
+    def endpoints(self):
+        endpoints = self.options.get('endpoints', None)
+        if not endpoints:
+            return None
+        return frozenset(re.split(r'\s*,\s*', endpoints))
+
+    @property
+    def undoc_endpoints(self):
+        undoc_endpoints = self.options.get('undoc-endpoints', None)
+        if not undoc_endpoints:
+            return frozenset()
+        return frozenset(re.split(r'\s*,\s*', undoc_endpoints))
+
+    def make_rst(self):
+        app = import_object(self.arguments[0])
+        for method, path, target in get_routes(app):
+            endpoint = target.name or target.callback.__name__
+            if self.endpoints and endpoint not in self.endpoints:
+                continue
+            if endpoint in self.undoc_endpoints:
+                continue
+            view = target.callback
+            docstring = view.__doc__ or ''
+            if not isinstance(docstring, six.text_type):
+                analyzer = ModuleAnalyzer.for_module(view.__module__)
+                docstring = force_decode(docstring, analyzer.encoding)
+            if not docstring and 'include-empty-docstring' not in self.options:
+                continue
+            docstring = prepare_docstring(docstring)
+            for line in http_directive(method, path, docstring):
+                yield line
+
+    def run(self):
+        node = nodes.section()
+        node.document = self.state.document
+        result = ViewList()
+        for line in self.make_rst():
+            result.append(line, '<autobottle>')
+        nested_parse_with_titles(self.state, result, node)
+        return node.children
+
+
+def setup(app):
+    if 'http' not in app.domains:
+        httpdomain.setup(app)
+    app.add_directive('autobottle', AutobottleDirective)
+
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/common.py 
b/doc/sphinx/_exts/httpdomain/autohttp/common.py
new file mode 100644
index 0000000..199e297
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/common.py
@@ -0,0 +1,36 @@
+"""
+    sphinxcontrib.autohttp.common
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The common functions for web framework reflection.
+
+    :copyright: Copyright 2011 by Hong Minhee
+    :license: BSD, see LICENSE for details.
+
+"""
+import six
+from six.moves import builtins
+from six.moves import reduce
+
+def import_object(import_name):
+    module_name, expr = import_name.split(':', 1)
+    mod = __import__(module_name)
+    mod = reduce(getattr, module_name.split('.')[1:], mod)
+    globals = builtins
+    if not isinstance(globals, dict):
+        globals = globals.__dict__
+    return eval(expr, globals, mod.__dict__)
+
+
+def http_directive(method, path, content):
+    method = method.lower().strip()
+    if isinstance(content, six.string_types):
+        content = content.splitlines()
+    yield ''
+    paths = [path] if isinstance(path, six.string_types) else path
+    for path in paths:
+        yield '.. http:{method}:: {path}'.format(**locals())
+    yield ''
+    for line in content:
+        yield '   ' + line
+    yield ''
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/flask.py 
b/doc/sphinx/_exts/httpdomain/autohttp/flask.py
new file mode 100644
index 0000000..4bd5232
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/flask.py
@@ -0,0 +1,48 @@
+"""
+    sphinxcontrib.autohttp.flask
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The sphinx.ext.autodoc-style HTTP API reference builder (from Flask)
+    for sphinxcontrib.httpdomain.
+
+    :copyright: Copyright 2011 by Hong Minhee
+    :license: BSD, see LICENSE for details.
+
+"""
+from __future__ import absolute_import
+
+import re
+import itertools
+import six
+
+from docutils import nodes
+from docutils.parsers.rst import directives
+from docutils.statemachine import ViewList
+
+from sphinx.util import force_decode
+from sphinx.util.compat import Directive
+from sphinx.util.nodes import nested_parse_with_titles
+from sphinx.util.docstrings import prepare_docstring
+from sphinx.pycode import ModuleAnalyzer
+
+from sphinxcontrib import httpdomain
+from sphinxcontrib.autohttp.common import http_directive, import_object
+
+from .flask_base import AutoflaskBase
+
+class AutoflaskDirective(AutoflaskBase):
+
+    def run(self):
+        node = nodes.section()
+        node.document = self.state.document
+        result = ViewList()
+        for line in self.make_rst():
+            result.append(line, '<autoflask>')
+        nested_parse_with_titles(self.state, result, node)
+        return node.children
+
+
+def setup(app):
+    if 'http' not in app.domains:
+        httpdomain.setup(app)
+    app.add_directive('autoflask', AutoflaskDirective)
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/flask_base.py 
b/doc/sphinx/_exts/httpdomain/autohttp/flask_base.py
new file mode 100644
index 0000000..50454fe
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/flask_base.py
@@ -0,0 +1,215 @@
+"""
+    sphinxcontrib.autohttp.flask
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The sphinx.ext.autodoc-style HTTP API reference builder (from Flask)
+    for sphinxcontrib.httpdomain.
+
+    :copyright: Copyright 2011 by Hong Minhee
+    :license: BSD, see LICENSE for details.
+
+"""
+
+import re
+import itertools
+import six
+
+from docutils import nodes
+from docutils.parsers.rst import directives
+from docutils.statemachine import ViewList
+
+from sphinx.util import force_decode
+from sphinx.util.compat import Directive
+from sphinx.util.nodes import nested_parse_with_titles
+from sphinx.util.docstrings import prepare_docstring
+from sphinx.pycode import ModuleAnalyzer
+
+from sphinxcontrib import httpdomain
+from sphinxcontrib.autohttp.common import http_directive, import_object
+
+
+def translate_werkzeug_rule(rule):
+    from werkzeug.routing import parse_rule
+    buf = six.StringIO()
+    for conv, arg, var in parse_rule(rule):
+        if conv:
+            buf.write('(')
+            if conv != 'default':
+                buf.write(conv)
+                buf.write(':')
+            buf.write(var)
+            buf.write(')')
+        else:
+            buf.write(var)
+    return buf.getvalue()
+
+
+def get_routes(app, endpoint=None, order=None):
+    endpoints = []
+    for rule in app.url_map.iter_rules(endpoint):
+        url_with_endpoint = (
+            six.text_type(next(app.url_map.iter_rules(rule.endpoint))),
+            rule.endpoint
+        )
+        if url_with_endpoint not in endpoints:
+            endpoints.append(url_with_endpoint)
+    if order == 'path':
+        endpoints.sort()
+    endpoints = [e for _, e in endpoints]
+    for endpoint in endpoints:
+        methodrules = {}
+        for rule in app.url_map.iter_rules(endpoint):
+            methods = rule.methods.difference(['OPTIONS', 'HEAD'])
+            path = translate_werkzeug_rule(rule.rule)
+            for method in methods:
+                if method in methodrules:
+                    methodrules[method].append(path)
+                else:
+                    methodrules[method] = [path]
+        for method, paths in methodrules.items():
+            yield method, paths, endpoint
+
+
+def quickref_directive(method, path, content):
+    rcomp = re.compile("^\s*.. :quickref:\s*(?P<quick>.*)$")
+    method = method.lower().strip()
+    if isinstance(content, six.string_types):
+         content = content.splitlines()
+    description=""
+    name=""
+    ref = 
path.replace("<","(").replace(">",")").replace("/","-").replace(":","-")
+    for line in content:
+         qref = rcomp.match(line)
+         if qref:
+            quickref = qref.group("quick")
+            parts = quickref.split(";",1)
+            if len(parts)>1:
+                name = parts[0]
+                description= parts[1]
+            else:
+                description= quickref
+            break
+
+    row ={}
+    row['name'] = name
+    row['operation'] = '      - `%s %s <#%s-%s>`_' % (method.upper(), path, 
method.lower(), ref)
+    row['description'] = description
+
+    return row
+
+class AutoflaskBase(Directive):
+
+    has_content = True
+    required_arguments = 1
+    option_spec = {'endpoints': directives.unchanged,
+                   'blueprints': directives.unchanged,
+                   'modules': directives.unchanged,
+                   'order': directives.unchanged,
+                   'undoc-endpoints': directives.unchanged,
+                   'undoc-blueprints': directives.unchanged,
+                   'undoc-modules': directives.unchanged,
+                   'undoc-static': directives.unchanged,
+                   'include-empty-docstring': directives.unchanged}
+
+    @property
+    def endpoints(self):
+        endpoints = self.options.get('endpoints', None)
+        if not endpoints:
+            return None
+        return re.split(r'\s*,\s*', endpoints)
+
+    @property
+    def undoc_endpoints(self):
+        undoc_endpoints = self.options.get('undoc-endpoints', None)
+        if not undoc_endpoints:
+            return frozenset()
+        return frozenset(re.split(r'\s*,\s*', undoc_endpoints))
+
+    @property
+    def blueprints(self):
+        blueprints = self.options.get('blueprints', None)
+        if not blueprints:
+            return None
+        return frozenset(re.split(r'\s*,\s*', blueprints))
+
+    @property
+    def undoc_blueprints(self):
+        undoc_blueprints = self.options.get('undoc-blueprints', None)
+        if not undoc_blueprints:
+            return frozenset()
+        return frozenset(re.split(r'\s*,\s*', undoc_blueprints))
+
+    @property
+    def modules(self):
+        modules = self.options.get('modules', None)
+        if not modules:
+            return frozenset()
+        return frozenset(re.split(r'\s*,\s*', modules))
+
+    @property
+    def undoc_modules(self):
+        undoc_modules = self.options.get('undoc-modules', None)
+        if not undoc_modules:
+            return frozenset()
+        return frozenset(re.split(r'\s*,\s*', undoc_modules))
+
+    @property
+    def order(self):
+        order = self.options.get('order', None)
+        if order not in (None, 'path'):
+            raise ValueError('Invalid value for :order:')
+        return order
+
+    def make_rst(self, qref=False):
+        app = import_object(self.arguments[0])
+        if self.endpoints:
+            routes = itertools.chain(*[get_routes(app, endpoint, self.order)
+                    for endpoint in self.endpoints])
+        else:
+            routes = get_routes(app, order=self.order)
+        for method, paths, endpoint in routes:
+            try:
+                blueprint, _, endpoint_internal = endpoint.rpartition('.')
+                if self.blueprints and blueprint not in self.blueprints:
+                    continue
+                if blueprint in self.undoc_blueprints:
+                    continue
+            except ValueError:
+                pass  # endpoint is not within a blueprint
+
+            if endpoint in self.undoc_endpoints:
+                continue
+            try:
+                static_url_path = app.static_url_path # Flask 0.7 or higher
+            except AttributeError:
+                static_url_path = app.static_path # Flask 0.6 or under
+            if ('undoc-static' in self.options and endpoint == 'static' and
+                static_url_path + '/(path:filename)' in paths):
+                continue
+            view = app.view_functions[endpoint]
+
+            if self.modules and view.__module__ not in self.modules:
+                continue
+
+            if self.undoc_modules and view.__module__ in self.modules:
+                continue
+
+            docstring = view.__doc__ or ''
+            if hasattr(view, 'view_class'):
+                meth_func = getattr(view.view_class, method.lower(), None)
+                if meth_func and meth_func.__doc__:
+                    docstring = meth_func.__doc__
+            if not isinstance(docstring, six.text_type):
+                analyzer = ModuleAnalyzer.for_module(view.__module__)
+                docstring = force_decode(docstring, analyzer.encoding)
+
+            if not docstring and 'include-empty-docstring' not in self.options:
+                continue
+            docstring = prepare_docstring(docstring)
+            if qref == True:
+                for path in paths:
+                    row = quickref_directive(method, path, docstring)
+                    yield row
+            else:
+                for line in http_directive(method, paths, docstring):
+                    yield line
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/flaskqref.py 
b/doc/sphinx/_exts/httpdomain/autohttp/flaskqref.py
new file mode 100644
index 0000000..c28bb15
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/flaskqref.py
@@ -0,0 +1,80 @@
+"""
+    sphinxcontrib.autohttp.flaskqref
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The sphinx.ext.autodoc-style HTTP API quick reference 
+    builder (from Flask)
+    for sphinxcontrib.httpdomain.
+
+    :copyright: Copyright 2011 by Hong Minhee
+    :license: BSD, see LICENSE for details.
+
+"""
+
+from docutils import nodes
+from docutils.statemachine import ViewList
+
+from sphinxcontrib import httpdomain
+from sphinx.util.nodes import nested_parse_with_titles
+
+from .flask import AutoflaskBase
+
+
+class QuickReferenceFlaskDirective(AutoflaskBase):
+
+
+    header = [ '',
+              '.. list-table::',
+              '    :widths: 20 45 35',
+              '    :header-rows: 1',
+              '',
+              '    * - Resource',
+              '      - Operation',
+              '      - Description'
+            ]
+
+    def run(self):
+        node = nodes.section()
+        node.document = self.state.document
+        result = ViewList()
+        for line in QuickReferenceFlaskDirective.header:
+            result.append(line, '<qrefflask>') 
+        table={}
+        table_sorted_names=[]
+        
+        for table_row in self.make_rst(qref=True):
+            name = table_row['name']
+            if table.get(name) is None:
+                table[name]=[]
+            table[name].append(table_row) 
+            if name not in table_sorted_names:
+                table_sorted_names.append(name)
+
+        table_sorted_names.sort()
+
+        for name in table_sorted_names:
+            # Keep table display clean by not repeating duplicate
+            # resource names and descriptions
+            display_name = name
+            previous_description=None
+            for row in table[name]:
+                result.append('    * - %s' % display_name, '<qrefflask>')
+                display_name =""
+                result.append(row['operation'], '<qrefflask>')
+                description = row['description']
+                if previous_description is not None and previous_description 
== description:
+                    description =""
+                else:
+                    previous_description = description
+
+                result.append('      - %s' % description,  '<qrefflask>')
+
+        result.append('', '<qrefflask>')
+        nested_parse_with_titles(self.state, result, node)
+        return node.children
+        
+def setup(app):
+    if 'http' not in app.domains:
+        httpdomain.setup(app)
+    app.add_directive('qrefflask', QuickReferenceFlaskDirective)
+
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/tornado.py 
b/doc/sphinx/_exts/httpdomain/autohttp/tornado.py
new file mode 100644
index 0000000..9a514fe
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/tornado.py
@@ -0,0 +1,128 @@
+"""
+    sphinxcontrib.autohttp.tornado
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The sphinx.ext.autodoc-style HTTP API reference builder (from Tornado)
+    for sphinxcontrib.httpdomain.
+
+    :copyright: Copyright 2013 by Rodrigo Machado
+    :license: BSD, see LICENSE for details.
+
+"""
+
+import inspect
+import re
+import six
+
+from docutils import nodes
+from docutils.parsers.rst import directives
+from docutils.statemachine import ViewList
+
+from sphinx.util import force_decode
+from sphinx.util.compat import Directive
+from sphinx.util.nodes import nested_parse_with_titles
+from sphinx.util.docstrings import prepare_docstring
+from sphinx.pycode import ModuleAnalyzer
+
+from sphinxcontrib import httpdomain
+from sphinxcontrib.autohttp.common import http_directive, import_object
+
+
+def translate_tornado_rule(app, rule):
+    buf = six.StringIO()
+    for name, filter, conf in app.router.parse_rule(rule):
+        if filter:
+            buf.write('(')
+            buf.write(name)
+            if filter != app.router.default_filter or conf:
+                buf.write(':')
+                buf.write(filter)
+            if conf:
+                buf.write(':')
+                buf.write(conf)
+            buf.write(')')
+        else:
+            buf.write(name)
+    return buf.getvalue()
+
+
+def get_routes(app):
+    for spec in app.handlers[0][1]:
+        handler = spec.handler_class
+        doc_methods = list(handler.SUPPORTED_METHODS)
+        if 'HEAD' in doc_methods:
+            doc_methods.remove('HEAD')
+        if 'OPTIONS' in doc_methods:
+            doc_methods.remove('OPTIONS')
+
+        for method in doc_methods:
+            maybe_method = getattr(handler, method.lower(), None)
+            if (inspect.isfunction(maybe_method) or
+                    inspect.ismethod(maybe_method)):
+                yield method.lower(), spec.regex.pattern, handler
+
+
+def normalize_path(path):
+    if path.endswith('$'):
+        path = path[:-1]
+    return path
+
+
+class AutoTornadoDirective(Directive):
+
+    has_content = True
+    required_arguments = 1
+    option_spec = {'endpoints': directives.unchanged,
+                   'undoc-endpoints': directives.unchanged,
+                   'include-empty-docstring': directives.unchanged}
+
+    @property
+    def endpoints(self):
+        endpoints = self.options.get('endpoints', None)
+        if not endpoints:
+            return None
+        return frozenset(re.split(r'\s*,\s*', endpoints))
+
+    @property
+    def undoc_endpoints(self):
+        undoc_endpoints = self.options.get('undoc-endpoints', None)
+        if not undoc_endpoints:
+            return frozenset()
+        return frozenset(re.split(r'\s*,\s*', undoc_endpoints))
+
+    def make_rst(self):
+        app = import_object(self.arguments[0])
+        for method, path, handler in get_routes(app):
+            class_name = handler.__name__
+            method_name = getattr(handler, method).__name__
+            endpoint = '.'.join((class_name, method_name))
+
+            if self.endpoints and endpoint not in self.endpoints:
+                continue
+            if endpoint in self.undoc_endpoints:
+                continue
+
+            docstring = getattr(handler, method).__doc__ or ''
+            #if not isinstance(docstring, unicode):
+            #    analyzer = ModuleAnalyzer.for_module(view.__module__)
+            #    docstring = force_decode(docstring, analyzer.encoding)
+            if not docstring and 'include-empty-docstring' not in self.options:
+                continue
+            docstring = prepare_docstring(docstring)
+            for line in http_directive(method, normalize_path(path), 
docstring):
+                yield line
+
+    def run(self):
+        node = nodes.section()
+        node.document = self.state.document
+        result = ViewList()
+        for line in self.make_rst():
+            result.append(line, '<autotornado>')
+        nested_parse_with_titles(self.state, result, node)
+        return node.children
+
+
+def setup(app):
+    if 'http' not in app.domains:
+        httpdomain.setup(app)
+    app.add_directive('autotornado', AutoTornadoDirective)
diff --git a/doc/sphinx/_exts/httpdomain/httpdomain.py 
b/doc/sphinx/_exts/httpdomain/httpdomain.py
new file mode 100644
index 0000000..59665a0
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/httpdomain.py
@@ -0,0 +1,772 @@
+"""
+    sphinxcontrib.httpdomain
+    ~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The HTTP domain for documenting RESTful HTTP APIs.
+
+    :copyright: Copyright 2011 by Hong Minhee
+    :license: BSD, see LICENSE for details.
+
+"""
+
+import re
+
+from docutils import nodes
+
+from pygments.lexer import RegexLexer, bygroups
+from pygments.lexers import get_lexer_by_name
+from pygments.token import Literal, Text, Operator, Keyword, Name, Number
+from pygments.util import ClassNotFound
+
+from sphinx import addnodes
+from sphinx.roles import XRefRole
+from sphinx.domains import Domain, ObjType, Index
+from sphinx.directives import ObjectDescription, directives
+from sphinx.util.nodes import make_refnode
+from sphinx.util.docfields import GroupedField, TypedField
+
+# The env.get_doctree() lookup results in a pickle.load() call which is
+# expensive enough to dominate the runtime entirely when the number of 
endpoints
+# and references is large enough. The doctrees are generated during the read-
+# phase and we can cache their lookup during the write-phase significantly
+# improving performance.
+# Currently sphinxcontrib-httpdomain does not declare to support parallel read
+# support (parallel_read_safe is the default False) so we can simply use a
+# module global to hold the cache.
+_doctree_cache = {}
+
+
+class DocRef(object):
+    """Represents a reference to an abstract specification."""
+
+    def __init__(self, base_url, anchor, section):
+        self.base_url = base_url
+        self.anchor = anchor
+        self.section = section
+
+    def __repr__(self):
+        """Returns the URL onto related specification section for the related
+        object."""
+        return '{0}#{1}{2}'.format(self.base_url, self.anchor, self.section)
+
+
+class RFC2616Ref(DocRef):
+    """Represents a reference to RFC2616.
+    In 2014, RFC2616 was replaced by multiple RFCs (7230-7237)."""
+
+    def __init__(self, section):
+        url = 'http://www.w3.org/Protocols/rfc2616/rfc2616-sec{0:d}.html'
+        url = url.format(int(section))
+        super(RFC2616Ref, self).__init__(url, 'sec', section)
+
+
+class IETFRef(DocRef):
+    """Represents a reference to the specific IETF RFC."""
+
+    def __init__(self, rfc, section):
+        url = 'https://tools.ietf.org/html/rfc{0:d}'.format(rfc)
+        super(IETFRef, self).__init__(url, 'section-', section)
+
+
+class EventSourceRef(DocRef):
+
+    def __init__(self, section):
+        url = 'http://www.w3.org/TR/eventsource/'
+        super(EventSourceRef, self).__init__(url, section, '')
+
+
+class CORSRef(DocRef):
+    """Represents a reference to W3 Cross-Origin Resource Sharing 
recommendation."""
+
+    def __init__(self, name, type):
+        url = 'http://www.w3.org/TR/cors/'
+        super(CORSRef, self).__init__(url, name, '-' + type)
+
+
+#: Mapping from lowercase HTTP method name to :class:`DocRef` object which
+#: maintains the URL which points to the section of the RFC which defines that
+#: HTTP method.
+METHOD_REFS = {
+    'patch': IETFRef(5789, 2),
+    'options': IETFRef(7231, '4.3.7'),
+    'get': IETFRef(7231, '4.3.1'),
+    'head': IETFRef(7231, '4.3.2'),
+    'post': IETFRef(7231, '4.3.3'),
+    'put': IETFRef(7231, '4.3.4'),
+    'delete': IETFRef(7231, '4.3.5'),
+    'trace': IETFRef(7231, '4.3.8'),
+    'connect': IETFRef(7231, '4.3.6'),
+    'copy': IETFRef(2518, 8.8),
+    'any': ''
+}
+
+
+#: Mapping from HTTP header name to :class:`DocRef` object which
+#: maintains the URL which points to the related section of the RFC.
+HEADER_REFS = {
+    'Accept': IETFRef(7231, '5.3.2'),
+    'Accept-Charset': IETFRef(7231, '5.3.3'),
+    'Accept-Encoding': IETFRef(7231, '5.3.4'),
+    'Accept-Language': IETFRef(7231, '5.3.5'),
+    'Accept-Ranges': IETFRef(7233, 2.3),
+    'Age': IETFRef(7234, 5.1),
+    'Allow': IETFRef(7231, '7.4.1'),
+    'Authorization': IETFRef(7235, 4.2),
+    'Cache-Control': IETFRef(7234, 5.2),
+    'Connection': IETFRef(7230, 6.1),
+    'Content-Encoding': IETFRef(7231, '3.1.2.2'),
+    'Content-Language': IETFRef(7231, '3.1.3.2'),
+    'Content-Length': IETFRef(7230, '3.3.2'),
+    'Content-Location': IETFRef(7231, '3.1.4.2'),
+    'Content-MD5': RFC2616Ref(14.15), # removed
+    'Content-Range': IETFRef(7233, 4.2),
+    'Content-Type': IETFRef(7231, '3.1.1.5'),
+    'Cookie': IETFRef(2109, '4.3.4'), # also RFC6265 section 5.4
+    'Date': IETFRef(7231, '7.1.1.2'),
+    'Destination': IETFRef(2518, 9.3),
+    'ETag': IETFRef(7232, 2.3),
+    'Expect': IETFRef(7231, '5.1.1'),
+    'Expires': IETFRef(7234, 5.3),
+    'From': IETFRef(7231, '5.5.2'),
+    'Host': IETFRef(7230, 5.4),
+    'If-Match': IETFRef(7232, 3.1),
+    'If-Modified-Since': IETFRef(7232, 3.3),
+    'If-None-Match': IETFRef(7232, 3.2),
+    'If-Range': IETFRef(7233, 3.2),
+    'If-Unmodified-Since': IETFRef(7232, 3.4),
+    'Last-Event-ID': EventSourceRef('last-event-id'),
+    'Last-Modified': IETFRef(7232, 2.2),
+    'Link': IETFRef(5988, '5'),
+    'Location': IETFRef(7231, '7.1.2'),
+    'Max-Forwards': IETFRef(7231, '5.1.2'),
+    'Pragma': IETFRef(7234, 5.4),
+    'Proxy-Authenticate': IETFRef(7235, 4.3),
+    'Proxy-Authorization': IETFRef(7235, 4.4),
+    'Range': IETFRef(7233, 3.1),
+    'Referer': IETFRef(7231, '5.5.2'),
+    'Retry-After': IETFRef(7231, '7.1.3'),
+    'Server': IETFRef(7231, '7.4.2'),
+    'Set-Cookie': IETFRef(2109, '4.2.2'),
+    'TE': IETFRef(7230, 4.3),
+    'Trailer': IETFRef(7230, 4.4),
+    'Transfer-Encoding': IETFRef(7230, '3.3.1'),
+    'Upgrade': IETFRef(7230, 6.7),
+    'User-Agent': IETFRef(7231, '5.5.3'),
+    'Vary': IETFRef(7231, '7.1.4'),
+    'Via': IETFRef(7230, '5.7.1'),
+    'Warning': IETFRef(7234, 5.5),
+    'WWW-Authenticate': IETFRef(7235, 4.1),
+    'Access-Control-Allow-Origin': CORSRef('access-control-allow-origin',
+                                           'response-header'),
+    'Access-Control-Allow-Credentials': 
CORSRef('access-control-allow-credentials',
+                                                'response-header'),
+    'Access-Control-Expose-Headers': CORSRef('access-control-expose-headers',
+                                             'response-header'),
+    'Access-Control-Max-Age': CORSRef('access-control-max-age',
+                                      'response-header'),
+    'Access-Control-Allow-Methods': CORSRef('access-control-allow-methods',
+                                            'response-header'),
+    'Access-Control-Allow-Headers': CORSRef('access-control-allow-headers',
+                                            'response-header'),
+    'Origin': CORSRef('origin', 'request-header'),
+    'Access-Control-Request-Method': CORSRef('access-control-request-method',
+                                             'response-header'),
+    'Access-Control-Request-Headers': CORSRef('access-control-request-headers',
+                                              'response-header'),
+}
+
+
+HTTP_STATUS_CODES = {
+    100: 'Continue',
+    101: 'Switching Protocols',
+    102: 'Processing',
+    200: 'OK',
+    201: 'Created',
+    202: 'Accepted',
+    203: 'Non Authoritative Information',
+    204: 'No Content',
+    205: 'Reset Content',
+    206: 'Partial Content',
+    207: 'Multi Status',
+    226: 'IM Used',              # see RFC 3229
+    300: 'Multiple Choices',
+    301: 'Moved Permanently',
+    302: 'Found',
+    303: 'See Other',
+    304: 'Not Modified',
+    305: 'Use Proxy',
+    307: 'Temporary Redirect',
+    308: 'Permanent Redirect',
+    400: 'Bad Request',
+    401: 'Unauthorized',
+    402: 'Payment Required',     # unused
+    403: 'Forbidden',
+    404: 'Not Found',
+    405: 'Method Not Allowed',
+    406: 'Not Acceptable',
+    407: 'Proxy Authentication Required',
+    408: 'Request Timeout',
+    409: 'Conflict',
+    410: 'Gone',
+    411: 'Length Required',
+    412: 'Precondition Failed',
+    413: 'Request Entity Too Large',
+    414: 'Request URI Too Long',
+    415: 'Unsupported Media Type',
+    416: 'Requested Range Not Satisfiable',
+    417: 'Expectation Failed',
+    418: "I'm a teapot",        # see RFC 2324
+    422: 'Unprocessable Entity',
+    423: 'Locked',
+    424: 'Failed Dependency',
+    426: 'Upgrade Required',
+    429: 'Too Many Requests',
+    449: 'Retry With',           # proprietary MS extension
+    451: 'Unavailable For Legal Reasons',
+    500: 'Internal Server Error',
+    501: 'Not Implemented',
+    502: 'Bad Gateway',
+    503: 'Service Unavailable',
+    504: 'Gateway Timeout',
+    505: 'HTTP Version Not Supported',
+    507: 'Insufficient Storage',
+    510: 'Not Extended'
+}
+
+WEBDAV_STATUS_CODES = [207, 422, 423, 424, 507]
+
+http_sig_param_re = re.compile(r'\((?:(?P<type>[^:)]+):)?(?P<name>[\w_]+)\)',
+                               re.VERBOSE)
+
+
+def sort_by_method(entries):
+    def cmp(item):
+        order = ['HEAD', 'GET', 'POST', 'PUT', 'DELETE', 'PATCH',
+                 'OPTIONS', 'TRACE', 'CONNECT', 'COPY', 'ANY']
+        method = item[0].split(' ', 1)[0]
+        if method in order:
+            return order.index(method)
+        return 100
+    return sorted(entries, key=cmp)
+
+
+def http_resource_anchor(method, path):
+    path = re.sub(r'[{}]', '', re.sub(r'[<>:/]', '-', path))
+    return method.lower() + '-' + path
+
+
+class HTTPResource(ObjectDescription):
+
+    doc_field_types = [
+        TypedField('parameter', label='Parameters',
+                   names=('param', 'parameter', 'arg', 'argument'),
+                   typerolename='obj', typenames=('paramtype', 'type')),
+        TypedField('jsonparameter', label='JSON Parameters',
+                   names=('jsonparameter', 'jsonparam', 'json'),
+                   typerolename='obj', typenames=('jsonparamtype', 
'jsontype')),
+        TypedField('requestjsonobject', label='Request JSON Object',
+                   names=('reqjsonobj', 'reqjson', '<jsonobj', '<json'),
+                   typerolename='obj', typenames=('reqjsonobj', '<jsonobj')),
+        TypedField('requestjsonarray', label='Request JSON Array of Objects',
+                   names=('reqjsonarr', '<jsonarr'),
+                   typerolename='obj',
+                   typenames=('reqjsonarrtype', '<jsonarrtype')),
+        TypedField('responsejsonobject', label='Response JSON Object',
+                   names=('resjsonobj', 'resjson', '>jsonobj', '>json'),
+                   typerolename='obj', typenames=('resjsonobj', '>jsonobj')),
+        TypedField('responsejsonarray', label='Response JSON Array of Objects',
+                   names=('resjsonarr', '>jsonarr'),
+                   typerolename='obj',
+                   typenames=('resjsonarrtype', '>jsonarrtype')),
+        TypedField('queryparameter', label='Query Parameters',
+                   names=('queryparameter', 'queryparam', 'qparam', 'query'),
+                   typerolename='obj',
+                   typenames=('queryparamtype', 'querytype', 'qtype')),
+        GroupedField('formparameter', label='Form Parameters',
+                     names=('formparameter', 'formparam', 'fparam', 'form')),
+        GroupedField('requestheader', label='Request Headers',
+                     rolename='header',
+                     names=('<header', 'reqheader', 'requestheader')),
+        GroupedField('responseheader', label='Response Headers',
+                     rolename='header',
+                     names=('>header', 'resheader', 'responseheader')),
+        GroupedField('statuscode', label='Status Codes',
+                     rolename='statuscode',
+                     names=('statuscode', 'status', 'code'))
+    ]
+
+    option_spec = {
+        'deprecated': directives.flag,
+        'noindex': directives.flag,
+        'synopsis': lambda x: x,
+    }
+
+    method = NotImplemented
+
+    def handle_signature(self, sig, signode):
+        method = self.method.upper() + ' '
+        signode += addnodes.desc_name(method, method)
+        offset = 0
+        path = None
+        for match in http_sig_param_re.finditer(sig):
+            path = sig[offset:match.start()]
+            signode += addnodes.desc_name(path, path)
+            params = addnodes.desc_parameterlist()
+            typ = match.group('type')
+            if typ:
+                typ += ': '
+                params += addnodes.desc_annotation(typ, typ)
+            name = match.group('name')
+            params += addnodes.desc_parameter(name, name)
+            signode += params
+            offset = match.end()
+        if offset < len(sig):
+            path = sig[offset:len(sig)]
+            signode += addnodes.desc_name(path, path)
+        assert path is not None, 'no matches for sig: %s' % sig
+        fullname = self.method.upper() + ' ' + path
+        signode['method'] = self.method
+        signode['path'] = sig
+        signode['fullname'] = fullname
+        return (fullname, self.method, sig)
+
+    def needs_arglist(self):
+        return False
+
+    def add_target_and_index(self, name_cls, sig, signode):
+        signode['ids'].append(http_resource_anchor(*name_cls[1:]))
+        if 'noindex' not in self.options:
+            self.env.domaindata['http'][self.method][sig] = (
+                self.env.docname,
+                self.options.get('synopsis', ''),
+                'deprecated' in self.options)
+
+    def get_index_text(self, modname, name):
+        return ''
+
+
+class HTTPOptions(HTTPResource):
+
+    method = 'options'
+
+
+class HTTPHead(HTTPResource):
+
+    method = 'head'
+
+
+class HTTPPatch(HTTPResource):
+
+    method = 'patch'
+
+
+class HTTPPost(HTTPResource):
+
+    method = 'post'
+
+
+class HTTPGet(HTTPResource):
+
+    method = 'get'
+
+
+class HTTPPut(HTTPResource):
+
+    method = 'put'
+
+
+class HTTPDelete(HTTPResource):
+
+    method = 'delete'
+
+
+class HTTPTrace(HTTPResource):
+
+    method = 'trace'
+
+
+class HTTPConnect(HTTPResource):
+
+    method = 'connect'
+
+
+class HTTPCopy(HTTPResource):
+
+    method = 'copy'
+
+
+class HTTPAny(HTTPResource):
+
+    method = 'any'
+
+
+class HTTPXRefRole(XRefRole):
+
+    def __init__(self, method, **kwargs):
+        XRefRole.__init__(self, **kwargs)
+        self.method = method
+
+    def process_link(self, env, refnode, has_explicit_title, title, target):
+        if not has_explicit_title:
+            title = self.method.upper() + ' ' + title
+        return title, target
+
+
+class HTTPXRefMethodRole(XRefRole):
+
+    def result_nodes(self, document, env, node, is_ref):
+        method = node[0][0].lower()
+        rawsource = node[0].rawsource
+        config = env.domains['http'].env.config
+        if method not in METHOD_REFS:
+            if not config['http_strict_mode']:
+                return [nodes.emphasis(method, method)], []
+            reporter = document.reporter
+            msg = reporter.error('%s is not valid HTTP method' % method,
+                                 line=node.line)
+            prb = nodes.problematic(method, method)
+            return [prb], [msg]
+        url = str(METHOD_REFS[method])
+        if not url:
+            return [nodes.emphasis(method, method)], []
+        node = nodes.reference(rawsource, method.upper(), refuri=url)
+        return [node], []
+
+
+class HTTPXRefStatusRole(XRefRole):
+
+    def result_nodes(self, document, env, node, is_ref):
+        def get_code_status(text):
+            if text.isdigit():
+                code = int(text)
+                return code, HTTP_STATUS_CODES.get(code)
+            else:
+                try:
+                    code, status = re.split(r'\s', text.strip(), 1)
+                    code = int(code)
+                except ValueError:
+                    return None, None
+                known_status = HTTP_STATUS_CODES.get(code)
+                if known_status is None:
+                    return code, None
+                elif known_status.lower() != status.lower():
+                    return code, None
+                else:
+                    return code, status
+
+        def report_unknown_code():
+            if not config['http_strict_mode']:
+                return [nodes.emphasis(text, text)], []
+            reporter = document.reporter
+            msg = reporter.error('%d is unknown HTTP status code' % code,
+                                 line=node.line)
+            prb = nodes.problematic(text, text)
+            return [prb], [msg]
+
+        def report_invalid_code():
+            if not config['http_strict_mode']:
+                return [nodes.emphasis(text, text)], []
+            reporter = document.reporter
+            msg = reporter.error(
+                'HTTP status code must be an integer (e.g. `200`) or '
+                'start with an integer (e.g. `200 OK`); %r is invalid' %
+                text,
+                line=node.line
+            )
+            prb = nodes.problematic(text, text)
+            return [prb], [msg]
+
+        text = node[0][0]
+        rawsource = node[0].rawsource
+        config = env.domains['http'].env.config
+
+        code, status = get_code_status(text)
+        if code is None:
+            return report_invalid_code()
+        elif status is None:
+            return report_unknown_code()
+        elif code == 226:
+            url = 'http://www.ietf.org/rfc/rfc3229.txt'
+        elif code == 418:
+            url = 'http://www.ietf.org/rfc/rfc2324.txt'
+        elif code == 429:
+            url = 'http://tools.ietf.org/html/rfc6585#section-4'
+        elif code == 449:
+            url = 
'http://msdn.microsoft.com/en-us/library/dd891478(v=prot.10).aspx'
+        elif code == 451:
+            url = 'http://www.ietf.org/rfc/rfc7725.txt'
+        elif code in WEBDAV_STATUS_CODES:
+            url = 'http://tools.ietf.org/html/rfc4918#section-11.%d' % 
(WEBDAV_STATUS_CODES.index(code) + 1)
+        elif code in HTTP_STATUS_CODES:
+            url = 'http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html' \
+                  '#sec10.' + ('%d.%d' % (code // 100, 1 + code % 100))
+        else:
+            url = ''
+        node = nodes.reference(rawsource, '%d %s' % (code, status), refuri=url)
+        return [node], []
+
+
+class HTTPXRefHeaderRole(XRefRole):
+
+    def result_nodes(self, document, env, node, is_ref):
+        header = node[0][0]
+        rawsource = node[0].rawsource
+        if header not in HEADER_REFS:
+            _header = '-'.join(map(lambda i: i.title(), header.split('-')))
+            if _header not in HEADER_REFS:
+                return [nodes.emphasis(header, header)], []
+        url = str(HEADER_REFS[header])
+        node = nodes.reference(rawsource, header, refuri=url)
+        return [node], []
+
+
+class HTTPIndex(Index):
+
+    name = 'routingtable'
+    localname = 'HTTP Routing Table'
+    shortname = 'routing table'
+
+    def __init__(self, *args, **kwargs):
+        super(HTTPIndex, self).__init__(*args, **kwargs)
+
+        self.ignore = [
+            [l for l in x.split('/') if l]
+            for x in self.domain.env.config['http_index_ignore_prefixes']]
+        self.ignore.sort(reverse=True)
+
+        # During HTML generation these values pick from class,
+        # not from instance so we have a little hack the system
+        cls = self.__class__
+        cls.shortname = self.domain.env.config['http_index_shortname']
+        cls.localname = self.domain.env.config['http_index_localname']
+
+    def grouping_prefix(self, path):
+        letters = [x for x in path.split('/') if x]
+        for prefix in self.ignore:
+            if letters[:len(prefix)] == prefix:
+                return '/' + '/'.join(letters[:len(prefix) + 1])
+        return '/%s' % (letters[0] if letters else '',)
+
+    def generate(self, docnames=None):
+        content = {}
+        items = ((method, path, info)
+                 for method, routes in self.domain.routes.items()
+                 for path, info in routes.items())
+        items = sorted(items, key=lambda item: item[1])
+        for method, path, info in items:
+            entries = content.setdefault(self.grouping_prefix(path), [])
+            entries.append([
+                method.upper() + ' ' + path, 0, info[0],
+                http_resource_anchor(method, path),
+                '', 'Deprecated' if info[2] else '', info[1]
+            ])
+        items = sorted(
+            (path, sort_by_method(entries))
+            for path, entries in content.items()
+        )
+        return (items, True)
+
+
+class HTTPDomain(Domain):
+    """HTTP domain."""
+
+    name = 'http'
+    label = 'HTTP'
+
+    object_types = {
+        'options': ObjType('options', 'options', 'obj'),
+        'head': ObjType('head', 'head', 'obj'),
+        'post': ObjType('post', 'post', 'obj'),
+        'get': ObjType('get', 'get', 'obj'),
+        'put': ObjType('put', 'put', 'obj'),
+        'patch': ObjType('patch', 'patch', 'obj'),
+        'delete': ObjType('delete', 'delete', 'obj'),
+        'trace': ObjType('trace', 'trace', 'obj'),
+        'connect': ObjType('connect', 'connect', 'obj'),
+        'copy': ObjType('copy', 'copy', 'obj'),
+        'any': ObjType('any', 'any', 'obj')
+    }
+
+    directives = {
+        'options': HTTPOptions,
+        'head': HTTPHead,
+        'post': HTTPPost,
+        'get': HTTPGet,
+        'put': HTTPPut,
+        'patch': HTTPPatch,
+        'delete': HTTPDelete,
+        'trace': HTTPTrace,
+        'connect': HTTPConnect,
+        'copy': HTTPCopy,
+        'any': HTTPAny
+    }
+
+    roles = {
+        'options': HTTPXRefRole('options'),
+        'head': HTTPXRefRole('head'),
+        'post': HTTPXRefRole('post'),
+        'get': HTTPXRefRole('get'),
+        'put': HTTPXRefRole('put'),
+        'patch': HTTPXRefRole('patch'),
+        'delete': HTTPXRefRole('delete'),
+        'trace': HTTPXRefRole('trace'),
+        'connect': HTTPXRefRole('connect'),
+        'copy': HTTPXRefRole('copy'),
+        'any': HTTPXRefRole('any'),
+        'statuscode': HTTPXRefStatusRole(),
+        'method': HTTPXRefMethodRole(),
+        'header': HTTPXRefHeaderRole()
+    }
+
+    initial_data = {
+        'options': {},  # path: (docname, synopsis)
+        'head': {},
+        'post': {},
+        'get': {},
+        'put': {},
+        'patch': {},
+        'delete': {},
+        'trace': {},
+        'connect': {},
+        'copy': {},
+        'any': {}
+    }
+
+    indices = []
+
+    @property
+    def routes(self):
+        return dict((key, self.data[key]) for key in self.object_types)
+
+    def clear_doc(self, docname):
+        for typ, routes in self.routes.items():
+            for path, info in list(routes.items()):
+                if info[0] == docname:
+                    del routes[path]
+
+    def resolve_xref(self, env, fromdocname, builder, typ, target,
+                     node, contnode):
+        try:
+            info = self.data[str(typ)][target]
+        except KeyError:
+            text = contnode.rawsource
+            role = self.roles.get(typ)
+            if role is None:
+                return None
+
+            if fromdocname not in _doctree_cache:
+                _doctree_cache[fromdocname] = env.get_doctree(fromdocname)
+            doctree = _doctree_cache[fromdocname]
+
+            resnode = role.result_nodes(doctree, env, node, None)[0][0]
+            if isinstance(resnode, addnodes.pending_xref):
+                text = node[0][0]
+                reporter = doctree.reporter
+                reporter.warning('Cannot resolve reference to %r' % text,
+                                 line=node.line)
+                return None
+            return resnode
+        else:
+            anchor = http_resource_anchor(typ, target)
+            title = typ.upper() + ' ' + target
+            return make_refnode(builder, fromdocname, info[0], anchor,
+                                contnode, title)
+
+    def resolve_any_xref(self, env, fromdocname, builder, target, node, 
contnode):
+        """Resolve the pending_xref *node* with the given *target*.
+
+        The reference comes from an "any" or similar role, which means that 
Sphinx
+        don't know the type.
+
+        For now sphinxcontrib-httpdomain doesn't resolve any xref nodes.
+
+        :return:
+           list of tuples ``('domain:role', newnode)``, where ``'domain:role'``
+           is the name of a role that could have created the same reference,
+        """
+        return []
+
+    def get_objects(self):
+        for method, routes in self.routes.items():
+            for path, info in routes.items():
+                anchor = http_resource_anchor(method, path)
+                yield (path, path, method, info[0], anchor, 1)
+
+
+class HTTPLexer(RegexLexer):
+    """Lexer for HTTP sessions."""
+
+    name = 'HTTP'
+    aliases = ['http']
+
+    flags = re.DOTALL
+
+    def header_callback(self, match):
+        if match.group(1).lower() == 'content-type':
+            content_type = match.group(5).strip()
+            if ';' in content_type:
+                content_type = content_type[:content_type.find(';')].strip()
+            self.content_type = content_type
+        yield match.start(1), Name.Attribute, match.group(1)
+        yield match.start(2), Text, match.group(2)
+        yield match.start(3), Operator, match.group(3)
+        yield match.start(4), Text, match.group(4)
+        yield match.start(5), Literal, match.group(5)
+        yield match.start(6), Text, match.group(6)
+
+    def continuous_header_callback(self, match):
+        yield match.start(1), Text, match.group(1)
+        yield match.start(2), Literal, match.group(2)
+        yield match.start(3), Text, match.group(3)
+
+    def content_callback(self, match):
+        content_type = getattr(self, 'content_type', None)
+        content = match.group()
+        offset = match.start()
+        if content_type:
+            from pygments.lexers import get_lexer_for_mimetype
+            try:
+                lexer = get_lexer_for_mimetype(content_type)
+            except ClassNotFound:
+                pass
+            else:
+                for idx, token, value in lexer.get_tokens_unprocessed(content):
+                    yield offset + idx, token, value
+                return
+        yield offset, Text, content
+
+    tokens = {
+        'root': [
+            (r'(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS|TRACE|COPY)( +)([^ ]+)( 
+)'
+             r'(HTTPS?)(/)(1\.[01])(\r?\n|$)',
+             bygroups(Name.Function, Text, Name.Namespace, Text,
+                      Keyword.Reserved, Operator, Number, Text),
+             'headers'),
+            (r'(HTTPS?)(/)(1\.[01])( +)(\d{3})( +)([^\r\n]+)(\r?\n|$)',
+             bygroups(Keyword.Reserved, Operator, Number, Text, Number,
+                      Text, Name.Exception, Text),
+             'headers'),
+        ],
+        'headers': [
+            (r'([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|$)', header_callback),
+            (r'([\t ]+)([^\r\n]+)(\r?\n|$)', continuous_header_callback),
+            (r'\r?\n', Text, 'content')
+        ],
+        'content': [
+            (r'.+', content_callback)
+        ]
+    }
+
+
+def setup(app):
+    app.add_domain(HTTPDomain)
+
+    try:
+        get_lexer_by_name('http')
+    except ClassNotFound:
+        app.add_lexer('http', HTTPLexer())
+    app.add_config_value('http_index_ignore_prefixes', [], None)
+    app.add_config_value('http_index_shortname', 'routing table', True)
+    app.add_config_value('http_index_localname', 'HTTP Routing Table', True)
+    app.add_config_value('http_strict_mode', True, None)
+    app.add_config_value('http_headers_ignore_prefixes', ['X-'], None)
diff --git a/doc/sphinx/_exts/taler_sphinx_theme/__init__.py 
b/doc/sphinx/_exts/taler_sphinx_theme/__init__.py
new file mode 100644
index 0000000..2d3c61c
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/__init__.py
@@ -0,0 +1,166 @@
+"""Sphinx Guzzle theme."""
+
+import os
+from os import path
+import xml.etree.ElementTree as ET
+
+from docutils import nodes
+from sphinx.locale import admonitionlabels
+from sphinx.writers.html import HTMLTranslator as SphinxHTMLTranslator
+
+from pygments.style import Style
+from pygments.token import Keyword, Name, Comment, String, Error, \
+     Number, Operator, Generic, Whitespace, Punctuation, Other, Literal
+
+
+def setup(app):
+    """Setup conntects events to the sitemap builder"""
+    app.connect('html-page-context', add_html_link)
+    app.connect('build-finished', create_sitemap)
+    app.set_translator('html', MyHTMLTranslator)
+    app.set_translator('html-linked', MyHTMLTranslator)
+    app.sitemap_links = []
+    app.add_html_theme('taler_sphinx_theme', 
path.abspath(path.dirname(__file__) + "/guzzle_sphinx_theme"))
+
+
+def add_html_link(app, pagename, templatename, context, doctree):
+    """As each page is built, collect page names for the sitemap"""
+    base_url = app.config['html_theme_options'].get('base_url', '')
+    if base_url:
+        app.sitemap_links.append(base_url + pagename + ".html")
+
+
+def create_sitemap(app, exception):
+    """Generates the sitemap.xml from the collected HTML page links"""
+    if (not app.config['html_theme_options'].get('base_url', '') or
+           exception is not None or
+           not app.sitemap_links):
+        return
+
+    filename = app.outdir + "/sitemap.xml"
+    print("Generating sitemap.xml in %s" % filename)
+
+    root = ET.Element("urlset")
+    root.set("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9";)
+
+    for link in app.sitemap_links:
+        url = ET.SubElement(root, "url")
+        ET.SubElement(url, "loc").text = link
+
+    ET.ElementTree(root).write(filename)
+
+
+def html_theme_path():
+    return [os.path.dirname(os.path.abspath(__file__))]
+
+
+class MyHTMLTranslator(SphinxHTMLTranslator):
+    """
+    Handle translating to bootstrap structure.
+    """
+    def visit_table(self, node, name=''):
+        """
+        Override docutils default table formatter to not include a border
+        and to use Bootstrap CSS
+        See: 
http://sourceforge.net/p/docutils/code/HEAD/tree/trunk/docutils/docutils/writers/html4css1/__init__.py#l1550
+        """
+        self.context.append(self.compact_p)
+        self.compact_p = True
+        classes = 'table table-bordered ' + self.settings.table_style
+        classes = classes.strip()
+        self.body.append(
+            self.starttag(node, 'table', CLASS=classes))
+
+    def depart_table(self, node):
+        """
+        This needs overridin' too
+        """
+        self.compact_p = self.context.pop()
+        self.body.append('</table>\n')
+
+    def visit_field(self, node):
+        pass
+
+    def depart_field(self, node):
+        pass
+
+    def visit_field_name(self, node):
+        atts = {}
+        if self.in_docinfo:
+            atts['class'] = 'docinfo-name'
+        else:
+            atts['class'] = 'field-name'
+        self.context.append('')
+        self.body.append(self.starttag(node, 'dt', '', **atts))
+
+    def depart_field_name(self, node):
+        self.body.append('</dt>')
+        self.body.append(self.context.pop())
+
+    def visit_field_body(self, node):
+        self.body.append(self.starttag(node, 'dd', '', CLASS='field-body'))
+        self.set_class_on_child(node, 'first', 0)
+        field = node.parent
+        if (self.compact_field_list or
+            isinstance(field.parent, nodes.docinfo) or
+            field.parent.index(field) == len(field.parent) - 1):
+            # If we are in a compact list, the docinfo, or if this is
+            # the last field of the field list, do not add vertical
+            # space after last element.
+            self.set_class_on_child(node, 'last', -1)
+
+    def depart_field_body(self, node):
+        self.body.append('</dd>\n')
+
+    def visit_field_list(self, node):
+        self.context.append((self.compact_field_list, self.compact_p))
+        self.compact_p = None
+        if 'compact' in node['classes']:
+            self.compact_field_list = True
+        elif (self.settings.compact_field_lists
+              and 'open' not in node['classes']):
+            self.compact_field_list = True
+        if self.compact_field_list:
+            for field in node:
+                field_body = field[-1]
+                assert isinstance(field_body, nodes.field_body)
+                children = [n for n in field_body
+                            if not isinstance(n, nodes.Invisible)]
+                if not (len(children) == 0 or
+                        len(children) == 1 and
+                        isinstance(children[0],
+                                   (nodes.paragraph, nodes.line_block))):
+                    self.compact_field_list = False
+                    break
+        self.body.append(self.starttag(node, 'dl', frame='void',
+                                       rules='none',
+                                       CLASS='docutils field-list'))
+
+    def depart_field_list(self, node):
+        self.body.append('</dl>\n')
+        self.compact_field_list, self.compact_p = self.context.pop()
+
+    def visit_container(self, node):
+        self.body.append(self.starttag(node, 'div', CLASS='docutils'))
+
+    def add_secnumber(self, node):
+        # type: (nodes.Element) -> None
+        if node.get('secnumber'):
+            numbers = list(map(str, node['secnumber']))
+            if len(numbers) <= 3:
+                self.body.append('.'.join(numbers) + self.secnumber_suffix)
+        elif isinstance(node.parent, nodes.section):
+            if self.builder.name == 'singlehtml':
+                docname = self.docnames[-1]
+                anchorname = "%s/#%s" % (docname, node.parent['ids'][0])
+                if anchorname not in self.builder.secnumbers:
+                    anchorname = "%s/" % docname  # try first heading which 
has no anchor
+            else:
+                anchorname = '#' + node.parent['ids'][0]
+                if anchorname not in self.builder.secnumbers:
+                    anchorname = ''  # try first heading which has no anchor
+            if self.builder.secnumbers.get(anchorname):
+                numbers = list(self.builder.secnumbers[anchorname])
+                if len(numbers) <= 3:
+                    self.body.append('.'.join(map(str, numbers)) +
+                                     self.secnumber_suffix)
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-37.pyc 
b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000..6f2a605
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-37.pyc differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-38.pyc 
b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000..3ae3f40
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-38.pyc differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-39.pyc 
b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000..7f4021b
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-39.pyc differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/comments.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/comments.html
new file mode 100644
index 0000000..42a95fb
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/comments.html
@@ -0,0 +1,16 @@
+{% if theme_disqus_comments_shortname %}
+<div id="comments">
+  <div id="disqus_thread"></div>
+  <script type="text/javascript">
+    var disqus_shortname = '{{ theme_disqus_comments_shortname }}';
+    var disqus_identifier = '{{ pagename }}';
+    (function() {
+      var dsq = document.createElement('script'); dsq.type = 
'text/javascript'; dsq.async = true;
+      dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
+      (document.getElementsByTagName('head')[0] || 
document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+  </script>
+  <noscript>Please enable JavaScript to view the <a 
href="http://disqus.com/?ref_noscript";>comments powered by 
Disqus.</a></noscript>
+  <a href="http://disqus.com"; class="dsq-brlink">comments powered by <span 
class="logo-disqus">Disqus</span></a>
+</div>
+{% endif %}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/globaltoc.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/globaltoc.html
new file mode 100644
index 0000000..b2c04e2
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/globaltoc.html
@@ -0,0 +1,14 @@
+
+<div class="sidebar-block">
+  <div class="sidebar-wrapper">
+    <h2>{{ _('Table Of Contents') }}</h2>
+  </div>
+  <div class="sidebar-toc">
+    {% set toctree = toctree(maxdepth=theme_globaltoc_depth|toint, 
collapse=theme_globaltoc_collapse|tobool, 
includehidden=theme_globaltoc_includehidden|tobool) %}
+    {% if toctree %}
+      {{ toctree }}
+    {% else %}
+      {{ toc }}
+    {% endif %}
+  </div>
+</div>
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/layout.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/layout.html
new file mode 100644
index 0000000..18c9e5b
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/layout.html
@@ -0,0 +1,172 @@
+{%- extends "basic/layout.html" %}
+
+{# Do this so that bootstrap is included before the main css file #}
+{%- block htmltitle %}
+  <!-- Licensed under the Apache 2.0 License -->
+  <link rel="stylesheet" type="text/css" href="{{ 
pathto('_static/fonts/open-sans/stylesheet.css', 1) }}" />
+  <!-- Licensed under the SIL Open Font License -->
+  <link rel="stylesheet" type="text/css" href="{{ 
pathto('_static/fonts/source-serif-pro/source-serif-pro.css', 1) }}" />
+  <link rel="stylesheet" type="text/css" href="{{ 
pathto('_static/css/bootstrap.min.css', 1) }}" />
+  <link rel="stylesheet" type="text/css" href="{{ 
pathto('_static/css/bootstrap-theme.min.css', 1) }}" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  {{ super() }}
+{%- endblock %}
+
+{%- block extrahead %}
+  {% if theme_touch_icon %}
+  <link rel="apple-touch-icon" href="{{ pathto('_static/' ~ theme_touch_icon, 
1) }}" />
+  {% endif %}
+  {{ super() }}
+{% endblock %}
+
+{# Displays the URL for the homepage if it's set or the master_doc if it is 
not #}
+{% macro homepage() -%}
+  {%- if theme_homepage %}
+    {%- if hasdoc(theme_homepage) %}
+      {{ pathto(theme_homepage) }}
+    {%- else %}
+      {{ theme_homepage }}
+    {%- endif %}
+  {%- else %}
+    {{ pathto(master_doc) }}
+  {%- endif %}
+{%- endmacro %}
+
+{# Displays the URL for the tospage if it's set or falls back to homepage 
macro #}
+{% macro tospage() -%}
+  {%- if theme_tospage %}
+    {%- if hasdoc(theme_tospage) %}
+      {{ pathto(theme_tospage) }}
+    {%- else %}
+      {{ theme_tospage }}
+    {%- endif %}
+  {%- else %}
+    {{ homepage() }}
+  {%- endif %}
+{%- endmacro %}
+
+{# Displays the URL for the projectpage if it's set or falls back to homepage 
macro #}
+{% macro projectlink() -%}
+  {%- if theme_projectlink %}
+    {%- if hasdoc(theme_projectlink) %}
+      {{ pathto(theme_projectlink) }}
+    {%- else %}
+      {{ theme_projectlink }}
+    {%- endif %}
+  {%- else %}
+    {{ homepage() }}
+  {%- endif %}
+{%- endmacro %}
+
+{# Displays the next and previous links both before and after content #}
+{% macro render_relations() -%}
+  {% if prev or next %}
+  <div class="footer-relations">
+    {% if prev %}
+      <div class="pull-left">
+        <a class="btn btn-default" href="{{ prev.link|e }}" title="{{ 
_('previous chapter')}} (use the left arrow)">{{ prev.title }}</a>
+      </div>
+    {% endif %}
+    {%- if next and next.title != '&lt;no title&gt;' %}
+      <div class="pull-right">
+        <a class="btn btn-default" href="{{ next.link|e }}" title="{{ _('next 
chapter')}} (use the right arrow)">{{ next.title }}</a>
+      </div>
+    {%- endif %}
+    </div>
+    <div class="clearer"></div>
+  {% endif %}
+{%- endmacro %}
+
+{%- macro guzzle_sidebar() %}
+  <div id="left-column">
+    <div class="sphinxsidebar">
+      {%- if sidebars != None %}
+        {#- new style sidebar: explicitly include/exclude templates #}
+        {%- for sidebartemplate in sidebars %}
+        {%- include sidebartemplate %}
+        {%- endfor %}
+      {% else %}
+        {% include "logo-text.html" %}
+        {% include "globaltoc.html" %}
+        {% include "searchbox.html" %}
+      {%- endif %}
+    </div>
+  </div>
+{%- endmacro %}
+
+{%- block content %}
+
+  {%- if pagename == 'index' and theme_index_template %}
+    {% include theme_index_template %}
+  {%- else %}
+    <div class="container-wrapper">
+
+      <div id="mobile-toggle">
+        <a href="#"><span class="glyphicon glyphicon-align-justify" 
aria-hidden="true"></span></a>
+      </div>
+
+      {%- block sidebar1 %}{{ guzzle_sidebar() }}{% endblock %}
+
+      {%- block document_wrapper %}
+        {%- block document %}
+        <div id="right-column">
+          {% block breadcrumbs %}
+          <div role="navigation" aria-label="breadcrumbs navigation">
+            <ol class="breadcrumb">
+              <li><a href="{{ pathto(master_doc) }}">Docs</a></li>
+              {% for doc in parents %}
+                <li><a href="{{ doc.link|e }}">{{ doc.title }}</a></li>
+              {% endfor %}
+              <li>{{ title }}</li>
+            </ol>
+          </div>
+          {% endblock %}
+          <div class="document clearer body" role="main">
+            {% block body %} {% endblock %}
+          </div>
+          {%- block bottom_rel_links %}
+            {{ render_relations() }}
+          {%- endblock %}
+        </div>
+        <div class="clearfix"></div>
+        {%- endblock %}
+      {%- endblock %}
+
+      {%- block comments -%}
+        {% if theme_disqus_comments_shortname %}
+        <div class="container comment-container">
+          {% include "comments.html" %}
+        </div>
+        {% endif %}
+      {%- endblock %}
+    </div>
+  {%- endif %}
+  {%- endblock %}
+
+{%- block footer %}
+<script type="text/javascript">
+  $("#mobile-toggle a").click(function () {
+    $("#left-column").toggle();
+  });
+</script>
+<script type="text/javascript" src="{{ pathto('_static/js/bootstrap.js', 
1)}}"></script>
+{%- block footer_wrapper %}
+  <div class="footer">
+    &copy; Copyright {{ copyright }}. Created using <a 
href="http://sphinx.pocoo.org/";>Sphinx</a>.
+  </div>
+{%- endblock %}
+{%- block ga %}
+  {%- if theme_google_analytics_account %}
+    <script type="text/javascript">
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', '{{ theme_google_analytics_account }}']);
+      _gaq.push(['_trackPageview']);
+      (function() {
+        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+      })();
+    </script>
+  {%- endif %}
+{%- endblock %}
+{%- endblock %}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/localtoc.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/localtoc.html
new file mode 100644
index 0000000..49f8e19
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/localtoc.html
@@ -0,0 +1,10 @@
+{%- if display_toc %}
+<div class="sidebar-block">
+  <div class="sidebar-wrapper">
+    <h2>{{ _('Contents') }}</h2>
+    <div class="sidebar-localtoc">
+      {{ toc }}
+    </div>
+  </div>
+</div>
+{%- endif %}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/logo-text.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/logo-text.html
new file mode 100644
index 0000000..e52500e
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/logo-text.html
@@ -0,0 +1 @@
+<a href="{{ homepage() }}" class="text-logo">{{ theme_project_nav_name or 
shorttitle }}</a>
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/search.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/search.html
new file mode 100644
index 0000000..5d194d8
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/search.html
@@ -0,0 +1,48 @@
+{%- extends "basic/search.html" %}
+
+{% block body %}
+  <h1 id="search-documentation">{{ _('Search') }}</h1>
+  <div id="fallback" class="admonition warning">
+  <script type="text/javascript">$('#fallback').hide();</script>
+  <p>
+    {% trans %}Please activate JavaScript to enable the search
+    functionality.{% endtrans %}
+  </p>
+  </div>
+  <p>
+    {% trans %}From here you can search these documents. Enter your search
+    words into the box below and click "search". Note that the search
+    function will automatically search for all of the words. Pages
+    containing fewer words won't appear in the result list.{% endtrans %}
+  </p>
+
+  <div class="search-page-form">
+    <form class="form-inline" action="{{ pathto('search') }}" method="GET" 
role="form">
+      <div class="input-group">
+        <input name="q" type="text" class="form-control" />
+        <span class="input-group-btn">
+          <button class="btn btn-default" type="button">{{ _('search') 
}}</button>
+        </span>
+      </div>
+      <span id="search-progress" style="padding-left: 10px"></span>
+    </form>
+  </div>
+
+  {% if search_performed %}
+    <h2>{{ _('Search Results') }}</h2>
+    {% if not search_results %}
+      <p>{{ _('Your search did not match any documents. Please make sure that 
all words are spelled correctly and that you\'ve selected enough categories.') 
}}</p>
+    {% endif %}
+  {% endif %}
+  <div id="search-results">
+  {% if search_results %}
+    <ul>
+    {% for href, caption, context in search_results %}
+      <li><a href="{{ pathto(item.href) }}">{{ caption }}</a>
+        <div class="context">{{ context|e }}</div>
+      </li>
+    {% endfor %}
+    </ul>
+  {% endif %}
+  </div>
+{% endblock %}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/searchbox.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/searchbox.html
new file mode 100644
index 0000000..7f574c3
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/searchbox.html
@@ -0,0 +1,15 @@
+{%- if pagename != "search" %}
+<div class="sidebar-block">
+  <div class="sidebar-wrapper">
+    <div id="main-search">
+      <form class="form-inline" action="{{ pathto('search') }}" method="GET" 
role="form">
+        <div class="input-group">
+          <input name="q" type="text" class="form-control" 
placeholder="Search...">
+        </div>
+        <input type="hidden" name="check_keywords" value="yes" />
+        <input type="hidden" name="area" value="default" />
+      </form>
+    </div>
+  </div>
+</div>
+{%- endif %}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/css/bootstrap-theme.min.css
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/css/bootstrap-theme.min.css
new file mode 100755
index 0000000..f05c90c
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/css/bootstrap-theme.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.1.0 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0
 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 
rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 
rgba(255,255,255,0.15),0 1px 1px 
rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-dan
 [...]
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/css/bootstrap.min.css
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/css/bootstrap.min.css
new file mode 100755
index 0000000..e6dfb8b
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/css/bootstrap.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.1.0 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+/*! normalize.css v3.0.0 | MIT License | git.io/normalize 
*/html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px
 dott [...]
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.eot
new file mode 100755
index 0000000..423bd5d
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.svg
new file mode 100755
index 0000000..4469488
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,229 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph />
+<glyph />
+<glyph unicode="&#xd;" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 
-183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 
-141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" />
+<glyph unicode="+" d="M0 
400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#x2000;" horiz-adv-x="652" />
+<glyph unicode="&#x2001;" horiz-adv-x="1304" />
+<glyph unicode="&#x2002;" horiz-adv-x="652" />
+<glyph unicode="&#x2003;" horiz-adv-x="1304" />
+<glyph unicode="&#x2004;" horiz-adv-x="434" />
+<glyph unicode="&#x2005;" horiz-adv-x="326" />
+<glyph unicode="&#x2006;" horiz-adv-x="217" />
+<glyph unicode="&#x2007;" horiz-adv-x="217" />
+<glyph unicode="&#x2008;" horiz-adv-x="163" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="326" />
+<glyph unicode="&#x20ac;" d="M100 500l100 100h113q0 47 5 100h-218l100 
100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 
-25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 
-107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 
-91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 
-128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" 
/>
+<glyph unicode="&#x2212;" d="M200 400h900v300h-900v-300z" />
+<glyph unicode="&#x2601;" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 
86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 
59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 
-122.5z" />
+<glyph unicode="&#x2709;" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 
300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" />
+<glyph unicode="&#x270f;" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 
614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 
-33 13t-33 -13z" />
+<glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#xe001;" d="M0 1200h1200l-500 
-550v-550h300v-100h-800v100h300v550z" />
+<glyph unicode="&#xe002;" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 
90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q17 -55 85.5 
-75.5t147.5 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 
-193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 
-112z" />
+<glyph unicode="&#xe003;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 
-142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 
300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 
-97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
+<glyph unicode="&#xe005;" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 
20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 
-100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 
-174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" />
+<glyph unicode="&#xe006;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 
-449l-384 275l-382 -275l146 447zM168 71l2 1z" />
+<glyph unicode="&#xe007;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 
-449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 
140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" />
+<glyph unicode="&#xe008;" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 
125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 
-74.5v-100l400 -257v-143h-1200z" />
+<glyph unicode="&#xe009;" d="M0 0v1100h1200v-1100h-1200zM100 
100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 
500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 
900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 
600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 
300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 
700h100v100h-100v-100zM1000 900h100v100h-100v-100z" />
+<glyph unicode="&#xe010;" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 
-14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 
35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 
-21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 
14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 
-14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 
14.5h400q21 0 35.5 -14.5 [...]
+<glyph unicode="&#xe011;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 
-14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 
35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 
-21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 
14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 
-14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 
14.5h200q21 0 35.5 -14.5t1 [...]
+<glyph unicode="&#xe012;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 
-14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 
35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 
-14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 
14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 
-14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 
14.5h700q21 0 35.5 -14.5t1 [...]
+<glyph unicode="&#xe013;" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 
207z" />
+<glyph unicode="&#xe014;" d="M106 318l282 282l-282 282l212 212l282 -282l282 
282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" />
+<glyph unicode="&#xe015;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 
-142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 
300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 
-97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 
600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" />
+<glyph unicode="&#xe016;" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 
-141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 
299q-120 -77 -261 -77q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 
-97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 
601h400v200h-400v-200z" />
+<glyph unicode="&#xe017;" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 
-155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 
155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 
-123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 
14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 
14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" />
+<glyph unicode="&#xe018;" d="M100 1h200v300h-200v-300zM400 
1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" />
+<glyph unicode="&#xe019;" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 
-5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 
-5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 
39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 
134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 
-74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 
-134l-3 -5q-25 -47 -38 -93l-2 -6 [...]
+<glyph unicode="&#xe020;" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 
29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 
-17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 
-41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 
100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 
1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" 
/>
+<glyph unicode="&#xe021;" d="M1 601l656 644l644 
-644h-200v-600h-300v400h-300v-400h-300v600h-200z" />
+<glyph unicode="&#xe022;" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 
-11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" />
+<glyph unicode="&#xe023;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" />
+<glyph unicode="&#xe024;" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 
-1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 
-300h490v-400h-1100zM813 200h175v100h-175v-100z" />
+<glyph unicode="&#xe026;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 
47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 
-127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 
-291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 
600h150v300h200v-300h150l-250 -300z" />
+<glyph unicode="&#xe027;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 
-300h-150v-300h-200v300h-150z" />
+<glyph unicode="&#xe028;" d="M0 25v475l200 700h800q199 -700 200 -700v-475q0 
-11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 
200h200l-97 500h-606z" />
+<glyph unicode="&#xe029;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" />
+<glyph unicode="&#xe030;" d="M23 600q0 -118 45.5 -224.5t123 -184t184 
-123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 
-302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 
-146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 
-184t-45.5 -224.5z" />
+<glyph unicode="&#xe031;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 
45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 
-125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 
302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" 
/>
+<glyph unicode="&#xe032;" d="M100 0h1100v1200h-1100v-1200zM200 
100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 
400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 
800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 
400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" 
/>
+<glyph unicode="&#xe033;" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 
59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 
-70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 
800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 
-35.5v-150z" />
+<glyph unicode="&#xe034;" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 
84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 
-115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" />
+<glyph unicode="&#xe035;" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 
127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 
-18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 
49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 
14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 
20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 
6t-6 14z" />
+<glyph unicode="&#xe036;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 
459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 
-71l-141 141l-141 -141z" />
+<glyph unicode="&#xe037;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 
857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 
257z" />
+<glyph unicode="&#xe038;" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 
858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 
257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 
142 405q0 230 -144 408l-6 8z" />
+<glyph unicode="&#xe039;" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 
600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 
800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 
900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 
h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 
1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 
800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 
200v100h100v-100h [...]
+<glyph unicode="&#xe040;" d="M0 200h100v1000h-100v-1000zM100 
0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 
200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 
200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" 
/>
+<glyph unicode="&#xe041;" d="M1 700v475q0 10 7.5 17.5t17.5 7.5h474l700 
-700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 
71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" />
+<glyph unicode="&#xe042;" d="M2 700v475q0 11 7 18t18 7h474l700 -700l-500 
-500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 
30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" />
+<glyph unicode="&#xe043;" d="M100 0v1025l175 175h925v-1000l-100 
-100v1000h-750l-100 -100h750v-1000h-900z" />
+<glyph unicode="&#xe044;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 
15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
+<glyph unicode="&#xe045;" d="M0 100v700h200l100 -200h600l100 
200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 
-10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 
7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 
7t-3.5 17z" />
+<glyph unicode="&#xe046;" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 
29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 
61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 
-20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 
-72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 
31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" />
+<glyph unicode="&#xe047;" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 
234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 
-33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 
-20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" />
+<glyph unicode="&#xe048;" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 
39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v70h471q120 0 213 -88t93 -228q0 -55 -11.5 
-101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 
-91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 
153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 
61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" />
+<glyph unicode="&#xe049;" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 
-10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 
-37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" />
+<glyph unicode="&#xe050;" d="M-75 200h75v800h-75l125 167l125 
-167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 
30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 
50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " />
+<glyph unicode="&#xe051;" d="M33 51l167 125v-75h800v75l167 -125l-167 
-125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 
15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 
-1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" />
+<glyph unicode="&#xe052;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 
15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 
-35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 
-14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 
14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 
14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 
-15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-3 [...]
+<glyph unicode="&#xe053;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 
15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 
-35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 
-14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 
14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 
14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 
-15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35. [...]
+<glyph unicode="&#xe054;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 
-14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 
35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 
-20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 
35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 
-15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 
35.5 -14.5t14.5 -35.5v-100q [...]
+<glyph unicode="&#xe055;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 
-14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 
35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 
-20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 
35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 
-15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 
35.5 -14.5t14.5 -35.5v-100q0 - [...]
+<glyph unicode="&#xe056;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 
-14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 
350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 
-14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 
35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 
-15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 
35.5 -14.5t14.5 -35.5v-100q0 -20 -14. [...]
+<glyph unicode="&#xe057;" d="M-101 500v100h201v75l166 -125l-166 
-125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 
0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 
-35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 
35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 
-35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 
-14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t3 [...]
+<glyph unicode="&#xe058;" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 
35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 
-20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 
0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 
15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 
950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 
14.5h-100q-21 0 -35.5 -14.5t-14. [...]
+<glyph unicode="&#xe059;" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 
-53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" 
/>
+<glyph unicode="&#xe060;" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 
-13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 
263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 
95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " />
+<glyph unicode="&#xe062;" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 
0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 
-189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 
262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 
182t-182.5 75t-182 -75.5t-75 -181.5z" />
+<glyph unicode="&#xe063;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 
47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 
-127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 
125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" />
+<glyph unicode="&#xe064;" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 
177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 
-125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 
-211.5 53t-161.5 138.5t-64 210.5zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 
6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 
-185t-12.5 -156z" />
+<glyph unicode="&#xe065;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 
397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 
-29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 
-117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 
113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" />
+<glyph unicode="&#xe066;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 
-80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 
-70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 
-282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 
64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 
-8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" />
+<glyph unicode="&#xe067;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q60 0 
127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 
-29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 
-117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l566 567l-136 
137l-430 -431l-147 147z" />
+<glyph unicode="&#xe068;" d="M0 603l300 296v-198h200v200h-200l300 300l295 
-300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 
300h200v200h-200v-198z" />
+<glyph unicode="&#xe069;" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 
35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 
-14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe070;" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 
-14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 
-21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe071;" d="M136 550l564 550v-487l500 487v-1100l-500 
488v-488z" />
+<glyph unicode="&#xe072;" d="M200 0l900 550l-900 550v-1100z" />
+<glyph unicode="&#xe073;" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 
35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 
-35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 
35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" 
/>
+<glyph unicode="&#xe074;" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 
15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 
-35.5v-800z" />
+<glyph unicode="&#xe075;" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" />
+<glyph unicode="&#xe076;" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 
35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 
-14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" />
+<glyph unicode="&#xe077;" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 
14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 
-14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" />
+<glyph unicode="&#xe078;" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 
35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 
14.5t-14.5 35.5zM100 500h1100l-550 564z" />
+<glyph unicode="&#xe079;" d="M185 599l592 -592l240 240l-353 353l353 353l-240 
240z" />
+<glyph unicode="&#xe080;" d="M272 194l353 353l-353 353l241 240l572 -571l21 
-22l-1 -1v-1l-592 -591z" />
+<glyph unicode="&#xe081;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 
-80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 
218t-80 300zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" />
+<glyph unicode="&#xe082;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 
-80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 
218t-80 300zM300 500h600v200h-600v-200z" />
+<glyph unicode="&#xe083;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 
-80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 
218t-80 300zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 
212l-141 -141l-141 142l-212 -213l141 -141z" />
+<glyph unicode="&#xe084;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 
-80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 
217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" />
+<glyph unicode="&#xe085;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 
-80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 
218t-80 300zM363 700h144q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 
4t6.5 2.5t9 1.5t9 0.5h11.5h12.5q19 0 30 -10t11 -26 q0 -22 -4 -28t-27 -22q-5 -1 
-12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 
45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-105 0 -172 
-56t-67 -183zM500 300h200v100h-2 [...]
+<glyph unicode="&#xe086;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 
-80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 
218t-80 300zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 
800h200v100h-200v-100z" />
+<glyph unicode="&#xe087;" d="M0 500v200h194q15 60 36 104.5t55.5 86t88 69t126.5 
40.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 
-102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 
200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200 v-206q149 48 201 
206h-201v200h200q-25 74 -76 127.5t-124 76.5v-204h-200v203q-75 -24 -130 
-77.5t-79 -125.5h209v-200h-210z" />
+<glyph unicode="&#xe088;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 
-135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" />
+<glyph unicode="&#xe089;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 
-142l-346 -345z" />
+<glyph unicode="&#xe090;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 
245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" />
+<glyph unicode="&#xe091;" d="M0 547l600 453v-300h600v-300h-600v-301z" />
+<glyph unicode="&#xe092;" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" 
/>
+<glyph unicode="&#xe093;" d="M204 600l450 600l444 
-600h-298v-600h-300v600h-296z" />
+<glyph unicode="&#xe094;" d="M104 600h296v600h300v-600h298l-449 -600z" />
+<glyph unicode="&#xe095;" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 
59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 
-135.5z" />
+<glyph unicode="&#xe096;" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 
-129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" />
+<glyph unicode="&#xe097;" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 
-295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" />
+<glyph unicode="&#xe101;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 
45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 
-123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 
-20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-33 
14.5h-207q-20 0 -32 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" />
+<glyph unicode="&#xe102;" d="M0 
800h100v-200h400v300h200v-300h400v200h100v100h-111v6t-1 15t-3 18l-34 172q-11 39 
-41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 
144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 
-15v-6h-111v-100z M100 0h400v400h-400v-400zM200 900q-3 0 14 48t35 96l18 47l214 
-191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 
-72t7 -28.5h-269z" />
+<glyph unicode="&#xe103;" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 
113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 
58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 
-1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 
76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 
19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 
-32q-369 -197 -458 -401q-48 -111 -28 [...]
+<glyph unicode="&#xe104;" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 
-108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 
157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 
-29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 
34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 
-129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 
-34 -23.5t-72.5 -66.5t-88.5 -105.5t-60  [...]
+<glyph unicode="&#xe105;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 
90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 
-85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 
-90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 
90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 
-75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 
66q-1 1 -28.5 37.5t-42 55t [...]
+<glyph unicode="&#xe106;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 
90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 
143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 
393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 
-258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 
161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 
-140 175l39 146q67 -54 131.5 -1 [...]
+<glyph unicode="&#xe107;" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 
35.5t-7.5 67.5l-642 1056q-20 33 -48 36t-48 -29l-642 -1066q-21 -32 -7.5 -66zM155 
200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 
300v100h-200v-100z" />
+<glyph unicode="&#xe108;" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 
44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 
-12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -21 -13 -29t-32 1l-94 
78h-222l-94 -78q-19 -9 -32 -1t-13 29v64 q0 22 100 113v263l-359 -249q-17 -12 -29 
-5.5t-12 26.5z" />
+<glyph unicode="&#xe109;" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 
15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 
14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 
-35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 
500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 
300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 
100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 
500v100h100v-100h-100zM700 100v100h100v-100h-100z [...]
+<glyph unicode="&#xe110;" d="M0 200v200h259l600 600h241v198l300 -295l-300 
-300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 
180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" />
+<glyph unicode="&#xe111;" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 
70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 
-300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" />
+<glyph unicode="&#xe112;" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 
-117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 
47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 
-65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 
104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" />
+<glyph unicode="&#xe113;" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 
579z" />
+<glyph unicode="&#xe114;" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 
353z" />
+<glyph unicode="&#xe115;" d="M-198 700l299 283l300 -283h-203v-400h385l215 
-200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 
283h-200v600h-796z" />
+<glyph unicode="&#xe116;" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 
18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 
-961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 
15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 
0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 
21t-27.5 43z" />
+<glyph unicode="&#xe117;" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 
70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" />
+<glyph unicode="&#xe118;" d="M1 0l300 700h1200l-300 -700h-1200zM1 
400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 
-70.5h500v-200h-1000z" />
+<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 
-300h-198v-600h198l-298 -300z" />
+<glyph unicode="&#xe120;" d="M0 600l300 298v-198h600v198l300 -298l-300 
-297v197h-600v-197z" />
+<glyph unicode="&#xe121;" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 
70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 
29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 
-45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" 
/>
+<glyph unicode="&#xe122;" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 
5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM99 500v250v5q0 13 0.5 18.5t2.5 13t8 
10.5t15 3h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 
-0.5h-8h-83q-20 0 -34.5 14t-18.5 35q-56 337 -56 351z M1100 200v850q0 21 14.5 
35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 
15t-14.5 35z" />
+<glyph unicode="&#xe123;" d="M74 350q0 21 13.5 35.5t33.5 14.5h17l118 173l63 
327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5l-18 
-37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 
-20 -13 -40t-31 -27q-22 -9 -63 -23t-167.5 -37 t-251.5 -23t-245.5 20.5t-178.5 
41.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 
30.5t39 79.5q-48 -6 -102 -6t-103 6z" />
+<glyph unicode="&#xe124;" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 
179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 
-78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" />
+<glyph unicode="&#xe125;" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 
-75h61q123 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 
84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 
-20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 212l100 
213h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" />
+<glyph unicode="&#xe126;" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 
75h61q123 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 
-84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 
-40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 
-212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" />
+<glyph unicode="&#xe127;" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 
35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 
-11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 
-339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 
-89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 
14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 
10 27l147 183l-86 83l-339 -236v-503z" />
+<glyph unicode="&#xe128;" d="M-101 651q0 72 54 110t139 37h302l-85 121q-11 16 
-11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 16.5 -10.5t26 
-26t16.5 -36.5v-526q0 -13 -85.5 -93.5t-93.5 -80.5h-342q-15 0 -28.5 20t-19.5 
41l-131 339h-106q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 
-40.5l131 -339h293l106 89v502l-342 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 
-20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 
-0.5h-7.5h-6.5h-476v-100zM999 201v600h200v-600h-200z" />
+<glyph unicode="&#xe129;" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 
-15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 
139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 
-13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 
3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6v7.5v7v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 
-16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" />
+<glyph unicode="&#xe130;" d="M1 585q-15 -31 7 -53l112 -110q13 -13 32 -13.5t34 
10.5l121 85l-1 -302q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 
40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 
-15zM76 565l237 339h503l89 -100v-294l-340 -130 q-20 -6 -40 -20t-20 -29v-202q0 
-22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 
-146zM305 1104v200h600v-200h-600z" />
+<glyph unicode="&#xe131;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 
127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 
-217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 500h300l-2 -194l402 
294l-402 298v-197h-298v-201z" />
+<glyph unicode="&#xe132;" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 
127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 
-80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l400 
-294v194h302v201h-300v197z" />
+<glyph unicode="&#xe133;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 
127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 
-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 
600h200v-300h200v300h200l-300 400z" />
+<glyph unicode="&#xe134;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 
127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 
-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 
-400l300 400h-200v300h-200v-300h-200z" />
+<glyph unicode="&#xe135;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 
127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 
-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 
-34 5.5 -93t7.5 -87q0 -9 17 -44t16 -60q12 0 23 -5.5 t23 -15t20 -13.5q20 -10 108 
-42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55.5t-20 -57.5q12 -21 22.5 
-34.5t28 -27t36.5 -17.5q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q101 -2 221 111q31 30 
47 48t34 49t21 62q-14 9 -37.5 [...]
+<glyph unicode="&#xe136;" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 
201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 
-70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 
29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 
-29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 
29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 
q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 
-29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 
29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800  [...]
+<glyph unicode="&#xe138;" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 
-500v-300l-200 -200v500z" />
+<glyph unicode="&#xe139;" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 
-29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 
29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 
-70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 
1000h200v100h-200v-100z" />
+<glyph unicode="&#xe140;" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 
-129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 
329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 
129h400v-400l-129 129l-200 -200z" />
+<glyph unicode="&#xe141;" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 
-172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 
-38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 
0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM513 609q0 32 21 
56.5t52 29.5l122 126l1 1q-9 14 -9 2 [...]
+<glyph unicode="&#xe142;" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 
0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 
96q-27 87 -117 104q-20 2 -29 2q-46 0 -79.5 -17t-67.5 -51l-388 -396l-7 -7l69 
-67l377 373q20 22 39 38q23 23 50 23q38 0 53 -36 q16 -39 -20 -75l-547 -547q-52 
-52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 
41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 
-175.5q-7 -101 -98 -192l-252 -24 [...]
+<glyph unicode="&#xe143;" d="M79 784q0 131 99 229.5t230 98.5q144 0 242 
-129q103 129 245 129q130 0 227 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 
-89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 
99.5t-101 100l-84.5 84.5t-68 74t-60 78t-33.5 70.5t-15 78z M250 784q0 -27 30.5 
-70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 
97t64.5 79t31 72q0 71 -48 119.5t-106 48.5q-73 0 -131 -83l-118 -171l-114 174q-51 
80 -124 80q-59 0 -108.5 -49.5t-49 [...]
+<glyph unicode="&#xe144;" d="M57 353q0 -94 66 -160l141 -141q66 -66 159 -66q95 
0 159 66l283 283q66 66 66 159t-66 159l-141 141q-12 12 -19 17l-105 -105l212 
-212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 
-159zM269 706q0 -93 66 -159l141 -141l19 -17l105 105 l-212 212l389 389l247 
-247l-95 -96l18 -18q46 -46 77 -99l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 
141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" />
+<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 
-15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 
29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 
-30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" />
+<glyph unicode="&#xe146;" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 
36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 
-15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" />
+<glyph unicode="&#xe148;" d="M295 433h139q5 -77 48.5 -126.5t117.5 
-64.5v335l-27 7q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 
159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 
-84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5v-307l64 -14 q34 -7 64 -16.5t70 
-31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 
17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 
-22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 [...]
+<glyph unicode="&#xe149;" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 
55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 
89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -11 2.5 
-24.5t5.5 -24t9.5 -26.5t10.5 -25t14 -27.5t14 -25.5 t15.5 -27t13.5 
-24h242v-100h-197q8 -50 -2.5 -115t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 
7q32 1 102 -16t104 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 
-1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -2 [...]
+<glyph unicode="&#xe150;" d="M2 300l298 -300l298 
300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" 
/>
+<glyph unicode="&#xe151;" d="M2 300h198v900h200v-900h198l-298 -300zM700 
0v200h100v-100h200v-100h-300zM700 
400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 
700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" />
+<glyph unicode="&#xe152;" d="M2 300h198v900h200v-900h198l-298 -300zM700 
0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 
1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" />
+<glyph unicode="&#xe153;" d="M2 300l298 -300l298 
300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 
1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" />
+<glyph unicode="&#xe154;" d="M2 300l298 -300l298 
300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 
800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" />
+<glyph unicode="&#xe155;" d="M2 300l298 -300l298 
300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 
400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" 
/>
+<glyph unicode="&#xe156;" d="M2 300l298 -300l298 
300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 
400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" 
/>
+<glyph unicode="&#xe157;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 
0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 
-282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 
29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 
-70.5v-500z" />
+<glyph unicode="&#xe158;" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 
282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 
-281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 
29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 
-70.5v-500zM400 300l333 250l-333 250v-500z" />
+<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 
0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 
-282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 
29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 
-70.5v-500zM300 700l250 -333l250 333h-500z" />
+<glyph unicode="&#xe160;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 
0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 
-282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 
29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 
-70.5v-500zM300 400h500l-250 333z" />
+<glyph unicode="&#xe161;" d="M0 400v300h300v200l400 -350l-400 
-350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 
29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 
-282.5t-282.5 -117.5h-400z" />
+<glyph unicode="&#xe162;" d="M216 519q10 -19 32 -19h302q-155 -438 -160 -458q-5 
-21 4 -32l9 -8l9 -1q13 0 26 16l538 630q15 19 6 36q-8 18 -32 16h-300q1 4 78 
219.5t79 227.5q2 17 -6 27l-8 8h-9q-16 0 -25 -15q-4 -5 -98.5 -111.5t-228 
-257t-209.5 -238.5q-17 -19 -7 -40z" />
+<glyph unicode="&#xe163;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 
100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 
29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 
-282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " />
+<glyph unicode="&#xe164;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 
281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 
-29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 
122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 
149h500v-500l-149 149l-342 -353z" />
+<glyph unicode="&#xe165;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 
-137t-57 -137t-137 -57t-137 57t-57 137z" />
+<glyph unicode="&#xe166;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 
-17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 
150h100v50h-100v-50z" />
+<glyph unicode="&#xe167;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 
-17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 
150h100v50h-100v-50z" />
+<glyph unicode="&#xe168;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 
-17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 
150h100v50h-100v-50z" />
+<glyph unicode="&#xe169;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 
-17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 401h700v699l-250 -239l-149 
149l-212 -212l149 -149zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe170;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 
-17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 
-149l212 -212l149 148l248 -237v700h-699zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe171;" d="M23 415l1177 784v-1079l-475 272l-310 
-393v416h-392zM494 210l672 938l-672 -712v-226z" />
+<glyph unicode="&#xe172;" d="M0 150v1000q0 20 14.5 35t35.5 
15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 
-14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 
1000h100v200h-100v-200z" />
+<glyph unicode="&#xe173;" d="M0 150v1000q0 20 14.5 35t35.5 
15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 
-127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 
352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" />
+<glyph unicode="&#xe174;" d="M0 150v1000q0 20 14.5 35t35.5 
15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 
-298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 
1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 
-128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" />
+<glyph unicode="&#xe175;" d="M0 150v1000q0 20 14.5 35t35.5 
15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 
14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 
1000v200h100v-200h-100z" />
+<glyph unicode="&#xe176;" d="M0 150v1000q0 20 14.5 35t35.5 
15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 
-35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 
1000v200h100v-200h-100z" />
+<glyph unicode="&#xe177;" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 
14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 
14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" />
+<glyph unicode="&#xe178;" d="M0 400l300 298v-198h400v-200h-400v-198zM100 
800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 
-298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 
300h100v200h-100v-200z" />
+<glyph unicode="&#xe179;" d="M100 700v400l50 100l50 -100v-300h100v300l50 
100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 
-35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 
-55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 
35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -117q-25 -16 -43.5 
-50.5t-18.5 -65.5v-359z" />
+<glyph unicode="&#xe180;" d="M100 0h400v56q-75 0 -87.5 6t-12.5 
44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 
7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 
-44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 
-15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" />
+<glyph unicode="&#xe181;" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 
29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 
-70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 
300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 
-200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" />
+<glyph unicode="&#xe182;" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 
-177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 
162q16 17 13 40.5t-22 37.5l-192 136q-19 14 -45 12t-42 -19l-119 -118q-143 103 
-267 227q-126 126 -227 268l118 118q17 17 20 41.5 t-11 44.5l-139 194q-14 19 
-36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" />
+<glyph unicode="&#xe183;" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 
1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 
-10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -15 -35.5t-35 
-14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 
33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 
-21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 
45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t- [...]
+<glyph unicode="&#xe184;" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 
150v250l100 
100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 
-100v-250z" />
+<glyph unicode="&#xe185;" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 
29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 
29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 
29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" />
+<glyph unicode="&#xe186;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 
300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 
300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
+<glyph unicode="&#xe187;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 
300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 
300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
+<glyph unicode="&#xe188;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 
300h300v100h-200v300h200v100h-300v-500z" />
+<glyph unicode="&#xe189;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" />
+<glyph unicode="&#xe190;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 
107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 
-42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" />
+<glyph unicode="&#xe191;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 
300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 
300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
+<glyph unicode="&#xe192;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 
400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 
v-400h100v500h-200v-100z" />
+<glyph unicode="&#xe193;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 
300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 
700v100h200v-500h-100v400h-100z" />
+<glyph unicode="&#xe194;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 
100h300v-100h-300v-200h300v-100h-300z" />
+<glyph unicode="&#xe195;" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 
-100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 
400v100h100v-100h-100z" />
+<glyph unicode="&#xe197;" d="M-14 494q0 -80 56.5 -137t135.5 
-57h222v300h400v-300h128q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 
-90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 
-37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300 h200l-300 
-300z" />
+<glyph unicode="&#xe198;" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 
-403q94 26 154.5 104t60.5 178q0 121 -85 207.5t-205 86.5q-46 0 -90 -14q-44 97 
-134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 
-108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" 
/>
+<glyph unicode="&#xe199;" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 
300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
+<glyph unicode="&#xe200;" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 
-74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 
-30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 
155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 
-197.5q0 -4 1 -12t1 -11q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.ttf
new file mode 100755
index 0000000..a498ef4
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.woff
new file mode 100755
index 0000000..d83c539
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.eot
new file mode 100755
index 0000000..5d4a1c4
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.svg
new file mode 100755
index 0000000..7cda102
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.svg
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansBold" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="586" d="M117 143q0 84 45 127t131 43q83 0 128.5 
-44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM121 
1462h346l-51 -977h-244z" />
+<glyph unicode="&#x22;" horiz-adv-x="967" d="M133 1462h279l-41 -528h-197zM555 
1462h279l-41 -528h-197z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M45 406v206h277l47 
232h-252v209h289l77 407h219l-77 -407h198l78 407h215l-78 -407h240v-209h-279l-47 
-232h258v-206h-297l-77 -406h-220l78 406h-194l-76 -406h-215l74 406h-238zM539 
612h196l47 232h-196z" />
+<glyph unicode="$" d="M88 1049q0 145 113.5 238.5t316.5 113.5v153h137v-149q229 
-10 414 -92l-94 -234q-156 64 -320 78v-295q195 -75 277.5 -130t121 -121t38.5 
-154q0 -159 -115 -255.5t-322 -115.5v-205h-137v201q-244 5 -428 86v264q87 -43 
209.5 -76t218.5 -39v310l-67 26 q-198 78 -280.5 169.5t-82.5 226.5zM389 1049q0 
-44 30.5 -72.5t98.5 -58.5v235q-129 -19 -129 -104zM655 324q136 23 136 118q0 42 
-34 71t-102 60v-249z" />
+<glyph unicode="%" horiz-adv-x="1845" d="M63 1026q0 457 345 457q169 0 259.5 
-118.5t90.5 -338.5q0 -230 -89 -345.5t-261 -115.5q-165 0 -255 118.5t-90 
342.5zM315 1024q0 -127 22.5 -189.5t72.5 -62.5q96 0 96 252q0 250 -96 250q-50 0 
-72.5 -61.5t-22.5 -188.5zM395 0l811 1462h240l-811 -1462h-240z M1087 442q0 457 
345 457q169 0 259.5 -118.5t90.5 -338.5q0 -229 -89 -344.5t-261 -115.5q-165 0 
-255 118.5t-90 341.5zM1339 440q0 -127 22.5 -189.5t72.5 -62.5q96 0 96 252q0 250 
-96 250q-50 0 -72.5 -61.5t-22.5 -1 [...]
+<glyph unicode="&#x26;" horiz-adv-x="1536" d="M82 395q0 137 60.5 233.5t207.5 
180.5q-75 86 -109 164.5t-34 171.5q0 152 116.5 245t311.5 93q186 0 297.5 
-86.5t111.5 -231.5q0 -119 -69 -217.5t-223 -187.5l284 -277q71 117 123 
301h318q-36 -135 -99 -263.5t-143 -227.5l301 -293h-377l-115 113 q-191 -133 -432 
-133q-244 0 -387 112t-143 303zM403 424q0 -86 64.5 -137t165.5 -51q126 0 227 
61l-332 330q-58 -44 -91.5 -92t-33.5 -111zM489 1124q0 -88 95 -194q86 48 132 
94.5t46 108.5q0 53 -36 83.5t-93 30.5q-67 0 -10 [...]
+<glyph unicode="'" horiz-adv-x="545" d="M133 1462h279l-41 -528h-197z" />
+<glyph unicode="(" horiz-adv-x="694" d="M82 561q0 265 77.5 496t223.5 
405h250q-141 -193 -213 -424t-72 -475q0 -245 73.5 -473.5t209.5 -413.5h-248q-147 
170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="694" d="M61 1462h250q147 -175 224 -406.5t77 
-494.5t-77.5 -490t-223.5 -395h-248q135 184 209 412.5t74 474.5q0 244 -72 
475t-213 424z" />
+<glyph unicode="*" horiz-adv-x="1116" d="M63 1042l39 250l365 -104l-41 
368h262l-41 -368l373 104l33 -252l-340 -24l223 -297l-227 -121l-156 313l-137 
-311l-236 119l221 297z" />
+<glyph unicode="+" d="M88 
612v219h387v390h219v-390h387v-219h-387v-385h-219v385h-387z" />
+<glyph unicode="," horiz-adv-x="594" d="M63 -264q65 266 101 502h280l15 -23q-52 
-202 -176 -479h-220z" />
+<glyph unicode="-" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="." horiz-adv-x="584" d="M117 143q0 84 45 127t131 43q83 0 128.5 
-44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode="/" horiz-adv-x="846" d="M14 0l545 1462h277l-545 -1462h-277z" />
+<glyph unicode="0" d="M74 731q0 387 125 570.5t385 183.5q253 0 382.5 -192t129.5 
-562q0 -383 -125.5 -567t-386.5 -184q-253 0 -381.5 190t-128.5 561zM381 731q0 
-269 46.5 -385.5t156.5 -116.5q108 0 156 118t48 384q0 269 -48.5 386.5t-155.5 
117.5q-109 0 -156 -117.5t-47 -386.5z" />
+<glyph unicode="1" d="M121 1087l471 375h254v-1462h-309v846l3 139l5 152q-77 -77 
-107 -101l-168 -135z" />
+<glyph unicode="2" d="M78 1274q108 92 179 130t155 58.5t188 20.5q137 0 242 
-50t163 -140t58 -206q0 -101 -35.5 -189.5t-110 -181.5t-262.5 -265l-188 
-177v-14h637v-260h-1022v215l367 371q163 167 213 231.5t72 119.5t22 114q0 88 
-48.5 131t-129.5 43q-85 0 -165 -39t-167 -111z" />
+<glyph unicode="3" d="M78 59v263q85 -43 187 -70t202 -27q153 0 226 52t73 167q0 
103 -84 146t-268 43h-111v237h113q170 0 248.5 44.5t78.5 152.5q0 166 -208 166q-72 
0 -146.5 -24t-165.5 -83l-143 213q200 144 477 144q227 0 358.5 -92t131.5 -256q0 
-137 -83 -233t-233 -132v-6 q177 -22 268 -107.5t91 -230.5q0 -211 -153 
-328.5t-437 -117.5q-238 0 -422 79z" />
+<glyph unicode="4" d="M35 303v215l641 
944h285v-919h176v-240h-176v-303h-302v303h-624zM307 543h352v248q0 62 5 180t8 
137h-8q-37 -82 -89 -160z" />
+<glyph unicode="5" d="M100 59v267q79 -42 184 -68.5t199 -26.5q283 0 283 232q0 
221 -293 221q-53 0 -117 -10.5t-104 -22.5l-123 66l55 745h793v-262h-522l-27 
-287l35 7q61 14 151 14q212 0 337.5 -119t125.5 -326q0 -245 -151 -377t-432 
-132q-244 0 -394 79z" />
+<glyph unicode="6" d="M72 621q0 434 183.5 646t549.5 212q125 0 196 -15v-247q-89 
20 -176 20q-159 0 -259.5 -48t-150.5 -142t-59 -267h13q99 170 317 170q196 0 307 
-123t111 -340q0 -234 -132 -370.5t-366 -136.5q-162 0 -282.5 75t-186 219t-65.5 
347zM379 510q0 -119 62.5 -201t158.5 -82 q99 0 152 66.5t53 189.5q0 107 -49.5 
168.5t-149.5 61.5q-94 0 -160.5 -61t-66.5 -142z" />
+<glyph unicode="7" d="M55 1200v260h1049v-194l-553 -1266h-324l549 1200h-721z" />
+<glyph unicode="8" d="M72 371q0 125 66.5 222t213.5 171q-125 79 -180 169t-55 
197q0 157 130 254t339 97q210 0 338.5 -95.5t128.5 -257.5q0 -112 -62 -199.5t-200 
-156.5q164 -88 235.5 -183.5t71.5 -209.5q0 -180 -141 -289.5t-371 -109.5q-240 0 
-377 102t-137 289zM358 389q0 -86 60 -134 t164 -48q115 0 172 49.5t57 130.5q0 67 
-56.5 125.5t-183.5 124.5q-213 -98 -213 -248zM408 1106q0 -60 38.5 -107.5t139.5 
-97.5q98 46 137 94t39 111q0 69 -50 109t-128 40q-79 0 -127.5 -40.5t-48.5 
-108.5z" />
+<glyph unicode="9" d="M66 971q0 235 133.5 371.5t363.5 136.5q162 0 283.5 
-76t186.5 -220.5t65 -344.5q0 -432 -182 -645t-551 -213q-130 0 -197 14v248q84 -21 
176 -21q155 0 255 45.5t153 143t61 268.5h-12q-58 -94 -134 -132t-190 -38q-191 0 
-301 122.5t-110 340.5zM365 975 q0 -106 49 -168t149 -62q94 0 161 61.5t67 141.5q0 
119 -62.5 201t-159.5 82q-96 0 -150 -66t-54 -190z" />
+<glyph unicode=":" horiz-adv-x="584" d="M117 143q0 84 45 127t131 43q83 0 128.5 
-44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM117 969q0 
84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 
-130 44t-46 126z" />
+<glyph unicode=";" horiz-adv-x="594" d="M63 -264q65 266 101 502h280l15 -23q-52 
-202 -176 -479h-220zM117 969q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 
-46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
+<glyph unicode="&#x3c;" d="M88 641v143l993 496v-240l-684 -317l684 -281v-239z" 
/>
+<glyph unicode="=" d="M88 418v219h993v-219h-993zM88 805v219h993v-219h-993z" />
+<glyph unicode="&#x3e;" d="M88 203v239l684 281l-684 317v240l993 -496v-143z" />
+<glyph unicode="?" horiz-adv-x="977" d="M6 1358q223 125 473 125q206 0 327.5 
-99t121.5 -264q0 -110 -50 -190t-190 -180q-96 -71 -121.5 -108t-25.5 
-97v-60h-265v74q0 96 41 167t150 151q105 75 138.5 122t33.5 105q0 65 -48 99t-134 
34q-150 0 -342 -98zM244 143q0 84 45 127t131 43q83 0 128.5 -44 t45.5 -126q0 -79 
-46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode="@" horiz-adv-x="1837" d="M102 602q0 247 108.5 448.5t309 
316t461.5 114.5q220 0 393 -90t267 -256t94 -383q0 -144 -46 -263.5t-130 
-187.5t-195 -68q-74 0 -131 35.5t-82 93.5h-16q-108 -129 -275 -129q-177 0 -279 
106.5t-102 291.5q0 211 134 340t350 129q86 0 189.5 -16.5t170.5 -39.5 l-23 -489q0 
-139 76 -139q64 0 102 93.5t38 244.5q0 161 -67 284.5t-188.5 188.5t-277.5 65q-202 
0 -351 -83t-228.5 -239.5t-79.5 -361.5q0 -276 147.5 -423.5t427.5 -147.5q106 0 
233 23.5t250 68.5v-192q-214 -91 -475 [...]
+<glyph unicode="A" horiz-adv-x="1413" d="M0 0l516 1468h379l518 -1468h-334l-106 
348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 98q-33 -128 -189 
-633z" />
+<glyph unicode="B" horiz-adv-x="1376" d="M184 0v1462h455q311 0 451.5 
-88.5t140.5 -281.5q0 -131 -61.5 -215t-163.5 -101v-10q139 -31 200.5 -116t61.5 
-226q0 -200 -144.5 -312t-392.5 -112h-547zM494 256h202q128 0 189 49t61 150q0 182 
-260 182h-192v-381zM494 883h180q126 0 182.5 39t56.5 129 q0 84 -61.5 
120.5t-194.5 36.5h-163v-325z" />
+<glyph unicode="C" horiz-adv-x="1305" d="M119 729q0 228 83 399.5t238.5 
263t364.5 91.5q213 0 428 -103l-100 -252q-82 39 -165 68t-163 29q-175 0 -271 
-131.5t-96 -366.5q0 -489 367 -489q154 0 373 77v-260q-180 -75 -402 -75q-319 0 
-488 193.5t-169 555.5z" />
+<glyph unicode="D" horiz-adv-x="1516" d="M184 0v1462h459q358 0 556 -189t198 
-528q0 -361 -205.5 -553t-593.5 -192h-414zM494 256h133q448 0 448 481q0 471 -416 
471h-165v-952z" />
+<glyph unicode="E" horiz-adv-x="1147" d="M184 
0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842z" />
+<glyph unicode="F" horiz-adv-x="1124" d="M184 
0v1462h838v-254h-533v-377h496v-253h-496v-578h-305z" />
+<glyph unicode="G" horiz-adv-x="1483" d="M119 733q0 354 202.5 552t561.5 
198q225 0 434 -90l-103 -248q-160 80 -333 80q-201 0 -322 -135t-121 -363q0 -238 
97.5 -363.5t283.5 -125.5q97 0 197 20v305h-277v258h580v-758q-141 -46 -265.5 
-64.5t-254.5 -18.5q-331 0 -505.5 194.5t-174.5 558.5z" />
+<glyph unicode="H" horiz-adv-x="1567" d="M184 
0v1462h310v-573h579v573h309v-1462h-309v631h-579v-631h-310z" />
+<glyph unicode="I" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310z" />
+<glyph unicode="J" horiz-adv-x="678" d="M-152 -150q80 -20 146 -20q102 0 146 
63.5t44 198.5v1370h310v-1368q0 -256 -117 -390t-346 -134q-105 0 -183 22v258z" />
+<glyph unicode="K" horiz-adv-x="1360" d="M184 0v1462h310v-669l122 172l396 
497h344l-510 -647l514 -815h-352l-383 616l-131 -94v-522h-310z" />
+<glyph unicode="L" horiz-adv-x="1157" d="M184 0v1462h310v-1206h593v-256h-903z" 
/>
+<glyph unicode="M" horiz-adv-x="1931" d="M184 0v1462h422l346 -1118h6l367 
1118h422v-1462h-289v692q0 49 1.5 113t13.5 340h-9l-377 -1145h-284l-352 
1147h-9q19 -350 19 -467v-680h-277z" />
+<glyph unicode="N" horiz-adv-x="1665" d="M184 0v1462h391l635 -1095h7q-15 285 
-15 403v692h279v-1462h-394l-636 1106h-9q19 -293 19 -418v-688h-277z" />
+<glyph unicode="O" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 
733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 
-369.5z" />
+<glyph unicode="P" horiz-adv-x="1286" d="M184 0v1462h467q266 0 404.5 
-114.5t138.5 -341.5q0 -236 -147.5 -361t-419.5 -125h-133v-520h-310zM494 
774h102q143 0 214 56.5t71 164.5q0 109 -59.5 161t-186.5 52h-141v-434z" />
+<glyph unicode="Q" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -258 -91.5 -432.5t-268.5 -255.5l352 
-393h-397l-268 328h-23q-336 0 -516 195t-180 560zM444 733q0 -245 93 -369t278 
-124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5z" />
+<glyph unicode="R" horiz-adv-x="1352" d="M184 0v1462h426q298 0 441 -108.5t143 
-329.5q0 -129 -71 -229.5t-201 -157.5q330 -493 430 -637h-344l-349 
561h-165v-561h-310zM494 813h100q147 0 217 49t70 154q0 104 -71.5 148t-221.5 
44h-94v-395z" />
+<glyph unicode="S" horiz-adv-x="1128" d="M94 68v288q148 -66 250.5 -93t187.5 
-27q102 0 156.5 39t54.5 116q0 43 -24 76.5t-70.5 64.5t-189.5 99q-134 63 -201 
121t-107 135t-40 180q0 194 131.5 305t363.5 111q114 0 217.5 -27t216.5 -76l-100 
-241q-117 48 -193.5 67t-150.5 19q-88 0 -135 -41t-47 -107 q0 -41 19 -71.5t60.5 
-59t196.5 -102.5q205 -98 281 -196.5t76 -241.5q0 -198 -142.5 -312t-396.5 
-114q-234 0 -414 88z" />
+<glyph unicode="T" horiz-adv-x="1186" d="M41 
1204v258h1104v-258h-397v-1204h-310v1204h-397z" />
+<glyph unicode="U" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 
-248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 
-187t-324 -65q-282 0 -438 144.5t-156 395.5z" />
+<glyph unicode="V" horiz-adv-x="1331" d="M0 1462h313l275 -870q23 -77 47.5 
-179.5t30.5 -142.5q11 92 75 322l277 870h313l-497 -1462h-338z" />
+<glyph unicode="W" horiz-adv-x="1980" d="M0 1462h305l187 -798q49 -221 71 
-383q6 57 27.5 176.5t40.5 185.5l213 819h293l213 -819q14 -55 35 -168t32 -194q10 
78 32 194.5t40 188.5l186 798h305l-372 -1462h-353l-198 768q-11 41 -37.5 
169.5t-30.5 172.5q-6 -54 -30 -173.5t-37 -170.5l-197 -766h-352z" />
+<glyph unicode="X" horiz-adv-x="1366" d="M0 0l485 754l-454 708h342l315 
-526l309 526h334l-459 -725l494 -737h-354l-340 553l-340 -553h-332z" />
+<glyph unicode="Y" horiz-adv-x="1278" d="M0 1462h336l303 -602l305 602h334l-485 
-893v-569h-308v559z" />
+<glyph unicode="Z" horiz-adv-x="1186" d="M49 0v201l701 
1005h-682v256h1050v-200l-700 -1006h719v-256h-1088z" />
+<glyph unicode="[" horiz-adv-x="678" d="M143 
-324v1786h484v-211h-224v-1364h224v-211h-484z" />
+<glyph unicode="\" horiz-adv-x="846" d="M12 1462h277l545 -1462h-277z" />
+<glyph unicode="]" horiz-adv-x="678" d="M51 
-113h223v1364h-223v211h484v-1786h-484v211z" />
+<glyph unicode="^" horiz-adv-x="1090" d="M8 520l438 950h144l495 -950h-239l-322 
643l-280 -643h-236z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-140h-850v140z" />
+<glyph unicode="`" horiz-adv-x="1243" d="M332 1548v21h342q63 -101 235 
-301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="a" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134z" />
+<glyph unicode="b" horiz-adv-x="1296" d="M160 0v1556h305v-362q0 -69 -12 
-221h12q107 166 317 166q198 0 310 -154.5t112 -423.5q0 -277 -115.5 -429t-314.5 
-152q-197 0 -309 143h-21l-51 -123h-233zM465 563q0 -180 53.5 -258t169.5 -78q94 0 
149.5 86.5t55.5 251.5t-56 247.5t-153 82.5q-113 0 -165 -69.5 t-54 -229.5v-33z" />
+<glyph unicode="c" horiz-adv-x="1053" d="M92 553q0 285 142 435.5t407 150.5q194 
0 348 -76l-90 -236q-72 29 -134 47.5t-124 18.5q-238 0 -238 -338q0 -328 238 
-328q88 0 163 23.5t150 73.5v-261q-74 -47 -149.5 -65t-190.5 -18q-522 0 -522 
573z" />
+<glyph unicode="d" horiz-adv-x="1296" d="M92 557q0 275 114.5 428.5t315.5 
153.5q211 0 322 -164h10q-23 125 -23 223v358h306v-1556h-234l-59 145h-13q-104 
-165 -317 -165q-197 0 -309.5 153t-112.5 424zM401 553q0 -165 57 -247.5t163 
-82.5q117 0 171.5 68t59.5 231v33q0 180 -55.5 258t-180.5 78 q-102 0 -158.5 
-86.5t-56.5 -251.5z" />
+<glyph unicode="e" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 
153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 
67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 
113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5z" />
+<glyph unicode="f" horiz-adv-x="793" d="M41 889v147l168 82v82q0 191 94 279t301 
88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 
-98.5v-70h264v-229h-264v-889h-305v889h-168z" />
+<glyph unicode="g" horiz-adv-x="1157" d="M6 -182q0 101 63 169t185 97q-47 20 
-82 65.5t-35 96.5q0 64 37 106.5t107 83.5q-88 38 -139.5 122t-51.5 198q0 183 119 
283t340 100q47 0 111.5 -8.5t82.5 -12.5h390v-155l-175 -45q48 -75 48 -168q0 -180 
-125.5 -280.5t-348.5 -100.5l-55 3l-45 5q-47 -36 -47 -80 q0 -66 168 -66h190q184 
0 280.5 -79t96.5 -232q0 -196 -163.5 -304t-469.5 -108q-234 0 -357.5 81.5t-123.5 
228.5zM270 -158q0 -63 60.5 -99t169.5 -36q164 0 257 45t93 123q0 63 -55 87t-170 
24h-158q-84 0 -140.5 - [...]
+<glyph unicode="h" horiz-adv-x="1346" d="M160 0v1556h305v-317q0 -37 -7 -174l-7 
-90h16q102 164 324 164q197 0 299 -106t102 -304v-729h-305v653q0 242 -180 
242q-128 0 -185 -87t-57 -282v-526h-305z" />
+<glyph unicode="i" horiz-adv-x="625" d="M147 1407q0 149 166 149t166 -149q0 -71 
-41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM160 0v1118h305v-1118h-305z" />
+<glyph unicode="j" horiz-adv-x="625" d="M-131 -227q70 -19 143 -19q77 0 112.5 
43t35.5 127v1194h305v-1239q0 -178 -103 -274.5t-292 -96.5q-117 0 -201 
25v240zM147 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 
-166 150z" />
+<glyph unicode="k" horiz-adv-x="1270" d="M160 0v1556h305v-694l-16 -254h4l133 
170l313 340h344l-444 -485l471 -633h-352l-322 453l-131 -105v-348h-305z" />
+<glyph unicode="l" horiz-adv-x="625" d="M160 0v1556h305v-1556h-305z" />
+<glyph unicode="m" horiz-adv-x="2011" d="M160 0v1118h233l41 -143h17q45 77 130 
120.5t195 43.5q251 0 340 -164h27q45 78 132.5 121t197.5 43q190 0 287.5 
-97.5t97.5 -312.5v-729h-306v653q0 121 -40.5 181.5t-127.5 60.5q-112 0 -167.5 
-80t-55.5 -254v-561h-305v653q0 121 -40.5 181.5t-127.5 60.5 q-117 0 -170 -86t-53 
-283v-526h-305z" />
+<glyph unicode="n" horiz-adv-x="1346" d="M160 0v1118h233l41 -143h17q51 81 
140.5 122.5t203.5 41.5q195 0 296 -105.5t101 -304.5v-729h-305v653q0 121 -43 
181.5t-137 60.5q-128 0 -185 -85.5t-57 -283.5v-526h-305z" />
+<glyph unicode="o" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 152q161 0 
284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 
202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 
166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5z" />
+<glyph unicode="p" horiz-adv-x="1296" d="M160 -492v1610h248l43 -145h14q107 166 
317 166q198 0 310 -153t112 -425q0 -179 -52.5 -311t-149.5 -201t-228 -69q-197 0 
-309 143h-16q16 -140 16 -162v-453h-305zM465 563q0 -180 53.5 -258t169.5 -78q205 
0 205 338q0 165 -50.5 247.5t-158.5 82.5 q-113 0 -165 -69.5t-54 -229.5v-33z" />
+<glyph unicode="q" horiz-adv-x="1296" d="M92 557q0 274 114.5 428t313.5 154q106 
0 185 -40t139 -124h8l27 143h258v-1610h-306v469q0 61 13 168h-13q-49 -81 -130 
-123t-187 -42q-198 0 -310 152.5t-112 424.5zM403 553q0 -168 53.5 -251t166.5 
-83q116 0 170 66.5t59 232.5v37q0 180 -55.5 258t-178.5 78 q-215 0 -215 -338z" />
+<glyph unicode="r" horiz-adv-x="930" d="M160 0v1118h231l45 -188h15q52 94 140.5 
151.5t192.5 57.5q62 0 103 -9l-23 -286q-37 10 -90 10q-146 0 -227.5 -75t-81.5 
-210v-569h-305z" />
+<glyph unicode="s" horiz-adv-x="1018" d="M92 827q0 149 115.5 230.5t327.5 
81.5q202 0 393 -88l-92 -220q-84 36 -157 59t-149 23q-135 0 -135 -73q0 -41 43.5 
-71t190.5 -89q131 -53 192 -99t90 -106t29 -143q0 -172 -119.5 -262t-357.5 
-90q-122 0 -208 16.5t-161 48.5v252q85 -40 191.5 -67t187.5 -27 q166 0 166 96q0 
36 -22 58.5t-76 51t-144 66.5q-129 54 -189.5 100t-88 105.5t-27.5 146.5z" />
+<glyph unicode="t" horiz-adv-x="889" d="M47 889v129l168 102l88 
236h195v-238h313v-229h-313v-539q0 -65 36.5 -96t96.5 -31q80 0 192 35v-227q-114 
-51 -280 -51q-183 0 -266.5 92.5t-83.5 277.5v539h-146z" />
+<glyph unicode="u" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 
-181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 
-139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5z" />
+<glyph unicode="v" horiz-adv-x="1165" d="M0 1118h319l216 -637q36 -121 45 
-229h6q5 96 45 229l215 637h319l-426 -1118h-313z" />
+<glyph unicode="w" horiz-adv-x="1753" d="M20 1118h304l129 -495q31 -133 63 
-367h6q4 76 35 241l16 85l138 536h336l131 -536q4 -22 12.5 -65t16.5 -91.5t14.5 
-95t7.5 -74.5h6q9 72 32 197.5t33 169.5l134 495h299l-322 -1118h-332l-86 391l-116 
494h-7l-204 -885h-328z" />
+<glyph unicode="x" horiz-adv-x="1184" d="M10 0l379 571l-360 547h346l217 
-356l219 356h346l-364 -547l381 -571h-347l-235 383l-236 -383h-346z" />
+<glyph unicode="y" horiz-adv-x="1165" d="M0 1118h334l211 -629q27 -82 37 
-194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 
0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55z" />
+<glyph unicode="z" horiz-adv-x="999" d="M55 0v180l518 
705h-487v233h834v-198l-504 -687h522v-233h-883z" />
+<glyph unicode="{" horiz-adv-x="807" d="M31 449v239q126 0 191 44t65 
126v8v318q0 153 97 215.5t341 62.5v-225q-99 -3 -136.5 -38t-37.5 -103v-299q-6 
-188 -234 -222v-12q234 -35 234 -212v-9v-299q0 -68 37 -103t137 -38v-226q-244 0 
-341 62.5t-97 216.5v315q0 87 -65.5 133t-190.5 46z" />
+<glyph unicode="|" horiz-adv-x="1128" d="M455 -465v2015h219v-2015h-219z" />
+<glyph unicode="}" horiz-adv-x="807" d="M82 -98q99 2 136.5 36t37.5 
105v299v11q0 86 59 139.5t174 70.5v12q-227 34 -233 222v299q0 70 -37 104t-137 
37v225q167 0 262 -26.5t135.5 -84t40.5 -167.5v-318v-10q0 -84 61.5 -126t194.5 
-42v-239q-125 0 -190.5 -41t-65.5 -138v-315q0 -112 -41 -169t-135.5 -83.5 t-261.5 
-26.5v226z" />
+<glyph unicode="~" d="M88 551v231q103 109 256 109q73 0 137.5 -16t139.5 -48q129 
-55 227 -55q53 0 116 32t117 89v-231q-101 -109 -256 -109q-66 0 -126 13t-150 
50q-131 56 -227 56q-55 0 -117.5 -33.5t-116.5 -87.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="586" d="M117 -369l51 975h244l51 
-975h-346zM117 948q0 81 46.5 125.5t127.5 44.5q84 0 130 -44t46 -126q0 -84 -45 
-127t-131 -43q-83 0 -128.5 44t-45.5 126z" />
+<glyph unicode="&#xa2;" d="M143 741q0 261 104.5 403t315.5 173v166h178v-158q166 
-9 299 -74l-90 -235q-72 29 -134 47t-124 18q-121 0 -179 -83.5t-58 -254.5q0 -327 
237 -327q82 0 148 15.5t166 60.5v-254q-127 -61 -265 -70v-188h-178v196q-420 59 
-420 565z" />
+<glyph unicode="&#xa3;" d="M82 0v248q103 44 141.5 101t38.5 
157v145h-178v219h178v195q0 201 114.5 309.5t323.5 108.5q195 0 390 -82l-93 
-230q-157 64 -272 64q-78 0 -120 -44.5t-42 -127.5v-193h375v-219h-375v-143q0 -170 
-151 -248h718v-260h-1048z" />
+<glyph unicode="&#xa4;" d="M113 1047l147 147l127 -127q91 53 197 53q105 0 196 
-55l127 129l150 -143l-129 -129q53 -89 53 -199q0 -107 -53 -199l125 -125l-146 
-145l-127 125q-95 -51 -196 -51q-115 0 -199 51l-125 -123l-145 145l127 125q-54 93 
-54 197q0 102 54 197zM395 723 q0 -77 54.5 -132.5t134.5 -55.5q81 0 136.5 55t55.5 
133q0 80 -56.5 135t-135.5 55q-78 0 -133.5 -56t-55.5 -134z" />
+<glyph unicode="&#xa5;" d="M6 1462h316l262 -602l264 602h313l-383 
-747h195v-178h-246v-138h246v-178h-246v-221h-287v221h-247v178h247v138h-247v178h190z"
 />
+<glyph unicode="&#xa6;" horiz-adv-x="1128" d="M455 350h219v-815h-219v815zM455 
735v815h219v-815h-219z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M106 59v207q81 -41 180 -69.5t169 
-28.5q194 0 194 117q0 39 -18.5 63t-63.5 49.5t-125 59.5q-183 74 -252 152.5t-69 
195.5q0 79 36 144.5t97 105.5q-133 84 -133 233q0 131 111.5 210t293.5 79q170 0 
363 -84l-82 -190q-68 32 -138.5 57.5t-148.5 25.5q-81 0 -118 -23 t-37 -71q0 -49 
49.5 -86t163.5 -82q163 -64 240 -148.5t77 -193.5q0 -177 -125 -260q62 -40 93.5 
-92.5t31.5 -126.5q0 -148 -119.5 -235.5t-320.5 -87.5q-203 0 -349 79zM344 827q0 
-67 65 -119t181 -98q78 57  [...]
+<glyph unicode="&#xa8;" horiz-adv-x="1243" d="M279 1405q0 65 37.5 100t101.5 
35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 
98zM682 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 
-97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 
276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 
-104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM242 731q0 -164 82 -305.5t224 
-223t304 -81.5q164 0 305.5 82t223 224t81.5 304q0 164 -82 305.5t-224 223 t-304 
81.5q-164 0 -305.5 -82t-223 -224t-81.5 -304zM461 733q0 220 110.5 342.5t309.5 
122.5q149 0 305 -78l-74 -168q-113 58 -217 58q-97 0 -150 -74t-53 -205q0 -280 203 
-280q57 0 123 15t123 44v-191q-12 [...]
+<glyph unicode="&#xaa;" horiz-adv-x="784" d="M47 975q0 109 82.5 163.5t267.5 
63.5l99 4q0 117 -127 117q-81 0 -217 -61l-66 135q66 32 145.5 57t178.5 25q137 0 
211.5 -71t74.5 -202v-442h-135l-31 110q-43 -58 -105 -90t-136 -32q-117 0 -179.5 
58.5t-62.5 164.5zM252 977q0 -38 23 -56t55 -18q77 0 121.5 41.5 t44.5 
106.5v36l-99 -6q-145 -10 -145 -104z" />
+<glyph unicode="&#xab;" horiz-adv-x="1260" d="M82 547v26l371 455l219 -119l-279 
-348l279 -348l-219 -119zM588 547v26l370 455l220 -119l-279 -348l279 -348l-220 
-119z" />
+<glyph unicode="&#xac;" d="M88 612v219h993v-583h-219v364h-774z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 
276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 
-104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM242 731q0 -164 82 -305.5t224 
-223t304 -81.5q164 0 305.5 82t223 224t81.5 304q0 164 -82 305.5t-224 223 t-304 
81.5q-164 0 -305.5 -82t-223 -224t-81.5 -304zM543 272v916h264q181 0 265.5 
-70t84.5 -213q0 -170 -143 -233l237 -400h-254l-178 338h-47v-338h-229zM772 
778h31q66 0 94.5 28.5t28.5 94.5q0 65 -28 92 [...]
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v201h1036v-201h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M92 1137q0 92 46 172t126 127t174 
47q92 0 172.5 -46t127 -127t46.5 -173q0 -93 -46.5 -173.5t-126.5 -125.5t-173 
-45q-145 0 -245.5 99.5t-100.5 244.5zM283 1137q0 -64 44.5 -109t110.5 -45t111 
46t45 108q0 63 -45.5 110t-110.5 47q-64 0 -109.5 -46t-45.5 -111z" />
+<glyph unicode="&#xb1;" d="M88 0v219h993v-219h-993zM88 
674v219h387v389h219v-389h387v-219h-387v-385h-219v385h-387z" />
+<glyph unicode="&#xb2;" horiz-adv-x="776" d="M47 1354q147 129 336 129q137 0 
216 -66.5t79 -183.5q0 -85 -47 -160t-176 -192l-105 -95h352v-200h-647v168l224 
219q102 100 130.5 144.5t28.5 94.5q0 38 -24 58t-64 20q-81 0 -180 -88z" />
+<glyph unicode="&#xb3;" horiz-adv-x="776" d="M59 639v190q148 -90 271 -90q143 0 
143 107q0 53 -44 79.5t-122 26.5h-112v160h92q83 0 123.5 26t40.5 83q0 38 -25 
63t-76 25q-47 0 -89 -19t-99 -59l-101 141q62 47 137.5 78t178.5 31q127 0 208 
-64t81 -168q0 -143 -170 -198v-13q94 -20 146 -75t52 -134 q0 -121 -88 -190.5t-274 
-69.5q-143 0 -273 70z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1243" d="M332 1241v27q172 200 235 
301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1352" d="M160 -492v1610h305v-653q0 -121 
44 -181.5t138 -60.5q126 0 183 86.5t57 282.5v526h305v-1118h-231l-43 150h-15q-42 
-85 -102 -127.5t-148 -42.5q-62 0 -114 23t-84 67l5 -85l5 -157v-320h-305z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 
127h604v-1816h-161v1616h-166v-1616h-162v819q-62 -18 -146 -18q-216 0 -317.5 
125t-101.5 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="584" d="M117 723q0 84 45 127t131 43q83 0 
128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M-37 -303q27 -7 72.5 -14t70.5 
-7q72 0 72 62q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5q0 
-128 -75.5 -185t-233.5 -57q-78 0 -146 21v168z" />
+<glyph unicode="&#xb9;" horiz-adv-x="776" d="M92 1227l301 
235h191v-876h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61z" />
+<glyph unicode="&#xba;" horiz-adv-x="795" d="M57 1116q0 169 89.5 266t252.5 
97q152 0 245 -98.5t93 -264.5q0 -171 -91.5 -267.5t-250.5 -96.5q-153 0 -245.5 
98.5t-92.5 265.5zM260 1116q0 -100 32.5 -150.5t104.5 -50.5t103.5 50.5t31.5 
150.5t-31.5 149.5t-103.5 49.5t-104.5 -49.5t-32.5 -149.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1260" d="M82 213l278 348l-278 348l219 
119l371 -455v-26l-371 -453zM588 213l278 348l-278 348l219 119l371 -455v-26l-371 
-453z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1804" d="M46 1227l301 
235h191v-876h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61zM320 0l811 
1462h239l-811 -1462h-239zM936 152v154l385 
577h236v-563h125v-168h-125v-151h-238v151h-383zM1121 320h198v164q0 86 6 184q-9 
-26 -35.5 -80t-41.5 -77z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1804" d="M46 1227l301 
235h191v-876h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61zM320 0l811 
1462h239l-811 -1462h-239zM1061 769q147 129 336 129q137 0 216 -66.5t79 -183.5q0 
-85 -47 -160t-176 -192l-105 -95h352v-200h-647v168l224 219q102 100 130.5 
144.5t28.5 94.5 q0 38 -24 58t-64 20q-81 0 -180 -88z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1804" d="M90 639v190q148 -90 271 -90q143 
0 143 107q0 53 -44 79.5t-122 26.5h-112v160h92q83 0 123.5 26t40.5 83q0 38 -25 
63t-76 25q-47 0 -89 -19t-99 -59l-101 141q62 47 137.5 78t178.5 31q127 0 208 
-64t81 -168q0 -143 -170 -198v-13q94 -20 146 -75t52 -134 q0 -121 -88 -190.5t-274 
-69.5q-143 0 -273 70zM391 0l811 1462h239l-811 -1462h-239zM966 152v154l385 
577h236v-563h125v-168h-125v-151h-238v151h-383zM1151 320h198v164q0 86 6 184q-9 
-26 -35.5 -80t-41.5 -77z" />
+<glyph unicode="&#xbf;" horiz-adv-x="977" d="M61 -29q0 108 48.5 187t191.5 
184q95 70 121.5 107t26.5 98v59h264v-74q0 -98 -44.5 -169t-152.5 -148q-109 -78 
-137.5 -122t-28.5 -107q0 -57 43.5 -94t132.5 -37q79 0 169 29t186 71l102 -221q-98 
-56 -221.5 -90.5t-229.5 -34.5q-220 0 -345.5 96.5t-125.5 265.5z M395 948q0 81 
46.5 125.5t127.5 44.5q84 0 130 -44t46 -126q0 -84 -45 -127t-131 -43q-83 0 -128.5 
44t-45.5 126z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 
-1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 
98q-33 -128 -189 -633zM338 1886v21h342q63 -101 235 -301v-27h-202q-63 44 -185 
142.5t-190 164.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 
-1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 
98q-33 -128 -189 -633zM541 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 
-154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 
-1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 
98q-33 -128 -189 -633zM272 1579v27q189 189 256 301h357q31 -52 107.5 
-141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 
-1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 
98q-33 -128 -189 -633zM293 1577q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 
-36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227 t-188.5 
-82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 
-80.5h-149z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 
-1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 
98q-33 -128 -189 -633zM365 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 
-98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM768 1743 q0 70 40.5 
102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 
32.5t-40.5 100.5z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 
-1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 
98q-33 -128 -189 -633zM457 1565q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 
-169q0 -108 -71 -174t-183 -66t-180 64t-68 174zM609 1565q0 -45 24 -71 t72 -26q42 
0 69 26t27 71t-27 70.5t-69 25.5t-69 -25.5t-27 -70.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1950" d="M0 0l655 
1462h1174v-254h-563v-321h526v-254h-526v-377h563v-256h-873v348h-491l-150 
-348h-315zM578 608h378v590h-127z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1305" d="M119 729q0 228 83 399.5t238.5 
263t364.5 91.5q213 0 428 -103l-100 -252q-82 39 -165 68t-163 29q-175 0 -271 
-131.5t-96 -366.5q0 -489 367 -489q154 0 373 77v-260q-180 -75 -402 -75q-319 0 
-488 193.5t-169 555.5zM504 -303q27 -7 72.5 -14t70.5 -7q72 0 72 62 q0 83 -166 
108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5q0 -128 -75.5 -185t-233.5 
-57q-78 0 -146 21v168z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1147" d="M184 
0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842zM259 1886v21h342q63 
-101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1147" d="M184 
0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842zM424 1579v27q172 200 
235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xca;" horiz-adv-x="1147" d="M184 
0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842zM175 1579v27q189 189 
256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 
-229 -176h-203z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1147" d="M184 
0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842zM272 1743q0 65 37.5 
100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 
35t-37.5 98zM675 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 
-39 -97 t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310zM-58 
1886v21h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310zM167 
1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xce;" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310zM-96 
1579v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 
-234 176q-78 -81 -229 -176h-203z" />
+<glyph unicode="&#xcf;" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310zM-3 
1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 
-36.5q-64 0 -101.5 35t-37.5 98zM400 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 
-36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z " />
+<glyph unicode="&#xd0;" horiz-adv-x="1516" d="M47 596v254h137v612h459q358 0 
556 -189t198 -528q0 -361 -205.5 -553t-593.5 -192h-414v596h-137zM494 256h131q450 
0 450 481q0 232 -104 351.5t-314 119.5h-163v-358h237v-254h-237v-340z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1665" d="M184 0v1462h391l635 -1095h7q-15 
285 -15 403v692h279v-1462h-394l-636 1106h-9q19 -293 19 -418v-688h-277zM418 
1577q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 
59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5 t-78 
36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-149z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 
733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 
-369.5zM449 1886v21h342q63 -101 235 -301v-27h-202 q-63 44 -185 142.5t-190 
164.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 
733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 
-369.5zM658 1579v27q172 200 235 301h342v-21 q-52 -52 -177.5 -154.5t-196.5 
-152.5h-203z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 
733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 
-369.5zM381 1579v27q189 189 256 301h357q31 -52 107.5 -141.5 t148.5 
-159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 
733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 
-369.5zM402 1577q11 145 82.5 227t189.5 82q41 0 80.5 -16.5 t78 -36t75.5 -35.5t73 
-16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 
16.5t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-149z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 
733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 
-369.5zM474 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37 t37.5 -98q0 -60 -38 
-96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM877 1743q0 70 40.5 102.5t100.5 
32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 
100.5z" />
+<glyph unicode="&#xd7;" d="M129 1024l152 154l301 -299l305 299l153 -150l-305 
-305l301 -303l-149 -152l-305 301l-301 -299l-150 152l297 301z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5q198 0 344 -70l84 125l160 -104l-88 -131q194 -194 194 -572q0 -363 -180 
-558t-516 -195q-197 0 -336 65l-90 -135l-162 108l90 136q-198 194 -198 581zM444 
733q0 -191 56 -307l506 756q-84 45 -189 45q-185 0 -279 -124.5 t-94 -369.5zM635 
279q76 -39 180 -39q371 0 371 493q0 180 -51 297z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 
-248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 
-187t-324 -65q-282 0 -438 144.5t-156 395.5zM375 1886v21h342q63 -101 235 
-301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 
-248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 
-187t-324 -65q-282 0 -438 144.5t-156 395.5zM602 1579v27q172 200 235 
301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 
-248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 
-187t-324 -65q-282 0 -438 144.5t-156 395.5zM340 1579v27q189 189 256 301h357q31 
-52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176 q-78 -81 -229 
-176h-203z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 
-248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 
-187t-324 -65q-282 0 -438 144.5t-156 395.5zM433 1743q0 65 37.5 100t101.5 35q66 
0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5 q-64 0 -101.5 35t-37.5 98zM836 
1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 
-36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1278" d="M0 1462h336l303 -602l305 
602h334l-485 -893v-569h-308v559zM461 1579v27q172 200 235 301h342v-21q-52 -52 
-177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xde;" horiz-adv-x="1286" d="M184 0v1462h310v-229h178q254 0 
388 -119t134 -344q0 -229 -142.5 -353t-404.5 -124h-153v-293h-310zM494 
543h100q145 0 216 52.5t71 174.5q0 107 -63.5 159t-199.5 52h-124v-438z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1456" d="M160 0v1139q0 201 146.5 
314.5t404.5 113.5q244 0 391 -88.5t147 -237.5q0 -64 -21 -112.5t-53 -86.5t-69 
-67t-69 -53t-53 -45t-21 -43q0 -27 26.5 -53t92.5 -66q146 -91 198.5 -140t78 
-110t25.5 -139q0 -172 -116.5 -259t-343.5 -87q-99 0 -171 14.5t-132 48.5v242 q53 
-36 135.5 -61t146.5 -25q168 0 168 123q0 41 -16 66.5t-57 55.5t-115 72q-126 72 
-175 131.5t-49 140.5q0 64 35 117t105 102q77 55 108 95t31 86q0 60 -63.5 
100.5t-163.5 40.5q-116 0 -181 -52.5t-65 -148. [...]
+<glyph unicode="&#xe0;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134zM239 1548v21h342q63 -101 235 -301v-27h-202q-63 44 
-185 142.5t-190 164.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134zM441 1241v27q172 200 235 301h342v-21q-52 -52 
-177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134zM177 1240v27q189 189 256 301h357q31 -52 107.5 
-141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134zM217 1239q11 145 82.5 227t189.5 82q41 0 80.5 
-16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 
-227t-188.5 -82q-41 0 -80.5 16.5t-7 [...]
+<glyph unicode="&#xe4;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134zM285 1405q0 65 37.5 100t101.5 35q66 0 103.5 
-37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM688 1405q0 70 
40.5 102.5t100.5 32.5q65 0  [...]
+<glyph unicode="&#xe5;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134zM381 1477q0 108 67.5 172.5t180.5 64.5q110 0 182 
-66t72 -169q0 -108 -71 -174t-183 -66t-180 64t-68 174zM533 1477q0 -45 24 -71t72 
-26q42 0 69 26t27 71t-27 [...]
+<glyph unicode="&#xe6;" horiz-adv-x="1878" d="M86 334q0 178 121 262.5t362 
93.5l191 6v84q0 69 -44.5 102t-121.5 33q-140 0 -305 -77l-99 202q189 101 422 
101q227 0 342 -131q66 64 152.5 96.5t206.5 32.5q221 0 349 -137.5t128 
-370.5v-148h-723q5 -130 77 -203t202 -73q196 0 380 88v-236q-79 -39 -171 -59 
t-226 -20q-137 0 -249.5 50.5t-184.5 155.5q-98 -117 -196.5 -161.5t-256.5 
-44.5q-161 0 -258.5 94.5t-97.5 259.5zM399 332q0 -129 140 -129q101 0 161 61t60 
162v92l-113 -4q-124 -4 -186 -47.5t-62 -134.5zM1073 [...]
+<glyph unicode="&#xe7;" horiz-adv-x="1053" d="M92 553q0 285 142 435.5t407 
150.5q194 0 348 -76l-90 -236q-72 29 -134 47.5t-124 18.5q-238 0 -238 -338q0 -328 
238 -328q88 0 163 23.5t150 73.5v-261q-74 -47 -149.5 -65t-190.5 -18q-522 0 -522 
573zM350 -303q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108 l78 154h193l-27 
-61q74 -24 118 -74.5t44 -114.5q0 -128 -75.5 -185t-233.5 -57q-78 0 -146 21v168z" 
/>
+<glyph unicode="&#xe8;" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 
153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 
67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 
113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5zM245 1548v21 h342q63 -101 235 
-301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 
153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 
67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 
113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5zM447 1241v27 q172 200 235 
301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xea;" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 
153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 
67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 
113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5zM194 1241v27 q189 189 256 
301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 
-176h-203z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 
153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 
67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 
113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5zM297 1405 q0 65 37.5 100t101.5 
35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 
98zM700 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 
-97t-103 -36q-60 0 -100.5 32 [...]
+<glyph unicode="&#xec;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305zM-101 
1548v21h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305zM145 
1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xee;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305zM-122 
1241v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 
-234 176q-78 -81 -229 -176h-203z" />
+<glyph unicode="&#xef;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305zM-29 
1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 
-36.5q-64 0 -101.5 35t-37.5 98zM374 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 
-36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z " />
+<glyph unicode="&#xf0;" horiz-adv-x="1268" d="M92 489q0 233 130 369.5t351 
136.5q205 0 275 -98l8 4q-67 162 -192 281l-230 -142l-100 156l176 107q-80 53 -152 
92l101 176q144 -65 258 -141l225 139l100 -154l-170 -104q156 -143 230 -324.5t74 
-413.5q0 -280 -145 -436.5t-400 -156.5q-245 0 -392 137t-147 372z M403 487q0 -140 
60 -211t172 -71q123 0 176 82t53 245q0 108 -61 173t-168 65q-121 0 -176.5 
-68.5t-55.5 -214.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1346" d="M160 0v1118h233l41 -143h17q51 81 
140.5 122.5t203.5 41.5q195 0 296 -105.5t101 -304.5v-729h-305v653q0 121 -43 
181.5t-137 60.5q-128 0 -185 -85.5t-57 -283.5v-526h-305zM258 1239q11 145 82.5 
227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26 t41.5 
80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 
16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-149z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 
152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 
70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 
84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM237 1548v21 
h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 
152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 
70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 
84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM467 1241v27 
q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 
152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 
70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 
84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM198 1241v27 
q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 
176q-78 -81 -229 -176h-203z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 
152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 
70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 
84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM219 1239 
q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 
26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 
36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-1 [...]
+<glyph unicode="&#xf6;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 
152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 
70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 
84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM291 1405 q0 
65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 
-101.5 35t-37.5 98zM694 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 
-99q0 -61 -39 -97t-103 -36q-60 0 -100.5  [...]
+<glyph unicode="&#xf7;" d="M88 612v219h993v-219h-993zM444 373q0 76 37 
113.5t103 37.5t102.5 -39t36.5 -112q0 -70 -37 -111t-102 -41t-102.5 39t-37.5 
113zM444 1071q0 75 37 113.5t103 38.5q67 0 103 -40.5t36 -111.5q0 -70 -37 
-110.5t-102 -40.5t-102.5 39t-37.5 112z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 
152q132 0 248 -52l55 82l152 -108l-58 -84q142 -155 142 -416q0 -273 -144 
-427t-401 -154q-126 0 -234 45l-67 -101l-154 105l68 100q-152 156 -152 432zM403 
561q0 -94 19 -166l317 475q-43 23 -106 23q-122 0 -176 -82.5t-54 -249.5z M543 
240q38 -15 92 -15q122 0 175.5 84.5t53.5 251.5q0 81 -12 141z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 
-181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 
-139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5zM245 1548v21h342q63 -101 
235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 
-181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 
-139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5zM498 1241v27q172 200 235 
301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 
-181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 
-139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5zM235 1241v27q189 189 256 
301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203 q-157 93 -234 176q-78 -81 
-229 -176h-203z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 
-181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 
-139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5zM326 1405q0 65 37.5 
100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5 q-64 0 -101.5 
35t-37.5 98zM729 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 
-39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1165" d="M0 1118h334l211 -629q27 -82 37 
-194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 
0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55zM393 1241v27q172 
200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z " />
+<glyph unicode="&#xfe;" horiz-adv-x="1296" d="M160 -492v2048h305v-391l-7 
-120l-7 -72h14q50 81 131 123.5t186 42.5q198 0 310 -154.5t112 -423.5q0 -273 
-111.5 -427t-310.5 -154q-213 0 -317 137h-14l7 -62l7 -94v-453h-305zM465 563q0 
-180 53.5 -258t169.5 -78q205 0 205 338q0 165 -50.5 247.5t-158.5 82.5 q-113 0 
-165 -69.5t-54 -229.5v-33z" />
+<glyph unicode="&#xff;" horiz-adv-x="1165" d="M0 1118h334l211 -629q27 -82 37 
-194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 
0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55zM243 1405q0 65 
37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5 t-103 -36.5q-64 0 
-101.5 35t-37.5 98zM646 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 
-99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="&#x131;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305z" />
+<glyph unicode="&#x152;" horiz-adv-x="1993" d="M119 735q0 363 169.5 
556.5t487.5 193.5q61 0 127 -7t101 
-16h868v-254h-563v-321h526v-254h-526v-377h563v-256h-873q-38 -9 -109 -14.5t-116 
-5.5q-319 0 -487 197t-168 558zM438 733q0 -244 86 -368.5t250 -124.5q65 0 126 
10.5t99 28.5v907q-35 19 -101.5 30 t-121.5 11q-166 0 -252 -125.5t-86 -368.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="2003" d="M92 561q0 277 141.5 427.5t399.5 
150.5q112 0 212 -39.5t171 -116.5q144 156 383 156q244 0 380 -135t136 
-373v-148h-746v-8q7 -127 81.5 -197.5t207.5 -70.5q107 0 200 21t193 67v-236q-81 
-39 -175.5 -59t-229.5 -20q-271 0 -420 155q-141 -155 -391 -155 q-162 0 -286 
70t-190.5 202t-66.5 309zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 
84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1178 
686h450q-2 111 -60.5 173.5t-162.5 62.5q-94 0 -1 [...]
+<glyph unicode="&#x178;" horiz-adv-x="1278" d="M0 1462h336l303 -602l305 
602h334l-485 -893v-569h-308v559zM297 1743q0 65 37.5 100t101.5 35q66 0 103.5 
-37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM700 1743q0 70 
40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36 q-60 0 
-100.5 32.5t-40.5 100.5z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1243" d="M186 1241v27q189 189 256 
301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 
-176h-203z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M340 1477q0 108 67.5 
172.5t180.5 64.5q110 0 182 -66t72 -169q0 -108 -71 -174t-183 -66t-180 64t-68 
174zM492 1477q0 -45 24 -71t72 -26q42 0 69 26t27 71t-27 70.5t-69 25.5t-69 
-25.5t-27 -70.5z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1243" d="M207 1239q11 145 82.5 227t189.5 
82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 
-83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 
-26.5t-41.5 -80.5h-149z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 436v230h860v-230h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 436v230h1884v-230h-1884z" 
/>
+<glyph unicode="&#x2018;" horiz-adv-x="444" d="M25 983q22 91 72.5 228.5t103.5 
250.5h219q-66 -267 -101 -501h-280z" />
+<glyph unicode="&#x2019;" horiz-adv-x="444" d="M25 961q69 296 100 501h281l14 
-22q-50 -197 -176 -479h-219z" />
+<glyph unicode="&#x201a;" horiz-adv-x="596" d="M63 -264q65 266 101 502h280l15 
-23q-52 -202 -176 -479h-220z" />
+<glyph unicode="&#x201c;" horiz-adv-x="911" d="M25 983q22 91 72.5 228.5t103.5 
250.5h219q-66 -267 -101 -501h-280zM492 983q22 91 72.5 228.5t103.5 250.5h219q-66 
-267 -101 -501h-280z" />
+<glyph unicode="&#x201d;" horiz-adv-x="911" d="M25 961q69 296 100 501h281l14 
-22q-50 -197 -176 -479h-219zM492 961q69 296 100 501h280l15 -22q-50 -197 -176 
-479h-219z" />
+<glyph unicode="&#x201e;" horiz-adv-x="1061" d="M63 -264q65 266 101 502h280l15 
-23q-52 -202 -176 -479h-220zM530 -264q65 266 101 502h280l15 -23q-52 -202 -176 
-479h-220z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M98 748q0 154 74 235.5t213 
81.5q137 0 212 -82t75 -235q0 -152 -75.5 -235t-211.5 -83q-138 0 -212.5 83t-74.5 
235z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1751" d="M117 143q0 84 45 127t131 43q83 
0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 
125.5zM700 143q0 84 45 127t132 43q83 0 128.5 -44t45.5 -126q0 -79 -46 
-124.5t-128 -45.5q-85 0 -131 44.5t-46 125.5zM1284 143q0 84 45 127t131 43 q83 0 
128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="754" d="M82 547v26l371 455l219 
-119l-279 -348l279 -348l-219 -119z" />
+<glyph unicode="&#x203a;" horiz-adv-x="754" d="M82 213l278 348l-278 348l219 
119l371 -455v-26l-371 -453z" />
+<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-393 0l811 1462h239l-811 
-1462h-239z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="776" d="M12 737v154l385 
577h236v-563h125v-168h-125v-151h-238v151h-383zM197 905h198v164q0 86 6 184q-9 
-26 -35.5 -80t-41.5 -77z" />
+<glyph unicode="&#x20ac;" d="M66 481v178h118q-4 23 -4 62l2 53h-116v176h133q37 
242 199 382.5t405 140.5q188 0 352 -82l-98 -232q-69 31 -129 48.5t-125 17.5q-122 
0 -201 -70.5t-102 -204.5h403v-176h-418l-2 -35v-47l2 -33h355v-178h-338q51 -243 
321 -243q143 0 275 57v-256q-116 -59 -293 -59 q-245 0 -403 133t-199 368h-137z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M16 
1313v149h564v-149h-199v-572h-168v572h-197zM625 741v721h247l160 -510l170 
510h240v-721h-168v408l4 121h-6l-174 -529h-142l-165 529h-7l4 -111v-418h-163z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1120" d="M0 
1120h1120v-1120h-1120v1120z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1417" d="M41 889v147l168 82v82q0 191 94 
279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 
-98.5v-70h264v-229h-264v-889h-305v889h-168zM940 1407q0 149 166 149t166 -149q0 
-71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM953 0v1118h305v-1118h-305z " />
+<glyph unicode="&#xfb02;" horiz-adv-x="1417" d="M41 889v147l168 82v82q0 191 94 
279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 
-98.5v-70h264v-229h-264v-889h-305v889h-168zM953 0v1556h305v-1556h-305z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="2208" d="M41 889v147l168 82v82q0 191 94 
279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 
-98.5v-70h264v-229h-264v-889h-305v889h-168zM834 889v147l168 82v82q0 191 94 
279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5 
v-70h264v-229h-264v-889h-305v889h-168zM1730 1407q0 149 166 149t166 -149q0 -71 
-41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM1743 0v1118h305v-1118h-305z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="2208" d="M41 889v147l168 82v82q0 191 94 
279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 
-98.5v-70h264v-229h-264v-889h-305v889h-168zM834 889v147l168 82v82q0 191 94 
279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5 
v-70h264v-229h-264v-889h-305v889h-168zM1743 0v1556h305v-1556h-305z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.ttf
new file mode 100755
index 0000000..7ab5d85
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.woff
new file mode 100755
index 0000000..869a9ed
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.eot
new file mode 100755
index 0000000..ad65180
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.svg
new file mode 100755
index 0000000..9149120
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.svg
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansBoldItalic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="586" d="M25 115q0 90 53.5 144t150.5 54q68 0 
109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM150 485l157 
977h340l-256 -977h-241z" />
+<glyph unicode="&#x22;" horiz-adv-x="928" d="M201 934l71 528h277l-152 
-528h-196zM604 934l74 528h276l-151 -528h-199z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M41 408l18 206h277l70 232h-252l18 
209h289l119 407h217l-117 -407h199l116 407h215l-116 -407h239l-18 -209h-279l-69 
-232h258l-19 -206h-297l-116 -408h-220l117 408h-194l-115 -408h-215l113 
408h-238zM553 614h197l69 232h-196z" />
+<glyph unicode="$" d="M51 168v266q198 -107 404 -117l71 322q-163 61 -241 
151t-78 214q0 173 127 279.5t350 121.5l35 151h139l-33 -151q166 -22 295 -90l-106 
-232q-132 65 -242 74l-63 -299q131 -51 195 -99.5t97 -113t33 -149.5q0 -184 -125.5 
-291.5t-367.5 -124.5l-39 -199h-140l44 201 q-209 12 -355 86zM502 1022q0 -79 80 
-111l51 246q-62 -7 -96.5 -41t-34.5 -94zM594 322q63 9 102 45t39 98q0 46 -24.5 
75.5t-59.5 43.5z" />
+<glyph unicode="%" horiz-adv-x="1753" d="M115 885q0 169 55.5 311.5t148.5 
214.5t216 72q137 0 211.5 -80t74.5 -238q0 -166 -56 -310t-151 -217t-217 -73q-139 
0 -210.5 83.5t-71.5 236.5zM231 0l1088 1462h235l-1083 -1462h-240zM360 868q0 -96 
56 -96q65 0 112 131t47 275q0 96 -57 96q-63 0 -110.5 -128.5 t-47.5 -277.5zM973 
283q0 177 53 322.5t148 219.5t219 74q137 0 211.5 -78.5t74.5 -230.5q0 -167 -54 
-313.5t-148 -220.5t-215 -74q-144 0 -216.5 78.5t-72.5 222.5zM1219 285q0 -97 55 
-97q41 0 77 55t59.5 154.5t23 [...]
+<glyph unicode="&#x26;" horiz-adv-x="1450" d="M68 358q0 145 78.5 248.5t273.5 
200.5q-76 130 -76 258q0 195 117.5 307.5t316.5 112.5q169 0 266 -82.5t97 -224.5q0 
-280 -365 -426l195 -263q44 57 80.5 121.5t78.5 173.5h300q-133 -313 -310 -497l205 
-287h-350l-72 98q-175 -118 -403 -118q-209 0 -320.5 97.5 t-111.5 280.5zM383 
387q0 -65 45.5 -108t116.5 -43q115 0 221 59l-225 328q-88 -51 -123 -104.5t-35 
-131.5zM621 1085q0 -46 12 -92t29 -73q113 59 155.5 111t42.5 112q0 57 -30 
82.5t-70 25.5q-66 0 -102.5 -46.5 [...]
+<glyph unicode="'" horiz-adv-x="522" d="M201 934l71 528h277l-152 -528h-196z" />
+<glyph unicode="(" horiz-adv-x="694" d="M74 281q0 339 122.5 626.5t381.5 
554.5h262q-255 -278 -377.5 -573.5t-122.5 -618.5q0 -308 117 -594h-234q-149 266 
-149 605z" />
+<glyph unicode=")" horiz-adv-x="694" d="M-147 -324q499 545 499 1192q0 307 -116 
594h233q149 -264 149 -604q0 -342 -124 -630.5t-379 -551.5h-262z" />
+<glyph unicode="*" horiz-adv-x="1116" d="M172 1141l86 237l338 -174l33 369l256 
-51l-113 -353l387 29l-18 -254l-338 43l160 -336l-246 -73l-90 337l-197 -278l-207 
164l275 248z" />
+<glyph unicode="+" d="M109 
612v219h366v369h219v-369h367v-219h-367v-364h-219v364h-366z" />
+<glyph unicode="," horiz-adv-x="569" d="M-102 -264q74 167 194 502h285l8 
-23q-118 -255 -262 -479h-225z" />
+<glyph unicode="-" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
+<glyph unicode="." horiz-adv-x="584" d="M25 115q0 90 53.5 144t150.5 54q68 0 
109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode="/" horiz-adv-x="862" d="M-90 0l809 1462h295l-809 -1462h-295z" 
/>
+<glyph unicode="0" d="M66 467q0 297 84 537t228 360.5t333 120.5q399 0 399 
-473q0 -470 -168.5 -751t-472.5 -281q-198 0 -300.5 122t-102.5 365zM369 461q0 
-115 27.5 -173.5t97.5 -58.5q81 0 150.5 106t116 301t46.5 386q0 111 -30.5 
162t-92.5 51q-80 0 -149.5 -104t-117.5 -302t-48 -368z " />
+<glyph unicode="1" d="M182 1114l566 348h249l-309 -1462h-305l180 829q35 152 76 
287q-9 -8 -61.5 -47t-262.5 -170z" />
+<glyph unicode="2" d="M-49 0l43 213l477 424q180 159 248.5 254.5t68.5 179.5q0 
75 -41 114.5t-110 39.5q-66 0 -135.5 -33.5t-171.5 -118.5l-146 203q132 112 252 
159.5t250 47.5q190 0 301 -98t111 -259q0 -107 -41 -201t-122.5 -188t-266.5 
-245l-269 -222v-10h568l-54 -260h-962z" />
+<glyph unicode="3" d="M14 59v267q84 -50 182 -75.5t191 -25.5q158 0 243 63.5t85 
176.5q0 172 -258 172h-138l46 221h73q167 0 263 62t96 172q0 67 -43 104t-121 
37q-134 0 -287 -100l-127 204q124 81 232.5 113.5t246.5 32.5q190 0 298 -90.5t108 
-243.5q0 -156 -94.5 -262t-261.5 -135v-4 q131 -26 198.5 -106.5t67.5 -201.5q0 
-133 -74 -238t-212 -163.5t-327 -58.5q-239 0 -387 79z" />
+<glyph unicode="4" d="M-25 303l48 234l770 925h311l-195 -919h170l-51 
-240h-170l-63 -303h-293l63 303h-590zM305 543h311l58 248q12 58 40 164t42 
141h-6q-35 -63 -132 -181z" />
+<glyph unicode="5" d="M27 61v269q174 -99 352 -99q154 0 241 71t87 194q0 94 
-57.5 141t-166.5 47q-102 0 -213 -33l-104 78l207 733h755l-55 -262h-489l-88 
-293q72 15 127 15q183 0 289 -103t106 -287q0 -167 -71.5 -292t-208.5 -192.5t-330 
-67.5q-117 0 -218.5 23t-162.5 58z" />
+<glyph unicode="6" d="M88 469q0 202 61 395.5t167.5 335t256.5 213.5t357 72q125 
0 223 -27l-51 -246q-84 25 -191 25q-194 0 -313.5 -108t-185.5 -345h4q115 166 311 
166q157 0 242.5 -97t85.5 -273q0 -169 -71 -313.5t-190.5 -215.5t-277.5 -71q-212 0 
-320 127t-108 362zM383 422 q0 -91 40 -143t107 -52q99 0 161.5 94t62.5 236q0 71 
-33.5 113.5t-102.5 42.5q-60 0 -114.5 -35.5t-87.5 -95.5t-33 -160z" />
+<glyph unicode="7" d="M78 0l737 1202h-629l56 260h975l-41 -194l-752 
-1268h-346z" />
+<glyph unicode="8" d="M55 350q0 298 348 426q-165 132 -165 299q0 119 58 
212.5t168 145.5t257 52q123 0 215.5 -42t141 -118t48.5 -174q0 -134 -80.5 
-233.5t-230.5 -151.5q217 -141 217 -365q0 -122 -63.5 -218.5t-181 -149.5t-273.5 
-53q-214 0 -336.5 100t-122.5 270zM352 383 q0 -81 50 -128.5t135 -47.5q93 0 147.5 
53.5t54.5 138.5q0 73 -36.5 131.5t-120.5 112.5q-116 -45 -173 -107t-57 -153zM528 
1094q0 -132 123 -201q185 72 185 221q0 68 -39.5 107t-102.5 39q-76 0 -121 
-46.5t-45 -119.5z" />
+<glyph unicode="9" d="M86 12v256q111 -41 227 -41q121 0 207.5 49t144 138.5t99.5 
257.5h-4q-111 -158 -295 -158q-163 0 -252.5 103.5t-89.5 285.5q0 166 73 305.5t196 
208t286 68.5q203 0 308.5 -123t105.5 -361q0 -280 -99 -533t-264 -370.5t-403 
-117.5q-128 0 -240 32zM424 928 q0 -87 37.5 -131.5t105.5 -44.5q60 0 111.5 
36.5t82 100t30.5 158.5q0 84 -35.5 137t-110.5 53q-65 0 -115.5 -42t-78 -114t-27.5 
-153z" />
+<glyph unicode=":" horiz-adv-x="584" d="M25 115q0 90 53.5 144t150.5 54q68 0 
109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM207 940q0 92 
55.5 145.5t149.5 53.5q68 0 108.5 -38.5t40.5 -107.5q0 -86 -54.5 -140t-144.5 
-54q-72 0 -113.5 36.5t-41.5 104.5z" />
+<glyph unicode=";" horiz-adv-x="584" d="M-102 -264q74 167 194 502h285l8 
-23q-118 -255 -262 -479h-225zM207 940q0 92 55.5 145.5t149.5 53.5q68 0 108.5 
-38.5t40.5 -107.5q0 -86 -54.5 -140t-144.5 -54q-72 0 -113.5 36.5t-41.5 104.5z" />
+<glyph unicode="&#x3c;" d="M109 641v143l952 496v-240l-643 -317l643 -281v-239z" 
/>
+<glyph unicode="=" d="M109 418v219h952v-219h-952zM109 807v217h952v-217h-952z" 
/>
+<glyph unicode="&#x3e;" d="M109 203v239l643 281l-643 317v240l952 -496v-143z" />
+<glyph unicode="?" horiz-adv-x="940" d="M166 115q0 91 55 144.5t150 53.5q68 0 
108.5 -38t40.5 -107q0 -87 -55 -141t-143 -54q-74 0 -115 38t-41 104zM178 1358q230 
125 445 125q177 0 280 -87.5t103 -244.5q0 -83 -28.5 -149.5t-82.5 -123t-190 
-147.5q-64 -43 -96.5 -73t-52.5 -64.5t-38 -108.5h-258l14 78 q19 103 73.5 
177t172.5 155q124 84 157.5 127t33.5 96q0 119 -133 119q-50 0 -106.5 -16t-201.5 
-84z" />
+<glyph unicode="@" horiz-adv-x="1753" d="M92 500q0 279 120.5 497t343 
341.5t497.5 123.5q318 0 499 -163.5t181 -458.5q0 -173 -64 -321t-177.5 
-231t-254.5 -83q-88 0 -144.5 38.5t-72.5 108.5h-6q-50 -77 -113 -112t-147 
-35q-127 0 -198 79.5t-71 229.5q0 147 67.5 276.5t187.5 205t268 75.5q185 0 327 
-55 l-106 -420q-11 -44 -19 -76.5t-8 -64.5q0 -68 58 -68q66 0 124 64t92.5 
171t34.5 214q0 213 -123.5 325.5t-359.5 112.5q-203 0 -366.5 -94t-255 -266t-91.5 
-392q0 -243 134 -380.5t376 -137.5q117 0 219.5 20t221.5 [...]
+<glyph unicode="A" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254z" />
+<glyph unicode="B" horiz-adv-x="1270" d="M53 0l309 1462h426q229 0 346 
-81.5t117 -243.5q0 -150 -83 -247.5t-236 -129.5v-6q100 -26 159.5 -96.5t59.5 
-180.5q0 -229 -153 -353t-423 -124h-522zM412 256h180q117 0 183.5 58t66.5 161q0 
162 -183 162h-165zM545 883h149q121 0 181.5 48.5t60.5 139.5 q0 137 -170 
137h-152z" />
+<glyph unicode="C" horiz-adv-x="1253" d="M123 553q0 262 104 482.5t278 335t400 
114.5q125 0 222 -22.5t208 -82.5l-118 -250q-106 59 -175 78t-137 19q-132 0 -237.5 
-81t-169.5 -238.5t-64 -338.5q0 -167 68.5 -248t218.5 -81q146 0 338 77v-260q-199 
-77 -400 -77q-254 0 -395 149.5t-141 423.5z" />
+<glyph unicode="D" horiz-adv-x="1386" d="M53 0l309 1462h396q270 0 417.5 
-143t147.5 -410q0 -280 -98 -486.5t-283.5 -314.5t-437.5 -108h-451zM412 
256h106q148 0 258 76t172 223.5t62 337.5q0 154 -72.5 234.5t-208.5 80.5h-115z" />
+<glyph unicode="E" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 -254h-512l-67 
-321h477l-55 -254h-477l-80 -377h512l-54 -256h-817z" />
+<glyph unicode="F" horiz-adv-x="1087" d="M53 0l309 1462h814l-54 -254h-508l-79 
-377h473l-56 -253h-473l-121 -578h-305z" />
+<glyph unicode="G" horiz-adv-x="1413" d="M123 549q0 268 107 484.5t301 334t448 
117.5q218 0 410 -99l-115 -251q-74 40 -148 64t-161 24q-153 0 -273.5 -83t-189 
-236.5t-68.5 -330.5q0 -172 72.5 -252.5t222.5 -80.5q76 0 170 24l66 299h-267l56 
258h563l-162 -762q-134 -46 -248.5 -62.5t-242.5 -16.5 q-259 0 -400 147t-141 
422z" />
+<glyph unicode="H" horiz-adv-x="1434" d="M53 0l309 1462h306l-121 -573h471l121 
573h305l-309 -1462h-306l134 631h-471l-134 -631h-305z" />
+<glyph unicode="I" horiz-adv-x="659" d="M53 0l312 1462h305l-312 -1462h-305z" />
+<glyph unicode="J" horiz-adv-x="678" d="M-322 -150q88 -20 164 -20q99 0 160.5 
60.5t89.5 191.5l293 1380h305l-303 -1423q-52 -245 -175.5 -357t-346.5 -112q-94 0 
-187 27v253z" />
+<glyph unicode="K" horiz-adv-x="1255" d="M53 0l309 1462h306l-152 -702l158 
205l409 497h361l-594 -700l291 -762h-338l-211 592l-125 -70l-109 -522h-305z" />
+<glyph unicode="L" horiz-adv-x="1061" d="M53 0l309 1462h306l-256 -1206h512l-54 
-256h-817z" />
+<glyph unicode="M" horiz-adv-x="1802" d="M53 0l309 1462h404l68 -1093h4l551 
1093h423l-309 -1462h-280l145 692q53 247 105 441h-5l-569 -1133h-281l-61 
1133h-4q-11 -88 -38 -231t-187 -902h-275z" />
+<glyph unicode="N" horiz-adv-x="1546" d="M53 0l309 1462h357l340 -1077h4q12 76 
39 217t180 860h274l-309 -1462h-342l-356 1106h-6l-4 -32q-32 -216 -66 -386l-145 
-688h-275z" />
+<glyph unicode="O" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 341.5t402 
119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 
-399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 
246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 -251.5t-57.5 
-347z" />
+<glyph unicode="P" horiz-adv-x="1188" d="M53 0l309 1462h338q242 0 366 
-106.5t124 -319.5q0 -241 -169.5 -378.5t-467.5 -137.5h-86l-109 -520h-305zM522 
774h56q142 0 223.5 69t81.5 185q0 180 -195 180h-74z" />
+<glyph unicode="Q" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 341.5t402 
119q255 0 395 -144t140 -403q0 -316 -122.5 -555.5t-334.5 -337.5l254 
-393h-359l-178 328h-26q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 
-222t187.5 -75t220.5 87t155.5 246t56 357q0 142 -65 219.5t-183 77.5 q-121 0 -222 
-91.5t-158.5 -251.5t-57.5 -347z" />
+<glyph unicode="R" horiz-adv-x="1247" d="M53 0l309 1462h359q237 0 356 -102t119 
-299q0 -158 -83 -271.5t-239 -168.5l261 -621h-332l-207 561h-119l-119 
-561h-305zM530 813h78q131 0 204 57t73 174q0 82 -47.5 123t-149.5 41h-74z" />
+<glyph unicode="S" horiz-adv-x="1085" d="M41 70v274q193 -108 358 -108q112 0 
175 42.5t63 116.5q0 43 -13.5 75.5t-38.5 60.5t-124 102q-138 99 -194 196t-56 
209q0 129 62 230.5t176.5 158t263.5 56.5q217 0 397 -99l-109 -233q-156 74 -288 
74q-83 0 -136 -45t-53 -119q0 -61 33 -106.5t148 -120.5 q121 -80 181 -176.5t60 
-225.5q0 -209 -148 -330.5t-401 -121.5q-221 0 -356 90z" />
+<glyph unicode="T" horiz-adv-x="1087" d="M168 1204l55 258h1010l-55 
-258h-353l-254 -1204h-305l254 1204h-352z" />
+<glyph unicode="U" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 923h305l-194 
-919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306l-201 
-946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5z" />
+<glyph unicode="V" horiz-adv-x="1208" d="M184 1462h295l51 -880q4 -45 4 -133q-2 
-103 -6 -150h7q78 221 110 283l432 880h316l-748 -1462h-334z" />
+<glyph unicode="W" horiz-adv-x="1831" d="M184 1462h287l6 -798q0 -52 -4 
-173t-10 -174h6q22 64 67 180.5t60 145.5l369 819h270l21 -873q0 -146 -9 -272h6q43 
129 131 349l330 796h309l-647 -1462h-346l-22 721l-2 139q0 88 4 158h-4q-46 -146 
-115 -299l-324 -719h-338z" />
+<glyph unicode="X" horiz-adv-x="1241" d="M-117 0l576 764l-238 698h320l153 
-518l363 518h344l-545 -725l268 -737h-331l-172 543l-396 -543h-342z" />
+<glyph unicode="Y" horiz-adv-x="1155" d="M186 1462h312l129 -592l374 
592h342l-618 -903l-119 -559h-303l119 559z" />
+<glyph unicode="Z" horiz-adv-x="1098" d="M-61 0l38 201l777 1005h-543l53 
256h936l-41 -202l-782 -1004h596l-53 -256h-981z" />
+<glyph unicode="[" horiz-adv-x="678" d="M-37 -324l381 1786h473l-45 
-211h-215l-291 -1364h215l-45 -211h-473z" />
+<glyph unicode="\" horiz-adv-x="862" d="M221 1462h260l224 -1462h-267z" />
+<glyph unicode="]" horiz-adv-x="678" d="M-137 -324l45 211h213l291 1364h-215l45 
211h473l-381 -1786h-471z" />
+<glyph unicode="^" horiz-adv-x="1081" d="M20 520l619 950h147l277 
-950h-223l-174 633l-402 -633h-244z" />
+<glyph unicode="_" horiz-adv-x="819" d="M-186 -324l30 140h822l-31 -140h-821z" 
/>
+<glyph unicode="`" horiz-adv-x="1135" d="M508 1548v21h311q36 -148 115 
-303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
+<glyph unicode="a" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 278t257 
98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 
-319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 -132t95.5 -44q69 
0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 0 -129.5 -72t-98 
-190t-36.5 -234z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M37 0l330 1556h301l-62 -288q-41 -182 
-84 -299h8q78 98 142.5 134t140.5 36q146 0 230.5 -108t84.5 -298t-68 -367.5t-187 
-281.5t-263 -104q-194 0 -276 163h-8l-58 -143h-231zM420 399q0 -80 37 -128t102 
-48q67 0 128 69t98.5 189.5t37.5 237.5q0 176 -131 176 q-68 0 -130 -65t-102 
-180.5t-40 -250.5z" />
+<glyph unicode="c" horiz-adv-x="989" d="M90 391q0 212 74.5 385.5t209.5 268t308 
94.5q182 0 328 -72l-92 -229q-54 23 -106 40t-118 17q-85 0 -153.5 -64t-107 
-175.5t-38.5 -239.5q0 -96 45.5 -144.5t126.5 -48.5q76 0 141 23.5t134 
58.5v-246q-152 -79 -336 -79q-201 0 -308.5 107.5t-107.5 303.5z" />
+<glyph unicode="d" horiz-adv-x="1217" d="M90 387q0 196 71.5 374.5t188.5 
278t258 99.5q82 0 141.5 -37t112.5 -127h8l2 28q6 110 25 195l76 358h301l-330 
-1556h-229l14 145h-4q-71 -87 -148.5 -126t-170.5 -39q-147 0 -231.5 107t-84.5 
300zM395 399q0 -176 137 -176q66 0 128.5 68.5t100.5 182.5t38 245 q0 80 -37.5 
128t-102.5 48q-68 0 -129.5 -72t-98 -190t-36.5 -234z" />
+<glyph unicode="e" horiz-adv-x="1141" d="M90 412q0 207 82.5 377.5t223.5 
260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 
-21v-20q0 -91 51.5 -143.5t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 
-86q-210 0 -326 113t-116 319zM428 647h45q155 0 241.5 48.5 t86.5 131.5q0 95 -105 
95q-88 0 -166 -80t-102 -195z" />
+<glyph unicode="f" horiz-adv-x="764" d="M-219 -225q61 -21 115 -21q61 0 107 
40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 
235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 
-229h-220l-215 -1010q-77 -371 -403 -371q-104 0 -174 25v242z" />
+<glyph unicode="g" horiz-adv-x="1108" d="M-115 -209q0 102 68.5 175.5t214.5 
121.5q-74 47 -74 133q0 71 44.5 122.5t146.5 98.5q-65 49 -96 112t-31 153q0 199 
125.5 315.5t341.5 116.5q83 0 166 -23h395l-35 -166l-174 -41q16 -52 16 -118q0 
-195 -121 -308.5t-329 -113.5q-59 0 -99 10q-84 -27 -84 -78 q0 -34 30 -49t89 
-23l137 -18q163 -21 237.5 -84.5t74.5 -183.5q0 -211 -156 -323t-446 -112q-208 0 
-324.5 75.5t-116.5 207.5zM150 -172q0 -115 194 -115q151 0 228 45t77 127q0 39 
-32.5 60t-137.5 35l-114 14q-106 -14 [...]
+<glyph unicode="h" horiz-adv-x="1237" d="M37 0l330 1556h301q-39 -181 -60 
-278t-86 -309h8q62 77 138 123.5t176 46.5q138 0 213.5 -83.5t75.5 -238.5q0 -73 
-23 -180l-133 -637h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 
-114t-118 -318l-98 -463h-301z" />
+<glyph unicode="i" horiz-adv-x="608" d="M37 0l237 1118h301l-237 
-1118h-301zM322 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 
-129.5t-136 -49.5q-151 0 -151 123z" />
+<glyph unicode="j" horiz-adv-x="608" d="M-264 -225q61 -21 114 -21q137 0 173 
170l253 1194h302l-265 -1239q-77 -371 -403 -371q-104 0 -174 25v242zM324 1380q0 
87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 
-151 123z" />
+<glyph unicode="k" horiz-adv-x="1163" d="M37 0l330 1556h301l-148 -694q-8 -41 
-29 -117l-28 -102h4l453 475h344l-498 -504l285 -614h-336l-183 420l-120 -72l-74 
-348h-301z" />
+<glyph unicode="l" horiz-adv-x="608" d="M37 0l330 1556h301l-330 -1556h-301z" />
+<glyph unicode="m" horiz-adv-x="1853" d="M37 0l237 1118h230l-21 -207h6q146 228 
355 228q219 0 262 -228h6q68 110 160.5 169t197.5 59q136 0 207.5 -85t71.5 -237q0 
-76 -23 -180l-133 -637h-301l138 653q16 68 16 119q0 123 -98 123q-92 0 -166.5 
-112t-118.5 -318l-96 -465h-301l137 653q16 68 16 119 q0 123 -98 123q-92 0 -167 
-114t-118 -318l-98 -463h-301z" />
+<glyph unicode="n" horiz-adv-x="1237" d="M37 0l237 1118h230l-21 -207h6q146 228 
355 228q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180l-133 -637h-301l137 653q16 
68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301z" />
+<glyph unicode="o" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 
258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 
-89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 
61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 -243z" 
/>
+<glyph unicode="p" horiz-adv-x="1219" d="M-68 -492l342 1610h230l-17 -170h9q138 
191 317 191q146 0 230.5 -107.5t84.5 -300.5q0 -191 -68.5 -367.5t-187.5 -280t-262 
-103.5q-83 0 -143 37t-111 126h-8q-12 -159 -43 -295l-72 -340h-301zM420 399q0 -80 
37 -128t102 -48q67 0 128 69t98.5 189.5t37.5 237.5 q0 176 -131 176q-68 0 -131.5 
-67.5t-102 -180t-38.5 -248.5z" />
+<glyph unicode="q" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 278t257 
98.5q86 0 152.5 -37.5t124.5 -126.5h8l57 143h232l-342 -1610h-301q47 218 73 
337.5t84 304.5h-8q-72 -94 -143 -132t-154 -38q-88 0 -156 47.5t-106.5 138.5t-38.5 
219zM395 399q0 -88 36.5 -132t103.5 -44q64 0 127.5 70t100 181 t36.5 245q0 80 
-37.5 128t-102.5 48q-68 0 -129.5 -72t-98 -190t-36.5 -234z" />
+<glyph unicode="r" horiz-adv-x="862" d="M37 0l237 1118h230l-21 -207h6q147 228 
353 228q59 0 96 -11l-66 -290q-45 16 -100 16q-116 0 -203.5 -91.5t-124.5 
-262.5l-106 -500h-301z" />
+<glyph unicode="s" horiz-adv-x="969" d="M23 45v248q157 -90 319 -90q80 0 131 
32.5t51 88.5q0 43 -37 77t-131 86q-121 68 -169 135.5t-48 159.5q0 170 110.5 
263.5t315.5 93.5q201 0 363 -95l-99 -215q-140 84 -258 84q-57 0 -92 -25.5t-35 
-68.5q0 -39 32 -68.5t120 -74.5q123 -63 178 -137t55 -170 q0 -188 -124.5 
-288.5t-346.5 -100.5q-107 0 -186.5 15t-148.5 50z" />
+<glyph unicode="t" horiz-adv-x="840" d="M94 889l29 147l196 84l132 236h194l-49 
-238h283l-50 -229h-282l-115 -539q-6 -30 -6 -53q0 -74 88 -74q65 0 162 
35v-225q-111 -53 -266 -53q-150 0 -220.5 63t-70.5 195q0 50 12 112l115 539h-152z" 
/>
+<glyph unicode="u" horiz-adv-x="1237" d="M111 301q0 93 24 213l127 604h301l-137 
-653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 
-1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5z" />
+<glyph unicode="v" horiz-adv-x="1049" d="M102 1118h295l45 -586q7 -133 7 
-231h6q55 153 92 223l297 594h323l-604 -1118h-323z" />
+<glyph unicode="w" horiz-adv-x="1614" d="M125 1118h281l4 -495l-4 -167l-7 
-171h4q6 20 14 41.5t51 136.5t46 119l231 536h328v-536q0 -142 -10 -297h6l28 80q73 
208 95 258l219 495h307l-530 -1118h-330l-6 520q0 155 10 340h-6q-62 -178 -123 
-319l-233 -541h-324z" />
+<glyph unicode="x" horiz-adv-x="1087" d="M-100 0l479 573l-225 545h321l115 
-334l244 334h354l-467 -561l244 -557h-326l-125 342l-264 -342h-350z" />
+<glyph unicode="y" horiz-adv-x="1063" d="M-141 -233q68 -13 116 -13q84 0 147.5 
48t117.5 149l26 49l-164 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 
153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240z" />
+<glyph unicode="z" horiz-adv-x="932" d="M-47 0l35 180l575 705h-397l51 
233h750l-43 -200l-566 -685h439l-49 -233h-795z" />
+<glyph unicode="{" horiz-adv-x="727" d="M-8 459l45 229q122 0 192.5 41.5t92.5 
138.5l61 285q38 170 131 239.5t270 69.5h84l-49 -225q-90 -2 -130.5 -34.5t-55.5 
-106.5l-66 -297q-45 -207 -276 -236v-8q85 -26 126.5 -82.5t41.5 -134.5q0 -44 -15 
-113l-36 -178q-7 -28 -7 -51q0 -54 33.5 -74t91.5 -20v-226 h-53q-167 0 -253.5 
63.5t-86.5 184.5q0 57 14 125l39 184q15 69 15 86q0 140 -209 140z" />
+<glyph unicode="|" d="M455 -465v2015h219v-2015h-219z" />
+<glyph unicode="}" horiz-adv-x="727" d="M-100 -98q93 3 137 35.5t59 105.5l66 
297q25 111 95 166t181 69v9q-168 51 -168 217q0 43 15 112l37 179q6 30 6 51q0 54 
-36.5 74t-109.5 20l41 225h33q340 0 340 -248q0 -56 -14 -124l-39 -185q-15 -69 -15 
-86q0 -139 209 -139l-45 -229q-122 0 -192.5 -42t-91.5 -139 l-62 -284q-37 -170 
-130.5 -240t-270.5 -70h-45v226z" />
+<glyph unicode="~" d="M109 551v231q101 109 256 109q64 0 117 -14t139 -50q64 -27 
111 -41t95 -14q51 0 112 30.5t122 90.5v-231q-103 -109 -256 -109q-59 0 -109 
11.5t-147 51.5q-89 38 -127 47t-80 9q-54 0 -116.5 -33t-116.5 -88z" />
+<glyph unicode="&#xa1;" horiz-adv-x="586" d="M-74 -371l256 977h242l-158 
-977h-340zM195 924q0 85 54 139.5t144 54.5q73 0 114.5 -37t41.5 -104q0 -92 -55.5 
-145.5t-149.5 -53.5q-68 0 -108.5 38t-40.5 108z" />
+<glyph unicode="&#xa2;" d="M164 584q0 193 62.5 355t178 262.5t267.5 123.5l33 
158h188l-35 -158q118 -14 225 -65l-92 -230q-53 23 -105 40t-118 17q-133 0 -216 
-143t-83 -336q0 -96 45 -144t127 -48q75 0 140 23.5t134 58.5v-246q-136 -71 -299 
-80l-41 -192h-188l49 210q-134 36 -203 136 t-69 258z" />
+<glyph unicode="&#xa3;" d="M-12 0l49 246q196 48 244 264l22 104h-192l45 
220h192l49 247q41 197 162 300.5t313 103.5q195 0 369 -86l-113 -232q-141 68 -237 
68q-75 0 -123 -39.5t-68 -132.5l-47 -229h299l-45 -220h-299l-18 -84q-42 -195 -209 
-270h655l-55 -260h-993z" />
+<glyph unicode="&#xa4;" d="M115 1047l147 147l127 -127q91 53 197 53q105 0 196 
-55l127 129l150 -143l-129 -129q53 -89 53 -199q0 -107 -53 -199l125 -125l-146 
-145l-127 125q-95 -51 -196 -51q-115 0 -199 51l-125 -123l-145 145l127 125q-54 93 
-54 197q0 102 54 197zM397 723 q0 -77 54.5 -132.5t134.5 -55.5q81 0 136.5 55t55.5 
133q0 80 -56.5 135t-135.5 55q-78 0 -133.5 -56t-55.5 -134z" />
+<glyph unicode="&#xa5;" d="M88 221l37 178h252l29 138h-252l39 178h196l-192 
747h297l114 -590l371 590h311l-506 -747h203l-39 -178h-252l-28 -138h252l-37 
-178h-252l-47 -221h-291l47 221h-252z" />
+<glyph unicode="&#xa6;" d="M455 350h219v-815h-219v815zM455 
735v815h219v-815h-219z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M20 55v224q172 -105 345 -105q99 0 
144.5 35t45.5 92q0 39 -33 72.5t-127 79.5q-117 57 -181 131t-64 176q0 89 47.5 
163t154.5 142q-42 34 -70 84.5t-28 107.5q0 149 117 234.5t313 85.5q172 0 344 
-88l-82 -193q-147 84 -282 84q-144 0 -144 -106q0 -43 40.5 -76 t127.5 -72q242 
-106 242 -303q0 -188 -193 -303q38 -35 64 -85.5t26 -108.5q0 -161 -126 
-253.5t-345 -92.5q-204 0 -336 75zM393 797q0 -54 43.5 -96.5t143.5 -88.5q49 31 
75.5 78.5t26.5 95.5q0 109 -176 181q-51 - [...]
+<glyph unicode="&#xa8;" horiz-adv-x="1135" d="M397 1382q0 78 42.5 118t119.5 
40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM799 1382q0 78 42 
118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" 
/>
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M125 731q0 200 100 375t275 
276t377 101q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 
-276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM266 731q0 -164 81.5 
-305t224 -223t305.5 -82q167 0 308 83t221.5 223.5t80.5 303.5 t-80.5 303.5t-222 
223.5t-307.5 83q-164 0 -306.5 -82.5t-223.5 -223.5t-81 -304zM485 721q0 225 117.5 
351t325.5 126q142 0 284 -72l-75 -174q-114 58 -205 58q-111 0 -163 -73t-52 -214q0 
-134 55.5 -203t159.5 -69q43 [...]
+<glyph unicode="&#xaa;" horiz-adv-x="772" d="M152 1020q0 117 46 228t123 
171t177 60q120 0 180 -103h6l39 90h154l-158 -702h-154l8 92h-2q-80 -104 -202 
-104q-103 0 -160 70t-57 198zM356 1014q0 -111 86 -111q45 0 84 41.5t65.5 120t26.5 
154.5q0 106 -88 106q-73 0 -123.5 -96t-50.5 -215z" />
+<glyph unicode="&#xab;" horiz-adv-x="1151" d="M72 551v18l401 463l191 -155l-279 
-334l135 -350l-246 -103zM559 551v18l402 463l190 -155l-279 -334l136 -350l-246 
-103z" />
+<glyph unicode="&#xac;" d="M109 612v219h952v-583h-219v364h-733z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M41 424l53 250h524l-53 
-250h-524z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M125 731q0 200 100 375t275 
276t377 101q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 
-276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM266 731q0 -164 81.5 
-305t224 -223t305.5 -82q167 0 308 83t221.5 223.5t80.5 303.5 t-80.5 303.5t-222 
223.5t-307.5 83q-164 0 -306.5 -82.5t-223.5 -223.5t-81 -304zM571 293v874h308q173 
0 265.5 -67.5t92.5 -200.5q0 -86 -44 -149.5t-130 -96.5l197 -360h-254l-138 
297h-67v-297h-230zM801 758h51q72 0 [...]
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556l45 201h1036l-45 
-201h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M164 1137q0 93 46.5 173.5t127.5 
126.5t172 46q93 0 173.5 -47t126.5 -127t46 -172q0 -93 -46 -173t-126 -125.5t-174 
-45.5q-93 0 -173 45t-126.5 125t-46.5 174zM354 1137q0 -63 45.5 -108.5t110.5 
-45.5q66 0 111 46t45 108q0 63 -45.5 110t-110.5 47t-110.5 -47.5 t-45.5 -109.5z" 
/>
+<glyph unicode="&#xb1;" d="M109 0v219h952v-219h-952zM109 
674v219h366v369h219v-369h367v-219h-367v-365h-219v365h-366z" />
+<glyph unicode="&#xb2;" horiz-adv-x="776" d="M59 586l35 166l273 219q111 91 141 
122t44.5 59t14.5 56q0 42 -25.5 62t-60.5 20q-86 0 -188 -82l-100 158q74 57 156 
87t192 30q123 0 196.5 -63t73.5 -160q0 -70 -22 -123t-70 -103.5t-189 -152.5l-129 
-95h347l-41 -200h-648z" />
+<glyph unicode="&#xb3;" horiz-adv-x="776" d="M92 625v192q125 -72 254 -72q76 0 
125 30.5t49 88.5q0 37 -26 62.5t-88 25.5h-127l34 160h90q84 0 132.5 28t48.5 85q0 
40 -26 60t-71 20q-86 0 -188 -66l-82 150q142 92 313 92q130 0 206.5 -55.5t76.5 
-155.5q0 -87 -51 -145.5t-166 -88.5v-4q154 -33 154 -176 q0 -131 -107 -209t-285 
-78q-75 0 -145.5 15.5t-120.5 40.5z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1135" d="M483 1241v25q79 88 222 
303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1249" d="M-68 -492l342 1610h301l-135 
-645q-16 -70 -16 -125q0 -60 31.5 -92.5t79.5 -32.5q90 0 162.5 106.5t117.5 
319.5l98 469h301l-237 -1118h-229l18 176h-6q-117 -196 -266 -196q-51 0 -89.5 
19.5t-58.5 47.5h-6q-8 -66 -21.5 -139t-82.5 -400h-304z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M147 1042q0 256 107.5 385t343.5 
129h604v-1816h-162v1616h-166v-1616h-161v819q-62 -18 -146 -18q-216 0 -318 
125t-102 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="584" d="M131 695q0 90 53.5 144t150.5 
54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M-207 -301q63 -23 125 -23q102 0 
102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178q0 -116 -83 
-179t-234 -63q-86 0 -152 23v168z" />
+<glyph unicode="&#xb9;" horiz-adv-x="776" d="M129 1214l399 248h207l-186 
-876h-246l84 397q24 109 55 207q-16 -15 -80 -60l-131 -81z" />
+<glyph unicode="&#xba;" horiz-adv-x="754" d="M162 1038q0 197 104 319t277 
122q129 0 197.5 -73.5t68.5 -211.5q0 -128 -48.5 -232.5t-132.5 -157t-196 
-52.5q-134 0 -202 75t-68 211zM371 1026q0 -111 80 -111q63 0 105 85.5t42 207.5q0 
107 -76 107q-64 0 -107.5 -89.5t-43.5 -199.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1151" d="M0 227l279 334l-136 350l246 
103l203 -461v-18l-402 -463zM487 227l279 334l-135 350l246 103l202 -461v-18l-401 
-463z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1804" d="M177 0l1087 1462h236l-1084 
-1462h-239zM97 1214l399 248h207l-186 -876h-246l84 397q24 109 55 207q-16 -15 -80 
-60l-131 -81zM844 152l31 174l475 557h260l-121 -563h119l-35 -168h-119l-32 
-151h-238l33 151h-373zM1078 320h174l58 231l22 74q-13 -20 -43 -58 t-211 -247z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1804" d="M940 1l35 166l273 219q111 91 141 
122t44.5 59t14.5 56q0 42 -25.5 62t-60.5 20q-86 0 -188 -82l-100 158q74 57 156 
87t192 30q123 0 196.5 -63t73.5 -160q0 -70 -22 -123t-70 -103.5t-189 -152.5l-129 
-95h347l-41 -200h-648zM97 1214l399 248h207l-186 -876h-246 l84 397q24 109 55 
207q-16 -15 -80 -60l-131 -81zM177 0l1087 1462h236l-1084 -1462h-239z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1804" d="M310 0l1087 1462h236l-1084 
-1462h-239zM905 152l31 174l475 557h260l-121 -563h119l-35 -168h-119l-32 
-151h-238l33 151h-373zM1139 320h174l58 231l22 74q-13 -20 -43 -58t-211 -247zM133 
625v192q125 -72 254 -72q76 0 125 30.5t49 88.5q0 37 -26 62.5t-88 25.5h-127 l34 
160h90q84 0 132.5 28t48.5 85q0 40 -26 60t-71 20q-86 0 -188 -66l-82 150q142 92 
313 92q130 0 206.5 -55.5t76.5 -155.5q0 -87 -51 -145.5t-166 -88.5v-4q154 -33 154 
-176q0 -131 -107 -209t-285 -78q- [...]
+<glyph unicode="&#xbf;" horiz-adv-x="940" d="M-68 -59q0 82 28.5 148.5t83.5 
124t189 146.5q93 62 128 106.5t51 106.5l8 33h258l-14 -78q-19 -105 -76.5 
-180t-169.5 -151q-122 -83 -156.5 -126t-34.5 -98q0 -118 133 -118q50 0 106.5 
16t201.5 84l92 -221q-221 -125 -445 -125q-177 0 -280 87.5t-103 244.5z M418 924q0 
86 54.5 140t143.5 54q73 0 114.5 -37t41.5 -104q0 -92 -55.5 -145.5t-149.5 
-53.5q-68 0 -108.5 38t-40.5 108z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254zM539 1886v21h311q36 -148 115 -303v-25h-184q-71 69 
-138.5 153.5t-103.5 153.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254zM735 1579v25q79 88 222 303h335v-17q-46 -56 -154 
-152.5t-194 -158.5h-209z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254zM426 1579v25q63 57 153 147t142 156h338q22 -54 74 
-142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254zM448 1577q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 
-35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5 
t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254zM516 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 
-39 -116.5t-121 -43.5q-135 0 -135 110zM918 1720q0 78 42 118t120 40 q65 0 99 
-28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254zM585 1565q0 109 68.5 173t179.5 64q110 0 182 -65t72 
-170q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5zM737 1565 q0 -45 
24 -71t72 -26q42 0 69.5 26t27.5 71t-27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5z" 
/>
+<glyph unicode="&#xc6;" horiz-adv-x="1833" d="M-123 0l922 1462h1104l-54 
-254h-512l-67 -321h477l-55 -254h-478l-79 -377h512l-54 -256h-817l74 
348h-426l-219 -348h-328zM588 608h317l127 600h-80z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1253" d="M123 553q0 262 104 482.5t278 
335t400 114.5q125 0 222 -22.5t208 -82.5l-118 -250q-106 59 -175 78t-137 19q-132 
0 -237.5 -81t-169.5 -238.5t-64 -338.5q0 -167 68.5 -248t218.5 -81q146 0 338 
77v-260q-199 -77 -400 -77q-254 0 -395 149.5t-141 423.5zM356 -301 q63 -23 125 
-23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178q0 
-116 -83 -179t-234 -63q-86 0 -152 23v168z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 
-254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817zM480 
1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 
-254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817zM608 1579v25q79 
88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
+<glyph unicode="&#xca;" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 
-254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817zM368 1579v25q63 
57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25h-198q-63 53 -162 
168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 
-254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817zM438 1720q0 78 
42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 
110zM840 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5 t-120.5 
-43.5q-135 0 -135 110z" />
+<glyph unicode="&#xcc;" horiz-adv-x="659" d="M53 0l312 1462h305l-312 
-1462h-305zM241 1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 
153.5t-103.5 153.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="659" d="M53 0l312 1462h305l-312 
-1462h-305zM414 1579v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 
-158.5h-209z" />
+<glyph unicode="&#xce;" horiz-adv-x="659" d="M53 0l312 1462h305l-312 
-1462h-305zM128 1579v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 
-160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xcf;" horiz-adv-x="659" d="M53 0l312 1462h305l-312 
-1462h-305zM222 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 
-116.5t-121 -43.5q-135 0 -135 110zM624 1720q0 78 42 118t120 40q65 0 99 -28t34 
-80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1386" d="M37 596l55 254h139l131 
612h396q270 0 417.5 -143t147.5 -410q0 -280 -98 -486.5t-283.5 -314.5t-437.5 
-108h-451l125 596h-141zM412 256h106q148 0 258 76t172 223.5t62 337.5q0 154 -72.5 
234.5t-208.5 80.5h-115l-75 -358h237l-55 -254h-238z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1546" d="M53 0l309 1462h357l340 
-1077h4q12 76 39 217t180 860h274l-309 -1462h-342l-356 1106h-6l-4 -32q-32 -216 
-66 -386l-145 -688h-275zM563 1577q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 
-35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5 
t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 
341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 
-114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 
87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 
-251.5t-57.5 -347zM627 1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 
153.5t-103.5 153.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 
341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 
-114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 
87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 
-251.5t-57.5 -347zM753 1579v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 
-158.5h-209z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 
341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 
-114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 
87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 
-251.5t-57.5 -347zM499 1579v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 
-160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 
341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 
-114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 
87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 
-251.5t-57.5 -347zM520 1577q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 
-16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5t-69.5 36t-61.5 
36t-62.5 16.5q-31 0 -55.5 -28t-38 [...]
+<glyph unicode="&#xd6;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 
341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 
-114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 
87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 
-251.5t-57.5 -347zM585 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 
-116.5t-121 -43.5q-135 0 -135 110zM987 1720q0 78 42 118t120 40q65 0 99 -28t34 
-80q0 -73 -39.5 -116.5t-120.5 -43.5q-13 [...]
+<glyph unicode="&#xd7;" d="M129 1024l152 154l301 -299l305 299l153 -150l-305 
-305l301 -303l-149 -152l-305 301l-301 -299l-150 152l297 301z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1495" d="M100 29l121 151q-98 138 -98 
357q0 265 99 487.5t273 341.5t402 119q182 0 305 -76l105 131l151 -117l-117 
-145q91 -134 91 -340q0 -283 -99 -506.5t-271 -337.5t-396 -114q-180 0 -304 
71l-108 -137zM424 537q0 -32 8 -101l596 754q-69 43 -158 43q-126 0 -229 -91.5 
t-160 -252.5t-57 -352zM539 270q59 -37 153 -37q124 0 226 89t158.5 247.5t56.5 
360.5l-5 80z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 
923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 
917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 
307.5zM576 1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5 t-103.5 
153.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 
923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 
917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 
307.5zM757 1579v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5 
h-209z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 
923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 
917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 
307.5zM475 1579v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5 
v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 
923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 
917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 
307.5zM565 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5 t-121 
-43.5q-135 0 -135 110zM967 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 
-39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1155" d="M186 1462h312l129 -592l374 
592h342l-618 -903l-119 -559h-303l119 559zM606 1579v25q79 88 222 303h335v-17q-46 
-56 -154 -152.5t-194 -158.5h-209z" />
+<glyph unicode="&#xde;" horiz-adv-x="1188" d="M53 0l309 1462h306l-50 
-229h35q242 0 366 -106.5t124 -319.5q0 -243 -170.5 -378.5t-466.5 -135.5h-86l-62 
-293h-305zM475 547h55q139 0 222.5 66.5t83.5 185.5q0 180 -195 180h-74z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1350" d="M-260 -225q61 -21 115 -21q133 0 
170 178l254 1207q47 224 182 326t385 102q208 0 331 -90t123 -240q0 -114 -49 
-192t-178 -152q-73 -42 -96 -68.5t-23 -54.5q0 -23 22 -49.5t79 -69.5q107 -83 
144.5 -150.5t37.5 -150.5q0 -170 -123.5 -270t-337.5 -100q-187 0 -297 61 v240q128 
-78 258 -78q101 0 148 33t47 86q0 40 -26.5 75t-108.5 97q-94 72 -129 130t-35 
126q0 84 45 145t162 127q66 37 104.5 76t38.5 96q0 62 -39.5 98.5t-124.5 36.5q-96 
0 -156 -51.5t-85 -171.5l-254 -1 [...]
+<glyph unicode="&#xe0;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 
278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 
145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 
-132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 
0 -129.5 -72t-98 -190t-36.5 -234zM443 1548v21h311q36 -148 115 -303v-25h-184q-71 
69 -138.5 153.5t-103.5 153.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 
278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 
145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 
-132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 
0 -129.5 -72t-98 -190t-36.5 -234zM598 1241v25q79 88 222 303h335v-17q-46 -56 
-154 -152.5t-194 -158.5h-209z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 
278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 
145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 
-132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 
0 -129.5 -72t-98 -190t-36.5 -234zM311 1240v25q63 57 153 147t142 156h338q22 -54 
74 -142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 
278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 
145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 
-132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 
0 -129.5 -72t-98 -190t-36.5 -234zM333 1239q59 309 281 309q49 0 87.5 -16.5t71.5 
-36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -28