summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--doc/_static/css/dev.css38
-rw-r--r--doc/_static/css/user.css38
-rw-r--r--doc/_static/logo-negativ-dev.svg36
-rw-r--r--doc/config-dnssec-glue.rst25
-rw-r--r--doc/config-dnssec.rst17
-rw-r--r--doc/config-logging-header.rst9
-rw-r--r--doc/config-network-forwarding.rst43
l---------doc/daemon-bindings-cache.rst1
l---------doc/daemon-bindings-net_client.rst1
l---------doc/daemon-bindings-net_dns_tweaks.rst1
l---------doc/daemon-bindings-net_server.rst1
l---------doc/daemon-bindings-net_tlssrv.rst1
l---------doc/daemon-bindings-net_xdpsrv.rst1
l---------doc/daemon-bindings-worker.rst1
l---------doc/daemon-scripting.rst1
-rw-r--r--doc/dev/Doxyfile (renamed from doc/Doxyfile)2
-rw-r--r--doc/dev/architecture-gc.rst (renamed from doc/architecture-gc.rst)0
-rw-r--r--doc/dev/architecture-kresd.rst (renamed from doc/architecture-kresd.rst)0
-rw-r--r--doc/dev/architecture-manager.rst (renamed from doc/architecture-manager.rst)2
-rw-r--r--doc/dev/architecture.rst (renamed from doc/architecture.rst)2
-rw-r--r--doc/dev/build.rst (renamed from doc/build.rst)33
-rw-r--r--doc/dev/conf.py (renamed from doc/conf.py)13
-rw-r--r--doc/dev/config-answer-reordering.rst (renamed from doc/config-answer-reordering.rst)0
-rw-r--r--doc/dev/config-lua-dnssec.rst (renamed from doc/config-lua-dnssec.rst)4
-rw-r--r--doc/dev/config-lua-experimental.rst (renamed from doc/config-lua-experimental.rst)0
-rw-r--r--doc/dev/config-lua-logging-monitoring.rst (renamed from doc/config-lua-logging-monitoring.rst)0
-rw-r--r--doc/dev/config-lua-network.rst (renamed from doc/config-lua-network.rst)2
-rw-r--r--doc/dev/config-lua-overview.rst (renamed from doc/config-lua-overview.rst)2
-rw-r--r--doc/dev/config-lua-performance.rst (renamed from doc/config-lua-performance.rst)0
-rw-r--r--doc/dev/config-lua-policy.rst (renamed from doc/config-lua-policy.rst)0
l---------doc/dev/daemon-bindings-cache.rst1
l---------doc/dev/daemon-bindings-net_client.rst1
l---------doc/dev/daemon-bindings-net_dns_tweaks.rst1
l---------doc/dev/daemon-bindings-net_server.rst1
l---------doc/dev/daemon-bindings-net_tlssrv.rst1
l---------doc/dev/daemon-bindings-net_xdpsrv.rst1
l---------doc/dev/daemon-bindings-worker.rst1
l---------doc/dev/daemon-scripting.rst1
-rw-r--r--doc/dev/flowcharts/io_and_worker.dia (renamed from doc/flowcharts/io_and_worker.dia)bin13771 -> 13771 bytes
-rw-r--r--doc/dev/flowcharts/task_ERD.dia (renamed from doc/flowcharts/task_ERD.dia)bin2700 -> 2700 bytes
-rw-r--r--doc/dev/flowcharts/tcp_task.dia (renamed from doc/flowcharts/tcp_task.dia)bin10812 -> 10812 bytes
-rw-r--r--doc/dev/flowcharts/udp_task.dia (renamed from doc/flowcharts/udp_task.dia)bin4316 -> 4316 bytes
-rw-r--r--doc/dev/index.rst53
-rw-r--r--doc/dev/lib.rst (renamed from doc/lib.rst)2
-rw-r--r--doc/dev/manager-dev.rst (renamed from doc/manager-dev.rst)0
l---------doc/dev/modules-bogus_log.rst1
l---------doc/dev/modules-daf.rst1
l---------doc/dev/modules-detect_time_jump.rst1
l---------doc/dev/modules-detect_time_skew.rst1
l---------doc/dev/modules-dns64.rst1
l---------doc/dev/modules-dnstap.rst1
l---------doc/dev/modules-edns_keepalive.rst1
l---------doc/dev/modules-experimental_dot_auth.rst1
l---------doc/dev/modules-hints.rst1
l---------doc/dev/modules-http-custom-services.rst1
l---------doc/dev/modules-http-trace.rst1
l---------doc/dev/modules-http.rst1
l---------doc/dev/modules-nsid.rst1
l---------doc/dev/modules-policy.rst1
l---------doc/dev/modules-predict.rst1
l---------doc/dev/modules-prefill.rst1
l---------doc/dev/modules-priming.rst1
l---------doc/dev/modules-rebinding.rst1
l---------doc/dev/modules-refuse_nord.rst1
l---------doc/dev/modules-renumber.rst1
l---------doc/dev/modules-rfc7706.rst1
l---------doc/dev/modules-serve_stale.rst1
l---------doc/dev/modules-stats.rst1
l---------doc/dev/modules-ta_sentinel.rst1
l---------doc/dev/modules-ta_signal_query.rst1
l---------doc/dev/modules-view.rst1
l---------doc/dev/modules-watchdog.rst1
-rw-r--r--doc/dev/modules_api.rst (renamed from doc/modules_api.rst)2
-rw-r--r--doc/dev/rename_ln.sh9
-rw-r--r--doc/dev/server_terminology.fodg (renamed from doc/server_terminology.fodg)0
l---------doc/dev/systemd-multiinst.rst1
-rw-r--r--doc/dev/worker_api.rst (renamed from doc/worker_api.rst)0
-rw-r--r--doc/internal-lua-config.rst18
l---------doc/modules-bogus_log.rst1
l---------doc/modules-daf.rst1
l---------doc/modules-detect_time_jump.rst1
l---------doc/modules-detect_time_skew.rst1
l---------doc/modules-dns64.rst1
l---------doc/modules-dnstap.rst1
l---------doc/modules-edns_keepalive.rst1
l---------doc/modules-experimental_dot_auth.rst1
l---------doc/modules-hints.rst1
l---------doc/modules-http-custom-services.rst1
l---------doc/modules-http-trace.rst1
l---------doc/modules-http.rst1
l---------doc/modules-nsid.rst1
l---------doc/modules-policy.rst1
l---------doc/modules-predict.rst1
l---------doc/modules-prefill.rst1
l---------doc/modules-priming.rst1
l---------doc/modules-rebinding.rst1
l---------doc/modules-refuse_nord.rst1
l---------doc/modules-renumber.rst1
l---------doc/modules-rfc7706.rst1
l---------doc/modules-serve_stale.rst1
l---------doc/modules-stats.rst1
l---------doc/modules-ta_sentinel.rst1
l---------doc/modules-ta_signal_query.rst1
l---------doc/modules-view.rst1
l---------doc/modules-watchdog.rst1
l---------doc/systemd-multiinst.rst1
-rw-r--r--doc/upgrading.rst338
-rw-r--r--doc/user/NEWS.rst (renamed from doc/NEWS.rst)2
-rw-r--r--doc/user/conf.py62
-rw-r--r--doc/user/config-cache-predict.rst (renamed from doc/config-cache-predict.rst)0
-rw-r--r--doc/user/config-cache-prefill.rst (renamed from doc/config-cache-prefill.rst)0
-rw-r--r--doc/user/config-cache.rst (renamed from doc/config-cache.rst)1
-rw-r--r--doc/user/config-dns64.rst (renamed from doc/config-dns64.rst)2
-rw-r--r--doc/user/config-dnssec.rst (renamed from doc/config-dnssec-ta.rst)36
-rw-r--r--doc/user/config-edns-keepalive.rst (renamed from doc/config-edns-keepalive.rst)0
-rw-r--r--doc/user/config-experimental-dot-auth.rst (renamed from doc/config-experimental-dot-auth.rst)0
-rw-r--r--doc/user/config-experimental.rst (renamed from doc/config-experimental.rst)0
-rw-r--r--doc/user/config-forward.rst (renamed from doc/config-forward.rst)70
-rw-r--r--doc/user/config-local-data.rst (renamed from doc/config-local-data.rst)0
-rw-r--r--doc/user/config-logging-bogus.rst (renamed from doc/config-logging-bogus.rst)0
-rw-r--r--doc/user/config-logging-debugging.rst (renamed from doc/config-logging-debugging.rst)0
-rw-r--r--doc/user/config-logging-dnstap.rst (renamed from doc/config-logging-dnstap.rst)0
-rw-r--r--doc/user/config-logging-monitoring.rst (renamed from doc/config-logging-monitoring.rst)11
-rw-r--r--doc/user/config-lua.rst (renamed from doc/config-lua.rst)0
-rw-r--r--doc/user/config-monitoring-stats.rst (renamed from doc/config-monitoring-stats.rst)2
-rw-r--r--doc/user/config-multiple-workers.rst (renamed from doc/config-multiple-workers.rst)0
-rw-r--r--doc/user/config-network-client.rst (renamed from doc/config-network-client.rst)0
-rw-r--r--doc/user/config-network-dns-tweaks.rst (renamed from doc/config-network-dns-tweaks.rst)0
-rw-r--r--doc/user/config-network-server-tls.rst (renamed from doc/config-network-server-tls.rst)0
-rw-r--r--doc/user/config-network-server.rst (renamed from doc/config-network-server.rst)4
-rw-r--r--doc/user/config-network.rst (renamed from doc/config-network.rst)2
-rw-r--r--doc/user/config-nsid.rst (renamed from doc/config-nsid.rst)2
-rw-r--r--doc/user/config-overview.rst (renamed from doc/config-overview.rst)0
-rw-r--r--doc/user/config-performance.rst (renamed from doc/config-performance.rst)0
-rw-r--r--doc/user/config-policy-new.rst (renamed from doc/config-policy-new.rst)0
-rw-r--r--doc/user/config-priming.rst (renamed from doc/config-priming.rst)0
-rw-r--r--doc/user/config-rebinding.rst (renamed from doc/config-rebinding.rst)0
-rw-r--r--doc/user/config-refuse-no-rd.rst (renamed from doc/config-refuse-no-rd.rst)0
-rw-r--r--doc/user/config-renumber.rst (renamed from doc/config-renumber.rst)0
-rw-r--r--doc/user/config-reordering.rst (renamed from doc/config-reordering.rst)0
-rw-r--r--doc/user/config-rfc7706.rst (renamed from doc/config-rfc7706.rst)0
-rw-r--r--doc/user/config-serve-stale.rst (renamed from doc/config-serve-stale.rst)0
-rw-r--r--doc/user/config-ta-sentinel.rst (renamed from doc/config-ta-sentinel.rst)0
-rw-r--r--doc/user/config-ta-signal-query.rst (renamed from doc/config-ta-signal-query.rst)0
-rw-r--r--doc/user/config-time-jump-detection.rst (renamed from doc/config-time-jump-detection.rst)0
-rw-r--r--doc/user/config-time-skew-detection.rst (renamed from doc/config-time-skew-detection.rst)0
-rw-r--r--doc/user/config-views.rst (renamed from doc/config-views.rst)4
-rw-r--r--doc/user/deployment-advanced-no-manager.rst (renamed from doc/deployment-advanced-no-manager.rst)0
-rw-r--r--doc/user/deployment-advanced-no-systemd-privileges.rst (renamed from doc/deployment-no-systemd-privileges.rst)0
-rw-r--r--doc/user/deployment-advanced-no-systemd-processes.rst (renamed from doc/deployment-no-systemd-processes.rst)4
-rw-r--r--doc/user/deployment-advanced-no-systemd.rst (renamed from doc/deployment-no-systemd.rst)4
-rw-r--r--doc/user/deployment-advanced.rst (renamed from doc/deployment-advanced.rst)2
-rw-r--r--doc/user/deployment-docker.rst (renamed from doc/deployment-docker.rst)0
-rw-r--r--doc/user/deployment-manual.rst (renamed from doc/deployment-manual.rst)0
-rw-r--r--doc/user/deployment-systemd.rst (renamed from doc/deployment-systemd.rst)2
-rw-r--r--doc/user/deployment-warning.rst (renamed from doc/deployment-warning.rst)0
-rw-r--r--doc/user/developer.rst9
-rw-r--r--doc/user/gettingstarted-config.rst (renamed from doc/gettingstarted-config.rst)2
-rw-r--r--doc/user/gettingstarted-install.rst (renamed from doc/gettingstarted-install.rst)4
-rw-r--r--doc/user/gettingstarted-startup.rst (renamed from doc/gettingstarted-startup.rst)0
-rw-r--r--doc/user/index.rst (renamed from doc/index.rst)17
-rw-r--r--doc/user/manager-api.rst (renamed from doc/manager-api.rst)1
-rw-r--r--doc/user/manager-client.rst (renamed from doc/manager-client.rst)0
-rw-r--r--doc/user/upgrading-to-6.rst (renamed from doc/upgrading-to-6.rst)12
-rw-r--r--doc/user/upgrading.rst21
-rwxr-xr-xscripts/make-doc.sh13
167 files changed, 466 insertions, 587 deletions
diff --git a/.gitignore b/.gitignore
index c79ea467..32789e7c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,8 +45,8 @@
/daemon/lua/trust_anchors.lua
/depcomp
/distro/tests/*/.vagrant
-/doc/.doctrees
-/doc/doxyxml
+/doc/**/.doctrees
+/doc/**/doxyxml
/doc/html
/doc/kresd.8
/doc/texinfo
diff --git a/doc/_static/css/dev.css b/doc/_static/css/dev.css
new file mode 100644
index 00000000..c71d8ad2
--- /dev/null
+++ b/doc/_static/css/dev.css
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: GPL-3.0-or-later */
+
+.wy-side-nav-search {
+ background-color: #b92929; /* From logo manual */
+}
+.wy-side-nav-search input[type=text] {
+ border-color: #a42424;
+}
+.wy-side-nav-search div.version {
+ color: hsla(0,0%,100%,0.4);
+}
+.wy-nav-top {
+ background-color: #b92929;
+}
+
+a {
+ color: #b92929;
+}
+a:hover {
+ color: #d13030;
+}
+a:visited {
+ color: #780001;
+}
+a:visited:hover {
+ color: #d13030;
+}
+
+.wy-menu-vertical p.caption {
+ color: #d95555;
+}
+
+.wy-menu-vertical a, .wy-menu-vertical a:hover, .wy-menu-vertical a:visited,
+.wy-menu-vertical a:visited:hover {
+ /* This is here so that the a-rules above do not override the menu colors,
+ * which should remain grey */
+ color: #d9d9d9;
+}
diff --git a/doc/_static/css/user.css b/doc/_static/css/user.css
new file mode 100644
index 00000000..6b3b9c97
--- /dev/null
+++ b/doc/_static/css/user.css
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: GPL-3.0-or-later */
+
+.wy-side-nav-search {
+ background-color: #00a2e2; /* From logo manual */
+}
+.wy-side-nav-search input[type=text] {
+ border-color: #45bfff;
+}
+.wy-side-nav-search div.version {
+ color: hsla(0,0%,100%,0.4);
+}
+.wy-nav-top {
+ background-color: #00a2e2;
+}
+
+a {
+ color: #00619c;
+}
+a:hover {
+ color: #00a2e2;
+}
+a:visited {
+ color: #00619c;
+}
+a:visited:hover {
+ color: #00a2e2;
+}
+
+.wy-menu-vertical p.caption {
+ color: #00a2e2;
+}
+
+.wy-menu-vertical a, .wy-menu-vertical a:hover, .wy-menu-vertical a:visited,
+.wy-menu-vertical a:visited:hover {
+ /* This is here so that the a-rules above do not override the menu colors,
+ * which should remain grey */
+ color: #d9d9d9;
+}
diff --git a/doc/_static/logo-negativ-dev.svg b/doc/_static/logo-negativ-dev.svg
new file mode 100644
index 00000000..5bd4b771
--- /dev/null
+++ b/doc/_static/logo-negativ-dev.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ width="160.080002pt"
+ height="59.039997pt"
+ viewBox="0 0 160.080002 59.039997"
+ version="1.1"
+ id="svg13"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs5">
+ <clipPath
+ id="clip-0">
+ <path
+ clip-rule="nonzero"
+ d="M 4.507813 0 L 154.742188 0 L 154.742188 40.5625 L 4.507813 40.5625 Z M 4.507813 0 "
+ id="path2" />
+ </clipPath>
+ </defs>
+ <g
+ clip-path="url(#clip-0)"
+ id="g9">
+ <path
+ fill-rule="nonzero"
+ fill="#ffffff"
+ fill-opacity="1"
+ d="m 44.21875,20.308594 c 0,6.058594 -2.679687,11.464844 -6.933594,15.121094 0.25,-1.226563 0.375,-2.476563 0.375,-3.78125 0,-3.957032 -1.179687,-7.636719 -3.179687,-10.742188 -0.804688,1.101563 -1.703125,2.128906 -2.679688,3.03125 1.277344,2.277344 2.003907,4.90625 2.003907,7.710938 0,1.128906 -0.128907,2.230468 -0.351563,3.304687 -0.02734,0.125 -0.05078,0.226563 -0.07422,0.351563 -0.02734,0.101562 -0.05078,0.226562 -0.07813,0.351562 -0.125,-0.02734 -0.222656,-0.05078 -0.347656,-0.101562 -0.101562,-0.02344 -0.226562,-0.07422 -0.328125,-0.09766 -3.65625,-1.203125 -6.734375,-3.683593 -8.710937,-6.914062 -0.05078,-0.09766 -0.125,-0.199219 -0.175782,-0.324219 -0.07813,-0.101562 -0.125,-0.199219 -0.175781,-0.300781 -0.625,-1.125 -1.101562,-2.351563 -1.429687,-3.605469 -0.02344,-0.125 -0.04687,-0.226562 -0.07422,-0.351562 -0.02344,-0.09766 -0.05078,-0.222657 -0.07422,-0.347657 -0.226562,-1.078125 -0.351562,-2.179687 -0.351562,-3.304687 0,-1.128906 0.125,-2.230469 0.351562,-3.308594 -1.226562,-0.347656 -2.503906,-0.523437 -3.832031,-0.550781 -0.25,1.253906 -0.375,2.53125 -0.375,3.859375 0,1.324219 0.125,2.601562 0.375,3.855469 0.02734,0.125 0.05078,0.222656 0.07422,0.347656 0.02734,0.125 0.05078,0.253906 0.07813,0.351562 0.300781,1.328125 0.75,2.578125 1.324218,3.804688 0.05078,0.101562 0.101563,0.226562 0.152344,0.328125 0.05078,0.125 0.101563,0.222656 0.175781,0.351562 2.328125,4.53125 6.359375,8.035157 11.242188,9.714844 -2.152344,0.800781 -4.484375,1.226563 -6.910156,1.226563 -9.917969,0 -18.15625,-7.210938 -19.707032,-16.703125 0.074219,0.07422 0.175782,0.152343 0.277344,0.226562 3.480469,3.054688 8.0625,4.933594 13.042969,4.933594 0.324219,0 0.652344,0 0.976562,-0.02734 -0.550781,-1.226562 -1,-2.503906 -1.300781,-3.855469 -3.957031,-0.07422 -7.585937,-1.601562 -10.316406,-4.082031 -0.101563,-0.07422 -0.175781,-0.148437 -0.25,-0.25 -0.074219,-0.07422 -0.175781,-0.175781 -0.25,-0.25 0.074219,-0.07422 0.175781,-0.175781 0.25,-0.25 0.074219,-0.07422 0.175781,-0.175781 0.25,-0.25 2.753906,-2.480469 6.359375,-4.007812 10.316406,-4.082031 0.09766,0 0.199219,0 0.300781,0 h 0.05078 c 0.125,0 0.25,0 0.375,0 1.324218,0.02344 2.601562,0.226562 3.855468,0.578125 0.101563,0.02344 0.226563,0.07422 0.324219,0.09766 0.125,0.02734 0.226563,0.07422 0.328125,0.101563 2.125,0.699218 4.078125,1.828125 5.707031,3.304687 0.925782,-0.902344 1.726563,-1.929687 2.402344,-3.03125 -1.925781,-1.703125 -4.179687,-3.027344 -6.683594,-3.855469 -0.101562,-0.05078 -0.226562,-0.07422 -0.324218,-0.09766 -0.125,-0.05078 -0.226563,-0.07813 -0.351563,-0.101562 -1.277344,-0.375 -2.578125,-0.652344 -3.957031,-0.75 -0.125,-0.02734 -0.25,-0.02734 -0.375,-0.02734 -0.125,0 -0.25,-0.02344 -0.375,-0.02344 -0.328125,-0.02734 -0.652344,-0.02734 -0.976563,-0.02734 -4.984375,0 -9.566406,1.855468 -13.046875,4.910156 C 4.730469,16.851563 4.65625,16.925781 4.558594,17 6.109375,7.535156 14.324219,0.324219 24.238281,0.324219 c 2.429688,0 4.757813,0.425781 6.910157,1.226562 -4.855469,1.652344 -8.886719,5.183594 -11.242188,9.71875 1.378906,0.148438 2.703125,0.398438 3.980469,0.800782 1.953125,-3.230469 5.058594,-5.734375 8.714844,-6.914063 0.09766,-0.023437 0.226562,-0.074219 0.324218,-0.097656 0.125,-0.027344 0.226563,-0.074219 0.351563,-0.101563 0.02344,0.101563 0.05078,0.226563 0.07422,0.351563 0.02734,0.125 0.05078,0.226562 0.07422,0.351562 0.226563,1.074219 0.351563,2.175782 0.351563,3.304688 0,2.777344 -0.726563,5.40625 -1.976563,7.6875 -0.05078,0.09766 -0.125,0.199219 -0.175781,0.300781 -0.05078,0.09766 -0.125,0.199219 -0.175781,0.300781 -0.675781,1.101563 -1.503906,2.125 -2.429688,3.027344 -0.07422,0.07422 -0.175781,0.175781 -0.25,0.25 -0.07422,0.07422 -0.175781,0.175781 -0.25,0.25 -1.652343,1.480469 -3.605468,2.605469 -5.734375,3.304688 0.324219,1.277343 0.828125,2.480468 1.453125,3.605468 2.476563,-0.847656 4.730469,-2.175781 6.683594,-3.878906 0.101563,-0.07422 0.175781,-0.152344 0.277344,-0.25 0.101562,-0.07422 0.175781,-0.152344 0.25,-0.25 0.953125,-0.902344 1.851562,-1.902344 2.605469,-3.003906 0.07422,-0.101563 0.148437,-0.203125 0.222656,-0.300781 0.07813,-0.101563 0.152344,-0.203125 0.203125,-0.328125 2,-3.105469 3.179687,-6.785157 3.179687,-10.742188 0,-1.300781 -0.125,-2.550781 -0.375,-3.78125 4.253907,3.683594 6.933594,9.089844 6.933594,15.152344 M 65.753906,19.304688 59.09375,11.441406 65.378906,4.730469 H 60.96875 l -5.230469,5.910156 H 55.6875 V 4.707031 H 52.230469 V 19.304688 H 55.6875 V 12.59375 h 0.05078 l 5.433594,6.710938 z m 15.023438,0 V 4.707031 h -3.429688 l 0.07422,9.515625 h -0.05078 L 71.511719,4.707031 h -4.03125 v 14.597657 h 3.429687 l -0.07422,-9.539063 h 0.05078 l 5.882812,9.539063 z m 17.976562,-7.359375 c 0,-4.683594 -3.378906,-7.636719 -7.960937,-7.636719 -4.558594,0 -7.9375,2.953125 -7.9375,7.636719 0,4.605468 3.378906,7.761718 7.9375,7.761718 4.582031,0 7.960937,-3.132812 7.960937,-7.761718 z m -3.78125,0 c 0,2.628906 -1.726562,4.53125 -4.179687,4.53125 -2.453125,0 -4.15625,-1.902344 -4.15625,-4.53125 0,-2.554688 1.703125,-4.457032 4.15625,-4.457032 2.476562,0 4.179687,1.902344 4.179687,4.457032 z M 111,7.710938 V 4.707031 H 99.230469 v 3.003907 h 4.132811 v 11.59375 h 3.52735 V 7.710938 Z M 64.148438,35.882813 60.34375,29.621094 c 1.878906,-0.574219 3.03125,-1.976563 3.03125,-3.929688 0,-3.332031 -2.78125,-4.40625 -5.585937,-4.40625 H 52.230469 V 35.882813 H 55.6875 v -5.785157 h 1.203125 l 3.152344,5.785157 z M 59.894531,25.765625 c 0,1.476563 -1.429687,1.777344 -2.554687,1.777344 h -1.679688 v -3.40625 h 1.878907 c 1.050781,0 2.355468,0.277344 2.355468,1.628906 z M 75.820313,35.882813 V 32.875 H 69.03125 v -3.027344 h 6.0625 v -2.832031 h -6.0625 v -2.753906 h 6.410156 v -2.976563 h -9.8125 V 35.882813 Z M 88.0625,22.710938 c -1.277344,-1.175782 -3.128906,-1.804688 -4.78125,-1.804688 -2.730469,0 -5.660156,1.355469 -5.660156,4.582031 0,2.628907 1.878906,3.582032 3.730469,4.183594 1.929687,0.625 3.03125,0.976563 3.03125,2.078125 0,1.175781 -0.953125,1.578125 -2.027344,1.578125 -1.152344,0 -2.457031,-0.652344 -3.15625,-1.554687 l -2.304688,2.355468 c 1.277344,1.351563 3.382813,2.101563 5.460938,2.101563 2.878906,0 5.582031,-1.5 5.582031,-4.855469 0,-2.90625 -2.554687,-3.757812 -4.53125,-4.382812 -1.378906,-0.425782 -2.253906,-0.75 -2.253906,-1.703125 0,-1.152344 1.125,-1.453125 2.050781,-1.453125 0.902344,0 2.003906,0.503906 2.605469,1.253906 z m 16.97656,5.808593 c 0,-4.683593 -3.3789,-7.636718 -7.960935,-7.636718 -4.558594,0 -7.9375,2.953125 -7.9375,7.636718 0,4.605469 3.378906,7.761719 7.9375,7.761719 4.582035,0 7.960935,-3.128906 7.960935,-7.761719 z m -3.7539,0 c 0,2.628907 -1.730472,4.53125 -4.183597,4.53125 -2.453125,0 -4.15625,-1.902343 -4.15625,-4.53125 0,-2.554687 1.703125,-4.457031 4.15625,-4.457031 2.453125,0 4.183597,1.902344 4.183597,4.457031 z m 15.04687,7.363282 v -3.082032 h -5.66015 V 21.285156 h -3.55469 V 35.882813 Z M 129.25,21.285156 h -3.90234 L 121.99219,31.625 h -0.0781 l -3.3789,-10.339844 h -3.95703 l 5.53515,14.597657 h 3.53125 z m 11.29297,14.597657 V 32.875 h -6.78516 v -3.027344 h 6.0625 v -2.832031 h -6.0625 v -2.753906 h 6.41016 v -2.976563 h -9.8125 v 14.597657 z m 14.19922,0 -3.80469,-6.261719 c 1.875,-0.574219 3.02734,-1.976563 3.02734,-3.929688 0,-3.332031 -2.77734,-4.40625 -5.58203,-4.40625 h -5.55859 v 14.597657 h 3.45312 v -5.785157 h 1.20313 l 3.15625,5.785157 z m -4.25782,-10.117188 c 0,1.476563 -1.42578,1.777344 -2.55468,1.777344 h -1.67578 v -3.40625 h 1.8789 c 1.05078,0 2.35156,0.277344 2.35156,1.628906 z m 0,0"
+ id="path7" />
+ </g>
+ <path
+ fill-rule="nonzero"
+ fill="rgb(100%, 100%, 100%)"
+ fill-opacity="1"
+ d="M 12.261719 51.179688 C 12.261719 51.746094 12.171875 52.265625 11.992188 52.734375 C 11.808594 53.203125 11.554688 53.605469 11.222656 53.941406 C 10.890625 54.277344 10.492188 54.539063 10.027344 54.722656 C 9.566406 54.902344 9.054688 54.996094 8.496094 54.996094 L 5.601563 54.996094 L 5.601563 47.355469 L 8.496094 47.355469 C 9.054688 47.355469 9.566406 47.449219 10.027344 47.628906 C 10.492188 47.8125 10.890625 48.074219 11.222656 48.414063 C 11.554688 48.75 11.8125 49.152344 11.992188 49.625 C 12.171875 50.09375 12.261719 50.609375 12.261719 51.179688 Z M 11.945313 51.179688 C 11.945313 50.648438 11.859375 50.171875 11.695313 49.738281 C 11.527344 49.308594 11.296875 48.941406 10.992188 48.636719 C 10.691406 48.332031 10.332031 48.09375 9.910156 47.925781 C 9.484375 47.757813 9.015625 47.675781 8.496094 47.675781 L 5.757813 47.675781 L 5.757813 47.515625 L 5.917969 47.515625 L 5.917969 54.835938 L 5.757813 54.835938 L 5.757813 54.675781 L 8.496094 54.675781 C 9.015625 54.675781 9.484375 54.59375 9.910156 54.425781 C 10.332031 54.257813 10.691406 54.019531 10.996094 53.71875 C 11.296875 53.414063 11.527344 53.046875 11.695313 52.617188 C 11.859375 52.1875 11.945313 51.707031 11.945313 51.179688 Z M 10.925781 51.179688 C 10.925781 50.746094 10.871094 50.363281 10.753906 50.023438 C 10.636719 49.691406 10.472656 49.410156 10.265625 49.183594 C 10.054688 48.953125 9.804688 48.78125 9.503906 48.660156 C 9.203125 48.539063 8.867188 48.476563 8.496094 48.476563 L 6.753906 48.476563 L 6.753906 48.316406 L 6.914063 48.316406 L 6.914063 54.035156 L 6.753906 54.035156 L 6.753906 53.875 L 8.496094 53.875 C 8.867188 53.875 9.203125 53.8125 9.503906 53.691406 C 9.804688 53.570313 10.054688 53.398438 10.265625 53.171875 C 10.476563 52.945313 10.636719 52.664063 10.753906 52.332031 C 10.871094 51.996094 10.925781 51.609375 10.925781 51.179688 Z M 11.246094 51.179688 C 11.246094 51.644531 11.183594 52.066406 11.054688 52.4375 C 10.925781 52.8125 10.738281 53.128906 10.5 53.386719 C 10.257813 53.648438 9.96875 53.847656 9.625 53.988281 C 9.285156 54.125 8.910156 54.191406 8.496094 54.191406 L 6.597656 54.191406 L 6.597656 48.160156 L 8.496094 48.160156 C 8.910156 48.160156 9.285156 48.226563 9.625 48.363281 C 9.96875 48.503906 10.257813 48.703125 10.5 48.964844 C 10.738281 49.226563 10.925781 49.546875 11.054688 49.921875 C 11.183594 50.292969 11.246094 50.710938 11.246094 51.179688 Z M 12.105469 51.179688 C 12.105469 51.726563 12.015625 52.226563 11.84375 52.675781 C 11.667969 53.125 11.425781 53.507813 11.109375 53.828125 C 10.792969 54.148438 10.410156 54.398438 9.96875 54.574219 C 9.527344 54.746094 9.035156 54.835938 8.496094 54.835938 L 5.757813 54.835938 L 5.757813 47.515625 L 8.496094 47.515625 C 9.035156 47.515625 9.527344 47.605469 9.96875 47.777344 C 10.410156 47.953125 10.792969 48.203125 11.109375 48.523438 C 11.425781 48.847656 11.667969 49.230469 11.84375 49.683594 C 12.015625 50.132813 12.105469 50.628906 12.105469 51.179688 Z M 11.085938 51.179688 C 11.085938 50.730469 11.027344 50.328125 10.902344 49.972656 C 10.78125 49.617188 10.605469 49.320313 10.382813 49.074219 C 10.15625 48.828125 9.886719 48.640625 9.566406 48.511719 C 9.246094 48.382813 8.890625 48.316406 8.496094 48.316406 L 6.753906 48.316406 L 6.753906 54.035156 L 8.496094 54.035156 C 8.890625 54.035156 9.246094 53.96875 9.566406 53.839844 C 9.886719 53.710938 10.15625 53.523438 10.382813 53.28125 C 10.605469 53.035156 10.78125 52.738281 10.902344 52.382813 C 11.027344 52.03125 11.085938 51.628906 11.085938 51.179688 Z M 18.121094 47.515625 L 18.121094 48.484375 L 14.449219 48.484375 L 14.449219 48.324219 L 14.609375 48.324219 L 14.609375 50.753906 L 14.449219 50.753906 L 14.449219 50.59375 L 17.453125 50.59375 L 17.453125 51.691406 L 14.449219 51.691406 L 14.449219 51.53125 L 14.609375 51.53125 L 14.609375 54.027344 L 14.449219 54.027344 L 14.449219 53.867188 L 18.121094 53.867188 L 18.121094 54.996094 L 13.292969 54.996094 L 13.292969 47.355469 L 18.121094 47.355469 Z M 17.804688 47.515625 L 17.960938 47.515625 L 17.960938 47.675781 L 13.453125 47.675781 L 13.453125 47.515625 L 13.613281 47.515625 L 13.613281 54.835938 L 13.453125 54.835938 L 13.453125 54.675781 L 17.960938 54.675781 L 17.960938 54.835938 L 17.804688 54.835938 L 17.804688 54.027344 L 17.960938 54.027344 L 17.960938 54.1875 L 14.289063 54.1875 L 14.289063 51.371094 L 17.292969 51.371094 L 17.292969 51.53125 L 17.132813 51.53125 L 17.132813 50.753906 L 17.292969 50.753906 L 17.292969 50.914063 L 14.289063 50.914063 L 14.289063 48.164063 L 17.960938 48.164063 L 17.960938 48.324219 L 17.804688 48.324219 Z M 17.960938 47.515625 L 17.960938 48.324219 L 14.449219 48.324219 L 14.449219 50.753906 L 17.292969 50.753906 L 17.292969 51.53125 L 14.449219 51.53125 L 14.449219 54.027344 L 17.960938 54.027344 L 17.960938 54.835938 L 13.453125 54.835938 L 13.453125 47.515625 Z M 18.539063 47.355469 L 19.332031 47.355469 C 19.457031 47.355469 19.5625 47.390625 19.648438 47.457031 C 19.722656 47.519531 19.78125 47.597656 19.816406 47.691406 L 21.886719 52.855469 C 21.933594 52.976563 21.980469 53.105469 22.019531 53.25 C 22.0625 53.386719 22.097656 53.53125 22.136719 53.675781 L 21.984375 53.71875 L 21.828125 53.683594 C 21.859375 53.535156 21.890625 53.390625 21.929688 53.253906 C 21.964844 53.109375 22.007813 52.976563 22.058594 52.855469 L 24.117188 47.691406 C 24.152344 47.609375 24.207031 47.535156 24.285156 47.46875 C 24.371094 47.394531 24.480469 47.355469 24.601563 47.355469 L 25.636719 47.355469 L 22.523438 54.996094 L 21.414063 54.996094 L 18.300781 47.355469 Z M 18.539063 47.675781 L 18.539063 47.515625 L 18.6875 47.457031 L 21.671875 54.777344 L 21.523438 54.835938 L 21.523438 54.675781 L 22.417969 54.675781 L 22.417969 54.835938 L 22.269531 54.777344 L 25.253906 47.457031 L 25.398438 47.515625 L 25.398438 47.675781 L 24.601563 47.675781 C 24.558594 47.675781 24.519531 47.6875 24.492188 47.710938 C 24.453125 47.746094 24.429688 47.777344 24.414063 47.808594 L 22.355469 52.976563 C 22.308594 53.085938 22.269531 53.203125 22.238281 53.332031 C 22.203125 53.46875 22.167969 53.605469 22.140625 53.75 L 21.828125 53.757813 C 21.789063 53.613281 21.753906 53.472656 21.714844 53.335938 C 21.675781 53.207031 21.636719 53.085938 21.589844 52.972656 L 19.519531 47.808594 C 19.503906 47.769531 19.476563 47.734375 19.445313 47.707031 C 19.421875 47.6875 19.382813 47.675781 19.332031 47.675781 Z M 18.539063 47.515625 L 19.332031 47.515625 C 19.421875 47.515625 19.492188 47.539063 19.546875 47.582031 C 19.601563 47.625 19.640625 47.683594 19.667969 47.75 L 21.738281 52.914063 C 21.785156 53.03125 21.828125 53.15625 21.867188 53.292969 C 21.90625 53.429688 21.945313 53.570313 21.984375 53.71875 C 22.011719 53.570313 22.046875 53.429688 22.082031 53.292969 C 22.117188 53.15625 22.160156 53.03125 22.207031 52.914063 L 24.265625 47.75 C 24.289063 47.691406 24.332031 47.640625 24.386719 47.589844 C 24.445313 47.539063 24.519531 47.515625 24.601563 47.515625 L 25.398438 47.515625 L 22.417969 54.835938 L 21.523438 54.835938 Z M 31.003906 47.515625 L 31.003906 48.484375 L 27.332031 48.484375 L 27.332031 48.324219 L 27.492188 48.324219 L 27.492188 50.753906 L 27.332031 50.753906 L 27.332031 50.59375 L 30.335938 50.59375 L 30.335938 51.691406 L 27.332031 51.691406 L 27.332031 51.53125 L 27.492188 51.53125 L 27.492188 54.027344 L 27.332031 54.027344 L 27.332031 53.867188 L 31.003906 53.867188 L 31.003906 54.996094 L 26.175781 54.996094 L 26.175781 47.355469 L 31.003906 47.355469 Z M 30.683594 47.515625 L 30.84375 47.515625 L 30.84375 47.675781 L 26.335938 47.675781 L 26.335938 47.515625 L 26.496094 47.515625 L 26.496094 54.835938 L 26.335938 54.835938 L 26.335938 54.675781 L 30.84375 54.675781 L 30.84375 54.835938 L 30.683594 54.835938 L 30.683594 54.027344 L 30.84375 54.027344 L 30.84375 54.1875 L 27.171875 54.1875 L 27.171875 51.371094 L 30.175781 51.371094 L 30.175781 51.53125 L 30.015625 51.53125 L 30.015625 50.753906 L 30.175781 50.753906 L 30.175781 50.914063 L 27.171875 50.914063 L 27.171875 48.164063 L 30.84375 48.164063 L 30.84375 48.324219 L 30.683594 48.324219 Z M 30.84375 47.515625 L 30.84375 48.324219 L 27.332031 48.324219 L 27.332031 50.753906 L 30.175781 50.753906 L 30.175781 51.53125 L 27.332031 51.53125 L 27.332031 54.027344 L 30.84375 54.027344 L 30.84375 54.835938 L 26.335938 54.835938 L 26.335938 47.515625 Z M 33.261719 53.84375 L 36.585938 53.84375 L 36.585938 54.996094 L 32.109375 54.996094 L 32.109375 47.355469 L 33.421875 47.355469 L 33.421875 54.003906 L 33.261719 54.003906 Z M 33.101563 54.164063 L 33.101563 47.515625 L 33.261719 47.515625 L 33.261719 47.675781 L 32.269531 47.675781 L 32.269531 47.515625 L 32.429688 47.515625 L 32.429688 54.835938 L 32.269531 54.835938 L 32.269531 54.675781 L 36.429688 54.675781 L 36.429688 54.835938 L 36.269531 54.835938 L 36.269531 54.003906 L 36.429688 54.003906 L 36.429688 54.164063 Z M 33.261719 54.003906 L 36.429688 54.003906 L 36.429688 54.835938 L 32.269531 54.835938 L 32.269531 47.515625 L 33.261719 47.515625 Z M 44.070313 51.179688 C 44.070313 51.746094 43.980469 52.269531 43.800781 52.746094 C 43.617188 53.222656 43.363281 53.636719 43.03125 53.980469 C 42.699219 54.328125 42.300781 54.597656 41.835938 54.785156 C 41.371094 54.976563 40.859375 55.070313 40.300781 55.070313 C 39.742188 55.070313 39.230469 54.976563 38.769531 54.785156 C 38.304688 54.597656 37.90625 54.328125 37.574219 53.980469 C 37.242188 53.636719 36.984375 53.222656 36.804688 52.746094 C 36.625 52.269531 36.535156 51.746094 36.535156 51.179688 C 36.535156 50.609375 36.625 50.089844 36.804688 49.613281 C 36.984375 49.132813 37.242188 48.722656 37.574219 48.375 C 37.90625 48.027344 38.304688 47.753906 38.765625 47.5625 C 39.230469 47.371094 39.742188 47.273438 40.300781 47.273438 C 40.859375 47.273438 41.371094 47.371094 41.835938 47.5625 C 42.300781 47.753906 42.699219 48.027344 43.03125 48.375 C 43.363281 48.722656 43.617188 49.132813 43.800781 49.613281 C 43.980469 50.089844 44.070313 50.609375 44.070313 51.179688 Z M 43.75 51.179688 C 43.75 50.648438 43.667969 50.164063 43.5 49.726563 C 43.335938 49.289063 43.101563 48.910156 42.800781 48.59375 C 42.5 48.277344 42.136719 48.03125 41.710938 47.859375 C 41.289063 47.683594 40.816406 47.59375 40.300781 47.59375 C 39.78125 47.59375 39.3125 47.683594 38.890625 47.859375 C 38.46875 48.03125 38.105469 48.277344 37.804688 48.59375 C 37.503906 48.910156 37.269531 49.289063 37.101563 49.726563 C 36.9375 50.164063 36.851563 50.648438 36.851563 51.179688 C 36.851563 51.707031 36.9375 52.191406 37.101563 52.632813 C 37.269531 53.070313 37.503906 53.445313 37.804688 53.761719 C 38.105469 54.074219 38.46875 54.316406 38.890625 54.492188 C 39.3125 54.664063 39.78125 54.753906 40.300781 54.753906 C 40.816406 54.753906 41.289063 54.664063 41.714844 54.492188 C 42.136719 54.316406 42.5 54.074219 42.800781 53.761719 C 43.101563 53.445313 43.335938 53.070313 43.5 52.632813 C 43.667969 52.191406 43.75 51.707031 43.75 51.179688 Z M 42.734375 51.179688 C 42.734375 50.746094 42.675781 50.359375 42.558594 50.019531 C 42.445313 49.683594 42.28125 49.398438 42.070313 49.167969 C 41.863281 48.9375 41.609375 48.761719 41.3125 48.640625 C 41.011719 48.515625 40.671875 48.453125 40.300781 48.453125 C 39.929688 48.453125 39.59375 48.515625 39.292969 48.640625 C 38.996094 48.761719 38.742188 48.941406 38.53125 49.167969 C 38.320313 49.398438 38.15625 49.683594 38.039063 50.019531 C 37.921875 50.359375 37.863281 50.746094 37.863281 51.179688 C 37.863281 51.609375 37.921875 51.996094 38.039063 52.335938 C 38.15625 52.667969 38.320313 52.953125 38.53125 53.183594 C 38.742188 53.410156 38.996094 53.585938 39.292969 53.710938 C 39.59375 53.832031 39.929688 53.894531 40.300781 53.894531 C 40.675781 53.894531 41.011719 53.832031 41.3125 53.710938 C 41.609375 53.585938 41.863281 53.414063 42.070313 53.183594 C 42.28125 52.953125 42.445313 52.667969 42.558594 52.335938 C 42.675781 51.996094 42.734375 51.609375 42.734375 51.179688 Z M 43.054688 51.179688 C 43.054688 51.644531 42.988281 52.066406 42.863281 52.4375 C 42.730469 52.816406 42.546875 53.136719 42.308594 53.398438 C 42.066406 53.664063 41.773438 53.863281 41.433594 54.003906 C 41.09375 54.144531 40.714844 54.214844 40.300781 54.214844 C 39.886719 54.214844 39.511719 54.144531 39.171875 54.003906 C 38.828125 53.863281 38.539063 53.664063 38.292969 53.398438 C 38.054688 53.136719 37.867188 52.816406 37.738281 52.4375 C 37.609375 52.066406 37.546875 51.644531 37.546875 51.179688 C 37.546875 50.710938 37.609375 50.289063 37.738281 49.914063 C 37.867188 49.539063 38.054688 49.214844 38.292969 48.953125 C 38.539063 48.6875 38.828125 48.484375 39.171875 48.34375 C 39.511719 48.203125 39.886719 48.132813 40.300781 48.132813 C 40.714844 48.132813 41.09375 48.203125 41.433594 48.34375 C 41.777344 48.484375 42.066406 48.6875 42.308594 48.953125 C 42.546875 49.21875 42.730469 49.539063 42.863281 49.914063 C 42.988281 50.289063 43.054688 50.710938 43.054688 51.179688 Z M 43.910156 51.179688 C 43.910156 51.726563 43.824219 52.230469 43.652344 52.6875 C 43.476563 53.144531 43.230469 53.539063 42.914063 53.871094 C 42.597656 54.199219 42.21875 54.457031 41.773438 54.640625 C 41.328125 54.820313 40.835938 54.914063 40.300781 54.914063 C 39.761719 54.914063 39.269531 54.820313 38.828125 54.640625 C 38.386719 54.457031 38.007813 54.199219 37.691406 53.871094 C 37.371094 53.539063 37.128906 53.144531 36.953125 52.6875 C 36.78125 52.230469 36.695313 51.726563 36.695313 51.179688 C 36.695313 50.628906 36.78125 50.128906 36.953125 49.667969 C 37.128906 49.210938 37.371094 48.816406 37.691406 48.484375 C 38.007813 48.152344 38.386719 47.894531 38.828125 47.710938 C 39.269531 47.527344 39.761719 47.433594 40.300781 47.433594 C 40.835938 47.433594 41.328125 47.527344 41.773438 47.710938 C 42.21875 47.894531 42.597656 48.152344 42.914063 48.484375 C 43.230469 48.816406 43.476563 49.210938 43.652344 49.667969 C 43.824219 50.128906 43.910156 50.628906 43.910156 51.179688 Z M 42.894531 51.179688 C 42.894531 50.730469 42.832031 50.324219 42.710938 49.96875 C 42.589844 49.609375 42.414063 49.308594 42.191406 49.0625 C 41.964844 48.8125 41.691406 48.625 41.371094 48.492188 C 41.050781 48.359375 40.695313 48.292969 40.300781 48.292969 C 39.910156 48.292969 39.550781 48.359375 39.230469 48.492188 C 38.914063 48.625 38.640625 48.8125 38.414063 49.0625 C 38.1875 49.308594 38.011719 49.609375 37.890625 49.96875 C 37.765625 50.324219 37.703125 50.730469 37.703125 51.179688 C 37.703125 51.628906 37.765625 52.03125 37.890625 52.386719 C 38.011719 52.742188 38.1875 53.042969 38.414063 53.289063 C 38.640625 53.539063 38.914063 53.726563 39.230469 53.859375 C 39.550781 53.988281 39.910156 54.054688 40.300781 54.054688 C 40.695313 54.054688 41.050781 53.988281 41.371094 53.859375 C 41.691406 53.726563 41.964844 53.539063 42.191406 53.289063 C 42.414063 53.042969 42.589844 52.742188 42.710938 52.386719 C 42.832031 52.03125 42.894531 51.628906 42.894531 51.179688 Z M 46.511719 52.097656 L 46.511719 54.996094 L 45.207031 54.996094 L 45.207031 47.355469 L 47.527344 47.355469 C 48.007813 47.355469 48.425781 47.414063 48.785156 47.523438 C 49.148438 47.636719 49.449219 47.800781 49.691406 48.015625 C 49.933594 48.230469 50.117188 48.488281 50.238281 48.789063 C 50.355469 49.089844 50.414063 49.417969 50.414063 49.785156 C 50.414063 50.144531 50.351563 50.476563 50.222656 50.78125 C 50.09375 51.085938 49.90625 51.347656 49.660156 51.570313 C 49.414063 51.789063 49.109375 51.957031 48.746094 52.078125 C 48.390625 52.199219 47.984375 52.257813 47.527344 52.257813 L 46.351563 52.257813 L 46.351563 52.097656 Z M 46.191406 51.9375 L 47.527344 51.9375 C 47.949219 51.9375 48.324219 51.882813 48.648438 51.773438 C 48.964844 51.667969 49.234375 51.519531 49.445313 51.328125 C 49.660156 51.140625 49.820313 50.917969 49.929688 50.65625 C 50.039063 50.394531 50.09375 50.101563 50.09375 49.785156 C 50.09375 49.460938 50.042969 49.167969 49.941406 48.90625 C 49.839844 48.652344 49.6875 48.433594 49.480469 48.253906 C 49.273438 48.070313 49.007813 47.929688 48.6875 47.828125 C 48.359375 47.726563 47.972656 47.675781 47.527344 47.675781 L 45.367188 47.675781 L 45.367188 47.515625 L 45.527344 47.515625 L 45.527344 54.835938 L 45.367188 54.835938 L 45.367188 54.675781 L 46.351563 54.675781 L 46.351563 54.835938 L 46.191406 54.835938 Z M 46.351563 51.152344 L 47.527344 51.152344 C 47.792969 51.152344 48.023438 51.117188 48.222656 51.046875 C 48.417969 50.980469 48.582031 50.886719 48.710938 50.765625 C 48.839844 50.648438 48.9375 50.507813 49.003906 50.34375 C 49.070313 50.175781 49.105469 49.988281 49.105469 49.785156 C 49.105469 49.363281 48.976563 49.039063 48.726563 48.808594 C 48.46875 48.574219 48.070313 48.457031 47.527344 48.457031 L 46.351563 48.457031 L 46.351563 48.296875 L 46.511719 48.296875 L 46.511719 51.3125 L 46.351563 51.3125 Z M 46.191406 51.472656 L 46.191406 48.136719 L 47.527344 48.136719 C 48.152344 48.136719 48.621094 48.28125 48.941406 48.574219 C 49.261719 48.867188 49.425781 49.269531 49.425781 49.785156 C 49.425781 50.027344 49.382813 50.253906 49.300781 50.460938 C 49.214844 50.671875 49.09375 50.851563 48.929688 51.003906 C 48.765625 51.152344 48.566406 51.265625 48.328125 51.351563 C 48.09375 51.429688 47.828125 51.472656 47.527344 51.472656 Z M 46.351563 52.097656 L 46.351563 54.835938 L 45.367188 54.835938 L 45.367188 47.515625 L 47.527344 47.515625 C 47.992188 47.515625 48.394531 47.570313 48.734375 47.675781 C 49.078125 47.785156 49.363281 47.9375 49.585938 48.132813 C 49.8125 48.332031 49.980469 48.570313 50.089844 48.847656 C 50.199219 49.128906 50.253906 49.441406 50.253906 49.785156 C 50.253906 50.125 50.195313 50.4375 50.078125 50.71875 C 49.957031 51 49.78125 51.246094 49.554688 51.449219 C 49.324219 51.652344 49.039063 51.8125 48.699219 51.925781 C 48.355469 52.039063 47.96875 52.097656 47.527344 52.097656 Z M 46.351563 51.3125 L 47.527344 51.3125 C 47.808594 51.3125 48.058594 51.273438 48.277344 51.199219 C 48.492188 51.125 48.671875 51.019531 48.820313 50.882813 C 48.964844 50.75 49.078125 50.589844 49.152344 50.402344 C 49.226563 50.214844 49.265625 50.007813 49.265625 49.785156 C 49.265625 49.316406 49.121094 48.953125 48.832031 48.691406 C 48.546875 48.429688 48.109375 48.296875 47.527344 48.296875 L 46.351563 48.296875 Z M 56.175781 47.515625 L 56.175781 48.484375 L 52.503906 48.484375 L 52.503906 48.324219 L 52.664063 48.324219 L 52.664063 50.753906 L 52.503906 50.753906 L 52.503906 50.59375 L 55.507813 50.59375 L 55.507813 51.691406 L 52.503906 51.691406 L 52.503906 51.53125 L 52.664063 51.53125 L 52.664063 54.027344 L 52.503906 54.027344 L 52.503906 53.867188 L 56.175781 53.867188 L 56.175781 54.996094 L 51.347656 54.996094 L 51.347656 47.355469 L 56.175781 47.355469 Z M 55.859375 47.515625 L 56.015625 47.515625 L 56.015625 47.675781 L 51.507813 47.675781 L 51.507813 47.515625 L 51.667969 47.515625 L 51.667969 54.835938 L 51.507813 54.835938 L 51.507813 54.675781 L 56.015625 54.675781 L 56.015625 54.835938 L 55.859375 54.835938 L 55.859375 54.027344 L 56.015625 54.027344 L 56.015625 54.1875 L 52.34375 54.1875 L 52.34375 51.371094 L 55.347656 51.371094 L 55.347656 51.53125 L 55.1875 51.53125 L 55.1875 50.753906 L 55.347656 50.753906 L 55.347656 50.914063 L 52.34375 50.914063 L 52.34375 48.164063 L 56.015625 48.164063 L 56.015625 48.324219 L 55.859375 48.324219 Z M 56.015625 47.515625 L 56.015625 48.324219 L 52.503906 48.324219 L 52.503906 50.753906 L 55.347656 50.753906 L 55.347656 51.53125 L 52.503906 51.53125 L 52.503906 54.027344 L 56.015625 54.027344 L 56.015625 54.835938 L 51.507813 54.835938 L 51.507813 47.515625 Z M 58.691406 51.78125 L 58.691406 54.996094 L 57.382813 54.996094 L 57.382813 47.355469 L 59.613281 47.355469 C 60.089844 47.355469 60.503906 47.40625 60.855469 47.503906 C 61.214844 47.601563 61.511719 47.746094 61.75 47.9375 C 61.988281 48.132813 62.167969 48.367188 62.285156 48.640625 C 62.398438 48.910156 62.453125 49.210938 62.453125 49.542969 C 62.453125 49.820313 62.410156 50.082031 62.320313 50.324219 C 62.234375 50.566406 62.105469 50.785156 61.9375 50.980469 C 61.769531 51.171875 61.566406 51.335938 61.328125 51.46875 C 61.09375 51.605469 60.824219 51.707031 60.527344 51.773438 L 60.492188 51.617188 L 60.570313 51.480469 C 60.714844 51.5625 60.839844 51.683594 60.949219 51.835938 L 60.820313 51.929688 L 60.945313 51.835938 L 63.269531 54.996094 L 62.074219 54.996094 C 61.835938 54.996094 61.65625 54.898438 61.539063 54.710938 L 61.675781 54.625 L 61.546875 54.71875 L 59.648438 52.105469 C 59.605469 52.042969 59.558594 52 59.511719 51.976563 C 59.46875 51.953125 59.390625 51.941406 59.28125 51.941406 L 58.53125 51.941406 L 58.53125 51.78125 Z M 58.371094 51.621094 L 59.28125 51.621094 C 59.445313 51.621094 59.570313 51.644531 59.660156 51.695313 C 59.753906 51.742188 59.832031 51.816406 59.90625 51.917969 L 61.808594 54.539063 L 61.8125 54.542969 C 61.867188 54.632813 61.953125 54.675781 62.074219 54.675781 L 62.953125 54.675781 L 62.953125 54.835938 L 62.824219 54.929688 L 60.6875 52.023438 L 60.6875 52.019531 C 60.605469 51.902344 60.511719 51.816406 60.410156 51.753906 L 60.0625 51.550781 L 60.457031 51.460938 C 60.722656 51.402344 60.960938 51.3125 61.171875 51.191406 C 61.378906 51.074219 61.554688 50.933594 61.695313 50.769531 C 61.839844 50.605469 61.945313 50.421875 62.023438 50.214844 C 62.097656 50.007813 62.136719 49.785156 62.136719 49.542969 C 62.136719 49.253906 62.085938 48.996094 61.988281 48.765625 C 61.894531 48.539063 61.746094 48.347656 61.546875 48.1875 C 61.347656 48.023438 61.085938 47.898438 60.769531 47.808594 C 60.449219 47.71875 60.0625 47.675781 59.613281 47.675781 L 57.542969 47.675781 L 57.542969 47.515625 L 57.703125 47.515625 L 57.703125 54.835938 L 57.542969 54.835938 L 57.542969 54.675781 L 58.53125 54.675781 L 58.53125 54.835938 L 58.371094 54.835938 Z M 58.53125 50.902344 L 59.566406 50.902344 C 59.839844 50.902344 60.078125 50.867188 60.28125 50.804688 C 60.480469 50.742188 60.648438 50.652344 60.777344 50.539063 C 60.90625 50.425781 61.003906 50.292969 61.070313 50.140625 C 61.136719 49.984375 61.167969 49.808594 61.167969 49.617188 C 61.167969 49.230469 61.046875 48.945313 60.800781 48.757813 C 60.542969 48.558594 60.144531 48.457031 59.613281 48.457031 L 58.53125 48.457031 L 58.53125 48.296875 L 58.691406 48.296875 L 58.691406 51.0625 L 58.53125 51.0625 Z M 58.371094 51.21875 L 58.371094 48.136719 L 59.613281 48.136719 C 60.21875 48.136719 60.679688 48.257813 60.996094 48.503906 C 61.324219 48.757813 61.488281 49.128906 61.488281 49.617188 C 61.488281 49.851563 61.449219 50.066406 61.363281 50.265625 C 61.28125 50.464844 61.152344 50.636719 60.988281 50.78125 C 60.820313 50.921875 60.621094 51.03125 60.378906 51.109375 C 60.144531 51.183594 59.875 51.21875 59.566406 51.21875 Z M 58.53125 51.78125 L 58.53125 54.835938 L 57.542969 54.835938 L 57.542969 47.515625 L 59.613281 47.515625 C 60.078125 47.515625 60.476563 47.5625 60.8125 47.65625 C 61.152344 47.75 61.429688 47.886719 61.648438 48.0625 C 61.867188 48.238281 62.03125 48.453125 62.136719 48.703125 C 62.242188 48.953125 62.292969 49.234375 62.292969 49.542969 C 62.292969 49.800781 62.253906 50.042969 62.171875 50.269531 C 62.089844 50.492188 61.972656 50.695313 61.816406 50.875 C 61.664063 51.054688 61.472656 51.207031 61.25 51.332031 C 61.027344 51.457031 60.773438 51.554688 60.492188 51.617188 C 60.613281 51.6875 60.722656 51.792969 60.820313 51.929688 L 62.953125 54.835938 L 62.074219 54.835938 C 61.894531 54.835938 61.761719 54.765625 61.675781 54.625 L 59.777344 52.011719 C 59.71875 51.929688 59.65625 51.871094 59.585938 51.835938 C 59.519531 51.800781 59.417969 51.78125 59.28125 51.78125 Z M 58.53125 51.0625 L 59.566406 51.0625 C 59.855469 51.0625 60.109375 51.027344 60.332031 50.957031 C 60.550781 50.886719 60.734375 50.789063 60.882813 50.660156 C 61.03125 50.53125 61.140625 50.378906 61.21875 50.203125 C 61.292969 50.027344 61.328125 49.828125 61.328125 49.617188 C 61.328125 49.179688 61.183594 48.851563 60.898438 48.628906 C 60.609375 48.40625 60.183594 48.296875 59.613281 48.296875 L 58.53125 48.296875 Z M 72.496094 51.179688 C 72.496094 51.746094 72.40625 52.265625 72.226563 52.734375 C 72.042969 53.203125 71.785156 53.605469 71.453125 53.941406 C 71.121094 54.277344 70.722656 54.539063 70.261719 54.722656 C 69.800781 54.902344 69.289063 54.996094 68.730469 54.996094 L 65.832031 54.996094 L 65.832031 47.355469 L 68.730469 47.355469 C 69.289063 47.355469 69.800781 47.449219 70.261719 47.628906 C 70.722656 47.8125 71.121094 48.074219 71.453125 48.414063 C 71.785156 48.75 72.042969 49.152344 72.226563 49.625 C 72.40625 50.09375 72.496094 50.609375 72.496094 51.179688 Z M 72.175781 51.179688 C 72.175781 50.648438 72.09375 50.171875 71.925781 49.738281 C 71.761719 49.308594 71.527344 48.941406 71.226563 48.636719 C 70.925781 48.332031 70.566406 48.09375 70.144531 47.925781 C 69.71875 47.757813 69.25 47.675781 68.730469 47.675781 L 65.992188 47.675781 L 65.992188 47.515625 L 66.152344 47.515625 L 66.152344 54.835938 L 65.992188 54.835938 L 65.992188 54.675781 L 68.730469 54.675781 C 69.25 54.675781 69.71875 54.59375 70.144531 54.425781 C 70.566406 54.257813 70.925781 54.019531 71.226563 53.71875 C 71.527344 53.414063 71.761719 53.046875 71.925781 52.617188 C 72.09375 52.1875 72.175781 51.707031 72.175781 51.179688 Z M 71.160156 51.179688 C 71.160156 50.746094 71.101563 50.363281 70.984375 50.023438 C 70.871094 49.691406 70.707031 49.410156 70.496094 49.183594 C 70.289063 48.953125 70.035156 48.78125 69.738281 48.660156 C 69.4375 48.539063 69.101563 48.476563 68.730469 48.476563 L 66.988281 48.476563 L 66.988281 48.316406 L 67.148438 48.316406 L 67.148438 54.035156 L 66.988281 54.035156 L 66.988281 53.875 L 68.730469 53.875 C 69.101563 53.875 69.4375 53.8125 69.738281 53.691406 C 70.035156 53.570313 70.289063 53.398438 70.5 53.171875 C 70.707031 52.945313 70.871094 52.664063 70.984375 52.332031 C 71.101563 51.996094 71.160156 51.609375 71.160156 51.179688 Z M 71.480469 51.179688 C 71.480469 51.644531 71.414063 52.066406 71.289063 52.4375 C 71.15625 52.8125 70.972656 53.128906 70.734375 53.386719 C 70.492188 53.648438 70.199219 53.847656 69.859375 53.988281 C 69.519531 54.125 69.144531 54.191406 68.730469 54.191406 L 66.828125 54.191406 L 66.828125 48.160156 L 68.730469 48.160156 C 69.144531 48.160156 69.519531 48.226563 69.859375 48.363281 C 70.199219 48.503906 70.492188 48.703125 70.734375 48.964844 C 70.972656 49.226563 71.15625 49.546875 71.289063 49.921875 C 71.414063 50.292969 71.480469 50.710938 71.480469 51.179688 Z M 72.335938 51.179688 C 72.335938 51.726563 72.25 52.226563 72.078125 52.675781 C 71.902344 53.125 71.65625 53.507813 71.339844 53.828125 C 71.023438 54.148438 70.644531 54.398438 70.203125 54.574219 C 69.757813 54.746094 69.269531 54.835938 68.730469 54.835938 L 65.992188 54.835938 L 65.992188 47.515625 L 68.730469 47.515625 C 69.269531 47.515625 69.757813 47.605469 70.203125 47.777344 C 70.644531 47.953125 71.023438 48.203125 71.339844 48.523438 C 71.65625 48.847656 71.902344 49.230469 72.078125 49.683594 C 72.25 50.132813 72.335938 50.628906 72.335938 51.179688 Z M 71.320313 51.179688 C 71.320313 50.730469 71.257813 50.328125 71.136719 49.972656 C 71.015625 49.617188 70.839844 49.320313 70.617188 49.074219 C 70.390625 48.828125 70.117188 48.640625 69.796875 48.511719 C 69.476563 48.382813 69.121094 48.316406 68.730469 48.316406 L 66.988281 48.316406 L 66.988281 54.035156 L 68.730469 54.035156 C 69.121094 54.035156 69.476563 53.96875 69.796875 53.839844 C 70.117188 53.710938 70.390625 53.523438 70.617188 53.28125 C 70.839844 53.035156 71.015625 52.738281 71.136719 52.382813 C 71.257813 52.03125 71.320313 51.628906 71.320313 51.179688 Z M 80.644531 51.179688 C 80.644531 51.746094 80.554688 52.269531 80.371094 52.746094 C 80.191406 53.222656 79.933594 53.636719 79.601563 53.980469 C 79.269531 54.328125 78.871094 54.597656 78.40625 54.785156 C 77.941406 54.976563 77.433594 55.070313 76.871094 55.070313 C 76.3125 55.070313 75.804688 54.976563 75.339844 54.785156 C 74.878906 54.597656 74.480469 54.328125 74.148438 53.980469 C 73.816406 53.636719 73.558594 53.222656 73.378906 52.746094 C 73.199219 52.269531 73.105469 51.746094 73.105469 51.179688 C 73.105469 50.609375 73.199219 50.089844 73.378906 49.613281 C 73.558594 49.132813 73.816406 48.722656 74.148438 48.375 C 74.480469 48.027344 74.878906 47.753906 75.339844 47.5625 C 75.804688 47.371094 76.3125 47.273438 76.871094 47.273438 C 77.433594 47.273438 77.945313 47.371094 78.40625 47.5625 C 78.871094 47.753906 79.273438 48.027344 79.605469 48.375 C 79.933594 48.722656 80.191406 49.132813 80.371094 49.613281 C 80.554688 50.089844 80.644531 50.609375 80.644531 51.179688 Z M 80.324219 51.179688 C 80.324219 50.648438 80.242188 50.164063 80.074219 49.726563 C 79.910156 49.289063 79.675781 48.910156 79.371094 48.59375 C 79.070313 48.277344 78.710938 48.03125 78.285156 47.859375 C 77.859375 47.683594 77.390625 47.59375 76.871094 47.59375 C 76.355469 47.59375 75.886719 47.683594 75.464844 47.859375 C 75.042969 48.03125 74.679688 48.277344 74.378906 48.59375 C 74.078125 48.910156 73.84375 49.289063 73.675781 49.726563 C 73.507813 50.164063 73.425781 50.648438 73.425781 51.179688 C 73.425781 51.707031 73.507813 52.191406 73.675781 52.632813 C 73.84375 53.070313 74.078125 53.445313 74.378906 53.761719 C 74.679688 54.074219 75.039063 54.316406 75.460938 54.492188 C 75.886719 54.664063 76.355469 54.753906 76.871094 54.753906 C 77.390625 54.753906 77.859375 54.664063 78.285156 54.492188 C 78.710938 54.316406 79.070313 54.074219 79.371094 53.761719 C 79.675781 53.445313 79.910156 53.070313 80.074219 52.632813 C 80.242188 52.191406 80.324219 51.707031 80.324219 51.179688 Z M 79.308594 51.179688 C 79.308594 50.746094 79.25 50.359375 79.132813 50.019531 C 79.015625 49.683594 78.855469 49.398438 78.644531 49.167969 C 78.4375 48.9375 78.183594 48.761719 77.882813 48.640625 C 77.582031 48.515625 77.246094 48.453125 76.871094 48.453125 C 76.503906 48.453125 76.167969 48.515625 75.867188 48.640625 C 75.566406 48.761719 75.3125 48.941406 75.101563 49.167969 C 74.890625 49.398438 74.726563 49.683594 74.613281 50.019531 C 74.496094 50.359375 74.4375 50.746094 74.4375 51.179688 C 74.4375 51.609375 74.496094 51.996094 74.613281 52.335938 C 74.726563 52.667969 74.890625 52.953125 75.101563 53.183594 C 75.3125 53.410156 75.566406 53.585938 75.867188 53.710938 C 76.167969 53.832031 76.503906 53.894531 76.871094 53.894531 C 77.246094 53.894531 77.585938 53.832031 77.886719 53.710938 C 78.183594 53.585938 78.4375 53.414063 78.644531 53.183594 C 78.855469 52.953125 79.015625 52.667969 79.132813 52.335938 C 79.25 51.996094 79.308594 51.609375 79.308594 51.179688 Z M 79.628906 51.179688 C 79.628906 51.644531 79.5625 52.066406 79.433594 52.4375 C 79.304688 52.816406 79.121094 53.136719 78.882813 53.398438 C 78.640625 53.664063 78.347656 53.863281 78.007813 54.003906 C 77.667969 54.144531 77.289063 54.214844 76.871094 54.214844 C 76.460938 54.214844 76.085938 54.144531 75.746094 54.003906 C 75.402344 53.863281 75.109375 53.664063 74.867188 53.398438 C 74.625 53.136719 74.441406 52.816406 74.3125 52.4375 C 74.183594 52.066406 74.117188 51.644531 74.117188 51.179688 C 74.117188 50.710938 74.183594 50.289063 74.3125 49.914063 C 74.441406 49.539063 74.625 49.214844 74.867188 48.953125 C 75.109375 48.6875 75.402344 48.484375 75.746094 48.34375 C 76.082031 48.203125 76.460938 48.132813 76.871094 48.132813 C 77.289063 48.132813 77.667969 48.203125 78.007813 48.34375 C 78.347656 48.484375 78.640625 48.6875 78.882813 48.953125 C 79.121094 49.21875 79.304688 49.539063 79.433594 49.914063 C 79.5625 50.289063 79.628906 50.710938 79.628906 51.179688 Z M 80.484375 51.179688 C 80.484375 51.726563 80.398438 52.230469 80.222656 52.6875 C 80.050781 53.144531 79.804688 53.539063 79.488281 53.871094 C 79.171875 54.199219 78.789063 54.457031 78.347656 54.640625 C 77.902344 54.820313 77.410156 54.914063 76.871094 54.914063 C 76.335938 54.914063 75.84375 54.820313 75.402344 54.640625 C 74.960938 54.457031 74.578125 54.199219 74.261719 53.871094 C 73.945313 53.539063 73.699219 53.144531 73.527344 52.6875 C 73.355469 52.230469 73.265625 51.726563 73.265625 51.179688 C 73.265625 50.628906 73.355469 50.128906 73.527344 49.667969 C 73.699219 49.210938 73.945313 48.816406 74.261719 48.484375 C 74.578125 48.152344 74.960938 47.894531 75.402344 47.710938 C 75.84375 47.527344 76.335938 47.433594 76.871094 47.433594 C 77.410156 47.433594 77.902344 47.527344 78.347656 47.710938 C 78.789063 47.894531 79.171875 48.152344 79.488281 48.484375 C 79.804688 48.816406 80.050781 49.210938 80.222656 49.667969 C 80.398438 50.128906 80.484375 50.628906 80.484375 51.179688 Z M 79.46875 51.179688 C 79.46875 50.730469 79.40625 50.324219 79.285156 49.96875 C 79.160156 49.609375 78.988281 49.308594 78.761719 49.0625 C 78.539063 48.8125 78.265625 48.625 77.945313 48.492188 C 77.625 48.359375 77.269531 48.292969 76.871094 48.292969 C 76.480469 48.292969 76.125 48.359375 75.804688 48.492188 C 75.484375 48.625 75.210938 48.8125 74.984375 49.0625 C 74.757813 49.308594 74.585938 49.609375 74.460938 49.96875 C 74.339844 50.324219 74.277344 50.730469 74.277344 51.179688 C 74.277344 51.628906 74.339844 52.03125 74.460938 52.386719 C 74.585938 52.742188 74.757813 53.042969 74.984375 53.289063 C 75.210938 53.539063 75.484375 53.726563 75.804688 53.859375 C 76.125 53.988281 76.480469 54.054688 76.871094 54.054688 C 77.269531 54.054688 77.625 53.988281 77.945313 53.859375 C 78.265625 53.726563 78.539063 53.539063 78.761719 53.289063 C 78.988281 53.042969 79.160156 52.742188 79.285156 52.386719 C 79.40625 52.03125 79.46875 51.628906 79.46875 51.179688 Z M 86.996094 53.164063 C 87.09375 53.164063 87.183594 53.203125 87.257813 53.277344 L 87.261719 53.28125 L 87.746094 53.8125 L 87.652344 53.917969 C 87.339844 54.285156 86.957031 54.566406 86.507813 54.773438 C 86.058594 54.976563 85.523438 55.078125 84.898438 55.078125 C 84.347656 55.078125 83.847656 54.980469 83.398438 54.792969 C 82.949219 54.601563 82.566406 54.332031 82.246094 53.984375 C 81.929688 53.640625 81.683594 53.230469 81.507813 52.75 C 81.335938 52.273438 81.25 51.75 81.25 51.179688 C 81.25 50.605469 81.34375 50.082031 81.527344 49.601563 C 81.714844 49.125 81.976563 48.710938 82.316406 48.363281 C 82.65625 48.019531 83.0625 47.75 83.53125 47.558594 C 84.003906 47.371094 84.519531 47.273438 85.085938 47.273438 C 85.644531 47.273438 86.132813 47.363281 86.542969 47.539063 C 86.949219 47.710938 87.3125 47.949219 87.628906 48.246094 L 87.726563 48.34375 L 87.328125 48.910156 C 87.292969 48.960938 87.253906 49 87.207031 49.03125 C 87.148438 49.074219 87.074219 49.09375 86.980469 49.09375 C 86.90625 49.09375 86.828125 49.070313 86.753906 49.019531 C 86.703125 48.988281 86.644531 48.945313 86.574219 48.898438 C 86.507813 48.851563 86.433594 48.804688 86.34375 48.75 C 86.257813 48.703125 86.160156 48.65625 86.042969 48.609375 C 85.925781 48.566406 85.785156 48.527344 85.628906 48.496094 C 85.472656 48.46875 85.289063 48.453125 85.082031 48.453125 C 84.710938 48.453125 84.371094 48.515625 84.066406 48.640625 C 83.761719 48.765625 83.5 48.945313 83.28125 49.179688 C 83.0625 49.410156 82.890625 49.695313 82.765625 50.03125 C 82.640625 50.371094 82.578125 50.753906 82.578125 51.179688 C 82.578125 51.617188 82.640625 52.003906 82.765625 52.34375 C 82.890625 52.683594 83.058594 52.964844 83.269531 53.199219 C 83.480469 53.425781 83.730469 53.601563 84.019531 53.722656 C 84.308594 53.84375 84.621094 53.90625 84.957031 53.90625 C 85.167969 53.90625 85.355469 53.890625 85.523438 53.867188 C 85.6875 53.84375 85.835938 53.808594 85.972656 53.757813 C 86.109375 53.707031 86.238281 53.640625 86.355469 53.566406 C 86.476563 53.488281 86.597656 53.390625 86.722656 53.28125 C 86.8125 53.203125 86.902344 53.164063 86.996094 53.164063 Z M 86.996094 53.484375 C 86.984375 53.484375 86.960938 53.496094 86.933594 53.519531 C 86.800781 53.640625 86.664063 53.746094 86.53125 53.832031 C 86.390625 53.921875 86.242188 53.996094 86.085938 54.054688 C 85.925781 54.113281 85.753906 54.15625 85.570313 54.183594 C 85.386719 54.210938 85.183594 54.222656 84.957031 54.222656 C 84.578125 54.222656 84.226563 54.15625 83.894531 54.015625 C 83.566406 53.878906 83.277344 53.679688 83.035156 53.414063 C 82.792969 53.152344 82.605469 52.832031 82.46875 52.453125 C 82.328125 52.078125 82.261719 51.652344 82.261719 51.179688 C 82.261719 50.714844 82.328125 50.296875 82.46875 49.921875 C 82.605469 49.542969 82.800781 49.222656 83.050781 48.960938 C 83.300781 48.695313 83.597656 48.488281 83.945313 48.347656 C 84.289063 48.203125 84.667969 48.132813 85.082031 48.132813 C 85.308594 48.132813 85.511719 48.148438 85.6875 48.183594 C 85.863281 48.21875 86.019531 48.261719 86.15625 48.3125 C 86.289063 48.363281 86.40625 48.417969 86.507813 48.476563 C 86.601563 48.535156 86.683594 48.585938 86.757813 48.636719 C 86.824219 48.683594 86.878906 48.722656 86.929688 48.753906 C 86.953125 48.769531 86.96875 48.777344 86.980469 48.777344 C 87.003906 48.777344 87.019531 48.773438 87.019531 48.773438 C 87.035156 48.761719 87.050781 48.746094 87.066406 48.726563 L 87.386719 48.273438 L 87.519531 48.363281 L 87.410156 48.480469 C 87.117188 48.207031 86.789063 47.992188 86.414063 47.832031 C 86.046875 47.671875 85.601563 47.59375 85.085938 47.59375 C 84.5625 47.59375 84.085938 47.679688 83.652344 47.855469 C 83.222656 48.03125 82.851563 48.273438 82.542969 48.589844 C 82.234375 48.902344 81.996094 49.28125 81.824219 49.71875 C 81.652344 50.160156 81.570313 50.648438 81.570313 51.179688 C 81.570313 51.710938 81.648438 52.199219 81.808594 52.640625 C 81.96875 53.082031 82.191406 53.457031 82.480469 53.769531 C 82.769531 54.082031 83.117188 54.324219 83.523438 54.496094 C 83.933594 54.671875 84.390625 54.757813 84.898438 54.757813 C 85.476563 54.757813 85.96875 54.664063 86.375 54.480469 C 86.78125 54.296875 87.128906 54.039063 87.414063 53.710938 L 87.535156 53.8125 L 87.414063 53.921875 L 87.027344 53.496094 L 87.144531 53.390625 L 87.03125 53.503906 C 87.019531 53.488281 87.007813 53.484375 86.996094 53.484375 Z M 86.996094 53.324219 C 87.050781 53.324219 87.101563 53.347656 87.144531 53.390625 L 87.535156 53.8125 C 87.234375 54.160156 86.871094 54.433594 86.441406 54.625 C 86.015625 54.820313 85.5 54.917969 84.898438 54.917969 C 84.371094 54.917969 83.890625 54.828125 83.460938 54.644531 C 83.03125 54.460938 82.667969 54.207031 82.363281 53.878906 C 82.0625 53.550781 81.824219 53.15625 81.660156 52.695313 C 81.492188 52.234375 81.410156 51.730469 81.410156 51.179688 C 81.410156 50.625 81.5 50.121094 81.675781 49.660156 C 81.855469 49.203125 82.105469 48.804688 82.429688 48.476563 C 82.753906 48.144531 83.140625 47.890625 83.59375 47.707031 C 84.042969 47.523438 84.542969 47.433594 85.085938 47.433594 C 85.625 47.433594 86.089844 47.519531 86.476563 47.683594 C 86.867188 47.851563 87.214844 48.078125 87.519531 48.363281 L 87.195313 48.820313 C 87.171875 48.851563 87.144531 48.878906 87.113281 48.902344 C 87.082031 48.925781 87.039063 48.9375 86.980469 48.9375 C 86.9375 48.9375 86.890625 48.917969 86.839844 48.886719 C 86.792969 48.855469 86.734375 48.816406 86.664063 48.765625 C 86.597656 48.71875 86.515625 48.667969 86.425781 48.613281 C 86.332031 48.558594 86.222656 48.507813 86.097656 48.460938 C 85.972656 48.414063 85.824219 48.375 85.660156 48.339844 C 85.492188 48.308594 85.300781 48.292969 85.082031 48.292969 C 84.691406 48.292969 84.332031 48.359375 84.007813 48.492188 C 83.679688 48.628906 83.402344 48.820313 83.164063 49.070313 C 82.929688 49.316406 82.746094 49.621094 82.617188 49.976563 C 82.484375 50.335938 82.421875 50.734375 82.421875 51.179688 C 82.421875 51.632813 82.484375 52.042969 82.617188 52.398438 C 82.746094 52.757813 82.925781 53.058594 83.152344 53.304688 C 83.378906 53.550781 83.648438 53.742188 83.957031 53.871094 C 84.269531 54 84.601563 54.0625 84.957031 54.0625 C 85.175781 54.0625 85.371094 54.050781 85.546875 54.027344 C 85.71875 54 85.882813 53.960938 86.027344 53.90625 C 86.175781 53.851563 86.316406 53.78125 86.441406 53.699219 C 86.570313 53.617188 86.699219 53.515625 86.828125 53.398438 C 86.886719 53.347656 86.941406 53.324219 86.996094 53.324219 Z M 91.679688 53.890625 C 91.960938 53.890625 92.210938 53.84375 92.429688 53.75 C 92.648438 53.65625 92.832031 53.527344 92.980469 53.359375 C 93.128906 53.191406 93.246094 52.992188 93.324219 52.757813 C 93.40625 52.519531 93.445313 52.253906 93.445313 51.964844 L 93.445313 47.355469 L 94.753906 47.355469 L 94.753906 51.964844 C 94.753906 52.40625 94.679688 52.816406 94.539063 53.195313 C 94.398438 53.578125 94.195313 53.90625 93.929688 54.1875 C 93.664063 54.46875 93.339844 54.6875 92.957031 54.84375 C 92.578125 55.003906 92.152344 55.082031 91.679688 55.082031 C 91.210938 55.082031 90.785156 55.003906 90.402344 54.84375 C 90.023438 54.6875 89.699219 54.46875 89.429688 54.1875 C 89.164063 53.90625 88.957031 53.578125 88.816406 53.195313 C 88.675781 52.816406 88.605469 52.40625 88.605469 51.964844 L 88.605469 47.355469 L 89.910156 47.355469 L 89.910156 51.960938 C 89.910156 52.25 89.949219 52.511719 90.03125 52.75 C 90.113281 52.984375 90.226563 53.1875 90.378906 53.355469 C 90.527344 53.523438 90.710938 53.652344 90.929688 53.746094 C 91.148438 53.84375 91.398438 53.890625 91.679688 53.890625 Z M 91.679688 54.207031 C 91.355469 54.207031 91.0625 54.152344 90.804688 54.039063 C 90.542969 53.925781 90.320313 53.769531 90.140625 53.566406 C 89.960938 53.367188 89.824219 53.128906 89.730469 52.855469 C 89.636719 52.582031 89.589844 52.285156 89.589844 51.960938 L 89.589844 47.515625 L 89.75 47.515625 L 89.75 47.675781 L 88.765625 47.675781 L 88.765625 47.515625 L 88.925781 47.515625 L 88.925781 51.964844 C 88.925781 52.367188 88.988281 52.742188 89.117188 53.085938 C 89.242188 53.425781 89.425781 53.71875 89.660156 53.96875 C 89.898438 54.214844 90.1875 54.410156 90.527344 54.550781 C 90.867188 54.691406 91.253906 54.761719 91.679688 54.761719 C 92.109375 54.761719 92.492188 54.691406 92.835938 54.550781 C 93.175781 54.410156 93.464844 54.214844 93.699219 53.96875 C 93.933594 53.71875 94.113281 53.425781 94.242188 53.085938 C 94.367188 52.742188 94.433594 52.367188 94.433594 51.964844 L 94.433594 47.515625 L 94.59375 47.515625 L 94.59375 47.675781 L 93.605469 47.675781 L 93.605469 47.515625 L 93.765625 47.515625 L 93.765625 51.964844 C 93.765625 52.289063 93.71875 52.585938 93.628906 52.859375 C 93.535156 53.136719 93.398438 53.375 93.21875 53.574219 C 93.035156 53.773438 92.816406 53.929688 92.554688 54.042969 C 92.296875 54.152344 92.007813 54.207031 91.679688 54.207031 Z M 91.679688 54.050781 C 91.984375 54.050781 92.253906 53.996094 92.492188 53.894531 C 92.730469 53.792969 92.933594 53.652344 93.097656 53.464844 C 93.261719 53.28125 93.390625 53.0625 93.476563 52.808594 C 93.5625 52.550781 93.605469 52.269531 93.605469 51.964844 L 93.605469 47.515625 L 94.59375 47.515625 L 94.59375 51.964844 C 94.59375 52.386719 94.523438 52.777344 94.390625 53.140625 C 94.257813 53.5 94.0625 53.8125 93.8125 54.078125 C 93.5625 54.339844 93.257813 54.546875 92.898438 54.699219 C 92.535156 54.847656 92.128906 54.921875 91.679688 54.921875 C 91.230469 54.921875 90.828125 54.847656 90.464844 54.699219 C 90.105469 54.546875 89.796875 54.339844 89.546875 54.078125 C 89.292969 53.8125 89.101563 53.5 88.964844 53.140625 C 88.832031 52.777344 88.765625 52.386719 88.765625 51.964844 L 88.765625 47.515625 L 89.75 47.515625 L 89.75 51.960938 C 89.75 52.265625 89.792969 52.546875 89.878906 52.800781 C 89.96875 53.058594 90.09375 53.277344 90.257813 53.460938 C 90.421875 53.644531 90.625 53.789063 90.867188 53.894531 C 91.105469 53.996094 91.378906 54.050781 91.679688 54.050781 Z M 100.03125 52.109375 C 100.085938 52.199219 100.128906 52.292969 100.167969 52.390625 C 100.203125 52.480469 100.238281 52.574219 100.273438 52.664063 L 100.125 52.722656 L 99.972656 52.667969 C 100.007813 52.570313 100.046875 52.472656 100.085938 52.382813 C 100.125 52.292969 100.167969 52.203125 100.21875 52.109375 L 102.695313 47.609375 C 102.761719 47.492188 102.835938 47.421875 102.921875 47.390625 C 102.984375 47.367188 103.070313 47.355469 103.179688 47.355469 L 104.070313 47.355469 L 104.070313 54.996094 L 102.882813 54.996094 L 102.882813 49.457031 C 102.882813 49.382813 102.882813 49.304688 102.886719 49.21875 C 102.890625 49.136719 102.894531 49.050781 102.902344 48.964844 L 103.0625 48.976563 L 103.203125 49.054688 L 100.695313 53.628906 C 100.578125 53.839844 100.410156 53.941406 100.195313 53.941406 L 100.054688 53.941406 C 99.835938 53.941406 99.671875 53.839844 99.554688 53.632813 L 96.992188 49.039063 L 97.132813 48.960938 L 97.289063 48.941406 C 97.300781 49.035156 97.308594 49.125 97.3125 49.210938 C 97.320313 49.300781 97.320313 49.382813 97.320313 49.457031 L 97.320313 54.996094 L 96.132813 54.996094 L 96.132813 47.355469 L 97.023438 47.355469 C 97.132813 47.355469 97.21875 47.367188 97.28125 47.390625 C 97.367188 47.421875 97.441406 47.492188 97.503906 47.605469 L 100.035156 52.113281 Z M 99.753906 52.269531 L 97.226563 47.761719 C 97.203125 47.71875 97.183594 47.695313 97.175781 47.691406 C 97.144531 47.679688 97.09375 47.675781 97.023438 47.675781 L 96.292969 47.675781 L 96.292969 47.515625 L 96.453125 47.515625 L 96.453125 54.835938 L 96.292969 54.835938 L 96.292969 54.675781 L 97.160156 54.675781 L 97.160156 54.835938 L 97.003906 54.835938 L 97.003906 49.457031 C 97.003906 49.386719 97 49.3125 96.996094 49.230469 C 96.988281 49.148438 96.984375 49.066406 96.972656 48.980469 L 97.269531 48.882813 L 99.835938 53.476563 C 99.890625 53.574219 99.960938 53.625 100.054688 53.625 L 100.195313 53.625 C 100.285156 53.625 100.359375 53.574219 100.414063 53.476563 L 102.921875 48.898438 L 103.21875 48.988281 C 103.214844 49.074219 103.210938 49.152344 103.207031 49.234375 C 103.203125 49.3125 103.199219 49.386719 103.199219 49.457031 L 103.199219 54.835938 L 103.042969 54.835938 L 103.042969 54.675781 L 103.910156 54.675781 L 103.910156 54.835938 L 103.75 54.835938 L 103.75 47.515625 L 103.910156 47.515625 L 103.910156 47.675781 L 103.179688 47.675781 C 103.109375 47.675781 103.058594 47.679688 103.027344 47.691406 C 103.019531 47.695313 103 47.71875 102.976563 47.761719 L 100.5 52.261719 C 100.453125 52.34375 100.414063 52.429688 100.378906 52.511719 C 100.34375 52.59375 100.308594 52.683594 100.273438 52.773438 L 100.128906 53.1875 L 99.976563 52.777344 C 99.941406 52.6875 99.90625 52.59375 99.871094 52.507813 C 99.839844 52.421875 99.800781 52.34375 99.757813 52.269531 Z M 99.894531 52.191406 C 99.941406 52.269531 99.984375 52.359375 100.019531 52.449219 C 100.054688 52.539063 100.089844 52.628906 100.125 52.722656 C 100.160156 52.625 100.195313 52.535156 100.230469 52.449219 C 100.269531 52.359375 100.3125 52.273438 100.359375 52.183594 L 102.835938 47.683594 C 102.882813 47.605469 102.925781 47.558594 102.976563 47.542969 C 103.023438 47.523438 103.089844 47.515625 103.179688 47.515625 L 103.910156 47.515625 L 103.910156 54.835938 L 103.042969 54.835938 L 103.042969 49.457031 C 103.042969 49.386719 103.042969 49.308594 103.046875 49.226563 C 103.050781 49.144531 103.054688 49.0625 103.0625 48.976563 L 100.554688 53.554688 C 100.46875 53.707031 100.347656 53.785156 100.195313 53.785156 L 100.054688 53.785156 C 99.898438 53.785156 99.78125 53.707031 99.695313 53.554688 L 97.132813 48.960938 C 97.140625 49.050781 97.148438 49.136719 97.152344 49.222656 C 97.160156 49.308594 97.160156 49.386719 97.160156 49.457031 L 97.160156 54.835938 L 96.292969 54.835938 L 96.292969 47.515625 L 97.023438 47.515625 C 97.113281 47.515625 97.179688 47.523438 97.226563 47.542969 C 97.277344 47.558594 97.320313 47.605469 97.367188 47.683594 Z M 110.363281 47.515625 L 110.363281 48.484375 L 106.6875 48.484375 L 106.6875 48.324219 L 106.847656 48.324219 L 106.847656 50.753906 L 106.6875 50.753906 L 106.6875 50.59375 L 109.691406 50.59375 L 109.691406 51.691406 L 106.6875 51.691406 L 106.6875 51.53125 L 106.847656 51.53125 L 106.847656 54.027344 L 106.6875 54.027344 L 106.6875 53.867188 L 110.363281 53.867188 L 110.363281 54.996094 L 105.53125 54.996094 L 105.53125 47.355469 L 110.363281 47.355469 Z M 110.042969 47.515625 L 110.203125 47.515625 L 110.203125 47.675781 L 105.691406 47.675781 L 105.691406 47.515625 L 105.851563 47.515625 L 105.851563 54.835938 L 105.691406 54.835938 L 105.691406 54.675781 L 110.203125 54.675781 L 110.203125 54.835938 L 110.042969 54.835938 L 110.042969 54.027344 L 110.203125 54.027344 L 110.203125 54.1875 L 106.527344 54.1875 L 106.527344 51.371094 L 109.535156 51.371094 L 109.535156 51.53125 L 109.375 51.53125 L 109.375 50.753906 L 109.535156 50.753906 L 109.535156 50.914063 L 106.527344 50.914063 L 106.527344 48.164063 L 110.203125 48.164063 L 110.203125 48.324219 L 110.042969 48.324219 Z M 110.203125 47.515625 L 110.203125 48.324219 L 106.6875 48.324219 L 106.6875 50.753906 L 109.535156 50.753906 L 109.535156 51.53125 L 106.6875 51.53125 L 106.6875 54.027344 L 110.203125 54.027344 L 110.203125 54.835938 L 105.691406 54.835938 L 105.691406 47.515625 Z M 112.136719 47.355469 C 112.253906 47.355469 112.34375 47.375 112.410156 47.40625 C 112.472656 47.441406 112.535156 47.5 112.605469 47.585938 L 116.847656 53.105469 L 116.71875 53.199219 L 116.5625 53.21875 C 116.550781 53.128906 116.542969 53.035156 116.539063 52.949219 C 116.535156 52.863281 116.535156 52.78125 116.535156 52.699219 L 116.535156 47.355469 L 117.722656 47.355469 L 117.722656 54.996094 L 117.0625 54.996094 C 116.957031 54.996094 116.867188 54.976563 116.792969 54.9375 C 116.71875 54.898438 116.648438 54.839844 116.585938 54.753906 L 112.347656 49.242188 L 112.476563 49.144531 L 112.632813 49.132813 C 112.640625 49.21875 112.648438 49.304688 112.648438 49.390625 C 112.652344 49.472656 112.65625 49.550781 112.65625 49.621094 L 112.65625 54.996094 L 111.46875 54.996094 L 111.46875 47.355469 Z M 112.136719 47.675781 L 111.628906 47.675781 L 111.628906 47.515625 L 111.789063 47.515625 L 111.789063 54.835938 L 111.628906 54.835938 L 111.628906 54.675781 L 112.496094 54.675781 L 112.496094 54.835938 L 112.335938 54.835938 L 112.335938 49.621094 C 112.335938 49.554688 112.335938 49.480469 112.332031 49.402344 C 112.328125 49.324219 112.324219 49.242188 112.316406 49.15625 L 112.273438 48.621094 L 116.835938 54.558594 C 116.871094 54.605469 116.90625 54.636719 116.9375 54.652344 C 116.96875 54.667969 117.011719 54.675781 117.0625 54.675781 L 117.5625 54.675781 L 117.5625 54.835938 L 117.402344 54.835938 L 117.402344 47.515625 L 117.5625 47.515625 L 117.5625 47.675781 L 116.695313 47.675781 L 116.695313 47.515625 L 116.855469 47.515625 L 116.855469 52.699219 C 116.855469 52.777344 116.855469 52.855469 116.859375 52.9375 C 116.863281 53.015625 116.867188 53.097656 116.878906 53.183594 L 116.945313 53.753906 L 112.355469 47.785156 C 112.316406 47.734375 112.285156 47.703125 112.261719 47.691406 C 112.242188 47.679688 112.199219 47.675781 112.136719 47.675781 Z M 112.136719 47.515625 C 112.226563 47.515625 112.292969 47.527344 112.335938 47.550781 C 112.378906 47.570313 112.425781 47.617188 112.480469 47.683594 L 116.71875 53.199219 C 116.710938 53.113281 116.703125 53.027344 116.699219 52.941406 C 116.695313 52.859375 116.695313 52.777344 116.695313 52.699219 L 116.695313 47.515625 L 117.5625 47.515625 L 117.5625 54.835938 L 117.0625 54.835938 C 116.984375 54.835938 116.917969 54.820313 116.867188 54.792969 C 116.8125 54.765625 116.761719 54.722656 116.710938 54.65625 L 112.476563 49.144531 C 112.480469 49.230469 112.488281 49.3125 112.492188 49.394531 C 112.496094 49.476563 112.496094 49.550781 112.496094 49.621094 L 112.496094 54.835938 L 111.628906 54.835938 L 111.628906 47.515625 Z M 124.496094 47.515625 L 124.496094 48.507813 L 121.972656 48.507813 L 121.972656 48.347656 L 122.132813 48.347656 L 122.132813 54.996094 L 120.820313 54.996094 L 120.820313 48.347656 L 120.980469 48.347656 L 120.980469 48.507813 L 118.445313 48.507813 L 118.445313 47.355469 L 124.496094 47.355469 Z M 124.175781 47.515625 L 124.335938 47.515625 L 124.335938 47.675781 L 118.605469 47.675781 L 118.605469 47.515625 L 118.765625 47.515625 L 118.765625 48.347656 L 118.605469 48.347656 L 118.605469 48.1875 L 121.140625 48.1875 L 121.140625 54.835938 L 120.980469 54.835938 L 120.980469 54.675781 L 121.972656 54.675781 L 121.972656 54.835938 L 121.8125 54.835938 L 121.8125 48.1875 L 124.335938 48.1875 L 124.335938 48.347656 L 124.175781 48.347656 Z M 124.335938 47.515625 L 124.335938 48.347656 L 121.972656 48.347656 L 121.972656 54.835938 L 120.980469 54.835938 L 120.980469 48.347656 L 118.605469 48.347656 L 118.605469 47.515625 Z M 130.726563 54.996094 L 129.960938 54.996094 C 129.832031 54.996094 129.730469 54.960938 129.644531 54.894531 C 129.570313 54.832031 129.511719 54.753906 129.476563 54.660156 L 128.789063 52.890625 L 128.9375 52.832031 L 128.9375 52.992188 L 125.652344 52.992188 L 125.652344 52.832031 L 125.804688 52.890625 L 125.117188 54.660156 C 125.085938 54.746094 125.027344 54.820313 124.949219 54.886719 C 124.859375 54.960938 124.753906 54.996094 124.632813 54.996094 L 123.628906 54.996094 L 126.683594 47.355469 L 127.90625 47.355469 L 130.960938 54.996094 Z M 130.726563 54.675781 L 130.726563 54.835938 L 130.578125 54.894531 L 127.652344 47.574219 L 127.800781 47.515625 L 127.800781 47.675781 L 126.792969 47.675781 L 126.792969 47.515625 L 126.941406 47.574219 L 124.015625 54.894531 L 123.867188 54.835938 L 123.867188 54.675781 L 124.632813 54.675781 C 124.679688 54.675781 124.71875 54.664063 124.746094 54.640625 C 124.78125 54.609375 124.808594 54.578125 124.820313 54.542969 L 125.542969 52.671875 L 129.046875 52.671875 L 129.769531 54.542969 C 129.789063 54.582031 129.8125 54.617188 129.847656 54.644531 C 129.871094 54.664063 129.910156 54.675781 129.960938 54.675781 Z M 125.929688 51.957031 L 128.664063 51.957031 L 128.664063 52.117188 L 128.515625 52.175781 L 127.363281 49.199219 C 127.289063 49.007813 127.210938 48.773438 127.140625 48.492188 L 127.292969 48.449219 L 127.449219 48.492188 C 127.410156 48.632813 127.371094 48.761719 127.335938 48.882813 C 127.300781 49.003906 127.261719 49.109375 127.226563 49.203125 L 126.078125 52.175781 L 125.929688 52.117188 Z M 125.695313 52.277344 L 126.929688 49.089844 C 126.964844 49.003906 126.996094 48.902344 127.03125 48.789063 C 127.066406 48.675781 127.101563 48.546875 127.140625 48.410156 L 127.296875 47.824219 L 127.449219 48.410156 C 127.519531 48.679688 127.589844 48.902344 127.664063 49.082031 L 128.894531 52.277344 Z M 130.726563 54.835938 L 129.960938 54.835938 C 129.871094 54.835938 129.800781 54.8125 129.746094 54.769531 C 129.691406 54.726563 129.648438 54.667969 129.621094 54.601563 L 128.9375 52.832031 L 125.652344 52.832031 L 124.96875 54.601563 C 124.945313 54.660156 124.90625 54.714844 124.847656 54.765625 C 124.789063 54.8125 124.71875 54.835938 124.632813 54.835938 L 123.867188 54.835938 L 126.792969 47.515625 L 127.800781 47.515625 Z M 125.929688 52.117188 L 128.664063 52.117188 L 127.511719 49.140625 C 127.4375 48.957031 127.367188 48.726563 127.292969 48.449219 C 127.257813 48.589844 127.21875 48.71875 127.183594 48.835938 C 127.148438 48.953125 127.113281 49.058594 127.078125 49.144531 Z M 136.121094 47.515625 L 136.121094 48.507813 L 133.597656 48.507813 L 133.597656 48.347656 L 133.757813 48.347656 L 133.757813 54.996094 L 132.445313 54.996094 L 132.445313 48.347656 L 132.605469 48.347656 L 132.605469 48.507813 L 130.070313 48.507813 L 130.070313 47.355469 L 136.121094 47.355469 Z M 135.800781 47.515625 L 135.960938 47.515625 L 135.960938 47.675781 L 130.230469 47.675781 L 130.230469 47.515625 L 130.390625 47.515625 L 130.390625 48.347656 L 130.230469 48.347656 L 130.230469 48.1875 L 132.765625 48.1875 L 132.765625 54.835938 L 132.605469 54.835938 L 132.605469 54.675781 L 133.597656 54.675781 L 133.597656 54.835938 L 133.4375 54.835938 L 133.4375 48.1875 L 135.960938 48.1875 L 135.960938 48.347656 L 135.800781 48.347656 Z M 135.960938 47.515625 L 135.960938 48.347656 L 133.597656 48.347656 L 133.597656 54.835938 L 132.605469 54.835938 L 132.605469 48.347656 L 130.230469 48.347656 L 130.230469 47.515625 Z M 137.027344 47.355469 L 138.339844 47.355469 L 138.339844 54.996094 L 137.027344 54.996094 Z M 147.097656 51.179688 C 147.097656 51.746094 147.007813 52.269531 146.828125 52.746094 C 146.644531 53.222656 146.390625 53.636719 146.058594 53.980469 C 145.726563 54.328125 145.328125 54.597656 144.863281 54.785156 C 144.398438 54.976563 143.886719 55.070313 143.328125 55.070313 C 142.769531 55.070313 142.257813 54.976563 141.796875 54.785156 C 141.332031 54.597656 140.933594 54.328125 140.601563 53.980469 C 140.269531 53.636719 140.015625 53.222656 139.832031 52.746094 C 139.652344 52.269531 139.5625 51.746094 139.5625 51.179688 C 139.5625 50.609375 139.652344 50.089844 139.832031 49.613281 C 140.015625 49.132813 140.269531 48.722656 140.601563 48.375 C 140.933594 48.027344 141.332031 47.753906 141.796875 47.5625 C 142.257813 47.371094 142.769531 47.273438 143.328125 47.273438 C 143.886719 47.273438 144.398438 47.371094 144.863281 47.5625 C 145.328125 47.753906 145.726563 48.027344 146.058594 48.375 C 146.390625 48.722656 146.648438 49.132813 146.828125 49.613281 C 147.007813 50.089844 147.097656 50.609375 147.097656 51.179688 Z M 146.78125 51.179688 C 146.78125 50.648438 146.695313 50.164063 146.53125 49.726563 C 146.363281 49.289063 146.128906 48.910156 145.828125 48.59375 C 145.527344 48.277344 145.164063 48.03125 144.742188 47.859375 C 144.316406 47.683594 143.84375 47.59375 143.328125 47.59375 C 142.8125 47.59375 142.339844 47.683594 141.917969 47.859375 C 141.496094 48.03125 141.132813 48.277344 140.832031 48.59375 C 140.53125 48.910156 140.296875 49.289063 140.132813 49.726563 C 139.964844 50.164063 139.882813 50.648438 139.882813 51.179688 C 139.882813 51.707031 139.964844 52.191406 140.132813 52.632813 C 140.296875 53.070313 140.53125 53.445313 140.832031 53.761719 C 141.132813 54.074219 141.496094 54.316406 141.917969 54.492188 C 142.339844 54.664063 142.8125 54.753906 143.328125 54.753906 C 143.84375 54.753906 144.316406 54.664063 144.742188 54.492188 C 145.164063 54.316406 145.527344 54.074219 145.828125 53.761719 C 146.128906 53.445313 146.363281 53.070313 146.53125 52.632813 C 146.695313 52.191406 146.78125 51.707031 146.78125 51.179688 Z M 145.761719 51.179688 C 145.761719 50.746094 145.703125 50.359375 145.585938 50.019531 C 145.472656 49.683594 145.308594 49.398438 145.101563 49.167969 C 144.890625 48.9375 144.636719 48.761719 144.339844 48.640625 C 144.039063 48.515625 143.703125 48.453125 143.328125 48.453125 C 142.957031 48.453125 142.621094 48.515625 142.320313 48.640625 C 142.023438 48.761719 141.769531 48.941406 141.558594 49.167969 C 141.347656 49.398438 141.183594 49.683594 141.066406 50.019531 C 140.949219 50.359375 140.890625 50.746094 140.890625 51.179688 C 140.890625 51.609375 140.949219 51.996094 141.066406 52.335938 C 141.183594 52.667969 141.347656 52.953125 141.558594 53.183594 C 141.769531 53.410156 142.023438 53.585938 142.320313 53.710938 C 142.621094 53.832031 142.957031 53.894531 143.328125 53.894531 C 143.703125 53.894531 144.039063 53.832031 144.339844 53.710938 C 144.636719 53.585938 144.890625 53.414063 145.101563 53.183594 C 145.308594 52.953125 145.472656 52.667969 145.585938 52.335938 C 145.703125 51.996094 145.761719 51.609375 145.761719 51.179688 Z M 146.082031 51.179688 C 146.082031 51.644531 146.019531 52.066406 145.890625 52.4375 C 145.761719 52.816406 145.574219 53.136719 145.335938 53.398438 C 145.09375 53.664063 144.804688 53.863281 144.460938 54.003906 C 144.121094 54.144531 143.742188 54.214844 143.328125 54.214844 C 142.914063 54.214844 142.539063 54.144531 142.199219 54.003906 C 141.859375 53.863281 141.566406 53.664063 141.324219 53.398438 C 141.082031 53.136719 140.894531 52.816406 140.765625 52.4375 C 140.636719 52.066406 140.574219 51.644531 140.574219 51.179688 C 140.574219 50.710938 140.636719 50.289063 140.765625 49.914063 C 140.894531 49.539063 141.082031 49.214844 141.324219 48.953125 C 141.566406 48.6875 141.855469 48.484375 142.199219 48.34375 C 142.539063 48.203125 142.914063 48.132813 143.328125 48.132813 C 143.742188 48.132813 144.121094 48.203125 144.460938 48.34375 C 144.804688 48.484375 145.09375 48.6875 145.335938 48.953125 C 145.574219 49.21875 145.761719 49.539063 145.890625 49.914063 C 146.019531 50.289063 146.082031 50.710938 146.082031 51.179688 Z M 146.9375 51.179688 C 146.9375 51.726563 146.851563 52.230469 146.679688 52.6875 C 146.503906 53.144531 146.257813 53.539063 145.941406 53.871094 C 145.625 54.199219 145.246094 54.457031 144.800781 54.640625 C 144.355469 54.820313 143.867188 54.914063 143.328125 54.914063 C 142.789063 54.914063 142.300781 54.820313 141.855469 54.640625 C 141.414063 54.457031 141.035156 54.199219 140.71875 53.871094 C 140.402344 53.539063 140.15625 53.144531 139.980469 52.6875 C 139.808594 52.230469 139.722656 51.726563 139.722656 51.179688 C 139.722656 50.628906 139.808594 50.128906 139.980469 49.667969 C 140.15625 49.210938 140.402344 48.816406 140.71875 48.484375 C 141.035156 48.152344 141.414063 47.894531 141.855469 47.710938 C 142.300781 47.527344 142.789063 47.433594 143.328125 47.433594 C 143.867188 47.433594 144.355469 47.527344 144.800781 47.710938 C 145.246094 47.894531 145.625 48.152344 145.941406 48.484375 C 146.257813 48.816406 146.503906 49.210938 146.679688 49.667969 C 146.851563 50.128906 146.9375 50.628906 146.9375 51.179688 Z M 145.921875 51.179688 C 145.921875 50.730469 145.859375 50.324219 145.738281 49.96875 C 145.617188 49.609375 145.441406 49.308594 145.21875 49.0625 C 144.992188 48.8125 144.71875 48.625 144.398438 48.492188 C 144.082031 48.359375 143.722656 48.292969 143.328125 48.292969 C 142.9375 48.292969 142.582031 48.359375 142.261719 48.492188 C 141.941406 48.625 141.667969 48.8125 141.441406 49.0625 C 141.214844 49.308594 141.039063 49.609375 140.917969 49.96875 C 140.792969 50.324219 140.734375 50.730469 140.734375 51.179688 C 140.734375 51.628906 140.792969 52.03125 140.917969 52.386719 C 141.039063 52.742188 141.214844 53.042969 141.441406 53.289063 C 141.667969 53.539063 141.941406 53.726563 142.261719 53.859375 C 142.582031 53.988281 142.9375 54.054688 143.328125 54.054688 C 143.722656 54.054688 144.082031 53.988281 144.398438 53.859375 C 144.71875 53.726563 144.992188 53.539063 145.21875 53.289063 C 145.441406 53.042969 145.617188 52.742188 145.738281 52.386719 C 145.859375 52.03125 145.921875 51.628906 145.921875 51.179688 Z M 148.804688 47.355469 C 148.917969 47.355469 149.007813 47.375 149.074219 47.40625 C 149.136719 47.441406 149.203125 47.5 149.269531 47.585938 L 153.511719 53.105469 L 153.386719 53.199219 L 153.226563 53.21875 C 153.214844 53.128906 153.207031 53.035156 153.207031 52.949219 C 153.203125 52.863281 153.199219 52.78125 153.199219 52.699219 L 153.199219 47.355469 L 154.386719 47.355469 L 154.386719 54.996094 L 153.726563 54.996094 C 153.625 54.996094 153.535156 54.976563 153.457031 54.9375 C 153.382813 54.898438 153.316406 54.839844 153.25 54.753906 L 149.015625 49.242188 L 149.140625 49.144531 L 149.300781 49.132813 C 149.308594 49.21875 149.3125 49.304688 149.316406 49.390625 C 149.320313 49.472656 149.320313 49.550781 149.320313 49.621094 L 149.320313 54.996094 L 148.132813 54.996094 L 148.132813 47.355469 Z M 148.804688 47.675781 L 148.292969 47.675781 L 148.292969 47.515625 L 148.453125 47.515625 L 148.453125 54.835938 L 148.292969 54.835938 L 148.292969 54.675781 L 149.160156 54.675781 L 149.160156 54.835938 L 149 54.835938 L 149 49.621094 C 149 49.554688 149 49.480469 148.996094 49.402344 C 148.992188 49.324219 148.988281 49.242188 148.980469 49.15625 L 148.9375 48.621094 L 153.5 54.558594 C 153.539063 54.605469 153.570313 54.636719 153.605469 54.652344 C 153.632813 54.667969 153.675781 54.675781 153.726563 54.675781 L 154.226563 54.675781 L 154.226563 54.835938 L 154.070313 54.835938 L 154.070313 47.515625 L 154.226563 47.515625 L 154.226563 47.675781 L 153.359375 47.675781 L 153.359375 47.515625 L 153.519531 47.515625 L 153.519531 52.699219 C 153.519531 52.777344 153.519531 52.855469 153.523438 52.9375 C 153.527344 53.015625 153.535156 53.097656 153.542969 53.183594 L 153.609375 53.753906 L 149.019531 47.785156 C 148.980469 47.734375 148.949219 47.703125 148.925781 47.691406 C 148.90625 47.679688 148.867188 47.675781 148.804688 47.675781 Z M 148.804688 47.515625 C 148.890625 47.515625 148.957031 47.527344 149 47.550781 C 149.042969 47.570313 149.089844 47.617188 149.144531 47.683594 L 153.386719 53.199219 C 153.375 53.113281 153.367188 53.027344 153.363281 52.941406 C 153.363281 52.859375 153.359375 52.777344 153.359375 52.699219 L 153.359375 47.515625 L 154.226563 47.515625 L 154.226563 54.835938 L 153.726563 54.835938 C 153.648438 54.835938 153.582031 54.820313 153.53125 54.792969 C 153.476563 54.765625 153.425781 54.722656 153.375 54.65625 L 149.140625 49.144531 C 149.148438 49.230469 149.152344 49.3125 149.15625 49.394531 C 149.160156 49.476563 149.160156 49.550781 149.160156 49.621094 L 149.160156 54.835938 L 148.292969 54.835938 L 148.292969 47.515625 Z M 148.804688 47.515625 "
+ id="path11" />
+</svg>
diff --git a/doc/config-dnssec-glue.rst b/doc/config-dnssec-glue.rst
deleted file mode 100644
index 9728cfbc..00000000
--- a/doc/config-dnssec-glue.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-.. SPDX-License-Identifier: GPL-3.0-or-later
-
-.. option:: options/glue-checking: normal|strict|permissive
-
- :default: normal
-
- The resolver strictness checking level.
-
- By default, resolver runs in *normal* mode. There are possibly many small adjustments
- hidden behind the mode settings, but the main idea is that in *permissive* mode, the resolver
- tries to resolve a name with as few lookups as possible, while in *strict* mode it spends much
- more effort resolving and checking referral path. However, if majority of the traffic is covered
- by DNSSEC, some of the strict checking actions are counter-productive.
-
- .. csv-table::
- :header: "Glue type", "Modes when it is accepted", "Example glue [#example_glue]_"
-
- "mandatory glue", "strict, normal, permissive", "ns1.example.org"
- "in-bailiwick glue", "normal, permissive", "ns1.example2.org"
- "any glue records", "permissive", "ns1.example3.net"
-
- .. [#example_glue] The examples show glue records acceptable from servers
- authoritative for `org` zone when delegating to `example.org` zone.
- Unacceptable or missing glue records trigger resolution of names listed
- in NS records before following respective delegation.
diff --git a/doc/config-dnssec.rst b/doc/config-dnssec.rst
deleted file mode 100644
index 3f9e3ad9..00000000
--- a/doc/config-dnssec.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-.. SPDX-License-Identifier: GPL-3.0-or-later
-
-.. _config-dnssec:
-
-*************************
-DNSSEC, data verification
-*************************
-
-Good news! Knot Resolver uses secure configuration by default, and this configuration
-should not be changed unless absolutely necessary, so feel free to skip over this section.
-
-.. include:: config-dnssec-ta.rst
-
-DNSSEC is main technology to protect data, but it is also possible to change how strictly
-resolver checks data from insecure DNS zones:
-
-.. include:: config-dnssec-glue.rst
diff --git a/doc/config-logging-header.rst b/doc/config-logging-header.rst
deleted file mode 100644
index 551b1bec..00000000
--- a/doc/config-logging-header.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-.. SPDX-License-Identifier: GPL-3.0-or-later
-
-Logging API
-===========
-
-.. _config_log_groups:
-
-.. doxygenfile:: lib/log.h
- :project: libkres
diff --git a/doc/config-network-forwarding.rst b/doc/config-network-forwarding.rst
deleted file mode 100644
index f8b1ab70..00000000
--- a/doc/config-network-forwarding.rst
+++ /dev/null
@@ -1,43 +0,0 @@
-.. SPDX-License-Identifier: GPL-3.0-or-later
-
-Forwarding
-----------
-
-*Forwarding* configuration instructs resolver to forward cache-miss queries from clients to manually specified DNS resolvers *(upstream servers)*.
-In other words the *forwarding* mode does exact opposite of the default *recursive* mode because resolver in *recursive* mode automatically selects which servers to ask.
-
-Main use-cases are:
-
- * Building a tree structure of DNS resolvers to improve performance (by improving cache hit rate).
- * Accessing domains which are not available using recursion (e.g. if internal company servers return different answers than public ones).
- * Forwarding through a central DNS traffic filter.
-
-Forwarding implementation in Knot Resolver has following properties:
-
- * Answers from *upstream* servers are cached.
- * Answers from *upstream* servers are locally DNSSEC-validated, unless dnssec is disabled.
- * Resolver automatically selects which IP address from given set of IP addresses will be used (based on performance characteristics).
- * :ref:`Forwarding <config-forward>` can use either encrypted or unencrypted DNS protocol.
-
-.. warning::
-
- We strongly discourage use of "fake top-level domains" like ``corp.`` because these made-up domains are indistinguishable from an attack, so DNSSEC validation will prevent such domains from working.
- If you *really* need a variant of forwarding which does not DNSSEC-validate received data please see chapter :ref:`dns-graft`.
- In long-term it is better to migrate data into a legitimate, properly delegated domains which do not suffer from these security problems.
-
-
-Simple examples for **unencrypted** forwarding:
-
-.. code-block:: yaml
-
- forward:
- # forward all traffic to specified IP addresses (selected automatically)
- - subtree: "."
- servers: [2001:db8::1, 192.0.2.1]
- # forward only queries for names under domain example.com to a single IP address
- - subtree: example.com.
- servers: [192.0.2.1]
-
-To configure encrypted version please see chapter about :ref:`forwarding <config-forward>`.
-
-Forwarding is documented in depth together with rest of :ref:`config-policy-new`.
diff --git a/doc/daemon-bindings-cache.rst b/doc/daemon-bindings-cache.rst
deleted file mode 120000
index d5d3ee7b..00000000
--- a/doc/daemon-bindings-cache.rst
+++ /dev/null
@@ -1 +0,0 @@
-../daemon/bindings/cache.rst \ No newline at end of file
diff --git a/doc/daemon-bindings-net_client.rst b/doc/daemon-bindings-net_client.rst
deleted file mode 120000
index c96fc76f..00000000
--- a/doc/daemon-bindings-net_client.rst
+++ /dev/null
@@ -1 +0,0 @@
-../daemon/bindings/net_client.rst \ No newline at end of file
diff --git a/doc/daemon-bindings-net_dns_tweaks.rst b/doc/daemon-bindings-net_dns_tweaks.rst
deleted file mode 120000
index ee7e98ac..00000000
--- a/doc/daemon-bindings-net_dns_tweaks.rst
+++ /dev/null
@@ -1 +0,0 @@
-../daemon/bindings/net_dns_tweaks.rst \ No newline at end of file
diff --git a/doc/daemon-bindings-net_server.rst b/doc/daemon-bindings-net_server.rst
deleted file mode 120000
index b6cf46ce..00000000
--- a/doc/daemon-bindings-net_server.rst
+++ /dev/null
@@ -1 +0,0 @@
-../daemon/bindings/net_server.rst \ No newline at end of file
diff --git a/doc/daemon-bindings-net_tlssrv.rst b/doc/daemon-bindings-net_tlssrv.rst
deleted file mode 120000
index 2e38daa3..00000000
--- a/doc/daemon-bindings-net_tlssrv.rst
+++ /dev/null
@@ -1 +0,0 @@
-../daemon/bindings/net_tlssrv.rst \ No newline at end of file
diff --git a/doc/daemon-bindings-net_xdpsrv.rst b/doc/daemon-bindings-net_xdpsrv.rst
deleted file mode 120000
index da7870b2..00000000
--- a/doc/daemon-bindings-net_xdpsrv.rst
+++ /dev/null
@@ -1 +0,0 @@
-../daemon/bindings/net_xdpsrv.rst \ No newline at end of file
diff --git a/doc/daemon-bindings-worker.rst b/doc/daemon-bindings-worker.rst
deleted file mode 120000
index 3ea3e616..00000000
--- a/doc/daemon-bindings-worker.rst
+++ /dev/null
@@ -1 +0,0 @@
-../daemon/bindings/worker.rst \ No newline at end of file
diff --git a/doc/daemon-scripting.rst b/doc/daemon-scripting.rst
deleted file mode 120000
index 482b759e..00000000
--- a/doc/daemon-scripting.rst
+++ /dev/null
@@ -1 +0,0 @@
-../daemon/scripting.rst \ No newline at end of file
diff --git a/doc/Doxyfile b/doc/dev/Doxyfile
index d2f4c5bf..bb88c1ac 100644
--- a/doc/Doxyfile
+++ b/doc/dev/Doxyfile
@@ -6,7 +6,7 @@ GENERATE_LATEX = NO
GENERATE_MAN = NO
GENERATE_RTF = NO
CASE_SENSE_NAMES = NO
-INPUT = ../lib ../daemon
+INPUT = ../../lib ../../daemon
FILE_PATTERNS = *.h
QUIET = YES
RECURSIVE = YES
diff --git a/doc/architecture-gc.rst b/doc/dev/architecture-gc.rst
index b57c857c..b57c857c 100644
--- a/doc/architecture-gc.rst
+++ b/doc/dev/architecture-gc.rst
diff --git a/doc/architecture-kresd.rst b/doc/dev/architecture-kresd.rst
index 783fbb8a..783fbb8a 100644
--- a/doc/architecture-kresd.rst
+++ b/doc/dev/architecture-kresd.rst
diff --git a/doc/architecture-manager.rst b/doc/dev/architecture-manager.rst
index bf663edd..1a0381af 100644
--- a/doc/architecture-manager.rst
+++ b/doc/dev/architecture-manager.rst
@@ -9,7 +9,7 @@ The manager is a component written in Python and a bit of C used for native exte
The manager is mostly modelled around config processing pipeline:
-.. image:: architecture-manager.svg
+.. image:: ../architecture-config.svg
:width: 100%
:alt: Diagram showing a configuration change request processing pipeline inside of the manager. The request goes first through an API server, then through parsing, validation and normalization steps, then into an actual system manager, which commands supervisord and other system components such as kresd.
diff --git a/doc/architecture.rst b/doc/dev/architecture.rst
index dc4dc862..ba281f9d 100644
--- a/doc/architecture.rst
+++ b/doc/dev/architecture.rst
@@ -4,7 +4,7 @@ System architecture
Knot Resolver is split into several components, namely the manager, ``kresd`` and the garbage collector. In addition to these custom components, we also rely on `supervisord <http://supervisord.org/>`_.
-.. image:: architecture-schema.svg
+.. image:: architecture-supervisor.svg
:width: 100%
:alt: Diagram showing process tree and contol relationship between Knot Resolver components. Supervisord is a parent to all processes, namely manager, kresd instances and gc. Manager on the other hand controls every other component and what it does.
diff --git a/doc/build.rst b/doc/dev/build.rst
index 5b3ca624..93242195 100644
--- a/doc/build.rst
+++ b/doc/dev/build.rst
@@ -2,8 +2,9 @@
.. _build:
-Building from sources
-=====================
+******************
+Cloning repository
+******************
.. note:: Latest up-to-date packages for various distribution can be obtained
from web `<https://knot-resolver.cz/download/>`_.
@@ -18,8 +19,9 @@ Beware that some 64-bit systems with LuaJIT 2.1 may be affected by
$ git clone --recursive https://gitlab.nic.cz/knot/knot-resolver.git
+******************
Building with apkg
-------------------
+******************
Knot Resolver uses `apkg tool <https://pkg.labs.nic.cz/pages/apkg/>`_ for upstream packaging.
It allows build packages localy for supported distributions, which it then installs.
@@ -59,8 +61,9 @@ When ``apkg`` is ready, a package can be built and installed.
After that Knot Resolver should be installed.
+*******************
Building with Meson
--------------------
+*******************
Knot Resolver uses `Meson Build system <https://mesonbuild.com/>`_.
Shell snippets below should be sufficient for basic usage
@@ -69,7 +72,7 @@ article `Using Meson <https://mesonbuild.com/Quick-guide.html>`_.
Dependencies
-~~~~~~~~~~~~
+============
.. note:: This section lists basic requirements. Individual modules
might have additional build or runtime dependencies.
@@ -158,7 +161,7 @@ here's an overview for several platforms.
* **Mac OS X** - the dependencies can be obtained from `Homebrew formula <https://formulae.brew.sh/formula/knot-resolver>`_.
Compilation
-~~~~~~~~~~~
+===========
Folowing meson command creates new build directory named ``build_dir``, configures installation path to ``/tmp/kr`` and enables static build (to allow installation to non-standard path).
You can also configure some :ref:`build-options`, in this case enable ``manager``, which is disabled by default.
@@ -186,7 +189,7 @@ At this point you can execute the newly installed binary using path ``/tmp/kr/sb
.. _build-options:
Build options
-~~~~~~~~~~~~~
+=============
It's possible to change the compilation with build options. These are useful to
packagers or developers who wish to customize the daemon behaviour, run
@@ -216,7 +219,7 @@ a build directory:
.. _build-custom-flags:
Customizing compiler flags
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+--------------------------
If you'd like to use customize the build, see meson's `built-in options
<https://mesonbuild.com/Builtin-options.html>`_. For hardening, see ``b_pie``.
@@ -230,7 +233,7 @@ command.
.. _build-html-doc:
Documentation
--------------
+=============
To check for documentation dependencies and allow its installation, use
``-Ddoc=enabled``. The documentation doesn't build automatically. Instead,
@@ -242,7 +245,7 @@ target ``doc`` must be called explicitly.
$ ninja -C build_dir doc
Tarball
--------
+=======
Released tarballs are available from `<https://knot-resolver.cz/download/>`_
@@ -261,7 +264,7 @@ It's also possible to make a development snapshot tarball:
.. _packaging:
Packaging
----------
+=========
Recommended build options for packagers:
@@ -276,7 +279,7 @@ Recommended build options for packagers:
* ``-Dunit_tests=enabled`` to force build of unit tests
Systemd
-~~~~~~~
+-------
It's recommended to use the upstream system unit files. If any customizations
are required, drop-in files should be used, instead of patching/changing the
@@ -292,7 +295,7 @@ To support enabling services after boot, you must also link ``kresd.target`` to
ln -s ../kresd.target /usr/lib/systemd/system/multi-user.target.wants/kresd.target
Trust anchors
-~~~~~~~~~~~~~
+-------------
If the target distro has externally managed (read-only) DNSSEC trust anchors
or root hints use this:
@@ -305,8 +308,9 @@ In case you want to have automatically managed DNSSEC trust anchors instead,
set ``-Dmanaged_ta=enabled`` and make sure both ``keyfile_default`` file and
its parent directories are writable by kresd process (after package installation!).
+************
Docker image
-------------
+************
Visit `hub.docker.com/r/cznic/knot-resolver
<https://hub.docker.com/r/cznic/knot-resolver/>`_ for instructions how to run
@@ -318,7 +322,6 @@ For development, it's possible to build the container directly from your git tre
$ docker build -t knot-resolver .
-
.. _jemalloc: https://jemalloc.net
.. _libuv: https://github.com/libuv/libuv
.. _LuaJIT: http://luajit.org/luajit.html
diff --git a/doc/conf.py b/doc/dev/conf.py
index 52db3a72..3960e544 100644
--- a/doc/conf.py
+++ b/doc/dev/conf.py
@@ -16,7 +16,6 @@ if os.environ.get('READTHEDOCS', None) == 'True':
extensions = [
'sphinx.ext.todo',
'sphinx.ext.viewcode',
- 'sphinx_tabs.tabs',
'breathe',
]
@@ -36,7 +35,7 @@ master_doc = 'index'
# General information about the project.
project = u'Knot Resolver'
copyright = u'CZ.NIC labs'
-with open('../meson.build') as f:
+with open('../../meson.build') as f:
for line in f:
match = re.match(r"\s*version\s*:\s*'([^']+)'.*", line)
if match is not None:
@@ -57,7 +56,7 @@ primary_domain = 'py'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
+html_static_path = ['../_static']
# Output file base name for HTML help builder.
htmlhelp_basename = 'apidoc'
@@ -72,9 +71,11 @@ html_theme_options = {
'collapse_navigation': False,
'sticky_navigation': True,
}
-html_logo = '_static/logo-negativ.svg'
-html_style = 'css/main.css'
-
+html_logo = '../_static/logo-negativ-dev.svg'
+html_css_files = [
+ 'css/custom.css',
+ 'css/dev.css',
+]
# -- Options for LaTeX output --------------------------------------------------
# Grouping the document tree into LaTeX files. List of tuples
diff --git a/doc/config-answer-reordering.rst b/doc/dev/config-answer-reordering.rst
index 624e7d4e..624e7d4e 100644
--- a/doc/config-answer-reordering.rst
+++ b/doc/dev/config-answer-reordering.rst
diff --git a/doc/config-lua-dnssec.rst b/doc/dev/config-lua-dnssec.rst
index f20e2b30..7be49630 100644
--- a/doc/config-lua-dnssec.rst
+++ b/doc/dev/config-lua-dnssec.rst
@@ -9,9 +9,9 @@ DNSSEC, data verification
Good news! Knot Resolver uses secure configuration by default, and this configuration
should not be changed unless absolutely necessary, so feel free to skip over this section.
-.. include:: ../daemon/lua/trust_anchors.rst
+.. include:: ../../daemon/lua/trust_anchors.rst
DNSSEC is main technology to protect data, but it is also possible to change how strictly
resolver checks data from insecure DNS zones:
-.. include:: ../lib/layer/mode.rst
+.. include:: ../../lib/layer/mode.rst
diff --git a/doc/config-lua-experimental.rst b/doc/dev/config-lua-experimental.rst
index f709c1c7..f709c1c7 100644
--- a/doc/config-lua-experimental.rst
+++ b/doc/dev/config-lua-experimental.rst
diff --git a/doc/config-lua-logging-monitoring.rst b/doc/dev/config-lua-logging-monitoring.rst
index 8a2a25b6..8a2a25b6 100644
--- a/doc/config-lua-logging-monitoring.rst
+++ b/doc/dev/config-lua-logging-monitoring.rst
diff --git a/doc/config-lua-network.rst b/doc/dev/config-lua-network.rst
index c96bbf8a..8bd67eef 100644
--- a/doc/config-lua-network.rst
+++ b/doc/dev/config-lua-network.rst
@@ -15,7 +15,7 @@ This picture illustrates different actors involved DNS resolution process,
supported protocols, and clarifies what we call *server configuration*
and *client configuration*.
-.. image:: server_terminology.svg
+.. image:: ../server_terminology.svg
*Attribution: Icons by Bernar Novalyi from the Noun Project*
diff --git a/doc/config-lua-overview.rst b/doc/dev/config-lua-overview.rst
index cd7f9086..c710f90a 100644
--- a/doc/config-lua-overview.rst
+++ b/doc/dev/config-lua-overview.rst
@@ -82,7 +82,7 @@ Following example demonstrates how to interactively list all currently loaded mo
Before we dive into configuring features, let us explain modularization basics.
-.. include:: ../daemon/bindings/modules.rst
+.. include:: ../../daemon/bindings/modules.rst
Now you know what configuration file to modify, how to read examples and what modules are so you are ready for a real configuration work!
diff --git a/doc/config-lua-performance.rst b/doc/dev/config-lua-performance.rst
index ce7fa16e..ce7fa16e 100644
--- a/doc/config-lua-performance.rst
+++ b/doc/dev/config-lua-performance.rst
diff --git a/doc/config-lua-policy.rst b/doc/dev/config-lua-policy.rst
index 2b34a541..2b34a541 100644
--- a/doc/config-lua-policy.rst
+++ b/doc/dev/config-lua-policy.rst
diff --git a/doc/dev/daemon-bindings-cache.rst b/doc/dev/daemon-bindings-cache.rst
new file mode 120000
index 00000000..99af6dfa
--- /dev/null
+++ b/doc/dev/daemon-bindings-cache.rst
@@ -0,0 +1 @@
+../../daemon/bindings/cache.rst \ No newline at end of file
diff --git a/doc/dev/daemon-bindings-net_client.rst b/doc/dev/daemon-bindings-net_client.rst
new file mode 120000
index 00000000..1a4e688c
--- /dev/null
+++ b/doc/dev/daemon-bindings-net_client.rst
@@ -0,0 +1 @@
+../../daemon/bindings/net_client.rst \ No newline at end of file
diff --git a/doc/dev/daemon-bindings-net_dns_tweaks.rst b/doc/dev/daemon-bindings-net_dns_tweaks.rst
new file mode 120000
index 00000000..223686e2
--- /dev/null
+++ b/doc/dev/daemon-bindings-net_dns_tweaks.rst
@@ -0,0 +1 @@
+../../daemon/bindings/net_dns_tweaks.rst \ No newline at end of file
diff --git a/doc/dev/daemon-bindings-net_server.rst b/doc/dev/daemon-bindings-net_server.rst
new file mode 120000
index 00000000..b8eb0259
--- /dev/null
+++ b/doc/dev/daemon-bindings-net_server.rst
@@ -0,0 +1 @@
+../../daemon/bindings/net_server.rst \ No newline at end of file
diff --git a/doc/dev/daemon-bindings-net_tlssrv.rst b/doc/dev/daemon-bindings-net_tlssrv.rst
new file mode 120000
index 00000000..4b2af0f8
--- /dev/null
+++ b/doc/dev/daemon-bindings-net_tlssrv.rst
@@ -0,0 +1 @@
+../../daemon/bindings/net_tlssrv.rst \ No newline at end of file
diff --git a/doc/dev/daemon-bindings-net_xdpsrv.rst b/doc/dev/daemon-bindings-net_xdpsrv.rst
new file mode 120000
index 00000000..e92e0cac
--- /dev/null
+++ b/doc/dev/daemon-bindings-net_xdpsrv.rst
@@ -0,0 +1 @@
+../../daemon/bindings/net_xdpsrv.rst \ No newline at end of file
diff --git a/doc/dev/daemon-bindings-worker.rst b/doc/dev/daemon-bindings-worker.rst
new file mode 120000
index 00000000..f54f2da0
--- /dev/null
+++ b/doc/dev/daemon-bindings-worker.rst
@@ -0,0 +1 @@
+../../daemon/bindings/worker.rst \ No newline at end of file
diff --git a/doc/dev/daemon-scripting.rst b/doc/dev/daemon-scripting.rst
new file mode 120000
index 00000000..c8ba7ea5
--- /dev/null
+++ b/doc/dev/daemon-scripting.rst
@@ -0,0 +1 @@
+../../daemon/scripting.rst \ No newline at end of file
diff --git a/doc/flowcharts/io_and_worker.dia b/doc/dev/flowcharts/io_and_worker.dia
index 8c5a7555..8c5a7555 100644
--- a/doc/flowcharts/io_and_worker.dia
+++ b/doc/dev/flowcharts/io_and_worker.dia
Binary files differ
diff --git a/doc/flowcharts/task_ERD.dia b/doc/dev/flowcharts/task_ERD.dia
index 2bc065b8..2bc065b8 100644
--- a/doc/flowcharts/task_ERD.dia
+++ b/doc/dev/flowcharts/task_ERD.dia
Binary files differ
diff --git a/doc/flowcharts/tcp_task.dia b/doc/dev/flowcharts/tcp_task.dia
index 6ad58f3a..6ad58f3a 100644
--- a/doc/flowcharts/tcp_task.dia
+++ b/doc/dev/flowcharts/tcp_task.dia
Binary files differ
diff --git a/doc/flowcharts/udp_task.dia b/doc/dev/flowcharts/udp_task.dia
index 6fb86284..6fb86284 100644
--- a/doc/flowcharts/udp_task.dia
+++ b/doc/dev/flowcharts/udp_task.dia
Binary files differ
diff --git a/doc/dev/index.rst b/doc/dev/index.rst
new file mode 100644
index 00000000..d8e89aae
--- /dev/null
+++ b/doc/dev/index.rst
@@ -0,0 +1,53 @@
+.. SPDX-License-Identifier: GPL-3.0-or-later
+
+#############
+Knot Resolver
+#############
+
+Welcome to Knot Resolver's documentation for developers and advanced users!
+
+.. toctree::
+ :caption: Building for sources
+ :name: build-chapter
+ :maxdepth: 1
+
+ build
+
+.. toctree::
+ :caption: Lua configuration
+ :name: configuration-lua-chapter
+ :maxdepth: 1
+
+ config-lua-overview
+ config-lua-network
+ config-lua-performance
+ config-lua-policy
+ config-lua-logging-monitoring
+ config-lua-dnssec
+ config-lua-experimental
+ modules-http-custom-services
+
+.. toctree::
+ :caption: Modules and worker API, Lib
+ :name: configuration-lua-chapter
+ :maxdepth: 1
+
+ lib
+ modules_api
+ worker_api
+
+.. toctree::
+ :caption: Architecture
+ :name: architecture-chapter
+ :maxdepth: 1
+
+ manager-dev
+ architecture
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
diff --git a/doc/lib.rst b/doc/dev/lib.rst
index 096afb64..2378f566 100644
--- a/doc/lib.rst
+++ b/doc/dev/lib.rst
@@ -2,7 +2,7 @@
.. _lib_index:
-.. include:: ../lib/README.rst
+.. include:: ../../lib/README.rst
API reference
=============
diff --git a/doc/manager-dev.rst b/doc/dev/manager-dev.rst
index cdf65267..cdf65267 100644
--- a/doc/manager-dev.rst
+++ b/doc/dev/manager-dev.rst
diff --git a/doc/dev/modules-bogus_log.rst b/doc/dev/modules-bogus_log.rst
new file mode 120000
index 00000000..6d98f43f
--- /dev/null
+++ b/doc/dev/modules-bogus_log.rst
@@ -0,0 +1 @@
+../../modules/bogus_log/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-daf.rst b/doc/dev/modules-daf.rst
new file mode 120000
index 00000000..d91d699b
--- /dev/null
+++ b/doc/dev/modules-daf.rst
@@ -0,0 +1 @@
+../../modules/daf/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-detect_time_jump.rst b/doc/dev/modules-detect_time_jump.rst
new file mode 120000
index 00000000..8b4150ff
--- /dev/null
+++ b/doc/dev/modules-detect_time_jump.rst
@@ -0,0 +1 @@
+../../modules/detect_time_jump/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-detect_time_skew.rst b/doc/dev/modules-detect_time_skew.rst
new file mode 120000
index 00000000..67f7bf54
--- /dev/null
+++ b/doc/dev/modules-detect_time_skew.rst
@@ -0,0 +1 @@
+../../modules/detect_time_skew/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-dns64.rst b/doc/dev/modules-dns64.rst
new file mode 120000
index 00000000..374a1b95
--- /dev/null
+++ b/doc/dev/modules-dns64.rst
@@ -0,0 +1 @@
+../../modules/dns64/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-dnstap.rst b/doc/dev/modules-dnstap.rst
new file mode 120000
index 00000000..a284f204
--- /dev/null
+++ b/doc/dev/modules-dnstap.rst
@@ -0,0 +1 @@
+../../modules/dnstap/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-edns_keepalive.rst b/doc/dev/modules-edns_keepalive.rst
new file mode 120000
index 00000000..91307a4f
--- /dev/null
+++ b/doc/dev/modules-edns_keepalive.rst
@@ -0,0 +1 @@
+../../modules/edns_keepalive/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-experimental_dot_auth.rst b/doc/dev/modules-experimental_dot_auth.rst
new file mode 120000
index 00000000..677cb1e6
--- /dev/null
+++ b/doc/dev/modules-experimental_dot_auth.rst
@@ -0,0 +1 @@
+../../modules/experimental_dot_auth/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-hints.rst b/doc/dev/modules-hints.rst
new file mode 120000
index 00000000..a67befde
--- /dev/null
+++ b/doc/dev/modules-hints.rst
@@ -0,0 +1 @@
+../../modules/hints/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-http-custom-services.rst b/doc/dev/modules-http-custom-services.rst
new file mode 120000
index 00000000..223b22d4
--- /dev/null
+++ b/doc/dev/modules-http-custom-services.rst
@@ -0,0 +1 @@
+../../modules/http/custom_services.rst \ No newline at end of file
diff --git a/doc/dev/modules-http-trace.rst b/doc/dev/modules-http-trace.rst
new file mode 120000
index 00000000..1c4f666c
--- /dev/null
+++ b/doc/dev/modules-http-trace.rst
@@ -0,0 +1 @@
+../../modules/http/trace.rst \ No newline at end of file
diff --git a/doc/dev/modules-http.rst b/doc/dev/modules-http.rst
new file mode 120000
index 00000000..9713c5e7
--- /dev/null
+++ b/doc/dev/modules-http.rst
@@ -0,0 +1 @@
+../../modules/http/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-nsid.rst b/doc/dev/modules-nsid.rst
new file mode 120000
index 00000000..349fabd1
--- /dev/null
+++ b/doc/dev/modules-nsid.rst
@@ -0,0 +1 @@
+../../modules/nsid/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-policy.rst b/doc/dev/modules-policy.rst
new file mode 120000
index 00000000..5a9a1edb
--- /dev/null
+++ b/doc/dev/modules-policy.rst
@@ -0,0 +1 @@
+../../modules/policy/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-predict.rst b/doc/dev/modules-predict.rst
new file mode 120000
index 00000000..f60ef143
--- /dev/null
+++ b/doc/dev/modules-predict.rst
@@ -0,0 +1 @@
+../../modules/predict/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-prefill.rst b/doc/dev/modules-prefill.rst
new file mode 120000
index 00000000..33cac078
--- /dev/null
+++ b/doc/dev/modules-prefill.rst
@@ -0,0 +1 @@
+../../modules/prefill/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-priming.rst b/doc/dev/modules-priming.rst
new file mode 120000
index 00000000..738f810e
--- /dev/null
+++ b/doc/dev/modules-priming.rst
@@ -0,0 +1 @@
+../../modules/priming/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-rebinding.rst b/doc/dev/modules-rebinding.rst
new file mode 120000
index 00000000..f8b05dad
--- /dev/null
+++ b/doc/dev/modules-rebinding.rst
@@ -0,0 +1 @@
+../../modules/rebinding/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-refuse_nord.rst b/doc/dev/modules-refuse_nord.rst
new file mode 120000
index 00000000..4713ba5c
--- /dev/null
+++ b/doc/dev/modules-refuse_nord.rst
@@ -0,0 +1 @@
+../../modules/refuse_nord/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-renumber.rst b/doc/dev/modules-renumber.rst
new file mode 120000
index 00000000..c413055e
--- /dev/null
+++ b/doc/dev/modules-renumber.rst
@@ -0,0 +1 @@
+../../modules/renumber/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-rfc7706.rst b/doc/dev/modules-rfc7706.rst
new file mode 120000
index 00000000..27a0c707
--- /dev/null
+++ b/doc/dev/modules-rfc7706.rst
@@ -0,0 +1 @@
+../../modules/rfc7706.rst \ No newline at end of file
diff --git a/doc/dev/modules-serve_stale.rst b/doc/dev/modules-serve_stale.rst
new file mode 120000
index 00000000..6a37d0db
--- /dev/null
+++ b/doc/dev/modules-serve_stale.rst
@@ -0,0 +1 @@
+../../modules/serve_stale/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-stats.rst b/doc/dev/modules-stats.rst
new file mode 120000
index 00000000..b65f2952
--- /dev/null
+++ b/doc/dev/modules-stats.rst
@@ -0,0 +1 @@
+../../modules/stats/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-ta_sentinel.rst b/doc/dev/modules-ta_sentinel.rst
new file mode 120000
index 00000000..ab255d75
--- /dev/null
+++ b/doc/dev/modules-ta_sentinel.rst
@@ -0,0 +1 @@
+../../modules/ta_sentinel/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-ta_signal_query.rst b/doc/dev/modules-ta_signal_query.rst
new file mode 120000
index 00000000..e0d6929a
--- /dev/null
+++ b/doc/dev/modules-ta_signal_query.rst
@@ -0,0 +1 @@
+../../modules/ta_signal_query/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-view.rst b/doc/dev/modules-view.rst
new file mode 120000
index 00000000..048f4146
--- /dev/null
+++ b/doc/dev/modules-view.rst
@@ -0,0 +1 @@
+../../modules/view/README.rst \ No newline at end of file
diff --git a/doc/dev/modules-watchdog.rst b/doc/dev/modules-watchdog.rst
new file mode 120000
index 00000000..648513a4
--- /dev/null
+++ b/doc/dev/modules-watchdog.rst
@@ -0,0 +1 @@
+../../modules/watchdog/README.rst \ No newline at end of file
diff --git a/doc/modules_api.rst b/doc/dev/modules_api.rst
index 05f7407f..ea23a3e2 100644
--- a/doc/modules_api.rst
+++ b/doc/dev/modules_api.rst
@@ -2,5 +2,5 @@
.. _modules:
-.. include:: ../modules/README.rst
+.. include:: ../../modules/README.rst
diff --git a/doc/dev/rename_ln.sh b/doc/dev/rename_ln.sh
new file mode 100644
index 00000000..4dd26469
--- /dev/null
+++ b/doc/dev/rename_ln.sh
@@ -0,0 +1,9 @@
+
+for name in $(find . -type l -name "modules-*"); do
+ tgt=`readlink "$name"`
+ ln -f -s ../$tgt $name
+done
+
+
+
+
diff --git a/doc/server_terminology.fodg b/doc/dev/server_terminology.fodg
index 8fecf020..8fecf020 100644
--- a/doc/server_terminology.fodg
+++ b/doc/dev/server_terminology.fodg
diff --git a/doc/dev/systemd-multiinst.rst b/doc/dev/systemd-multiinst.rst
new file mode 120000
index 00000000..7a6a86a4
--- /dev/null
+++ b/doc/dev/systemd-multiinst.rst
@@ -0,0 +1 @@
+../../systemd/multiinst.rst \ No newline at end of file
diff --git a/doc/worker_api.rst b/doc/dev/worker_api.rst
index ea971f41..ea971f41 100644
--- a/doc/worker_api.rst
+++ b/doc/dev/worker_api.rst
diff --git a/doc/internal-lua-config.rst b/doc/internal-lua-config.rst
deleted file mode 100644
index 95d79c17..00000000
--- a/doc/internal-lua-config.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-.. SPDX-License-Identifier: GPL-3.0-or-later
-
-.. _internal-lua-config:
-
-**************************
-Internal Lua configuration
-**************************
-
-.. toctree::
- :maxdepth: 2
-
- config-lua-overview
- config-lua-network
- config-lua-performance
- config-lua-policy
- config-lua-logging-monitoring
- config-lua-dnssec
- config-lua-experimental
diff --git a/doc/modules-bogus_log.rst b/doc/modules-bogus_log.rst
deleted file mode 120000
index 61ead500..00000000
--- a/doc/modules-bogus_log.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/bogus_log/README.rst \ No newline at end of file
diff --git a/doc/modules-daf.rst b/doc/modules-daf.rst
deleted file mode 120000
index 7715ed64..00000000
--- a/doc/modules-daf.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/daf/README.rst \ No newline at end of file
diff --git a/doc/modules-detect_time_jump.rst b/doc/modules-detect_time_jump.rst
deleted file mode 120000
index 28214822..00000000
--- a/doc/modules-detect_time_jump.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/detect_time_jump/README.rst \ No newline at end of file
diff --git a/doc/modules-detect_time_skew.rst b/doc/modules-detect_time_skew.rst
deleted file mode 120000
index f0c0d149..00000000
--- a/doc/modules-detect_time_skew.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/detect_time_skew/README.rst \ No newline at end of file
diff --git a/doc/modules-dns64.rst b/doc/modules-dns64.rst
deleted file mode 120000
index 792753a7..00000000
--- a/doc/modules-dns64.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/dns64/README.rst \ No newline at end of file
diff --git a/doc/modules-dnstap.rst b/doc/modules-dnstap.rst
deleted file mode 120000
index f77d78ec..00000000
--- a/doc/modules-dnstap.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/dnstap/README.rst \ No newline at end of file
diff --git a/doc/modules-edns_keepalive.rst b/doc/modules-edns_keepalive.rst
deleted file mode 120000
index ec7a3589..00000000
--- a/doc/modules-edns_keepalive.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/edns_keepalive/README.rst \ No newline at end of file
diff --git a/doc/modules-experimental_dot_auth.rst b/doc/modules-experimental_dot_auth.rst
deleted file mode 120000
index c5bbfdc5..00000000
--- a/doc/modules-experimental_dot_auth.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/experimental_dot_auth/README.rst \ No newline at end of file
diff --git a/doc/modules-hints.rst b/doc/modules-hints.rst
deleted file mode 120000
index 16063101..00000000
--- a/doc/modules-hints.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/hints/README.rst \ No newline at end of file
diff --git a/doc/modules-http-custom-services.rst b/doc/modules-http-custom-services.rst
deleted file mode 120000
index 5cbc7ec1..00000000
--- a/doc/modules-http-custom-services.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/http/custom_services.rst \ No newline at end of file
diff --git a/doc/modules-http-trace.rst b/doc/modules-http-trace.rst
deleted file mode 120000
index c11fca0e..00000000
--- a/doc/modules-http-trace.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/http/trace.rst \ No newline at end of file
diff --git a/doc/modules-http.rst b/doc/modules-http.rst
deleted file mode 120000
index 3fc5fec3..00000000
--- a/doc/modules-http.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/http/README.rst \ No newline at end of file
diff --git a/doc/modules-nsid.rst b/doc/modules-nsid.rst
deleted file mode 120000
index 7ea4cc77..00000000
--- a/doc/modules-nsid.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/nsid/README.rst \ No newline at end of file
diff --git a/doc/modules-policy.rst b/doc/modules-policy.rst
deleted file mode 120000
index 690a2b5d..00000000
--- a/doc/modules-policy.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/policy/README.rst \ No newline at end of file
diff --git a/doc/modules-predict.rst b/doc/modules-predict.rst
deleted file mode 120000
index a4a8424a..00000000
--- a/doc/modules-predict.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/predict/README.rst \ No newline at end of file
diff --git a/doc/modules-prefill.rst b/doc/modules-prefill.rst
deleted file mode 120000
index cfa8384a..00000000
--- a/doc/modules-prefill.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/prefill/README.rst \ No newline at end of file
diff --git a/doc/modules-priming.rst b/doc/modules-priming.rst
deleted file mode 120000
index a36c3bfc..00000000
--- a/doc/modules-priming.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/priming/README.rst \ No newline at end of file
diff --git a/doc/modules-rebinding.rst b/doc/modules-rebinding.rst
deleted file mode 120000
index a8e9d016..00000000
--- a/doc/modules-rebinding.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/rebinding/README.rst \ No newline at end of file
diff --git a/doc/modules-refuse_nord.rst b/doc/modules-refuse_nord.rst
deleted file mode 120000
index 22e585cf..00000000
--- a/doc/modules-refuse_nord.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/refuse_nord/README.rst \ No newline at end of file
diff --git a/doc/modules-renumber.rst b/doc/modules-renumber.rst
deleted file mode 120000
index 1764c78a..00000000
--- a/doc/modules-renumber.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/renumber/README.rst \ No newline at end of file
diff --git a/doc/modules-rfc7706.rst b/doc/modules-rfc7706.rst
deleted file mode 120000
index 11b5c3d8..00000000
--- a/doc/modules-rfc7706.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/rfc7706.rst \ No newline at end of file
diff --git a/doc/modules-serve_stale.rst b/doc/modules-serve_stale.rst
deleted file mode 120000
index 98fa5318..00000000
--- a/doc/modules-serve_stale.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/serve_stale/README.rst \ No newline at end of file
diff --git a/doc/modules-stats.rst b/doc/modules-stats.rst
deleted file mode 120000
index c8c5583e..00000000
--- a/doc/modules-stats.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/stats/README.rst \ No newline at end of file
diff --git a/doc/modules-ta_sentinel.rst b/doc/modules-ta_sentinel.rst
deleted file mode 120000
index 669e5a4e..00000000
--- a/doc/modules-ta_sentinel.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/ta_sentinel/README.rst \ No newline at end of file
diff --git a/doc/modules-ta_signal_query.rst b/doc/modules-ta_signal_query.rst
deleted file mode 120000
index 15e5d67f..00000000
--- a/doc/modules-ta_signal_query.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/ta_signal_query/README.rst \ No newline at end of file
diff --git a/doc/modules-view.rst b/doc/modules-view.rst
deleted file mode 120000
index da228331..00000000
--- a/doc/modules-view.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/view/README.rst \ No newline at end of file
diff --git a/doc/modules-watchdog.rst b/doc/modules-watchdog.rst
deleted file mode 120000
index ac7d5477..00000000
--- a/doc/modules-watchdog.rst
+++ /dev/null
@@ -1 +0,0 @@
-../modules/watchdog/README.rst \ No newline at end of file
diff --git a/doc/systemd-multiinst.rst b/doc/systemd-multiinst.rst
deleted file mode 120000
index 2f532708..00000000
--- a/doc/systemd-multiinst.rst
+++ /dev/null
@@ -1 +0,0 @@
-../systemd/multiinst.rst \ No newline at end of file
diff --git a/doc/upgrading.rst b/doc/upgrading.rst
deleted file mode 100644
index b41dd7a5..00000000
--- a/doc/upgrading.rst
+++ /dev/null
@@ -1,338 +0,0 @@
-.. SPDX-License-Identifier: GPL-3.0-or-later
-
-.. _upgrading:
-
-*********
-Upgrading
-*********
-
-This section summarizes steps required when upgrading to newer Knot Resolver versions.
-We advise users to also read :ref:`release_notes` for respective versions.
-Section *Module changes* is relevant only for users who develop or use third-party modules.
-
-
-Upcoming changes
-================
-
-Following section provides information about selected changes in not-yet-released versions.
-We advise users to prepare for these changes sooner rather than later to make it easier to upgrade to
-newer versions when they are released.
-
-* Command line option ``--forks`` (``-f``) `is deprecated and will be eventually removed
- <https://gitlab.nic.cz/knot/knot-resolver/-/issues/631>`_.
- Preferred way to manage :ref:`systemd-multiple-instances` is to use a process manager,
- e.g. systemd_ or supervisord_.
-* Function :func:`verbose` is deprecated and will be eventually removed.
- Prefered way to change logging level is use to :func:`log_level`.
-
-.. _`systemd`: https://systemd.io/
-.. _`supervisord`: http://supervisord.org/
-
-
-5.x to 6.x
-==========
-
-* see the more detailed guide for :ref:`upgrading to version 6.x <upgrading-to-6>`
-
-
-5.4 to 5.5
-==========
-
-Packagers & Developers
-----------------------
-
-* Knot DNS >= 3.0.2 is required.
-
-Module API changes
-------------------
-* Function `cache.zone_import` was removed;
- you can use `ffi.C.zi_zone_import` instead (different API).
-* When using :ref:`proxyv2`, the meaning of ``qsource.flags`` and ``qsource.comm_flags``
- in :c:member:`kr_request` changes so that ``flags`` describes the original client
- communicating with the proxy, while ``comm_flags`` describes the proxy communicating
- with the resolver. When there is no proxy, ``flags`` and ``comm_flags`` are the same.
-
-
-5.3 to 5.4
-==========
-
-Configuration file
-------------------
-
-* ``kind='doh'`` in :func:`net.listen` was renamed to ``kind='doh_legacy'``. It is recommended to switch to the new DoH implementation with ``kind='doh2'``.
-* :func:`verbose` has been deprecated. In case you want to change logging level,
- there is new function :func:`log_level`.
-
-Packagers & Developers
-----------------------
-
-* meson option ``verbose_log`` was removed.
-
-Module changes
---------------
-
-* lua function ``warn()`` was removed, use ``log_warn()`` instead. The new function takes a log group number as the first argument.
-* C functions ``kr_log_req()`` and ``kr_log_q()`` were replaced by ``kr_log_req1()`` and ``kr_log_q1()`` respectively. The new function have slightly different API.
-
-
-5.2 to 5.3
-==========
-
-Configuration file
-------------------
-
-* Module ``dnstap``: option ``log_responses`` has been moved inside a new ``client`` section. Refer to the configuration example in :ref:`mod-dnstap`.
-
-Packagers & Developers
-----------------------
-
-* Knot DNS >= 2.9 is required.
-
-5.1 to 5.2
-==========
-
-Users
------
-
-* DoH over HTTP/1 and unencrypted transports is still available in
- :ref:`legacy http module <mod-http-doh>` (``kind='doh'``).
- This module will not receive receive any more bugfixes and will be eventually removed.
-* Users of :ref:`control-sockets` API need to terminate each command sent to resolver with newline
- character (ASCII ``\n``). Correct usage: ``cache.stats()\n``.
- Newline terminated commands are accepted by all resolver versions >= 1.0.0.
-* `DNS Flag Day 2020 <https://www.dnsflagday.net/2020/>`_ is now effective and Knot Resolver uses
- maximum size of UDP answer to 1232 bytes. Please double-check your firewall,
- it has to allow DNS traffic on UDP and **also TCP** port 53.
-* Human readable output in interactive mode and from :ref:`control-sockets` was improved and
- as consequence slightly changed its format. Users who need machine readable output for scripts
- should use Lua function ``tojson()`` to convert Lua values into standard JSON format instead
- of attempting to parse the human readable output.
- For example API call ``tojson(cache.stats())\n`` will return JSON string with ``cache.stats()``
- results represented as dictionary.
- Function ``tojson()`` is available in all resolver versions >= 1.0.0.
-
-Configuration file
-------------------
-
-* Statistics exporter :ref:`mod-graphite` now uses default prefix which combines
- :func:`hostname()` and :envvar:`worker.id` instead of bare :func:`hostname()`.
- This prevents :ref:`systemd-multiple-instances` from sending
- conflicting statistics to server. In case you want to continue in previous time series you
- can manually set the old values using option ``prefix``
- in :ref:`Graphite configuration <mod-graphite>`.
- Beware that non-default values require careful
- :ref:`instance-specific-configuration` to avoid conflicting names.
-* Lua variable :envvar:`worker.id` is now a string with either Systemd instance name or PID
- (instead of number). If your custom configuration uses :envvar:`worker.id` value please
- check your scripts.
-
-Module changes
---------------
-* Reply packet :c:type:`kr_request.answer`
- `is not allocated <https://gitlab.nic.cz/knot/knot-resolver/-/merge_requests/985>`_
- immediately when the request comes.
- See the new :c:func:`kr_request_ensure_answer` function,
- wrapped for lua as ``req:ensure_answer()``.
-
-
-5.0 to 5.1
-==========
-
-Module changes
---------------
-
-* Modules which use :c:type:`kr_request.trace_log` handler need update to modified handler API. Example migration is `modules/watchdog/watchdog.lua <https://gitlab.nic.cz/knot/knot-resolver/-/merge_requests/957/diffs#6831501329bbf9e494048fe269c6b02944fc227c>`_.
-* Modules which were using logger :c:func:`kr_log_qverbose_impl` need migration to new logger :c:func:`kr_log_q`. Example migration is `modules/rebinding/rebinding.lua <https://gitlab.nic.cz/knot/knot-resolver/-/merge_requests/957/diffs#6c74dcae147221ca64286a3ed028057adb6813b9>`_.
-* Modules which were using :c:func:`kr_ranked_rrarray_add` should note that on success it no longer returns exclusively zero but index into the array (non-negative). Error states are unchanged (negative).
-
-
-4.x to 5.x
-==========
-
-Users
------
-
-* Control socket location has changed
-
- .. csv-table::
- :header: "","4.x location","5.x location"
-
- "with systemd","``/run/knot-resolver/control@$ID``","``/run/knot-resolver/control/$ID``"
- "without systemd","``$PWD/tty/$PID``","``$PWD/control/$PID``"
-
-* ``-f`` / ``--forks`` command-line option is deprecated.
- In case you just want to trigger non-interactive mode, there's new ``-n`` / ``--noninteractive``.
- This forking style `was not ergonomic <https://gitlab.nic.cz/knot/knot-resolver/issues/529>`_;
- with independent kresd processes you can better utilize a process manager (e.g. systemd).
-
-
-Configuration file
-------------------
-
-* Network interface are now configured in ``kresd.conf`` with
- :func:`net.listen` instead of systemd sockets (`#485
- <https://gitlab.nic.cz/knot/knot-resolver/issues/485>`_). See
- the following examples.
-
- .. tip:: You can find suggested network interface settings based on your
- previous systemd socket configuration in
- ``/var/lib/knot-resolver/.upgrade-4-to-5/kresd.conf.net`` which is created
- during the package update to version 5.x.
-
- .. csv-table::
- :header: "4.x - systemd socket file", "5.x - kresd.conf"
-
- "kresd.socket
- | [Socket]
- | ListenDatagram=127.0.0.1:53
- | ListenStream=127.0.0.1:53","| ``net.listen('127.0.0.1', 53, { kind = 'dns' })``"
- "kresd.socket
- | [Socket]
- | FreeBind=true
- | BindIPv6Only=both
- | ListenDatagram=[::1]:53
- | ListenStream=[::1]:53
- "," | ``net.listen('127.0.0.1', 53, { kind = 'dns', freebind = true })``
- | ``net.listen('::1', 53, { kind = 'dns', freebind = true })``"
- "kresd-tls.socket
- | [Socket]
- | ListenStream=127.0.0.1:853","| ``net.listen('127.0.0.1', 853, { kind = 'tls' })``"
- "kresd-doh.socket
- | [Socket]
- | ListenStream=127.0.0.1:443","| ``net.listen('127.0.0.1', 443, { kind = 'doh' })``"
- "kresd-webmgmt.socket
- | [Socket]
- | ListenStream=127.0.0.1:8453","| ``net.listen('127.0.0.1', 8453, { kind = 'webmgmt' })``"
-
-* :func:`net.listen` throws an error if it fails to bind. Use ``freebind=true`` option
- to bind to nonlocal addresses.
-
-
-4.2.2 to 4.3+
-=============
-
-Module changes
---------------
-
-* In case you wrote your own module which directly calls function
- ``kr_ranked_rrarray_add()``, you need to additionally call function
- ``kr_ranked_rrarray_finalize()`` after each batch (before changing
- the added memory regions). For a specific example see `changes in dns64 module
- <https://gitlab.nic.cz/knot/knot-resolver/commit/edb8ffef7fbe48befeb3f7164d38079dd0be3302#1fe36e8ac0729b279645f7237b7122b1c457a982>`_.
-
-.. _upgrade-from-3-to-4:
-
-4.x to 4.2.1+
-=============
-
-Users
------
-
-* If you have previously installed ``knot-resolver-dbgsym`` package on Debian,
- please remove it and install ``knot-resolver-dbg`` instead.
-
-3.x to 4.x
-==========
-
-Users
------
-
-* DNSSEC validation is now turned on by default. If you need to disable it, see
- :ref:`dnssec-config`.
-* ``-k/--keyfile`` and ``-K/--keyfile-ro`` daemon options were removed. If needed,
- use ``trust_anchors.add_file()`` in configuration file instead.
-* Configuration for :ref:`HTTP module <mod-http>` changed significantly as result of
- adding :ref:`mod-http-doh` support. Please see examples below.
-* In case you are using your own custom modules, move them to the new module
- location. The exact location depends on your distribution. Generally, modules previously
- in ``/usr/lib/kdns_modules`` should be moved to ``/usr/lib/knot-resolver/kres_modules``.
-
-Configuration file
-~~~~~~~~~~~~~~~~~~
-
-* ``trust_anchors.file``, ``trust_anchors.config()`` and ``trust_anchors.negative``
- aliases were removed to avoid duplicity and confusion. Migration table:
-
- .. csv-table::
- :header: "3.x configuration", "4.x configuration"
-
- "``trust_anchors.file = path``", "``trust_anchors.add_file(path)``"
- "``trust_anchors.config(path, readonly)``", "``trust_anchors.add_file(path, readonly)``"
- "``trust_anchors.negative = nta_set``", "``trust_anchors.set_insecure(nta_set)``"
-
-* ``trust_anchors.keyfile_default`` is no longer accessible and is can be set
- only at compile time. To turn off DNSSEC, use :func:`trust_anchors.remove()`.
-
- .. csv-table::
- :header: "3.x configuration", "4.x configuration"
-
- "``trust_anchors.keyfile_default = nil``", "``trust_anchors.remove('.')``"
-
-* Network for HTTP endpoints is now configured using same mechanism as for normal DNS endpoints,
- please refer to chapter :ref:`config-lua-network`. Migration table:
-
- .. csv-table::
- :header: "3.x configuration", "4.x configuration"
-
- "``modules = { http = { host = '192.0.2.1', port = 443 }}``","see chapter :ref:`config-lua-network`"
- "``http.config({ host = '192.0.2.1', port = 443 })``","see chapter :ref:`config-lua-network`"
- "``modules = { http = { endpoints = ... }}``","see chapter :ref:`mod-http-custom-endpoint`"
- "``http.config({ endpoints = ... })``","see chapter :ref:`mod-http-custom-endpoint`"
-
-Packagers & Developers
-----------------------
-
-* Knot DNS >= 2.8 is required.
-* meson >= 0.46 and ninja is required.
-* meson build system is now used for compiling the project. For instructions, see
- the :ref:`build`. Packagers should pay attention to section :ref:`packaging`
- for information about systemd unit files and trust anchors.
-* Embedding LMDB is no longer supported, lmdb is now required as an external dependency.
-* Trust anchors file from upstream is installed and used as default unless you
- override ``keyfile_default`` during build.
-
-Module changes
-~~~~~~~~~~~~~~
-
-* Default module location has changed from ``{libdir}/kdns_modules`` to
- ``{libdir}/knot-resolver/kres_modules``. Modules are now in the lua namespace
- ``kres_modules.*``.
-* ``kr_straddr_split()`` API has changed.
-
-* C modules defining ``*_layer`` or ``*_props`` symbols need to use a different style, but it's typically a trivial change.
- Instead of exporting the corresponding symbols, the module should assign pointers to its static structures inside its ``*_init()`` function. Example migration:
- `bogus_log module <https://gitlab.nic.cz/knot/knot-resolver/commit/2875a3970#9fa69cdc6ee1903dc22e3262f58996395acab364>`_.
-
-.. _upgrade-from-2-to-3:
-
-2.x to 3.x
-==========
-
-Users
------
-
-* Module :ref:`mod-hints` has option :func:`hints.use_nodata` enabled by default,
- which is what most users expect. Add ``hints.use_nodata(false)`` to your config
- to revert to the old behavior.
-* Modules ``cookie`` and ``version`` were removed.
- Please remove relevant configuration lines with ``modules.load()`` and ``modules =``
- from configuration file.
-* Valid configuration must open cache using ``cache.open()`` or ``cache.size =``
- before executing cache operations like ``cache.clear()``.
- (Older versions were silently ignoring such cache operations.)
-
-Packagers & Developers
-----------------------
-
-* Knot DNS >= 2.7.2 is required.
-
-Module changes
-~~~~~~~~~~~~~~
-
-* API for Lua modules was refactored, please see :ref:`significant-lua-changes`.
-* New layer was added: ``answer_finalize``.
-* ``kr_request`` keeps ``::qsource.packet`` beyond the ``begin`` layer.
-* ``kr_request::qsource.tcp`` renamed to ``::qsource.flags.tcp``.
-* ``kr_request::has_tls`` renamed to ``::qsource.flags.tls``.
-* ``kr_zonecut_add()``, ``kr_zonecut_del()`` and ``kr_nsrep_sort()`` changed
- parameters slightly.
diff --git a/doc/NEWS.rst b/doc/user/NEWS.rst
index 3c84052a..8a93bc77 100644
--- a/doc/NEWS.rst
+++ b/doc/user/NEWS.rst
@@ -32,5 +32,5 @@ Patch version
This definition is not applicable to versions older than 5.2.0.
-.. include:: ../NEWS
+.. include:: ../../NEWS
:end-before: 5.x branch longterm support
diff --git a/doc/user/conf.py b/doc/user/conf.py
new file mode 100644
index 00000000..fb2bd287
--- /dev/null
+++ b/doc/user/conf.py
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+import os
+import re
+
+import sphinx_rtd_theme
+
+# -- General configuration -----------------------------------------------------
+
+# General information about the project.
+project = u'Knot Resolver'
+copyright = u'CZ.NIC labs'
+with open('../../meson.build') as f:
+ for line in f:
+ match = re.match(r"\s*version\s*:\s*'([^']+)'.*", line)
+ if match is not None:
+ version = match.groups()[0]
+release = version
+
+# Add any Sphinx extension module names here, as strings.
+extensions = [
+ 'sphinx.ext.todo',
+ 'sphinx.ext.viewcode',
+ 'sphinx_tabs.tabs',
+]
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'friendly'
+
+# -- Options for HTML output ---------------------------------------------------
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['../_static']
+
+# Theme
+html_theme = 'sphinx_rtd_theme'
+html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
+
+html_theme_options = {
+ 'logo_only': True, # if we have a html_logo below, this shows only the logo with no title text
+ # ToC options
+ 'collapse_navigation': False,
+ 'sticky_navigation': True,
+}
+html_logo = '../_static/logo-negativ.svg'
+html_css_files = [
+ 'css/custom.css',
+ 'css/user.css',
+]
+
+# reStructuredText that will be included at the beginning of every source file that is read.
+# This is a possible place to add substitutions that should be available in every file.
+rst_prolog = """
+.. |yaml| replace:: YAML
+.. |lua| replace:: Lua
+"""
diff --git a/doc/config-cache-predict.rst b/doc/user/config-cache-predict.rst
index f25f95ba..f25f95ba 100644
--- a/doc/config-cache-predict.rst
+++ b/doc/user/config-cache-predict.rst
diff --git a/doc/config-cache-prefill.rst b/doc/user/config-cache-prefill.rst
index b0a24578..b0a24578 100644
--- a/doc/config-cache-prefill.rst
+++ b/doc/user/config-cache-prefill.rst
diff --git a/doc/config-cache.rst b/doc/user/config-cache.rst
index 2a0273ff..66de7da4 100644
--- a/doc/config-cache.rst
+++ b/doc/user/config-cache.rst
@@ -223,4 +223,3 @@ Note that the maximum size cannot be lowered, only increased due to how cache is
Time interval for which a nameserver address will be ignored after determining that it doesn't return (useful) answers.
The intention is to avoid waiting if there's little hope; instead, kresd can immediately SERVFAIL or immediately use stale records (with :ref:`serve-stale <config-serve-stale>`).
-
diff --git a/doc/config-dns64.rst b/doc/user/config-dns64.rst
index d0c89b28..85c4605e 100644
--- a/doc/config-dns64.rst
+++ b/doc/user/config-dns64.rst
@@ -54,7 +54,7 @@ If they appear, they will be replaced by AAAAs generated from As.
# You could even pass '::/0' to always force using generated AAAAs.
-In case you don't want DNS64 for all clients, you can set ``dns64`` option to ``false`` via the :ref:`views <mod-view>` section.
+In case you don't want DNS64 for all clients, you can set ``dns64`` option to ``false`` via the :ref:`views <config-views>` section.
.. code-block:: yaml
diff --git a/doc/config-dnssec-ta.rst b/doc/user/config-dnssec.rst
index b02e2ca7..d22ee4f2 100644
--- a/doc/config-dnssec-ta.rst
+++ b/doc/user/config-dnssec.rst
@@ -1,5 +1,14 @@
.. SPDX-License-Identifier: GPL-3.0-or-later
+.. _config-dnssec:
+
+*************************
+DNSSEC, data verification
+*************************
+
+Good news! Knot Resolver uses secure configuration by default, and this configuration
+should not be changed unless absolutely necessary, so feel free to skip over this section.
+
.. warning::
Options in this section are intended only for expert users and normally should not be needed.
@@ -104,4 +113,31 @@ Following :option:`dnssec <dnssec: false|<options>>` section allow to modify DNS
trust-anchors:
- ". 3600 IN DS 19036 8 2 49AAC11..."
+DNSSEC is main technology to protect data, but it is also possible to change how strictly
+resolver checks data from insecure DNS zones:
+
+.. option:: options/glue-checking: normal|strict|permissive
+
+ :default: normal
+
+ The resolver strictness checking level.
+
+ By default, resolver runs in *normal* mode. There are possibly many small adjustments
+ hidden behind the mode settings, but the main idea is that in *permissive* mode, the resolver
+ tries to resolve a name with as few lookups as possible, while in *strict* mode it spends much
+ more effort resolving and checking referral path. However, if majority of the traffic is covered
+ by DNSSEC, some of the strict checking actions are counter-productive.
+
+ .. csv-table::
+ :header: "Glue type", "Modes when it is accepted", "Example glue [#example_glue]_"
+
+ "mandatory glue", "strict, normal, permissive", "ns1.example.org"
+ "in-bailiwick glue", "normal, permissive", "ns1.example2.org"
+ "any glue records", "permissive", "ns1.example3.net"
+
+ .. [#example_glue] The examples show glue records acceptable from servers
+ authoritative for `org` zone when delegating to `example.org` zone.
+ Unacceptable or missing glue records trigger resolution of names listed
+ in NS records before following respective delegation.
+
.. _lua-http: https://luarocks.org/modules/daurnimator/http
diff --git a/doc/config-edns-keepalive.rst b/doc/user/config-edns-keepalive.rst
index 7823cc0e..7823cc0e 100644
--- a/doc/config-edns-keepalive.rst
+++ b/doc/user/config-edns-keepalive.rst
diff --git a/doc/config-experimental-dot-auth.rst b/doc/user/config-experimental-dot-auth.rst
index 38b21902..38b21902 100644
--- a/doc/config-experimental-dot-auth.rst
+++ b/doc/user/config-experimental-dot-auth.rst
diff --git a/doc/config-experimental.rst b/doc/user/config-experimental.rst
index 57084a06..57084a06 100644
--- a/doc/config-experimental.rst
+++ b/doc/user/config-experimental.rst
diff --git a/doc/config-forward.rst b/doc/user/config-forward.rst
index 523a3308..051f7119 100644
--- a/doc/config-forward.rst
+++ b/doc/user/config-forward.rst
@@ -5,6 +5,52 @@
Forwarding
==========
+*Forwarding* configuration instructs resolver to forward cache-miss queries from clients to manually specified DNS resolvers *(upstream servers)*.
+In other words the *forwarding* mode does exact opposite of the default *recursive* mode because resolver in *recursive* mode automatically selects which servers to ask.
+
+Main use-cases are:
+
+ * Building a tree structure of DNS resolvers to improve performance (by improving cache hit rate).
+ * Accessing domains which are not available using recursion (e.g. if internal company servers return different answers than public ones).
+ * Forwarding through a central DNS traffic filter.
+
+Forwarding implementation in Knot Resolver has following properties:
+
+ * Answers from *upstream* servers are cached.
+ * Answers from *upstream* servers are locally DNSSEC-validated, unless dnssec is disabled.
+ * Resolver automatically selects which IP address from given set of IP addresses will be used (based on performance characteristics).
+ * :ref:`Forwarding <config-forward>` can use either encrypted or unencrypted DNS protocol.
+
+.. warning::
+
+ We strongly discourage use of "fake top-level domains" like ``corp.`` because these made-up domains are indistinguishable from an attack, so DNSSEC validation will prevent such domains from working.
+ If you *really* need a variant of forwarding which does not DNSSEC-validate received data please see chapter :ref:`dns-graft`.
+ In long-term it is better to migrate data into a legitimate, properly delegated domains which do not suffer from these security problems.
+
+.. code-block:: yaml
+
+ forward:
+ # ask everything through some public resolver
+ - subtree: .
+ servers: [ 2001:148f:fffe::1, 193.17.47.1 ]
+
+.. code-block:: yaml
+
+ forward:
+ # encrypted public resolver, again for all names
+ - subtree: .
+ servers:
+ - address: [ 2001:148f:fffe::1, 193.17.47.1 ]
+ transport: tls
+ hostname: odvr.nic.cz
+
+ # use a local authoritative server for an internal-only zone
+ - subtree: internal.example.com
+ servers: [ 10.0.0.53 ]
+ options:
+ authoritative: true
+ dnssec: false
+
The :option:`forward <forward: <list>>` list of rules overrides which servers get asked to obtain DNS data.
.. option:: forward: <list>
@@ -48,27 +94,3 @@ The :option:`forward <forward: <list>>` list of rules overrides which servers ge
:default: true
Enable/disable DNSSEC for a subtree.
-
-.. code-block:: yaml
-
- forward:
- # ask everything through some public resolver
- - subtree: .
- servers: [ 2001:148f:fffe::1, 193.17.47.1 ]
-
-.. code-block:: yaml
-
- forward:
- # encrypted public resolver, again for all names
- - subtree: .
- servers:
- - address: [ 2001:148f:fffe::1, 193.17.47.1 ]
- transport: tls
- hostname: odvr.nic.cz
-
- # use a local authoritative server for an internal-only zone
- - subtree: internal.example.com
- servers: [ 10.0.0.53 ]
- options:
- authoritative: true
- dnssec: false
diff --git a/doc/config-local-data.rst b/doc/user/config-local-data.rst
index 24293105..24293105 100644
--- a/doc/config-local-data.rst
+++ b/doc/user/config-local-data.rst
diff --git a/doc/config-logging-bogus.rst b/doc/user/config-logging-bogus.rst
index 578767bd..578767bd 100644
--- a/doc/config-logging-bogus.rst
+++ b/doc/user/config-logging-bogus.rst
diff --git a/doc/config-logging-debugging.rst b/doc/user/config-logging-debugging.rst
index 79dd54e4..79dd54e4 100644
--- a/doc/config-logging-debugging.rst
+++ b/doc/user/config-logging-debugging.rst
diff --git a/doc/config-logging-dnstap.rst b/doc/user/config-logging-dnstap.rst
index 1c7ced71..1c7ced71 100644
--- a/doc/config-logging-dnstap.rst
+++ b/doc/user/config-logging-dnstap.rst
diff --git a/doc/config-logging-monitoring.rst b/doc/user/config-logging-monitoring.rst
index 5cc80467..081fac75 100644
--- a/doc/config-logging-monitoring.rst
+++ b/doc/user/config-logging-monitoring.rst
@@ -34,8 +34,8 @@ E.g. on distributions using systemd-journald use command ``journalctl -eu knot-r
.. option:: groups: <list of logging groups>
- Use to turn-on ``debug`` logging for the selected :ref:`groups <config_log_groups>` regardless of the global log level.
- Other groups are logged to the log based on the initial level.
+ Use to turn-on ``debug`` logging for the selected `groups <./dev/config-logging-header.html>`_
+ regardless of the global log level. Other groups are logged to the log based on the initial level.
.. It is also possible to enable ``debug`` logging level for particular requests,
.. with :ref:`policies <mod-policy-logging>` or as :ref:`an HTTP service <mod-http-trace>`.
@@ -48,9 +48,12 @@ E.g. on distributions using systemd-journald use command ``journalctl -eu knot-r
That setting logs directly through systemd's facilities (if available) to preserve more meta-data.
Do not edit if you do not know what you are doing.
-Various statistics for monitoring purposes are available in :ref:`config-monitoring-stats`, including export to central systems like Graphite, Metronome, InfluxDB, or Prometheus format.
+Various statistics for monitoring purposes are available in :ref:`config-monitoring-stats`,
+including export to central systems like Graphite, Metronome, InfluxDB, or Prometheus format.
-Additional monitoring and debugging methods are described below. If none of these options fits your deployment or if you have special needs you can configure your own checks and exports using :ref:`async-events`.
+Additional monitoring and debugging methods are described below.
+If none of these options fits your deployment or if you have special
+needs you can configure your own checks and exports using `asynchronous events <./dev/daemon-scripting.html#async-events>`.
.. toctree::
:maxdepth: 1
diff --git a/doc/config-lua.rst b/doc/user/config-lua.rst
index bc1eeefd..bc1eeefd 100644
--- a/doc/config-lua.rst
+++ b/doc/user/config-lua.rst
diff --git a/doc/config-monitoring-stats.rst b/doc/user/config-monitoring-stats.rst
index f86df94c..43c99870 100644
--- a/doc/config-monitoring-stats.rst
+++ b/doc/user/config-monitoring-stats.rst
@@ -28,7 +28,7 @@ exposed as :ref:`config-monitoring-prometheus`.
* ``lazy`` - Statistics collection is enabled at the time of request.
* ``always`` - Statistics collection is always on.
-You can see all built-in statistics in :ref:`mod-stats-list` section.
+You can see all built-in statistics in `built-in statistics <./dev/modules-stats.html#mod-stats-list>`_ section.
.. _config-monitoring-prometheus:
diff --git a/doc/config-multiple-workers.rst b/doc/user/config-multiple-workers.rst
index b31e9e18..b31e9e18 100644
--- a/doc/config-multiple-workers.rst
+++ b/doc/user/config-multiple-workers.rst
diff --git a/doc/config-network-client.rst b/doc/user/config-network-client.rst
index 1c5eda1e..1c5eda1e 100644
--- a/doc/config-network-client.rst
+++ b/doc/user/config-network-client.rst
diff --git a/doc/config-network-dns-tweaks.rst b/doc/user/config-network-dns-tweaks.rst
index 0e3151ea..0e3151ea 100644
--- a/doc/config-network-dns-tweaks.rst
+++ b/doc/user/config-network-dns-tweaks.rst
diff --git a/doc/config-network-server-tls.rst b/doc/user/config-network-server-tls.rst
index b7461754..b7461754 100644
--- a/doc/config-network-server-tls.rst
+++ b/doc/user/config-network-server-tls.rst
diff --git a/doc/config-network-server.rst b/doc/user/config-network-server.rst
index 7e98dbca..e6db04fe 100644
--- a/doc/config-network-server.rst
+++ b/doc/user/config-network-server.rst
@@ -23,10 +23,10 @@ address + port combination.
:header: "Protocol/service", :option:`kind <kind: dns|xdp|dot|doh2|doh-legacy>`
"DNS (unencrypted UDP+TCP, :rfc:`1034`)","``dns``"
- "DNS (unencrypted UDP, :ref:`using XDP Linux API <dns-over-xdp>`)","``xdp``"
+ "DNS (unencrypted UDP, `using XDP Linux API <./dev/daemon-bindings-net_server.html#dns-over-xdp>`_)","``xdp``"
":ref:`dns-over-tls`","``dot``"
":ref:`dns-over-https`","``doh2``"
- ":ref:`mod-http-doh`","``doh-legacy``"
+ "`Legacy DNS-over-HTTPS (DoH) <./dev/modules-http.html#mod-http-doh>`_","``doh-legacy``"
.. note::
diff --git a/doc/config-network.rst b/doc/user/config-network.rst
index 11d3588b..ccdf613c 100644
--- a/doc/config-network.rst
+++ b/doc/user/config-network.rst
@@ -15,7 +15,7 @@ This picture illustrates different actors involved DNS resolution process,
supported protocols, and clarifies what we call *server configuration*
and *client configuration*.
-.. image:: server_terminology.svg
+.. image:: ../server_terminology.svg
*Attribution: Icons by Bernar Novalyi from the Noun Project*
diff --git a/doc/config-nsid.rst b/doc/user/config-nsid.rst
index 8e9dedf0..237eefb8 100644
--- a/doc/config-nsid.rst
+++ b/doc/user/config-nsid.rst
@@ -9,7 +9,7 @@ Knot Resolver provides server-side support for :rfc:`5001`
which allows DNS clients to request resolver to send back its NSID
along with the reply to a DNS request.
This is useful for debugging larger resolver farms
-(e.g. when using :ref:`systemd-multiple-instances`, anycast or load balancers).
+(e.g. when using multiple instances of Knot Resolver, anycast or load balancers).
NSID value can be configured in the resolver's configuration file:
diff --git a/doc/config-overview.rst b/doc/user/config-overview.rst
index 15cb9f62..15cb9f62 100644
--- a/doc/config-overview.rst
+++ b/doc/user/config-overview.rst
diff --git a/doc/config-performance.rst b/doc/user/config-performance.rst
index dbd8d12d..dbd8d12d 100644
--- a/doc/config-performance.rst
+++ b/doc/user/config-performance.rst
diff --git a/doc/config-policy-new.rst b/doc/user/config-policy-new.rst
index e9a3c1b5..e9a3c1b5 100644
--- a/doc/config-policy-new.rst
+++ b/doc/user/config-policy-new.rst
diff --git a/doc/config-priming.rst b/doc/user/config-priming.rst
index 37a3c4a6..37a3c4a6 100644
--- a/doc/config-priming.rst
+++ b/doc/user/config-priming.rst
diff --git a/doc/config-rebinding.rst b/doc/user/config-rebinding.rst
index 5dbe6d23..5dbe6d23 100644
--- a/doc/config-rebinding.rst
+++ b/doc/user/config-rebinding.rst
diff --git a/doc/config-refuse-no-rd.rst b/doc/user/config-refuse-no-rd.rst
index 96d62c00..96d62c00 100644
--- a/doc/config-refuse-no-rd.rst
+++ b/doc/user/config-refuse-no-rd.rst
diff --git a/doc/config-renumber.rst b/doc/user/config-renumber.rst
index 573be247..573be247 100644
--- a/doc/config-renumber.rst
+++ b/doc/user/config-renumber.rst
diff --git a/doc/config-reordering.rst b/doc/user/config-reordering.rst
index 7d126646..7d126646 100644
--- a/doc/config-reordering.rst
+++ b/doc/user/config-reordering.rst
diff --git a/doc/config-rfc7706.rst b/doc/user/config-rfc7706.rst
index ed6fd57f..ed6fd57f 100644
--- a/doc/config-rfc7706.rst
+++ b/doc/user/config-rfc7706.rst
diff --git a/doc/config-serve-stale.rst b/doc/user/config-serve-stale.rst
index 1377e530..1377e530 100644
--- a/doc/config-serve-stale.rst
+++ b/doc/user/config-serve-stale.rst
diff --git a/doc/config-ta-sentinel.rst b/doc/user/config-ta-sentinel.rst
index 096582ae..096582ae 100644
--- a/doc/config-ta-sentinel.rst
+++ b/doc/user/config-ta-sentinel.rst
diff --git a/doc/config-ta-signal-query.rst b/doc/user/config-ta-signal-query.rst
index 6e929840..6e929840 100644
--- a/doc/config-ta-signal-query.rst
+++ b/doc/user/config-ta-signal-query.rst
diff --git a/doc/config-time-jump-detection.rst b/doc/user/config-time-jump-detection.rst
index d1db1f5e..d1db1f5e 100644
--- a/doc/config-time-jump-detection.rst
+++ b/doc/user/config-time-jump-detection.rst
diff --git a/doc/config-time-skew-detection.rst b/doc/user/config-time-skew-detection.rst
index b2a163e8..b2a163e8 100644
--- a/doc/config-time-skew-detection.rst
+++ b/doc/user/config-time-skew-detection.rst
diff --git a/doc/config-views.rst b/doc/user/config-views.rst
index 9781d612..ed73de02 100644
--- a/doc/config-views.rst
+++ b/doc/user/config-views.rst
@@ -48,7 +48,7 @@ Conditions
This is the only mandatory part of each rule.
You may use ``[ 0.0.0.0/0, "::/0" ]`` to match all external requests.
- .. option:: dst-subnet <string>
+ .. option:: dst-subnet: <string>
Destination subnet, i.e. restricting the IP address that accepted the query.
@@ -58,7 +58,7 @@ Conditions
the destination address for UDP queries will be just that
instead of the real address.
- .. option:: protocols <list of strings>
+ .. option:: protocols: <list of strings>
List of protocols for the query; subset of:
``udp53``, ``tcp53``, ``dot``, ``doh``, ``doq``.
diff --git a/doc/deployment-advanced-no-manager.rst b/doc/user/deployment-advanced-no-manager.rst
index 31512fe2..31512fe2 100644
--- a/doc/deployment-advanced-no-manager.rst
+++ b/doc/user/deployment-advanced-no-manager.rst
diff --git a/doc/deployment-no-systemd-privileges.rst b/doc/user/deployment-advanced-no-systemd-privileges.rst
index 78e11444..78e11444 100644
--- a/doc/deployment-no-systemd-privileges.rst
+++ b/doc/user/deployment-advanced-no-systemd-privileges.rst
diff --git a/doc/deployment-no-systemd-processes.rst b/doc/user/deployment-advanced-no-systemd-processes.rst
index 362e8546..4800ba96 100644
--- a/doc/deployment-no-systemd-processes.rst
+++ b/doc/user/deployment-advanced-no-systemd-processes.rst
@@ -11,7 +11,7 @@ There following should be taken into consideration when running without systemd:
processes.
* Maintenance daemon(s) have to be executed separately.
* If a process crashes, it might be useful to restart it.
-* Using some mechanism similar to :ref:`mod-watchdog` might be desirable to
+* Using some mechanism similar to `watchdog <./dev/modules-watchdog.html#mod-watchdog>`_ might be desirable to
recover in case a process becomes unresponsive.
Please note, systemd isn't the only process manager and other solutions exist,
@@ -22,6 +22,6 @@ It is also possible to use kresd without any process management at all, which
may be suitable for some purposes (such as low-traffic local / home network resolver,
testing, development or debugging).
-.. include:: ../utils/cache_gc/README.rst
+.. include:: ../../utils/cache_gc/README.rst
.. _`supervisord`: http://supervisord.org/
diff --git a/doc/deployment-no-systemd.rst b/doc/user/deployment-advanced-no-systemd.rst
index 68b3464a..c1a585eb 100644
--- a/doc/deployment-no-systemd.rst
+++ b/doc/user/deployment-advanced-no-systemd.rst
@@ -33,7 +33,7 @@ mind when configuring and running kresd without systemd integration.
.. toctree::
:maxdepth: 2
- deployment-no-systemd-processes
- deployment-no-systemd-privileges
+ deployment-advanced-no-systemd-processes
+ deployment-advanced-no-systemd-privileges
.. _`#529`: https://gitlab.nic.cz/knot/knot-resolver/issues/529
diff --git a/doc/deployment-advanced.rst b/doc/user/deployment-advanced.rst
index 8b39b23f..5739b9f6 100644
--- a/doc/deployment-advanced.rst
+++ b/doc/user/deployment-advanced.rst
@@ -6,4 +6,4 @@ Advanced
:maxdepth: 2
deployment-advanced-no-manager
- deployment-no-systemd \ No newline at end of file
+ deployment-advanced-no-systemd \ No newline at end of file
diff --git a/doc/deployment-docker.rst b/doc/user/deployment-docker.rst
index 462ab061..462ab061 100644
--- a/doc/deployment-docker.rst
+++ b/doc/user/deployment-docker.rst
diff --git a/doc/deployment-manual.rst b/doc/user/deployment-manual.rst
index cc8306e5..cc8306e5 100644
--- a/doc/deployment-manual.rst
+++ b/doc/user/deployment-manual.rst
diff --git a/doc/deployment-systemd.rst b/doc/user/deployment-systemd.rst
index b384adf1..fc52e98a 100644
--- a/doc/deployment-systemd.rst
+++ b/doc/user/deployment-systemd.rst
@@ -12,7 +12,7 @@ In the default installation, Knot Resolver contains systemd integration and star
If you don't have systemd service file for Knot Resolver already installed in your system, you can create one manually with the folling content:
-.. literalinclude:: ../systemd/knot-resolver.service.in
+.. literalinclude:: ../../systemd/knot-resolver.service.in
:language: bash
.. note::
diff --git a/doc/deployment-warning.rst b/doc/user/deployment-warning.rst
index 117d388c..117d388c 100644
--- a/doc/deployment-warning.rst
+++ b/doc/user/deployment-warning.rst
diff --git a/doc/user/developer.rst b/doc/user/developer.rst
new file mode 100644
index 00000000..2d8c1faf
--- /dev/null
+++ b/doc/user/developer.rst
@@ -0,0 +1,9 @@
+.. SPDX-License-Identifier: GPL-3.0-or-later
+
+.. _developer:
+
+***********************
+Developer documentation
+***********************
+
+For simplicity of this user documentation, `the developer documentation <./dev/index.html>`_ is separated.
diff --git a/doc/gettingstarted-config.rst b/doc/user/gettingstarted-config.rst
index 5e993d44..bc3aab5a 100644
--- a/doc/gettingstarted-config.rst
+++ b/doc/user/gettingstarted-config.rst
@@ -265,7 +265,7 @@ Knot Resolver's cache contains data its clients queried for.
If you are concerned about attackers who are able to get access to your
computer system in power-off state, and your storage device is not secured by
encryption, you can move the cache to tmpfs_.
-See :ref:`cache_persistence`.
+See :ref:`config-cache-persistence`.
.. .. raw:: html
diff --git a/doc/gettingstarted-install.rst b/doc/user/gettingstarted-install.rst
index 7efd4a5f..e7e922dc 100644
--- a/doc/gettingstarted-install.rst
+++ b/doc/user/gettingstarted-install.rst
@@ -42,6 +42,4 @@ Please, follow the instructions for your packaging system:
Hub page: https://hub.docker.com/r/cznic/knot-resolver
-
-
-If for some reason you need to install Knot Resolver **from source**, check out :ref:`building from sources <build>` documentation for developers.
+If for some reason you need to install Knot Resolver **from sources**, check out `building from sources <./dev/build.html>`_ in developer documentation.
diff --git a/doc/gettingstarted-startup.rst b/doc/user/gettingstarted-startup.rst
index ea339519..ea339519 100644
--- a/doc/gettingstarted-startup.rst
+++ b/doc/user/gettingstarted-startup.rst
diff --git a/doc/index.rst b/doc/user/index.rst
index 0308bed1..e2706f8c 100644
--- a/doc/index.rst
+++ b/doc/user/index.rst
@@ -56,25 +56,16 @@ If you are a completely new user or new to version 6, please start with chapters
:name: operators-chapter
:maxdepth: 1
- upgrading-to-6
upgrading
+ upgrading-to-6
NEWS
-
.. toctree::
:caption: For developers
- :name: developers-chapter
- :maxdepth: 2
-
- manager-dev
- internal-lua-config
- architecture
- build
- lib
- modules_api
- worker_api
- modules-http-custom-services
+ :name: developer-chapter
+ :maxdepth: 1
+ developer
Indices and tables
==================
diff --git a/doc/manager-api.rst b/doc/user/manager-api.rst
index 80dcc4af..cc297cc4 100644
--- a/doc/manager-api.rst
+++ b/doc/user/manager-api.rst
@@ -110,4 +110,3 @@ The different HTTP methods perform different modifications of the configuration:
To prevent race conditions when changing configuration from multiple clients simultaneously, every response from the Manager has an ``ETag`` header set. Requests then accept ``If-Match`` and ``If-None-Match`` headers with the latest ``ETag`` value and the corresponding request processing fails with HTTP error code 412 (precondition failed).
-
diff --git a/doc/manager-client.rst b/doc/user/manager-client.rst
index c7f90346..c7f90346 100644
--- a/doc/manager-client.rst
+++ b/doc/user/manager-client.rst
diff --git a/doc/upgrading-to-6.rst b/doc/user/upgrading-to-6.rst
index 1028d5b4..9a9db045 100644
--- a/doc/upgrading-to-6.rst
+++ b/doc/user/upgrading-to-6.rst
@@ -49,9 +49,13 @@ The resolver then listens on ``localhost`` with the standard unencrypted DNS pro
To write your own configuration, you can start with the :ref:`getting started chapter for configuration <gettingstarted-config>`.
-If you need to rewrite the old Lua configuration to the new declarative one,
-it's a good idea to find the option you want to convert in the :ref:`internal Lua configuration <internal-lua-config>`,
-and the equivalent option will very likely be in the :ref:`new declarative configuration <configuration-chapter>` documentation in a similar place.
+Conversion to |yaml|
+--------------------
+
+Lua configuration is considered internal as of version 6 and can be found in the `developer documentation`_, which is separate from the user documentation.
+
+To switch from your old Lua configuration, it is a good idea to open this `developer documentation`_ and find the Lua option you want to convert.
+Also open the :ref:`new declarative configuration <configuration-chapter>` documentation. The equivalent |yaml| option will very likely in a similar place.
The documentation structure is basically the same.
Otherwise, you will have to search for the option in the documentation separately.
@@ -99,3 +103,5 @@ validate new config ``kresctl validate path/to/new/confi
look at the Lua config ``kresctl convert path/to/new/config.yaml`` ``cat /path/to/config.conf``
gather metrics point Prometheus etc. at the single HTTP API collect metrics manually from all individual processes
========================================== =========================================================================================== ==================================================================
+
+.. _`developer documentation`: ./dev/index.html
diff --git a/doc/user/upgrading.rst b/doc/user/upgrading.rst
new file mode 100644
index 00000000..05374f65
--- /dev/null
+++ b/doc/user/upgrading.rst
@@ -0,0 +1,21 @@
+.. SPDX-License-Identifier: GPL-3.0-or-later
+
+.. _upgrading:
+
+*********
+Upgrading
+*********
+
+This section summarizes steps required when upgrading to newer Knot Resolver versions.
+We advise users to also read :ref:`release_notes` for respective versions.
+
+5.x to 6.x
+==========
+
+See the detailed guide for :ref:`upgrading to version 6.x <upgrading-to-6>`.
+
+Older versions
+==============
+
+Information for upgrading older versions of the resolver can be found in the older documentation
+hosted on `knot-resolver.readthedocs.io/ <https://knot-resolver.readthedocs.io/en/latest/upgrading.html>`_.
diff --git a/scripts/make-doc.sh b/scripts/make-doc.sh
index 6cefd6c5..1723ada7 100755
--- a/scripts/make-doc.sh
+++ b/scripts/make-doc.sh
@@ -11,10 +11,15 @@ python3 -m knot_resolver_manager.cli schema > ../doc/_static/config.schema.json
generate-schema-doc --config expand_buttons=true ../doc/_static/config.schema.json ../doc/_static/schema_doc.html
popd
-pushd doc
+# generating the user documentation
+SPHINX=$(type -P sphinx-build-3 sphinx-build | head -n1)
+rm -rf doc/html
+"$SPHINX" "$@" -b html -d doc/user/.doctrees doc/user doc/html
+
+pushd doc/dev
doxygen
popd
-SPHINX=$(type -P sphinx-build-3 sphinx-build | head -n1)
-rm -rf doc/html
-"$SPHINX" "$@" -b html -d doc/.doctrees doc doc/html
+# generating the developer documentation
+rm -rf doc/html/dev
+"$SPHINX" "$@" -b html -d doc/dev/.doctrees doc/dev doc/html/dev