Compare commits

..

44 Commits

Author SHA1 Message Date
bobcanthelpyou
c3eaef90ec docs: remove target ipq806x
was marked as broken by #1526 cause of #1505
2019-03-26 00:39:25 +01:00
Matthias Schiffer
a50cac3179
Gluon v2018.1.4 2018-12-20 21:28:46 +01:00
Matthias Schiffer
d1fe2d56ad
docs: add v2018.1.4 release notes 2018-12-20 20:15:46 +01:00
Matthias Schiffer
b84f1adc69
modules: update Gluon packages
f49aef69e8e4 autoupdater: consider end of string smaller than all characters except for '~'
7348db07e2db autoupdater: fix regression in version compare
2018-12-20 19:49:41 +01:00
Martin Weinelt
ebf3a4885d docs, README: Gluon v2018.1.3 2018-11-26 22:20:44 +01:00
Martin Weinelt
d86414e06d docs: add v2018.1.3 release notes 2018-11-26 22:20:44 +01:00
Martin Weinelt
20f842ab1e
docs: releases/v2018.1.2: fix link in known issues 2018-11-26 22:14:15 +01:00
Andreas Ziegler
40f95813dd
Merge pull request #1582 from rubo77/readthedocs
docs: cherry-pick from master of all relevant changes for 2018.1.x
2018-11-25 21:04:27 +01:00
Ruben Barkow
0318d204a7 docs: clarify routing_algo example for BATMAN_V (#1579) 2018-11-25 19:34:19 +01:00
rubo77
c18eb388ef docs: add routing_algo example 2018-11-25 19:34:05 +01:00
rubo77
20adee3227 docs: multidomain: fix indentation 2018-11-25 19:34:00 +01:00
bobcanthelpyou
9a84bbf6ba docs: features/autoupdater: fix typos and add GLUON_TARGET for make clean 2018-11-25 19:33:55 +01:00
Martin Weinelt
61cdb44c77 docs: move site configuration repositories list to the wiki (#1552) 2018-11-25 19:33:47 +01:00
yanosz
b56bf77979 docs: user/site: improve explanation of basic_rates / supported_rates (#1540) 2018-11-25 19:33:37 +01:00
Martin Weinelt
1617442981
docs: releases/v2018.1.2: update known issues with kmod dependencies regression 2018-11-25 02:51:13 +01:00
Sven Eckelmann
8647b782f7 kernel: collect module symvers for external modules (#1580)
Collect module symvers for all external modules to make them available
for modpost. This fixes dependencies for most external modules.

  root@ffv-525400123456:/# modinfo batman-adv
  module:         /lib/modules/4.4.153/batman-adv.ko
  alias:          net-pf-16-proto-16-family-batadv
  alias:          rtnl-link-batadv
  version:        openwrt-2018.1-5
  description:    B.A.T.M.A.N. advanced
  author:         Marek Lindner <mareklindner@neomailbox.ch>, Simon Wunderlich <sw@simonwunderlich.de>
  license:        GPL
  depends:

After:

  root@ffv-525400123456:/# modinfo batman-adv
  module:         /lib/modules/4.4.153/batman-adv.ko
  alias:          net-pf-16-proto-16-family-batadv
  alias:          rtnl-link-batadv
  version:        openwrt-2018.1-5
  description:    B.A.T.M.A.N. advanced
  author:         Marek Lindner <mareklindner@neomailbox.ch>, Simon Wunderlich <sw@simonwunderlich.de>
  license:        GPL
  depends:        libcrc32c,cfg80211
2018-11-24 14:26:32 +01:00
Martin Weinelt
d4862a0130 docs, README: Gluon v2018.1.2 2018-11-20 20:49:02 +01:00
Martin Weinelt
7202216495 docs: add v2018.1.2 release notes 2018-11-20 20:49:02 +01:00
Martin Weinelt
0bb3742f51
modules: update routing packages
bc6e7f6 Merge pull request #425 from ecsv/batadv-18.06
c00a1bf alfred: Merge bugfixes from 2018.4
7bf62cc batman-adv: Merge bugfixes from 2018.4
d1cf6d1 Merge pull request #422 from ecsv/batadv-18.06
121c92d batctl: Don't overwrite default PKG_BUILD_DIR
95e56cf alfred: Add openwrt revision to internal version
93cce26 batctl: Add openwrt revision to internal version
1a83b56 batman-adv: Add openwrt revision to internal version
1ba424a batman-adv: Load module with AutoProbe
b9656fb batman-adv: Fix search for cfg80211 module symbols
059d726 batman-adv: Remove unused option "interfaces" in config
3d5c2d0 batman-adv: Add DEBUG_LOG -> DEBUGFS dependency
a9a4b04 batman-adv: Rebuild automatically on mac80211 changes
2018-11-14 17:28:56 +01:00
Ruben Barkow
42c895944f docs: multidomain: fix site.conf path to basic and supported rates 2018-11-14 02:38:49 +01:00
Martin Weinelt
1649358d17 docs: releases/v2018.1: add remark about GLUON_WLAN_MESH variable
fixes #1561
2018-11-10 15:29:14 +01:00
Martin Weinelt
e107415949 modules: update routing packages (#1554)
8b76007 nodogsplash: fix download hash
ebc5874 Merge pull request #417 from bluewavenet/openwrt-18.06
f68a998 nodogsplash: Backport v3.2.1 to OpenWrt 18.06
2e21588 Merge pull request #414 from ecsv/batadv-18.06
3785b55 Merge pull request #411 from bluewavenet/openwrt-18.06
ddef390 batman-adv: Merge bugfixes from 2018.3
ed5d97c nodogsplash: add missing config options
b0e37f2 Merge pull request #409 from wfleurant/backport-fix-luci-cjdns
85775e9 luci-app-cjdns: luci admin support for cjdns-v20.2 (#394)
59e8158 Merge pull request #407 from bluewavenet/openwrt-18.06
883dec4 nodogsplash: Backport v3.2.0
021153d nodogsplash: Remove nodogsplash and nodogsplash2 in preparation for backport of v3.2.0
9d9c0d0 Merge pull request #403 from dangowrt/bmx7-for-openwrt-18.06
ab3529a bmx7: Avoid namespace collision with libubox.
f0b852b bmx7: add config trigger
2018-10-12 19:25:29 +02:00
Andreas Ziegler
ff38b5add7 gluon-status-page: don't cache index meta redirect 2018-10-12 19:25:23 +02:00
Andreas Ziegler
aade4393fb gluon-config-mode-core: don't cache index meta redirect 2018-10-12 19:25:20 +02:00
David Bauer
faddb3d193 ar71xx: flag FritzBox 4020 buttons as active low (#1544)
Buttons of AVM FritzBox 4020 are incorrectly flagged as active high.

This was an oversight as RFKill button was working as expected even
with incorrectly flagged GPIO.

Config mode is still accessable but will start on any button press, not
only for the ones >= 10 seconds.

This commit corrects this behavior to the expected one (10 second long
press necessary to enter config mode).
2018-10-02 00:58:17 +02:00
Matthias Schiffer
51b7928a55
modules: update OpenWrt packages
40da7ecf21ff socat: Fix CRDLY, TABDLY and CSIZE shifts for PowerPC
a5bbf27e3532 libxml2: add Debian patches to address CVEs
1e77dfa7b084 tiff: fix remaining CVEs
cad5ceed6a87 unbound: drop odhcpd leases with wrong field count
eb5ac25380e7 postgresql: security bump to 9.5.14
43f14b81120a unbound: limit outside script source to init funciton scope
2018-09-04 19:15:23 +02:00
Matthias Schiffer
4644f85bfc
modules: update LEDE
184fe11483b9 LEDE v17.01.6: revert to branch defaults
9a96ec08a953 LEDE v17.01.6: adjust config defaults
2252731af43d grub2: rebase patches
d3e325dfeffd bzip2: Fix CVE-2016-3189
6aae528cc3b7 grub2: Fix CVE-2015-8370
9d3825a0279a scripts: bundle-libraries: fix logic flaw
6e8f1c387892 scripts: bundle-libraries: prevent loading host locales (FS#1803)
f712db9df632 kernel: bump kernel 4.4 to version 4.4.153
55840040dfcc mt76: Fix mirror hash
bb7c4cff2086 dropbear: backport upstream fix for CVE-2018-15599
8a72a868fd80 kernel: bump kernel 4.4 to version 4.4.151
9c0bab0059f7 kernel: bump kernel 4.4 to version 4.4.150
2018-09-04 19:15:22 +02:00
Martin Weinelt
dddd2cd011 ipq806x: mark as broken because of unstable wifi drivers 2018-09-04 01:06:03 +02:00
Matthias Schiffer
7408f04605
gluon-mesh-batman-adv: respondd: remove incorrect field width limits
At least the ifindex and the flags fields can be larger than 0xff.

Fixes #1523
2018-09-01 11:13:58 +02:00
Matthias Schiffer
469e0107e2
docs, README: Gluon v2018.1.1 2018-08-28 20:54:53 +02:00
Matthias Schiffer
ed3cb1f541
docs: add v2018.1.1 release notes 2018-08-26 15:08:39 +02:00
Matthias Schiffer
bc0d240d75
docs: releases/v2018.1: add regressions to known issues
Fixes #1519
2018-08-26 15:08:39 +02:00
Matthias Schiffer
b4e87400ca
modules: update LEDE
8f5c55f63ece tools/e2fsprogs: update to 1.44.1
d35a7bf4b462 e2fsprogs: bump to 1.44.0
79ac69d9c926 tools/e2fsprogs: Update to 1.43.7
5d9114c9cb3b tools/e2fsprogs: Update to 1.43.6
7955fab22ac4 tools/e2fsprogs: Update to 1.43.5
866e5b495677 tools/e2fsprogs: Update to 1.43.4
a964738a5c88 Revert "tools/e2fsprogs: fix building on a glibc 2.27 host"
1e09cbf11844 tools/bison: Update to 3.0.5
9e864bfccea5 mac80211: brcmfmac: fix compilation with SDIO support
13f219569d4c mac80211: brcmfmac: backport patch setting WIPHY_FLAG_HAVE_AP_SME
0c76265d0819 mac80211: brcmfmac: backport important changes from the 4.19
9d8940c5b92f mac80211: brcmfmac: backport important changes from the 4.18
84ef414bd422 mac80211: brcmfmac: backport important changes from the 4.16
57102f6c0633 mac80211: brcmfmac: backport important changes from the 4.15
6805e44004b7 mac80211: brcmfmac: backport important changes from the 4.14
e3bc2e488d03 mac80211: brcmfmac: backport important changes from the 4.13
00b4e6567726 mac80211: brcmfmac: backport important changes from the 4.12
f8c364b72042 mac80211: brcmfmac: backport use-after-free fix from 4.11
85e6ac468efc mac80211: brcmfmac: group 4.11 backport patches
d3b8b5be3455 openssl: update to version 1.0.2p
f3865bd4efa8 kernel: bump kernel 4.4 to version 4.4.148
5886a5060a4c mbedtls: update to version 2.7.5
9bc43f3e65bc curl: fix some security problems
b3983323a1f2 wpa_supplicant: fix CVE-2018-14526
6449ed155301 tools: findutils: fix compilation with glibc 2.28
6e78c5502c94 tools: m4: fix compilation with glibc 2.28
583fd4b229b0 brcm47xx: revert upstream commit breaking BCM4718A1

Fixes build with glibc 2.28.
2018-08-21 21:25:03 +02:00
Matthias Schiffer
6a3d5554c1
modules: update LEDE
0a2c984222d0 kernel: ext4: fix check to prevent initializing reserved inodes
91d209362b97 kernel: bump kernel 4.4 to version 4.4.147
b5d9776cd24b firmware: amd64-microcode: update to 20180524
55ab8649e72b firmware: intel-microcode: bump to 20180703

Fixes #1504
2018-08-09 23:23:57 +02:00
Andreas Ziegler
0cb98882d0 modules: update LEDE
309414ee8d uclient: update to latest git HEAD
bcf91e578c downloads.mk: introduce name-agnostic PROJECT_GIT variable
b7e3f10e80 sdk: include arch/arm/ Linux includes along with arch/arm64/ ones
d93ef3c8c8 sdk: bundle usbip userspace sources
e5b7404f25 kmod-sched-cake: bump to 20180716
2725ad8de4 iproute2: merge upstream CAKE support
28d4e55432 WDR4900v1 remove dt node for absent hw crypto.
21c317a892 build: fix compile error when a package includes itself in PROVIDES
aee5c53a8d apm821xx: fix sata access freezes
54b91c85e7 Revert "iproute2: tc: bump to support kmod-sched-cake"
90eac8984a Revert "kmod-sched-cake: bump to 20180716"
91c9400816 scripts: bundle-libraries: fix build on OS X (FS#1493)
54c0ef6ff5 build: bundle-libraries.sh: patch bundled ld.so
79c8f2f50b mtd: improve check for TRX header being already fixed
828eaeee25 mtd: support bad blocks within the mtd_fixtrx()
8d4da3c589 iproute2: tc: bump to support kmod-sched-cake
0e1606ba3d kmod-sched-cake: bump to 20180716
c6a46c6e1d LEDE v17.01.5: revert to branch defaults
248b358903 LEDE v17.01.5: adjust config defaults
38e704be71 kernel: bump kernel 4.4 to version 4.4.140
2018-08-06 01:32:08 +02:00
Andreas Ziegler
a0286d5641 docs: vpn: fastd's unencrypted method is 'null', not 'none' 2018-08-05 22:31:33 +02:00
mokkin
aaef6163ff docs: site: fix typo (#1498) 2018-07-29 20:14:19 +02:00
Sven Eckelmann
ea9a69f7da gluon-client-bridge: Revert "move IPv4 local subnet route to br-client (#1312)"
The commit b3762fc61c ("gluon-client-bridge: move IPv4 local subnet route
to br-client (#1312)") moves the IPv4 prefix from the local-port interface
to br-client. A client requesting an IPv4 connection to the IPv4 anycast
address of the node (the device running gluon) will create following
packets:

1. ARP packet from client to get the MAC of the mac address of the anycast
   IPv4 address
2. ARP reply from node to client with the anycast MAC address for the IPv4
   anycast address
3. IPv4 packet from client which requires reply (for example ICMP echo
   request)
4. ARP request for the client MAC address for its IPv4 address in prefix4
   (done with the mac address of br-client and transmitted over br-client)
5. IPv4 packet from node (transmitted over br-client with br-client MAC
   address) as reply for the client IPv4 packet (for example ICMP echo
   reply)

The step 4 and 5 are problematic here because packets use the node specific
MAC addresses from br-client instead of the anycast MAC address. The client
will receive the ARP packet with the node specific MAC address and change
their own neighbor IP (translation) table. This will for example break the
access to the status page to the connected device or the anycast DNS
forwarder implementation when the client roams to a different node.

This reverts commit b3762fc61c and adds an
upgrade code to remove local_node_route on on existing installations.
2018-07-22 16:43:00 +02:00
Sven Eckelmann
a7a5db9f54 gluon-mesh-batman-adv: Drop IPv4 anycast related packets from/to bat0
The commit b3762fc61c ("gluon-client-bridge: move IPv4 local subnet route
to br-client (#1312)") moves the IPv4 prefix from the local-port interface
to br-client. A client requesting an IPv4 connection to the IPv4 anycast
address of the node (the device running gluon) will create following
packets:

1. ARP packet from client to get the MAC of the mac address of the anycast
   IPv4 address
2. ARP reply from node to client with the anycast MAC address for the IPv4
   anycast address
3. IPv4 packet from client which requires reply (for example ICMP echo
   request)
4. ARP request for the client MAC address for its IPv4 address in prefix4
   (done with the mac address of br-client and transmitted over br-client)
5. IPv4 packet from node (transmitted over br-client with br-client MAC
   address) as reply for the client IPv4 packet (for example ICMP echo
   reply)

The step 4 is extremely problematic here. ARP replies with the anycast IPv4
address must not be submitted or received via bat0 - expecially not when it
contains an node specific MAC address as source. When it is still done then
the wrong MAC address is stored in the batadv DAT cache and ARP packet is
maybe even forwarded to clients. This latter is especially true for ARP
requests which are broadcast and will be flooded to the complete mesh.

Clients will see these ARP packets and change their own neighbor IP
(translation) table. They will then try to submit the packets for IPv4
anycast addresses to the complete wrong device in the mesh. This will for
example break the access to the status page to the connected device or the
anycast DNS forwarder implementation. Especially the latter causes extreme
latency when clients try to connect to server using a domain name or even
breaks the connection setup process completely. Both are caused by the
unanswered DNS requests which at first glance look like packet loss.

An node must therefore take care of:

* not transmitting ARP packets related to the anycast IPv4 address over
  bat0
* drop ARP packets related to the anycast IPv4 when they are received on
  bat0 from a still broken node
* don't accept ARP packets related to the anycast IPv4 replies on local
  node when it comes from bat0

Fixes: b3762fc61c ("gluon-client-bridge: move IPv4 local subnet route to br-client (#1312)")
2018-07-22 16:43:00 +02:00
Adorfer
658f1ea402
gluon-config-mode-mesh-vpn: i18n/de: fix missing comma
(cherry picked from commit 65d172f835)
2018-07-19 19:30:34 +02:00
Matthias Schiffer
04c002a7c2
docs: releases/v2018.1: extend explanation of status page rewrite 2018-07-14 21:19:44 +02:00
Matthias Schiffer
18aab98cf8
docs: releases/v2018.1: add note regarding next_node.name change
Fixes: #1463
2018-07-14 21:19:42 +02:00
Christoph Krapp
c28b797c91
modules: update LEDE
aaecfecdcd kernel: bump kernel 4.4 to version 4.4.139
b08003223a base-files: fix links in banner.failsafe
71019a7605 ar71xx: fix 5 GHz Wi-Fi on NBG6716
ba5c0a1dea Revert "base-files: fix UCI config parsing and callback handling"
5c6a8a9cdb kernel: bump kernel 4.4 to version 4.4.138
cf4a37a581 uci: add missing 'option' support to uci_rename()
7fc94b2a25 mac80211: rt2x00: no longer use TXOP_BACKOFF for probe frames
b03826d8aa kernel: bump kernel 4.4 to version 4.4.137
21f44e3389 map: add ealen as configurable uci parameter

Signed-off-by: Christoph Krapp <achterin@googlemail.com>
2018-07-12 19:09:54 +02:00
Julian
098ca81df9
docs: fix wrong Banana Pi model in v2018.1 release notes (#1466) 2018-07-11 21:43:15 +02:00
827 changed files with 23388 additions and 26592 deletions

3
.ecrc
View File

@ -1,3 +0,0 @@
{
"Exclude": ["docs/_build"]
}

View File

@ -1,67 +0,0 @@
# Top-most EditorConfig file
root = true
[*]
end_of_line = lf
insert_final_newline = true
indent_style = tab
charset = utf-8
[Dockerfile]
indent_style = space
indent_size = 4
[/patches/**]
indent_style = unset
indent_size = unset
[*.c]
[*.css]
[*.dia]
indent_style = space
indent_size = 2
[*.h]
[*.html]
[*.js]
[*{.json,.ecrc}]
indent_style = space
indent_size = 2
[*.lua]
[{Makefile,*.mk}]
indent_style = unset
[*.md]
indent_style = space
indent_size = 4
[*.pl]
[*.py]
indent_style = space
indent_size = 4
[*.rst]
indent_style = space
indent_size = 2
[*.sh]
[*.yml]
indent_style = space
indent_size = 2
[CMakeLists.txt]
indent_style = space
indent_size = 2
[{docs,contrib/ci}/*site*/**/*.conf]
indent_style = space
indent_size = 2

View File

@ -1,71 +0,0 @@
---
name: Bug report
about: Report a bug in a recent version of Gluon
label: bug
---
<!--
Please carefully fill out the questionnaire below to help improve the
timely triaging of issues. Walk through the questions below and use
them as an inspiration for what information you can provide.
Make use of codeblocks (three backticks before and after) where
appropriate (configuration excerpts, log output, etc.). Example:
```
your code goes here
```
You can use the "Preview" tab to check how your issue is going to look
before you actually send it in.
Thank you for taking the time to report a bug with the Gluon project.
-->
### Bug report
**What is the problem?**
<!--
- What is not working as expected?
- How is it misbehaving?
- When did the problem first start showing up?
- What were you doing when you first noticed the problem?
- On which devices (vendor, model and revision) is it misbehaving?
- Does the issue appear on multiple devices or targets?
-->
**What is the expected behaviour?**
<!--
- How do you think it should work instead?
- Did it work like that before?
-->
**Gluon Version:**
<!--
Please provide a usable Git reference before applying custom patches:
By using a Git reference:
$ git describe --always
v2018.2-17-g3abadc28
Or the URL to the relevant Gluon commit
https://github.com/freifunk-gluon/gluon/commit/<commit hash here>
-->
**Site Configuration:**
<!--
Please provide the URL to your site configuration repository and the
explicit commit used to build the firmware experiencing the problem.
Additionally excerpts of problem-related configuration parts are
often helpful.
-->
**Custom patches:**
<!--
Be upfront about any custom patches you have applied to your Gluon build, as they might
be part of your problem.
-->

View File

@ -1,12 +0,0 @@
# Docs: <https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/customizing-dependency-updates>
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule: {interval: monthly}
- package-ecosystem: pip
directory: /docs/
schedule: {interval: monthly}

237
.github/filters.yml vendored
View File

@ -1,237 +0,0 @@
{
"ath79-generic": [
"targets/ath79-generic",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"ath79-nand": [
"targets/ath79-nand",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"ath79-mikrotik": [
"targets/ath79-mikrotik",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk",
"targets/mikrotik.inc"
],
"bcm27xx-bcm2708": [
"targets/bcm27xx-bcm2708",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk",
"targets/bcm27xx.inc"
],
"bcm27xx-bcm2709": [
"targets/bcm27xx-bcm2709",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk",
"targets/bcm27xx.inc"
],
"ipq40xx-generic": [
"targets/ipq40xx-generic",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"ipq40xx-mikrotik": [
"targets/ipq40xx-mikrotik",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk",
"targets/mikrotik.inc"
],
"ipq806x-generic": [
"targets/ipq806x-generic",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"lantiq-xrx200": [
"targets/lantiq-xrx200",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"lantiq-xway": [
"targets/lantiq-xway",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"mediatek-mt7622": [
"targets/mediatek-mt7622",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"mpc85xx-p1010": [
"targets/mpc85xx-p1010",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"mpc85xx-p1020": [
"targets/mpc85xx-p1020",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"ramips-mt7620": [
"targets/ramips-mt7620",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"ramips-mt7621": [
"targets/ramips-mt7621",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"ramips-mt76x8": [
"targets/ramips-mt76x8",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"realtek-rtl838x": [
"targets/realtek-rtl838x",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"rockchip-armv8": [
"targets/rockchip-armv8",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"sunxi-cortexa7": [
"targets/sunxi-cortexa7",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"x86-generic": [
"targets/x86-generic",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk",
"targets/x86.inc"
],
"x86-geode": [
"targets/x86-geode",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
],
"x86-legacy": [
"targets/x86-legacy",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk",
"targets/x86.inc"
],
"x86-64": [
"targets/x86-64",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk",
"targets/x86.inc",
"contrib/ci/minimal-site/**",
"package/**"
],
"bcm27xx-bcm2710": [
"targets/bcm27xx-bcm2710",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk",
"targets/bcm27xx.inc"
],
"mvebu-cortexa9": [
"targets/mvebu-cortexa9",
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk"
]
}

59
.github/labeler.yml vendored
View File

@ -1,59 +0,0 @@
---
"3. topic: babel":
- package/gluon-l3roamd/**
- package/gluon-mesh-babel/**
- package/gluon-mmfd/**
"3. topic: batman-adv":
- docs/package/gluon-mesh-batman-adv*
- package/gluon-alfred/**
- package/gluon-cient-bridge/**
- package/gluon-mesh-batman-adv/**
- package/libbatadv/**
"3. topic: build":
- Makefile
- scripts/**
"3. topic: config-mode":
- docs/dev/web/config-mode.rst
- docs/package/gluon-config-mode-*
- packge/gluon-config-mode-*/**
- package/gluon-web*/**
"3. topic: continous integration":
- .github/workflows/*
- contrib/actions/**
- contrib/ci/**
"3. topic: docs":
- docs/**
"3. topic: fastd":
- docs/features/fastd*
- package/gluon-mesh-vpn-fastd/**
"3. topic: firewall":
- package/**/*-firewall
- package/gluon-ebtables-*/**
"3. topic: hardware":
- package/gluon-core/luasrc/lib/gluon/upgrade/010-primary-mac
- package/gluon-core/luasrc/usr/lib/lua/gluon/platform.lua
- targets/*
"3. topic: multidomain":
- docs/features/multidomain*
- docs/multidomain-site-example/**
- package/gluon-config-mode-domain-select/**
- package/gluon-scheduled-domain-switch/**
"3. topic: package":
- package/**
"3. topic: respondd":
- package/**/*respondd*
- package/gluon-respondd/**
"3. topic: status-page":
- package/gluon-status-page/**
"3. topic: tests":
- tests/**
"3. topic: tunneldigger":
- package/gluon-mesh-vpn-tunneldigger/**
"3. topic: wireguard":
- package/gluon-mesh-vpn-wireguard/**
"3. topic: wireless":
- package/gluon-mesh-wireless-sae/**
- package/gluon-private-wifi/**
- package/gluon-web-private-wifi/**
- package/gluon-web-wifi-config/**
- package/gluon-wireless-encryption/**

View File

@ -1,20 +0,0 @@
name: Backport
on:
pull_request_target:
types: [closed, labeled]
permissions:
contents: write # so it can comment
pull-requests: write # so it can create pull requests
jobs:
backport:
name: Backport Pull Request
if: github.repository_owner == 'freifunk-gluon' && github.event.pull_request.merged == true && (github.event_name != 'labeled' || startsWith('backport', github.event.label.name))
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Create backport PRs
uses: korthout/backport-action@v1.2.0
with:
# Config README: https://github.com/korthout/backport-action#backport-action
pull_description: |-
Automatic backport to `${target_branch}`, triggered by a label in #${pull_number}.

View File

@ -1,29 +0,0 @@
name: Build Documentation
on:
push:
paths:
- 'docs/**'
- '.github/workflows/build-docs.yml'
pull_request:
types: [opened, synchronize, reopened]
paths:
- 'docs**/'
- '.github/workflows/build-docs.yml'
permissions:
contents: read
jobs:
build-documentation:
name: docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Dependencies
run: sudo pip3 install sphinx-rtd-theme
- name: Build documentation
run: make -C docs html
- name: Archive build output
uses: actions/upload-artifact@v3
with:
name: docs_output
path: docs/_build/html

View File

@ -1,61 +0,0 @@
name: Build Gluon
on:
push:
branches:
- master
- next*
- v20*
pull_request:
types: [opened, synchronize, reopened]
permissions:
contents: read
jobs:
changed:
permissions:
contents: read # for dorny/paths-filter to fetch a list of changed files
pull-requests: read # for dorny/paths-filter to read pull requests
runs-on: ubuntu-latest
outputs:
targets: ${{ steps.filter.outputs.changes }}
steps:
- uses: actions/checkout@v3
# Filter targets based on changed files
- uses: dorny/paths-filter@v2
id: filter
with:
filters: .github/filters.yml
build_firmware:
needs: changed
if: ${{ needs.changed.outputs.targets != '[]' && needs.changed.outputs.targets != '' }}
strategy:
fail-fast: false
matrix:
# Read back changed targets to create build matrix
target: ${{ fromJSON(needs.changed.outputs.targets) }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Dependencies
run: sudo contrib/actions/install-dependencies.sh
- name: Build
run: contrib/actions/run-build.sh ${{ matrix.target }}
- name: Archive build logs
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.target }}_logs
path: openwrt/logs
- name: Archive build output
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.target }}_output
path: output

View File

@ -1,30 +0,0 @@
---
name: Check patches
on:
push:
paths:
- 'modules'
- 'patches/**'
- '.github/workflows/check-patches.yml'
pull_request:
types: [opened, synchronize, reopened]
paths:
- 'modules'
- 'patches/**'
- '.github/workflows/check-patches.yml'
permissions:
contents: read
jobs:
check-patches:
name: Check patches
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Refresh patches
run: make refresh-patches GLUON_SITEDIR="contrib/ci/minimal-site"
- name: Show diff
run: git status; git diff
- name: Patch status
run: git diff-files --quiet

View File

@ -1,21 +0,0 @@
name: "Label PRs"
on:
# only execute base branch actions
pull_request_target:
permissions:
contents: read
jobs:
labels:
permissions:
contents: read # for actions/labeler to determine modified files
pull-requests: write # for actions/labeler to add labels to PRs
runs-on: ubuntu-latest
if: github.repository_owner == 'freifunk-gluon'
steps:
- uses: actions/labeler@v4
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
sync-labels: true

View File

@ -1,54 +0,0 @@
name: Lint
on:
push:
pull_request:
types: [opened, synchronize, reopened]
permissions:
contents: read
jobs:
lua:
name: Lua
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Dependencies
run: sudo apt-get -y update && sudo apt-get -y install lua-check
- name: Install example site
run: ln -s ./docs/site-example ./site
- name: Lint Lua code
run: make lint-lua
sh:
name: Shell
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Dependencies
run: sudo apt-get -y update && sudo apt-get -y install shellcheck
- name: Install example site
run: ln -s ./docs/site-example ./site
- name: Lint shell code
run: make lint-sh
editorconfig:
name: Editorconfig
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Dependencies
run: sudo apt install curl tar
- name: Install editorconfig-checker
env:
VERSION: 2.7.0
OS: linux
ARCH: amd64
run: |
curl -O -L -C - https://github.com/editorconfig-checker/editorconfig-checker/releases/download/$VERSION/ec-$OS-$ARCH.tar.gz
tar xzf ec-$OS-$ARCH.tar.gz
sudo mv ./bin/ec-$OS-$ARCH /usr/bin/editorconfig-checker
sudo chmod +x /usr/bin/editorconfig-checker
- name: Install example site
run: ln -s ./docs/site-example ./site
- name: Lint editorconfig
run: make lint-editorconfig

6
.gitignore vendored
View File

@ -1,10 +1,6 @@
*~
/openwrt
/lede
/output
/site
/tmp
/packages
.bash_history
.subversion
.wget-hsts
/.scmversion

View File

@ -1,119 +0,0 @@
codes = true
std = "min"
self = false
read_globals = {
"getfenv",
"setfenv",
"unpack",
}
include_files = {
"**/*.lua",
"package/**/luasrc/**/*",
"targets/*",
"package/features",
}
exclude_files = {
"**/*.mk",
}
files["package/**/check_site.lua"] = {
read_globals = {
"alternatives",
"extend",
"in_domain",
"in_site",
"value",
"need",
"need_alphanumeric_key",
"need_array",
"need_array_elements_exclusive",
"need_array_of",
"need_boolean",
"need_chanlist",
"need_domain_name",
"need_number",
"need_number_range",
"need_one_of",
"need_string",
"need_string_array",
"need_string_array_match",
"need_string_match",
"need_table",
"need_value",
"obsolete",
"table_keys",
"this_domain",
},
}
files["package/**/luasrc/lib/gluon/config-mode/*"] = {
globals = {
"MultiListValue",
"DynamicList",
"Flag",
"Form",
"i18n",
"ListValue",
"renderer.render",
"renderer.render_string",
"Section",
"TextValue",
"_translate",
"translate",
"translatef",
"Value",
"Element",
},
}
files["package/**/luasrc/lib/gluon/**/controller/*"] = {
read_globals = {
"_",
"alias",
"call",
"entry",
"model",
"node",
"template",
},
}
files["package/**/luasrc/lib/gluon/ebtables/*"] = {
read_globals = {
"chain",
"rule",
},
max_line_length = false,
}
files["targets/*"] = {
read_globals = {
"class",
"config",
"defaults",
"device",
"env",
"exec",
"exec_capture",
"exec_capture_raw",
"exec_raw",
"factory_image",
"include",
"istrue",
"no_opkg",
"packages",
"sysupgrade_image",
"try_config",
},
}
files["package/features"] = {
read_globals = {
"_",
"feature",
"when",
},
}

View File

@ -1,20 +0,0 @@
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/conf.py
# Optionally set the version of Python and requirements required to build your docs
python:
install:
- requirements: docs/requirements.txt
build:
os: ubuntu-22.04
tools:
python: "3.8"

View File

@ -1,30 +0,0 @@
workspace:
base: /build
#clone:
# git:
# image: woodpeckerci/plugin-git
# settings:
# recursive: true
pipeline:
build-${TARGET}:
image: "ubuntu:latest"
pull: true
environment:
- input_version=v2022.1.4
- GLUON_SITEDIR=../site
- FORCE_UNSAFE_CONFIGURE=1
- GLUON_TARGET=${TARGET}
- GLUON_DEPRECATED=1
commands:
- echo ${TARGET}
# - git config --global init.defaultBranch main
# - sed -i 's/install/install file/' contrib/actions/install-dependencies.sh
# - sh contrib/actions/install-dependencies.sh
# - sh contrib/actions/run-build.sh ${TARGET}
matrix:
TARGET:
- ath79-generic
- x86-64

View File

@ -23,8 +23,8 @@ using other parts or why the proposed change breaks other parts of the system.
They might even refuse the idea altogether - after all, they have to sleep well
after merging the changes, too.
The preferred way to discuss is in the IRC channel ([#gluon] on irc.hackint.org)
or on the [mailing list], however, you can also open a new issue on GitHub to
The preferred way to discuss in the IRC channel ([#gluon] on irc.hackint.org)
or on the [mailing list], however, you can also open a new issue on Github to
discuss there. We maintain a [list of rejected features] and we'd like to
kindly ask you to review it first. In general, looking for duplicates may save
you some time.
@ -47,7 +47,7 @@ triggered and what you did to fix it. If in question, have a glance at the
existing commit messages to get the idea.
[packages]: https://gluon.readthedocs.io/en/latest/user/site.html#packages
[packages]: http://gluon.readthedocs.org/en/latest/user/site.html#packages
[#gluon]: https://webirc.hackint.org/#gluon
[mailing list]: mailto:gluon@luebeck.freifunk.net
[list of rejected features]: https://github.com/freifunk-gluon/gluon/issues?q=label%3A%222.+status%3A+rejected%22
[list of rejected features]: https://github.com/freifunk-gluon/gluon/issues?q=label%3Arejected

View File

@ -1,7 +1,7 @@
The code of Project Gluon may be distributed under the following terms, unless
noted otherwise in individual files or subtrees.
Copyright (c) Project Gluon
Copyright (c) 2013-2017, Project Gluon
All rights reserved.
Redistribution and use in source and binary forms, with or without
@ -25,11 +25,10 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
OpenWrt is licensed under the terms of the GNU General Public License Version 2,
which can be found at openwrt/LICENSE after the OpenWrt repository has been
LEDE and OpenWrt are licensed under the terms of the GNU General Public License
Version 2, which can be found at lede/LICENSE after the lede repository has been
obtained. This applies to the following repositories:
* openwrt
* lede
* packages/openwrt
* packages/routing
* packages/luci

271
Makefile
View File

@ -4,112 +4,62 @@ LC_ALL:=C
LANG:=C
export LC_ALL LANG
.SHELLFLAGS = -ec
# initialize (possibly already user set) directory variables
GLUON_SITEDIR ?= site
GLUON_TMPDIR ?= tmp
GLUON_OUTPUTDIR ?= output
GLUON_IMAGEDIR ?= $(GLUON_OUTPUTDIR)/images
GLUON_PACKAGEDIR ?= $(GLUON_OUTPUTDIR)/packages
# check for spaces & resolve possibly relative paths
define mkabspath
ifneq (1,$(words [$($(1))]))
$$(error $(1) must not contain spaces)
endif
override $(1) := $(abspath $($(1)))
ifneq (1,$(words [$($(1))]))
$$(error $(1) must not contain spaces)
endif
override $(1) := $(abspath $($(1)))
endef
escape = '$(subst ','\'',$(1))'
GLUON_SITEDIR ?= site
$(eval $(call mkabspath,GLUON_SITEDIR))
$(eval $(call mkabspath,GLUON_TMPDIR))
$(eval $(call mkabspath,GLUON_OUTPUTDIR))
$(eval $(call mkabspath,GLUON_IMAGEDIR))
$(eval $(call mkabspath,GLUON_PACKAGEDIR))
ifeq ($(realpath $(GLUON_SITEDIR)/site.mk),)
$(error No site configuration was found. Please check out a site configuration to $(GLUON_SITEDIR))
endif
export GLUON_TMPDIR GLUON_IMAGEDIR GLUON_PACKAGEDIR DEVICES
$(GLUON_SITEDIR)/site.mk:
$(error No site configuration was found. Please check out a site configuration to $(GLUON_SITEDIR))
include $(GLUON_SITEDIR)/site.mk
GLUON_RELEASE ?= $(error GLUON_RELEASE not set. GLUON_RELEASE can be set in site.mk or on the command line)
GLUON_DEPRECATED ?= 0
ifneq ($(GLUON_BRANCH),)
$(warning *** Warning: GLUON_BRANCH has been deprecated, please set GLUON_AUTOUPDATER_BRANCH and GLUON_AUTOUPDATER_ENABLED instead.)
GLUON_AUTOUPDATER_BRANCH ?= $(GLUON_BRANCH)
GLUON_AUTOUPDATER_ENABLED ?= 1
endif
GLUON_AUTOUPDATER_ENABLED ?= 0
# initialize (possibly already user set) directory variables
GLUON_TMPDIR ?= tmp
GLUON_OUTPUTDIR ?= output
GLUON_IMAGEDIR ?= $(GLUON_OUTPUTDIR)/images
GLUON_PACKAGEDIR ?= $(GLUON_OUTPUTDIR)/packages
GLUON_DEBUGDIR ?= $(GLUON_OUTPUTDIR)/debug
GLUON_TARGETSDIR ?= targets
GLUON_PATCHESDIR ?= patches
$(eval $(call mkabspath,GLUON_TMPDIR))
$(eval $(call mkabspath,GLUON_OUTPUTDIR))
$(eval $(call mkabspath,GLUON_IMAGEDIR))
$(eval $(call mkabspath,GLUON_PACKAGEDIR))
$(eval $(call mkabspath,GLUON_TARGETSDIR))
$(eval $(call mkabspath,GLUON_PATCHESDIR))
GLUON_VERSION := $(shell scripts/getversion.sh '.')
GLUON_SITE_VERSION := $(shell scripts/getversion.sh '$(GLUON_SITEDIR)')
GLUON_MULTIDOMAIN ?= 0
GLUON_AUTOREMOVE ?= 0
GLUON_WLAN_MESH ?= 11s
GLUON_DEBUG ?= 0
GLUON_MINIFY ?= 1
# Can be overridden via environment/command line/... to use the Gluon
# build system for non-Gluon builds
define GLUON_BASE_FEEDS ?=
src-link gluon_base ../../package
endef
GLUON_VARS = \
GLUON_VERSION GLUON_SITE_VERSION \
GLUON_RELEASE GLUON_REGION GLUON_MULTIDOMAIN GLUON_AUTOREMOVE GLUON_DEBUG GLUON_MINIFY GLUON_DEPRECATED \
GLUON_DEVICES GLUON_TARGETSDIR GLUON_PATCHESDIR GLUON_TMPDIR GLUON_IMAGEDIR GLUON_PACKAGEDIR GLUON_DEBUGDIR \
GLUON_SITEDIR GLUON_AUTOUPDATER_BRANCH GLUON_AUTOUPDATER_ENABLED GLUON_LANGS GLUON_BASE_FEEDS \
GLUON_TARGET BOARD SUBTARGET
unexport $(GLUON_VARS)
GLUON_ENV = $(foreach var,$(GLUON_VARS),$(var)=$(call escape,$($(var))))
export GLUON_RELEASE GLUON_REGION GLUON_MULTIDOMAIN GLUON_WLAN_MESH GLUON_DEBUG
show-release:
@echo '$(GLUON_RELEASE)'
update: FORCE
@
export $(GLUON_ENV)
scripts/update.sh
scripts/patch.sh
scripts/feeds.sh
@GLUON_SITEDIR='$(GLUON_SITEDIR)' scripts/update.sh
@GLUON_SITEDIR='$(GLUON_SITEDIR)' scripts/patch.sh
@GLUON_SITEDIR='$(GLUON_SITEDIR)' scripts/feeds.sh
update-patches: FORCE
@
export $(GLUON_ENV)
scripts/update.sh
scripts/update-patches.sh
scripts/patch.sh
refresh-patches: FORCE
@
export $(GLUON_ENV)
scripts/update.sh
scripts/patch.sh
scripts/update-patches.sh
@GLUON_SITEDIR='$(GLUON_SITEDIR)' scripts/update.sh
@GLUON_SITEDIR='$(GLUON_SITEDIR)' scripts/update-patches.sh
@GLUON_SITEDIR='$(GLUON_SITEDIR)' scripts/patch.sh
update-feeds: FORCE
@$(GLUON_ENV) scripts/feeds.sh
@GLUON_SITEDIR='$(GLUON_SITEDIR)' scripts/feeds.sh
update-modules: FORCE
@scripts/update-modules.sh
update-ci: FORCE
@$(GLUON_ENV) scripts/update-ci.sh
GLUON_TARGETS :=
@ -117,120 +67,117 @@ define GluonTarget
gluon_target := $(1)$$(if $(2),-$(2))
GLUON_TARGETS += $$(gluon_target)
GLUON_TARGET_$$(gluon_target)_BOARD := $(1)
GLUON_TARGET_$$(gluon_target)_SUBTARGET := $(2)
GLUON_TARGET_$$(gluon_target)_SUBTARGET := $(if $(3),$(3),$(2))
endef
include $(GLUON_TARGETSDIR)/targets.mk
include targets/targets.mk
OPENWRTMAKE = $(MAKE) -C openwrt
LEDEMAKE = $(MAKE) -C lede
BOARD := $(GLUON_TARGET_$(GLUON_TARGET)_BOARD)
SUBTARGET := $(GLUON_TARGET_$(GLUON_TARGET)_SUBTARGET)
GLUON_CONFIG_VARS := \
GLUON_SITEDIR='$(GLUON_SITEDIR)' \
GLUON_RELEASE='$(GLUON_RELEASE)' \
GLUON_BRANCH='$(GLUON_BRANCH)' \
GLUON_LANGS='$(GLUON_LANGS)' \
BOARD='$(BOARD)' \
SUBTARGET='$(SUBTARGET)'
define CheckTarget
if [ -z '$(BOARD)' ]; then
echo 'Please set GLUON_TARGET to a valid target. Gluon supports the following targets:'
for target in $(GLUON_TARGETS); do
echo " * $$target"
done
exit 1
fi
endef
LEDE_TARGET := $(BOARD)$(if $(SUBTARGET),-$(SUBTARGET))
export LEDE_TARGET
CheckTarget := [ '$(LEDE_TARGET)' ] \
|| (echo 'Please set GLUON_TARGET to a valid target. Gluon supports the following targets:'; $(foreach target,$(GLUON_TARGETS),echo ' * $(target)';) false)
CheckExternal := test -d lede || (echo 'You don'"'"'t seem to have obtained the external repositories needed by Gluon; please call `make update` first!'; false)
define CheckSite
if ! GLUON_SITEDIR='$(GLUON_SITEDIR)' GLUON_SITE_CONFIG='$(1).conf' $(LUA) -e 'assert(dofile("scripts/site_config.lua")(os.getenv("GLUON_SITE_CONFIG")))'; then
echo 'Your site configuration ($(1).conf) did not pass validation'
exit 1
fi
@GLUON_SITEDIR='$(GLUON_SITEDIR)' GLUON_SITE_CONFIG='$(1).conf' $(LUA) scripts/site_config.lua \
|| (echo 'Your site configuration ($(1).conf) did not pass validation.'; false)
endef
list-targets: FORCE
@for target in $(GLUON_TARGETS); do
echo "$$target"
done
lint: lint-editorconfig lint-lua lint-sh
lint-editorconfig: FORCE
@scripts/lint-editorconfig.sh
lint-lua: FORCE
@scripts/lint-lua.sh
lint-sh: FORCE
@scripts/lint-sh.sh
@$(foreach target,$(GLUON_TARGETS),echo '$(target)';)
LUA := openwrt/staging_dir/hostpkg/bin/lua
GLUON_FEATURE_PACKAGES := $(shell scripts/features.sh '$(GLUON_FEATURES)' || echo '__ERROR__')
ifneq ($(filter __ERROR__,$(GLUON_FEATURE_PACKAGES)),)
$(error Error while evaluating GLUON_FEATURES)
endif
GLUON_PACKAGES :=
define merge_packages
$(foreach pkg,$(1),
GLUON_PACKAGES := $$(strip $$(filter-out -$$(patsubst -%,%,$(pkg)) $$(patsubst -%,%,$(pkg)),$$(GLUON_PACKAGES)) $(pkg))
)
endef
$(eval $(call merge_packages,$(GLUON_FEATURE_PACKAGES) $(GLUON_SITE_PACKAGES)))
config: FORCE
@$(CheckExternal)
@$(CheckTarget)
@$(GLUON_CONFIG_VARS) \
scripts/target_config.sh '$(GLUON_TARGET)' '$(GLUON_PACKAGES)' \
> lede/.config
+@$(LEDEMAKE) defconfig
@$(GLUON_CONFIG_VARS) \
scripts/target_config_check.sh '$(GLUON_TARGET)' '$(GLUON_PACKAGES)'
LUA := lede/staging_dir/hostpkg/bin/lua
$(LUA):
+@
@$(CheckExternal)
scripts/module_check.sh
+@[ -e lede/.config ] || $(LEDEMAKE) defconfig
+@$(LEDEMAKE) tools/install
+@$(LEDEMAKE) package/lua/host/install
[ -e openwrt/.config ] || $(OPENWRTMAKE) defconfig
$(OPENWRTMAKE) tools/install
$(OPENWRTMAKE) package/lua/host/compile
prepare-target: config $(LUA) ;
all: prepare-target
$(foreach conf,site $(patsubst $(GLUON_SITEDIR)/%.conf,%,$(wildcard $(GLUON_SITEDIR)/domains/*.conf)),$(call CheckSite,$(conf)))
config: $(LUA) FORCE
+@
scripts/module_check.sh
$(CheckTarget)
$(foreach conf,site $(patsubst $(GLUON_SITEDIR)/%.conf,%,$(wildcard $(GLUON_SITEDIR)/domains/*.conf)),\
$(call CheckSite,$(conf)); \
)
$(OPENWRTMAKE) prepare-tmpinfo
$(GLUON_ENV) $(LUA) scripts/target_config.lua > openwrt/.config
$(OPENWRTMAKE) defconfig
$(GLUON_ENV) $(LUA) scripts/target_config_check.lua
container: FORCE
@scripts/container.sh
all: config
+@
$(GLUON_ENV) $(LUA) scripts/clean_output.lua
$(OPENWRTMAKE)
$(GLUON_ENV) $(LUA) scripts/copy_output.lua
@scripts/clean_output.sh
+@$(LEDEMAKE)
@GLUON_SITEDIR='$(GLUON_SITEDIR)' scripts/copy_output.sh '$(GLUON_TARGET)'
clean download: config
+@$(OPENWRTMAKE) $@
+@$(LEDEMAKE) $@
dirclean: FORCE
+@
[ -e openwrt/.config ] || $(OPENWRTMAKE) defconfig
$(OPENWRTMAKE) dirclean
rm -rf $(GLUON_TMPDIR) $(GLUON_OUTPUTDIR)
+@[ -e lede/.config ] || $(LEDEMAKE) defconfig
+@$(LEDEMAKE) dirclean
@rm -rf $(GLUON_TMPDIR) $(GLUON_OUTPUTDIR)
manifest: $(LUA) FORCE
@
[ '$(GLUON_AUTOUPDATER_BRANCH)' ] || (echo 'Please set GLUON_AUTOUPDATER_BRANCH to create a manifest.'; false)
echo '$(GLUON_PRIORITY)' | grep -qE '^([0-9]*\.)?[0-9]+$$' || (echo 'Please specify a numeric value for GLUON_PRIORITY to create a manifest.'; false)
scripts/module_check.sh
@[ '$(GLUON_BRANCH)' ] || (echo 'Please set GLUON_BRANCH to create a manifest.'; false)
@echo '$(GLUON_PRIORITY)' | grep -qE '^([0-9]*\.)?[0-9]+$$' || (echo 'Please specify a numeric value for GLUON_PRIORITY to create a manifest.'; false)
@$(CheckExternal)
(
export $(GLUON_ENV)
echo 'BRANCH=$(GLUON_AUTOUPDATER_BRANCH)'
echo "DATE=$$($(LUA) scripts/rfc3339date.lua)"
echo 'PRIORITY=$(GLUON_PRIORITY)'
echo
for target in $(GLUON_TARGETS); do
$(LUA) scripts/generate_manifest.lua "$$target"
done
) > 'tmp/$(GLUON_AUTOUPDATER_BRANCH).manifest.tmp'
@( \
echo 'BRANCH=$(GLUON_BRANCH)' && \
echo "DATE=$$($(LUA) scripts/rfc3339date.lua)" && \
echo 'PRIORITY=$(GLUON_PRIORITY)' && \
echo && \
$(foreach GLUON_TARGET,$(GLUON_TARGETS), \
GLUON_SITEDIR='$(GLUON_SITEDIR)' scripts/generate_manifest.sh '$(GLUON_TARGET)' && \
) : \
) > 'tmp/$(GLUON_BRANCH).manifest.tmp'
mkdir -p '$(GLUON_IMAGEDIR)/sysupgrade'
mv 'tmp/$(GLUON_AUTOUPDATER_BRANCH).manifest.tmp' '$(GLUON_IMAGEDIR)/sysupgrade/$(GLUON_AUTOUPDATER_BRANCH).manifest'
@mkdir -p '$(GLUON_IMAGEDIR)/sysupgrade'
@mv 'tmp/$(GLUON_BRANCH).manifest.tmp' '$(GLUON_IMAGEDIR)/sysupgrade/$(GLUON_BRANCH).manifest'
FORCE: ;
.PHONY: FORCE
.NOTPARALLEL:
.ONESHELL:

View File

@ -1,21 +1,10 @@
[![Build Gluon](https://github.com/freifunk-gluon/gluon/actions/workflows/build-gluon.yml/badge.svg?branch=master)](https://github.com/freifunk-gluon/gluon/actions/workflows/build-gluon.yml)
[![License](https://img.shields.io/badge/License-BSD%202--Clause-orange.svg)](https://opensource.org/license/bsd-2-clause/)
[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/freifunk-gluon/gluon?sort=semver)](https://github.com/freifunk-gluon/gluon/releases/latest)
# Gluon
Gluon is a firmware framework to build preconfigured OpenWrt images for public mesh networks.
## Getting started
We have a huge amount of documentation over at https://gluon.readthedocs.io/.
Documentation (incomplete at this time, contribute if you can!) may be found at
https://gluon.readthedocs.org/.
If you're new to Gluon and ready to get your feet wet, have a look at the
[Getting Started Guide](https://gluon.readthedocs.io/en/latest/user/getting_started.html).
[Getting Started Guide](https://gluon.readthedocs.org/en/latest/user/getting_started.html).
Gluon's developers frequent an IRC chatroom at [#gluon](ircs://irc.hackint.org/#gluon)
on [hackint](https://hackint.org/). There is also a [webchat](https://webirc.hackint.org/#irc://irc.hackint.org/#gluon)
that allows for uncomplicated access from within your browser. This channel is also available as a bridged Matrix Room at [#gluon:hackint.org](https://matrix.to/#/#gluon:hackint.org).
**Gluon IRC channel: `#gluon` in [hackint](https://hackint.org/)**
## Issues & Feature requests
@ -30,10 +19,10 @@ the future development of Gluon.
Please refrain from using the `master` branch for anything else but development purposes!
Use the most recent release instead. You can list all releases by running `git tag`
and switch to one by running `git checkout v2022.1 && make update`.
and switch to one by running `git checkout v2018.1.4 && make update`.
If you're using the autoupdater, do not autoupdate nodes with anything but releases.
If you upgrade using random master commits the nodes *might break* eventually.
If you upgrade using random master commits the nodes *will break* eventually.
## Mailinglist

View File

@ -1,53 +0,0 @@
#!/usr/bin/env python3
# Update target filters using
# make update-ci
import re
import os
import sys
import json
# these changes trigger rebuilds on all targets
common = [
"modules",
"Makefile",
"patches/**",
"scripts/**",
"targets/generic",
"targets/targets.mk",
]
# these changes are only built on x86-64
extra = [
"contrib/ci/minimal-site/**",
"package/**"
]
_filter = dict()
# INCLUDE_PATTERN matches:
# include '...'
# include "..."
# include("...")
# include('...')
INCLUDE_PATTERN = "^\\s*include *\\(? *[\"']([^\"']+)[\"']"
# construct filters map from stdin
for target in sys.stdin:
target = target.strip()
_filter[target] = [
f"targets/{target}"
] + common
target_file = os.path.join(os.environ['GLUON_TARGETSDIR'], target)
with open(target_file) as f:
includes = re.findall(INCLUDE_PATTERN, f.read(), re.MULTILINE)
_filter[target].extend([f"targets/{i}" for i in includes])
if target == "x86-64":
_filter[target].extend(extra)
# print filters to stdout in json format, because json is stdlib and yaml compatible.
print(json.dumps(_filter, indent=2))

View File

@ -1,8 +0,0 @@
#!/bin/sh
set -e
apt-get -y update
apt-get -y install git build-essential python3 gawk unzip libncurses5-dev zlib1g-dev libssl-dev libelf-dev wget rsync time qemu-utils
apt-get -y clean
rm -rf /var/lib/apt/lists/*

View File

@ -1,13 +0,0 @@
#!/bin/sh
set -e
export BROKEN=1
export GLUON_AUTOREMOVE=1
export GLUON_DEPRECATED=1
export GLUON_SITEDIR="contrib/ci/minimal-site"
export GLUON_TARGET="$1"
export BUILD_LOG=1
make update
make -j2 V=s

View File

@ -1 +0,0 @@
../../../docs/site-example/i18n/

View File

@ -1 +0,0 @@
../../../docs/site-example/modules

View File

@ -1,180 +0,0 @@
-- This is an example site configuration for Gluon v2022.1
--
-- Take a look at the documentation located at
-- https://gluon.readthedocs.io/ for details.
--
-- This configuration will not work as is. You're required to make
-- community specific changes to it!
{
-- Used for generated hostnames, e.g. freifunk-abcdef123456. (optional)
-- hostname_prefix = 'freifunk-',
-- Name of the community.
site_name = 'Continuous Integration',
-- Shorthand of the community.
site_code = 'ci',
-- 32 bytes of random data, encoded in hexadecimal
-- This data must be unique among all sites and domains!
-- Can be generated using: echo $(hexdump -v -n 32 -e '1/1 "%02x"' </dev/urandom)
domain_seed = 'e9608c4ff338b920992d629190e9ff11049de1dfc3f299eac07792dfbcda341c',
-- Prefixes used within the mesh.
-- prefix6 is required, prefix4 can be omitted if next_node.ip4
-- is not set.
prefix4 = '10.0.0.0/20',
prefix6 = 'fd::/64',
-- Timezone of your community.
-- See https://openwrt.org/docs/guide-user/base-system/system_configuration#time_zones
timezone = 'CET-1CEST,M3.5.0,M10.5.0/3',
-- List of NTP servers in your community.
-- Must be reachable using IPv6!
-- ntp_servers = {'1.ntp.services.ffxx'},
-- Wireless regulatory domain of your community.
regdom = 'DE',
-- Wireless configuration for 2.4 GHz interfaces.
wifi24 = {
-- Wireless channel.
channel = 1,
-- ESSIDs used for client network.
ap = {
ssid = 'gluon-ci-ssid',
-- disabled = true, -- (optional)
-- Configuration for a backward compatible OWE network below.
owe_ssid = 'owe.gluon-ci-ssid', -- (optional - SSID for OWE client network)
owe_transition_mode = true, -- (optional - enables transition-mode - requires ssid as well as owe_ssid)
},
mesh = {
-- Adjust these values!
id = 'ueH3uXjdp', -- usually you don't want users to connect to this mesh-SSID, so use a cryptic id that no one will accidentally mistake for the client WiFi
mcast_rate = 12000,
-- disabled = true, -- (optional)
},
},
-- Wireless configuration for 5 GHz interfaces.
-- This should be equal to the 2.4 GHz variant, except
-- for channel.
wifi5 = {
channel = 44,
outdoor_chanlist = '100-140',
ap = {
ssid = 'gluon-ci-ssid',
},
mesh = {
-- Adjust these values!
id = 'ueH3uXjdp',
mcast_rate = 12000,
},
},
mesh = {
vxlan = true,
batman_adv = {
routing_algo = 'BATMAN_IV',
},
},
-- The next node feature allows clients to always reach the node it is
-- connected to using a known IP address.
next_node = {
-- anycast IPs of all nodes
-- name = { 'nextnode.location.community.example.org', 'nextnode', 'nn' },
ip4 = '10.0.0.1',
ip6 = 'fd::1',
},
-- Options specific to routing protocols (optional)
-- mesh = {
-- Options specific to the batman-adv routing protocol (optional)
-- batman_adv = {
-- Gateway selection class (optional)
-- The default class 20 is based on the link quality (TQ) only,
-- class 1 is calculated from both the TQ and the announced bandwidth
-- gw_sel_class = 1,
-- },
-- },
mesh_vpn = {
-- enabled = true,
fastd = {
-- Refer to https://fastd.readthedocs.io/en/latest/ to better understand
-- what these options do.
-- List of crypto-methods to use.
methods = {'salsa2012+umac'},
mtu = 1312,
-- configurable = true,
-- syslog_level = 'warn',
groups = {
backbone = {
-- Limit number of connected peers to reduce bandwidth.
limit = 1,
-- List of peers.
peers = {
},
-- Optional: nested peer groups
-- groups = {
-- backbone_sub = {
-- ...
-- },
-- ...
-- },
},
-- Optional: additional peer groups, possibly with other limits
-- backbone2 = {
-- ...
-- },
},
},
bandwidth_limit = {
-- The bandwidth limit can be enabled by default here.
enabled = false,
-- Default upload limit (kbit/s).
egress = 200,
-- Default download limit (kbit/s).
ingress = 3000,
},
},
autoupdater = {
-- Default branch (optional), can be overridden by setting GLUON_AUTOUPDATER_BRANCH when building.
-- Set GLUON_AUTOUPDATER_ENABLED to enable the autoupdater by default for newly installed nodes.
branch = 'stable',
-- List of branches. You may define multiple branches.
branches = {
stable = {
name = 'stable',
-- List of mirrors to fetch images from. IPv6 required!
mirrors = {'http://1.updates.services.ffhl/stable/sysupgrade'},
-- Number of good signatures required.
-- Have multiple maintainers sign your build and only
-- accept it when a sufficient number of them have
-- signed it.
good_signatures = 0,
-- List of public keys of maintainers.
pubkeys = {
},
},
},
},
}

View File

@ -1 +0,0 @@
../../../docs/site-example/site.mk

View File

@ -1 +0,0 @@
../minimal-site/i18n

View File

@ -1 +0,0 @@
../minimal-site/modules

View File

@ -1,176 +0,0 @@
-- This is an example site configuration for Gluon v2022.1
--
-- Take a look at the documentation located at
-- https://gluon.readthedocs.io/ for details.
--
-- This configuration will not work as is. You're required to make
-- community specific changes to it!
{
-- Used for generated hostnames, e.g. freifunk-abcdef123456. (optional)
-- hostname_prefix = 'freifunk-',
-- Name of the community.
site_name = 'Continuous Integration',
-- Shorthand of the community.
site_code = 'ci',
-- 32 bytes of random data, encoded in hexadecimal
-- This data must be unique among all sites and domains!
-- Can be generated using: echo $(hexdump -v -n 32 -e '1/1 "%02x"' </dev/urandom)
domain_seed = 'e9608c4ff338b920992d629190e9ff11049de1dfc3f299eac07792dfbcda341c',
-- Prefixes used by clients within the mesh.
-- prefix6 is required, prefix4 can be omitted if next_node.ip4
-- is not set.
prefix6 = 'fdff:cafe:cafe:cafe::/64',
-- Prefixes used by nodes within the mesh
node_prefix6 = 'fdff:cafe:cafe:cafe::/64',
-- Timezone of your community.
-- See https://openwrt.org/docs/guide-user/base-system/system_configuration#time_zones
timezone = 'CET-1CEST,M3.5.0,M10.5.0/3',
-- List of NTP servers in your community.
-- Must be reachable using IPv6!
-- ntp_servers = {'1.ntp.services.ffxx'},
-- Wireless regulatory domain of your community.
regdom = 'DE',
-- Wireless configuration for 2.4 GHz interfaces.
wifi24 = {
-- Wireless channel.
channel = 1,
-- ESSIDs used for client network.
ap = {
ssid = 'gluon-ci-ssid',
-- disabled = true, -- (optional)
-- Configuration for a backward compatible OWE network below.
owe_ssid = 'owe.gluon-ci-ssid', -- (optional - SSID for OWE client network)
owe_transition_mode = true, -- (optional - enables transition-mode - requires ssid as well as owe_ssid)
},
mesh = {
-- Adjust these values!
id = 'ueH3uXjdp', -- usually you don't want users to connect to this mesh-SSID, so use a cryptic id that no one will accidentally mistake for the client WiFi
mcast_rate = 12000,
-- disabled = true, -- (optional)
},
},
-- Wireless configuration for 5 GHz interfaces.
-- This should be equal to the 2.4 GHz variant, except
-- for channel.
wifi5 = {
channel = 44,
outdoor_chanlist = '100-140',
ap = {
ssid = 'gluon-ci-ssid',
-- disabled = true, -- (optional)
-- Configuration for a backward compatible OWE network below.
owe_ssid = 'owe.gluon-ci-ssid', -- (optional - SSID for OWE client network)
owe_transition_mode = true, -- (optional - enables transition-mode - requires ssid as well as owe_ssid)
},
mesh = {
-- Adjust these values!
id = 'ueH3uXjdp',
mcast_rate = 12000,
},
},
-- The next node feature allows clients to always reach the node it is
-- connected to using a known IP address.
next_node = {
-- anycast IPs of all nodes
name = { 'nextnode.location.community.example.org', 'nextnode', 'nn' },
ip4 = '10.0.0.1',
ip6 = 'fd::1',
},
-- Options specific to routing protocols (optional)
mesh = {
vxlan = true,
olsrd = {},
},
mesh_vpn = {
-- enabled = true,
fastd = {
-- Refer to https://fastd.readthedocs.io/en/latest/ to better understand
-- what these options do.
-- List of crypto-methods to use.
methods = {'salsa2012+umac'},
mtu = 1312,
-- configurable = true,
-- syslog_level = 'warn',
groups = {
backbone = {
-- Limit number of connected peers to reduce bandwidth.
limit = 1,
-- List of peers.
peers = {
},
-- Optional: nested peer groups
-- groups = {
-- backbone_sub = {
-- ...
-- },
-- ...
-- },
},
-- Optional: additional peer groups, possibly with other limits
-- backbone2 = {
-- ...
-- },
},
},
bandwidth_limit = {
-- The bandwidth limit can be enabled by default here.
enabled = false,
-- Default upload limit (kbit/s).
egress = 200,
-- Default download limit (kbit/s).
ingress = 3000,
},
},
autoupdater = {
-- Default branch (optional), can be overridden by setting GLUON_AUTOUPDATER_BRANCH when building.
-- Set GLUON_AUTOUPDATER_ENABLED to enable the autoupdater by default for newly installed nodes.
branch = 'stable',
-- List of branches. You may define multiple branches.
branches = {
stable = {
name = 'stable',
-- List of mirrors to fetch images from. IPv6 required!
mirrors = {'http://1.updates.services.ffhl/stable/sysupgrade'},
-- Number of good signatures required.
-- Have multiple maintainers sign your build and only
-- accept it when a sufficient number of them have
-- signed it.
good_signatures = 0,
-- List of public keys of maintainers.
pubkeys = {
},
},
},
},
}

View File

@ -1,57 +0,0 @@
## gluon site.mk makefile example
## GLUON_FEATURES
# Specify Gluon features/packages to enable;
# Gluon will automatically enable a set of packages
# depending on the combination of features listed
GLUON_FEATURES := \
autoupdater \
ebtables-filter-multicast \
ebtables-filter-ra-dhcp \
ebtables-limit-arp \
mesh-olsrd \
mesh-vpn-fastd \
respondd \
status-page \
web-advanced \
web-wizard
GLUON_FEATURES_standard := \
wireless-encryption-wpa3
## GLUON_SITE_PACKAGES
# Specify additional Gluon/OpenWrt packages to include here;
# A minus sign may be prepended to remove a packages from the
# selection that would be enabled by default or due to the
# chosen feature flags
GLUON_SITE_PACKAGES := iwinfo
## DEFAULT_GLUON_RELEASE
# version string to use for images
# gluon relies on
# opkg compare-versions "$1" '>>' "$2"
# to decide if a version is newer or not.
DEFAULT_GLUON_RELEASE := 0.6+exp$(shell date '+%Y%m%d')
# Variables set with ?= can be overwritten from the command line
## GLUON_RELEASE
# call make with custom GLUON_RELEASE flag, to use your own release version scheme.
# e.g.:
# $ make images GLUON_RELEASE=23.42+5
# would generate images named like this:
# gluon-ff%site_code%-23.42+5-%router_model%.bin
GLUON_RELEASE ?= $(DEFAULT_GLUON_RELEASE)
# Default priority for updates.
GLUON_PRIORITY ?= 0
# Region code required for some images; supported values: us eu
GLUON_REGION ?= eu
# Languages to include
GLUON_LANGS ?= en de

View File

@ -5,7 +5,8 @@
# * Works only if directory names and package names are the same (true for all Gluon packages)
# * Doesn't show dependencies through virtual packages correctly
set -e
shopt -s nullglob

View File

@ -1,36 +0,0 @@
FROM debian:bullseye-slim
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
file \
git \
python3 \
build-essential \
gawk \
unzip \
libncurses5-dev \
zlib1g-dev \
libssl-dev \
libelf-dev \
wget \
rsync \
time \
qemu-utils \
ecdsautils \
lua-check \
shellcheck \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir /tmp/ec &&\
wget -O /tmp/ec/ec-linux-amd64.tar.gz https://github.com/editorconfig-checker/editorconfig-checker/releases/download/2.7.0/ec-linux-amd64.tar.gz &&\
tar -xvzf /tmp/ec/ec-linux-amd64.tar.gz &&\
mv bin/ec-linux-amd64 /usr/local/bin/editorconfig-checker &&\
rm -rf /tmp/ec
RUN useradd -d /gluon gluon
USER gluon
VOLUME /gluon
WORKDIR /gluon

View File

@ -4,7 +4,7 @@ use strict;
use warnings;
use Text::Balanced qw(extract_bracketed extract_delimited extract_tagged);
@ARGV >= 1 || die "Usage: $0 <source directory>\n";
@ARGV >= 1 || die "Usage: $0 <source direcory>\n";
my %stringtable;
@ -79,7 +79,7 @@ if( open F, "find @ARGV -type f '(' -name '*.html' -o -name '*.lua' ')' |" )
{
my $stag = quotemeta $1;
my $etag = $stag;
$etag =~ s/\[/]/g;
$etag =~ s/\[/]/g;
( $res ) = extract_tagged($code, $stag, $etag);

View File

@ -1,6 +1,5 @@
#!/bin/bash
set -e
# Script to list all upgrade scripts in a clear manner
# Limitations:
# * Does only show scripts of packages whose `files'/`luasrc' directories represent the whole image filesystem (which are all Gluon packages)
@ -28,7 +27,7 @@ fi
pushd "$(dirname "$0")/.." >/dev/null
find ./package packages -name Makefile | grep -v '^packages/packages/' | while read -r makefile; do
find ./package packages -name Makefile | while read makefile; do
dir="$(dirname "$makefile")"
pushd "$dir" >/dev/null
@ -37,12 +36,13 @@ find ./package packages -name Makefile | grep -v '^packages/packages/' | while r
dirname="$(dirname "$dir" | cut -d/ -f 3-)"
package="$(basename "$dir")"
for file in "${SUFFIX1}"/* "${SUFFIX2}"/*; do
basename="$(basename "${file}")"
suffix="$(dirname "${file}")"
printf "%s\t%s\n" "${basename}" "${BLUE}${repo}${RESET}/${dirname}${dirname:+/}${RED}${package}${RESET}/${suffix}/${GREEN}${basename}${RESET}"
for file in "${SUFFIX1}"/*; do
echo "${GREEN}$(basename "${file}")${RESET}" "(${BLUE}${repo}${RESET}/${dirname}${dirname:+/}${RED}${package}${RESET}/${SUFFIX1})"
done
for file in "${SUFFIX2}"/*; do
echo "${GREEN}$(basename "${file}")${RESET}" "(${BLUE}${repo}${RESET}/${dirname}${dirname:+/}${RED}${package}${RESET}/${SUFFIX2})"
done
popd >/dev/null
done | sort | cut -f2-
done | sort
popd >/dev/null

View File

@ -1,149 +0,0 @@
#!/bin/sh
set -e
topdir="$(realpath "$(dirname "${0}")/../openwrt")"
# defaults to qemu run script
ssh_host=localhost
build_only=0
preserve_config=1
print_help() {
echo "$0 [OPTIONS] PACAKGE_DIR [PACKAGE_DIR] ..."
echo ""
echo " -h print this help"
echo " -r HOST use a remote machine as target machine. By default if this"
echo " option is not given, push_pkg.sh will use a locally"
echo " running qemu instance started by run_qemu.sh."
echo " -p PORT use PORT as ssh port (default is 22)"
echo " -b build only, do not push"
echo " -P do not preserve /etc/config. By default, if a package"
echo " defines a config file in /etc/config, this config file"
echo " will be preserved. If you specify this flag, the package"
echo " default will be installed instead."
echo ""
echo ' To change gluon variables, run e.g. "make config GLUON_MINIFY=0"'
echo ' because then the gluon logic will be triggered, and openwrt/.config'
echo ' will be regenerated. The variables from openwrt/.config are already'
echo ' automatically used for this script.'
echo
}
while getopts "p:r:hbP" opt
do
case $opt in
P) preserve_config=0;;
p) ssh_port="${OPTARG}";;
r) ssh_host="${OPTARG}"; [ -z "$ssh_port" ] && ssh_port=22;;
b) build_only=1;;
h) print_help; exit 0;;
*) ;;
esac
done
shift $(( OPTIND - 1 ))
[ -z "$ssh_port" ] && ssh_port=2223
if [ "$build_only" -eq 0 ]; then
remote_info=$(ssh -p "${ssh_port}" "root@${ssh_host}" '
source /etc/os-release
printf "%s\\t%s\\n" "$OPENWRT_BOARD" "$OPENWRT_ARCH"
')
REMOTE_OPENWRT_BOARD="$(echo "$remote_info" | cut -f 1)"
REMOTE_OPENWRT_ARCH="$(echo "$remote_info" | cut -f 2)"
# check target
if ! grep -q "CONFIG_TARGET_ARCH_PACKAGES=\"${REMOTE_OPENWRT_ARCH}\"" "${topdir}/.config"; then
echo "Configured OpenWrt Target is not matching with the target machine!" 1>&2
echo
printf "%s" " Configured architecture: " 1>&2
grep "CONFIG_TARGET_ARCH_PACKAGES" "${topdir}/.config" 1>&2
echo "Target machine architecture: ${REMOTE_OPENWRT_ARCH}" 1>&2
echo 1>&2
echo "To switch the local with the run with the corresponding GLUON_TARGET:" 1>&2
echo " make GLUON_TARGET=... config" 1>&2
exit 1
fi
fi
if [ $# -lt 1 ]; then
echo ERROR: Please specify a PACKAGE_DIR. For example:
echo
echo " \$ $0 package/gluon-core"
exit 1
fi
while [ $# -gt 0 ]; do
pkgdir="$1"; shift
echo "Package: ${pkgdir}"
if ! [ -f "${pkgdir}/Makefile" ]; then
echo "ERROR: ${pkgdir} does not contain a Makefile"
exit 1
fi
if ! grep -q BuildPackage "${pkgdir}/Makefile"; then
echo "ERROR: ${pkgdir}/Makefile does not contain a BuildPackage command"
exit 1
fi
opkg_packages="$(make TOPDIR="${topdir}" -C "${pkgdir}" DUMP=1 | awk '/^Package: / { print $2 }')"
search_package() {
find "$2" -name "$1_*.ipk" -printf '%f\n'
}
make TOPDIR="${topdir}" -C "${pkgdir}" clean
make TOPDIR="${topdir}" -C "${pkgdir}" compile
if [ "$build_only" -eq 1 ]; then
continue
fi
# IPv6 addresses need brackets around the ${ssh_host} for scp!
if echo "${ssh_host}" | grep -q :; then
BL=[
BR=]
fi
for pkg in ${opkg_packages}; do
for feed in "${topdir}/bin/packages/${REMOTE_OPENWRT_ARCH}/"*/ "${topdir}/bin/targets/${REMOTE_OPENWRT_BOARD}/packages/"; do
printf "%s" "searching ${pkg} in ${feed}: "
filename=$(search_package "${pkg}" "${feed}")
if [ -n "${filename}" ]; then
echo found!
break
else
echo not found
fi
done
if [ "$preserve_config" -eq 0 ]; then
opkg_flags=" --force-maintainer"
fi
# shellcheck disable=SC2029
if [ -n "$filename" ]; then
scp -O -P "${ssh_port}" "$feed/$filename" "root@${BL}${ssh_host}${BR}:/tmp/${filename}"
ssh -p "${ssh_port}" "root@${ssh_host}" "
set -e
echo Running opkg:
opkg install --force-reinstall ${opkg_flags} '/tmp/${filename}'
rm '/tmp/${filename}'
gluon-reconfigure
"
else
# Some packages (e.g. procd-seccomp) seem to contain BuildPackage commands
# which do not generate *.ipk files. Till this point, I am not aware why
# this is happening. However, dropping a warning if the corresponding
# *.ipk is not found (maybe due to other reasons as well), seems to
# be more reasonable than aborting. Before this commit, the command
# has failed.
echo "Warning: ${pkg}*.ipk not found! Ignoring." 1>&2
fi
done
done

View File

@ -1,15 +0,0 @@
#!/bin/sh
# Note: You can exit the qemu instance by first pressing "CTRL + a" then "c".
# Then you enter the command mode of qemu and can exit by typing "quit".
qemu-system-x86_64 \
-d 'cpu_reset' \
-enable-kvm \
-gdb tcp::1234 \
-nographic \
-netdev user,id=wan,hostfwd=tcp::2223-10.0.2.15:22 \
-device virtio-net-pci,netdev=wan,addr=0x06,id=nic1 \
-netdev user,id=lan,hostfwd=tcp::6080-192.168.1.1:80,hostfwd=tcp::2222-192.168.1.1:22,net=192.168.1.100/24 \
-device virtio-net-pci,netdev=lan,addr=0x05,id=nic2 \
"$@"

View File

@ -2,7 +2,7 @@
set -e
if [ $# -ne 2 ] || [ "-h" = "$1" ] || [ "--help" = "$1" ] || [ ! -r "$1" ] || [ ! -r "$2" ]; then
if [ $# -ne 2 -o "-h" = "$1" -o "--help" = "$1" -o ! -r "$1" -o ! -r "$2" ]; then
cat <<EOHELP
Usage: $0 <secret> <manifest>
@ -15,7 +15,7 @@ The script may be performed multiple times to the same document
to indicate an approval by multiple developers.
See also
* ecdsautils on https://github.com/freifunk-gluon/ecdsautils
* ecdsautils on https://github.com/tcatm/ecdsautils
EOHELP
exit 1
@ -29,22 +29,11 @@ lower="$(mktemp)"
trap 'rm -f "$upper" "$lower"' EXIT
awk 'BEGIN {
sep = 0
}
/^---$/ {
sep = 1;
next
}
{
if(sep == 0) {
print > "'"$upper"'"
} else {
print > "'"$lower"'"
}
}' "$manifest"
awk 'BEGIN { sep=0 }
/^---$/ { sep=1; next }
{ if(sep==0) print > "'"$upper"'";
else print > "'"$lower"'"}' \
"$manifest"
ecdsasign "$upper" < "$SECRET" >> "$lower"

View File

@ -1,18 +1,18 @@
#!/bin/sh
if [ $# -eq 0 ] || [ "-h" = "$1" ] || [ "-help" = "$1" ] || [ "--help" = "$1" ]; then
cat <<EOHELP
if [ $# -eq 0 -o "-h" = "$1" -o "-help" = "$1" -o "--help" = "$1" ]; then
cat <<EOHELP
Usage: $0 <public> <signed manifest>
sigtest.sh checks if a manifest is signed by the public key <public>. There is
no output, success or failure is indicated via the return code.
See also:
* ecdsautils in https://github.com/freifunk-gluon/ecdsautils
* https://gluon.readthedocs.io/en/latest/features/autoupdater.html
* ecdsautils in https://github.com/tcatm/ecdsautils
* http://gluon.readthedocs.org/en/latest/features/autoupdater.html
EOHELP
exit 1
exit 1
fi
public="$1"
@ -21,29 +21,18 @@ upper="$(mktemp)"
lower="$(mktemp)"
ret=1
awk 'BEGIN {
sep = 0
}
awk "BEGIN { sep=0 }
/^---\$/ { sep=1; next }
{ if(sep==0) print > \"$upper\";
else print > \"$lower\"}" \
"$manifest"
/^---$/ {
sep = 1;
next
}
{
if(sep == 0) {
print > "'"$upper"'"
} else {
print > "'"$lower"'"
}
}' "$manifest"
while read -r line
while read line
do
if ecdsaverify -s "$line" -p "$public" "$upper"; then
ret=0
break
fi
if ecdsaverify -s "$line" -p "$public" "$upper"; then
ret=0
break
fi
done < "$lower"
rm -f "$upper" "$lower"

View File

@ -1,19 +1,177 @@
# Minimal makefile for Sphinx documentation
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS = -W --keep-going
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SOURCEDIR = .
PAPER =
BUILDDIR = _build
# Put it first so that "make" without argument is like "make help".
# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
endif
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
.PHONY: help Makefile
clean:
rm -rf $(BUILDDIR)/*
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Gluon.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Gluon.qhc"
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/Gluon"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Gluon"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."

View File

@ -1,10 +0,0 @@
/*
This fixes the vertical position of list markers when the first
element in the <li> is a <pre> block
Scrolling inside the <pre> block is still working as expected
*/
.rst-content pre.literal-block,
.rst-content div[class^='highlight'] pre {
overflow: visible;
}

View File

@ -1,188 +1,257 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Configuration file for the Sphinx documentation builder.
# Gluon documentation build configuration file, created by
# sphinx-quickstart on Wed Jan 29 00:45:53 2014.
#
# This file does only contain a selection of the most common options. For a
# full list see the documentation:
# http://www.sphinx-doc.org/en/master/config
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
# -- Path setup --------------------------------------------------------------
import sys
import os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
# import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))
#sys.path.insert(0, os.path.abspath('.'))
# -- Project information -----------------------------------------------------
project = 'Gluon'
copyright = 'Project Gluon'
author = 'Project Gluon'
# The short X.Y version
version = '2022.1'
# The full version, including alpha/beta/rc tags
release = version
# -- General configuration ---------------------------------------------------
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.mathjax',
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
# source_suffix = ['.rst', '.md']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = 'Gluon'
copyright = '2015-2018, Project Gluon'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
version = release = '2018.1.4'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = 'en'
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
exclude_patterns = ['_build']
# The reST default role (used for this markup: `text`) to use for all
# documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = None
pygments_style = 'sphinx'
# Don't highlight code blocks unless requested explicitly
highlight_language = 'none'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# Ignore links to the config mode, as well as anchors on on hackint, which are
# used to mark channel names and do not exist. Regular links are not effected.
linkcheck_ignore = [
'http://192.168.1.1',
'https://webirc.hackint.org/#'
]
# If true, keep warnings as "system message" paragraphs in the built documents.
#keep_warnings = False
# -- Options for HTML output -------------------------------------------------
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'sphinx_rtd_theme'
#html_theme = 'default'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
# html_theme_options = {}
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# 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']
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
# The default sidebars (for documents that don't match any pattern) are
# defined by theme itself. Builtin themes are using these templates by
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
# 'searchbox.html']``.
#
# html_sidebars = {}
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#html_extra_path = []
# These paths are either relative to html_static_path
# or fully qualified paths (eg. https://...)
html_css_files = ['css/custom.css']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# -- Options for HTMLHelp output ---------------------------------------------
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'Gluondoc'
# -- Options for LaTeX output ------------------------------------------------
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
# Additional stuff for the LaTeX preamble.
#'preamble': '',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'Gluon.tex', 'Gluon Documentation',
'Project Gluon', 'manual'),
('index', 'Gluon.tex', 'Gluon Documentation',
'Project Gluon', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# -- Options for manual page output ------------------------------------------
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'gluon', 'Gluon Documentation',
[author], 1)
('index', 'gluon', 'Gluon Documentation',
['Project Gluon'], 1)
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output ----------------------------------------------
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'Gluon', 'Gluon Documentation',
author, 'Gluon', 'One line description of project.',
'Miscellaneous'),
('index', 'Gluon', 'Gluon Documentation',
'Project Gluon', 'Gluon', 'One line description of project.',
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# -- Options for Epub output -------------------------------------------------
# If false, no module index is generated.
#texinfo_domain_indices = True
# Bibliographic Dublin Core info.
epub_title = project
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'
# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
#
# epub_identifier = ''
# A unique identification for the text.
#
# epub_uid = ''
# A list of files that should not be packed into the epub file.
epub_exclude_files = ['search.html']
# If true, do not generate a @detailmenu in the "Top" node's menu.
#texinfo_no_detailmenu = False

View File

@ -15,15 +15,10 @@ The `main repo`_ does have issues enabled.
IRC
---
Gluon's developers frequent the IRC chatroom `#gluon`_ on `hackint`_.
There is a `webchat`_ that allows for easy access from within your
webbrowser. You're welcome to join us!
Gluon's developers frequent `#gluon on hackint`_. You're welcome to join us!
.. _#gluon: ircs://irc.hackint.org/#gluon
.. _hackint: https://hackint.org/
.. _webchat: https://webirc.hackint.org/#irc://irc.hackint.org/#gluon
.. _#gluon on hackint: irc://irc.hackint.org/#gluon
.. _working-with-repositories:
Working with repositories
-------------------------
@ -33,19 +28,19 @@ rerun
::
make update
make update
`make update` also applies the patches that can be found in the directories found in
`patches`; the resulting branch will be called `patched`, while the commit specified in `modules`
can be referred to by the branch `base`.
can be refered to by the branch `base`.
After new patches have been committed on top of the `patched` branch (or existing commits
After new patches have been commited on top of the `patched` branch (or existing commits
since the base commit have been edited or removed), the patch directories can be regenerated
using
::
make update-patches
make update-patches
If applying a patch fails because you have changed the base commit, the repository will be reset to the old `patched` branch
and you can try rebasing it onto the new `base` branch yourself and after that call `make update-patches` to fix the problem.
@ -53,33 +48,18 @@ and you can try rebasing it onto the new `base` branch yourself and after that c
Always call `make update-patches` after making changes to a module repository as `make update` will overwrite your
commits, making `git reflog` the only way to recover them!
::
make refresh-patches
In order to refresh patches when updating feeds or the OpenWrt base, `make refresh-patches` applies and updates all of their patches without installing feed packages to the OpenWrt build system.
This command speeds up the maintenance of updating OpenWrt and feeds.
Development Guidelines
----------------------
Lua should be used instead of sh whenever sensible. The following criteria
lua should be used instead of sh whenever sensible. The following criteria
should be considered:
- Is the script doing more than just executing external commands? if so, use Lua
- Is the script parsing/editing json-data? If so, use Lua for speed
- Is the script doing more than just executing external commands? if so, use lua
- Is the script parsing/editing json-data? If so, use lua for speed
- When using sh, use jsonfilter instead of json_* functions for speed
Code formatting may sound like a topic for the pedantic, however it helps if
the code in the project is formatted in the same way. The following basic rules
the code in the project is formatted in the same way. The following rules
apply:
- use tabs instead of spaces
- trailing whitespaces must be eliminated
- files need to end with a final newline
- newlines need to have Unix line endings (lf)
To that end we provide a ``.editorconfig`` configuration, which is supported by most
of the editors out there.
If you add Lua scripts to gluon, check formatting with ``luacheck``.

View File

@ -1,104 +0,0 @@
Build system
============
This page explains internals of the Gluon build system. It is currently very
incomplete; please contribute if you can!
Feed management
---------------
Rather that relying on the *feed.conf* mechanism of OpenWrt directly, Gluon
manages its feeds (*"modules"*) using a collection of scripts. This solution was
selected for multiple reasons:
- Feeds lists from Gluon base and the site repository are combined
- Patchsets are applied to downloaded feed repositories automatically
The following variables specifically affect the feed management:
GLUON_FEEDS
List of base feeds; defined in file *modules* in Gluon base
GLUON_SITE_FEED
List of site feeds; defined in file *modules* in site config
\*_REPO, \*_BRANCH, \*_COMMIT
Git repository URL, branch and
commit ID of the feeds to use. The branch name may be omitted; the default
branch will be used in this case.
GLUON_BASE_FEEDS
Additional feed definitions to be added to *feeds.conf*
verbatim. By default, this contains a reference to the Gluon base packages;
when using the Gluon build system to build a non-Gluon system, the variable
can be set to the empty string.
Helper scripts
--------------
Several tasks of the build process have been separated from the Makefile into
external scripts, which are stored in the *scripts* directory. This was done to
ease maintenance of these scripts and the Makefile, by avoiding a lot of escaping.
These scripts are either bash or Lua scripts that run on the build system.
default_feeds.sh
Defines the constant ``DEFAULT_FEEDS`` with the names of all feeds listed in
*openwrt/feeds.conf.default*. This script is only used as an include by other
scripts.
feeds.sh
Creates the *openwrt/feeds.conf* file from ``FEEDS`` and ``DEFAULT_FEEDS``. The
feeds from ``FEEDS`` are linked to the matching subfolder of *packages/* and not
explicitly defined feeds of ``DEFAULT_FEEDS`` are setup as dummy (src-dummy).
This *openwrt/feeds.conf* is used to reinstall all packages of all feeds with
the *openwrt/scripts/feeds* tool.
modules.sh
Defines the constants ``GLUON_MODULES`` and ``FEEDS`` by reading the *modules*
files of the Gluon repository root and the site configuration. The returned
variables look like:
- ``FEEDS``: "*feedA feedB ...*"
- ``GLUON_MODULES``: "*openwrt packages/feedA packages/feedB ...*"
This script is only used as an include by other scripts.
patch.sh
(Re-)applies the patches from the *patches* directory to all ``GLUON_MODULES``
and checks out the files to the filesystem.
This is done for each repo by:
- creating a temporary clone of the repo to patch
- only branch *base* is used
- applying all patches via *git am* on top of this temporary *base* branch
- this branch is named *patched*
- copying the temporary clone to the *openwrt* (for OpenWrt Base) or
*packages* (for feeds) folder
- *git fetch* is used with the temporary clone as source
- *git checkout* is called to update the filesystem
- updating all git submodules
This solution with a temporary clone ensures that the timestamps of checked
out files are not changed by any intermediate patch steps, but only when
updating the checkout with the final result. This avoids triggering unnecessary
rebuilds.
update.sh
Sets up a working clone of the ``GLUON_MODULES`` (external repos) from the external
source and installs it into *packages/* directory. It simply tries to set the *base*
branch of the cloned repo to the correct commit. If this fails it fetches the
upstream branch and tries again to set the local *base* branch.
getversion.sh
Used to determine the version numbers of the repositories of Gluon and the
site configuration, to be included in the built firmware images as
*/lib/gluon/gluon-version* and */lib/gluon/site-version*.
By default, this uses ``git describe`` to generate a version number based
on the last git tag. This can be overridden by putting a file called
*.scmversion* into the root of the respective repositories.
A command like ``rm -f .scmversion; echo "$(./scripts/getversion.sh .)" > .scmversion``
can be used before applying local patches to ensure that the reported
version numbers refer to an upstream commit ID rather than an arbitrary
local one after ``git am``.

View File

@ -1,51 +0,0 @@
Debugging
=========
.. _dev-debugging-kernel-oops:
Kernel Oops
-----------
Sometimes a running Linux kernel detects an error during runtime that can't
be corrected.
This usually generates a stack trace that points to the location in the code
that caused the oops.
Linux kernels in Gluon (and OpenWrt) are stripped.
That means they do not contain any debug symbols.
On one hand this leads to a smaller binary and faster loading times on the
target.
On the other hand this means that in a case of a stack trace the unwinder
can only print memory locations and no further debugging information.
Gluon stores a compressed kernel with debug symbols for every target
in the directory `output/debug/`.
These kernels should be kept along with the images as long as the images
are in use.
This allows the developer to analyse a stack trace later.
Decoding Stacktraces
....................
The tooling is contained in the kernel source tree in the file
`decode_stacktrace.sh <https://github.com/torvalds/linux/blob/master/scripts/decode_stacktrace.sh>`__.
This file and the needed source tree are available in the directory: ::
openwrt/build_dir/target-<architecture>/linux-<architecture>/linux-<version>/
.. note::
Make sure to use a kernel tree that matches the version and patches
that was used to build the kernel.
If in doubt just re-build the images for the target.
Some more information on how to use this tool can be found at
`LWN <https://lwn.net/Articles/592724/>`__.
Obtaining Stacktraces
.....................
On many targets stack traces can be read from the following
location after reboot: ::
/sys/kernel/debug/crashlog

View File

@ -1,238 +1,144 @@
Adding hardware support
=======================
Adding support for new hardware
===============================
This page will give a short overview on how to add support
for new hardware to Gluon.
Hardware requirements
---------------------
Having an ath9k, ath10k or mt76 based WLAN adapter is highly recommended,
Having an ath9k (or ath10k) based WLAN adapter is highly recommended,
although other chipsets may also work. VAP (multiple SSID) support
with simultaneous AP + Mesh Point (802.11s) operation is required.
is a requirement.
Device checklist
----------------
The description of pull requests adding device support must include the
`device integration checklist
<https://github.com/freifunk-gluon/gluon/wiki/Device-Integration-checklist>`_.
The checklist ensures that core functionality of Gluon is well supported on the
device.
.. _device-class-definition:
.. _hardware-adding-profiles:
Device classes
--------------
All supported hardware is categorized into "device classes". This allows to
adjust the feature set of Gluon to the different hardware's capabilities via
``site.mk`` without having to list individual devices.
Adding profiles
---------------
The vast majority of devices with ath9k WLAN is based on the ar71xx target of LEDE.
If the hardware you want to add support for is ar71xx, adding a new profile
is sufficient.
There are currently two devices classes defined: "standard" and "tiny". The
"tiny" class contains all devices that do not meet the following requirements:
Profiles are defined in ``targets/*`` in a shell-based DSL (so common shell
command syntax like ``if`` can be used).
- At least 7 MiB of usable firmware space
- At least 64 MiB of RAM (128MiB for devices with ath10k radio)
The ``device`` command is used to define an image build for a device. It takes
two or three parameters.
Target configuration
--------------------
Gluon's hardware support is based on OpenWrt's. For each supported target,
a configuration file exists at ``targets/<target>-<subtarget>`` (or just
``target/<target>`` for targets without subtargets) that contains all
Gluon-specific settings for the target. The generic configuration
``targets/generic`` contains settings that affect all targets.
The first parameter defines the Gluon profile name, which is used to refer to the
device and is part of the generated image name. The profile name must be same as
the output of the following command (on the target device), so the autoupdater
can work::
All targets must be listed in ``target/targets.mk``.
lua -e 'print(require("platform_info").get_image_name())'
The target configuration language is based on Lua, so Lua's syntax for variables
and control structures can be used.
While porting Gluon to a new device, it might happen that the profile name is un-
known. Best practise is to generate an image first by using an arbitrary value
and then executing the lua command on the device and use its output from then on.
Device definitions
~~~~~~~~~~~~~~~~~~
To configure a device to be built for Gluon, the ``device`` function is used.
In the simplest case, only two arguments are passed, for example:
The second parameter defines the name of the image files generated by LEDE. Usually,
it is also the LEDE profile name; for devices that still use the old image build
code, a third parameter with the LEDE profile name can be passed. The profile names
can be found in the image Makefiles in ``lede/target/linux/<target>/image/Makefile``.
.. code-block:: lua
Examples::
device('tp-link-tl-wdr3600-v1', 'tplink_tl-wdr3600-v1')
The first argument is the device name in Gluon, which is part of the output
image filename, and must correspond to the model string looked up by the
autoupdater. The second argument is the corresponding device profile name in
OpenWrt, as found in ``openwrt/target/linux/<target>/image/*``.
A table of additional settings can be passed as a third argument:
.. code-block:: lua
device('ubiquiti-edgerouter-x', 'ubnt_edgerouter-x', {
factory = false,
packages = {'-hostapd-mini'},
manifest_aliases = {
'ubnt-erx',
},
})
The supported additional settings are described in the following sections.
device tp-link-tl-wr1043n-nd-v1 tl-wr1043nd-v1
device alfa-network-hornet-ub hornet-ub HORNETUB
Suffixes and extensions
~~~~~~~~~~~~~~~~~~~~~~~
For many targets, OpenWrt generates images with the suffixes
``-squashfs-factory.bin`` and ``-squashfs-sysupgrade.bin``. For devices with
different image names, is it possible to override the suffixes and extensions
using the settings ``factory``, ``factory_ext``, ``sysupgrade`` and
``sysupgrade_ext``, for example:
'''''''''''''''''''''''
.. code-block:: lua
By default, image files are expected to have the extension ``.bin``. In addition,
the images generated by LEDE have a suffix before the extension that defaults to
``-squashfs-factory`` and ``-squashfs-sysupgrade``.
{
factory = '-squashfs-combined',
factory_ext = '.img.gz',
sysupgrade = '-squashfs-combined',
sysupgrade_ext = '.img.gz',
}
This can be changed using the ``factory`` and ``sysupgrade`` commands, either at
the top of the file to set the defaults for all images, or for a single image. There
are three forms with 0 to 2 arguments (all work with ``sysupgrade`` as well)::
Only settings that differ from the defaults need to be passed. ``factory`` and
``sysupgrade`` can be set to ``false`` when no such images exist.
factory SUFFIX .EXT
factory .EXT
factory
For some device types, there are multiple factory images with different
extensions. ``factory_ext`` can be set to a table of strings to account for this
case:
When only an extension is given, the default suffix is retained. When no arguments
are given, this signals that no factory (or sysupgrade) image exists.
.. code-block:: lua
Aliases
'''''''
{
factory_ext = {'.img.gz', '.vmdk', '.vdi'},
}
Sometimes multiple models use the same LEDE images. In this case, the ``alias``
command can be used to create symlinks and additional entries in the autoupdater
manifest for the alternative models.
TODO: Extra images
Standalone images
'''''''''''''''''
Aliases and manifest aliases
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sometimes multiple devices exist that use the same OpenWrt images. To make it
easier to find these images, the ``aliases`` setting can be used to define
additional device names. Gluon will create symlinks for these names in the
image output directory.
On targets without *per-device rootfs* support in LEDE, the commands described above
can't be used. Instead, ``factory_image`` and ``sysupgrade_image`` are used::
.. code-block:: lua
factory_image PROFILE IMAGE .EXT
sysupgrade_image PROFILE IMAGE .EXT
device('aruba-ap-303', 'aruba_ap-303', {
factory = false,
aliases = {'aruba-instant-on-ap11'},
})
Again, the profile name must match the value printed by the aforementioned Lua
command. The image name must match the part between the target name and the extension
as generated by LEDE and is to be omitted when no such part exists.
The aliased name will also be added to the autoupdate manifest, allowing upgrade
images to be found under the different name on targets that perform model name
detection at runtime.
Packages
''''''''
It is also possible to add alternative names to the autoupdater manifest without
creating a symlink by using ``manifest_aliases`` instead of ``aliases``, which
should be done when the alternative name does not refer to a separate device.
This is particularly useful to allow the autoupdater to work when the model name
changed between Gluon versions.
The ``packages`` command takes an arbitrary number of arguments. Each argument
defines an additional package to include in the images in addition to the default
package sets defined by LEDE. When a package name is prefixed by a minus sign, the
packages are excluded instead.
Package lists
~~~~~~~~~~~~~
Gluon generates lists of packages that are installed in all images based on a
default list and the features and packages specified in the site configuration.
The ``packages`` command may be used at the top of a target definition to modify
the default package list for all images, or just for a single device (when the
target supports *per-default rootfs*).
In addition, OpenWrt defines additional per-device package lists. These lists
may be modified in Gluon's device definitions, for example to include additional
drivers and firmware, or to remove unneeded software. Packages to remove are
prefixed with a ``-`` character.
For many ath10k-based devices, this is used to replace the "CT" variant of
ath10k with the mainline-based version:
Configuration
'''''''''''''
.. code-block:: lua
The ``config`` command allows to add arbitary target-specific LEDE configuration
to be emitted to ``.config``.
local ATH10K_PACKAGES_QCA9880 = {
'kmod-ath10k',
'-kmod-ath10k-ct',
'-kmod-ath10k-ct-smallbuffers',
'ath10k-firmware-qca988x',
'-ath10k-firmware-qca988x-ct',
}
device('openmesh-a40', 'openmesh_a40', {
packages = ATH10K_PACKAGES_QCA9880,
factory = false,
})
Notes
'''''
This example also shows how to define a local variable, allowing the package
list to be reused for multiple devices.
On devices with multiple WLAN adapters, care must also be taken that the primary MAC address is
configured correctly. ``/lib/gluon/core/sysconfig/primary_mac`` should contain the MAC address which
can be found on a label on most hardware; if it does not, ``/lib/gluon/upgrade/010-primary-mac``
in ``gluon-core`` might need a fix. (There have also been cases in which the address was incorrect
even on devices with only one WLAN adapter, in these cases a LEDE bug was the cause).
Device flags
~~~~~~~~~~~~
The settings ``class``, ``deprecated`` or ``broken`` should be set according to
the device support status. The default values are as follows:
Adding support for new hardware targets
---------------------------------------
.. code-block:: lua
Adding a new target is much more complex than adding a new profile. There are two basic steps
required for adding a new target:
{
class = 'standard',
deprecated = false,
broken = false,
}
Package adjustments
'''''''''''''''''''
- Device classes are described in :ref:`device-class-definition`
- Broken devices are untested or do not meet our requirements as given by the
device checklist
- Deprecated devices are slated for removal in a future Gluon version due to
hardware constraints
One package that may need adjustments for new targets is ``libplatforminfo`` (to be found in
`packages/gluon/libs/libplatforminfo <https://github.com/freifunk-gluon/packages/tree/master/libs/libplatforminfo>`_).
If the new platform works fine with the definitions found in ``default.c``, nothing needs to be done. Otherwise,
create a definition for the added target or subtarget, either by symlinking one of the files in the ``templates``
directory, or adding a new source file.
Global settings
~~~~~~~~~~~~~~~
There is a number of directives that can be used outside of a ``device()``
definition:
On many targets, Gluon's network setup scripts (mainly in the package ``gluon-core``)
won't run correctly without some adjustments, so better double check that everything is fine there (and the files
``primary_mac``, ``lan_ifname`` and ``wan_ifname`` in ``/lib/gluon/core/sysconfig/`` contain sensible values).
- ``include('filename')``: Include another file with global settings
- ``config(key, value)``: Set a config symbol in OpenWrt's ``.config``. Value
may be a string, number, boolean, or nil. Booleans and nil are used for
tristate symbols, where nil sets the symbol to ``m``.
- ``try_config(key, value)``: Like ``config()``, but do not fail if setting
the symbol is not possible (usually because its dependencies are not met)
- ``packages { 'package1', '-package2', ... }``: Define a list of packages to
add or remove for all devices of a target. Package lists passed to multiple
calls of ``packages`` will be aggregated.
- ``defaults { key = value, ... }``: Set default values for any of the
additional settings that can be passed to ``device()``.
Build system support
''''''''''''''''''''
Helper functions
~~~~~~~~~~~~~~~~
The following helpers can be used in the target configuration:
A definition for the new target must be created under ``targets``, and it must be added
to ``targets/targets.mk``. The ``GluonTarget`` macro takes one to three arguments:
the target name, the Gluon subtarget name (if the target has subtargets), and the
LEDE subtarget name (if it differs from the Gluon subtarget). The third argument
can be used to define multiple Gluon targets with different configuration for the
same LEDE target, like it is done for the ``ar71xx-tiny`` target.
- ``env.KEY`` allows to access environment variables
- ``istrue(value)`` returns true if the passed string is a positive number
(often used with ``env``, for example ``if istrue(env.GLUON_DEBUG) then ...``)
Hardware support in packages
----------------------------
In addition to the target configuration files, some device-specific changes may
be required in packages.
gluon-core
~~~~~~~~~~
- ``/lib/gluon/upgrade/010-primary-mac``: Override primary MAC address selection
Usually, the primary (label) MAC address is defined in OpenWrt's Device Trees.
For devices or targets where this is not the case, it is possible to specify
what interface to take the primary MAC address from in ``010-primary-mac``.
- ``/lib/gluon/upgrade/020-interfaces``: Override LAN/WAN interface assignment
On PoE-powered devices, the PoE input port should be "WAN".
- ``/usr/lib/lua/gluon/platform.lua``: Contains a list of outdoor devices
gluon-setup-mode
~~~~~~~~~~~~~~~~
- ``/lib/gluon/upgrade/320-setup-ifname``: Contains a list of devices that use
the WAN port for the config mode
On PoE-powered devices, the PoE input port should be used for the config
mode. This is handled correctly by default for outdoor devices listed in
``platform.lua``.
libplatforminfo
~~~~~~~~~~~~~~~
When adding support for a new target to Gluon, it may be necessary to adjust
libplatforminfo to define how autoupdater image names are derived from the
model name.
After this, is should be sufficient to call ``make GLUON_TARGET=<target>`` to build the images for the new target.

View File

@ -10,9 +10,9 @@ Gluon tries to solve this issue by using a hash of the primary MAC address as a
* 0: client0; WAN
* 1: mesh0
* 2: owe0
* 2: ibss0
* 3: wan_radio0 (private WLAN); batman-adv primary address
* 4: client1; LAN
* 5: mesh1
* 6: owe1
* 6: ibss1
* 7: wan_radio1 (private WLAN); mesh VPN

View File

@ -3,88 +3,6 @@ Package development
Gluon packages are OpenWrt packages and follow the same rules described at https://openwrt.org/docs/guide-developer/packages.
Development workflow
====================
When you are developing packages, it often happens that you iteratively want to deploy
and verify the state your development. There are two ways to verify your changes:
1)
One way is to rebuild the complete firmware, flash it, configure it and verify your
development then. This usually takes at least a few minutes to get your changes
working so you can test them. Especially if you iterate a lot, this becomes tedious.
2)
Another way is to rebuild only the package you are currently working on and
to deploy this package to your test system. Here not even a reboot is required.
This makes iterating relatively fast. Your test system could be real hardware or
even a qemu in most cases.
Gluon provides scripts to enhance workflow 2). Here is an example illustrating
the workflow using these scripts:
.. code-block:: shell
# start a local qemu instance
contrib/run_qemu.sh output/images/factory/[...]-x86-64.img
# apply changes to the desired package
vi package/gluon-ebtables/files/etc/init.d/gluon-ebtables
# rebuild and push the package to the qemu instance
contrib/push_pkg.sh package/gluon-ebtables/
# test your changes
...
# do more changes
...
# rebuild and push the package to the qemu instance
contrib/push_pkg.sh package/gluon-ebtables/
# test your changes
...
(and so on...)
# see help of the script for more information
contrib/push_pkg.sh -h
...
Features of ``push_pkg.sh``:
* Works with compiled and non-compiled packages.
* This means it can be used in the development of C-code, Lua-Code and mostly any other code.
* Works with native OpenWrt and Gluon packages.
* Pushes to remote machines or local qemu instances.
* Pushes multiple packages in in one call if desired.
* Performs site.conf checks.
Implementation details of ``push_pkg.sh``:
* First, the script builds an opkg package using the OpenWrt build system.
* This package is pushed to a *target machine* using scp:
* By default the *target machine* is a locally running x86 qemu started using ``run_qemu.sh``.
* The *target machine* can also be remote machine. (See the cli switch ``-r``)
* Remote machines are not limited to a specific architecture. All architectures supported by gluon can be used as remote machines.
* Finally opkg is used to install/update the packages in the target machine.
* While doing this, it will not override ``/etc/config`` with package defaults by default. (See the cli switch ``-P``).
* While doing this, opkg calls the ``check_site.lua`` from the package as post_install script to validate the ``site.conf``. This means that the ``site.conf`` of the target machine is used for this validation.
Note that:
* ``push_pkg.sh`` does neither build nor push dependencies of the packages automatically. If you want to update dependencies, you must explicitly specify them to be pushed.
* If you add new packages, you must run ``make update config GLUON_TARGET=...``.
* You can change the gluon target of the target machine via ``make config GLUON_TARGET=...``.
* If you want to update the ``site.conf`` of the target machine, use ``push_pkg.sh package/gluon-site/``.
* Sometimes when things break, you can heal them by compiling a package with its dependencies: ``cd openwrt; make package/gluon-ebtables/clean; make package/gluon-ebtables/compile; cd ..``.
* You can exit qemu by pressing ``CTRL + a`` and ``c`` afterwards.
Gluon package makefiles
=======================
@ -92,7 +10,7 @@ Gluon package makefiles
As many packages share the same or a similar structure, Gluon provides a ``package/gluon.mk`` that
can be included for common definitions. This file replaces OpenWrt's ``$(INCLUDE_DIR)/package.mk``;
it is usually included as ``include ../gluon.mk`` from Gluon core packages, or as
``include $(TOPDIR)/../package/gluon.mk`` from feeds.
``include $(TOPDIR)../package/gluon.mk`` from feeds.
Provided macros
***************
@ -153,62 +71,44 @@ Feature flags
=============
Feature flags provide a convenient way to define package selections without
making it necessary to list each package explicitly. The list of features to
enable for a Gluon build is set by the *GLUON_FEATURES* variable in *site.mk*.
making it necessary to list each package explicitly.
The main feature flag definition file is ``package/features``, but each package
feed can provide additional definitions in a file called ``features`` at the root
feed can provide additional defintions in a file called ``features`` at the root
of the feed repository.
Each flag *$flag* will include the package the name *gluon-$flag* by default.
The feature definition file can modify the package selection by adding or removing
packages when certain combinations of flags are set.
Each flag *$flag* without any explicit definition will simply include the package
with the name *gluon-$flag* by default. The feature definition file can modify
the package selection in two ways:
Feature definitions use Lua syntax. Two basic functions are defined:
* *feature(name, pkgs)*: Defines a new feature. *feature()* expects a feature
(flag) name and a list of packages to add or remove when the feature is
enabled.
* Defining a feature using *feature* replaces the default definition of
just including *gluon-$flag*.
* A package is removed when the package name is prefixed with a ``-`` (after
the opening quotation mark).
* *when(expr, pkgs)*: Adds or removes packages when a given logical expression
of feature flags is satisfied.
* *expr* is a logical expression composed of feature flag names (each prefixed
with an underscore before the opening quotation mark), logical operators
(*and*, *or*, *not*) and parentheses.
* Referencing a feature flag in *expr* has no effect on the default handling
of the flag. When no *feature()* entry for a flag exists, it will still
add *gluon-$flag* by default.
* *pkgs* is handled as for *feature()*.
* The *nodefault* function suppresses default of including the *gluon-$flag*
package
* The *packages* function adds a list of packages (or removes, when package
names are prepended with minus signs) when a given logical expression
is satisfied
Example::
feature('web-wizard', {
'gluon-config-mode-hostname',
'gluon-config-mode-geo-location',
'gluon-config-mode-contact-info',
'gluon-config-mode-outdoor',
})
nodefault 'web-wizard'
when(_'web-wizard' and (_'mesh-vpn-fastd' or _'mesh-vpn-tunneldigger'), {
'gluon-config-mode-mesh-vpn',
})
feature('no-radvd', {
'-gluon-radvd',
})
packages 'web-wizard' \
'gluon-config-mode-hostname' \
'gluon-config-mode-geo-location' \
'gluon-config-mode-contact-info'
packages 'web-wizard & (mesh-vpn-fastd | mesh-vpn-tunneldigger)' \
'gluon-config-mode-mesh-vpn'
This will
* disable the inclusion of the (non-existent) packages *gluon-web-wizard* and *gluon-no-radvd* when their
corresponding feature flags appear in *GLUON_FEATURES*
* enable four additional config mode packages when the *web-wizard* feature is enabled
* disable the inclusion of a (non-existent) package called *gluon-web-wizard*
* enable three config mode packages when the *web-wizard* feature is enabled
* enable *gluon-config-mode-mesh-vpn* when both *web-wizard* and one
of *mesh-vpn-fastd* and *mesh-vpn-tunneldigger* are enabled
* disable the *gluon-radvd* package when *gluon-no-radvd* is enabled
Supported syntax elements of logical expressions are:
* \& (and)
* \| (or)
* \! (not)
* parentheses

View File

@ -11,7 +11,7 @@ from Lua scripts. Example:
The *site* object in this example does not directly represent the *site.conf* data structure;
instead, it is wrapped in a way that makes it more convenient to access deeply nested elements.
To access the underlying values, they must be unwrapped using the function call notation
To access the the underlying values, they must be unwrapped using the function call notation
(the ``()`` after ``site.wifi24.ap.ssid`` in the example).
The wrapper objects have two advantages over simple Lua tables:

View File

@ -23,7 +23,7 @@ Best practices
This allows using the same code to create the initial configuration and upgrade configurations on upgrades.
* If it is unavoidable to run different code during the initial installation, the ``sysconfig.gluon_version`` variable
can be checked. This variable is ``nil`` during the initial installation and contains the previously installed Gluon
can be checked. This variable is ``nil`` during the initial installation and contains the previously install Gluon
version otherwise.
Script ordering

View File

@ -1,22 +1,16 @@
Uplink support
==============
WAN support
===========
As the WAN port of a node will be connected to a user's private network, it
is essential that the node only uses the WAN when it is absolutely necessary.
There are two cases in which the WAN port is used:
* Mesh VPN (package ``gluon-mesh-vpn-fastd``)
* Mesh VPN (package ``gluon-mesh-vpn-fastd``
* DNS to resolve the VPN servers' addresses (package ``gluon-wan-dnsmasq``)
After the VPN connection has been established, the node should be able to reach
the mesh's DNS servers and use these for all other name resolution.
If a device has only a single Ethernet port (or group of ports), it will be
used as an uplink port even when it is not labelled as "WAN" by default. This
behavior can be controlled using the ``interfaces.single.default_roles``
site.conf option. It is also possible to alter the interface assignment after
installation by modifying ``/etc/config/gluon`` and running
``gluon-reconfigure``.
Routing tables
~~~~~~~~~~~~~~

View File

@ -2,7 +2,7 @@ Config Mode
===========
The `Config Mode` consists of several modules that provide a range of different
configuration options:
condiguration options:
gluon-config-mode-core
This modules provides the core functionality for the config mode.

View File

@ -1,10 +1,8 @@
Controllers
===========
Controllers live in the ``controller`` subdirectory of a gluon-web application
(``/lib/gluon/config-mode/controller`` for the config mode,
``/lib/gluon/status-page/controller`` for the status page). They define which pages ("routes")
exist under the application base URL, and what code is run when these pages are requested.
Controllers live in ``/lib/gluon/web/controller``. They define which pages ("routes")
exist under the ``/cgi-bin/gluon`` path, and what code is run when these pages are requested.
Controller scripts usually start with a *package* declaration, followed by calls
to the *entry* function, which each define one route:
@ -71,10 +69,11 @@ Useful functions:
values for the given key.
- *status* (*code*, *message*): Writes the HTTP status to the reply. Has no effect
if a status has already been sent or non-header data has been written.
- *header* (*key*, *value*): Adds an HTTP header to the reply to be sent to
- *header* (*key*, *value*): Adds an HTTP header to the reply to be sent to to
the client. Has no effect when non-header data has already been written.
- *prepare_content* (*mime*): Sets the *Content-Type* header to the given MIME
type
type, potentially setting additional headers or modifying the MIME type to
accommodate browser quirks
- *write* (*data*, ...): Sends the given data to the client. If headers have not
been sent, it will be done before the data is written.

View File

@ -58,7 +58,7 @@ script in the ``contrib`` directory:
The same command can be run again to update the template.
In addition, the Makefile must be adjusted. Instead of OpenWrt's default *package.mk*,
In addition, the Makefile must be adjusted. Instead of LEDE's default *package.mk*,
the Gluon version (``../gluon.mk`` for core packages) must be used. The i18n files must be installed
and PKG_CONFIG_DEPENDS must be added::

View File

@ -1,13 +1,8 @@
Models
======
Models are defined in the ``model`` subdirectory of a gluon-web application
(``/lib/gluon/config-mode/model`` for the config mode; the status
page does not use any models). Model support is not part of the gluon-web core
anymore, but is provided by the *gluon-web-model* package.
Each model defines one or more forms to display on a page, and how the submitted
form data is handled.
Models are defined in ``/lib/gluon/web/model``. Each model defines one or more
forms to display on a page, and how the submitted form data is handled.
Let's start with an example:
@ -51,14 +46,14 @@ Classes and methods
- *Form:write* ()
Is called after the form has been submitted (but only if the data is valid). It
Is called after the form has beed submitted (but only if the data is valid). It
is called last (after all options' *write* methods) and is usually used
to commit changed UCI packages.
The default implementation of *write* doesn't do anything, but it can be
overridden.
- *Section* (usually instantiated through *Form:section*)
- *Section* (usually instanciated through *Form:section*)
- *Section:option* (*type*, *id*, *title*, *description*)

View File

@ -1,19 +1,14 @@
Views
=====
The template parser reads views from the ``view`` subdirectory of a
gluon-web application (``/lib/gluon/config-mode/view`` for the config mode,
``lib/gluon/status-page/view`` for the status page).
Writing own views should usually be avoided in favour of using :doc:`model`
with their predefined views.
The template parser reads views from ``/lib/gluon/web/view``. Writing own view
should be avoided in favour of using :doc:`model` with their predefined views.
Views are partial HTML pages, with additional template tags that allow
to embed Lua code and translation strings. The following tags are defined:
- ``<%`` ... ``%>`` evaluates the enclosed Lua expression.
- ``<%|`` ... ``%>`` evaluates the enclosed Lua expression and prints its value.
- ``<%=`` ... ``%>`` evaluates the enclosed Lua expression and prints its value
*without escaping HTML entities*. This is useful when the value contains HTML code.
- ``<%=`` ... ``%>`` evaluates the enclosed Lua expression and prints its value.
- ``<%+`` ... ``%>`` includes another template.
- ``<%:`` ... ``%>`` translates the enclosed string using the loaded i18n catalog.
- ``<%_`` ... ``%>`` translates the enclosed string *without escaping HTML entities*

View File

@ -7,11 +7,8 @@ Building Images
---------------
By default, the autoupdater is disabled (as it is usually not helpful to have unexpected updates
during development), but it can be enabled by setting the variable ``GLUON_AUTOUPDATER_ENABLED`` to ``1`` when building.
It is also possible to override the default branch during build using the variable ``GLUON_AUTOUPDATER_BRANCH``.
If a default branch is set neither in *site.conf* nor via ``GLUON_AUTOUPDATER_BRANCH``, the default branch is
implementation-defined. Currently, the branch with the first name in alphabetical order is chosen.
during development), but it can be enabled by setting the variable GLUON_BRANCH when building
to override the default branch set in the site configuration.
A manifest file for the updater can be generated with `make manifest`. A signing script (using
``ecdsautils``) can be found in the `contrib` directory. When creating the manifest, the
@ -30,42 +27,20 @@ in ``site.mk``, care must be taken to pass the same ``GLUON_RELEASE`` to ``make
as otherwise the generated manifest will be incomplete.
Manifest format
------------------------
The manifest starts with a short header, followed by the list of firmwares and signatures.
The header contains the following information:
.. code-block:: sh
BRANCH=stable
DATE=2020-10-07 00:00:00+02:00
PRIORITY=7
- ``BRANCH`` is the autoupdater branch name that needs to match the nodes configuration.
- ``DATE`` specifies when the time period for the update begins. Nodes will do their regular update during a random minute
between 4:00 and 4:59 am. Nodes might not always have a reliable NTP synchronization, which is why a fallback mechanism
exists, that checks for an update, and will execute if ``DATE`` is at least 24h in the past.
- ``PRIORITY`` can be configured as ``GLUON_PRIORITY`` when generating the manifest or in ``site.mk``, and defines
the number of days over which the update should be stretched out after ``DATE``. Nodes will calculate a probability
based on the time left to determine when to update.
Automated nightly builds
------------------------
A fully automated nightly build could use the following commands:
.. code-block:: sh
::
git pull
# git -C site pull
(git -C site pull)
make update
make clean GLUON_TARGET=ath79-generic
make clean GLUON_TARGET=ar71xx-generic
NUM_CORES_PLUS_ONE=$(expr $(nproc) + 1)
make -j$NUM_CORES_PLUS_ONE GLUON_TARGET=ath79-generic GLUON_RELEASE=$GLUON_RELEASE \
GLUON_AUTOUPDATER_BRANCH=experimental GLUON_AUTOUPDATER_ENABLED=1
make manifest GLUON_RELEASE=$GLUON_RELEASE GLUON_AUTOUPDATER_BRANCH=experimental
make -j$NUM_CORES_PLUS_ONE GLUON_TARGET=ar71xx-generic GLUON_BRANCH=experimental
make manifest GLUON_BRANCH=$GLUON_BRANCH GLUON_RELEASE=$GLUON_RELEASE
contrib/sign.sh $SECRETKEY output/images/sysupgrade/experimental.manifest
rm -rf /where/to/put/this/experimental
@ -99,16 +74,16 @@ These commands can be used on a node:
::
# Update with some probability
autoupdater
# Update with some probability
autoupdater
::
# Force update check, even when the updater is disabled
autoupdater -f
# Force update check, even when the updater is disabled
autoupdater -f
::
# If fallback is true the updater will perform an update only if the timespan
# PRIORITY days (as defined in the manifest) and another 24h have passed
autoupdater --fallback
# If fallback is true the updater will perform an update only if the timespan
# PRIORITY days (as defined in the manifest) and another 24h have passed
autoupdater --fallback

View File

@ -14,13 +14,10 @@ Activating Config Mode
----------------------
Config Mode is automatically entered at the first boot. You can re-enter
Config Mode by pressing and holding the RESET/WPS/DECT button for about three
seconds. The device should reboot (all LEDs will turn off briefly) and
Config Mode by pressing and holding the RESET/WPS button for about three
seconds. The device should reboot (all LEDs will turn of briefly) and
Config Mode will be available.
If you have access to the console of the node, there is the
``gluon-enter-setup-mode`` command, which reboots a node into Config Mode.
Port Configuration
------------------

View File

@ -1,51 +0,0 @@
DNS caching
===========
User experience may be greatly improved when dns is accelerated. Also, it
seems like a good idea to keep the number of packages being exchanged
between node and gateway as small as possible. In order to do this, a
DNS cache may be used on a node. The dnsmasq instance listening on port
53 on the node will be reconfigured to answer requests, use a list of
upstream servers and a specific cache size if the options listed below are
added to site.conf. Upstream servers are the DNS servers which are normally
used by the nodes to resolve hostnames (e.g. gateways/supernodes).
There are the following settings:
servers
cacheentries
To use the node's DNS server, both options should be set. The node will cache at
most 'cacheentries' many DNS records in RAM. The 'servers' list will be used to
resolve the received DNS queries if the request cannot be answered from
cache. Gateways should announce the "next node" address via DHCP and RDNSS (if
any). Note that not setting 'servers' here will lead to DNS not working: Once
the gateways all announce the "next node" address for DNS, there is no way for
nodes to automatically determine DNS servers. They have to be baked into the
firmware.
If these settings do not exist, the cache is not initialized and RAM usage will
not increase.
When next_node.name is set, an A record and an AAAA record for the
next-node IP address are placed in the dnsmasq configuration. This means that
the content of next_node.name may be resolved even without upstream connectivity.
It is suggested to use the same name as the DNS server provides:
e.g. nextnode.location.community.example.org (This way the name also works if a
client uses static DNS Servers). Hint: If next_node.name does not contain a dot
some browsers would open the searchpage instead.
::
dns = {
cacheentries = 5000,
servers = { '2001:db8::1', },
},
next_node = {
name = { 'nextnode.location.community.example.org', 'nextnode', 'nn' },
ip6 = '2001:db8:8::1',
ip4 = '198.51.100.1',
}
Each cache entry will occupy about 90 bytes of RAM.

View File

@ -0,0 +1,26 @@
DNS forwarder
=============
A Gluon node can be configured to act as a DNS forwarder. Requests for the
next-node hostname(s) can be answered locally, without querying the upstream
resolver.
**Note:** While this reduces answer time and allows to use the next-node
hostname without upstream connectivity, this feature should not be used for
next-node hostnames that are FQDN when the zone uses DNSSEC.
One or more upstream resolvers can be configured in the *dns.servers* setting.
When *next_node.name* is set, A and/or AAAA records for the next-node IP
addresses are placed in the dnsmasq configuration.
::
dns = {
servers = { '2001:db8::1', },
},
next_node = {
name = { 'nextnode.location.community.example.org', 'nextnode', 'nn' },
ip6 = '2001:db8:8::1',
ip4 = '198.51.100.1',
}

View File

@ -24,7 +24,7 @@ Information to be announced is currently split into three categories:
interfaces. This data can be used to determine the network topology.
All categories will have a ``node_id`` key. It should be used to
relate data of different categories.
relate data of different catagories.
Accessing Node Information
--------------------------
@ -33,7 +33,7 @@ There are two packages responsible for distribution of the information. For
one, information is distributed across the mesh using alfred_. Information
between neighbouring nodes is exchanged using `gluon-respondd`.
.. _alfred: https://www.open-mesh.org/projects/alfred
.. _alfred: http://www.open-mesh.org/projects/alfred
alfred (mesh bound)
~~~~~~~~~~~~~~~~~~~
@ -47,7 +47,7 @@ installed. Please note that at least one alfred daemon is required to run as
.. _alfred-json: https://github.com/ffnord/alfred-json
The following data types are used:
The following datatypes are used:
* `nodeinfo`: 158
* `statistics`: 159
@ -97,15 +97,14 @@ In order to retrieve statistics data you could run:
You can find more information about alfred in its README_.
.. _README: https://git.open-mesh.org/alfred.git/blob_plain/refs/heads/master:/README.rst
.. _README: https://git.open-mesh.org/alfred.git/blob_plain/refs/heads/master:/README
gluon-respondd
~~~~~~~~~~~~~~
`gluon-respondd` allows querying neighbouring nodes for their information.
It is a daemon listening on the multicast address ``ff02::2:1001`` on
UDP port 1001 on the mesh interface and on the multicast address
``ff05::2:1001`` on the `br-client` interface. Unicast
UDP port 1001 on both the bare mesh interfaces and `br-client`. Unicast
requests are supported as well.
The supported requests are:
@ -118,13 +117,13 @@ The supported requests are:
gluon-neighbour-info
~~~~~~~~~~~~~~~~~~~~
The program `gluon-neighbour-info` can be used to retrieve
The programm `gluon-neighbour-info` can be used to retrieve
information from other nodes.
::
gluon-neighbour-info -i bat0 \
-p 1001 -d ff05:0:0:0:0:0:2:1001 \
gluon-neighbour-info -i wlan0 \
-p 1001 -d ff02:0:0:0:0:0:2:1001 \
-r nodeinfo
An optional timeout may be specified, e.g. `-t 5` (default: 3 seconds). See

View File

@ -21,18 +21,18 @@ Overview
Multidomain support allows to build a single firmware with multiple,
switchable domain configurations. The nomenclature is as follows:
- ``site``: an aggregate over multiple domains
- ``domain``: mesh network with connectivity parameters that prevent
accidental bridging with other domains
- ``domain code``: unique domain identifier
- ``domain name``: pretty name for a domain code
- ``site``: an aggregate over multiple domains
- ``domain``: mesh network with connectivity parameters that prevent
accidental bridging with other domains
- ``domain code``: unique domain identifier
- ``domain name``: pretty name for a domain code
By default Gluon builds firmware with a single domain embedded into
``site.conf``. To use multiple domains, enable it in ``site.mk``:
::
GLUON_MULTIDOMAIN=1
GLUON_MULTIDOMAIN=1
In the site repository, create the ``domains/`` directory, which will
hold your domain configurations. Each domain configuration file is named
@ -41,26 +41,26 @@ supported.
::
site/
|-- site.conf
|-- site.mk
|-- i18n/
|-- domains/
|-- alpha_centauri.conf
|-- beta_centauri.conf
|-- gamma_centauri.conf
site/
|-- site.conf
|-- site.mk
|-- i18n/
|-- domains/
|-- alpha_centauri.conf
|-- beta_centauri.conf
|-- gamma_centauri.conf
The domain configuration ``alpha_centauri.conf`` could look like this.
::
{
domain_names = {
alpha_centauri = 'Alpha Centauri'
},
{
domain_names = {
alpha_centauri = 'Alpha Centauri'
},
-- more domain specific config follows below
}
-- more domain specific config follows below
}
In this example “Alpha Centauri” is the user-visible ``domain_name`` for the
domain_code ``alpha_centauri``. Also note that the domain code
@ -88,25 +88,18 @@ domain of a router, if and only if one of the above conditions matches.
Switching the domain
--------------------
Via commandline
^^^^^^^^^^^^^^^
**via commandline**:
::
gluon-switch-domain 'newdomaincode'
uci set gluon.core.domain="newdomaincode"
gluon-reconfigure
reboot
When the node is not in config mode, ``gluon-switch-domain`` will automatically
reboot the node by default. This can be suppressed by passing ``--no-reboot``::
**via config mode:**
gluon-switch-domain --no-reboot 'newdomaincode'
Switching the domain without reboot is currently **experimental**.
Via config mode
^^^^^^^^^^^^^^^
To allow switching the domain via config mode, add ``config-mode-domain-select``
to GLUON_FEATURES in site.mk.
To allow switching the domain via config mode, ``config-mode-domain-select``
has to be added to GLUON_FEATURES in the site.mk.
|image0|
@ -123,113 +116,119 @@ site or domain context.
site.conf only variables
^^^^^^^^^^^^^^^^^^^^^^^^
- Used in as initial default values, when the firmware was just flashed
and/or the config mode is skipped, so they do not make sense in a
domain specific way:
- Used in as initial default values, when the firmware was just flashed
and/or the config mode is skipped, so they do not make sense in a
domain specific way:
- authorized_keys
- default_domain
- poe_passthrough
- interfaces.*.default_roles
- setup_mode.skip
- autoupdater.branch
- mesh_vpn.enabled
- mesh_vpn.pubkey_privacy
- mesh_vpn.bandwidth_limit
- mesh_vpn.bandwidth_limit.enabled
- mesh_vpn.bandwidth_limit.ingress
- mesh_vpn.bandwidth_limit.egress
- authorized_keys
- default_domain
- poe_passthrough
- mesh_on_wan
- mesh_on_lan
- single_as_lan
- setup_mode.skip
- autoupdater.branch
- mesh_vpn.enabled
- mesh_vpn.pubkey_privacy
- mesh_vpn.bandwidth_limit
- mesh_vpn.bandwidth_limit.enabled
- mesh_vpn.bandwidth_limit.ingress
- mesh_vpn.bandwidth_limit.egress
- Variables that influence the appearance of the config mode,
domain-independent because they are relevant before a domain was selected.
- Variables that influence the appearance of the config mode,
domain-independent because they are relevant before a domain was selected.
- config_mode.geo_location.show_altitude
- config_mode.hostname.optional
- config_mode.remote_login
- config_mode.remote_login.show_password_form
- config_mode.remote_login.min_password_length
- hostname_prefix
- mesh_vpn.fastd.configurable
- roles.default
- roles.list
- config_mode.geo_location.show_altitude
- config_mode.hostname.optional
- config_mode.remote_login
- config_mode.remote_login.show_password_form
- config_mode.remote_login.min_password_length
- hostname_prefix
- mesh_vpn.fastd.configurable
- roles.default
- roles.list
- Specific to a firmware build itself:
- Specific to a firmware build itself:
- site_code
- site_name
- autoupdater.branches.*.name
- autoupdater.branches.*.good_signatures
- autoupdater.branches.*.pubkeys
- site_code
- site_name
- autoupdater.branches.*.name
- autoupdater.branches.*.good_signatures
- autoupdater.branches.*.pubkeys
- We simply do not see any reason, why these variables could be helpful
in a domain specific way:
- We simply do not see any reason, why these variables could be helpful
in a domain specific way:
- mesh_vpn.fastd.syslog_level
- timezone
- regdom
- mesh_vpn.fastd.syslog_level
- wifi*.supported_rates
- wifi*.basic_rates
- timezone
- regdom
domain.conf only variables
^^^^^^^^^^^^^^^^^^^^^^^^^^
- Obviously:
- Obviously:
- domain_names
- domain_names
- a table of domain codes to domain names
``domain_names = { foo = 'Foo Domain', bar = 'Bar Domain', baz = 'Baz Domain' }``
- a table of domain codes to domain names
``domain_names = { foo = 'Foo Domain', bar = 'Bar Domain', baz = 'Baz Domain' }``
- hide_domain
- hide_domain
- prevents a domain name(s) from appearing in config mode, either
boolean or array of domain codes
- prevents a domain name(s) from appearing in config mode, either
boolean or array of domain codes
- ``true``, ``false``
- ``{ 'foo', 'bar' }``
- ``true``, ``false``
- ``{ 'foo', 'bar' }``
- Because each domain is considered a separate layer 2 network, these
values should be different in each domain:
- Because each domain is considered as an own layer 2 network, these
values should be different in each domain:
- next_node.ip4
- next_node.ip6
- next_node.name
- prefix6
- prefix4
- extra_prefixes6
- next_node.ip4
- next_node.ip6
- next_node.name
- prefix6
- prefix4
- extra_prefixes6
- To prevent accidental bridging of different domains, all meshing
technologies should be separated:
- To prevent accidential bridging of different domains, all meshing
technologies should be seperated:
- domain_seed (wired mesh)
- domain_seed (wired mesh)
- must be a random value used to derive the vxlan id for wired meshing
- must be a random value used to derive the vxlan id for wired meshing
- wifi*.mesh.id
- mesh_vpn.fastd.groups.*.peers.remotes
- mesh_vpn.fastd.groups.*.peers.key
- mesh_vpn.tunneldigger.brokers
- wifi*.ibss.ssid
- wifi*.ibss.bssid
- wifi*.mesh.id
- mesh_vpn.fastd.groups.*.peers.remotes
- mesh_vpn.fastd.groups.*.peers.key
- mesh_vpn.tunneldigger.brokers
- Clients consider WiFi networks sharing the same ESSID as if they were
the same L2 network and try to reconfirm and reuse previous
addressing. If multiple neighbouring domains shared the same ESSID,
the roaming experience of clients would degrade.
- Clients consider WiFi networks sharing the same ESSID as if they were
the same L2 network and try to reconfirm and reuse previous
addressing. If multiple neighbouring domains shared the same ESSID,
the roaming experience of clients would degrade.
- wifi*.ap.ssid
- wifi*.ap.ssid
- Some values should be only set in legacy domains and not in new domains.
- Some values should be only set in legacy domains and not in new domains.
- mesh.vxlan
- mesh.vxlan
- By default, this value is `true`. It should be only set to `false`
for one legacy domain, since vxlan prevents accidental wired
merges of domains. For old domains this value is still available
to keep compatibility between all nodes in one domain.
- By default, this value is `true`. It should be only set to `false`
for one legacy domain, since vxlan prevents accidental wired
merges of domains. For old domains this value is still available
to keep compatibility between all nodes in one domain.
- next_node.mac
- next_node.mac
- For new domains, the default value should be used, since there is
no need for a special mac (or domain specific mac). For old domains
this value is still available to keep compatibility between all
nodes in one domain.
- For new domains, the default value should be used, since there is
no need for a special mac (or domain specific mac). For old domains
this value is still available to keep compatibility between all
nodes in one domain.
Example config
--------------

View File

@ -1,16 +1,8 @@
Private WLAN
============
It is possible to set up a private WLAN that bridges the uplink port and is separated from the mesh network.
Please note that you should not enable Wired Mesh on the uplink port at the same time.
The private WLAN is encrypted using WPA2 by default. On devices with enough flash and a supported radio,
WPA3 or WPA2/WPA3 mixed-mode can be used instead of WPA2. For this to work, the ``wireless-encryption-wpa3``
feature has to be added to ``GLUON_FEATURES``.
It is recommended to enable IEEE 802.11w management frame protection for WPA2/WPA3 networks, however this
can lead to connectivity problems for older clients. In this case, management frame protection can be
made optional or completely disabled in the advanced settings tab.
It is possible to set up a private WLAN that bridges the WAN port and is seperated from the mesh network.
Please note that you should not enable ``mesh_on_wan`` simultaneously.
The private WLAN can be enabled through the config mode if the package ``gluon-web-private-wifi`` is installed.
You may also enable a private WLAN using the command line::
@ -27,7 +19,7 @@ You may also enable a private WLAN using the command line::
uci set wireless.wan_radio$RID.ssid="$SSID"
uci set wireless.wan_radio$RID.key="$KEY"
uci set wireless.wan_radio$RID.disabled=0
uci set wireless.wan_radio$RID.macaddr=$(lua -e "print(require('gluon.util').generate_mac(3+4*$RID))")
uci set wireless.wan_radio$RID.macaddr="$($(echo "lua -e print(require('gluon.util').generate_mac(3+4*$RID))"))"
uci commit
wifi

View File

@ -2,8 +2,8 @@ Roles
=====
It is possible to define a set of roles you want to distinguish at backend side. One node can own one
role which it will announce via respondd/announced inside the mesh. This will make it easier to differentiate
nodes when parsing respondd data. E.g to count only **normal** nodes and not the gateways
role which it will announce via alfred inside the mesh. This will make it easier to differentiate
nodes when parsing alfred data. E.g to count only **normal** nodes and not the gateways
or servers (nodemap). A lot of things are possible.
For this the section ``roles`` in ``site.conf`` is needed::
@ -28,7 +28,7 @@ If you want node owners to change the defined roles via config-mode you can add
The role is saved in ``gluon-node-info.system.role``. To change the role using command line do::
uci set gluon-node-info.@system[0].role="$ROLE"
uci set gluon-node-info.system.role="$ROLE"
uci commit
Please replace ``$ROLE`` by the role you want the node to own.

View File

@ -1,212 +1,57 @@
Mesh VPN
Mesh-VPN
========
Gluon integrates several layer 2 tunneling protocols to
allow connections between local meshes through the internet.
Gluon integrates several OSI-Layer 2 tunneling protocols to
enable interconnects between local meshes and provide
internetwork access. Available protocols currently are:
Protocol handlers
^^^^^^^^^^^^^^^^^
- fastd
- L2TPv3 (via tunneldigger)
There are currently three protocol handlers which can be selected
via ``GLUON_FEATURES`` in ``site.mk``:
mesh-vpn-fastd
""""""""""""""
fastd is a lightweight userspace tunneling daemon that
fastd is a lightweight userspace tunneling daemon, that
implements cipher suites that are specifically designed
to work well on embedded devices. It offers encryption
and authentication.
The primary drawback of fastd's encrypted connection modes
is the necessary context switches when forwarding packets.
A kernel-supported L2TPv3 offloading option is available to
work around the context-switching bottleneck, but it comes
at the cost of losing the ability to protect tunnel connections
against eavesdropping or manipulation.
and authentication. Its primary drawback are the necessary
context-switches when forwarding packets.
mesh-vpn-tunneldigger
"""""""""""""""""""""
Tunneldigger always uses L2TPv3, generally achieving the same
performance as fastd with the ``null@l2tp`` method, but offering
no security.
Tunneldigger's primary drawback is the lack of IPv6 support.
It also provides less configurability than fastd.
mesh-vpn-wireguard
""""""""""""""""""
WireGuard is an encrypted in-kernel tunneling protocol that
provides encrypted transmission and at the same time offers
high throughput.
L2TPv3 is an in-kernel tunneling protocol that performs well,
but offers no security properties by itself.
The brokering of the tunnel happens through tunneldigger,
its primary drawback being the lack of IPv6 support.
fastd
^^^^^
-----
.. _VPN fastd methods:
Methods
"""""""
fastd offers various different connection "methods" with different
security properties that can be configured in the site configuration.
The following methods are currently recommended:
- ``salsa2012+umac``: Encrypted + authenticated
- ``null+salsa2012+umac``: Unencrypted, authenticated
- ``null@l2tp``: Unencrypted, unauthenticated
Multiple methods can be listed in ``site.conf``. The first listed method
supported by both the node and its peer will be used.
The use of the ``null@l2tp`` method with offloading enabled can provide a
considerable performance gain, especially on weaker embedded hardware.
For L2TP offloading, the ``mesh-vpn-fastd-l2tp`` feature needs to be enabled in
``site.mk``.
Configurable Cipher
^^^^^^^^^^^^^^^^^^^
.. _vpn-gateway-configuration:
Gateway / Supernode Configuration
"""""""""""""""""""""""""""""""""
When only using the ``null`` or ``null@l2tp`` methods without offloading,
simply add these methods to the front of the method list. ``null@l2tp``
should always appear before ``null`` in the configuration when both are enabled.
fastd v22 or newer is needed for the ``null@l2tp`` method.
It is often not necessary to enable L2TP offloading on supernodes for
performance reasons. Nodes using offloading can communicate with supernodes that
don't use offloading as long as both use the ``null@l2tp`` method.
.. _vpn-gateway-configuration-offloading:
Offloading on Gateways / Supernodes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To enable L2TP offloading on the supornodes, it is recommended to study the
fastd documentation section pertaining to the `offload configuration option
<https://fastd.readthedocs.io/en/stable/manual/config.html#option-offload>`_.
However, the important changes to the fastd config on your Supernode are:
- | Set ``mode multitap;``
| Every peer gets their own interface.
- | Replace ``interface "foo":`` with ``interface "peer-%k";``
| ``%k`` is substituted for a portion of the peers public key.
- | Set ``offload l2tp yes;``
| This tells fastd to use the l2tp kernel module.
- | Set ``persist interface no;``
| This tells fastd to only keep interfaces around while the connection is active.
Note that in ``multitap`` mode, which is required when using L2TP offloading,
fastd will create one interface per peer on the supernode's. This allows
offloading the L2TP forwarding into the kernel space. But this also means added
complexity with regards to handling those interfaces.
There are two main options on how you can handle this:
- create ``on up`` and ``on down`` hooks
- to handle interface setup and destruction
- preferably using the async keyword, so hooks are not blocking fastd
- use a daemon like systemd-networkd
Examples for both options can be found in the
`Wiki <https://github.com/freifunk-gluon/gluon/wiki/fastd-l2tp-offloading-on-supernodes>`_.
Configurable Method
"""""""""""""""""""
From the site configuration, fastd can be allowed to offer
From the site configuration fastd can be allowed to offer
toggleable encryption in the config mode with the intent to
increase throughput.
increase throughput, although in practice the gain is minimal.
There is also an older unprotected method ``null``. Use of the newer
``null@l2tp`` method is generally recommended over ``null``, as the
performance gains provided by the latter (compared to the encrypted
and authenticated methods) are very small.
**Site configuration:**
Site configuration
~~~~~~~~~~~~~~~~~~
1) Install ``gluon-web-mesh-vpn-fastd`` in ``site.mk``
2) Set ``mesh_vpn.fastd.configurable = true`` in ``site.conf``
1)
Add the feature ``web-mesh-vpn-fastd`` in ``site.mk``
2)
Set ``mesh_vpn.fastd.configurable = true`` in ``site.conf``
3)
Optionally, add ``null@l2tp`` to the ``mesh_vpn.fastd.methods`` table if you want
"Performance mode" as default (not recommended)
**Gateway configuration:**
Config Mode
~~~~~~~~~~~
1) Prepend the ``null`` cipher in fastd's method list
**Config Mode:**
The resulting firmware will allow users to choose between secure (encrypted) and fast (unencrypted) transport.
.. image:: fastd_mode.gif
To confirm whether the correct cipher is being used, the log output
of fastd can be checked using ``logread``.
**Unix socket:**
To confirm whether the correct cipher is being used, fastds unix
socket can be interrogated, after installing for example `socat`.
WireGuard
^^^^^^^^^
::
In order to support WireGuard in Gluon, a few technologies are glued together.
opkg update
opkg install socat
socat - UNIX-CONNECT:/var/run/fastd.mesh_vpn.socket
**VXLAN:** As Gluon typically relies on batman-adv, the Mesh VPN has to provide
OSI Layer 2 transport. But WireGuard is an OSI Layer 3 tunneling protocol, so
additional technology is necessary here. For this, we use VXLAN. In short, VXLAN
is a well-known technology to encapsulate ethernet packages into IP packages.
You can think of it as kind of similar to VLAN, but on a different layer. Here,
we use VXLAN to transport batman-adv traffic over WireGuard.
**wgpeerselector**: To connect all gluon nodes to each other, it is common to
create a topology where each gluon node is connected to one of the available
gateways via Mesh VPN respectively. To achieve this, the gluon node should be
able to select a random gateway to connect to. But such "random selection of a
peer" is not implemented in WireGuard by default. WireGuard only knows static
peers. Therefore the *wgpeerselector* has been developed. It randomly selects a
gateway, tries to establish a connection, and if it fails, tries to connect
to the next gateway. This approach has several advantages, such as load
balancing VPN connection attempts and avoiding problems with offline gateways.
More information about the wgpeerselector and its algorithm can be found
`here <https://github.com/freifunk-gluon/packages/blob/master/net/wgpeerselector/README.md>`__.
On the gluon node both VXLAN and the wgpeerselector are well integrated and no
explicit configuration of those tools is necessary, once the general WireGuard
support has been configured.
Attention must by paid to time synchronization. As WireGuard
performs checks on timestamps in order to avoid replay attacks, time must
be synchronized before the Mesh VPN connection is established. This means that
the NTP servers specified in your site.conf must be publicly available (and not
only through the mesh). Be aware that if you fail this, you may not directly see
negative effects. Only when a previously connected node reboots the effect
comes into play, as the gateway still knows about the old timestamp of the gluon
node.
gluon-mesh-vpn-key-translate
""""""""""""""""""""""""""""
Many communities already possess a collection of active fastd-keys when they
plan migrating their community to WireGuard.
These public keys known on the server-side can be derived into their WireGuard
equivalent using `gluon-mesh-vpn-key-translate <https://github.com/AiyionPrime/gluon-mesh-vpn-key-translate>`__.
The routers do the necessary reencoding of the private key seamlessly
when updating firmware from fastd to the WireGuard variant.
Gateway / Supernode Configuration
"""""""""""""""""""""""""""""""""
On the gateway side, a software called *wireguard-vxlan-glue* is necessary. It
is a small daemon that dynamically adds and removes forwarding rules for VXLAN
interfaces, so traffic is sent correctly into the WireGuard interface. Thereby
the forwarding rules are only installed if a client is connected, so
unnecessary traffic in the kernel is avoided. The source can be found
`here <https://github.com/freifunkh/wireguard-vxlan-glue/>`__.

View File

@ -20,7 +20,7 @@ Wired mesh encapsulation
Since version 2018.1, Gluon supports encapsulating wired mesh traffic in
`VXLAN <https://en.wikipedia.org/wiki/Virtual_Extensible_LAN>`_, a new standard with
use cases similar to VLANs, but a much greater ID space of 24bit; in addition, VXLAN
usecases similar to VLANs, but a much greater ID space of 24bit; in addition, VXLAN
packets pass through VLAN-aware switches without any special configuration.
Encapsulating mesh traffic has two advantages:
@ -50,84 +50,38 @@ Configuration
Both Mesh-on-WAN and Mesh-on-LAN can be configured on the "Network" page
of the *Advanced settings* (if the package ``gluon-web-network`` is installed).
It is also possible to enable Mesh-on-WAN and Mesh-on-LAN by default by adding
the ``mesh`` role to the ``interfaces.*.default_roles`` options in your
:ref:`site.conf<user-site-interfaces>`.
.. _wired-mesh-commandline:
It is also possible to enable Mesh-on-WAN and Mesh-on-LAN by default by
adding ``mesh_on_wan = true`` and ``mesh_on_lan = true`` to ``site.conf``.
Commandline
===========
Starting with release 2022.1, the wired network configuration is rebuilt from ``/etc/config/gluon``
upon each ``gluon-reconfigure``.
Therefore the network configuration is overwritten at least with every firmware upgrade.
Every interface has a list of roles assigned to it which can be ``client``, ``mesh`` or ``uplink``.
When the client role is assigned to an interface in combination with other roles
(like 'client', 'mesh' in the Mesh-on-LAN example below), the other roles take
precedence, enabling mesh but not client in the previous example.
The setup/config-mode interface is every interface with the role ``client`` which makes removing
it from interfaces not only unnecessary, but generally unrecommended.
In order to make persistent changes to the router's configuration it's necessary to:
* change the sections in ``/etc/config/gluon`` e.g. using uci (see examples below)
* call ``gluon-reconfigure`` to re-generate ``/etc/config/network``
* apply the networking changes, either through executing ``service network restart`` or by performing a ``reboot``
Enable Mesh-on-WAN::
uci add_list gluon.iface_wan.role='mesh'
uci commit gluon
uci set network.mesh_wan.disabled=0
uci commit network
Disable Mesh-on-WAN::
uci del_list gluon.iface_wan.role='mesh'
uci commit gluon
uci set network.mesh_wan.disabled=1
uci commit network
Enable Mesh-on-LAN::
uci add_list gluon.iface_lan.role='mesh'
uci commit gluon
uci set network.mesh_lan.disabled=0
for ifname in $(cat /lib/gluon/core/sysconfig/lan_ifname); do
uci del_list network.client.ifname=$ifname
done
uci commit network
Disable Mesh-on-LAN::
uci del_list gluon.iface_lan.role='mesh'
uci commit gluon
uci set network.mesh_lan.disabled=1
for ifname in $(cat /lib/gluon/core/sysconfig/lan_ifname); do
uci add_list network.client.ifname=$ifname
done
uci commit network
For devices with a single interface, instead of `iface_lan` and `iface_wan` configuration is
done with `iface_single`.
Enable Mesh-on-Single::
uci add_list gluon.iface_single.role='mesh'
uci commit gluon
Disable Mesh-on-Single::
uci del_list gluon.iface_single.role='mesh'
uci commit gluon
Furthermore it is possible to make use of 802.1Q VLAN.
The following statements would create a VLAN with id 8 on ``eth0`` and join the mesh network with it::
uci set gluon.iface_lan_vlan8=interface
uci set gluon.iface_lan_vlan8.name='eth0.8'
uci add_list gluon.iface_lan_vlan8.role='mesh'
uci commit gluon
Other VLAN-interfaces could be configured on the same parent interface in order to have
all three roles available on ``eth0`` without having them interfere with each other.
This feature comes in especially handy for the persistent configuration of virtual machines
as offloader for bigger installations.
A ``reboot`` is not sufficient to apply an altered configuration; calling ``gluon-reconfigure`` before is
mandatory in order for changes to take effect.
Please note that this configuration has changed in Gluon 2022.1. Using
the old commands on 2022.1 and later will break the corresponding options
Please note that this configuration has changed in Gluon 2016.1. Using
the old commands on 2016.1 and later will break the corresponding options
in the *Advanced settings*.

View File

@ -2,9 +2,10 @@ WLAN configuration
==================
Gluon allows to configure 2.4GHz and 5GHz radios independently. The configuration
may include one or both of the two networks "client" (AP mode) and "mesh" (802.11s
mode), which can be used simultaneously. See :doc:`../user/site` for details on the
configuration.
may include any or all of the three networks "client" (AP mode), "mesh" (802.11s
mode) and "ibss" (adhoc mode), which can be used simultaneously (using "mesh" and
"ibss" at same time should be avoided though as weaker hardware usually can't handle the additional
load). See :doc:`../user/site` for details on the configuration.
Upgrade behaviour
-----------------
@ -15,12 +16,19 @@ on upgrades the existing setting is always retained (as this setting may have be
by the user). This means that it is not possible to enable or disable an existing network
configurations during upgrades.
For the "mesh" and "ibss" networks, the default setting only has an effect if none
of the two has existed before. If a new configuration has been added for "mesh" or "ibss",
while the other of the two has already existed before, the enabled/disabled state of the
existing configuration will also be set for the new configuration.
This allows upgrades to change from IBSS to 11s and vice-versa while retaining the
"wireless meshing is enabled/disabled" property configured by the user regardless
of the used mode.
During upgrades the wifi channel of the 2.4GHz and 5GHz radio will be restored to the channel
configured in the site.conf. The channel width will be reset to Gluon's default. If you need to preserve
these settings during upgrades you can configure this via the uci section ``gluon-core.wireless``::
configured in the site.conf. If you need to preserve a user defined wifi channel during upgrades
you can configure this via the uci section ``gluon-core.wireless``::
uci set gluon.wireless.preserve_channels='1'
uci set gluon-core.@wireless[0].preserve_channels='1'
When channels should be preserved, toggling the outdoor mode will have no effect on the channel settings.
Therefore, the Outdoor mode settings won't be displayed in config mode.
Keep in mind that nodes running wifi interfaces on custom channels can't mesh with default nodes anymore!

View File

@ -1,85 +1,381 @@
Welcome to Gluon
================
Gluon is a modular framework for creating OpenWrt-based firmware images for wireless mesh nodes.
Several Freifunk communities in Germany use Gluon as the foundation of their Freifunk firmware.
Gluon is a modular framework for creating OpenWrt-based firmwares for wireless mesh nodes.
Several Freifunk communities in Germany use Gluon as the foundation of their Freifunk firmwares.
.. toctree::
:caption: User Documentation
:maxdepth: 2
:caption: User Documentation
:maxdepth: 2
user/getting_started
user/site
user/supported_devices
user/x86
user/faq
user/mtu
user/getting_started
user/site
user/x86
user/faq
.. toctree::
:caption: Features
:maxdepth: 2
:caption: Features
:maxdepth: 2
features/configmode
features/autoupdater
features/wlan-configuration
features/private-wlan
features/wired-mesh
features/dns-cache
features/monitoring
features/multidomain
features/authorized-keys
features/roles
features/vpn
features/configmode
features/autoupdater
features/wlan-configuration
features/private-wlan
features/wired-mesh
features/dns-forwarder
features/monitoring
features/multidomain
features/authorized-keys
features/roles
features/vpn
.. toctree::
:caption: Developer Documentation
:maxdepth: 2
:caption: Developer Documentation
:maxdepth: 2
dev/basics
dev/hardware
dev/packages
dev/upgrade
dev/uplink
dev/mac_addresses
dev/site_library
dev/build
dev/debugging
dev/basics
dev/hardware
dev/packages
dev/upgrade
dev/wan
dev/mac_addresses
dev/site_library
.. toctree::
:caption: gluon-web Reference
:maxdepth: 1
:caption: gluon-web Reference
:maxdepth: 1
dev/web/controller
dev/web/model
dev/web/view
dev/web/i18n
dev/web/config-mode
dev/web/controller
dev/web/model
dev/web/view
dev/web/i18n
dev/web/config-mode
.. toctree::
:caption: Packages
:maxdepth: 1
:caption: Packages
:maxdepth: 1
package/gluon-client-bridge
package/gluon-config-mode-domain-select
package/gluon-ebtables-filter-multicast
package/gluon-ebtables-filter-ra-dhcp
package/gluon-ebtables-limit-arp
package/gluon-ebtables-source-filter
package/gluon-hoodselector
package/gluon-logging
package/gluon-mesh-batman-adv
package/gluon-mesh-wireless-sae
package/gluon-radv-filterd
package/gluon-scheduled-domain-switch
package/gluon-web-admin
package/gluon-web-logging
package/gluon-client-bridge
package/gluon-config-mode-domain-select
package/gluon-ebtables-filter-multicast
package/gluon-ebtables-filter-ra-dhcp
package/gluon-ebtables-limit-arp
package/gluon-ebtables-source-filter
package/gluon-radv-filterd
package/gluon-web-admin
package/gluon-web-logging
.. toctree::
:caption: Releases
:maxdepth: 1
:caption: Releases
:maxdepth: 1
releases/index
releases/v2018.1.4
releases/v2018.1.3
releases/v2018.1.2
releases/v2018.1.1
releases/v2018.1
releases/v2017.1.8
releases/v2017.1.7
releases/v2017.1.6
releases/v2017.1.5
releases/v2017.1.4
releases/v2017.1.3
releases/v2017.1.2
releases/v2017.1.1
releases/v2017.1
releases/v2016.2.7
releases/v2016.2.6
releases/v2016.2.5
releases/v2016.2.4
releases/v2016.2.3
releases/v2016.2.2
releases/v2016.2.1
releases/v2016.2
releases/v2016.1.6
releases/v2016.1.5
releases/v2016.1.4
releases/v2016.1.3
releases/v2016.1.2
releases/v2016.1.1
releases/v2016.1
releases/v2015.1.2
releases/v2015.1.1
releases/v2015.1
releases/v2014.4
releases/v2014.3.1
releases/v2014.3
Supported Devices & Architectures
---------------------------------
ar71xx-generic
^^^^^^^^^^^^^^
* 8devices
- Carambola 2
* ALFA Network
- AP121
- AP121F
- AP121U
- Hornet-UB
- Tube2H
- N2
- N5
* Allnet
- ALL0315N
* AVM
- Fritz!Box 4020
* Buffalo
- WZR-HP-AG300H / WZR-600DHP
- WZR-HP-G300NH
- WZR-HP-G300NH2
- WZR-HP-G450H
* D-Link
- DIR-505 (A1, A2)
- DIR-825 (B1)
* GL Innovations
- GL-AR150
- GL-AR300M
- GL-AR750 [#ath10k]_
- GL-iNet 6408A (v1)
- GL-iNet 6416A (v1)
* Linksys
- WRT160NL
* Netgear
- WNDR3700 (v1, v2, v5)
- WNDR3800
- WNDRMAC (v2)
* Onion
- Omega
* OpenMesh
- A40
- A60
- MR600 (v1, v2)
- MR900 (v1, v2)
- MR1750 (v1, v2) [#ath10k]_
- OM2P (v1, v2, v4)
- OM2P-HS (v1, v2, v3, v4)
- OM2P-LC
- OM5P
- OM5P-AN
- OM5P-AC (v1, v2) [#ath10k]_
* TP-Link
- Archer C5 (v1) [#ath10k]_
- Archer C59 (v1) [#80211s]_
- Archer C7 (v2, v4) [#ath10k]_
- CPE210 (v1.0, v1.1, v2.0)
- CPE220 (v1.1)
- CPE510 (v1.0, v1.1)
- CPE520 (v1.1)
- RE450 [#ath10k]_
- TL-WDR3500 (v1)
- TL-WDR3600 (v1)
- TL-WDR4300 (v1)
- TL-WR710N (v1, v2.1)
- TL-WR842N/ND (v1, v2, v3)
- TL-WR1043N/ND (v1, v2, v3, v4, v5)
- TL-WR2543N/ND (v1)
- WBS210 (v1.20)
- WBS510 (v1.20)
* Ubiquiti
- Air Gateway
- Air Gateway LR
- Air Gateway PRO
- Air Router
- Bullet M2/M5
- Loco M2/M5
- Loco M2/M5 XW
- Nanostation M2/M5
- Nanostation M2/M5 XW
- Picostation M2/M5
- Rocket M2/M5
- Rocket M2/M5 Ti
- Rocket M2/M5 XW
- UniFi AC Mesh [#ath10k]_
- UniFi AP
- UniFi AP AC Lite [#ath10k]_
- UniFi AP AC LR [#ath10k]_
- UniFi AP AC Pro [#ath10k]_
- UniFi AP LR
- UniFi AP Pro
- UniFi AP Outdoor
- UniFi AP Outdoor+
* Western Digital
- My Net N600
- My Net N750
ar71xx-nand
^^^^^^^^^^^
* Netgear
- WNDR3700 (v4)
- WNDR4300 (v1)
* ZyXEL
- NBG6716 [#ath10k]_
ar71xx-tiny
^^^^^^^^^^^
* D-Link
- DIR-615 (C1)
* TP-Link
- TL-MR13U (v1)
- TL-MR3020 (v1)
- TL-MR3040 (v1, v2)
- TL-MR3220 (v1, v2)
- TL-MR3420 (v1, v2)
- TL-WA701N/ND (v1, v2)
- TL-WA730RE (v1)
- TL-WA750RE (v1)
- TL-WA801N/ND (v1, v2, v3)
- TL-WA830RE (v1, v2)
- TL-WA850RE (v1)
- TL-WA860RE (v1)
- TL-WA901N/ND (v1, v2, v3, v4, v5)
- TL-WA7210N (v2)
- TL-WA7510N (v1)
- TL-WR703N (v1)
- TL-WR710N (v1, v2, v2.1)
- TL-WR740N (v1, v3, v4, v5)
- TL-WR741N/ND (v1, v2, v4, v5)
- TL-WR743N/ND (v1, v2)
- TL-WR841N/ND (v3, v5, v7, v8, v9, v10, v11, v12)
- TL-WR843N/ND (v1)
- TL-WR940N (v1, v2, v3, v4, v5, v6)
- TL-WR941ND (v2, v3, v4, v5, v6)
brcm2708-bcm2708
^^^^^^^^^^^^^^^^
* RaspberryPi 1
brcm2708-bcm2709
^^^^^^^^^^^^^^^^
* RaspberryPi 2
mpc85xx-generic
^^^^^^^^^^^^^^^
* TP-Link
- TL-WDR4900 (v1)
ramips-mt7620
^^^^^^^^^^^^^
* GL Innovations
- GL-MT300A [#80211s]_
- GL-MT300N [#80211s]_
- GL-MT750 [#80211s]_
ramips-mt7621
^^^^^^^^^^^^^
* Ubiquiti
- EdgeRouter X
- EdgeRouter X-SFP
ramips-mt7628
^^^^^^^^^^^^^
* VoCore
- VoCore2 [#80211s]_
ramips-rt305x
^^^^^^^^^^^^^
* A5-V11 [#80211s]_
* D-Link
- DIR-615 (D1, D2, D3, D4, H1) [#80211s]_
* VoCore
- VoCore (8M) [#80211s]_
- VoCore (16M) [#80211s]_
sunxi
^^^^^
* LeMaker
- Banana Pi M1
x86-generic
^^^^^^^^^^^
* x86-generic
* x86-virtualbox
* x86-vmware
See also: :doc:`user/x86`
x86-geode
^^^^^^^^^
* x86-geode
See also: :doc:`user/x86`
x86-64
^^^^^^
* x86-64-generic
* x86-64-virtualbox
* x86-64-vmware
See also: :doc:`user/x86`
Footnotes
^^^^^^^^^
.. [#ath10k]
Device uses the ath10k WLAN driver; images are built for 11s by default unless GLUON_WLAN_MESH
is set as described in :ref:`getting-started-make-variables`
.. [#80211s]
Device does not support IBSS; images are built by default unless GLUON_WLAN_MESH
is explicitly set to something other than *11s*
License
-------
@ -91,4 +387,5 @@ See LICENCE_
Indices and tables
==================
* :ref:`genindex`
* :ref:`search`

View File

@ -21,7 +21,7 @@
ip6 = 'fdxx:xxxx:xxxx:xxxx::xxxx',
},
wifi24 = {
wifi24= {
ap = {
ssid = "alpha-centauri.example.org",
channel = 1,
@ -31,7 +31,7 @@
},
},
wifi5 = {
wifi5= {
ap = {
ssid = "alpha-centauri.example.org",
channel = 44,
@ -41,12 +41,6 @@
},
},
mesh = {
batman_adv = {
routing_algo = 'BATMAN_IV',
},
},
mesh_vpn = {
fastd = {
groups = {

View File

@ -20,10 +20,10 @@
},
mesh_vpn = {
mtu = 1312,
fastd = {
methods = {'salsa2012+umac'},
mtu = 1312,
},
bandwidth_limit = {

View File

@ -12,6 +12,7 @@ GLUON_FEATURES := \
ebtables-limit-arp \
mesh-batman-adv-15 \
mesh-vpn-fastd \
radvd \
respondd \
status-page \
web-advanced \
@ -29,7 +30,7 @@ GLUON_MULTIDOMAIN=1
# chosen feature flags
GLUON_SITE_PACKAGES := iwinfo
GLUON_SITE_PACKAGES := haveged iwinfo
## DEFAULT_GLUON_RELEASE
# version string to use for images

View File

@ -5,7 +5,7 @@ the node will be placed in. If the selection has changed the upgrade scripts in
``/lib/gluon/upgrade/`` are triggered to update the nodes configuration.
Hiding domains could be useful for default or testing domains, which should not
be accidentally selected by a node operator.
be accidentally selected by a node operater.
domains/\*.conf
---------------

View File

@ -1,17 +1,17 @@
gluon-ebtables-limit-arp
========================
The *gluon-ebtables-limit-arp* package adds filters to limit the
amount of ARP requests client devices are allowed to send into the
mesh.
The *gluon-ebtables-limit-arp* package adds filters to limit the
amount of ARP requests client devices are allowed to send into the
mesh.
The limits per client device, identified by its MAC address, are
6 packets per minute and 1 per second per node in total.
6 packets per minute and 1 per second per node in total.
A burst of up to 50 ARP requests is allowed until the rate-limiting
takes effect (see ``--limit-burst`` in ``ebtables(8)``).
Furthermore, ARP requests for a target IP already present in the
batman-adv DAT cache are excluded from rate-limiting, in regard
batman-adv DAT cache are excluded from rate-limiting, in regard
to both counting and filtering, as batman-adv will be able
to respond locally without a burden for the mesh. Therefore, this
limiter should not affect popular target IP addresses, like those
@ -21,9 +21,3 @@ However it mitigates the impact on the mesh when a larger range of
its IPv4 subnet is being scanned, which would otherwise result in
a significant amount of ARP chatter, even for unused IP addresses.
This package is installed by default if the selected routing
feature is *mesh-batman-adv-15*.
It can be unselected via::
GLUON_SITE_PACKAGES := \
-gluon-ebtables-limit-arp

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 KiB

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
<svg width="13cm" height="9cm" viewBox="348 138 253 169" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g>
<rect style="fill: #ffffff" x="389" y="164" width="158" height="115"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="389" y="164" width="158" height="115"/>
</g>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="348" y="150">
<tspan x="348" y="150">53.22,</tspan>
<tspan x="348" y="166">8.09 #</tspan>
</text>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="545" y="288">
<tspan x="545" y="288"># 53.36,</tspan>
<tspan x="545" y="304"> 8.32</tspan>
</text>
</svg>

Before

Width:  |  Height:  |  Size: 996 B

File diff suppressed because it is too large Load Diff

View File

@ -1,133 +0,0 @@
gluon-hoodselector
==================
This package provides an automated way to continuously select the correct
domain based on the geolocation of a node. The purpose of Hoodselector is to
automatically detect in which domain the node is located based on its
geolocation settings. Therefore domains are required to have bounding boxes,
defined as polygons or rectangles. Based on this information Hoodselector will
select a domain from the list of known domains and migrate towards it without
requiring a reboot. This package therefore provides a scalable and
decentralized approach to automatic domain selection.
Background information
----------------------
The main problem of the Nordwest Freifunk community was the quickly rising
number of nodes in the network. This indirectly affected the stability of the
network, because the noise inside the network, e.g. management traffic from
the batman-adv protocol, was rising, too. Inside the community there were some
ideas like building separate firmwares for each region. This solution would
cause issues with splitting regions again and nodes scattered among regions
which belong to a different region. Therefore we decided to develop a
dynamic and decentralized management of regions called domains.
The Hoodselector's task is to choose the "right" domains in an intelligent way
and to hold the network together and accessible.
A domain is defined by geostationary fixed shapes by using longitude & latitude
in combination with the domain configuration system. Below you can see a visual
example of a regional domain:
.. figure:: ./gluon-hoodselector-domainmap.jpeg
:alt: Regional domains visualized as shapes defined by latitude & longitude
© OpenStreetMap contributors
Behaviour
------------------
The following is an abstract state diagram which gives an overview
of the process:
.. image:: ./gluon-hoodselector.svg
The sequence of this diagram reflects the priority of its running modes.
Each mode will be explained separately below.
geolocation mode
^^^^^^^^^^^^^^^^
This mode will only be entered when a node has location coordinates set.
Nodes with a position will set their domain based on it.
The node will skip to the next mode when the node (a) has no position or
(b) its position is not within any of the defined bounding boxes.
default domain mode
^^^^^^^^^^^^^^^^^^^
This mode will be entered if no other mode before fits.
It provides a fallback to the default domain.
Domain shapes
-------------
There are two types of domains: the unique default one without a defined shape
and others which contain shapes.
* **default domain**
The default domain doesn't hold any shapes and represents the inverted area of
all other shapes held by other domains with geo coordinates. It will only be
entered if a node could not be matched to a geo domain. A suggested approach is
to define the "old" network as default domain and gradually migrate nodes from
there to geo domains.
* **geo domains**
A geo domain contains shapes, which are described by three dimensional arrays
and represents the geographical size of the domain. There are two possible
definitions of these shapes. The first one is using rectangles so that only
two coordinates per box are needed to define it (see below for an
example). The second one uses polygons which can have multiple edges.
Each domain can hold multiple shapes.
.. image:: ./gluon-hoodselector-rectangle-example.svg
site.conf
---------
The designer of the shapes must always ensure that no overlapping polygons
between domains will be created or else the order in the domain list will
become relevant. If for example domain A and B overlap, Hoodselector
would, for that overlapping area, only ever reach domain A, but never domain B.
Here is an example of a rectangular definition of a shape:
Example::
hoodselector = {
shapes = {
{
{
lat = 53.128,
lon = 8.187
},
{
lat = 53.163,
lon = 8.216
},
},
},
},
Here is an example of a shape defined by a triangle:
Example::
hoodselector = {
shapes = {
{
{
lat = 53.128,
lon = 8.187
},
{
lat = 53.163,
lon = 8.216
},
{
lat = 53.196,
lon = 8.194
},
},
},
},
This package is incompatible with :doc:`gluon-config-mode-domain-select`.

View File

@ -1,291 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="863pt" height="411pt" viewBox="0 0 863 411" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d="M 0.640625 2.265625 L 0.640625 -9.015625 L 7.03125 -9.015625 L 7.03125 2.265625 Z M 1.359375 1.546875 L 6.328125 1.546875 L 6.328125 -8.296875 L 1.359375 -8.296875 Z M 1.359375 1.546875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 1.25 -9.328125 L 2.515625 -9.328125 L 2.515625 -1.0625 L 7.0625 -1.0625 L 7.0625 0 L 1.25 0 Z M 1.25 -9.328125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 3.921875 -6.1875 C 3.304688 -6.1875 2.816406 -5.945312 2.453125 -5.46875 C 2.097656 -4.988281 1.921875 -4.332031 1.921875 -3.5 C 1.921875 -2.65625 2.097656 -1.992188 2.453125 -1.515625 C 2.804688 -1.035156 3.296875 -0.796875 3.921875 -0.796875 C 4.535156 -0.796875 5.019531 -1.035156 5.375 -1.515625 C 5.726562 -2.003906 5.90625 -2.664062 5.90625 -3.5 C 5.90625 -4.320312 5.726562 -4.972656 5.375 -5.453125 C 5.019531 -5.941406 4.535156 -6.1875 3.921875 -6.1875 Z M 3.921875 -7.171875 C 4.921875 -7.171875 5.703125 -6.84375 6.265625 -6.1875 C 6.835938 -5.539062 7.125 -4.644531 7.125 -3.5 C 7.125 -2.351562 6.835938 -1.453125 6.265625 -0.796875 C 5.703125 -0.140625 4.921875 0.1875 3.921875 0.1875 C 2.910156 0.1875 2.117188 -0.140625 1.546875 -0.796875 C 0.984375 -1.453125 0.703125 -2.351562 0.703125 -3.5 C 0.703125 -4.644531 0.984375 -5.539062 1.546875 -6.1875 C 2.117188 -6.84375 2.910156 -7.171875 3.921875 -7.171875 Z M 3.921875 -7.171875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 4.390625 -3.515625 C 3.460938 -3.515625 2.816406 -3.40625 2.453125 -3.1875 C 2.097656 -2.976562 1.921875 -2.617188 1.921875 -2.109375 C 1.921875 -1.703125 2.050781 -1.378906 2.3125 -1.140625 C 2.582031 -0.898438 2.953125 -0.78125 3.421875 -0.78125 C 4.054688 -0.78125 4.566406 -1.003906 4.953125 -1.453125 C 5.335938 -1.910156 5.53125 -2.515625 5.53125 -3.265625 L 5.53125 -3.515625 Z M 6.671875 -4 L 6.671875 0 L 5.53125 0 L 5.53125 -1.0625 C 5.269531 -0.632812 4.941406 -0.316406 4.546875 -0.109375 C 4.160156 0.0859375 3.679688 0.1875 3.109375 0.1875 C 2.390625 0.1875 1.816406 -0.015625 1.390625 -0.421875 C 0.972656 -0.828125 0.765625 -1.363281 0.765625 -2.03125 C 0.765625 -2.820312 1.023438 -3.414062 1.546875 -3.8125 C 2.078125 -4.21875 2.867188 -4.421875 3.921875 -4.421875 L 5.53125 -4.421875 L 5.53125 -4.53125 C 5.53125 -5.0625 5.351562 -5.46875 5 -5.75 C 4.65625 -6.039062 4.171875 -6.1875 3.546875 -6.1875 C 3.140625 -6.1875 2.75 -6.140625 2.375 -6.046875 C 2 -5.953125 1.632812 -5.8125 1.28125 -5.625 L 1.28125 -6.671875 C 1.695312 -6.835938 2.101562 -6.960938 2.5 -7.046875 C 2.894531 -7.128906 3.28125 -7.171875 3.65625 -7.171875 C 4.675781 -7.171875 5.429688 -6.90625 5.921875 -6.375 C 6.421875 -5.851562 6.671875 -5.0625 6.671875 -4 Z M 6.671875 -4 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 5.8125 -5.9375 L 5.8125 -9.71875 L 6.953125 -9.71875 L 6.953125 0 L 5.8125 0 L 5.8125 -1.046875 C 5.570312 -0.628906 5.265625 -0.316406 4.890625 -0.109375 C 4.523438 0.0859375 4.082031 0.1875 3.5625 0.1875 C 2.71875 0.1875 2.03125 -0.148438 1.5 -0.828125 C 0.96875 -1.503906 0.703125 -2.394531 0.703125 -3.5 C 0.703125 -4.59375 0.96875 -5.476562 1.5 -6.15625 C 2.03125 -6.832031 2.71875 -7.171875 3.5625 -7.171875 C 4.082031 -7.171875 4.523438 -7.066406 4.890625 -6.859375 C 5.265625 -6.660156 5.570312 -6.351562 5.8125 -5.9375 Z M 1.890625 -3.5 C 1.890625 -2.644531 2.0625 -1.976562 2.40625 -1.5 C 2.757812 -1.019531 3.238281 -0.78125 3.84375 -0.78125 C 4.457031 -0.78125 4.9375 -1.019531 5.28125 -1.5 C 5.632812 -1.976562 5.8125 -2.644531 5.8125 -3.5 C 5.8125 -4.34375 5.632812 -5.003906 5.28125 -5.484375 C 4.9375 -5.960938 4.457031 -6.203125 3.84375 -6.203125 C 3.238281 -6.203125 2.757812 -5.960938 2.40625 -5.484375 C 2.0625 -5.003906 1.890625 -4.34375 1.890625 -3.5 Z M 1.890625 -3.5 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 6.65625 -5.65625 C 6.9375 -6.164062 7.273438 -6.546875 7.671875 -6.796875 C 8.078125 -7.046875 8.550781 -7.171875 9.09375 -7.171875 C 9.820312 -7.171875 10.382812 -6.914062 10.78125 -6.40625 C 11.175781 -5.894531 11.375 -5.164062 11.375 -4.21875 L 11.375 0 L 10.21875 0 L 10.21875 -4.1875 C 10.21875 -4.851562 10.097656 -5.347656 9.859375 -5.671875 C 9.628906 -6.003906 9.269531 -6.171875 8.78125 -6.171875 C 8.1875 -6.171875 7.710938 -5.972656 7.359375 -5.578125 C 7.015625 -5.179688 6.84375 -4.640625 6.84375 -3.953125 L 6.84375 0 L 5.6875 0 L 5.6875 -4.1875 C 5.6875 -4.863281 5.566406 -5.363281 5.328125 -5.6875 C 5.097656 -6.007812 4.734375 -6.171875 4.234375 -6.171875 C 3.648438 -6.171875 3.179688 -5.96875 2.828125 -5.5625 C 2.484375 -5.164062 2.3125 -4.628906 2.3125 -3.953125 L 2.3125 0 L 1.15625 0 L 1.15625 -7 L 2.3125 -7 L 2.3125 -5.90625 C 2.582031 -6.332031 2.898438 -6.648438 3.265625 -6.859375 C 3.628906 -7.066406 4.0625 -7.171875 4.5625 -7.171875 C 5.070312 -7.171875 5.503906 -7.039062 5.859375 -6.78125 C 6.222656 -6.519531 6.488281 -6.144531 6.65625 -5.65625 Z M 6.65625 -5.65625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 1.203125 -7 L 2.359375 -7 L 2.359375 0 L 1.203125 0 Z M 1.203125 -9.71875 L 2.359375 -9.71875 L 2.359375 -8.265625 L 1.203125 -8.265625 Z M 1.203125 -9.71875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 7.015625 -4.21875 L 7.015625 0 L 5.875 0 L 5.875 -4.1875 C 5.875 -4.851562 5.742188 -5.347656 5.484375 -5.671875 C 5.222656 -6.003906 4.835938 -6.171875 4.328125 -6.171875 C 3.703125 -6.171875 3.207031 -5.972656 2.84375 -5.578125 C 2.488281 -5.179688 2.3125 -4.640625 2.3125 -3.953125 L 2.3125 0 L 1.15625 0 L 1.15625 -7 L 2.3125 -7 L 2.3125 -5.90625 C 2.59375 -6.332031 2.914062 -6.648438 3.28125 -6.859375 C 3.65625 -7.066406 4.085938 -7.171875 4.578125 -7.171875 C 5.378906 -7.171875 5.984375 -6.921875 6.390625 -6.421875 C 6.804688 -5.921875 7.015625 -5.1875 7.015625 -4.21875 Z M 7.015625 -4.21875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-9">
<path style="stroke:none;" d="M 5.671875 -6.796875 L 5.671875 -5.703125 C 5.347656 -5.867188 5.007812 -5.992188 4.65625 -6.078125 C 4.300781 -6.160156 3.9375 -6.203125 3.5625 -6.203125 C 3 -6.203125 2.570312 -6.113281 2.28125 -5.9375 C 2 -5.769531 1.859375 -5.507812 1.859375 -5.15625 C 1.859375 -4.882812 1.957031 -4.671875 2.15625 -4.515625 C 2.363281 -4.367188 2.773438 -4.226562 3.390625 -4.09375 L 3.78125 -4 C 4.601562 -3.832031 5.1875 -3.585938 5.53125 -3.265625 C 5.875 -2.941406 6.046875 -2.5 6.046875 -1.9375 C 6.046875 -1.28125 5.785156 -0.757812 5.265625 -0.375 C 4.753906 0 4.050781 0.1875 3.15625 0.1875 C 2.78125 0.1875 2.390625 0.148438 1.984375 0.078125 C 1.578125 0.00390625 1.144531 -0.101562 0.6875 -0.25 L 0.6875 -1.4375 C 1.113281 -1.21875 1.53125 -1.050781 1.9375 -0.9375 C 2.351562 -0.832031 2.765625 -0.78125 3.171875 -0.78125 C 3.710938 -0.78125 4.128906 -0.875 4.421875 -1.0625 C 4.710938 -1.25 4.859375 -1.507812 4.859375 -1.84375 C 4.859375 -2.15625 4.753906 -2.394531 4.546875 -2.5625 C 4.335938 -2.726562 3.875 -2.890625 3.15625 -3.046875 L 2.765625 -3.140625 C 2.046875 -3.285156 1.53125 -3.515625 1.21875 -3.828125 C 0.90625 -4.140625 0.75 -4.566406 0.75 -5.109375 C 0.75 -5.765625 0.976562 -6.269531 1.4375 -6.625 C 1.90625 -6.988281 2.570312 -7.171875 3.4375 -7.171875 C 3.851562 -7.171875 4.25 -7.140625 4.625 -7.078125 C 5 -7.015625 5.347656 -6.921875 5.671875 -6.796875 Z M 5.671875 -6.796875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-10">
<path style="stroke:none;" d="M 2.34375 -8.984375 L 2.34375 -7 L 4.71875 -7 L 4.71875 -6.109375 L 2.34375 -6.109375 L 2.34375 -2.3125 C 2.34375 -1.738281 2.421875 -1.367188 2.578125 -1.203125 C 2.734375 -1.046875 3.050781 -0.96875 3.53125 -0.96875 L 4.71875 -0.96875 L 4.71875 0 L 3.53125 0 C 2.644531 0 2.03125 -0.164062 1.6875 -0.5 C 1.351562 -0.832031 1.1875 -1.4375 1.1875 -2.3125 L 1.1875 -6.109375 L 0.34375 -6.109375 L 0.34375 -7 L 1.1875 -7 L 1.1875 -8.984375 Z M 2.34375 -8.984375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-11">
<path style="stroke:none;" d="M 1.203125 -9.71875 L 2.359375 -9.71875 L 2.359375 0 L 1.203125 0 Z M 1.203125 -9.71875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-12">
<path style="stroke:none;" d="M 0.703125 -7 L 6.171875 -7 L 6.171875 -5.953125 L 1.84375 -0.921875 L 6.171875 -0.921875 L 6.171875 0 L 0.546875 0 L 0.546875 -1.046875 L 4.875 -6.078125 L 0.703125 -6.078125 Z M 0.703125 -7 "/>
</symbol>
<symbol overflow="visible" id="glyph0-13">
<path style="stroke:none;" d="M 5.8125 -3.578125 C 5.8125 -4.410156 5.640625 -5.054688 5.296875 -5.515625 C 4.953125 -5.972656 4.46875 -6.203125 3.84375 -6.203125 C 3.226562 -6.203125 2.75 -5.972656 2.40625 -5.515625 C 2.0625 -5.054688 1.890625 -4.410156 1.890625 -3.578125 C 1.890625 -2.753906 2.0625 -2.113281 2.40625 -1.65625 C 2.75 -1.195312 3.226562 -0.96875 3.84375 -0.96875 C 4.46875 -0.96875 4.953125 -1.195312 5.296875 -1.65625 C 5.640625 -2.113281 5.8125 -2.753906 5.8125 -3.578125 Z M 6.953125 -0.875 C 6.953125 0.320312 6.6875 1.207031 6.15625 1.78125 C 5.632812 2.363281 4.828125 2.65625 3.734375 2.65625 C 3.328125 2.65625 2.945312 2.625 2.59375 2.5625 C 2.238281 2.507812 1.890625 2.421875 1.546875 2.296875 L 1.546875 1.171875 C 1.890625 1.359375 2.222656 1.492188 2.546875 1.578125 C 2.878906 1.671875 3.21875 1.71875 3.5625 1.71875 C 4.3125 1.71875 4.875 1.519531 5.25 1.125 C 5.625 0.726562 5.8125 0.132812 5.8125 -0.65625 L 5.8125 -1.234375 C 5.570312 -0.816406 5.265625 -0.503906 4.890625 -0.296875 C 4.523438 -0.0976562 4.082031 0 3.5625 0 C 2.707031 0 2.015625 -0.328125 1.484375 -0.984375 C 0.960938 -1.640625 0.703125 -2.503906 0.703125 -3.578125 C 0.703125 -4.660156 0.960938 -5.53125 1.484375 -6.1875 C 2.015625 -6.84375 2.707031 -7.171875 3.5625 -7.171875 C 4.082031 -7.171875 4.523438 -7.066406 4.890625 -6.859375 C 5.265625 -6.648438 5.570312 -6.34375 5.8125 -5.9375 L 5.8125 -7 L 6.953125 -7 Z M 6.953125 -0.875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-14">
<path style="stroke:none;" d="M 7.1875 -3.78125 L 7.1875 -3.21875 L 1.90625 -3.21875 C 1.957031 -2.425781 2.195312 -1.820312 2.625 -1.40625 C 3.050781 -1 3.644531 -0.796875 4.40625 -0.796875 C 4.84375 -0.796875 5.269531 -0.847656 5.6875 -0.953125 C 6.101562 -1.066406 6.515625 -1.226562 6.921875 -1.4375 L 6.921875 -0.359375 C 6.515625 -0.179688 6.09375 -0.046875 5.65625 0.046875 C 5.21875 0.140625 4.78125 0.1875 4.34375 0.1875 C 3.21875 0.1875 2.328125 -0.132812 1.671875 -0.78125 C 1.023438 -1.4375 0.703125 -2.320312 0.703125 -3.4375 C 0.703125 -4.582031 1.007812 -5.488281 1.625 -6.15625 C 2.25 -6.832031 3.085938 -7.171875 4.140625 -7.171875 C 5.078125 -7.171875 5.816406 -6.863281 6.359375 -6.25 C 6.910156 -5.644531 7.1875 -4.820312 7.1875 -3.78125 Z M 6.046875 -4.125 C 6.035156 -4.75 5.859375 -5.25 5.515625 -5.625 C 5.171875 -6 4.71875 -6.1875 4.15625 -6.1875 C 3.507812 -6.1875 2.992188 -6.003906 2.609375 -5.640625 C 2.222656 -5.285156 2 -4.78125 1.9375 -4.125 Z M 6.046875 -4.125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-15">
<path style="stroke:none;" d="M 6.25 -6.734375 L 6.25 -5.65625 C 5.914062 -5.832031 5.585938 -5.960938 5.265625 -6.046875 C 4.941406 -6.140625 4.613281 -6.1875 4.28125 -6.1875 C 3.53125 -6.1875 2.945312 -5.953125 2.53125 -5.484375 C 2.125 -5.015625 1.921875 -4.351562 1.921875 -3.5 C 1.921875 -2.644531 2.125 -1.976562 2.53125 -1.5 C 2.945312 -1.03125 3.53125 -0.796875 4.28125 -0.796875 C 4.613281 -0.796875 4.941406 -0.835938 5.265625 -0.921875 C 5.585938 -1.015625 5.914062 -1.148438 6.25 -1.328125 L 6.25 -0.265625 C 5.925781 -0.117188 5.59375 -0.0078125 5.25 0.0625 C 4.90625 0.144531 4.539062 0.1875 4.15625 0.1875 C 3.09375 0.1875 2.25 -0.144531 1.625 -0.8125 C 1.007812 -1.476562 0.703125 -2.375 0.703125 -3.5 C 0.703125 -4.632812 1.015625 -5.53125 1.640625 -6.1875 C 2.273438 -6.84375 3.132812 -7.171875 4.21875 -7.171875 C 4.570312 -7.171875 4.914062 -7.132812 5.25 -7.0625 C 5.59375 -6.988281 5.925781 -6.878906 6.25 -6.734375 Z M 6.25 -6.734375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-16">
<path style="stroke:none;" d="M 2.3125 -1.046875 L 2.3125 2.65625 L 1.15625 2.65625 L 1.15625 -7 L 2.3125 -7 L 2.3125 -5.9375 C 2.5625 -6.351562 2.867188 -6.660156 3.234375 -6.859375 C 3.597656 -7.066406 4.039062 -7.171875 4.5625 -7.171875 C 5.40625 -7.171875 6.09375 -6.832031 6.625 -6.15625 C 7.15625 -5.476562 7.421875 -4.59375 7.421875 -3.5 C 7.421875 -2.394531 7.15625 -1.503906 6.625 -0.828125 C 6.09375 -0.148438 5.40625 0.1875 4.5625 0.1875 C 4.039062 0.1875 3.597656 0.0859375 3.234375 -0.109375 C 2.867188 -0.316406 2.5625 -0.628906 2.3125 -1.046875 Z M 6.234375 -3.5 C 6.234375 -4.34375 6.054688 -5.003906 5.703125 -5.484375 C 5.359375 -5.960938 4.882812 -6.203125 4.28125 -6.203125 C 3.664062 -6.203125 3.179688 -5.960938 2.828125 -5.484375 C 2.484375 -5.003906 2.3125 -4.34375 2.3125 -3.5 C 2.3125 -2.644531 2.484375 -1.976562 2.828125 -1.5 C 3.179688 -1.019531 3.664062 -0.78125 4.28125 -0.78125 C 4.882812 -0.78125 5.359375 -1.019531 5.703125 -1.5 C 6.054688 -1.976562 6.234375 -2.644531 6.234375 -3.5 Z M 6.234375 -3.5 "/>
</symbol>
<symbol overflow="visible" id="glyph0-17">
<path style="stroke:none;" d="M 1.375 -1.59375 L 2.6875 -1.59375 L 2.6875 0 L 1.375 0 Z M 1.375 -1.59375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-18">
<path style="stroke:none;" d="M 7.015625 -7 L 4.5 -3.59375 L 7.15625 0 L 5.796875 0 L 3.765625 -2.75 L 1.71875 0 L 0.375 0 L 3.09375 -3.65625 L 0.59375 -7 L 1.953125 -7 L 3.8125 -4.5 L 5.671875 -7 Z M 7.015625 -7 "/>
</symbol>
<symbol overflow="visible" id="glyph0-19">
<path style="stroke:none;" d="M 4.75 -9.71875 L 4.75 -8.765625 L 3.65625 -8.765625 C 3.238281 -8.765625 2.945312 -8.679688 2.78125 -8.515625 C 2.625 -8.347656 2.546875 -8.046875 2.546875 -7.609375 L 2.546875 -7 L 4.4375 -7 L 4.4375 -6.109375 L 2.546875 -6.109375 L 2.546875 0 L 1.390625 0 L 1.390625 -6.109375 L 0.296875 -6.109375 L 0.296875 -7 L 1.390625 -7 L 1.390625 -7.484375 C 1.390625 -8.265625 1.570312 -8.832031 1.9375 -9.1875 C 2.300781 -9.539062 2.875 -9.71875 3.65625 -9.71875 Z M 4.75 -9.71875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-20">
<path style="stroke:none;" d="M 2.515625 -8.296875 L 2.515625 -1.03125 L 4.046875 -1.03125 C 5.328125 -1.03125 6.265625 -1.320312 6.859375 -1.90625 C 7.460938 -2.488281 7.765625 -3.410156 7.765625 -4.671875 C 7.765625 -5.921875 7.460938 -6.835938 6.859375 -7.421875 C 6.265625 -8.003906 5.328125 -8.296875 4.046875 -8.296875 Z M 1.25 -9.328125 L 3.84375 -9.328125 C 5.65625 -9.328125 6.984375 -8.953125 7.828125 -8.203125 C 8.671875 -7.453125 9.09375 -6.273438 9.09375 -4.671875 C 9.09375 -3.066406 8.664062 -1.882812 7.8125 -1.125 C 6.96875 -0.375 5.644531 0 3.84375 0 L 1.25 0 Z M 1.25 -9.328125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-21">
<path style="stroke:none;" d="M 5.265625 -5.921875 C 5.128906 -5.992188 4.984375 -6.046875 4.828125 -6.078125 C 4.679688 -6.117188 4.519531 -6.140625 4.34375 -6.140625 C 3.6875 -6.140625 3.179688 -5.925781 2.828125 -5.5 C 2.484375 -5.082031 2.3125 -4.476562 2.3125 -3.6875 L 2.3125 0 L 1.15625 0 L 1.15625 -7 L 2.3125 -7 L 2.3125 -5.90625 C 2.5625 -6.332031 2.878906 -6.648438 3.265625 -6.859375 C 3.648438 -7.066406 4.117188 -7.171875 4.671875 -7.171875 C 4.753906 -7.171875 4.84375 -7.164062 4.9375 -7.15625 C 5.03125 -7.144531 5.132812 -7.128906 5.25 -7.109375 Z M 5.265625 -5.921875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-22">
<path style="stroke:none;" d="M 1.09375 -2.765625 L 1.09375 -7 L 2.234375 -7 L 2.234375 -2.8125 C 2.234375 -2.144531 2.363281 -1.644531 2.625 -1.3125 C 2.882812 -0.976562 3.269531 -0.8125 3.78125 -0.8125 C 4.40625 -0.8125 4.894531 -1.007812 5.25 -1.40625 C 5.613281 -1.800781 5.796875 -2.34375 5.796875 -3.03125 L 5.796875 -7 L 6.953125 -7 L 6.953125 0 L 5.796875 0 L 5.796875 -1.078125 C 5.515625 -0.648438 5.191406 -0.332031 4.828125 -0.125 C 4.460938 0.0820312 4.035156 0.1875 3.546875 0.1875 C 2.742188 0.1875 2.132812 -0.0625 1.71875 -0.5625 C 1.300781 -1.0625 1.09375 -1.796875 1.09375 -2.765625 Z M 1.09375 -2.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-23">
<path style="stroke:none;" d="M 1.25 -9.328125 L 7.15625 -9.328125 L 7.15625 -8.265625 L 2.515625 -8.265625 L 2.515625 -5.5 L 6.953125 -5.5 L 6.953125 -4.4375 L 2.515625 -4.4375 L 2.515625 -1.0625 L 7.265625 -1.0625 L 7.265625 0 L 1.25 0 Z M 1.25 -9.328125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-24">
<path style="stroke:none;" d="M 6.84375 -9.015625 L 6.84375 -7.796875 C 6.363281 -8.023438 5.910156 -8.191406 5.484375 -8.296875 C 5.066406 -8.410156 4.660156 -8.46875 4.265625 -8.46875 C 3.578125 -8.46875 3.046875 -8.332031 2.671875 -8.0625 C 2.296875 -7.800781 2.109375 -7.425781 2.109375 -6.9375 C 2.109375 -6.519531 2.234375 -6.207031 2.484375 -6 C 2.734375 -5.789062 3.203125 -5.625 3.890625 -5.5 L 4.65625 -5.34375 C 5.59375 -5.15625 6.285156 -4.835938 6.734375 -4.390625 C 7.179688 -3.941406 7.40625 -3.335938 7.40625 -2.578125 C 7.40625 -1.671875 7.101562 -0.984375 6.5 -0.515625 C 5.894531 -0.046875 5.007812 0.1875 3.84375 0.1875 C 3.394531 0.1875 2.921875 0.132812 2.421875 0.03125 C 1.929688 -0.0703125 1.414062 -0.21875 0.875 -0.40625 L 0.875 -1.71875 C 1.394531 -1.425781 1.898438 -1.207031 2.390625 -1.0625 C 2.878906 -0.914062 3.363281 -0.84375 3.84375 -0.84375 C 4.5625 -0.84375 5.113281 -0.984375 5.5 -1.265625 C 5.894531 -1.546875 6.09375 -1.953125 6.09375 -2.484375 C 6.09375 -2.941406 5.953125 -3.296875 5.671875 -3.546875 C 5.390625 -3.804688 4.925781 -4.003906 4.28125 -4.140625 L 3.515625 -4.28125 C 2.578125 -4.46875 1.894531 -4.757812 1.46875 -5.15625 C 1.050781 -5.5625 0.84375 -6.117188 0.84375 -6.828125 C 0.84375 -7.660156 1.132812 -8.3125 1.71875 -8.78125 C 2.300781 -9.257812 3.101562 -9.5 4.125 -9.5 C 4.5625 -9.5 5.003906 -9.457031 5.453125 -9.375 C 5.910156 -9.300781 6.375 -9.179688 6.84375 -9.015625 Z M 6.84375 -9.015625 "/>
</symbol>
</g>
</defs>
<g id="surface2229">
<rect x="0" y="0" width="863" height="411" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/>
<path style="fill:none;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 5.118086 6.441094 L 9.277656 6.466289 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 9.276094 6.716289 L 9.777656 6.469219 L 9.279023 6.216289 Z M 9.276094 6.716289 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 15.924336 6.487969 C 15.924336 7.765703 14.559492 8.801445 12.876094 8.801445 C 11.1925 8.801445 9.827656 7.765703 9.827656 6.487969 C 9.827656 5.210234 11.1925 4.174492 12.876094 4.174492 C 14.559492 4.174492 15.924336 5.210234 15.924336 6.487969 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="176.851562" y="68.529405"/>
<use xlink:href="#glyph0-2" x="183.796007" y="68.529405"/>
<use xlink:href="#glyph0-3" x="191.573785" y="68.529405"/>
<use xlink:href="#glyph0-4" x="199.351562" y="68.529405"/>
<use xlink:href="#glyph0-5" x="207.407118" y="68.529405"/>
<use xlink:href="#glyph0-4" x="211.573785" y="68.529405"/>
<use xlink:href="#glyph0-2" x="219.62934" y="68.529405"/>
<use xlink:href="#glyph0-6" x="227.407118" y="68.529405"/>
<use xlink:href="#glyph0-3" x="239.907118" y="68.529405"/>
<use xlink:href="#glyph0-7" x="247.684896" y="68.529405"/>
<use xlink:href="#glyph0-8" x="251.296007" y="68.529405"/>
<use xlink:href="#glyph0-9" x="259.351562" y="68.529405"/>
</g>
<path style="fill:none;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 15.949141 6.487969 L 17.296992 6.487969 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 17.296992 6.737969 L 17.796992 6.487969 L 17.296992 6.237969 Z M 17.296992 6.737969 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(0%,100%,0%);fill-opacity:1;" d="M 69.898438 0 L 147.648438 0 L 147.648438 14.898438 L 69.898438 14.898438 Z M 69.898438 0 "/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="69.898438" y="11.88878"/>
<use xlink:href="#glyph0-8" x="73.509549" y="11.88878"/>
<use xlink:href="#glyph0-7" x="81.565104" y="11.88878"/>
<use xlink:href="#glyph0-10" x="85.176215" y="11.88878"/>
<use xlink:href="#glyph0-7" x="90.176215" y="11.88878"/>
<use xlink:href="#glyph0-3" x="93.787326" y="11.88878"/>
<use xlink:href="#glyph0-11" x="101.565104" y="11.88878"/>
<use xlink:href="#glyph0-7" x="105.176215" y="11.88878"/>
<use xlink:href="#glyph0-12" x="108.787326" y="11.88878"/>
<use xlink:href="#glyph0-3" x="115.453993" y="11.88878"/>
<use xlink:href="#glyph0-10" x="123.231771" y="11.88878"/>
<use xlink:href="#glyph0-7" x="128.231771" y="11.88878"/>
<use xlink:href="#glyph0-2" x="131.842882" y="11.88878"/>
<use xlink:href="#glyph0-8" x="139.62066" y="11.88878"/>
</g>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(0%,100%,0%);fill-opacity:1;" d="M 324.351562 0 L 439.453125 0 L 439.453125 14.898438 L 324.351562 14.898438 Z M 324.351562 0 "/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-13" x="324.691406" y="11.88878"/>
<use xlink:href="#glyph0-14" x="332.746962" y="11.88878"/>
<use xlink:href="#glyph0-2" x="340.52474" y="11.88878"/>
<use xlink:href="#glyph0-11" x="348.302517" y="11.88878"/>
<use xlink:href="#glyph0-2" x="351.913628" y="11.88878"/>
<use xlink:href="#glyph0-15" x="359.691406" y="11.88878"/>
<use xlink:href="#glyph0-3" x="366.635851" y="11.88878"/>
<use xlink:href="#glyph0-10" x="374.413628" y="11.88878"/>
<use xlink:href="#glyph0-7" x="379.413628" y="11.88878"/>
<use xlink:href="#glyph0-2" x="383.02474" y="11.88878"/>
<use xlink:href="#glyph0-8" x="390.802517" y="11.88878"/>
<use xlink:href="#glyph0-5" x="398.858073" y="11.88878"/>
<use xlink:href="#glyph0-6" x="403.02474" y="11.88878"/>
<use xlink:href="#glyph0-2" x="415.52474" y="11.88878"/>
<use xlink:href="#glyph0-4" x="423.302517" y="11.88878"/>
<use xlink:href="#glyph0-14" x="431.358073" y="11.88878"/>
</g>
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 24.205195 6.487969 C 24.205195 7.495391 22.781758 8.311992 21.026094 8.311992 C 19.270234 8.311992 17.846992 7.495391 17.846992 6.487969 C 17.846992 5.480742 19.270234 4.664141 21.026094 4.664141 C 22.781758 4.664141 24.205195 5.480742 24.205195 6.487969 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-13" x="339.851562" y="68.529405"/>
<use xlink:href="#glyph0-14" x="347.907118" y="68.529405"/>
<use xlink:href="#glyph0-2" x="355.684896" y="68.529405"/>
<use xlink:href="#glyph0-5" x="363.462674" y="68.529405"/>
<use xlink:href="#glyph0-16" x="367.62934" y="68.529405"/>
<use xlink:href="#glyph0-2" x="375.684896" y="68.529405"/>
<use xlink:href="#glyph0-9" x="383.462674" y="68.529405"/>
<use xlink:href="#glyph0-17" x="390.12934" y="68.529405"/>
<use xlink:href="#glyph0-5" x="394.296007" y="68.529405"/>
<use xlink:href="#glyph0-14" x="398.462674" y="68.529405"/>
<use xlink:href="#glyph0-18" x="406.240451" y="68.529405"/>
<use xlink:href="#glyph0-7" x="413.740451" y="68.529405"/>
<use xlink:href="#glyph0-9" x="417.351562" y="68.529405"/>
<use xlink:href="#glyph0-10" x="424.018229" y="68.529405"/>
</g>
<path style="fill:none;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 24.204609 6.467266 L 29.831758 6.430352 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 29.83332 6.680352 L 30.331758 6.427031 L 29.830195 6.180352 Z M 29.83332 6.680352 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-19" x="484.898438" y="56.88878"/>
<use xlink:href="#glyph0-3" x="489.342882" y="56.88878"/>
<use xlink:href="#glyph0-11" x="497.12066" y="56.88878"/>
<use xlink:href="#glyph0-9" x="500.731771" y="56.88878"/>
<use xlink:href="#glyph0-14" x="507.398438" y="56.88878"/>
</g>
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 24.225312 13.150078 C 24.225312 14.040703 22.781172 14.762773 20.999922 14.762773 C 19.218672 14.762773 17.774531 14.040703 17.774531 13.150078 C 17.774531 12.259453 19.218672 11.537383 20.999922 11.537383 C 22.781172 11.537383 24.225312 12.259453 24.225312 13.150078 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-13" x="334.875" y="201.771593"/>
<use xlink:href="#glyph0-14" x="342.930556" y="201.771593"/>
<use xlink:href="#glyph0-10" x="350.708333" y="201.771593"/>
<use xlink:href="#glyph0-5" x="355.708333" y="201.771593"/>
<use xlink:href="#glyph0-13" x="359.875" y="201.771593"/>
<use xlink:href="#glyph0-14" x="367.930556" y="201.771593"/>
<use xlink:href="#glyph0-2" x="375.708333" y="201.771593"/>
<use xlink:href="#glyph0-20" x="383.486111" y="201.771593"/>
<use xlink:href="#glyph0-2" x="393.208333" y="201.771593"/>
<use xlink:href="#glyph0-6" x="400.986111" y="201.771593"/>
<use xlink:href="#glyph0-3" x="413.486111" y="201.771593"/>
<use xlink:href="#glyph0-7" x="421.263889" y="201.771593"/>
<use xlink:href="#glyph0-8" x="424.875" y="201.771593"/>
</g>
<path style="fill:none;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 21.018867 8.336602 L 21.00832 10.987969 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 20.75832 10.986992 L 21.006367 11.487969 L 21.25832 10.988945 Z M 20.75832 10.986992 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-10" x="391.898438" y="129.88878"/>
<use xlink:href="#glyph0-21" x="396.898438" y="129.88878"/>
<use xlink:href="#glyph0-22" x="402.176215" y="129.88878"/>
<use xlink:href="#glyph0-14" x="410.231771" y="129.88878"/>
</g>
<path style="fill:none;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 20.999922 14.786797 L 20.999922 16.078789 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 20.749922 16.078789 L 20.999922 16.578789 L 21.249922 16.078789 Z M 20.749922 16.078789 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style="fill:none;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 23.262812 11.97957 L 31.010469 7.972539 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.125312 8.194609 L 31.454609 7.742852 L 30.895625 7.750469 Z M 31.125312 8.194609 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 24.1925 18.224883 C 24.1925 19.106523 22.763203 19.821172 21.000117 19.821172 C 19.237031 19.821172 17.807734 19.106523 17.807734 18.224883 C 17.807734 17.343438 19.237031 16.628789 21.000117 16.628789 C 22.763203 16.628789 24.1925 17.343438 24.1925 18.224883 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-9" x="335.582031" y="303.267687"/>
<use xlink:href="#glyph0-14" x="342.248698" y="303.267687"/>
<use xlink:href="#glyph0-10" x="350.026476" y="303.267687"/>
<use xlink:href="#glyph0-5" x="355.026476" y="303.267687"/>
<use xlink:href="#glyph0-13" x="359.193142" y="303.267687"/>
<use xlink:href="#glyph0-14" x="367.248698" y="303.267687"/>
<use xlink:href="#glyph0-2" x="375.026476" y="303.267687"/>
<use xlink:href="#glyph0-20" x="382.804253" y="303.267687"/>
<use xlink:href="#glyph0-2" x="392.526476" y="303.267687"/>
<use xlink:href="#glyph0-6" x="400.304253" y="303.267687"/>
<use xlink:href="#glyph0-3" x="412.804253" y="303.267687"/>
<use xlink:href="#glyph0-7" x="420.582031" y="303.267687"/>
<use xlink:href="#glyph0-8" x="424.193142" y="303.267687"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-19" x="479.898438" y="130.13878"/>
<use xlink:href="#glyph0-3" x="484.342882" y="130.13878"/>
<use xlink:href="#glyph0-11" x="492.12066" y="130.13878"/>
<use xlink:href="#glyph0-9" x="495.731771" y="130.13878"/>
<use xlink:href="#glyph0-14" x="502.398438" y="130.13878"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-10" x="393.898438" y="248.13878"/>
<use xlink:href="#glyph0-21" x="398.898438" y="248.13878"/>
<use xlink:href="#glyph0-22" x="404.176215" y="248.13878"/>
<use xlink:href="#glyph0-14" x="412.231771" y="248.13878"/>
</g>
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 23.212227 22.674883 C 23.212227 23.28582 22.221797 23.780938 21.000117 23.780938 C 19.778242 23.780938 18.787812 23.28582 18.787812 22.674883 C 18.787812 22.064141 19.778242 21.568828 21.000117 21.568828 C 22.221797 21.568828 23.212227 22.064141 23.212227 22.674883 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-23" x="371.832031" y="392.267687"/>
<use xlink:href="#glyph0-18" x="379.887587" y="392.267687"/>
<use xlink:href="#glyph0-7" x="387.387587" y="392.267687"/>
<use xlink:href="#glyph0-10" x="390.998698" y="392.267687"/>
</g>
<path style="fill:none;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 21.000117 19.846367 L 21.000117 21.019023 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 20.750117 21.019023 L 21.000117 21.519023 L 21.250117 21.019023 Z M 20.750117 21.019023 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 5.094062 6.431133 C 5.094062 7.086211 4.363398 7.617266 3.462031 7.617266 C 2.560664 7.617266 1.83 7.086211 1.83 6.431133 C 1.83 5.776055 2.560664 5.245 3.462031 5.245 C 4.363398 5.245 5.094062 5.776055 5.094062 6.431133 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-24" x="17.59375" y="67.392687"/>
<use xlink:href="#glyph0-10" x="25.649306" y="67.392687"/>
<use xlink:href="#glyph0-3" x="30.649306" y="67.392687"/>
<use xlink:href="#glyph0-21" x="38.427083" y="67.392687"/>
<use xlink:href="#glyph0-10" x="43.704861" y="67.392687"/>
</g>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(0%,100%,0%);fill-opacity:1;" d="M 574.574219 0.300781 L 712.023438 0.300781 L 712.023438 15.199219 L 574.574219 15.199219 Z M 574.574219 0.300781 "/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="574.84375" y="12.185655"/>
<use xlink:href="#glyph0-14" x="582.899306" y="12.185655"/>
<use xlink:href="#glyph0-19" x="590.677083" y="12.185655"/>
<use xlink:href="#glyph0-3" x="595.121528" y="12.185655"/>
<use xlink:href="#glyph0-22" x="602.899306" y="12.185655"/>
<use xlink:href="#glyph0-11" x="610.954861" y="12.185655"/>
<use xlink:href="#glyph0-10" x="614.565972" y="12.185655"/>
<use xlink:href="#glyph0-5" x="619.565972" y="12.185655"/>
<use xlink:href="#glyph0-4" x="623.732639" y="12.185655"/>
<use xlink:href="#glyph0-2" x="631.788194" y="12.185655"/>
<use xlink:href="#glyph0-6" x="639.565972" y="12.185655"/>
<use xlink:href="#glyph0-3" x="652.065972" y="12.185655"/>
<use xlink:href="#glyph0-7" x="659.84375" y="12.185655"/>
<use xlink:href="#glyph0-8" x="663.454861" y="12.185655"/>
<use xlink:href="#glyph0-5" x="671.510417" y="12.185655"/>
<use xlink:href="#glyph0-6" x="675.677083" y="12.185655"/>
<use xlink:href="#glyph0-2" x="688.177083" y="12.185655"/>
<use xlink:href="#glyph0-4" x="695.954861" y="12.185655"/>
<use xlink:href="#glyph0-14" x="704.010417" y="12.185655"/>
</g>
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 37.710859 6.402812 C 37.710859 7.414922 36.069844 8.23543 34.04543 8.23543 C 32.021016 8.23543 30.38 7.414922 30.38 6.402812 C 30.38 5.390508 32.021016 4.57 34.04543 4.57 C 36.069844 4.57 37.710859 5.390508 37.710859 6.402812 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-9" x="585.921875" y="66.822374"/>
<use xlink:href="#glyph0-14" x="592.588542" y="66.822374"/>
<use xlink:href="#glyph0-10" x="600.366319" y="66.822374"/>
<use xlink:href="#glyph0-5" x="605.366319" y="66.822374"/>
<use xlink:href="#glyph0-4" x="609.532986" y="66.822374"/>
<use xlink:href="#glyph0-14" x="617.588542" y="66.822374"/>
<use xlink:href="#glyph0-19" x="625.366319" y="66.822374"/>
<use xlink:href="#glyph0-3" x="629.810764" y="66.822374"/>
<use xlink:href="#glyph0-22" x="637.588542" y="66.822374"/>
<use xlink:href="#glyph0-11" x="645.644097" y="66.822374"/>
<use xlink:href="#glyph0-10" x="649.255208" y="66.822374"/>
<use xlink:href="#glyph0-20" x="654.255208" y="66.822374"/>
<use xlink:href="#glyph0-2" x="663.977431" y="66.822374"/>
<use xlink:href="#glyph0-6" x="671.755208" y="66.822374"/>
<use xlink:href="#glyph0-3" x="684.255208" y="66.822374"/>
<use xlink:href="#glyph0-7" x="692.032986" y="66.822374"/>
<use xlink:href="#glyph0-8" x="695.644097" y="66.822374"/>
</g>
<path style="fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 44.962227 6.300078 C 44.962227 6.91082 43.971797 7.406133 42.750117 7.406133 C 41.528242 7.406133 40.537812 6.91082 40.537812 6.300078 C 40.537812 5.689141 41.528242 5.194023 42.750117 5.194023 C 43.971797 5.194023 44.962227 5.689141 44.962227 6.300078 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-23" x="806.832031" y="64.767687"/>
<use xlink:href="#glyph0-18" x="814.887587" y="64.767687"/>
<use xlink:href="#glyph0-7" x="822.387587" y="64.767687"/>
<use xlink:href="#glyph0-10" x="825.998698" y="64.767687"/>
</g>
<path style="fill:none;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 37.735273 6.359258 L 39.988984 6.3325 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 39.991914 6.5825 L 40.488789 6.326641 L 39.985859 6.082695 Z M 39.991914 6.5825 " transform="matrix(20,0,0,20,-36.1,-65.11875)"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@ -1,37 +0,0 @@
gluon-logging
=============
The *gluon-logging* package allows to configure a remote syslog server that
will receive the systems log output that is also visible when calling ``logread``
from a terminal.
It supports both IPv4 and IPv6 endpoints over UDP and TCP.
Note: The syslog mechanism is incapable of providing a complete log as network
access is required to send out log messages and ``logd`` does not buffer and resend
older log messages even though they might be available in ``logread``.
This package conflicts with ``gluon-web-logging`` as it will overwrite the
user-given syslog server on every upgrade.
site.conf
---------
syslog.ip : required
- Destination address of the remote syslog server
syslog.port : optional
- Destination port of the remote syslog server
- Defaults to 514
syslog.proto : optional
- Protocol to transport syslog frames in, can be either ``tcp`` or ``udp``
- Defaults to UDP
Example::
syslog = {
ip = "2001:db8::1",
port = 514,
proto = "udp",
},

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="931.48547" height="370.93994" id="svg4059" inkscape:version="0.48.1 r9760" sodipodi:docname="bat_v2_black.svg" inkscape:export-filename="/mnt/pandem0nium/pub/incoming/bat_logo_v2/bat_v2_black.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" style="display:inline">
<sodipodi:namedview pagecolor="#000000" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="956" inkscape:window-height="1173" id="namedview9" showgrid="false" inkscape:zoom="0.88204281" inkscape:cx="466.24453" inkscape:cy="37.028713" inkscape:window-x="1920" inkscape:window-y="0" inkscape:window-maximized="0" inkscape:current-layer="layer2" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:snap-nodes="true"/>
<defs id="defs4061"/>
<metadata id="metadata4064">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:groupmode="layer" id="layer3" inkscape:label="outline" style="display:none" transform="translate(6.26672, 5.9375)">
<path style="color:#000000;fill:#ffffff;stroke:none;stroke-width:4.27199984;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" d="m 483.25,-3.21875 c -6.08901,48.631979 -35.33662,91.011416 -69.21578,124.91707 -21.83485,21.38244 -47.03966,39.44335 -75.34672,51.17668 5.57969,-19.28428 1.04687,-40.97874 -11.5,-56.59375 2.45626,-29.914047 0.68927,-59.992978 -2.5,-89.78125 -15.98198,19.265018 -27.7684,41.544355 -37.5,64.5 -12.24825,-3.17862 -25.72651,-2.402049 -37.71875,0.46875 C 239.88593,74.102096 226.47693,59.077996 210.625,47.0625 c -3.34092,23.469062 -2.56561,47.559048 0.25,70.875 -6.69043,8.82966 -11.26059,19.42531 -12.0625,30.53125 -1.92921,1.3424 -3.05608,3.45019 -4.6875,0.40625 -20.84238,-21.1131 -32.59851,-48.84198 -44.9375,-75.34375 -14.85679,72.96988 -54.000466,137.54014 -93.508574,199.57505 -20.539303,31.20908 -42.388201,61.40672 -64.085176,91.86245 8.08014534,2.26279 14.376322,-5.17296 21.382238,-7.84546 48.067949,-26.0431 95.020242,-57.97999 149.805262,-67.65454 7.73822,-1.18656 15.65228,-1.74501 23.53125,-1.625 -0.16141,-13.91977 12.35539,-25.87856 26.40625,-24.625 13.02151,-0.10475 25.24921,5.06339 36.71875,10.84375 3.0761,-8.90096 9.56834,-15.98034 17.8125,-20.25 15.98458,27.53202 46.28592,42.98776 75.65932,52.75163 10.28498,3.53684 21.92146,5.33208 32.02818,7.49837 -0.72852,8.29742 2.55832,18.64745 11.71875,20.5625 7.84288,-6.18411 13.7902,-15.27395 22.59202,-19.68372 10.89918,-0.79379 21.80373,-2.64611 32.18923,-5.97253 8.1863,6.12253 18.23881,13.28825 29.03125,9.78125 0.2397,-7.80979 -2.17974,-15.60208 -1.25,-23.34375 14.60652,-14.33722 28.49903,-29.6116 39.75,-46.65625 -31.89112,0.19103 -65.39001,-1.50716 -93.6875,-17.375 12.63668,-0.24322 25.04624,3.36048 36.09375,9.40625 26.41279,-12.24594 57.54458,-3.79641 80.97725,11.3725 5.86994,3.60205 11.37305,7.64719 16.46025,12.19 36.58823,-16.89113 78.56629,-15.82385 118.11934,-12.20623 88.66214,9.36494 173.26796,44.12384 247.50566,92.70623 3.41963,1.85442 7.16209,2.95892 10.78125,4.40625 -11.75164,-20.6658 -29.05422,-37.32743 -43.5,-56.125 C 818.67884,217.58496 746.42668,149.41496 664.49937,94.602513 607.29452,55.830775 546.38636,22.78003 483.5625,-5.9375 c -0.10417,0.90625 -0.20833,1.8125 -0.3125,2.71875 z" id="path3993-5" inkscape:connector-curvature="0"/>
</g>
<g inkscape:groupmode="layer" id="layer2" inkscape:label="batman-adv" style="display:inline" transform="translate(6.26672, 5.9375)">
<g style="display:inline" transform="translate(-51.5312, -495.768)" id="layer1">
<path d="m 538.40625,495.76769 c -8.05674,66.9338 -77.31603,151.94452 -154.9375,179.84375 3.27747,-7.40037 5.09375,-15.49392 5.09375,-24 0,-14.42887 -5.21809,-27.70021 -13.96875,-38.3125 1.97025,-21.96404 1.77421,-48.67721 -1.375,-80.59375 -13.0022,16.9579 -23.30307,37.7663 -32.15625,58.78125 -6.27289,-1.8029 -12.93745,-2.78125 -19.84375,-2.78125 -7.73405,0 -15.17627,1.22854 -22.09375,3.46875 -7.42014,-13.90647 -17.47037,-28.11748 -33.78125,-41.59375 -2.4998,23.48832 -1.59267,44.90394 1.6875,63.65625 -8.2866,10.45096 -13.63544,23.35979 -12.0986,32.68414 -4.42484,0.36051 -5.23536,4.01016 -5.31948,6.88419 -19.28312,-16.49687 -32.60091,-39.15698 -47.58192,-72.16208 -13.26705,58.98947 -53.37139,142.16702 -150.5,273.75 61.55905,-33.2251 123.79671,-75.61843 182.8125,-75.78125 4.05468,-25.33145 30.1327,-32.48291 64.65625,-15.15625 4.05331,-9.20658 11.84907,-15.85762 21.59375,-20.21875 12.89223,29.16757 60.06405,56.23506 110.53125,61.78125 -2.71475,10.31567 2.48339,19.28096 6.03125,19.90625 L 457.25,806.89269 c 12.40469,-0.59384 24.70147,-2.7024 36.40625,-6.5625 8.39362,6.41285 17.71829,12.37841 24.1875,10.96875 l -1.71875,-21.125 c 13.74684,-14.03964 23.51218,-23.14064 36.6879,-41.69749 -37.60849,-0.0334 -70.29254,-4.68998 -97.84415,-24.05251 14.31376,-2.87534 30.90137,-1.2243 48.09375,7.71875 48.64496,-20.64584 97.96875,23.25 97.96875,23.25 59.36547,-28.55091 217.47867,-17.57755 366.6875,81.8125 -81.50891,-100.35408 -186.3503,-229.51108 -429.3125,-341.4375 z" id="path3993" style="color:#000000;fill:#000000;stroke:none;stroke-width:4.27199984;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" inkscape:export-filename="/home/sven/dokumente/bat_logo_v2.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" inkscape:connector-curvature="0" sodipodi:nodetypes="ccscccscccccccccccccccccccccc"/>
<path d="m 287.37698,691.21665 6.32487,6.0769 42.42641,-3.28299 4.04061,-10.85914 -6.08375,5.31015 -38.85662,6.0495 z" id="path4001" style="color:#000000;fill:#ffffff;stroke:none;stroke-width:1.77165353;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccc"/>
<path d="m 304.03798,658.90775 c 3.73562,-7.35256 3.37257,-7.75354 27.47128,-14.84657 15.15993,-4.46206 30.11288,-9.25782 32.38025,-2.07348 l 18.53034,-4.86774 0.54842,3.1737 -18.32114,6.49226 c -3.7905,21.99567 -3.66551,19.92566 -20.7106,21.97074 -27.63928,3.31618 -30.32837,6.17704 -39.39348,-6.06083 l -7.32361,1.01015 c -3.77481,8.34177 -0.87651,8.42602 -25.47706,7.6321 -16.18663,-0.52238 -14.20261,-0.23719 -17.22819,-15.14996 -1.35304,-6.66902 -0.33802,-7.91117 21.30347,-5.15085 17.50983,2.23334 17.19396,1.76122 21.20894,8.92319 z" id="path4003" style="color:#000000;fill:#ffffff;stroke:none;stroke-width:1.77165353;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" inkscape:connector-curvature="0" sodipodi:nodetypes="csccccsccssscc"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -1,246 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
<svg width="28cm" height="12cm" viewBox="239 289 551 223" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="Background">
<g>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 713.614 347.58 L 713.54,345.719 L 713.283,343.858 L 712.804,342.03 L 712.142,340.201 L 711.258,338.34 L 710.264,336.545 L 709.013,334.781 L 707.614,333.051 L 706.104,331.321 L 704.337,329.688 L 702.46,328.056 L 700.398,326.521 L 698.153,324.986 L 695.797,323.55 L 693.294,322.146 L 690.606,320.84 L 687.845,319.566 L 684.974,318.391 L 681.955,317.281 L 678.826,316.269 L 675.587,315.289 L 672.237,314.473 L 668.887,313.657 L 665.39,312.971 L 661.819,312.351 L 658.248,311.828 L 654.604,311.404 L 650.922,311.11 L 647.204,310.849 L 643.45,310.718 L 639.695,310.653 L 639.695,310.653 L 635.977,310.718 L 632.185,310.849 L 628.504,311.11 L 624.822,311.404 L 621.141,311.828 L 617.57,312.351 L 614,312.971 L 610.539,313.657 L 607.116,314.473 L 603.839,315.289 L 600.6,316.269 L 597.508,317.281 L 594.452,318.391 L 591.581,319.566 L 588.783,320.84 L 586.096,322.146 L 583.592,323.55 L 581.236,324.986 L 578.991,326.521 L 576.929,328.056 L 575.052,329.688 L 573.322,331.321 L 571.739,333.051 L 570.414,334.781 L 569.162,336.545 L 568.131,338.34 L 567.248,340.201 L 566.659,342.03 L 566.18,343.858 L 565.849,345.719 L 565.812,347.58 L 565.812,347.58 L 565.849,349.474 L 566.18,351.335 L 566.659,353.196 L 567.248,355.024 L 568.131,356.853 L 569.162,358.649 L 570.414,360.412 L 571.739,362.175 L 573.322,363.873 L 575.052,365.505 L 576.929,367.138 L 578.991,368.705 L 581.236,370.207 L 583.592,371.643 L 586.096,373.047 L 588.783,374.386 L 591.581,375.594 L 594.452,376.835 L 597.508,377.945 L 600.6,378.957 L 603.839,379.871 L 607.116,380.753 L 610.539,381.536 L 614,382.222 L 617.57,382.842 L 621.141,383.365 L 624.822,383.757 L 628.504,384.083 L 632.185,384.377 L 635.977,384.475 L 639.695,384.508 L 639.695,384.508 L 643.45,384.475 L 647.204,384.377 L 650.922,384.083 L 654.604,383.757 L 658.248,383.365 L 661.819,382.842 L 665.39,382.222 L 668.887,381.536 L 672.237,380.753 L 675.587,379.871 L 678.826,378.957 L 681.955,377.945 L 684.974,376.835 L 687.845,375.594 L 690.606,374.386 L 693.294,373.047 L 695.797,371.643 L 698.153,370.207 L 700.398,368.705 L 702.46,367.138 L 704.337,365.505 L 706.104,363.873 L 707.614,362.175 L 709.013,360.412 L 710.264,358.649 L 711.258,356.853 L 712.142,355.024 L 712.804,353.196 L 713.283,351.335 L 713.54,349.474 L 713.614,347.58z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 597.765 366.974 L 597.692,365.113 L 597.434,363.252 L 597.139,361.424 L 596.624,359.563 L 595.961,357.734 L 595.152,355.939 L 594.194,354.176 L 593.164,352.445 L 591.986,350.715 L 590.66,349.082 L 589.225,347.45 L 587.642,345.915 L 585.875,344.381 L 584.071,342.944 L 582.157,341.54 L 580.095,340.234 L 578.034,338.961 L 575.751,337.785 L 573.469,336.675 L 571.039,335.696 L 568.61,334.683 L 566.07,333.802 L 563.419,333.051 L 560.769,332.365 L 558.045,331.745 L 555.284,331.223 L 552.486,330.798 L 549.651,330.504 L 546.854,330.243 L 543.982,330.08 L 541.111,330.047 L 541.111,330.047 L 538.239,330.08 L 535.368,330.243 L 532.497,330.504 L 529.699,330.798 L 526.864,331.223 L 524.104,331.745 L 521.416,332.365 L 518.766,333.051 L 516.152,333.802 L 513.612,334.683 L 511.109,335.696 L 508.753,336.675 L 506.397,337.785 L 504.188,338.961 L 502.09,340.234 L 500.028,341.54 L 498.114,342.944 L 496.273,344.381 L 494.543,345.915 L 492.997,347.45 L 491.524,349.082 L 490.236,350.715 L 489.021,352.445 L 487.954,354.176 L 487.033,355.939 L 486.223,357.734 L 485.561,359.563 L 485.082,361.424 L 484.714,363.252 L 484.493,365.113 L 484.42,366.974 L 484.42,366.974 L 484.493,368.868 L 484.714,370.729 L 485.082,372.59 L 485.561,374.419 L 486.223,376.247 L 487.033,378.043 L 487.954,379.806 L 489.021,381.536 L 490.236,383.267 L 491.524,384.899 L 492.997,386.532 L 494.543,388.066 L 496.273,389.601 L 498.114,391.038 L 500.028,392.442 L 502.09,393.748 L 504.188,394.988 L 506.397,396.164 L 508.753,397.339 L 511.109,398.351 L 513.612,399.265 L 516.152,400.18 L 518.766,400.931 L 521.416,401.616 L 524.104,402.237 L 526.864,402.726 L 529.699,403.151 L 532.497,403.477 L 535.368,403.771 L 538.239,403.869 L 541.111,403.902 L 541.111,403.902 L 543.982,403.869 L 546.854,403.771 L 549.651,403.477 L 552.486,403.151 L 555.284,402.726 L 558.045,402.237 L 560.769,401.616 L 563.419,400.931 L 566.07,400.18 L 568.61,399.265 L 571.039,398.351 L 573.469,397.339 L 575.751,396.164 L 578.034,394.988 L 580.095,393.748 L 582.157,392.442 L 584.071,391.038 L 585.875,389.601 L 587.642,388.066 L 589.225,386.532 L 590.66,384.899 L 591.986,383.267 L 593.164,381.536 L 594.194,379.806 L 595.152,378.043 L 595.961,376.247 L 596.624,374.419 L 597.139,372.59 L 597.434,370.729 L 597.692,368.868 L 597.765,366.974z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 526.312 404.685 L 526.275,403.151 L 526.165,401.616 L 525.907,400.082 L 525.576,398.58 L 525.097,397.143 L 524.545,395.641 L 523.956,394.172 L 523.257,392.768 L 522.447,391.364 L 521.527,390.025 L 520.533,388.752 L 519.465,387.446 L 518.324,386.205 L 517.109,384.997 L 515.784,383.887 L 514.422,382.842 L 513.023,381.765 L 511.55,380.818 L 509.968,379.904 L 508.348,379.055 L 506.691,378.304 L 504.961,377.586 L 503.231,376.965 L 501.427,376.41 L 499.586,375.888 L 497.746,375.496 L 495.868,375.104 L 493.917,374.876 L 492.003,374.68 L 490.126,374.582 L 488.175,374.517 L 488.175,374.517 L 486.223,374.582 L 484.272,374.68 L 482.358,374.876 L 480.481,375.104 L 478.566,375.496 L 476.689,375.888 L 474.885,376.41 L 473.118,376.965 L 471.314,377.586 L 469.584,378.304 L 467.928,379.055 L 466.308,379.904 L 464.762,380.818 L 463.252,381.765 L 461.854,382.842 L 460.492,383.887 L 459.203,384.997 L 457.951,386.205 L 456.81,387.446 L 455.743,388.752 L 454.749,390.025 L 453.902,391.364 L 453.092,392.768 L 452.393,394.172 L 451.73,395.641 L 451.178,397.143 L 450.773,398.58 L 450.442,400.082 L 450.147,401.616 L 450,403.151 L 450,404.685 L 450,404.685 L 450,406.155 L 450.147,407.689 L 450.442,409.191 L 450.773,410.693 L 451.178,412.227 L 451.73,413.664 L 452.393,415.101 L 453.092,416.537 L 453.902,417.941 L 454.749,419.28 L 455.743,420.586 L 456.81,421.859 L 457.951,423.1 L 459.203,424.275 L 460.492,425.385 L 461.854,426.463 L 463.252,427.54 L 464.762,428.455 L 466.308,429.369 L 467.928,430.218 L 469.584,431.001 L 471.314,431.72 L 473.118,432.34 L 474.885,432.895 L 476.689,433.385 L 478.566,433.809 L 480.481,434.168 L 482.358,434.462 L 484.272,434.625 L 486.223,434.723 L 488.175,434.789 L 488.175,434.789 L 490.126,434.723 L 492.003,434.625 L 493.917,434.462 L 495.868,434.168 L 497.746,433.809 L 499.586,433.385 L 501.427,432.895 L 503.231,432.34 L 504.961,431.72 L 506.691,431.001 L 508.348,430.218 L 509.968,429.369 L 511.55,428.455 L 513.023,427.54 L 514.422,426.463 L 515.784,425.385 L 517.109,424.275 L 518.324,423.1 L 519.465,421.859 L 520.533,420.586 L 521.527,419.28 L 522.447,417.941 L 523.257,416.537 L 523.956,415.101 L 524.545,413.664 L 525.097,412.227 L 525.576,410.693 L 525.907,409.191 L 526.165,407.689 L 526.275,406.155 L 526.312,404.685z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 587.936 433.711 L 587.9,432.046 L 587.642,430.414 L 587.237,428.748 L 586.758,427.116 L 586.096,425.516 L 585.323,423.916 L 584.329,422.349 L 583.298,420.814 L 582.046,419.378 L 580.721,417.876 L 579.212,416.439 L 577.629,415.101 L 575.935,413.762 L 574.095,412.423 L 572.144,411.215 L 570.082,410.04 L 567.91,408.962 L 565.628,407.885 L 563.309,406.938 L 560.879,405.991 L 558.339,405.175 L 555.762,404.391 L 553.112,403.706 L 550.424,403.085 L 547.663,402.563 L 544.829,402.139 L 542.031,401.747 L 539.16,401.42 L 536.288,401.224 L 533.38,401.094 L 530.435,401.061 L 530.435,401.061 L 527.527,401.094 L 524.656,401.224 L 521.711,401.42 L 518.876,401.747 L 516.005,402.139 L 513.244,402.563 L 510.483,403.085 L 507.759,403.706 L 505.108,404.391 L 502.568,405.175 L 500.028,405.991 L 497.599,406.938 L 495.243,407.885 L 492.997,408.962 L 490.825,410.04 L 488.764,411.215 L 486.812,412.423 L 484.972,413.762 L 483.242,415.101 L 481.659,416.439 L 480.149,417.876 L 478.787,419.378 L 477.609,420.814 L 476.542,422.349 L 475.548,423.916 L 474.738,425.516 L 474.149,427.116 L 473.597,428.748 L 473.229,430.414 L 473.008,432.046 L 472.934,433.711 L 472.934,433.711 L 473.008,435.344 L 473.229,437.009 L 473.597,438.641 L 474.149,440.274 L 474.738,441.874 L 475.548,443.474 L 476.542,445.073 L 477.609,446.608 L 478.787,448.077 L 480.149,449.514 L 481.659,450.95 L 483.242,452.322 L 484.972,453.693 L 486.812,454.999 L 488.764,456.207 L 490.825,457.35 L 492.997,458.46 L 495.243,459.505 L 497.599,460.484 L 500.028,461.431 L 502.568,462.247 L 505.108,463.031 L 507.759,463.684 L 510.483,464.304 L 513.244,464.827 L 516.005,465.284 L 518.876,465.708 L 521.711,466.002 L 524.656,466.198 L 527.527,466.329 L 530.435,466.329 L 530.435,466.329 L 533.38,466.329 L 536.288,466.198 L 539.16,466.002 L 542.031,465.708 L 544.829,465.284 L 547.663,464.827 L 550.424,464.304 L 553.112,463.684 L 555.762,463.031 L 558.339,462.247 L 560.879,461.431 L 563.309,460.484 L 565.628,459.505 L 567.91,458.46 L 570.082,457.35 L 572.144,456.207 L 574.095,454.999 L 575.935,453.693 L 577.629,452.322 L 579.212,450.95 L 580.721,449.514 L 582.046,448.077 L 583.298,446.608 L 584.329,445.073 L 585.323,443.474 L 586.096,441.874 L 586.758,440.274 L 587.237,438.641 L 587.642,437.009 L 587.9,435.344 L 587.936,433.711z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 725.946 450.591 L 725.799,448.6 L 725.505,446.608 L 724.916,444.682 L 724.142,442.755 L 723.185,440.829 L 722.007,438.968 L 720.608,437.139 L 718.989,435.278 L 717.148,433.483 L 715.16,431.752 L 712.915,430.087 L 710.559,428.455 L 707.982,426.855 L 705.258,425.32 L 702.276,423.851 L 699.257,422.48 L 696.018,421.141 L 692.631,419.9 L 689.171,418.757 L 685.489,417.68 L 681.771,416.668 L 677.906,415.786 L 673.967,414.937 L 669.881,414.219 L 665.795,413.566 L 661.598,413.044 L 657.401,412.587 L 653.058,412.26 L 648.824,412.032 L 644.443,411.836 L 640.1,411.836 L 640.1,411.836 L 635.756,411.836 L 631.412,412.032 L 627.105,412.26 L 622.835,412.587 L 618.564,413.044 L 614.405,413.566 L 610.282,414.219 L 606.269,414.937 L 602.256,415.786 L 598.465,416.668 L 594.673,417.68 L 591.065,418.757 L 587.568,419.9 L 584.218,421.141 L 580.979,422.48 L 577.887,423.851 L 574.978,425.32 L 572.254,426.855 L 569.641,428.455 L 567.248,430.087 L 565.039,431.752 L 563.088,433.483 L 561.247,435.278 L 559.628,437.139 L 558.229,438.968 L 557.014,440.829 L 556.057,442.755 L 555.247,444.682 L 554.695,446.608 L 554.363,448.6 L 554.253,450.591 L 554.253,450.591 L 554.363,452.485 L 554.695,454.477 L 555.247,456.403 L 556.057,458.362 L 557.014,460.288 L 558.229,462.149 L 559.628,463.978 L 561.247,465.839 L 563.088,467.635 L 565.039,469.365 L 567.248,471.03 L 569.641,472.728 L 572.254,474.263 L 574.978,475.797 L 577.887,477.234 L 580.979,478.67 L 584.218,479.976 L 587.568,481.217 L 591.065,482.36 L 594.673,483.47 L 598.465,484.417 L 602.256,485.331 L 606.269,486.147 L 610.282,486.866 L 614.405,487.551 L 618.564,488.041 L 622.835,488.498 L 627.105,488.857 L 631.412,489.086 L 635.756,489.282 L 640.1,489.282 L 640.1,489.282 L 644.443,489.282 L 648.824,489.086 L 653.058,488.857 L 657.401,488.498 L 661.598,488.041 L 665.795,487.551 L 669.881,486.866 L 673.967,486.147 L 677.906,485.331 L 681.771,484.417 L 685.489,483.47 L 689.171,482.36 L 692.631,481.217 L 696.018,479.976 L 699.257,478.67 L 702.276,477.234 L 705.258,475.797 L 707.982,474.263 L 710.559,472.728 L 712.915,471.03 L 715.16,469.365 L 717.148,467.635 L 718.989,465.839 L 720.608,463.978 L 722.007,462.149 L 723.185,460.288 L 724.142,458.362 L 724.916,456.403 L 725.505,454.477 L 725.799,452.485 L 725.946,450.591z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 773.582 361.228 L 773.545,359.791 L 773.324,358.289 L 772.919,356.82 L 772.477,355.384 L 771.815,353.98 L 771.078,352.543 L 770.158,351.139 L 769.091,349.768 L 767.949,348.462 L 766.698,347.123 L 765.262,345.85 L 763.716,344.609 L 762.096,343.466 L 760.292,342.291 L 758.452,341.213 L 756.427,340.201 L 754.366,339.157 L 752.23,338.242 L 749.948,337.393 L 747.629,336.577 L 745.273,335.826 L 742.77,335.141 L 740.23,334.52 L 737.653,333.965 L 735.002,333.475 L 732.352,333.149 L 729.628,332.757 L 726.903,332.496 L 724.106,332.333 L 721.345,332.235 L 718.547,332.169 L 718.547,332.169 L 715.712,332.235 L 712.951,332.333 L 710.154,332.496 L 707.43,332.757 L 704.742,333.149 L 702.055,333.475 L 699.441,333.965 L 696.828,334.52 L 694.288,335.141 L 691.784,335.826 L 689.392,336.577 L 687.109,337.393 L 684.827,338.242 L 682.692,339.157 L 680.63,340.201 L 678.642,341.213 L 676.765,342.291 L 674.961,343.466 L 673.341,344.609 L 671.832,345.85 L 670.359,347.123 L 669.108,348.462 L 667.967,349.768 L 666.899,351.139 L 665.979,352.543 L 665.243,353.98 L 664.617,355.384 L 664.101,356.82 L 663.77,358.289 L 663.586,359.791 L 663.476,361.228 L 663.476,361.228 L 663.586,362.697 L 663.77,364.167 L 664.101,365.603 L 664.617,367.072 L 665.243,368.509 L 665.979,369.913 L 666.899,371.317 L 667.967,372.688 L 669.108,374.059 L 670.359,375.333 L 671.832,376.574 L 673.341,377.847 L 674.961,379.022 L 676.765,380.132 L 678.642,381.243 L 680.63,382.287 L 682.692,383.267 L 684.827,384.181 L 687.109,385.095 L 689.392,385.911 L 691.784,386.63 L 694.288,387.348 L 696.828,387.936 L 699.441,388.458 L 702.055,388.981 L 704.742,389.372 L 707.43,389.699 L 710.154,389.993 L 712.951,390.123 L 715.712,390.287 L 718.547,390.287 L 718.547,390.287 L 721.345,390.287 L 724.106,390.123 L 726.903,389.993 L 729.628,389.699 L 732.352,389.372 L 735.002,388.981 L 737.653,388.458 L 740.23,387.936 L 742.77,387.348 L 745.273,386.63 L 747.629,385.911 L 749.948,385.095 L 752.23,384.181 L 754.366,383.267 L 756.427,382.287 L 758.452,381.243 L 760.292,380.132 L 762.096,379.022 L 763.716,377.847 L 765.262,376.574 L 766.698,375.333 L 767.949,374.059 L 769.091,372.688 L 770.158,371.317 L 771.078,369.913 L 771.815,368.509 L 772.477,367.072 L 772.919,365.603 L 773.324,364.167 L 773.545,362.697 L 773.582,361.228z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 789.19 398.547 L 789.08,397.078 L 788.932,395.609 L 788.564,394.172 L 788.086,392.735 L 787.423,391.266 L 786.687,389.895 L 785.803,388.458 L 784.736,387.12 L 783.595,385.748 L 782.343,384.475 L 780.907,383.169 L 779.361,381.961 L 777.778,380.818 L 775.974,379.61 L 774.134,378.565 L 772.22,377.488 L 770.158,376.508 L 767.949,375.594 L 765.777,374.712 L 763.458,373.896 L 761.102,373.145 L 758.636,372.46 L 756.133,371.872 L 753.556,371.317 L 750.905,370.827 L 748.255,370.435 L 745.567,370.109 L 742.806,369.815 L 740.082,369.684 L 737.321,369.586 L 734.56,369.521 L 734.56,369.521 L 731.763,369.586 L 729.039,369.684 L 726.278,369.815 L 723.59,370.109 L 720.903,370.435 L 718.216,370.827 L 715.602,371.317 L 713.062,371.872 L 710.522,372.46 L 708.055,373.145 L 705.699,373.896 L 703.38,374.712 L 701.135,375.594 L 699.036,376.508 L 696.975,377.488 L 694.95,378.565 L 693.11,379.61 L 691.379,380.818 L 689.796,381.961 L 688.25,383.169 L 686.851,384.475 L 685.526,385.748 L 684.385,387.12 L 683.391,388.458 L 682.471,389.895 L 681.661,391.266 L 681.072,392.735 L 680.593,394.172 L 680.225,395.609 L 680.004,397.078 L 679.968,398.547 L 679.968,398.547 L 680.004,400.016 L 680.225,401.518 L 680.593,402.955 L 681.072,404.391 L 681.661,405.828 L 682.471,407.232 L 683.391,408.669 L 684.385,410.007 L 685.526,411.313 L 686.851,412.652 L 688.25,413.893 L 689.796,415.133 L 691.379,416.309 L 693.11,417.451 L 694.95,418.562 L 696.975,419.574 L 699.036,420.586 L 701.135,421.5 L 703.38,422.349 L 705.699,423.165 L 708.055,423.916 L 710.522,424.602 L 713.062,425.222 L 715.602,425.81 L 718.216,426.3 L 720.903,426.626 L 723.59,427.018 L 726.278,427.247 L 729.039,427.442 L 731.763,427.54 L 734.56,427.573 L 734.56,427.573 L 737.321,427.54 L 740.082,427.442 L 742.806,427.247 L 745.567,427.018 L 748.255,426.626 L 750.905,426.3 L 753.556,425.81 L 756.133,425.222 L 758.636,424.602 L 761.102,423.916 L 763.458,423.165 L 765.777,422.349 L 767.949,421.5 L 770.158,420.586 L 772.22,419.574 L 774.134,418.562 L 775.974,417.451 L 777.778,416.309 L 779.361,415.133 L 780.907,413.893 L 782.343,412.652 L 783.595,411.313 L 784.736,410.007 L 785.803,408.669 L 786.687,407.232 L 787.423,405.828 L 788.086,404.391 L 788.564,402.955 L 788.932,401.518 L 789.08,400.016 L 789.19,398.547z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 778.515 429.401 L 778.441,427.018 L 778.22,424.569 L 777.926,422.218 L 777.447,419.802 L 776.821,417.451 L 776.048,415.133 L 775.165,412.848 L 774.097,410.595 L 772.956,408.407 L 771.741,406.252 L 770.342,404.163 L 768.796,402.171 L 767.176,400.212 L 765.409,398.351 L 763.569,396.555 L 761.654,394.825 L 759.593,393.192 L 757.495,391.723 L 755.249,390.287 L 752.967,388.981 L 750.611,387.74 L 748.218,386.63 L 745.715,385.585 L 743.175,384.671 L 740.524,383.887 L 737.91,383.267 L 735.186,382.679 L 732.499,382.255 L 729.812,381.961 L 727.087,381.765 L 724.327,381.732 L 724.327,381.732 L 721.566,381.765 L 718.841,381.961 L 716.081,382.255 L 713.393,382.679 L 710.743,383.267 L 708.055,383.887 L 705.479,384.671 L 702.939,385.585 L 700.435,386.63 L 697.969,387.74 L 695.613,388.981 L 693.33,390.287 L 691.159,391.723 L 688.987,393.192 L 686.962,394.825 L 685.011,396.555 L 683.17,398.351 L 681.44,400.212 L 679.783,402.171 L 678.311,404.163 L 676.912,406.252 L 675.624,408.407 L 674.482,410.595 L 673.489,412.848 L 672.605,415.133 L 671.832,417.451 L 671.206,419.802 L 670.728,422.218 L 670.359,424.569 L 670.139,427.018 L 670.065,429.401 L 670.065,429.401 L 670.139,431.818 L 670.359,434.266 L 670.728,436.617 L 671.206,439.001 L 671.832,441.417 L 672.605,443.702 L 673.489,445.955 L 674.482,448.241 L 675.624,450.395 L 676.912,452.55 L 678.311,454.673 L 679.783,456.664 L 681.44,458.591 L 683.17,460.484 L 685.011,462.28 L 686.962,463.978 L 688.987,465.61 L 691.159,467.145 L 693.33,468.549 L 695.613,469.888 L 697.969,471.096 L 700.435,472.238 L 702.939,473.25 L 705.479,474.165 L 708.055,474.916 L 710.743,475.601 L 713.393,476.124 L 716.081,476.548 L 718.841,476.842 L 721.566,477.038 L 724.327,477.136 L 724.327,477.136 L 727.087,477.038 L 729.812,476.842 L 732.499,476.548 L 735.186,476.124 L 737.91,475.601 L 740.524,474.916 L 743.175,474.165 L 745.715,473.25 L 748.218,472.238 L 750.611,471.096 L 752.967,469.888 L 755.249,468.549 L 757.495,467.145 L 759.593,465.61 L 761.654,463.978 L 763.569,462.28 L 765.409,460.484 L 767.176,458.591 L 768.796,456.664 L 770.342,454.673 L 771.741,452.55 L 772.956,450.395 L 774.097,448.241 L 775.165,445.955 L 776.048,443.702 L 776.821,441.417 L 777.447,439.001 L 777.926,436.617 L 778.22,434.266 L 778.441,431.818 L 778.515,429.401z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 731.689 400.702 L 731.542,398.253 L 731.1,395.902 L 730.401,393.454 L 729.443,391.103 L 728.192,388.752 L 726.646,386.401 L 724.842,384.116 L 722.744,381.863 L 720.461,379.675 L 717.884,377.553 L 715.013,375.431 L 711.958,373.406 L 708.644,371.513 L 705.11,369.619 L 701.356,367.791 L 697.453,366.093 L 693.294,364.493 L 688.95,362.958 L 684.495,361.522 L 679.82,360.183 L 674.998,358.975 L 670.065,357.832 L 665.022,356.82 L 659.868,355.939 L 654.567,355.188 L 649.192,354.502 L 643.781,353.98 L 638.296,353.555 L 632.774,353.196 L 627.215,353.033 L 621.583,352.968 L 621.583,352.968 L 616.024,353.033 L 610.466,353.196 L 604.944,353.555 L 599.422,353.98 L 594.01,354.502 L 588.636,355.188 L 583.372,355.939 L 578.218,356.82 L 573.101,357.832 L 568.242,358.975 L 563.419,360.183 L 558.707,361.522 L 554.216,362.958 L 549.946,364.493 L 545.749,366.093 L 541.81,367.791 L 538.129,369.619 L 534.558,371.513 L 531.245,373.406 L 528.227,375.431 L 525.355,377.553 L 522.815,379.675 L 520.496,381.863 L 518.361,384.116 L 516.594,386.401 L 515.084,388.752 L 513.759,391.103 L 512.802,393.454 L 512.103,395.902 L 511.661,398.253 L 511.55,400.702 L 511.55,400.702 L 511.661,403.085 L 512.103,405.502 L 512.802,407.885 L 513.759,410.301 L 515.084,412.652 L 516.594,414.97 L 518.361,417.223 L 520.496,419.508 L 522.815,421.729 L 525.355,423.851 L 528.227,425.908 L 531.245,427.932 L 534.558,429.891 L 538.129,431.752 L 541.81,433.548 L 545.749,435.278 L 549.946,436.911 L 554.216,438.445 L 558.707,439.882 L 563.419,441.155 L 568.242,442.429 L 573.101,443.506 L 578.218,444.518 L 583.372,445.433 L 588.636,446.216 L 594.01,446.869 L 599.422,447.424 L 604.944,447.849 L 610.466,448.143 L 616.024,448.371 L 621.583,448.404 L 621.583,448.404 L 627.215,448.371 L 632.774,448.143 L 638.296,447.849 L 643.781,447.424 L 649.192,446.869 L 654.567,446.216 L 659.868,445.433 L 665.022,444.518 L 670.065,443.506 L 674.998,442.429 L 679.82,441.155 L 684.495,439.882 L 688.95,438.445 L 693.294,436.911 L 697.453,435.278 L 701.356,433.548 L 705.11,431.752 L 708.644,429.891 L 711.958,427.932 L 715.013,425.908 L 717.884,423.851 L 720.461,421.729 L 722.744,419.508 L 724.842,417.223 L 726.646,414.97 L 728.192,412.652 L 729.443,410.301 L 730.401,407.885 L 731.1,405.502 L 731.542,403.085 L 731.689,400.702z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 640.541 347.254 L 713.393,339.026 L 712.473,337.23 L 711.332,335.402 L 710.08,333.606 L 708.571,331.876 L 706.951,330.21 L 705.11,328.513 L 703.196,326.913 L 700.987,325.378 L 698.742,323.876 L 696.312,322.44 L 693.699,321.068 L 690.974,319.795 L 688.103,318.554 L 685.121,317.346 L 682.029,316.269 L 678.826,315.289 L 675.587,314.31 L 672.163,313.494 L 668.703,312.743 L 665.206,312.057 L 661.561,311.469 L 657.917,311.012 L 654.236,310.588 L 650.518,310.294 L 646.763,310.098 L 642.971,310 L 639.216,310 L 635.424,310.098 L 631.633,310.229 L 627.951,310.49 L 624.233,310.914 L 620.552,311.339 L 616.908,311.926 L 613.337,312.547 L 609.877,313.265 L 606.49,314.081 L 603.14,314.995 L 599.9,315.942 L 596.845,317.02 L 593.826,318.163 L 590.918,319.371 L 588.157,320.644 L 585.544,322.015 L 583.077,323.452 L 580.721,324.921 L 578.512,326.456 L 576.451,328.056 L 574.573,329.688 L 572.954,331.418 L 571.371,333.084 L 570.009,334.879 L 568.867,336.642 L 567.91,338.471 L 567.1,340.299 L 640.541,347.254z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 713.393 338.961 L 712.436,337.132 L 711.332,335.336 L 710.043,333.541 L 708.571,331.843 L 706.877,330.145 L 705.074,328.48 L 703.123,326.88 L 700.914,325.346 L 698.631,323.876 L 696.275,322.44 L 693.625,321.003 L 690.974,319.73 L 688.066,318.489 L 685.084,317.346 L 682.029,316.204 L 678.826,315.224 L 675.55,314.31 L 672.126,313.461 L 668.666,312.743 L 665.206,312.057 L 661.561,311.469 L 657.88,311.012 L 654.199,310.588 L 650.481,310.294 L 646.763,310.098 L 642.934,310 L 639.179,310 L 635.424,310.098 L 631.67,310.229 L 627.915,310.49 L 624.233,310.914 L 620.552,311.306 L 616.945,311.861 L 613.411,312.547 L 609.877,313.265 L 606.527,314.081 L 603.177,314.995 L 599.974,315.942 L 596.845,316.987 L 593.863,318.163 L 590.955,319.371 L 588.194,320.611 L 585.58,321.983 L 583.077,323.387 L 580.721,324.888 L 578.512,326.423 L 576.524,327.99 L 574.61,329.688 L 572.954,331.321 L 571.408,333.051 L 570.082,334.781 L 568.867,336.577 L 567.91,338.406 L 567.137,340.234"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 541.479 366.615 L 578.218,338.046 L 575.935,336.871 L 573.543,335.761 L 571.113,334.781 L 568.61,333.802 L 566.07,332.953 L 563.419,332.169 L 560.695,331.516 L 558.008,330.896 L 555.173,330.406 L 552.375,329.982 L 549.504,329.688 L 546.633,329.459 L 543.761,329.329 L 540.89,329.329 L 537.982,329.394 L 535.11,329.59 L 532.239,329.819 L 529.405,330.178 L 526.607,330.635 L 523.846,331.157 L 521.085,331.778 L 518.434,332.496 L 515.784,333.312 L 513.244,334.194 L 510.777,335.173 L 508.421,336.251 L 506.065,337.393 L 503.857,338.569 L 501.758,339.875 L 499.697,341.213 L 497.783,342.65 L 496.016,344.087 L 494.322,345.654 L 492.776,347.221 L 491.304,348.854 L 490.015,350.551 L 488.8,352.282 L 487.77,354.012 L 486.849,355.808 L 486.113,357.636 L 485.524,359.465 L 485.009,361.359 L 484.641,363.252 L 484.493,365.113 L 484.42,366.974 L 484.53,368.868 L 484.751,370.794 L 485.193,372.623 L 541.479,366.615z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 578.034 337.948 L 575.751,336.773 L 573.432,335.696 L 571.003,334.683 L 568.463,333.769 L 565.849,332.888 L 563.235,332.137 L 560.548,331.451 L 557.787,330.863 L 555.026,330.406 L 552.155,329.982 L 549.32,329.688 L 546.485,329.459 L 543.614,329.329 L 540.669,329.329 L 537.871,329.394 L 535,329.59 L 532.055,329.819 L 529.257,330.21 L 526.496,330.635 L 523.662,331.223 L 520.974,331.81 L 518.324,332.561 L 515.71,333.377 L 513.133,334.259 L 510.667,335.239 L 508.311,336.316 L 506.029,337.426 L 503.82,338.667 L 501.648,339.907 L 499.697,341.311 L 497.746,342.683 L 495.942,344.185 L 494.285,345.687 L 492.702,347.254 L 491.304,348.919 L 490.015,350.617 L 488.8,352.347 L 487.733,354.078 L 486.849,355.906 L 486.113,357.669 L 485.45,359.53 L 485.009,361.424 L 484.641,363.285 L 484.493,365.146 L 484.42,367.04 L 484.604,368.901 L 484.825,370.794 L 485.193,372.688"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 531.245 433.352 L 472.124,432.34 L 472.124,434.07 L 472.235,435.703 L 472.529,437.433 L 473.008,439.066 L 473.56,440.731 L 474.259,442.429 L 475.18,443.996 L 476.137,445.596 L 477.352,447.163 L 478.64,448.665 L 480.002,450.2 L 481.622,451.636 L 483.242,453.04 L 485.082,454.379 L 486.96,455.685 L 488.984,456.925 L 491.156,458.068 L 493.365,459.178 L 495.684,460.288 L 498.114,461.235 L 500.617,462.149 L 503.231,463.031 L 505.881,463.749 L 508.532,464.468 L 511.33,465.088 L 514.164,465.61 L 517.036,466.035 L 519.944,466.427 L 522.852,466.72 L 525.797,466.916 L 528.779,467.014 L 531.797,467.014 L 534.706,466.949 L 537.687,466.818 L 540.632,466.623 L 543.54,466.329 L 546.485,465.904 L 549.283,465.414 L 552.155,464.892 L 554.842,464.206 L 557.566,463.553 L 560.217,462.737 L 562.72,461.856 L 565.26,460.909 L 567.579,459.897 L 569.898,458.852 L 531.245,433.352z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 472.198 432.34 L 472.087,434.005 L 472.308,435.703 L 472.529,437.368 L 473.008,439.066 L 473.56,440.698 L 474.296,442.364 L 475.18,443.996 L 476.21,445.596 L 477.352,447.13 L 478.566,448.665 L 480.002,450.134 L 481.511,451.603 L 483.242,452.975 L 485.009,454.379 L 486.923,455.619 L 488.911,456.86 L 491.046,458.068 L 493.255,459.178 L 495.574,460.223 L 498.003,461.203 L 500.507,462.117 L 503.047,462.966 L 505.697,463.749 L 508.458,464.468 L 511.182,465.023 L 513.98,465.545 L 516.851,466.035 L 519.796,466.361 L 522.705,466.72 L 525.613,466.851 L 528.595,467.014 L 531.576,467.014 L 534.521,467.014 L 537.466,466.851 L 540.411,466.623 L 543.32,466.329 L 546.265,465.937 L 549.062,465.48 L 551.934,464.925 L 554.658,464.272 L 557.308,463.553 L 559.959,462.77 L 562.499,461.921 L 565.039,461.007 L 567.432,459.995 L 569.677,458.95"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 719.357 360.542 L 771.373,369.978 L 772.256,368.574 L 772.919,367.17 L 773.545,365.734 L 773.913,364.264 L 774.281,362.795 L 774.355,361.326 L 774.355,359.824 L 774.281,358.387 L 773.987,356.918 L 773.582,355.449 L 772.993,354.012 L 772.293,352.576 L 771.483,351.204 L 770.526,349.8 L 769.422,348.462 L 768.17,347.123 L 766.771,345.817 L 765.336,344.576 L 763.753,343.368 L 762.059,342.226 L 760.256,341.05 L 758.268,340.005 L 756.28,338.993 L 754.108,338.046 L 751.936,337.132 L 749.654,336.316 L 747.298,335.5 L 744.831,334.781 L 742.328,334.128 L 739.751,333.541 L 737.1,333.051 L 734.487,332.627 L 731.726,332.235 L 729.002,331.941 L 726.241,331.712 L 723.443,331.614 L 720.682,331.516 L 717.921,331.516 L 715.123,331.614 L 712.326,331.745 L 709.602,331.974 L 706.841,332.267 L 704.117,332.627 L 701.429,333.084 L 719.357,360.542z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 766.587 375.3 L 771.336,370.044 L 772.22,368.672 L 772.919,367.236 L 773.471,365.799 L 773.913,364.33 L 774.207,362.861 L 774.318,361.424 L 774.355,359.889 L 774.244,358.453 L 773.987,356.983 L 773.582,355.514 L 772.993,354.078 L 772.293,352.641 L 771.52,351.237 L 770.563,349.898 L 769.422,348.494 L 768.17,347.156 L 766.882,345.85 L 765.372,344.609 L 763.79,343.401 L 762.096,342.226 L 760.292,341.116 L 758.378,340.071 L 756.353,339.026 L 754.255,338.046 L 752.01,337.165 L 749.727,336.316 L 747.371,335.532 L 744.905,334.879 L 742.401,334.194 L 739.861,333.573 L 737.248,333.051 L 734.56,332.627 L 731.91,332.235 L 729.186,331.941 L 726.425,331.745 L 723.627,331.614 L 720.829,331.516 L 717.995,331.516 L 715.234,331.614 L 712.436,331.745 L 709.675,331.941 L 706.951,332.235 L 704.264,332.594 L 701.576,333.051"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 726.756 398.906 L 785.325,410.856 L 786.503,409.289 L 787.46,407.754 L 788.343,406.122 L 789.043,404.489 L 789.521,402.857 L 789.853,401.224 L 789.963,399.527 L 789.963,397.861 L 789.742,396.196 L 789.411,394.564 L 788.822,392.899 L 788.123,391.299 L 787.202,389.699 L 786.208,388.099 L 784.957,386.564 L 783.558,385.095 L 782.049,383.593 L 780.318,382.124 L 778.478,380.753 L 726.756,398.906z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 777.889 416.276 L 785.251,410.921 L 786.356,409.387 L 787.46,407.754 L 788.307,406.155 L 789.006,404.489 L 789.485,402.857 L 789.853,401.224 L 790,399.527 L 789.963,397.861 L 789.742,396.164 L 789.337,394.531 L 788.822,392.899 L 788.123,391.266 L 787.202,389.634 L 786.172,388.034 L 784.883,386.467 L 783.521,384.997 L 781.901,383.495 L 780.245,382.059 L 778.367,380.687 L 766.587,375.3"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 724.29 430.446 L 705.81,475.797 L 708.534,476.516 L 711.295,477.169 L 714.056,477.658 L 716.927,478.05 L 719.725,478.344 L 722.523,478.475 L 725.431,478.475 L 728.265,478.344 L 731.063,478.148 L 733.898,477.756 L 736.659,477.266 L 739.42,476.711 L 742.144,475.993 L 744.831,475.112 L 747.408,474.165 L 749.985,473.087 L 752.488,471.912 L 754.918,470.606 L 757.274,469.267 L 759.519,467.733 L 761.654,466.133 L 763.716,464.468 L 765.704,462.672 L 767.581,460.811 L 769.275,458.884 L 770.894,456.86 L 772.44,454.803 L 773.803,452.648 L 775.017,450.493 L 776.159,448.241 L 777.116,445.922 L 777.999,443.572 L 778.699,441.221 L 779.288,438.805 L 779.656,436.421 L 779.987,433.972 L 780.061,431.524 L 780.061,429.075 L 779.913,426.626 L 779.619,424.177 L 779.177,421.761 L 778.625,419.378 L 777.889,417.027 L 724.29,430.446z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 705.957 475.83 L 708.718,476.613 L 711.442,477.234 L 714.24,477.756 L 717.038,478.083 L 719.909,478.344 L 722.707,478.475 L 725.541,478.54 L 728.376,478.344 L 731.247,478.148 L 734.045,477.756 L 736.806,477.266 L 739.567,476.646 L 742.291,475.928 L 744.942,475.079 L 747.592,474.099 L 750.132,473.055 L 752.599,471.912 L 754.991,470.606 L 757.347,469.169 L 759.593,467.667 L 761.728,466.035 L 763.79,464.37 L 765.777,462.639 L 767.618,460.746 L 769.385,458.787 L 770.931,456.827 L 772.477,454.705 L 773.839,452.55 L 775.054,450.395 L 776.159,448.143 L 777.152,445.792 L 778.036,443.474 L 778.699,441.09 L 779.288,438.707 L 779.729,436.323 L 779.987,433.874 L 780.061,431.426 L 780.061,428.977 L 779.877,426.528 L 779.619,424.079 L 779.14,421.663 L 778.515,419.28 L 777.889,416.929"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 490.162 404.685 L 487.365,373.896 L 485.303,374.059 L 483.352,374.255 L 481.291,374.582 L 479.303,374.974 L 477.352,375.431 L 475.437,376.019 L 473.56,376.574 L 471.719,377.325 L 469.879,378.043 L 468.149,378.859 L 466.455,379.773 L 464.835,380.72 L 463.252,381.732 L 461.817,382.842 L 460.381,383.952 L 459.056,385.128 L 457.804,386.369 L 456.663,387.675 L 455.522,388.981 L 454.528,390.385 L 453.681,391.821 L 452.871,393.258 L 452.098,394.694 L 451.509,396.196 L 451.031,397.731 L 450.589,399.265 L 450.258,400.833 L 450.11,402.432 L 450,403.967 L 450,405.534 L 450.11,407.069 L 450.331,408.669 L 450.663,410.203 L 451.031,411.738 L 451.583,413.272 L 452.172,414.774 L 452.908,416.243 L 453.718,417.68 L 454.638,419.084 L 455.632,420.488 L 456.773,421.761 L 457.915,423.067 L 459.203,424.308 L 460.565,425.483 L 461.964,426.626 L 463.473,427.671 L 465.056,428.683 L 466.676,429.663 L 468.406,430.544 L 470.1,431.36 L 471.94,432.111 L 490.162,404.685z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 487.365 373.896 L 485.414,374.059 L 483.389,374.255 L 481.401,374.582 L 479.487,374.941 L 477.536,375.398 L 475.621,375.888 L 473.781,376.508 L 471.977,377.161 L 470.173,377.88 L 468.517,378.696 L 466.786,379.577 L 465.204,380.492 L 463.657,381.471 L 462.185,382.549 L 460.712,383.659 L 459.424,384.769 L 458.136,386.009 L 456.994,387.25 L 455.89,388.556 L 454.933,389.895 L 454.013,391.266 L 453.129,392.637 L 452.393,394.074 L 451.73,395.543 L 451.178,397.045 L 450.773,398.547 L 450.368,400.082 L 450.147,401.616 L 450,403.151 L 450,404.685 L 450,406.22 L 450.221,407.754 L 450.442,409.289 L 450.773,410.824 L 451.252,412.325 L 451.73,413.795 L 452.393,415.231 L 453.203,416.733 L 454.013,418.137 L 454.933,419.476 L 455.964,420.814 L 457.031,422.12 L 458.172,423.361 L 459.424,424.569 L 460.786,425.712 L 462.222,426.822 L 463.694,427.867 L 465.277,428.846 L 466.823,429.793 L 468.517,430.642 L 470.247,431.426 L 472.014,432.177"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 639.29 454.118 L 555.505,457.676 L 556.057,459.472 L 556.756,461.301 L 557.713,463.064 L 558.928,464.794 L 560.217,466.459 L 561.799,468.157 L 563.53,469.79 L 565.481,471.422 L 567.653,472.957 L 569.972,474.491 L 572.401,475.928 L 575.089,477.332 L 577.887,478.67 L 580.868,479.976 L 583.997,481.152 L 587.237,482.327 L 590.697,483.372 L 594.158,484.417 L 597.802,485.331 L 601.52,486.213 L 605.422,486.931 L 609.324,487.649 L 613.263,488.237 L 617.386,488.759 L 621.509,489.184 L 625.669,489.51 L 629.792,489.771 L 634.026,489.902 L 638.296,490 L 642.492,490 L 646.763,489.869 L 650.959,489.673 L 655.119,489.38 L 659.242,488.955 L 663.365,488.498 L 667.341,487.943 L 671.317,487.257 L 675.182,486.604 L 679.01,485.788 L 682.692,484.874 L 686.226,483.894 L 689.686,482.85 L 693.036,481.707 L 696.239,480.531 L 699.294,479.291 L 702.129,477.985 L 704.89,476.613 L 707.43,475.177 L 709.859,473.675 L 712.105,472.14 L 714.093,470.606 L 715.933,468.973 L 717.627,467.276 L 719.062,465.61 L 639.29,454.118z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 555.578 457.742 L 556.057,459.505 L 556.793,461.301 L 557.713,463.064 L 558.928,464.794 L 560.29,466.525 L 561.799,468.157 L 563.566,469.79 L 565.481,471.422 L 567.653,472.957 L 569.972,474.491 L 572.401,475.928 L 575.089,477.332 L 577.96,478.67 L 580.868,479.976 L 583.997,481.152 L 587.237,482.327 L 590.697,483.372 L 594.158,484.384 L 597.802,485.331 L 601.52,486.213 L 605.349,486.931 L 609.251,487.649 L 613.227,488.237 L 617.35,488.759 L 621.436,489.184 L 625.595,489.478 L 629.755,489.771 L 633.952,489.902 L 638.185,490 L 642.419,489.967 L 646.615,489.869 L 650.812,489.608 L 655.045,489.38 L 659.168,488.955 L 663.218,488.465 L 667.267,487.943 L 671.206,487.323 L 675.071,486.604 L 678.863,485.788 L 682.508,484.874 L 686.115,483.894 L 689.576,482.882 L 692.889,481.805 L 696.091,480.597 L 699.11,479.356 L 702.055,478.05 L 704.779,476.613 L 707.356,475.21 L 709.786,473.708 L 711.958,472.238 L 714.019,470.606 L 715.86,469.006 L 717.479,467.341 L 718.989,465.643"/>
</g>
<g>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 472.883 378.401 L 472.883,360.469"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 472.883 378.111 L 472.883,365.811"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 473.404 362.192 L 472.308,362.192 L 472.308,360 L 473.404,360 L 473.404,362.192z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 473.404 362.192 L 472.308,362.192 L 472.308,360 L 473.404,360 L 473.404,362.192"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 446.304 378.401 L 446.304,360.469"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 446.304 378.111 L 446.304,365.811"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 446.824 362.192 L 445.728,362.192 L 445.728,360 L 446.824,360 L 446.824,362.192z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 446.824 362.192 L 445.728,362.192 L 445.728,360 L 446.824,360 L 446.824,362.192"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 480.318 380.677 C 480.318,385.007 471.293,388.516 460.159,388.516 C 449.025,388.516 440,385.007 440,380.677 L 440,392.16 C 440,396.49 449.025,400 460.159,400 C 471.293,400 480.318,396.49 480.318,392.16 L 480.318,380.677z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 480.318 380.677 C 480.318,385.007 471.293,388.516 460.159,388.516 C 449.025,388.516 440,385.007 440,380.677 L 440,392.16 C 440,396.49 449.025,400 460.159,400 C 471.293,400 480.318,396.49 480.318,392.16 L 480.318,380.677"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 460.159 388.516 C 471.293,388.516 480.318,385.007 480.318,380.677 C 480.318,376.347 471.293,372.837 460.159,372.837 C 449.025,372.837 440,376.347 440,380.677 C 440,385.007 449.025,388.516 460.159,388.516z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 460.159 388.516 C 471.293,388.516 480.318,385.007 480.318,380.677 C 480.318,376.347 471.293,372.837 460.159,372.837 C 449.025,372.837 440,376.347 440,380.677 C 440,385.007 449.025,388.516 460.159,388.516"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 455.555 377.612 L 457.22,380.109 L 450.927,381.563 L 452.301,380.419 L 442.574,378.756 L 445.015,376.927 L 454.4,378.516 L 455.555,377.612z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 464.413 383.666 L 463.276,381.093 L 468.953,379.958 L 467.968,380.84 L 477.431,382.456 L 475.162,384.272 L 465.754,382.507 L 464.413,383.666z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 461.308 376.248 L 467.667,374.508 L 467.742,377.234 L 466.153,376.93 L 463.048,379.503 L 460.088,379.072 L 463.29,376.554 L 461.308,376.248z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 458.583 386.014 L 452.528,387.149 L 452.301,384.349 L 454.041,384.726 L 457.374,381.88 L 460.324,382.38 L 456.767,385.484 L 458.583,386.014z"/>
</g>
<text font-size="21.4489" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:italic;font-weight:normal" x="620" y="390">
<tspan x="620" y="390">Mesh</tspan>
</text>
<g>
<path style="fill: #c9c9b6; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 294.294 324.172 L 328.289,324.172 L 313.995,338.514 L 280,338.514 L 294.294,324.172z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 294.294 324.172 L 328.289,324.172 L 313.995,338.514 L 280,338.514 L 294.294,324.172"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 295.599 336.092 L 295.599,336.168 L 295.613,336.23 L 295.633,336.314 L 295.661,336.397 L 295.703,336.46 L 295.751,336.536 L 295.814,336.605 L 295.876,336.668 L 295.939,336.744 L 296.022,336.821 L 296.106,336.883 L 296.196,336.939 L 296.3,336.994 L 296.397,337.057 L 296.522,337.105 L 296.633,337.168 L 296.758,337.216 L 296.897,337.265 L 297.036,337.306 L 297.168,337.348 L 297.313,337.39 L 297.459,337.431 L 297.612,337.452 L 297.779,337.48 L 297.938,337.494 L 298.105,337.522 L 298.258,337.543 L 298.431,337.563 L 298.605,337.57 L 298.771,337.577 L 298.938,337.577"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 298.57 337.577 L 298.737,337.577 L 298.896,337.57 L 299.056,337.556 L 299.222,337.536 L 299.389,337.522 L 299.542,337.494 L 299.695,337.48 L 299.854,337.445 L 300,337.411 L 300.153,337.369 L 300.285,337.327 L 300.423,337.286 L 300.555,337.237 L 300.68,337.188 L 300.791,337.14 L 300.909,337.084 L 301.02,337.022 L 301.118,336.966 L 301.215,336.897 L 301.298,336.827 L 301.375,336.758 L 301.437,336.696 L 301.506,336.619 L 301.562,336.543 L 301.604,336.48 L 301.652,336.404 L 301.673,336.314 L 301.694,336.237 L 301.715,336.168 L 301.722,336.092"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 299.306 333.308 L 299.132,333.308 L 298.966,333.315 L 298.792,333.315 L 298.639,333.329 L 298.473,333.35 L 298.306,333.363 L 298.146,333.377 L 297.98,333.412 L 297.834,333.44 L 297.688,333.461 L 297.543,333.495 L 297.397,333.537 L 297.265,333.572 L 297.14,333.613 L 297.015,333.669 L 296.876,333.711 L 296.779,333.759 L 296.668,333.801 L 296.564,333.856 L 296.48,333.919 L 296.39,333.974 L 296.314,334.023 L 296.237,334.085 L 296.182,334.148 L 296.126,334.217 L 296.071,334.28 L 296.043,334.335 L 296.008,334.405 L 295.988,334.46 L 295.981,334.537 L 295.974,334.592"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 302.083 334.592 L 302.083,334.53 L 302.076,334.46 L 302.048,334.398 L 302.02,334.321 L 301.985,334.266 L 301.93,334.19 L 301.874,334.134 L 301.819,334.065 L 301.736,334.016 L 301.673,333.947 L 301.59,333.891 L 301.479,333.842 L 301.388,333.773 L 301.284,333.738 L 301.173,333.683 L 301.048,333.627 L 300.916,333.586 L 300.784,333.544 L 300.653,333.509 L 300.514,333.481 L 300.368,333.447 L 300.215,333.412 L 300.069,333.391 L 299.917,333.363 L 299.764,333.35 L 299.604,333.329 L 299.438,333.315 L 299.264,333.315 L 299.098,333.308 L 298.938,333.308"/>
<path style="fill: #a5a585; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 280 340 L 313.995,340 L 313.995,338.514 L 280,338.514 L 280,340z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 280 340 L 313.995,340 L 313.995,338.514 L 280,338.514 L 280,340"/>
<path style="fill: #a5a585; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 294.294 324.172 L 328.289,324.172 L 328.289,300.916 L 294.294,300.916 L 294.294,324.172z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 294.294 324.172 L 328.289,324.172 L 328.289,300.916 L 294.294,300.916 L 294.294,324.172"/>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 329.219 323.256 L 329.219,300 L 328.289,300.916 L 328.289,324.172 L 329.219,323.256z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 329.219 323.256 L 329.219,300 L 328.289,300.916 L 328.289,324.172 L 329.219,323.256"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 295.974 322.694 L 326.623,322.694 L 326.623,302.784 L 295.974,302.784 L 295.974,322.694z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 295.974 322.694 L 326.623,322.694 L 326.623,302.784 L 295.974,302.784 L 295.974,322.694"/>
<path style="fill: #93936c; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 295.974 325.297 L 324.568,325.297 L 317.14,332.746 L 288.546,332.746 L 295.974,325.297z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 295.974 325.297 L 324.568,325.297 L 317.14,332.746 L 288.546,332.746 L 295.974,325.297"/>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 300.423 335.62 L 300.423,335.578 L 300.417,335.536 L 300.41,335.495 L 300.389,335.446 L 300.382,335.404 L 300.354,335.37 L 300.34,335.328 L 300.305,335.3 L 300.271,335.259 L 300.25,335.217 L 300.215,335.182 L 300.174,335.148 L 300.132,335.106 L 300.083,335.071 L 300.042,335.05 L 299.993,335.016 L 299.938,334.988 L 299.875,334.967 L 299.826,334.932 L 299.764,334.918 L 299.701,334.891 L 299.646,334.877 L 299.577,334.856 L 299.514,334.842 L 299.438,334.828 L 299.375,334.807 L 299.306,334.8 L 299.243,334.8 L 299.174,334.793 L 299.091,334.793 L 299.035,334.793 L 299.035,334.793 L 298.959,334.793 L 298.882,334.793 L 298.82,334.8 L 298.75,334.8 L 298.688,334.807 L 298.612,334.828 L 298.549,334.842 L 298.48,334.856 L 298.417,334.877 L 298.355,334.891 L 298.299,334.918 L 298.23,334.932 L 298.181,334.967 L 298.126,334.988 L 298.07,335.016 L 298.022,335.05 L 297.98,335.071 L 297.931,335.106 L 297.89,335.148 L 297.855,335.182 L 297.806,335.217 L 297.785,335.259 L 297.744,335.3 L 297.723,335.328 L 297.702,335.37 L 297.681,335.404 L 297.667,335.446 L 297.661,335.495 L 297.647,335.536 L 297.633,335.578 L 297.633,335.62 L 297.633,335.62 L 297.633,335.668 L 297.647,335.71 L 297.661,335.751 L 297.667,335.793 L 297.681,335.835 L 297.702,335.869 L 297.723,335.918 L 297.744,335.953 L 297.785,335.994 L 297.806,336.022 L 297.855,336.064 L 297.89,336.099 L 297.931,336.14 L 297.98,336.168 L 298.022,336.196 L 298.07,336.23 L 298.126,336.258 L 298.181,336.279 L 298.23,336.314 L 298.299,336.328 L 298.355,336.355 L 298.417,336.369 L 298.48,336.39 L 298.549,336.404 L 298.612,336.418 L 298.688,336.432 L 298.75,336.446 L 298.82,336.446 L 298.882,336.446 L 298.959,336.453 L 299.035,336.453 L 299.035,336.453 L 299.091,336.453 L 299.174,336.446 L 299.243,336.446 L 299.306,336.446 L 299.375,336.432 L 299.438,336.418 L 299.514,336.404 L 299.577,336.39 L 299.646,336.369 L 299.701,336.355 L 299.764,336.328 L 299.826,336.314 L 299.875,336.279 L 299.938,336.258 L 299.993,336.23 L 300.042,336.196 L 300.083,336.168 L 300.132,336.14 L 300.174,336.099 L 300.215,336.064 L 300.25,336.022 L 300.271,335.994 L 300.305,335.953 L 300.34,335.918 L 300.354,335.869 L 300.382,335.835 L 300.389,335.793 L 300.41,335.751 L 300.417,335.71 L 300.423,335.668 L 300.423,335.62z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 300.243 335.536 L 300.243,335.495 L 300.236,335.453 L 300.236,335.418 L 300.215,335.39 L 300.201,335.335 L 300.194,335.314 L 300.16,335.272 L 300.132,335.231 L 300.111,335.203 L 300.083,335.175 L 300.042,335.148 L 300.007,335.099 L 299.965,335.071 L 299.924,335.05 L 299.889,335.016 L 299.833,334.988 L 299.792,334.974 L 299.743,334.939 L 299.695,334.925 L 299.632,334.898 L 299.577,334.884 L 299.514,334.87 L 299.459,334.849 L 299.396,334.835 L 299.334,334.828 L 299.264,334.807 L 299.209,334.8 L 299.132,334.793 L 299.077,334.793 L 299.007,334.793 L 298.945,334.793 L 298.945,334.793 L 298.875,334.793 L 298.813,334.793 L 298.743,334.793 L 298.688,334.8 L 298.619,334.807 L 298.563,334.828 L 298.487,334.835 L 298.431,334.849 L 298.383,334.87 L 298.313,334.884 L 298.258,334.898 L 298.188,334.925 L 298.153,334.939 L 298.091,334.974 L 298.049,334.988 L 298.001,335.016 L 297.959,335.05 L 297.917,335.071 L 297.876,335.099 L 297.841,335.148 L 297.806,335.175 L 297.779,335.203 L 297.744,335.231 L 297.73,335.272 L 297.702,335.314 L 297.688,335.335 L 297.674,335.39 L 297.661,335.418 L 297.654,335.453 L 297.647,335.495 L 297.647,335.536 L 297.647,335.536 L 297.647,335.571 L 297.654,335.613 L 297.661,335.654 L 297.674,335.675 L 297.688,335.717 L 297.702,335.758 L 297.73,335.793 L 297.744,335.828 L 297.779,335.869 L 297.806,335.89 L 297.841,335.925 L 297.876,335.96 L 297.917,335.994 L 297.959,336.015 L 298.001,336.05 L 298.049,336.071 L 298.091,336.099 L 298.153,336.126 L 298.188,336.14 L 298.258,336.168 L 298.313,336.189 L 298.383,336.196 L 298.431,336.217 L 298.487,336.23 L 298.563,336.237 L 298.619,336.258 L 298.688,336.272 L 298.743,336.272 L 298.813,336.272 L 298.875,336.272 L 298.945,336.272 L 298.945,336.272 L 299.007,336.272 L 299.077,336.272 L 299.132,336.272 L 299.209,336.272 L 299.264,336.258 L 299.334,336.237 L 299.396,336.23 L 299.459,336.217 L 299.514,336.196 L 299.577,336.189 L 299.632,336.168 L 299.695,336.14 L 299.743,336.126 L 299.792,336.099 L 299.833,336.071 L 299.889,336.05 L 299.924,336.015 L 299.965,335.994 L 300.007,335.96 L 300.042,335.925 L 300.083,335.89 L 300.111,335.869 L 300.132,335.828 L 300.16,335.793 L 300.194,335.758 L 300.201,335.717 L 300.215,335.675 L 300.236,335.654 L 300.236,335.613 L 300.243,335.571 L 300.243,335.536"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #626248" d="M 295.793 336.272 L 295.793,336.355 L 295.807,336.418 L 295.835,336.494 L 295.856,336.578 L 295.897,336.647 L 295.939,336.709 L 296.001,336.786 L 296.064,336.862 L 296.133,336.925 L 296.203,336.994 L 296.293,337.057 L 296.376,337.126 L 296.487,337.182 L 296.591,337.237 L 296.703,337.286 L 296.821,337.348 L 296.952,337.397 L 297.07,337.445 L 297.223,337.487 L 297.362,337.529 L 297.508,337.577 L 297.654,337.612 L 297.806,337.633 L 297.959,337.661 L 298.126,337.688 L 298.285,337.702 L 298.445,337.73 L 298.612,337.744 L 298.785,337.751 L 298.952,337.751 L 299.118,337.751"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #626248" d="M 298.743 337.751 L 298.917,337.751 L 299.077,337.751 L 299.25,337.737 L 299.403,337.716 L 299.563,337.702 L 299.729,337.688 L 299.875,337.661 L 300.035,337.626 L 300.174,337.591 L 300.326,337.563 L 300.472,337.522 L 300.604,337.48 L 300.736,337.431 L 300.861,337.369 L 300.986,337.32 L 301.09,337.265 L 301.201,337.209 L 301.298,337.14 L 301.388,337.084 L 301.479,337.008 L 301.555,336.952 L 301.631,336.883 L 301.694,336.8 L 301.736,336.723 L 301.798,336.661 L 301.826,336.578 L 301.86,336.501 L 301.888,336.418 L 301.888,336.355 L 301.902,336.272"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #626248" d="M 299.486 333.488 L 299.327,333.488 L 299.16,333.495 L 298.993,333.495 L 298.827,333.509 L 298.653,333.53 L 298.487,333.537 L 298.341,333.565 L 298.174,333.586 L 298.022,333.627 L 297.876,333.641 L 297.73,333.683 L 297.591,333.711 L 297.452,333.759 L 297.327,333.801 L 297.202,333.842 L 297.07,333.884 L 296.966,333.933 L 296.855,333.981 L 296.758,334.044 L 296.668,334.099 L 296.585,334.148 L 296.501,334.217 L 296.418,334.266 L 296.369,334.321 L 296.314,334.398 L 296.265,334.453 L 296.224,334.523 L 296.196,334.578 L 296.175,334.641 L 296.168,334.717 L 296.161,334.787"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #626248" d="M 302.277 334.787 L 302.263,334.71 L 302.256,334.641 L 302.242,334.578 L 302.208,334.509 L 302.166,334.446 L 302.117,334.377 L 302.062,334.321 L 301.999,334.259 L 301.93,334.19 L 301.847,334.134 L 301.763,334.072 L 301.673,334.016 L 301.562,333.967 L 301.465,333.919 L 301.347,333.87 L 301.236,333.815 L 301.111,333.773 L 300.979,333.738 L 300.833,333.697 L 300.694,333.669 L 300.555,333.627 L 300.41,333.599 L 300.257,333.572 L 300.09,333.544 L 299.944,333.53 L 299.785,333.509 L 299.618,333.495 L 299.445,333.495 L 299.292,333.488 L 299.118,333.488"/>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 328.289 325.477 L 313.995,339.82 L 313.995,338.514 L 328.289,324.172 L 328.289,325.477z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 328.289 325.477 L 313.995,339.82 L 313.995,338.514 L 328.289,324.172 L 328.289,325.477"/>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 323.464 323.075 L 323.464,323.429 L 326.248,323.429 L 326.248,323.075 L 323.464,323.075z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 323.464 323.075 L 323.464,323.429 L 326.248,323.429 L 326.248,323.075 L 323.464,323.075"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #000000" d="M 322.7 327.157 L 294.294,327.157"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #000000" d="M 320.854 329.025 L 292.447,329.025"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #000000" d="M 319 330.885 L 290.587,330.885"/>
<path style="fill: #c9c9b6; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 295.224 300 L 329.219,300 L 328.289,300.916 L 294.294,300.916 L 295.224,300z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 295.224 300 L 329.219,300 L 328.289,300.916 L 294.294,300.916 L 295.224,300"/>
</g>
<g>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 260.594 397.19 C 260.943,395.941 262.38,389.684 262.447,388.811 C 262.514,387.938 262.192,386.851 261.722,386.623 C 261.749,386.314 261.749,386.139 261.749,386.139 C 261.641,386.099 261.521,386.059 261.413,386.005 L 261.453,386.018 C 261.453,386.018 261.776,384.622 261.977,383.655 C 262.34,381.802 262.38,380.862 262.38,380.862 C 262.367,380.607 262.299,380.379 262.071,380.312 L 260.984,380.016 C 260.755,379.949 260.594,380.097 260.446,380.325 C 260.446,380.325 260.017,381.184 259.426,382.957 C 259.104,383.883 258.808,385.065 258.808,385.065 L 258.822,385.065 C 258.177,384.85 257.519,384.662 256.861,384.474 C 255.169,384.004 253.491,383.655 251.799,383.4 C 251.799,383.4 251.719,383.548 251.571,383.83 C 251.061,383.776 250.228,384.555 249.839,385.334 C 249.449,386.112 247.476,392.222 247.126,393.471 C 246.777,394.719 246.119,397.915 245.824,399.499 C 245.529,401.084 245.26,403.85 244.24,407.529 C 243.635,409.704 242.669,412.954 242.158,414.296 C 242.024,414.659 240.963,416.445 242.507,417.062 C 244.025,417.667 246.294,418.311 247.435,418.633 C 248.577,418.942 250.846,419.546 252.457,419.815 C 254.095,420.084 254.109,417.989 254.176,417.613 C 254.431,416.203 255.263,412.913 255.854,410.738 C 256.875,407.046 258.07,404.548 258.634,403.031 C 259.184,401.514 260.245,398.439 260.594,397.19z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 260.594 397.19 C 260.943,395.941 262.38,389.684 262.447,388.811 C 262.514,387.938 262.192,386.851 261.722,386.623 C 261.749,386.314 261.749,386.139 261.749,386.139 C 261.641,386.099 261.521,386.059 261.413,386.005 L 261.453,386.018 C 261.453,386.018 261.776,384.622 261.977,383.655 C 262.34,381.802 262.38,380.862 262.38,380.862 C 262.367,380.607 262.299,380.379 262.071,380.312 L 260.984,380.016 C 260.755,379.949 260.594,380.097 260.446,380.325 C 260.446,380.325 260.017,381.184 259.426,382.957 C 259.104,383.883 258.808,385.065 258.808,385.065 L 258.822,385.065 C 258.177,384.85 257.519,384.662 256.861,384.474 C 255.169,384.004 253.491,383.655 251.799,383.4 C 251.799,383.4 251.719,383.548 251.571,383.83 L 251.571,383.83 C 251.061,383.776 250.228,384.555 249.839,385.334 C 249.449,386.112 247.476,392.222 247.126,393.471 C 246.777,394.719 246.119,397.915 245.824,399.499 C 245.529,401.084 245.26,403.85 244.24,407.529 C 243.635,409.704 242.669,412.954 242.158,414.296 C 242.024,414.659 240.963,416.445 242.507,417.062 C 244.025,417.667 246.294,418.311 247.435,418.633 C 248.577,418.942 250.846,419.546 252.457,419.815 C 254.095,420.084 254.109,417.989 254.176,417.613 C 254.431,416.203 255.263,412.913 255.854,410.738 C 256.875,407.046 258.07,404.548 258.634,403.031 C 259.184,401.514 260.245,398.439 260.594,397.19"/>
<path style="fill: #b7b79d; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 258.916 397.351 C 259.265,396.102 260.702,389.845 260.769,388.986 C 260.836,388.113 260.514,387.012 260.044,386.797 C 260.07,386.488 260.07,386.314 260.07,386.314 C 259.963,386.26 259.842,386.22 259.735,386.179 L 259.762,386.193 C 259.762,386.193 260.097,384.796 260.299,383.83 C 260.661,381.963 260.688,381.023 260.688,381.023 C 260.688,380.768 260.621,380.553 260.393,380.486 L 259.305,380.191 C 259.077,380.124 258.916,380.271 258.768,380.5 C 258.768,380.5 258.338,381.359 257.748,383.118 C 257.425,384.058 257.13,385.226 257.13,385.226 L 257.143,385.24 C 256.499,385.025 255.841,384.823 255.183,384.649 C 253.491,384.179 251.799,383.816 250.121,383.561 C 250.121,383.561 250.04,383.722 249.893,383.991 C 249.382,383.951 248.55,384.716 248.16,385.495 C 247.771,386.273 245.797,392.383 245.448,393.645 C 245.099,394.894 244.441,398.076 244.146,399.661 C 243.85,401.245 243.582,404.011 242.561,407.704 C 241.957,409.879 240.99,413.115 240.48,414.471 C 240.346,414.82 239.285,416.619 240.829,417.237 C 242.346,417.828 244.616,418.486 245.757,418.795 C 246.898,419.117 249.167,419.708 250.779,419.976 C 252.417,420.245 252.43,418.163 252.497,417.788 C 252.753,416.364 253.585,413.088 254.176,410.913 C 255.196,407.22 256.391,404.709 256.955,403.192 C 257.506,401.688 258.567,398.613 258.916,397.351z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 258.916 397.351 C 259.265,396.102 260.702,389.845 260.769,388.986 C 260.836,388.113 260.514,387.012 260.044,386.797 C 260.07,386.488 260.07,386.314 260.07,386.314 C 259.963,386.26 259.842,386.22 259.735,386.179 L 259.762,386.193 C 259.762,386.193 260.097,384.796 260.299,383.83 C 260.661,381.963 260.688,381.023 260.688,381.023 C 260.688,380.768 260.621,380.553 260.393,380.486 L 259.305,380.191 C 259.077,380.124 258.916,380.271 258.768,380.5 C 258.768,380.5 258.338,381.359 257.748,383.118 C 257.425,384.058 257.13,385.226 257.13,385.226 L 257.143,385.24 C 256.499,385.025 255.841,384.823 255.183,384.649 C 253.491,384.179 251.799,383.816 250.121,383.561 C 250.121,383.561 250.04,383.722 249.893,383.991 L 249.893,383.991 C 249.382,383.951 248.55,384.716 248.16,385.495 C 247.771,386.273 245.797,392.383 245.448,393.645 C 245.099,394.894 244.441,398.076 244.146,399.661 C 243.85,401.245 243.582,404.011 242.561,407.704 C 241.957,409.879 240.99,413.115 240.48,414.471 C 240.346,414.82 239.285,416.619 240.829,417.237 C 242.346,417.828 244.616,418.486 245.757,418.795 C 246.898,419.117 249.167,419.708 250.779,419.976 C 252.417,420.245 252.43,418.163 252.497,417.788 C 252.753,416.364 253.585,413.088 254.176,410.913 C 255.196,407.22 256.391,404.709 256.955,403.192 C 257.506,401.688 258.567,398.613 258.916,397.351"/>
<path style="fill: #c9c9b6; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.8; stroke: #ecece7" fill-rule="evenodd" d="M 250.336 383.601 C 250.336,383.601 248.12,388.126 246.845,392.719 C 245.341,398.184 245.126,399.996 245.354,402.534 C 245.394,403.058 245.918,403.702 246.495,403.863 C 246.724,403.917 246.992,403.998 247.1,404.024 C 247.22,404.065 247.65,404.159 247.999,404.441 C 248.362,404.723 248.442,404.79 248.657,404.897 C 248.859,405.018 248.899,405.099 249.49,405.26 C 250.08,405.421 250.148,405.381 250.389,405.381 C 250.631,405.394 250.738,405.381 251.195,405.327 C 251.638,405.26 252.054,405.394 252.175,405.421 C 252.283,405.461 252.551,405.528 252.779,405.595 C 253.357,405.757 254.136,405.475 254.444,405.045 C 255.935,402.991 256.687,401.312 258.191,395.847 C 259.453,391.255 259.869,386.233 259.869,386.233 L 250.336,383.601z"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 253.021 402.561 C 252.632,403.998 251.141,404.83 249.718,404.441 C 248.281,404.051 247.449,402.561 247.838,401.138 C 248.241,399.701 249.718,398.868 251.141,399.258 C 252.578,399.661 253.41,401.138 253.021,402.561z"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 248.066 398.157 C 248.429,398.264 248.711,398.412 248.845,398.492 C 248.979,398.586 249.02,398.707 248.899,398.788 C 248.778,398.868 248.563,399.029 248.442,399.137 C 248.295,399.258 248.201,399.285 247.999,399.164 C 247.637,398.962 246.871,398.412 246.683,398.157 C 246.576,398.022 246.67,397.969 246.871,397.955 C 247.14,397.942 247.677,398.049 248.066,398.157z"/>
<path style="fill: #ff0000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 246.16 400.99 C 246.361,401.057 246.845,401.299 246.979,401.406 C 247.126,401.5 247.341,401.728 247.328,401.997 C 247.301,402.306 247.328,402.964 247.462,403.179 C 247.637,403.46 247.61,403.581 247.355,403.541 C 247.153,403.501 246.63,403.313 246.482,403.232 C 246.334,403.165 246.119,403.031 246.052,402.829 C 245.918,402.413 245.878,401.554 245.958,401.124 C 245.985,400.95 246.066,400.95 246.16,400.99z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 253.021 402.561 C 252.632,403.998 251.141,404.83 249.718,404.441 C 248.281,404.051 247.449,402.561 247.838,401.138 C 248.241,399.701 249.718,398.868 251.141,399.258 C 252.578,399.661 253.41,401.138 253.021,402.561"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 248.066 398.157 C 248.429,398.264 248.711,398.412 248.845,398.492 C 248.979,398.586 249.02,398.707 248.899,398.788 C 248.778,398.868 248.563,399.029 248.442,399.137 C 248.295,399.258 248.201,399.285 247.999,399.164 C 247.637,398.962 246.871,398.412 246.683,398.157 C 246.576,398.022 246.67,397.969 246.871,397.955 C 247.14,397.942 247.677,398.049 248.066,398.157"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.16 400.99 C 246.361,401.057 246.845,401.299 246.979,401.406 C 247.126,401.5 247.341,401.728 247.328,401.997 C 247.301,402.306 247.328,402.964 247.462,403.179 C 247.637,403.46 247.61,403.581 247.355,403.541 C 247.153,403.501 246.63,403.313 246.482,403.232 C 246.334,403.165 246.119,403.031 246.052,402.829 C 245.918,402.413 245.878,401.554 245.958,401.124 C 245.985,400.95 246.066,400.95 246.16,400.99"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 254.35 399.889 C 253.988,399.795 253.679,399.781 253.518,399.781 C 253.357,399.795 253.263,399.875 253.316,399.996 C 253.384,400.13 253.491,400.386 253.531,400.533 C 253.598,400.708 253.666,400.788 253.894,400.802 C 254.31,400.802 255.25,400.721 255.545,400.6 C 255.693,400.533 255.639,400.439 255.478,400.332 C 255.25,400.184 254.74,399.996 254.35,399.889z"/>
<path style="fill: #00ff00; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 254.538 403.299 C 254.337,403.246 253.786,403.219 253.612,403.232 C 253.451,403.246 253.142,403.326 253.021,403.568 C 252.887,403.85 252.524,404.4 252.296,404.521 C 252.001,404.669 251.96,404.79 252.202,404.87 C 252.39,404.951 252.941,405.058 253.102,405.072 C 253.276,405.085 253.518,405.085 253.679,404.938 C 254.028,404.656 254.485,403.93 254.646,403.528 C 254.713,403.366 254.646,403.326 254.538,403.299z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.35 399.889 C 253.988,399.795 253.679,399.781 253.518,399.781 C 253.357,399.795 253.263,399.875 253.316,399.996 C 253.384,400.13 253.491,400.386 253.531,400.533 C 253.598,400.708 253.666,400.788 253.894,400.802 C 254.31,400.802 255.25,400.721 255.545,400.6 C 255.693,400.533 255.639,400.439 255.478,400.332 C 255.25,400.184 254.74,399.996 254.35,399.889"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.538 403.299 C 254.337,403.246 253.786,403.219 253.612,403.232 C 253.451,403.246 253.142,403.326 253.021,403.568 C 252.887,403.85 252.524,404.4 252.296,404.521 C 252.001,404.669 251.96,404.79 252.202,404.87 C 252.39,404.951 252.941,405.058 253.102,405.072 C 253.276,405.085 253.518,405.085 253.679,404.938 C 254.028,404.656 254.485,403.93 254.646,403.528 C 254.713,403.366 254.646,403.326 254.538,403.299"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.095 387.791 L 254.981,384.582"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.391 387.871 L 255.277,384.662"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 260.688 380.889 C 260.688,380.889 260.178,380.741 259.748,380.634 C 259.372,380.527 258.835,380.379 258.835,380.379"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 258.916 397.351 C 259.265,396.102 260.702,389.845 260.769,388.986 C 260.836,388.113 260.514,387.012 260.044,386.797 C 260.07,386.488 260.07,386.314 260.07,386.314 C 259.963,386.26 259.842,386.22 259.735,386.179 L 259.762,386.193 C 259.762,386.193 260.097,384.796 260.299,383.83 C 260.661,381.963 260.688,381.023 260.688,381.023 C 260.688,380.768 260.621,380.553 260.393,380.486 L 259.305,380.191 C 259.077,380.124 258.916,380.271 258.768,380.5 C 258.768,380.5 258.338,381.359 257.748,383.118 C 257.425,384.058 257.13,385.226 257.13,385.226 L 257.143,385.24 C 256.499,385.025 255.841,384.823 255.183,384.649 C 253.491,384.179 251.799,383.816 250.121,383.561 C 250.121,383.561 250.04,383.722 249.893,383.991 L 249.893,383.991 C 249.382,383.951 248.55,384.716 248.16,385.495 C 247.771,386.273 245.797,392.383 245.448,393.645 C 245.099,394.894 244.441,398.076 244.146,399.661 C 243.85,401.245 243.582,404.011 242.561,407.704 C 241.957,409.879 240.99,413.115 240.48,414.471 C 240.346,414.82 239.285,416.619 240.829,417.237 C 242.346,417.828 244.616,418.486 245.757,418.795 C 246.898,419.117 249.167,419.708 250.779,419.976 C 252.417,420.245 252.43,418.163 252.497,417.788 C 252.753,416.364 253.585,413.088 254.176,410.913 C 255.196,407.22 256.391,404.709 256.955,403.192 C 257.506,401.688 258.567,398.613 258.916,397.351"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 247.1 406.133 C 246.925,406.764 246.267,407.14 245.623,406.965 C 244.978,406.79 244.602,406.133 244.777,405.488 C 244.965,404.844 245.623,404.468 246.267,404.642 C 246.912,404.817 247.288,405.488 247.1,406.133z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 250.148 407.408 C 249.973,408.053 249.302,408.429 248.657,408.254 C 248.026,408.08 247.65,407.408 247.825,406.777 C 247.999,406.133 248.657,405.757 249.302,405.931 C 249.946,406.106 250.322,406.777 250.148,407.408z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 253.424 407.878 C 253.249,408.509 252.578,408.885 251.933,408.711 C 251.302,408.536 250.926,407.878 251.101,407.234 C 251.276,406.589 251.933,406.213 252.578,406.388 C 253.223,406.562 253.598,407.234 253.424,407.878z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 246.375 408.778 C 246.2,409.422 245.529,409.798 244.898,409.61 C 244.253,409.436 243.877,408.778 244.052,408.133 C 244.226,407.489 244.898,407.113 245.529,407.287 C 246.173,407.475 246.549,408.133 246.375,408.778z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 249.409 410.067 C 249.235,410.711 248.577,411.087 247.932,410.899 C 247.288,410.725 246.912,410.067 247.086,409.422 C 247.274,408.778 247.932,408.402 248.577,408.576 C 249.208,408.764 249.597,409.422 249.409,410.067z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 252.699 410.523 C 252.511,411.154 251.853,411.544 251.208,411.356 C 250.564,411.181 250.188,410.523 250.362,409.879 C 250.55,409.234 251.208,408.858 251.853,409.033 C 252.497,409.221 252.873,409.879 252.699,410.523z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 245.649 411.423 C 245.475,412.067 244.804,412.443 244.159,412.269 C 243.528,412.094 243.139,411.423 243.327,410.778 C 243.501,410.147 244.159,409.758 244.804,409.946 C 245.448,410.12 245.824,410.778 245.649,411.423z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 248.684 412.712 C 248.509,413.356 247.838,413.732 247.207,413.558 C 246.563,413.383 246.187,412.712 246.361,412.067 C 246.536,411.423 247.207,411.06 247.838,411.235 C 248.483,411.409 248.859,412.067 248.684,412.712z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 251.96 413.168 C 251.786,413.813 251.114,414.189 250.483,414.001 C 249.839,413.826 249.463,413.168 249.637,412.524 C 249.812,411.879 250.483,411.503 251.114,411.691 C 251.759,411.866 252.135,412.524 251.96,413.168z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 244.911 414.068 C 244.736,414.713 244.065,415.089 243.434,414.914 C 242.789,414.739 242.413,414.082 242.588,413.437 C 242.763,412.793 243.434,412.417 244.065,412.591 C 244.71,412.766 245.086,413.437 244.911,414.082 L 244.911,414.068z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 247.959 415.357 C 247.771,416.002 247.113,416.378 246.469,416.203 C 245.824,416.029 245.448,415.357 245.636,414.726 C 245.811,414.082 246.469,413.706 247.113,413.88 C 247.758,414.055 248.134,414.726 247.959,415.357z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 251.235 415.814 C 251.047,416.458 250.389,416.834 249.745,416.66 C 249.1,416.485 248.724,415.814 248.912,415.169 C 249.087,414.538 249.745,414.162 250.389,414.337 C 251.034,414.511 251.41,415.169 251.235,415.814z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.428 417.156 C 246.415,417.21 246.307,417.237 246.187,417.21 C 246.079,417.17 245.999,417.103 246.025,417.036 C 246.039,416.982 246.146,416.955 246.254,416.982 C 246.361,417.009 246.442,417.089 246.428,417.143"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.025 417.036 L 245.636,418.419"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.079 417.156 L 245.73,418.445"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.428 417.156 L 246.039,418.526"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.307 417.21 L 245.958,418.499"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 248.751 397.19 L 248.483,398.143"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 248.859 397.217 L 248.59,398.184"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.27 398.707 L 254.001,399.674"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.162 398.68 L 253.894,399.647"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 259.762 386.193 C 259.762,386.193 260.097,384.796 260.299,383.83 C 260.661,381.963 260.688,381.023 260.688,381.023 C 260.688,380.768 260.621,380.553 260.393,380.486 L 259.305,380.191 C 259.077,380.124 258.916,380.271 258.768,380.5 C 258.768,380.5 258.338,381.359 257.748,383.118 C 257.425,384.058 257.13,385.226 257.13,385.226"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 259.896 385.683 C 259.023,385.347 258.15,385.038 257.251,384.756"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 249.033 385.871 C 250.819,386.126 252.739,386.529 254.525,387.025 C 256.311,387.522 258.164,388.153 259.829,388.852"/>
<path style="fill: #b7b79d; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" fill-rule="evenodd" d="M 256.7 398.922 C 256.633,399.164 256.391,399.298 256.15,399.231 L 246.858,396.666 C 246.616,396.599 246.482,396.357 246.549,396.129 L 248.174,390.248 C 248.241,390.006 248.483,389.872 248.711,389.939 L 258.016,392.504 C 258.258,392.571 258.392,392.813 258.325,393.054 L 256.7,398.935 L 256.7,398.922z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.095 387.791 L 254.981,384.582"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.391 387.871 L 255.277,384.662"/>
</g>
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="327.424" y1="326.359" x2="444.266" y2="375.437"/>
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="259.522" y1="401.737" x2="439.089" y2="384.112"/>
<g>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 290.594 477.19 C 290.943,475.941 292.38,469.684 292.447,468.811 C 292.514,467.938 292.192,466.851 291.722,466.623 C 291.749,466.314 291.749,466.139 291.749,466.139 C 291.641,466.099 291.521,466.059 291.413,466.005 L 291.453,466.018 C 291.453,466.018 291.776,464.622 291.977,463.655 C 292.34,461.802 292.38,460.862 292.38,460.862 C 292.367,460.607 292.299,460.379 292.071,460.312 L 290.984,460.016 C 290.755,459.949 290.594,460.097 290.446,460.325 C 290.446,460.325 290.017,461.184 289.426,462.957 C 289.104,463.883 288.808,465.065 288.808,465.065 L 288.822,465.065 C 288.177,464.85 287.519,464.662 286.861,464.474 C 285.169,464.004 283.491,463.655 281.799,463.4 C 281.799,463.4 281.719,463.548 281.571,463.83 C 281.061,463.776 280.228,464.555 279.839,465.334 C 279.449,466.112 277.476,472.222 277.126,473.471 C 276.777,474.719 276.119,477.915 275.824,479.499 C 275.529,481.084 275.26,483.85 274.24,487.529 C 273.635,489.704 272.669,492.954 272.158,494.296 C 272.024,494.659 270.963,496.445 272.507,497.062 C 274.025,497.667 276.294,498.311 277.435,498.633 C 278.577,498.942 280.846,499.546 282.457,499.815 C 284.095,500.084 284.109,497.989 284.176,497.613 C 284.431,496.203 285.263,492.913 285.854,490.738 C 286.875,487.046 288.07,484.548 288.634,483.031 C 289.184,481.514 290.245,478.439 290.594,477.19z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 290.594 477.19 C 290.943,475.941 292.38,469.684 292.447,468.811 C 292.514,467.938 292.192,466.851 291.722,466.623 C 291.749,466.314 291.749,466.139 291.749,466.139 C 291.641,466.099 291.521,466.059 291.413,466.005 L 291.453,466.018 C 291.453,466.018 291.776,464.622 291.977,463.655 C 292.34,461.802 292.38,460.862 292.38,460.862 C 292.367,460.607 292.299,460.379 292.071,460.312 L 290.984,460.016 C 290.755,459.949 290.594,460.097 290.446,460.325 C 290.446,460.325 290.017,461.184 289.426,462.957 C 289.104,463.883 288.808,465.065 288.808,465.065 L 288.822,465.065 C 288.177,464.85 287.519,464.662 286.861,464.474 C 285.169,464.004 283.491,463.655 281.799,463.4 C 281.799,463.4 281.719,463.548 281.571,463.83 L 281.571,463.83 C 281.061,463.776 280.228,464.555 279.839,465.334 C 279.449,466.112 277.476,472.222 277.126,473.471 C 276.777,474.719 276.119,477.915 275.824,479.499 C 275.529,481.084 275.26,483.85 274.24,487.529 C 273.635,489.704 272.669,492.954 272.158,494.296 C 272.024,494.659 270.963,496.445 272.507,497.062 C 274.025,497.667 276.294,498.311 277.435,498.633 C 278.577,498.942 280.846,499.546 282.457,499.815 C 284.095,500.084 284.109,497.989 284.176,497.613 C 284.431,496.203 285.263,492.913 285.854,490.738 C 286.875,487.046 288.07,484.548 288.634,483.031 C 289.184,481.514 290.245,478.439 290.594,477.19"/>
<path style="fill: #b7b79d; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 288.916 477.351 C 289.265,476.102 290.702,469.845 290.769,468.986 C 290.836,468.113 290.514,467.012 290.044,466.797 C 290.07,466.488 290.07,466.314 290.07,466.314 C 289.963,466.26 289.842,466.22 289.735,466.179 L 289.762,466.193 C 289.762,466.193 290.097,464.796 290.299,463.83 C 290.661,461.963 290.688,461.023 290.688,461.023 C 290.688,460.768 290.621,460.553 290.393,460.486 L 289.305,460.191 C 289.077,460.124 288.916,460.271 288.768,460.5 C 288.768,460.5 288.338,461.359 287.748,463.118 C 287.425,464.058 287.13,465.226 287.13,465.226 L 287.143,465.24 C 286.499,465.025 285.841,464.823 285.183,464.649 C 283.491,464.179 281.799,463.816 280.121,463.561 C 280.121,463.561 280.04,463.722 279.893,463.991 C 279.382,463.951 278.55,464.716 278.16,465.495 C 277.771,466.273 275.797,472.383 275.448,473.645 C 275.099,474.894 274.441,478.076 274.146,479.661 C 273.85,481.245 273.582,484.011 272.561,487.704 C 271.957,489.879 270.99,493.115 270.48,494.471 C 270.346,494.82 269.285,496.619 270.829,497.237 C 272.346,497.828 274.616,498.486 275.757,498.795 C 276.898,499.117 279.167,499.708 280.779,499.976 C 282.417,500.245 282.43,498.163 282.497,497.788 C 282.753,496.364 283.585,493.088 284.176,490.913 C 285.196,487.22 286.391,484.709 286.955,483.192 C 287.506,481.688 288.567,478.613 288.916,477.351z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 288.916 477.351 C 289.265,476.102 290.702,469.845 290.769,468.986 C 290.836,468.113 290.514,467.012 290.044,466.797 C 290.07,466.488 290.07,466.314 290.07,466.314 C 289.963,466.26 289.842,466.22 289.735,466.179 L 289.762,466.193 C 289.762,466.193 290.097,464.796 290.299,463.83 C 290.661,461.963 290.688,461.023 290.688,461.023 C 290.688,460.768 290.621,460.553 290.393,460.486 L 289.305,460.191 C 289.077,460.124 288.916,460.271 288.768,460.5 C 288.768,460.5 288.338,461.359 287.748,463.118 C 287.425,464.058 287.13,465.226 287.13,465.226 L 287.143,465.24 C 286.499,465.025 285.841,464.823 285.183,464.649 C 283.491,464.179 281.799,463.816 280.121,463.561 C 280.121,463.561 280.04,463.722 279.893,463.991 L 279.893,463.991 C 279.382,463.951 278.55,464.716 278.16,465.495 C 277.771,466.273 275.797,472.383 275.448,473.645 C 275.099,474.894 274.441,478.076 274.146,479.661 C 273.85,481.245 273.582,484.011 272.561,487.704 C 271.957,489.879 270.99,493.115 270.48,494.471 C 270.346,494.82 269.285,496.619 270.829,497.237 C 272.346,497.828 274.616,498.486 275.757,498.795 C 276.898,499.117 279.167,499.708 280.779,499.976 C 282.417,500.245 282.43,498.163 282.497,497.788 C 282.753,496.364 283.585,493.088 284.176,490.913 C 285.196,487.22 286.391,484.709 286.955,483.192 C 287.506,481.688 288.567,478.613 288.916,477.351"/>
<path style="fill: #c9c9b6; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.8; stroke: #ecece7" fill-rule="evenodd" d="M 280.336 463.601 C 280.336,463.601 278.12,468.126 276.845,472.719 C 275.341,478.184 275.126,479.996 275.354,482.534 C 275.394,483.058 275.918,483.702 276.495,483.863 C 276.724,483.917 276.992,483.998 277.1,484.024 C 277.22,484.065 277.65,484.159 277.999,484.441 C 278.362,484.723 278.442,484.79 278.657,484.897 C 278.859,485.018 278.899,485.099 279.49,485.26 C 280.08,485.421 280.148,485.381 280.389,485.381 C 280.631,485.394 280.738,485.381 281.195,485.327 C 281.638,485.26 282.054,485.394 282.175,485.421 C 282.283,485.461 282.551,485.528 282.779,485.595 C 283.357,485.757 284.136,485.475 284.444,485.045 C 285.935,482.991 286.687,481.312 288.191,475.847 C 289.453,471.255 289.869,466.233 289.869,466.233 L 280.336,463.601z"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 283.021 482.561 C 282.632,483.998 281.141,484.83 279.718,484.441 C 278.281,484.051 277.449,482.561 277.838,481.138 C 278.241,479.701 279.718,478.868 281.141,479.258 C 282.578,479.661 283.41,481.138 283.021,482.561z"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 278.066 478.157 C 278.429,478.264 278.711,478.412 278.845,478.492 C 278.979,478.586 279.02,478.707 278.899,478.788 C 278.778,478.868 278.563,479.029 278.442,479.137 C 278.295,479.258 278.201,479.285 277.999,479.164 C 277.637,478.962 276.871,478.412 276.683,478.157 C 276.576,478.022 276.67,477.969 276.871,477.955 C 277.14,477.942 277.677,478.049 278.066,478.157z"/>
<path style="fill: #ff0000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 276.16 480.99 C 276.361,481.057 276.845,481.299 276.979,481.406 C 277.126,481.5 277.341,481.728 277.328,481.997 C 277.301,482.306 277.328,482.964 277.462,483.179 C 277.637,483.46 277.61,483.581 277.355,483.541 C 277.153,483.501 276.63,483.313 276.482,483.232 C 276.334,483.165 276.119,483.031 276.052,482.829 C 275.918,482.413 275.878,481.554 275.958,481.124 C 275.985,480.95 276.066,480.95 276.16,480.99z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 283.021 482.561 C 282.632,483.998 281.141,484.83 279.718,484.441 C 278.281,484.051 277.449,482.561 277.838,481.138 C 278.241,479.701 279.718,478.868 281.141,479.258 C 282.578,479.661 283.41,481.138 283.021,482.561"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 278.066 478.157 C 278.429,478.264 278.711,478.412 278.845,478.492 C 278.979,478.586 279.02,478.707 278.899,478.788 C 278.778,478.868 278.563,479.029 278.442,479.137 C 278.295,479.258 278.201,479.285 277.999,479.164 C 277.637,478.962 276.871,478.412 276.683,478.157 C 276.576,478.022 276.67,477.969 276.871,477.955 C 277.14,477.942 277.677,478.049 278.066,478.157"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.16 480.99 C 276.361,481.057 276.845,481.299 276.979,481.406 C 277.126,481.5 277.341,481.728 277.328,481.997 C 277.301,482.306 277.328,482.964 277.462,483.179 C 277.637,483.46 277.61,483.581 277.355,483.541 C 277.153,483.501 276.63,483.313 276.482,483.232 C 276.334,483.165 276.119,483.031 276.052,482.829 C 275.918,482.413 275.878,481.554 275.958,481.124 C 275.985,480.95 276.066,480.95 276.16,480.99"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 284.35 479.889 C 283.988,479.795 283.679,479.781 283.518,479.781 C 283.357,479.795 283.263,479.875 283.316,479.996 C 283.384,480.13 283.491,480.386 283.531,480.533 C 283.598,480.708 283.666,480.788 283.894,480.802 C 284.31,480.802 285.25,480.721 285.545,480.6 C 285.693,480.533 285.639,480.439 285.478,480.332 C 285.25,480.184 284.74,479.996 284.35,479.889z"/>
<path style="fill: #00ff00; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 284.538 483.299 C 284.337,483.246 283.786,483.219 283.612,483.232 C 283.451,483.246 283.142,483.326 283.021,483.568 C 282.887,483.85 282.524,484.4 282.296,484.521 C 282.001,484.669 281.96,484.79 282.202,484.87 C 282.39,484.951 282.941,485.058 283.102,485.072 C 283.276,485.085 283.518,485.085 283.679,484.938 C 284.028,484.656 284.485,483.93 284.646,483.528 C 284.713,483.366 284.646,483.326 284.538,483.299z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.35 479.889 C 283.988,479.795 283.679,479.781 283.518,479.781 C 283.357,479.795 283.263,479.875 283.316,479.996 C 283.384,480.13 283.491,480.386 283.531,480.533 C 283.598,480.708 283.666,480.788 283.894,480.802 C 284.31,480.802 285.25,480.721 285.545,480.6 C 285.693,480.533 285.639,480.439 285.478,480.332 C 285.25,480.184 284.74,479.996 284.35,479.889"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.538 483.299 C 284.337,483.246 283.786,483.219 283.612,483.232 C 283.451,483.246 283.142,483.326 283.021,483.568 C 282.887,483.85 282.524,484.4 282.296,484.521 C 282.001,484.669 281.96,484.79 282.202,484.87 C 282.39,484.951 282.941,485.058 283.102,485.072 C 283.276,485.085 283.518,485.085 283.679,484.938 C 284.028,484.656 284.485,483.93 284.646,483.528 C 284.713,483.366 284.646,483.326 284.538,483.299"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.095 467.791 L 284.981,464.582"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.391 467.871 L 285.277,464.662"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 290.688 460.889 C 290.688,460.889 290.178,460.741 289.748,460.634 C 289.372,460.527 288.835,460.379 288.835,460.379"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 288.916 477.351 C 289.265,476.102 290.702,469.845 290.769,468.986 C 290.836,468.113 290.514,467.012 290.044,466.797 C 290.07,466.488 290.07,466.314 290.07,466.314 C 289.963,466.26 289.842,466.22 289.735,466.179 L 289.762,466.193 C 289.762,466.193 290.097,464.796 290.299,463.83 C 290.661,461.963 290.688,461.023 290.688,461.023 C 290.688,460.768 290.621,460.553 290.393,460.486 L 289.305,460.191 C 289.077,460.124 288.916,460.271 288.768,460.5 C 288.768,460.5 288.338,461.359 287.748,463.118 C 287.425,464.058 287.13,465.226 287.13,465.226 L 287.143,465.24 C 286.499,465.025 285.841,464.823 285.183,464.649 C 283.491,464.179 281.799,463.816 280.121,463.561 C 280.121,463.561 280.04,463.722 279.893,463.991 L 279.893,463.991 C 279.382,463.951 278.55,464.716 278.16,465.495 C 277.771,466.273 275.797,472.383 275.448,473.645 C 275.099,474.894 274.441,478.076 274.146,479.661 C 273.85,481.245 273.582,484.011 272.561,487.704 C 271.957,489.879 270.99,493.115 270.48,494.471 C 270.346,494.82 269.285,496.619 270.829,497.237 C 272.346,497.828 274.616,498.486 275.757,498.795 C 276.898,499.117 279.167,499.708 280.779,499.976 C 282.417,500.245 282.43,498.163 282.497,497.788 C 282.753,496.364 283.585,493.088 284.176,490.913 C 285.196,487.22 286.391,484.709 286.955,483.192 C 287.506,481.688 288.567,478.613 288.916,477.351"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 277.1 486.133 C 276.925,486.764 276.267,487.14 275.623,486.965 C 274.978,486.79 274.602,486.133 274.777,485.488 C 274.965,484.844 275.623,484.468 276.267,484.642 C 276.912,484.817 277.288,485.488 277.1,486.133z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 280.148 487.408 C 279.973,488.053 279.302,488.429 278.657,488.254 C 278.026,488.08 277.65,487.408 277.825,486.777 C 277.999,486.133 278.657,485.757 279.302,485.931 C 279.946,486.106 280.322,486.777 280.148,487.408z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 283.424 487.878 C 283.249,488.509 282.578,488.885 281.933,488.711 C 281.302,488.536 280.926,487.878 281.101,487.234 C 281.276,486.589 281.933,486.213 282.578,486.388 C 283.223,486.562 283.598,487.234 283.424,487.878z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 276.375 488.778 C 276.2,489.422 275.529,489.798 274.898,489.61 C 274.253,489.436 273.877,488.778 274.052,488.133 C 274.226,487.489 274.898,487.113 275.529,487.287 C 276.173,487.475 276.549,488.133 276.375,488.778z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 279.409 490.067 C 279.235,490.711 278.577,491.087 277.932,490.899 C 277.288,490.725 276.912,490.067 277.086,489.422 C 277.274,488.778 277.932,488.402 278.577,488.576 C 279.208,488.764 279.597,489.422 279.409,490.067z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 282.699 490.523 C 282.511,491.154 281.853,491.544 281.208,491.356 C 280.564,491.181 280.188,490.523 280.362,489.879 C 280.55,489.234 281.208,488.858 281.853,489.033 C 282.497,489.221 282.873,489.879 282.699,490.523z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 275.649 491.423 C 275.475,492.067 274.804,492.443 274.159,492.269 C 273.528,492.094 273.139,491.423 273.327,490.778 C 273.501,490.147 274.159,489.758 274.804,489.946 C 275.448,490.12 275.824,490.778 275.649,491.423z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 278.684 492.712 C 278.509,493.356 277.838,493.732 277.207,493.558 C 276.563,493.383 276.187,492.712 276.361,492.067 C 276.536,491.423 277.207,491.06 277.838,491.235 C 278.483,491.409 278.859,492.067 278.684,492.712z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 281.96 493.168 C 281.786,493.813 281.114,494.189 280.483,494.001 C 279.839,493.826 279.463,493.168 279.637,492.524 C 279.812,491.879 280.483,491.503 281.114,491.691 C 281.759,491.866 282.135,492.524 281.96,493.168z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 274.911 494.068 C 274.736,494.713 274.065,495.089 273.434,494.914 C 272.789,494.739 272.413,494.082 272.588,493.437 C 272.763,492.793 273.434,492.417 274.065,492.591 C 274.71,492.766 275.086,493.437 274.911,494.082 L 274.911,494.068z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 277.959 495.357 C 277.771,496.002 277.113,496.378 276.469,496.203 C 275.824,496.029 275.448,495.357 275.636,494.726 C 275.811,494.082 276.469,493.706 277.113,493.88 C 277.758,494.055 278.134,494.726 277.959,495.357z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 281.235 495.814 C 281.047,496.458 280.389,496.834 279.745,496.66 C 279.1,496.485 278.724,495.814 278.912,495.169 C 279.087,494.538 279.745,494.162 280.389,494.337 C 281.034,494.511 281.41,495.169 281.235,495.814z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.428 497.156 C 276.415,497.21 276.307,497.237 276.187,497.21 C 276.079,497.17 275.999,497.103 276.025,497.036 C 276.039,496.982 276.146,496.955 276.254,496.982 C 276.361,497.009 276.442,497.089 276.428,497.143"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.025 497.036 L 275.636,498.419"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.079 497.156 L 275.73,498.445"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.428 497.156 L 276.039,498.526"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.307 497.21 L 275.958,498.499"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 278.751 477.19 L 278.483,478.143"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 278.859 477.217 L 278.59,478.184"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.27 478.707 L 284.001,479.674"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.162 478.68 L 283.894,479.647"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 289.762 466.193 C 289.762,466.193 290.097,464.796 290.299,463.83 C 290.661,461.963 290.688,461.023 290.688,461.023 C 290.688,460.768 290.621,460.553 290.393,460.486 L 289.305,460.191 C 289.077,460.124 288.916,460.271 288.768,460.5 C 288.768,460.5 288.338,461.359 287.748,463.118 C 287.425,464.058 287.13,465.226 287.13,465.226"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 289.896 465.683 C 289.023,465.347 288.15,465.038 287.251,464.756"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 279.033 465.871 C 280.819,466.126 282.739,466.529 284.525,467.025 C 286.311,467.522 288.164,468.153 289.829,468.852"/>
<path style="fill: #b7b79d; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" fill-rule="evenodd" d="M 286.7 478.922 C 286.633,479.164 286.391,479.298 286.15,479.231 L 276.858,476.666 C 276.616,476.599 276.482,476.357 276.549,476.129 L 278.174,470.248 C 278.241,470.006 278.483,469.872 278.711,469.939 L 288.016,472.504 C 288.258,472.571 288.392,472.813 288.325,473.054 L 286.7,478.935 L 286.7,478.922z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.095 467.791 L 284.981,464.582"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.391 467.871 L 285.277,464.662"/>
</g>
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="290.438" y1="479.005" x2="440.053" y2="393.475"/>
<g>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 714.565 323.746 L 714.565,310.35"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 714.565 323.53 L 714.565,314.341"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 714.954 311.638 L 714.135,311.638 L 714.135,310 L 714.954,310 L 714.954,311.638z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 714.954 311.638 L 714.135,311.638 L 714.135,310 L 714.954,310 L 714.954,311.638"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 694.709 323.746 L 694.709,310.35"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 694.709 323.53 L 694.709,314.341"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 695.098 311.638 L 694.279,311.638 L 694.279,310 L 695.098,310 L 695.098,311.638z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 695.098 311.638 L 694.279,311.638 L 694.279,310 L 695.098,310 L 695.098,311.638"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 720.119 325.447 C 720.119,328.681 713.377,331.303 705.06,331.303 C 696.742,331.303 690,328.681 690,325.447 L 690,334.025 C 690,337.26 696.742,339.882 705.06,339.882 C 713.377,339.882 720.119,337.26 720.119,334.025 L 720.119,325.447z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 720.119 325.447 C 720.119,328.681 713.377,331.303 705.06,331.303 C 696.742,331.303 690,328.681 690,325.447 L 690,334.025 C 690,337.26 696.742,339.882 705.06,339.882 C 713.377,339.882 720.119,337.26 720.119,334.025 L 720.119,325.447"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 705.06 331.303 C 713.377,331.303 720.119,328.681 720.119,325.447 C 720.119,322.212 713.377,319.59 705.06,319.59 C 696.742,319.59 690,322.212 690,325.447 C 690,328.681 696.742,331.303 705.06,331.303z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 705.06 331.303 C 713.377,331.303 720.119,328.681 720.119,325.447 C 720.119,322.212 713.377,319.59 705.06,319.59 C 696.742,319.59 690,322.212 690,325.447 C 690,328.681 696.742,331.303 705.06,331.303"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 701.621 323.157 L 702.864,325.022 L 698.163,326.108 L 699.19,325.254 L 691.923,324.012 L 693.746,322.645 L 700.758,323.832 L 701.621,323.157z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 708.237 327.68 L 707.388,325.757 L 711.629,324.91 L 710.894,325.568 L 717.962,326.776 L 716.268,328.133 L 709.24,326.813 L 708.237,327.68z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 705.918 322.138 L 710.668,320.838 L 710.724,322.874 L 709.538,322.647 L 707.218,324.57 L 705.006,324.247 L 707.399,322.367 L 705.918,322.138z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 703.882 329.434 L 699.359,330.281 L 699.19,328.19 L 700.489,328.472 L 702.979,326.345 L 705.183,326.719 L 702.525,329.037 L 703.882,329.434z"/>
</g>
<g>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 774.565 453.746 L 774.565,440.35"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 774.565 453.53 L 774.565,444.341"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 774.954 441.638 L 774.135,441.638 L 774.135,440 L 774.954,440 L 774.954,441.638z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 774.954 441.638 L 774.135,441.638 L 774.135,440 L 774.954,440 L 774.954,441.638"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 754.709 453.746 L 754.709,440.35"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 754.709 453.53 L 754.709,444.341"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 755.098 441.638 L 754.279,441.638 L 754.279,440 L 755.098,440 L 755.098,441.638z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 755.098 441.638 L 754.279,441.638 L 754.279,440 L 755.098,440 L 755.098,441.638"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 780.119 455.447 C 780.119,458.681 773.377,461.303 765.06,461.303 C 756.742,461.303 750,458.681 750,455.447 L 750,464.025 C 750,467.26 756.742,469.882 765.06,469.882 C 773.377,469.882 780.119,467.26 780.119,464.025 L 780.119,455.447z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 780.119 455.447 C 780.119,458.681 773.377,461.303 765.06,461.303 C 756.742,461.303 750,458.681 750,455.447 L 750,464.025 C 750,467.26 756.742,469.882 765.06,469.882 C 773.377,469.882 780.119,467.26 780.119,464.025 L 780.119,455.447"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 765.06 461.303 C 773.377,461.303 780.119,458.681 780.119,455.447 C 780.119,452.212 773.377,449.59 765.06,449.59 C 756.742,449.59 750,452.212 750,455.447 C 750,458.681 756.742,461.303 765.06,461.303z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 765.06 461.303 C 773.377,461.303 780.119,458.681 780.119,455.447 C 780.119,452.212 773.377,449.59 765.06,449.59 C 756.742,449.59 750,452.212 750,455.447 C 750,458.681 756.742,461.303 765.06,461.303"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 761.621 453.157 L 762.864,455.022 L 758.163,456.108 L 759.19,455.254 L 751.923,454.012 L 753.746,452.645 L 760.758,453.832 L 761.621,453.157z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 768.237 457.68 L 767.388,455.757 L 771.629,454.91 L 770.894,455.568 L 777.962,456.776 L 776.268,458.133 L 769.24,456.813 L 768.237,457.68z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 765.918 452.138 L 770.668,450.838 L 770.724,452.874 L 769.538,452.647 L 767.218,454.57 L 765.006,454.247 L 767.399,452.367 L 765.918,452.138z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 763.882 459.434 L 759.359,460.281 L 759.19,458.19 L 760.489,458.472 L 762.979,456.345 L 765.183,456.719 L 762.525,459.037 L 763.882,459.434z"/>
</g>
<text font-size="21.4489" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:italic;font-weight:normal" x="270" y="430">
<tspan x="270" y="430">Clients</tspan>
</text>
</g>
<g id="IGMP/MLD segmentation">
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #ff0000" x1="490" y1="290" x2="490" y2="510"/>
<text font-size="18.0622" style="fill: #ff0000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:italic;font-weight:normal" x="500" y="420">
<tspan x="500" y="420">IGMP + MLD</tspan>
<tspan x="500" y="442.578">Firewall</tspan>
</text>
<text font-size="12.7998" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="440" y="420">
<tspan x="440" y="420">Query</tspan>
</text>
<text font-size="12.7998" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="310" y="490">
<tspan x="310" y="490">Report</tspan>
</text>
<g>
<line style="fill: none; stroke-opacity: 1; stroke-width: 3; stroke: #800080" x1="435" y1="415" x2="386.5" y2="415"/>
<polygon style="fill: #800080; fill-opacity: 1; stroke-opacity: 1; stroke-width: 3; stroke: #800080" fill-rule="evenodd" points="386.5,410 376.5,415 386.5,420 "/>
</g>
<g>
<line style="fill: none; stroke-opacity: 1; stroke-width: 3; stroke: #800080" x1="357" y1="485.5" x2="405.5" y2="485.5"/>
<polygon style="fill: #800080; fill-opacity: 1; stroke-opacity: 1; stroke-width: 3; stroke: #800080" fill-rule="evenodd" points="405.5,490.5 415.5,485.5 405.5,480.5 "/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 100 KiB

View File

@ -1,232 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
<svg width="29cm" height="12cm" viewBox="219 289 572 223" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="Background">
<g>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 713.614 347.58 L 713.54,345.719 L 713.283,343.858 L 712.804,342.03 L 712.142,340.201 L 711.258,338.34 L 710.264,336.545 L 709.013,334.781 L 707.614,333.051 L 706.104,331.321 L 704.337,329.688 L 702.46,328.056 L 700.398,326.521 L 698.153,324.986 L 695.797,323.55 L 693.294,322.146 L 690.606,320.84 L 687.845,319.566 L 684.974,318.391 L 681.955,317.281 L 678.826,316.269 L 675.587,315.289 L 672.237,314.473 L 668.887,313.657 L 665.39,312.971 L 661.819,312.351 L 658.248,311.828 L 654.604,311.404 L 650.922,311.11 L 647.204,310.849 L 643.45,310.718 L 639.695,310.653 L 639.695,310.653 L 635.977,310.718 L 632.185,310.849 L 628.504,311.11 L 624.822,311.404 L 621.141,311.828 L 617.57,312.351 L 614,312.971 L 610.539,313.657 L 607.116,314.473 L 603.839,315.289 L 600.6,316.269 L 597.508,317.281 L 594.452,318.391 L 591.581,319.566 L 588.783,320.84 L 586.096,322.146 L 583.592,323.55 L 581.236,324.986 L 578.991,326.521 L 576.929,328.056 L 575.052,329.688 L 573.322,331.321 L 571.739,333.051 L 570.414,334.781 L 569.162,336.545 L 568.131,338.34 L 567.248,340.201 L 566.659,342.03 L 566.18,343.858 L 565.849,345.719 L 565.812,347.58 L 565.812,347.58 L 565.849,349.474 L 566.18,351.335 L 566.659,353.196 L 567.248,355.024 L 568.131,356.853 L 569.162,358.649 L 570.414,360.412 L 571.739,362.175 L 573.322,363.873 L 575.052,365.505 L 576.929,367.138 L 578.991,368.705 L 581.236,370.207 L 583.592,371.643 L 586.096,373.047 L 588.783,374.386 L 591.581,375.594 L 594.452,376.835 L 597.508,377.945 L 600.6,378.957 L 603.839,379.871 L 607.116,380.753 L 610.539,381.536 L 614,382.222 L 617.57,382.842 L 621.141,383.365 L 624.822,383.757 L 628.504,384.083 L 632.185,384.377 L 635.977,384.475 L 639.695,384.508 L 639.695,384.508 L 643.45,384.475 L 647.204,384.377 L 650.922,384.083 L 654.604,383.757 L 658.248,383.365 L 661.819,382.842 L 665.39,382.222 L 668.887,381.536 L 672.237,380.753 L 675.587,379.871 L 678.826,378.957 L 681.955,377.945 L 684.974,376.835 L 687.845,375.594 L 690.606,374.386 L 693.294,373.047 L 695.797,371.643 L 698.153,370.207 L 700.398,368.705 L 702.46,367.138 L 704.337,365.505 L 706.104,363.873 L 707.614,362.175 L 709.013,360.412 L 710.264,358.649 L 711.258,356.853 L 712.142,355.024 L 712.804,353.196 L 713.283,351.335 L 713.54,349.474 L 713.614,347.58z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 597.765 366.974 L 597.692,365.113 L 597.434,363.252 L 597.139,361.424 L 596.624,359.563 L 595.961,357.734 L 595.152,355.939 L 594.194,354.176 L 593.164,352.445 L 591.986,350.715 L 590.66,349.082 L 589.225,347.45 L 587.642,345.915 L 585.875,344.381 L 584.071,342.944 L 582.157,341.54 L 580.095,340.234 L 578.034,338.961 L 575.751,337.785 L 573.469,336.675 L 571.039,335.696 L 568.61,334.683 L 566.07,333.802 L 563.419,333.051 L 560.769,332.365 L 558.045,331.745 L 555.284,331.223 L 552.486,330.798 L 549.651,330.504 L 546.854,330.243 L 543.982,330.08 L 541.111,330.047 L 541.111,330.047 L 538.239,330.08 L 535.368,330.243 L 532.497,330.504 L 529.699,330.798 L 526.864,331.223 L 524.104,331.745 L 521.416,332.365 L 518.766,333.051 L 516.152,333.802 L 513.612,334.683 L 511.109,335.696 L 508.753,336.675 L 506.397,337.785 L 504.188,338.961 L 502.09,340.234 L 500.028,341.54 L 498.114,342.944 L 496.273,344.381 L 494.543,345.915 L 492.997,347.45 L 491.524,349.082 L 490.236,350.715 L 489.021,352.445 L 487.954,354.176 L 487.033,355.939 L 486.223,357.734 L 485.561,359.563 L 485.082,361.424 L 484.714,363.252 L 484.493,365.113 L 484.42,366.974 L 484.42,366.974 L 484.493,368.868 L 484.714,370.729 L 485.082,372.59 L 485.561,374.419 L 486.223,376.247 L 487.033,378.043 L 487.954,379.806 L 489.021,381.536 L 490.236,383.267 L 491.524,384.899 L 492.997,386.532 L 494.543,388.066 L 496.273,389.601 L 498.114,391.038 L 500.028,392.442 L 502.09,393.748 L 504.188,394.988 L 506.397,396.164 L 508.753,397.339 L 511.109,398.351 L 513.612,399.265 L 516.152,400.18 L 518.766,400.931 L 521.416,401.616 L 524.104,402.237 L 526.864,402.726 L 529.699,403.151 L 532.497,403.477 L 535.368,403.771 L 538.239,403.869 L 541.111,403.902 L 541.111,403.902 L 543.982,403.869 L 546.854,403.771 L 549.651,403.477 L 552.486,403.151 L 555.284,402.726 L 558.045,402.237 L 560.769,401.616 L 563.419,400.931 L 566.07,400.18 L 568.61,399.265 L 571.039,398.351 L 573.469,397.339 L 575.751,396.164 L 578.034,394.988 L 580.095,393.748 L 582.157,392.442 L 584.071,391.038 L 585.875,389.601 L 587.642,388.066 L 589.225,386.532 L 590.66,384.899 L 591.986,383.267 L 593.164,381.536 L 594.194,379.806 L 595.152,378.043 L 595.961,376.247 L 596.624,374.419 L 597.139,372.59 L 597.434,370.729 L 597.692,368.868 L 597.765,366.974z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 526.312 404.685 L 526.275,403.151 L 526.165,401.616 L 525.907,400.082 L 525.576,398.58 L 525.097,397.143 L 524.545,395.641 L 523.956,394.172 L 523.257,392.768 L 522.447,391.364 L 521.527,390.025 L 520.533,388.752 L 519.465,387.446 L 518.324,386.205 L 517.109,384.997 L 515.784,383.887 L 514.422,382.842 L 513.023,381.765 L 511.55,380.818 L 509.968,379.904 L 508.348,379.055 L 506.691,378.304 L 504.961,377.586 L 503.231,376.965 L 501.427,376.41 L 499.586,375.888 L 497.746,375.496 L 495.868,375.104 L 493.917,374.876 L 492.003,374.68 L 490.126,374.582 L 488.175,374.517 L 488.175,374.517 L 486.223,374.582 L 484.272,374.68 L 482.358,374.876 L 480.481,375.104 L 478.566,375.496 L 476.689,375.888 L 474.885,376.41 L 473.118,376.965 L 471.314,377.586 L 469.584,378.304 L 467.928,379.055 L 466.308,379.904 L 464.762,380.818 L 463.252,381.765 L 461.854,382.842 L 460.492,383.887 L 459.203,384.997 L 457.951,386.205 L 456.81,387.446 L 455.743,388.752 L 454.749,390.025 L 453.902,391.364 L 453.092,392.768 L 452.393,394.172 L 451.73,395.641 L 451.178,397.143 L 450.773,398.58 L 450.442,400.082 L 450.147,401.616 L 450,403.151 L 450,404.685 L 450,404.685 L 450,406.155 L 450.147,407.689 L 450.442,409.191 L 450.773,410.693 L 451.178,412.227 L 451.73,413.664 L 452.393,415.101 L 453.092,416.537 L 453.902,417.941 L 454.749,419.28 L 455.743,420.586 L 456.81,421.859 L 457.951,423.1 L 459.203,424.275 L 460.492,425.385 L 461.854,426.463 L 463.252,427.54 L 464.762,428.455 L 466.308,429.369 L 467.928,430.218 L 469.584,431.001 L 471.314,431.72 L 473.118,432.34 L 474.885,432.895 L 476.689,433.385 L 478.566,433.809 L 480.481,434.168 L 482.358,434.462 L 484.272,434.625 L 486.223,434.723 L 488.175,434.789 L 488.175,434.789 L 490.126,434.723 L 492.003,434.625 L 493.917,434.462 L 495.868,434.168 L 497.746,433.809 L 499.586,433.385 L 501.427,432.895 L 503.231,432.34 L 504.961,431.72 L 506.691,431.001 L 508.348,430.218 L 509.968,429.369 L 511.55,428.455 L 513.023,427.54 L 514.422,426.463 L 515.784,425.385 L 517.109,424.275 L 518.324,423.1 L 519.465,421.859 L 520.533,420.586 L 521.527,419.28 L 522.447,417.941 L 523.257,416.537 L 523.956,415.101 L 524.545,413.664 L 525.097,412.227 L 525.576,410.693 L 525.907,409.191 L 526.165,407.689 L 526.275,406.155 L 526.312,404.685z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 587.936 433.711 L 587.9,432.046 L 587.642,430.414 L 587.237,428.748 L 586.758,427.116 L 586.096,425.516 L 585.323,423.916 L 584.329,422.349 L 583.298,420.814 L 582.046,419.378 L 580.721,417.876 L 579.212,416.439 L 577.629,415.101 L 575.935,413.762 L 574.095,412.423 L 572.144,411.215 L 570.082,410.04 L 567.91,408.962 L 565.628,407.885 L 563.309,406.938 L 560.879,405.991 L 558.339,405.175 L 555.762,404.391 L 553.112,403.706 L 550.424,403.085 L 547.663,402.563 L 544.829,402.139 L 542.031,401.747 L 539.16,401.42 L 536.288,401.224 L 533.38,401.094 L 530.435,401.061 L 530.435,401.061 L 527.527,401.094 L 524.656,401.224 L 521.711,401.42 L 518.876,401.747 L 516.005,402.139 L 513.244,402.563 L 510.483,403.085 L 507.759,403.706 L 505.108,404.391 L 502.568,405.175 L 500.028,405.991 L 497.599,406.938 L 495.243,407.885 L 492.997,408.962 L 490.825,410.04 L 488.764,411.215 L 486.812,412.423 L 484.972,413.762 L 483.242,415.101 L 481.659,416.439 L 480.149,417.876 L 478.787,419.378 L 477.609,420.814 L 476.542,422.349 L 475.548,423.916 L 474.738,425.516 L 474.149,427.116 L 473.597,428.748 L 473.229,430.414 L 473.008,432.046 L 472.934,433.711 L 472.934,433.711 L 473.008,435.344 L 473.229,437.009 L 473.597,438.641 L 474.149,440.274 L 474.738,441.874 L 475.548,443.474 L 476.542,445.073 L 477.609,446.608 L 478.787,448.077 L 480.149,449.514 L 481.659,450.95 L 483.242,452.322 L 484.972,453.693 L 486.812,454.999 L 488.764,456.207 L 490.825,457.35 L 492.997,458.46 L 495.243,459.505 L 497.599,460.484 L 500.028,461.431 L 502.568,462.247 L 505.108,463.031 L 507.759,463.684 L 510.483,464.304 L 513.244,464.827 L 516.005,465.284 L 518.876,465.708 L 521.711,466.002 L 524.656,466.198 L 527.527,466.329 L 530.435,466.329 L 530.435,466.329 L 533.38,466.329 L 536.288,466.198 L 539.16,466.002 L 542.031,465.708 L 544.829,465.284 L 547.663,464.827 L 550.424,464.304 L 553.112,463.684 L 555.762,463.031 L 558.339,462.247 L 560.879,461.431 L 563.309,460.484 L 565.628,459.505 L 567.91,458.46 L 570.082,457.35 L 572.144,456.207 L 574.095,454.999 L 575.935,453.693 L 577.629,452.322 L 579.212,450.95 L 580.721,449.514 L 582.046,448.077 L 583.298,446.608 L 584.329,445.073 L 585.323,443.474 L 586.096,441.874 L 586.758,440.274 L 587.237,438.641 L 587.642,437.009 L 587.9,435.344 L 587.936,433.711z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 725.946 450.591 L 725.799,448.6 L 725.505,446.608 L 724.916,444.682 L 724.142,442.755 L 723.185,440.829 L 722.007,438.968 L 720.608,437.139 L 718.989,435.278 L 717.148,433.483 L 715.16,431.752 L 712.915,430.087 L 710.559,428.455 L 707.982,426.855 L 705.258,425.32 L 702.276,423.851 L 699.257,422.48 L 696.018,421.141 L 692.631,419.9 L 689.171,418.757 L 685.489,417.68 L 681.771,416.668 L 677.906,415.786 L 673.967,414.937 L 669.881,414.219 L 665.795,413.566 L 661.598,413.044 L 657.401,412.587 L 653.058,412.26 L 648.824,412.032 L 644.443,411.836 L 640.1,411.836 L 640.1,411.836 L 635.756,411.836 L 631.412,412.032 L 627.105,412.26 L 622.835,412.587 L 618.564,413.044 L 614.405,413.566 L 610.282,414.219 L 606.269,414.937 L 602.256,415.786 L 598.465,416.668 L 594.673,417.68 L 591.065,418.757 L 587.568,419.9 L 584.218,421.141 L 580.979,422.48 L 577.887,423.851 L 574.978,425.32 L 572.254,426.855 L 569.641,428.455 L 567.248,430.087 L 565.039,431.752 L 563.088,433.483 L 561.247,435.278 L 559.628,437.139 L 558.229,438.968 L 557.014,440.829 L 556.057,442.755 L 555.247,444.682 L 554.695,446.608 L 554.363,448.6 L 554.253,450.591 L 554.253,450.591 L 554.363,452.485 L 554.695,454.477 L 555.247,456.403 L 556.057,458.362 L 557.014,460.288 L 558.229,462.149 L 559.628,463.978 L 561.247,465.839 L 563.088,467.635 L 565.039,469.365 L 567.248,471.03 L 569.641,472.728 L 572.254,474.263 L 574.978,475.797 L 577.887,477.234 L 580.979,478.67 L 584.218,479.976 L 587.568,481.217 L 591.065,482.36 L 594.673,483.47 L 598.465,484.417 L 602.256,485.331 L 606.269,486.147 L 610.282,486.866 L 614.405,487.551 L 618.564,488.041 L 622.835,488.498 L 627.105,488.857 L 631.412,489.086 L 635.756,489.282 L 640.1,489.282 L 640.1,489.282 L 644.443,489.282 L 648.824,489.086 L 653.058,488.857 L 657.401,488.498 L 661.598,488.041 L 665.795,487.551 L 669.881,486.866 L 673.967,486.147 L 677.906,485.331 L 681.771,484.417 L 685.489,483.47 L 689.171,482.36 L 692.631,481.217 L 696.018,479.976 L 699.257,478.67 L 702.276,477.234 L 705.258,475.797 L 707.982,474.263 L 710.559,472.728 L 712.915,471.03 L 715.16,469.365 L 717.148,467.635 L 718.989,465.839 L 720.608,463.978 L 722.007,462.149 L 723.185,460.288 L 724.142,458.362 L 724.916,456.403 L 725.505,454.477 L 725.799,452.485 L 725.946,450.591z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 773.582 361.228 L 773.545,359.791 L 773.324,358.289 L 772.919,356.82 L 772.477,355.384 L 771.815,353.98 L 771.078,352.543 L 770.158,351.139 L 769.091,349.768 L 767.949,348.462 L 766.698,347.123 L 765.262,345.85 L 763.716,344.609 L 762.096,343.466 L 760.292,342.291 L 758.452,341.213 L 756.427,340.201 L 754.366,339.157 L 752.23,338.242 L 749.948,337.393 L 747.629,336.577 L 745.273,335.826 L 742.77,335.141 L 740.23,334.52 L 737.653,333.965 L 735.002,333.475 L 732.352,333.149 L 729.628,332.757 L 726.903,332.496 L 724.106,332.333 L 721.345,332.235 L 718.547,332.169 L 718.547,332.169 L 715.712,332.235 L 712.951,332.333 L 710.154,332.496 L 707.43,332.757 L 704.742,333.149 L 702.055,333.475 L 699.441,333.965 L 696.828,334.52 L 694.288,335.141 L 691.784,335.826 L 689.392,336.577 L 687.109,337.393 L 684.827,338.242 L 682.692,339.157 L 680.63,340.201 L 678.642,341.213 L 676.765,342.291 L 674.961,343.466 L 673.341,344.609 L 671.832,345.85 L 670.359,347.123 L 669.108,348.462 L 667.967,349.768 L 666.899,351.139 L 665.979,352.543 L 665.243,353.98 L 664.617,355.384 L 664.101,356.82 L 663.77,358.289 L 663.586,359.791 L 663.476,361.228 L 663.476,361.228 L 663.586,362.697 L 663.77,364.167 L 664.101,365.603 L 664.617,367.072 L 665.243,368.509 L 665.979,369.913 L 666.899,371.317 L 667.967,372.688 L 669.108,374.059 L 670.359,375.333 L 671.832,376.574 L 673.341,377.847 L 674.961,379.022 L 676.765,380.132 L 678.642,381.243 L 680.63,382.287 L 682.692,383.267 L 684.827,384.181 L 687.109,385.095 L 689.392,385.911 L 691.784,386.63 L 694.288,387.348 L 696.828,387.936 L 699.441,388.458 L 702.055,388.981 L 704.742,389.372 L 707.43,389.699 L 710.154,389.993 L 712.951,390.123 L 715.712,390.287 L 718.547,390.287 L 718.547,390.287 L 721.345,390.287 L 724.106,390.123 L 726.903,389.993 L 729.628,389.699 L 732.352,389.372 L 735.002,388.981 L 737.653,388.458 L 740.23,387.936 L 742.77,387.348 L 745.273,386.63 L 747.629,385.911 L 749.948,385.095 L 752.23,384.181 L 754.366,383.267 L 756.427,382.287 L 758.452,381.243 L 760.292,380.132 L 762.096,379.022 L 763.716,377.847 L 765.262,376.574 L 766.698,375.333 L 767.949,374.059 L 769.091,372.688 L 770.158,371.317 L 771.078,369.913 L 771.815,368.509 L 772.477,367.072 L 772.919,365.603 L 773.324,364.167 L 773.545,362.697 L 773.582,361.228z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 789.19 398.547 L 789.08,397.078 L 788.932,395.609 L 788.564,394.172 L 788.086,392.735 L 787.423,391.266 L 786.687,389.895 L 785.803,388.458 L 784.736,387.12 L 783.595,385.748 L 782.343,384.475 L 780.907,383.169 L 779.361,381.961 L 777.778,380.818 L 775.974,379.61 L 774.134,378.565 L 772.22,377.488 L 770.158,376.508 L 767.949,375.594 L 765.777,374.712 L 763.458,373.896 L 761.102,373.145 L 758.636,372.46 L 756.133,371.872 L 753.556,371.317 L 750.905,370.827 L 748.255,370.435 L 745.567,370.109 L 742.806,369.815 L 740.082,369.684 L 737.321,369.586 L 734.56,369.521 L 734.56,369.521 L 731.763,369.586 L 729.039,369.684 L 726.278,369.815 L 723.59,370.109 L 720.903,370.435 L 718.216,370.827 L 715.602,371.317 L 713.062,371.872 L 710.522,372.46 L 708.055,373.145 L 705.699,373.896 L 703.38,374.712 L 701.135,375.594 L 699.036,376.508 L 696.975,377.488 L 694.95,378.565 L 693.11,379.61 L 691.379,380.818 L 689.796,381.961 L 688.25,383.169 L 686.851,384.475 L 685.526,385.748 L 684.385,387.12 L 683.391,388.458 L 682.471,389.895 L 681.661,391.266 L 681.072,392.735 L 680.593,394.172 L 680.225,395.609 L 680.004,397.078 L 679.968,398.547 L 679.968,398.547 L 680.004,400.016 L 680.225,401.518 L 680.593,402.955 L 681.072,404.391 L 681.661,405.828 L 682.471,407.232 L 683.391,408.669 L 684.385,410.007 L 685.526,411.313 L 686.851,412.652 L 688.25,413.893 L 689.796,415.133 L 691.379,416.309 L 693.11,417.451 L 694.95,418.562 L 696.975,419.574 L 699.036,420.586 L 701.135,421.5 L 703.38,422.349 L 705.699,423.165 L 708.055,423.916 L 710.522,424.602 L 713.062,425.222 L 715.602,425.81 L 718.216,426.3 L 720.903,426.626 L 723.59,427.018 L 726.278,427.247 L 729.039,427.442 L 731.763,427.54 L 734.56,427.573 L 734.56,427.573 L 737.321,427.54 L 740.082,427.442 L 742.806,427.247 L 745.567,427.018 L 748.255,426.626 L 750.905,426.3 L 753.556,425.81 L 756.133,425.222 L 758.636,424.602 L 761.102,423.916 L 763.458,423.165 L 765.777,422.349 L 767.949,421.5 L 770.158,420.586 L 772.22,419.574 L 774.134,418.562 L 775.974,417.451 L 777.778,416.309 L 779.361,415.133 L 780.907,413.893 L 782.343,412.652 L 783.595,411.313 L 784.736,410.007 L 785.803,408.669 L 786.687,407.232 L 787.423,405.828 L 788.086,404.391 L 788.564,402.955 L 788.932,401.518 L 789.08,400.016 L 789.19,398.547z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 778.515 429.401 L 778.441,427.018 L 778.22,424.569 L 777.926,422.218 L 777.447,419.802 L 776.821,417.451 L 776.048,415.133 L 775.165,412.848 L 774.097,410.595 L 772.956,408.407 L 771.741,406.252 L 770.342,404.163 L 768.796,402.171 L 767.176,400.212 L 765.409,398.351 L 763.569,396.555 L 761.654,394.825 L 759.593,393.192 L 757.495,391.723 L 755.249,390.287 L 752.967,388.981 L 750.611,387.74 L 748.218,386.63 L 745.715,385.585 L 743.175,384.671 L 740.524,383.887 L 737.91,383.267 L 735.186,382.679 L 732.499,382.255 L 729.812,381.961 L 727.087,381.765 L 724.327,381.732 L 724.327,381.732 L 721.566,381.765 L 718.841,381.961 L 716.081,382.255 L 713.393,382.679 L 710.743,383.267 L 708.055,383.887 L 705.479,384.671 L 702.939,385.585 L 700.435,386.63 L 697.969,387.74 L 695.613,388.981 L 693.33,390.287 L 691.159,391.723 L 688.987,393.192 L 686.962,394.825 L 685.011,396.555 L 683.17,398.351 L 681.44,400.212 L 679.783,402.171 L 678.311,404.163 L 676.912,406.252 L 675.624,408.407 L 674.482,410.595 L 673.489,412.848 L 672.605,415.133 L 671.832,417.451 L 671.206,419.802 L 670.728,422.218 L 670.359,424.569 L 670.139,427.018 L 670.065,429.401 L 670.065,429.401 L 670.139,431.818 L 670.359,434.266 L 670.728,436.617 L 671.206,439.001 L 671.832,441.417 L 672.605,443.702 L 673.489,445.955 L 674.482,448.241 L 675.624,450.395 L 676.912,452.55 L 678.311,454.673 L 679.783,456.664 L 681.44,458.591 L 683.17,460.484 L 685.011,462.28 L 686.962,463.978 L 688.987,465.61 L 691.159,467.145 L 693.33,468.549 L 695.613,469.888 L 697.969,471.096 L 700.435,472.238 L 702.939,473.25 L 705.479,474.165 L 708.055,474.916 L 710.743,475.601 L 713.393,476.124 L 716.081,476.548 L 718.841,476.842 L 721.566,477.038 L 724.327,477.136 L 724.327,477.136 L 727.087,477.038 L 729.812,476.842 L 732.499,476.548 L 735.186,476.124 L 737.91,475.601 L 740.524,474.916 L 743.175,474.165 L 745.715,473.25 L 748.218,472.238 L 750.611,471.096 L 752.967,469.888 L 755.249,468.549 L 757.495,467.145 L 759.593,465.61 L 761.654,463.978 L 763.569,462.28 L 765.409,460.484 L 767.176,458.591 L 768.796,456.664 L 770.342,454.673 L 771.741,452.55 L 772.956,450.395 L 774.097,448.241 L 775.165,445.955 L 776.048,443.702 L 776.821,441.417 L 777.447,439.001 L 777.926,436.617 L 778.22,434.266 L 778.441,431.818 L 778.515,429.401z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 731.689 400.702 L 731.542,398.253 L 731.1,395.902 L 730.401,393.454 L 729.443,391.103 L 728.192,388.752 L 726.646,386.401 L 724.842,384.116 L 722.744,381.863 L 720.461,379.675 L 717.884,377.553 L 715.013,375.431 L 711.958,373.406 L 708.644,371.513 L 705.11,369.619 L 701.356,367.791 L 697.453,366.093 L 693.294,364.493 L 688.95,362.958 L 684.495,361.522 L 679.82,360.183 L 674.998,358.975 L 670.065,357.832 L 665.022,356.82 L 659.868,355.939 L 654.567,355.188 L 649.192,354.502 L 643.781,353.98 L 638.296,353.555 L 632.774,353.196 L 627.215,353.033 L 621.583,352.968 L 621.583,352.968 L 616.024,353.033 L 610.466,353.196 L 604.944,353.555 L 599.422,353.98 L 594.01,354.502 L 588.636,355.188 L 583.372,355.939 L 578.218,356.82 L 573.101,357.832 L 568.242,358.975 L 563.419,360.183 L 558.707,361.522 L 554.216,362.958 L 549.946,364.493 L 545.749,366.093 L 541.81,367.791 L 538.129,369.619 L 534.558,371.513 L 531.245,373.406 L 528.227,375.431 L 525.355,377.553 L 522.815,379.675 L 520.496,381.863 L 518.361,384.116 L 516.594,386.401 L 515.084,388.752 L 513.759,391.103 L 512.802,393.454 L 512.103,395.902 L 511.661,398.253 L 511.55,400.702 L 511.55,400.702 L 511.661,403.085 L 512.103,405.502 L 512.802,407.885 L 513.759,410.301 L 515.084,412.652 L 516.594,414.97 L 518.361,417.223 L 520.496,419.508 L 522.815,421.729 L 525.355,423.851 L 528.227,425.908 L 531.245,427.932 L 534.558,429.891 L 538.129,431.752 L 541.81,433.548 L 545.749,435.278 L 549.946,436.911 L 554.216,438.445 L 558.707,439.882 L 563.419,441.155 L 568.242,442.429 L 573.101,443.506 L 578.218,444.518 L 583.372,445.433 L 588.636,446.216 L 594.01,446.869 L 599.422,447.424 L 604.944,447.849 L 610.466,448.143 L 616.024,448.371 L 621.583,448.404 L 621.583,448.404 L 627.215,448.371 L 632.774,448.143 L 638.296,447.849 L 643.781,447.424 L 649.192,446.869 L 654.567,446.216 L 659.868,445.433 L 665.022,444.518 L 670.065,443.506 L 674.998,442.429 L 679.82,441.155 L 684.495,439.882 L 688.95,438.445 L 693.294,436.911 L 697.453,435.278 L 701.356,433.548 L 705.11,431.752 L 708.644,429.891 L 711.958,427.932 L 715.013,425.908 L 717.884,423.851 L 720.461,421.729 L 722.744,419.508 L 724.842,417.223 L 726.646,414.97 L 728.192,412.652 L 729.443,410.301 L 730.401,407.885 L 731.1,405.502 L 731.542,403.085 L 731.689,400.702z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 640.541 347.254 L 713.393,339.026 L 712.473,337.23 L 711.332,335.402 L 710.08,333.606 L 708.571,331.876 L 706.951,330.21 L 705.11,328.513 L 703.196,326.913 L 700.987,325.378 L 698.742,323.876 L 696.312,322.44 L 693.699,321.068 L 690.974,319.795 L 688.103,318.554 L 685.121,317.346 L 682.029,316.269 L 678.826,315.289 L 675.587,314.31 L 672.163,313.494 L 668.703,312.743 L 665.206,312.057 L 661.561,311.469 L 657.917,311.012 L 654.236,310.588 L 650.518,310.294 L 646.763,310.098 L 642.971,310 L 639.216,310 L 635.424,310.098 L 631.633,310.229 L 627.951,310.49 L 624.233,310.914 L 620.552,311.339 L 616.908,311.926 L 613.337,312.547 L 609.877,313.265 L 606.49,314.081 L 603.14,314.995 L 599.9,315.942 L 596.845,317.02 L 593.826,318.163 L 590.918,319.371 L 588.157,320.644 L 585.544,322.015 L 583.077,323.452 L 580.721,324.921 L 578.512,326.456 L 576.451,328.056 L 574.573,329.688 L 572.954,331.418 L 571.371,333.084 L 570.009,334.879 L 568.867,336.642 L 567.91,338.471 L 567.1,340.299 L 640.541,347.254z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 713.393 338.961 L 712.436,337.132 L 711.332,335.336 L 710.043,333.541 L 708.571,331.843 L 706.877,330.145 L 705.074,328.48 L 703.123,326.88 L 700.914,325.346 L 698.631,323.876 L 696.275,322.44 L 693.625,321.003 L 690.974,319.73 L 688.066,318.489 L 685.084,317.346 L 682.029,316.204 L 678.826,315.224 L 675.55,314.31 L 672.126,313.461 L 668.666,312.743 L 665.206,312.057 L 661.561,311.469 L 657.88,311.012 L 654.199,310.588 L 650.481,310.294 L 646.763,310.098 L 642.934,310 L 639.179,310 L 635.424,310.098 L 631.67,310.229 L 627.915,310.49 L 624.233,310.914 L 620.552,311.306 L 616.945,311.861 L 613.411,312.547 L 609.877,313.265 L 606.527,314.081 L 603.177,314.995 L 599.974,315.942 L 596.845,316.987 L 593.863,318.163 L 590.955,319.371 L 588.194,320.611 L 585.58,321.983 L 583.077,323.387 L 580.721,324.888 L 578.512,326.423 L 576.524,327.99 L 574.61,329.688 L 572.954,331.321 L 571.408,333.051 L 570.082,334.781 L 568.867,336.577 L 567.91,338.406 L 567.137,340.234"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 541.479 366.615 L 578.218,338.046 L 575.935,336.871 L 573.543,335.761 L 571.113,334.781 L 568.61,333.802 L 566.07,332.953 L 563.419,332.169 L 560.695,331.516 L 558.008,330.896 L 555.173,330.406 L 552.375,329.982 L 549.504,329.688 L 546.633,329.459 L 543.761,329.329 L 540.89,329.329 L 537.982,329.394 L 535.11,329.59 L 532.239,329.819 L 529.405,330.178 L 526.607,330.635 L 523.846,331.157 L 521.085,331.778 L 518.434,332.496 L 515.784,333.312 L 513.244,334.194 L 510.777,335.173 L 508.421,336.251 L 506.065,337.393 L 503.857,338.569 L 501.758,339.875 L 499.697,341.213 L 497.783,342.65 L 496.016,344.087 L 494.322,345.654 L 492.776,347.221 L 491.304,348.854 L 490.015,350.551 L 488.8,352.282 L 487.77,354.012 L 486.849,355.808 L 486.113,357.636 L 485.524,359.465 L 485.009,361.359 L 484.641,363.252 L 484.493,365.113 L 484.42,366.974 L 484.53,368.868 L 484.751,370.794 L 485.193,372.623 L 541.479,366.615z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 578.034 337.948 L 575.751,336.773 L 573.432,335.696 L 571.003,334.683 L 568.463,333.769 L 565.849,332.888 L 563.235,332.137 L 560.548,331.451 L 557.787,330.863 L 555.026,330.406 L 552.155,329.982 L 549.32,329.688 L 546.485,329.459 L 543.614,329.329 L 540.669,329.329 L 537.871,329.394 L 535,329.59 L 532.055,329.819 L 529.257,330.21 L 526.496,330.635 L 523.662,331.223 L 520.974,331.81 L 518.324,332.561 L 515.71,333.377 L 513.133,334.259 L 510.667,335.239 L 508.311,336.316 L 506.029,337.426 L 503.82,338.667 L 501.648,339.907 L 499.697,341.311 L 497.746,342.683 L 495.942,344.185 L 494.285,345.687 L 492.702,347.254 L 491.304,348.919 L 490.015,350.617 L 488.8,352.347 L 487.733,354.078 L 486.849,355.906 L 486.113,357.669 L 485.45,359.53 L 485.009,361.424 L 484.641,363.285 L 484.493,365.146 L 484.42,367.04 L 484.604,368.901 L 484.825,370.794 L 485.193,372.688"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 531.245 433.352 L 472.124,432.34 L 472.124,434.07 L 472.235,435.703 L 472.529,437.433 L 473.008,439.066 L 473.56,440.731 L 474.259,442.429 L 475.18,443.996 L 476.137,445.596 L 477.352,447.163 L 478.64,448.665 L 480.002,450.2 L 481.622,451.636 L 483.242,453.04 L 485.082,454.379 L 486.96,455.685 L 488.984,456.925 L 491.156,458.068 L 493.365,459.178 L 495.684,460.288 L 498.114,461.235 L 500.617,462.149 L 503.231,463.031 L 505.881,463.749 L 508.532,464.468 L 511.33,465.088 L 514.164,465.61 L 517.036,466.035 L 519.944,466.427 L 522.852,466.72 L 525.797,466.916 L 528.779,467.014 L 531.797,467.014 L 534.706,466.949 L 537.687,466.818 L 540.632,466.623 L 543.54,466.329 L 546.485,465.904 L 549.283,465.414 L 552.155,464.892 L 554.842,464.206 L 557.566,463.553 L 560.217,462.737 L 562.72,461.856 L 565.26,460.909 L 567.579,459.897 L 569.898,458.852 L 531.245,433.352z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 472.198 432.34 L 472.087,434.005 L 472.308,435.703 L 472.529,437.368 L 473.008,439.066 L 473.56,440.698 L 474.296,442.364 L 475.18,443.996 L 476.21,445.596 L 477.352,447.13 L 478.566,448.665 L 480.002,450.134 L 481.511,451.603 L 483.242,452.975 L 485.009,454.379 L 486.923,455.619 L 488.911,456.86 L 491.046,458.068 L 493.255,459.178 L 495.574,460.223 L 498.003,461.203 L 500.507,462.117 L 503.047,462.966 L 505.697,463.749 L 508.458,464.468 L 511.182,465.023 L 513.98,465.545 L 516.851,466.035 L 519.796,466.361 L 522.705,466.72 L 525.613,466.851 L 528.595,467.014 L 531.576,467.014 L 534.521,467.014 L 537.466,466.851 L 540.411,466.623 L 543.32,466.329 L 546.265,465.937 L 549.062,465.48 L 551.934,464.925 L 554.658,464.272 L 557.308,463.553 L 559.959,462.77 L 562.499,461.921 L 565.039,461.007 L 567.432,459.995 L 569.677,458.95"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 719.357 360.542 L 771.373,369.978 L 772.256,368.574 L 772.919,367.17 L 773.545,365.734 L 773.913,364.264 L 774.281,362.795 L 774.355,361.326 L 774.355,359.824 L 774.281,358.387 L 773.987,356.918 L 773.582,355.449 L 772.993,354.012 L 772.293,352.576 L 771.483,351.204 L 770.526,349.8 L 769.422,348.462 L 768.17,347.123 L 766.771,345.817 L 765.336,344.576 L 763.753,343.368 L 762.059,342.226 L 760.256,341.05 L 758.268,340.005 L 756.28,338.993 L 754.108,338.046 L 751.936,337.132 L 749.654,336.316 L 747.298,335.5 L 744.831,334.781 L 742.328,334.128 L 739.751,333.541 L 737.1,333.051 L 734.487,332.627 L 731.726,332.235 L 729.002,331.941 L 726.241,331.712 L 723.443,331.614 L 720.682,331.516 L 717.921,331.516 L 715.123,331.614 L 712.326,331.745 L 709.602,331.974 L 706.841,332.267 L 704.117,332.627 L 701.429,333.084 L 719.357,360.542z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 766.587 375.3 L 771.336,370.044 L 772.22,368.672 L 772.919,367.236 L 773.471,365.799 L 773.913,364.33 L 774.207,362.861 L 774.318,361.424 L 774.355,359.889 L 774.244,358.453 L 773.987,356.983 L 773.582,355.514 L 772.993,354.078 L 772.293,352.641 L 771.52,351.237 L 770.563,349.898 L 769.422,348.494 L 768.17,347.156 L 766.882,345.85 L 765.372,344.609 L 763.79,343.401 L 762.096,342.226 L 760.292,341.116 L 758.378,340.071 L 756.353,339.026 L 754.255,338.046 L 752.01,337.165 L 749.727,336.316 L 747.371,335.532 L 744.905,334.879 L 742.401,334.194 L 739.861,333.573 L 737.248,333.051 L 734.56,332.627 L 731.91,332.235 L 729.186,331.941 L 726.425,331.745 L 723.627,331.614 L 720.829,331.516 L 717.995,331.516 L 715.234,331.614 L 712.436,331.745 L 709.675,331.941 L 706.951,332.235 L 704.264,332.594 L 701.576,333.051"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 726.756 398.906 L 785.325,410.856 L 786.503,409.289 L 787.46,407.754 L 788.343,406.122 L 789.043,404.489 L 789.521,402.857 L 789.853,401.224 L 789.963,399.527 L 789.963,397.861 L 789.742,396.196 L 789.411,394.564 L 788.822,392.899 L 788.123,391.299 L 787.202,389.699 L 786.208,388.099 L 784.957,386.564 L 783.558,385.095 L 782.049,383.593 L 780.318,382.124 L 778.478,380.753 L 726.756,398.906z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 777.889 416.276 L 785.251,410.921 L 786.356,409.387 L 787.46,407.754 L 788.307,406.155 L 789.006,404.489 L 789.485,402.857 L 789.853,401.224 L 790,399.527 L 789.963,397.861 L 789.742,396.164 L 789.337,394.531 L 788.822,392.899 L 788.123,391.266 L 787.202,389.634 L 786.172,388.034 L 784.883,386.467 L 783.521,384.997 L 781.901,383.495 L 780.245,382.059 L 778.367,380.687 L 766.587,375.3"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 724.29 430.446 L 705.81,475.797 L 708.534,476.516 L 711.295,477.169 L 714.056,477.658 L 716.927,478.05 L 719.725,478.344 L 722.523,478.475 L 725.431,478.475 L 728.265,478.344 L 731.063,478.148 L 733.898,477.756 L 736.659,477.266 L 739.42,476.711 L 742.144,475.993 L 744.831,475.112 L 747.408,474.165 L 749.985,473.087 L 752.488,471.912 L 754.918,470.606 L 757.274,469.267 L 759.519,467.733 L 761.654,466.133 L 763.716,464.468 L 765.704,462.672 L 767.581,460.811 L 769.275,458.884 L 770.894,456.86 L 772.44,454.803 L 773.803,452.648 L 775.017,450.493 L 776.159,448.241 L 777.116,445.922 L 777.999,443.572 L 778.699,441.221 L 779.288,438.805 L 779.656,436.421 L 779.987,433.972 L 780.061,431.524 L 780.061,429.075 L 779.913,426.626 L 779.619,424.177 L 779.177,421.761 L 778.625,419.378 L 777.889,417.027 L 724.29,430.446z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 705.957 475.83 L 708.718,476.613 L 711.442,477.234 L 714.24,477.756 L 717.038,478.083 L 719.909,478.344 L 722.707,478.475 L 725.541,478.54 L 728.376,478.344 L 731.247,478.148 L 734.045,477.756 L 736.806,477.266 L 739.567,476.646 L 742.291,475.928 L 744.942,475.079 L 747.592,474.099 L 750.132,473.055 L 752.599,471.912 L 754.991,470.606 L 757.347,469.169 L 759.593,467.667 L 761.728,466.035 L 763.79,464.37 L 765.777,462.639 L 767.618,460.746 L 769.385,458.787 L 770.931,456.827 L 772.477,454.705 L 773.839,452.55 L 775.054,450.395 L 776.159,448.143 L 777.152,445.792 L 778.036,443.474 L 778.699,441.09 L 779.288,438.707 L 779.729,436.323 L 779.987,433.874 L 780.061,431.426 L 780.061,428.977 L 779.877,426.528 L 779.619,424.079 L 779.14,421.663 L 778.515,419.28 L 777.889,416.929"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 490.162 404.685 L 487.365,373.896 L 485.303,374.059 L 483.352,374.255 L 481.291,374.582 L 479.303,374.974 L 477.352,375.431 L 475.437,376.019 L 473.56,376.574 L 471.719,377.325 L 469.879,378.043 L 468.149,378.859 L 466.455,379.773 L 464.835,380.72 L 463.252,381.732 L 461.817,382.842 L 460.381,383.952 L 459.056,385.128 L 457.804,386.369 L 456.663,387.675 L 455.522,388.981 L 454.528,390.385 L 453.681,391.821 L 452.871,393.258 L 452.098,394.694 L 451.509,396.196 L 451.031,397.731 L 450.589,399.265 L 450.258,400.833 L 450.11,402.432 L 450,403.967 L 450,405.534 L 450.11,407.069 L 450.331,408.669 L 450.663,410.203 L 451.031,411.738 L 451.583,413.272 L 452.172,414.774 L 452.908,416.243 L 453.718,417.68 L 454.638,419.084 L 455.632,420.488 L 456.773,421.761 L 457.915,423.067 L 459.203,424.308 L 460.565,425.483 L 461.964,426.626 L 463.473,427.671 L 465.056,428.683 L 466.676,429.663 L 468.406,430.544 L 470.1,431.36 L 471.94,432.111 L 490.162,404.685z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 487.365 373.896 L 485.414,374.059 L 483.389,374.255 L 481.401,374.582 L 479.487,374.941 L 477.536,375.398 L 475.621,375.888 L 473.781,376.508 L 471.977,377.161 L 470.173,377.88 L 468.517,378.696 L 466.786,379.577 L 465.204,380.492 L 463.657,381.471 L 462.185,382.549 L 460.712,383.659 L 459.424,384.769 L 458.136,386.009 L 456.994,387.25 L 455.89,388.556 L 454.933,389.895 L 454.013,391.266 L 453.129,392.637 L 452.393,394.074 L 451.73,395.543 L 451.178,397.045 L 450.773,398.547 L 450.368,400.082 L 450.147,401.616 L 450,403.151 L 450,404.685 L 450,406.22 L 450.221,407.754 L 450.442,409.289 L 450.773,410.824 L 451.252,412.325 L 451.73,413.795 L 452.393,415.231 L 453.203,416.733 L 454.013,418.137 L 454.933,419.476 L 455.964,420.814 L 457.031,422.12 L 458.172,423.361 L 459.424,424.569 L 460.786,425.712 L 462.222,426.822 L 463.694,427.867 L 465.277,428.846 L 466.823,429.793 L 468.517,430.642 L 470.247,431.426 L 472.014,432.177"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 639.29 454.118 L 555.505,457.676 L 556.057,459.472 L 556.756,461.301 L 557.713,463.064 L 558.928,464.794 L 560.217,466.459 L 561.799,468.157 L 563.53,469.79 L 565.481,471.422 L 567.653,472.957 L 569.972,474.491 L 572.401,475.928 L 575.089,477.332 L 577.887,478.67 L 580.868,479.976 L 583.997,481.152 L 587.237,482.327 L 590.697,483.372 L 594.158,484.417 L 597.802,485.331 L 601.52,486.213 L 605.422,486.931 L 609.324,487.649 L 613.263,488.237 L 617.386,488.759 L 621.509,489.184 L 625.669,489.51 L 629.792,489.771 L 634.026,489.902 L 638.296,490 L 642.492,490 L 646.763,489.869 L 650.959,489.673 L 655.119,489.38 L 659.242,488.955 L 663.365,488.498 L 667.341,487.943 L 671.317,487.257 L 675.182,486.604 L 679.01,485.788 L 682.692,484.874 L 686.226,483.894 L 689.686,482.85 L 693.036,481.707 L 696.239,480.531 L 699.294,479.291 L 702.129,477.985 L 704.89,476.613 L 707.43,475.177 L 709.859,473.675 L 712.105,472.14 L 714.093,470.606 L 715.933,468.973 L 717.627,467.276 L 719.062,465.61 L 639.29,454.118z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 555.578 457.742 L 556.057,459.505 L 556.793,461.301 L 557.713,463.064 L 558.928,464.794 L 560.29,466.525 L 561.799,468.157 L 563.566,469.79 L 565.481,471.422 L 567.653,472.957 L 569.972,474.491 L 572.401,475.928 L 575.089,477.332 L 577.96,478.67 L 580.868,479.976 L 583.997,481.152 L 587.237,482.327 L 590.697,483.372 L 594.158,484.384 L 597.802,485.331 L 601.52,486.213 L 605.349,486.931 L 609.251,487.649 L 613.227,488.237 L 617.35,488.759 L 621.436,489.184 L 625.595,489.478 L 629.755,489.771 L 633.952,489.902 L 638.185,490 L 642.419,489.967 L 646.615,489.869 L 650.812,489.608 L 655.045,489.38 L 659.168,488.955 L 663.218,488.465 L 667.267,487.943 L 671.206,487.323 L 675.071,486.604 L 678.863,485.788 L 682.508,484.874 L 686.115,483.894 L 689.576,482.882 L 692.889,481.805 L 696.091,480.597 L 699.11,479.356 L 702.055,478.05 L 704.779,476.613 L 707.356,475.21 L 709.786,473.708 L 711.958,472.238 L 714.019,470.606 L 715.86,469.006 L 717.479,467.341 L 718.989,465.643"/>
</g>
<g>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 472.883 378.401 L 472.883,360.469"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 472.883 378.111 L 472.883,365.811"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 473.404 362.192 L 472.308,362.192 L 472.308,360 L 473.404,360 L 473.404,362.192z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 473.404 362.192 L 472.308,362.192 L 472.308,360 L 473.404,360 L 473.404,362.192"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 446.304 378.401 L 446.304,360.469"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 446.304 378.111 L 446.304,365.811"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 446.824 362.192 L 445.728,362.192 L 445.728,360 L 446.824,360 L 446.824,362.192z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 446.824 362.192 L 445.728,362.192 L 445.728,360 L 446.824,360 L 446.824,362.192"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 480.318 380.677 C 480.318,385.007 471.293,388.516 460.159,388.516 C 449.025,388.516 440,385.007 440,380.677 L 440,392.16 C 440,396.49 449.025,400 460.159,400 C 471.293,400 480.318,396.49 480.318,392.16 L 480.318,380.677z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 480.318 380.677 C 480.318,385.007 471.293,388.516 460.159,388.516 C 449.025,388.516 440,385.007 440,380.677 L 440,392.16 C 440,396.49 449.025,400 460.159,400 C 471.293,400 480.318,396.49 480.318,392.16 L 480.318,380.677"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 460.159 388.516 C 471.293,388.516 480.318,385.007 480.318,380.677 C 480.318,376.347 471.293,372.837 460.159,372.837 C 449.025,372.837 440,376.347 440,380.677 C 440,385.007 449.025,388.516 460.159,388.516z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 460.159 388.516 C 471.293,388.516 480.318,385.007 480.318,380.677 C 480.318,376.347 471.293,372.837 460.159,372.837 C 449.025,372.837 440,376.347 440,380.677 C 440,385.007 449.025,388.516 460.159,388.516"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 455.555 377.612 L 457.22,380.109 L 450.927,381.563 L 452.301,380.419 L 442.574,378.756 L 445.015,376.927 L 454.4,378.516 L 455.555,377.612z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 464.413 383.666 L 463.276,381.093 L 468.953,379.958 L 467.968,380.84 L 477.431,382.456 L 475.162,384.272 L 465.754,382.507 L 464.413,383.666z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 461.308 376.248 L 467.667,374.508 L 467.742,377.234 L 466.153,376.93 L 463.048,379.503 L 460.088,379.072 L 463.29,376.554 L 461.308,376.248z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 458.583 386.014 L 452.528,387.149 L 452.301,384.349 L 454.041,384.726 L 457.374,381.88 L 460.324,382.38 L 456.767,385.484 L 458.583,386.014z"/>
</g>
<text font-size="21.4489" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:italic;font-weight:normal" x="620" y="390">
<tspan x="620" y="390">Mesh</tspan>
</text>
<g>
<path style="fill: #c9c9b6; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 294.294 324.172 L 328.289,324.172 L 313.995,338.514 L 280,338.514 L 294.294,324.172z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 294.294 324.172 L 328.289,324.172 L 313.995,338.514 L 280,338.514 L 294.294,324.172"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 295.599 336.092 L 295.599,336.168 L 295.613,336.23 L 295.633,336.314 L 295.661,336.397 L 295.703,336.46 L 295.751,336.536 L 295.814,336.605 L 295.876,336.668 L 295.939,336.744 L 296.022,336.821 L 296.106,336.883 L 296.196,336.939 L 296.3,336.994 L 296.397,337.057 L 296.522,337.105 L 296.633,337.168 L 296.758,337.216 L 296.897,337.265 L 297.036,337.306 L 297.168,337.348 L 297.313,337.39 L 297.459,337.431 L 297.612,337.452 L 297.779,337.48 L 297.938,337.494 L 298.105,337.522 L 298.258,337.543 L 298.431,337.563 L 298.605,337.57 L 298.771,337.577 L 298.938,337.577"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 298.57 337.577 L 298.737,337.577 L 298.896,337.57 L 299.056,337.556 L 299.222,337.536 L 299.389,337.522 L 299.542,337.494 L 299.695,337.48 L 299.854,337.445 L 300,337.411 L 300.153,337.369 L 300.285,337.327 L 300.423,337.286 L 300.555,337.237 L 300.68,337.188 L 300.791,337.14 L 300.909,337.084 L 301.02,337.022 L 301.118,336.966 L 301.215,336.897 L 301.298,336.827 L 301.375,336.758 L 301.437,336.696 L 301.506,336.619 L 301.562,336.543 L 301.604,336.48 L 301.652,336.404 L 301.673,336.314 L 301.694,336.237 L 301.715,336.168 L 301.722,336.092"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 299.306 333.308 L 299.132,333.308 L 298.966,333.315 L 298.792,333.315 L 298.639,333.329 L 298.473,333.35 L 298.306,333.363 L 298.146,333.377 L 297.98,333.412 L 297.834,333.44 L 297.688,333.461 L 297.543,333.495 L 297.397,333.537 L 297.265,333.572 L 297.14,333.613 L 297.015,333.669 L 296.876,333.711 L 296.779,333.759 L 296.668,333.801 L 296.564,333.856 L 296.48,333.919 L 296.39,333.974 L 296.314,334.023 L 296.237,334.085 L 296.182,334.148 L 296.126,334.217 L 296.071,334.28 L 296.043,334.335 L 296.008,334.405 L 295.988,334.46 L 295.981,334.537 L 295.974,334.592"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 302.083 334.592 L 302.083,334.53 L 302.076,334.46 L 302.048,334.398 L 302.02,334.321 L 301.985,334.266 L 301.93,334.19 L 301.874,334.134 L 301.819,334.065 L 301.736,334.016 L 301.673,333.947 L 301.59,333.891 L 301.479,333.842 L 301.388,333.773 L 301.284,333.738 L 301.173,333.683 L 301.048,333.627 L 300.916,333.586 L 300.784,333.544 L 300.653,333.509 L 300.514,333.481 L 300.368,333.447 L 300.215,333.412 L 300.069,333.391 L 299.917,333.363 L 299.764,333.35 L 299.604,333.329 L 299.438,333.315 L 299.264,333.315 L 299.098,333.308 L 298.938,333.308"/>
<path style="fill: #a5a585; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 280 340 L 313.995,340 L 313.995,338.514 L 280,338.514 L 280,340z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 280 340 L 313.995,340 L 313.995,338.514 L 280,338.514 L 280,340"/>
<path style="fill: #a5a585; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 294.294 324.172 L 328.289,324.172 L 328.289,300.916 L 294.294,300.916 L 294.294,324.172z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 294.294 324.172 L 328.289,324.172 L 328.289,300.916 L 294.294,300.916 L 294.294,324.172"/>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 329.219 323.256 L 329.219,300 L 328.289,300.916 L 328.289,324.172 L 329.219,323.256z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 329.219 323.256 L 329.219,300 L 328.289,300.916 L 328.289,324.172 L 329.219,323.256"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 295.974 322.694 L 326.623,322.694 L 326.623,302.784 L 295.974,302.784 L 295.974,322.694z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 295.974 322.694 L 326.623,322.694 L 326.623,302.784 L 295.974,302.784 L 295.974,322.694"/>
<path style="fill: #93936c; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 295.974 325.297 L 324.568,325.297 L 317.14,332.746 L 288.546,332.746 L 295.974,325.297z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 295.974 325.297 L 324.568,325.297 L 317.14,332.746 L 288.546,332.746 L 295.974,325.297"/>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 300.423 335.62 L 300.423,335.578 L 300.417,335.536 L 300.41,335.495 L 300.389,335.446 L 300.382,335.404 L 300.354,335.37 L 300.34,335.328 L 300.305,335.3 L 300.271,335.259 L 300.25,335.217 L 300.215,335.182 L 300.174,335.148 L 300.132,335.106 L 300.083,335.071 L 300.042,335.05 L 299.993,335.016 L 299.938,334.988 L 299.875,334.967 L 299.826,334.932 L 299.764,334.918 L 299.701,334.891 L 299.646,334.877 L 299.577,334.856 L 299.514,334.842 L 299.438,334.828 L 299.375,334.807 L 299.306,334.8 L 299.243,334.8 L 299.174,334.793 L 299.091,334.793 L 299.035,334.793 L 299.035,334.793 L 298.959,334.793 L 298.882,334.793 L 298.82,334.8 L 298.75,334.8 L 298.688,334.807 L 298.612,334.828 L 298.549,334.842 L 298.48,334.856 L 298.417,334.877 L 298.355,334.891 L 298.299,334.918 L 298.23,334.932 L 298.181,334.967 L 298.126,334.988 L 298.07,335.016 L 298.022,335.05 L 297.98,335.071 L 297.931,335.106 L 297.89,335.148 L 297.855,335.182 L 297.806,335.217 L 297.785,335.259 L 297.744,335.3 L 297.723,335.328 L 297.702,335.37 L 297.681,335.404 L 297.667,335.446 L 297.661,335.495 L 297.647,335.536 L 297.633,335.578 L 297.633,335.62 L 297.633,335.62 L 297.633,335.668 L 297.647,335.71 L 297.661,335.751 L 297.667,335.793 L 297.681,335.835 L 297.702,335.869 L 297.723,335.918 L 297.744,335.953 L 297.785,335.994 L 297.806,336.022 L 297.855,336.064 L 297.89,336.099 L 297.931,336.14 L 297.98,336.168 L 298.022,336.196 L 298.07,336.23 L 298.126,336.258 L 298.181,336.279 L 298.23,336.314 L 298.299,336.328 L 298.355,336.355 L 298.417,336.369 L 298.48,336.39 L 298.549,336.404 L 298.612,336.418 L 298.688,336.432 L 298.75,336.446 L 298.82,336.446 L 298.882,336.446 L 298.959,336.453 L 299.035,336.453 L 299.035,336.453 L 299.091,336.453 L 299.174,336.446 L 299.243,336.446 L 299.306,336.446 L 299.375,336.432 L 299.438,336.418 L 299.514,336.404 L 299.577,336.39 L 299.646,336.369 L 299.701,336.355 L 299.764,336.328 L 299.826,336.314 L 299.875,336.279 L 299.938,336.258 L 299.993,336.23 L 300.042,336.196 L 300.083,336.168 L 300.132,336.14 L 300.174,336.099 L 300.215,336.064 L 300.25,336.022 L 300.271,335.994 L 300.305,335.953 L 300.34,335.918 L 300.354,335.869 L 300.382,335.835 L 300.389,335.793 L 300.41,335.751 L 300.417,335.71 L 300.423,335.668 L 300.423,335.62z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 300.243 335.536 L 300.243,335.495 L 300.236,335.453 L 300.236,335.418 L 300.215,335.39 L 300.201,335.335 L 300.194,335.314 L 300.16,335.272 L 300.132,335.231 L 300.111,335.203 L 300.083,335.175 L 300.042,335.148 L 300.007,335.099 L 299.965,335.071 L 299.924,335.05 L 299.889,335.016 L 299.833,334.988 L 299.792,334.974 L 299.743,334.939 L 299.695,334.925 L 299.632,334.898 L 299.577,334.884 L 299.514,334.87 L 299.459,334.849 L 299.396,334.835 L 299.334,334.828 L 299.264,334.807 L 299.209,334.8 L 299.132,334.793 L 299.077,334.793 L 299.007,334.793 L 298.945,334.793 L 298.945,334.793 L 298.875,334.793 L 298.813,334.793 L 298.743,334.793 L 298.688,334.8 L 298.619,334.807 L 298.563,334.828 L 298.487,334.835 L 298.431,334.849 L 298.383,334.87 L 298.313,334.884 L 298.258,334.898 L 298.188,334.925 L 298.153,334.939 L 298.091,334.974 L 298.049,334.988 L 298.001,335.016 L 297.959,335.05 L 297.917,335.071 L 297.876,335.099 L 297.841,335.148 L 297.806,335.175 L 297.779,335.203 L 297.744,335.231 L 297.73,335.272 L 297.702,335.314 L 297.688,335.335 L 297.674,335.39 L 297.661,335.418 L 297.654,335.453 L 297.647,335.495 L 297.647,335.536 L 297.647,335.536 L 297.647,335.571 L 297.654,335.613 L 297.661,335.654 L 297.674,335.675 L 297.688,335.717 L 297.702,335.758 L 297.73,335.793 L 297.744,335.828 L 297.779,335.869 L 297.806,335.89 L 297.841,335.925 L 297.876,335.96 L 297.917,335.994 L 297.959,336.015 L 298.001,336.05 L 298.049,336.071 L 298.091,336.099 L 298.153,336.126 L 298.188,336.14 L 298.258,336.168 L 298.313,336.189 L 298.383,336.196 L 298.431,336.217 L 298.487,336.23 L 298.563,336.237 L 298.619,336.258 L 298.688,336.272 L 298.743,336.272 L 298.813,336.272 L 298.875,336.272 L 298.945,336.272 L 298.945,336.272 L 299.007,336.272 L 299.077,336.272 L 299.132,336.272 L 299.209,336.272 L 299.264,336.258 L 299.334,336.237 L 299.396,336.23 L 299.459,336.217 L 299.514,336.196 L 299.577,336.189 L 299.632,336.168 L 299.695,336.14 L 299.743,336.126 L 299.792,336.099 L 299.833,336.071 L 299.889,336.05 L 299.924,336.015 L 299.965,335.994 L 300.007,335.96 L 300.042,335.925 L 300.083,335.89 L 300.111,335.869 L 300.132,335.828 L 300.16,335.793 L 300.194,335.758 L 300.201,335.717 L 300.215,335.675 L 300.236,335.654 L 300.236,335.613 L 300.243,335.571 L 300.243,335.536"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #626248" d="M 295.793 336.272 L 295.793,336.355 L 295.807,336.418 L 295.835,336.494 L 295.856,336.578 L 295.897,336.647 L 295.939,336.709 L 296.001,336.786 L 296.064,336.862 L 296.133,336.925 L 296.203,336.994 L 296.293,337.057 L 296.376,337.126 L 296.487,337.182 L 296.591,337.237 L 296.703,337.286 L 296.821,337.348 L 296.952,337.397 L 297.07,337.445 L 297.223,337.487 L 297.362,337.529 L 297.508,337.577 L 297.654,337.612 L 297.806,337.633 L 297.959,337.661 L 298.126,337.688 L 298.285,337.702 L 298.445,337.73 L 298.612,337.744 L 298.785,337.751 L 298.952,337.751 L 299.118,337.751"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #626248" d="M 298.743 337.751 L 298.917,337.751 L 299.077,337.751 L 299.25,337.737 L 299.403,337.716 L 299.563,337.702 L 299.729,337.688 L 299.875,337.661 L 300.035,337.626 L 300.174,337.591 L 300.326,337.563 L 300.472,337.522 L 300.604,337.48 L 300.736,337.431 L 300.861,337.369 L 300.986,337.32 L 301.09,337.265 L 301.201,337.209 L 301.298,337.14 L 301.388,337.084 L 301.479,337.008 L 301.555,336.952 L 301.631,336.883 L 301.694,336.8 L 301.736,336.723 L 301.798,336.661 L 301.826,336.578 L 301.86,336.501 L 301.888,336.418 L 301.888,336.355 L 301.902,336.272"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #626248" d="M 299.486 333.488 L 299.327,333.488 L 299.16,333.495 L 298.993,333.495 L 298.827,333.509 L 298.653,333.53 L 298.487,333.537 L 298.341,333.565 L 298.174,333.586 L 298.022,333.627 L 297.876,333.641 L 297.73,333.683 L 297.591,333.711 L 297.452,333.759 L 297.327,333.801 L 297.202,333.842 L 297.07,333.884 L 296.966,333.933 L 296.855,333.981 L 296.758,334.044 L 296.668,334.099 L 296.585,334.148 L 296.501,334.217 L 296.418,334.266 L 296.369,334.321 L 296.314,334.398 L 296.265,334.453 L 296.224,334.523 L 296.196,334.578 L 296.175,334.641 L 296.168,334.717 L 296.161,334.787"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #626248" d="M 302.277 334.787 L 302.263,334.71 L 302.256,334.641 L 302.242,334.578 L 302.208,334.509 L 302.166,334.446 L 302.117,334.377 L 302.062,334.321 L 301.999,334.259 L 301.93,334.19 L 301.847,334.134 L 301.763,334.072 L 301.673,334.016 L 301.562,333.967 L 301.465,333.919 L 301.347,333.87 L 301.236,333.815 L 301.111,333.773 L 300.979,333.738 L 300.833,333.697 L 300.694,333.669 L 300.555,333.627 L 300.41,333.599 L 300.257,333.572 L 300.09,333.544 L 299.944,333.53 L 299.785,333.509 L 299.618,333.495 L 299.445,333.495 L 299.292,333.488 L 299.118,333.488"/>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 328.289 325.477 L 313.995,339.82 L 313.995,338.514 L 328.289,324.172 L 328.289,325.477z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 328.289 325.477 L 313.995,339.82 L 313.995,338.514 L 328.289,324.172 L 328.289,325.477"/>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 323.464 323.075 L 323.464,323.429 L 326.248,323.429 L 326.248,323.075 L 323.464,323.075z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 323.464 323.075 L 323.464,323.429 L 326.248,323.429 L 326.248,323.075 L 323.464,323.075"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #000000" d="M 322.7 327.157 L 294.294,327.157"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #000000" d="M 320.854 329.025 L 292.447,329.025"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #000000" d="M 319 330.885 L 290.587,330.885"/>
<path style="fill: #c9c9b6; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 295.224 300 L 329.219,300 L 328.289,300.916 L 294.294,300.916 L 295.224,300z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 295.224 300 L 329.219,300 L 328.289,300.916 L 294.294,300.916 L 295.224,300"/>
</g>
<g>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 260.594 397.19 C 260.943,395.941 262.38,389.684 262.447,388.811 C 262.514,387.938 262.192,386.851 261.722,386.623 C 261.749,386.314 261.749,386.139 261.749,386.139 C 261.641,386.099 261.521,386.059 261.413,386.005 L 261.453,386.018 C 261.453,386.018 261.776,384.622 261.977,383.655 C 262.34,381.802 262.38,380.862 262.38,380.862 C 262.367,380.607 262.299,380.379 262.071,380.312 L 260.984,380.016 C 260.755,379.949 260.594,380.097 260.446,380.325 C 260.446,380.325 260.017,381.184 259.426,382.957 C 259.104,383.883 258.808,385.065 258.808,385.065 L 258.822,385.065 C 258.177,384.85 257.519,384.662 256.861,384.474 C 255.169,384.004 253.491,383.655 251.799,383.4 C 251.799,383.4 251.719,383.548 251.571,383.83 C 251.061,383.776 250.228,384.555 249.839,385.334 C 249.449,386.112 247.476,392.222 247.126,393.471 C 246.777,394.719 246.119,397.915 245.824,399.499 C 245.529,401.084 245.26,403.85 244.24,407.529 C 243.635,409.704 242.669,412.954 242.158,414.296 C 242.024,414.659 240.963,416.445 242.507,417.062 C 244.025,417.667 246.294,418.311 247.435,418.633 C 248.577,418.942 250.846,419.546 252.457,419.815 C 254.095,420.084 254.109,417.989 254.176,417.613 C 254.431,416.203 255.263,412.913 255.854,410.738 C 256.875,407.046 258.07,404.548 258.634,403.031 C 259.184,401.514 260.245,398.439 260.594,397.19z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 260.594 397.19 C 260.943,395.941 262.38,389.684 262.447,388.811 C 262.514,387.938 262.192,386.851 261.722,386.623 C 261.749,386.314 261.749,386.139 261.749,386.139 C 261.641,386.099 261.521,386.059 261.413,386.005 L 261.453,386.018 C 261.453,386.018 261.776,384.622 261.977,383.655 C 262.34,381.802 262.38,380.862 262.38,380.862 C 262.367,380.607 262.299,380.379 262.071,380.312 L 260.984,380.016 C 260.755,379.949 260.594,380.097 260.446,380.325 C 260.446,380.325 260.017,381.184 259.426,382.957 C 259.104,383.883 258.808,385.065 258.808,385.065 L 258.822,385.065 C 258.177,384.85 257.519,384.662 256.861,384.474 C 255.169,384.004 253.491,383.655 251.799,383.4 C 251.799,383.4 251.719,383.548 251.571,383.83 L 251.571,383.83 C 251.061,383.776 250.228,384.555 249.839,385.334 C 249.449,386.112 247.476,392.222 247.126,393.471 C 246.777,394.719 246.119,397.915 245.824,399.499 C 245.529,401.084 245.26,403.85 244.24,407.529 C 243.635,409.704 242.669,412.954 242.158,414.296 C 242.024,414.659 240.963,416.445 242.507,417.062 C 244.025,417.667 246.294,418.311 247.435,418.633 C 248.577,418.942 250.846,419.546 252.457,419.815 C 254.095,420.084 254.109,417.989 254.176,417.613 C 254.431,416.203 255.263,412.913 255.854,410.738 C 256.875,407.046 258.07,404.548 258.634,403.031 C 259.184,401.514 260.245,398.439 260.594,397.19"/>
<path style="fill: #b7b79d; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 258.916 397.351 C 259.265,396.102 260.702,389.845 260.769,388.986 C 260.836,388.113 260.514,387.012 260.044,386.797 C 260.07,386.488 260.07,386.314 260.07,386.314 C 259.963,386.26 259.842,386.22 259.735,386.179 L 259.762,386.193 C 259.762,386.193 260.097,384.796 260.299,383.83 C 260.661,381.963 260.688,381.023 260.688,381.023 C 260.688,380.768 260.621,380.553 260.393,380.486 L 259.305,380.191 C 259.077,380.124 258.916,380.271 258.768,380.5 C 258.768,380.5 258.338,381.359 257.748,383.118 C 257.425,384.058 257.13,385.226 257.13,385.226 L 257.143,385.24 C 256.499,385.025 255.841,384.823 255.183,384.649 C 253.491,384.179 251.799,383.816 250.121,383.561 C 250.121,383.561 250.04,383.722 249.893,383.991 C 249.382,383.951 248.55,384.716 248.16,385.495 C 247.771,386.273 245.797,392.383 245.448,393.645 C 245.099,394.894 244.441,398.076 244.146,399.661 C 243.85,401.245 243.582,404.011 242.561,407.704 C 241.957,409.879 240.99,413.115 240.48,414.471 C 240.346,414.82 239.285,416.619 240.829,417.237 C 242.346,417.828 244.616,418.486 245.757,418.795 C 246.898,419.117 249.167,419.708 250.779,419.976 C 252.417,420.245 252.43,418.163 252.497,417.788 C 252.753,416.364 253.585,413.088 254.176,410.913 C 255.196,407.22 256.391,404.709 256.955,403.192 C 257.506,401.688 258.567,398.613 258.916,397.351z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 258.916 397.351 C 259.265,396.102 260.702,389.845 260.769,388.986 C 260.836,388.113 260.514,387.012 260.044,386.797 C 260.07,386.488 260.07,386.314 260.07,386.314 C 259.963,386.26 259.842,386.22 259.735,386.179 L 259.762,386.193 C 259.762,386.193 260.097,384.796 260.299,383.83 C 260.661,381.963 260.688,381.023 260.688,381.023 C 260.688,380.768 260.621,380.553 260.393,380.486 L 259.305,380.191 C 259.077,380.124 258.916,380.271 258.768,380.5 C 258.768,380.5 258.338,381.359 257.748,383.118 C 257.425,384.058 257.13,385.226 257.13,385.226 L 257.143,385.24 C 256.499,385.025 255.841,384.823 255.183,384.649 C 253.491,384.179 251.799,383.816 250.121,383.561 C 250.121,383.561 250.04,383.722 249.893,383.991 L 249.893,383.991 C 249.382,383.951 248.55,384.716 248.16,385.495 C 247.771,386.273 245.797,392.383 245.448,393.645 C 245.099,394.894 244.441,398.076 244.146,399.661 C 243.85,401.245 243.582,404.011 242.561,407.704 C 241.957,409.879 240.99,413.115 240.48,414.471 C 240.346,414.82 239.285,416.619 240.829,417.237 C 242.346,417.828 244.616,418.486 245.757,418.795 C 246.898,419.117 249.167,419.708 250.779,419.976 C 252.417,420.245 252.43,418.163 252.497,417.788 C 252.753,416.364 253.585,413.088 254.176,410.913 C 255.196,407.22 256.391,404.709 256.955,403.192 C 257.506,401.688 258.567,398.613 258.916,397.351"/>
<path style="fill: #c9c9b6; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.8; stroke: #ecece7" fill-rule="evenodd" d="M 250.336 383.601 C 250.336,383.601 248.12,388.126 246.845,392.719 C 245.341,398.184 245.126,399.996 245.354,402.534 C 245.394,403.058 245.918,403.702 246.495,403.863 C 246.724,403.917 246.992,403.998 247.1,404.024 C 247.22,404.065 247.65,404.159 247.999,404.441 C 248.362,404.723 248.442,404.79 248.657,404.897 C 248.859,405.018 248.899,405.099 249.49,405.26 C 250.08,405.421 250.148,405.381 250.389,405.381 C 250.631,405.394 250.738,405.381 251.195,405.327 C 251.638,405.26 252.054,405.394 252.175,405.421 C 252.283,405.461 252.551,405.528 252.779,405.595 C 253.357,405.757 254.136,405.475 254.444,405.045 C 255.935,402.991 256.687,401.312 258.191,395.847 C 259.453,391.255 259.869,386.233 259.869,386.233 L 250.336,383.601z"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 253.021 402.561 C 252.632,403.998 251.141,404.83 249.718,404.441 C 248.281,404.051 247.449,402.561 247.838,401.138 C 248.241,399.701 249.718,398.868 251.141,399.258 C 252.578,399.661 253.41,401.138 253.021,402.561z"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 248.066 398.157 C 248.429,398.264 248.711,398.412 248.845,398.492 C 248.979,398.586 249.02,398.707 248.899,398.788 C 248.778,398.868 248.563,399.029 248.442,399.137 C 248.295,399.258 248.201,399.285 247.999,399.164 C 247.637,398.962 246.871,398.412 246.683,398.157 C 246.576,398.022 246.67,397.969 246.871,397.955 C 247.14,397.942 247.677,398.049 248.066,398.157z"/>
<path style="fill: #ff0000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 246.16 400.99 C 246.361,401.057 246.845,401.299 246.979,401.406 C 247.126,401.5 247.341,401.728 247.328,401.997 C 247.301,402.306 247.328,402.964 247.462,403.179 C 247.637,403.46 247.61,403.581 247.355,403.541 C 247.153,403.501 246.63,403.313 246.482,403.232 C 246.334,403.165 246.119,403.031 246.052,402.829 C 245.918,402.413 245.878,401.554 245.958,401.124 C 245.985,400.95 246.066,400.95 246.16,400.99z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 253.021 402.561 C 252.632,403.998 251.141,404.83 249.718,404.441 C 248.281,404.051 247.449,402.561 247.838,401.138 C 248.241,399.701 249.718,398.868 251.141,399.258 C 252.578,399.661 253.41,401.138 253.021,402.561"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 248.066 398.157 C 248.429,398.264 248.711,398.412 248.845,398.492 C 248.979,398.586 249.02,398.707 248.899,398.788 C 248.778,398.868 248.563,399.029 248.442,399.137 C 248.295,399.258 248.201,399.285 247.999,399.164 C 247.637,398.962 246.871,398.412 246.683,398.157 C 246.576,398.022 246.67,397.969 246.871,397.955 C 247.14,397.942 247.677,398.049 248.066,398.157"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.16 400.99 C 246.361,401.057 246.845,401.299 246.979,401.406 C 247.126,401.5 247.341,401.728 247.328,401.997 C 247.301,402.306 247.328,402.964 247.462,403.179 C 247.637,403.46 247.61,403.581 247.355,403.541 C 247.153,403.501 246.63,403.313 246.482,403.232 C 246.334,403.165 246.119,403.031 246.052,402.829 C 245.918,402.413 245.878,401.554 245.958,401.124 C 245.985,400.95 246.066,400.95 246.16,400.99"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 254.35 399.889 C 253.988,399.795 253.679,399.781 253.518,399.781 C 253.357,399.795 253.263,399.875 253.316,399.996 C 253.384,400.13 253.491,400.386 253.531,400.533 C 253.598,400.708 253.666,400.788 253.894,400.802 C 254.31,400.802 255.25,400.721 255.545,400.6 C 255.693,400.533 255.639,400.439 255.478,400.332 C 255.25,400.184 254.74,399.996 254.35,399.889z"/>
<path style="fill: #00ff00; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 254.538 403.299 C 254.337,403.246 253.786,403.219 253.612,403.232 C 253.451,403.246 253.142,403.326 253.021,403.568 C 252.887,403.85 252.524,404.4 252.296,404.521 C 252.001,404.669 251.96,404.79 252.202,404.87 C 252.39,404.951 252.941,405.058 253.102,405.072 C 253.276,405.085 253.518,405.085 253.679,404.938 C 254.028,404.656 254.485,403.93 254.646,403.528 C 254.713,403.366 254.646,403.326 254.538,403.299z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.35 399.889 C 253.988,399.795 253.679,399.781 253.518,399.781 C 253.357,399.795 253.263,399.875 253.316,399.996 C 253.384,400.13 253.491,400.386 253.531,400.533 C 253.598,400.708 253.666,400.788 253.894,400.802 C 254.31,400.802 255.25,400.721 255.545,400.6 C 255.693,400.533 255.639,400.439 255.478,400.332 C 255.25,400.184 254.74,399.996 254.35,399.889"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.538 403.299 C 254.337,403.246 253.786,403.219 253.612,403.232 C 253.451,403.246 253.142,403.326 253.021,403.568 C 252.887,403.85 252.524,404.4 252.296,404.521 C 252.001,404.669 251.96,404.79 252.202,404.87 C 252.39,404.951 252.941,405.058 253.102,405.072 C 253.276,405.085 253.518,405.085 253.679,404.938 C 254.028,404.656 254.485,403.93 254.646,403.528 C 254.713,403.366 254.646,403.326 254.538,403.299"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.095 387.791 L 254.981,384.582"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.391 387.871 L 255.277,384.662"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 260.688 380.889 C 260.688,380.889 260.178,380.741 259.748,380.634 C 259.372,380.527 258.835,380.379 258.835,380.379"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 258.916 397.351 C 259.265,396.102 260.702,389.845 260.769,388.986 C 260.836,388.113 260.514,387.012 260.044,386.797 C 260.07,386.488 260.07,386.314 260.07,386.314 C 259.963,386.26 259.842,386.22 259.735,386.179 L 259.762,386.193 C 259.762,386.193 260.097,384.796 260.299,383.83 C 260.661,381.963 260.688,381.023 260.688,381.023 C 260.688,380.768 260.621,380.553 260.393,380.486 L 259.305,380.191 C 259.077,380.124 258.916,380.271 258.768,380.5 C 258.768,380.5 258.338,381.359 257.748,383.118 C 257.425,384.058 257.13,385.226 257.13,385.226 L 257.143,385.24 C 256.499,385.025 255.841,384.823 255.183,384.649 C 253.491,384.179 251.799,383.816 250.121,383.561 C 250.121,383.561 250.04,383.722 249.893,383.991 L 249.893,383.991 C 249.382,383.951 248.55,384.716 248.16,385.495 C 247.771,386.273 245.797,392.383 245.448,393.645 C 245.099,394.894 244.441,398.076 244.146,399.661 C 243.85,401.245 243.582,404.011 242.561,407.704 C 241.957,409.879 240.99,413.115 240.48,414.471 C 240.346,414.82 239.285,416.619 240.829,417.237 C 242.346,417.828 244.616,418.486 245.757,418.795 C 246.898,419.117 249.167,419.708 250.779,419.976 C 252.417,420.245 252.43,418.163 252.497,417.788 C 252.753,416.364 253.585,413.088 254.176,410.913 C 255.196,407.22 256.391,404.709 256.955,403.192 C 257.506,401.688 258.567,398.613 258.916,397.351"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 247.1 406.133 C 246.925,406.764 246.267,407.14 245.623,406.965 C 244.978,406.79 244.602,406.133 244.777,405.488 C 244.965,404.844 245.623,404.468 246.267,404.642 C 246.912,404.817 247.288,405.488 247.1,406.133z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 250.148 407.408 C 249.973,408.053 249.302,408.429 248.657,408.254 C 248.026,408.08 247.65,407.408 247.825,406.777 C 247.999,406.133 248.657,405.757 249.302,405.931 C 249.946,406.106 250.322,406.777 250.148,407.408z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 253.424 407.878 C 253.249,408.509 252.578,408.885 251.933,408.711 C 251.302,408.536 250.926,407.878 251.101,407.234 C 251.276,406.589 251.933,406.213 252.578,406.388 C 253.223,406.562 253.598,407.234 253.424,407.878z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 246.375 408.778 C 246.2,409.422 245.529,409.798 244.898,409.61 C 244.253,409.436 243.877,408.778 244.052,408.133 C 244.226,407.489 244.898,407.113 245.529,407.287 C 246.173,407.475 246.549,408.133 246.375,408.778z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 249.409 410.067 C 249.235,410.711 248.577,411.087 247.932,410.899 C 247.288,410.725 246.912,410.067 247.086,409.422 C 247.274,408.778 247.932,408.402 248.577,408.576 C 249.208,408.764 249.597,409.422 249.409,410.067z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 252.699 410.523 C 252.511,411.154 251.853,411.544 251.208,411.356 C 250.564,411.181 250.188,410.523 250.362,409.879 C 250.55,409.234 251.208,408.858 251.853,409.033 C 252.497,409.221 252.873,409.879 252.699,410.523z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 245.649 411.423 C 245.475,412.067 244.804,412.443 244.159,412.269 C 243.528,412.094 243.139,411.423 243.327,410.778 C 243.501,410.147 244.159,409.758 244.804,409.946 C 245.448,410.12 245.824,410.778 245.649,411.423z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 248.684 412.712 C 248.509,413.356 247.838,413.732 247.207,413.558 C 246.563,413.383 246.187,412.712 246.361,412.067 C 246.536,411.423 247.207,411.06 247.838,411.235 C 248.483,411.409 248.859,412.067 248.684,412.712z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 251.96 413.168 C 251.786,413.813 251.114,414.189 250.483,414.001 C 249.839,413.826 249.463,413.168 249.637,412.524 C 249.812,411.879 250.483,411.503 251.114,411.691 C 251.759,411.866 252.135,412.524 251.96,413.168z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 244.911 414.068 C 244.736,414.713 244.065,415.089 243.434,414.914 C 242.789,414.739 242.413,414.082 242.588,413.437 C 242.763,412.793 243.434,412.417 244.065,412.591 C 244.71,412.766 245.086,413.437 244.911,414.082 L 244.911,414.068z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 247.959 415.357 C 247.771,416.002 247.113,416.378 246.469,416.203 C 245.824,416.029 245.448,415.357 245.636,414.726 C 245.811,414.082 246.469,413.706 247.113,413.88 C 247.758,414.055 248.134,414.726 247.959,415.357z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 251.235 415.814 C 251.047,416.458 250.389,416.834 249.745,416.66 C 249.1,416.485 248.724,415.814 248.912,415.169 C 249.087,414.538 249.745,414.162 250.389,414.337 C 251.034,414.511 251.41,415.169 251.235,415.814z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.428 417.156 C 246.415,417.21 246.307,417.237 246.187,417.21 C 246.079,417.17 245.999,417.103 246.025,417.036 C 246.039,416.982 246.146,416.955 246.254,416.982 C 246.361,417.009 246.442,417.089 246.428,417.143"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.025 417.036 L 245.636,418.419"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.079 417.156 L 245.73,418.445"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.428 417.156 L 246.039,418.526"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.307 417.21 L 245.958,418.499"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 248.751 397.19 L 248.483,398.143"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 248.859 397.217 L 248.59,398.184"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.27 398.707 L 254.001,399.674"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.162 398.68 L 253.894,399.647"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 259.762 386.193 C 259.762,386.193 260.097,384.796 260.299,383.83 C 260.661,381.963 260.688,381.023 260.688,381.023 C 260.688,380.768 260.621,380.553 260.393,380.486 L 259.305,380.191 C 259.077,380.124 258.916,380.271 258.768,380.5 C 258.768,380.5 258.338,381.359 257.748,383.118 C 257.425,384.058 257.13,385.226 257.13,385.226"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 259.896 385.683 C 259.023,385.347 258.15,385.038 257.251,384.756"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 249.033 385.871 C 250.819,386.126 252.739,386.529 254.525,387.025 C 256.311,387.522 258.164,388.153 259.829,388.852"/>
<path style="fill: #b7b79d; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" fill-rule="evenodd" d="M 256.7 398.922 C 256.633,399.164 256.391,399.298 256.15,399.231 L 246.858,396.666 C 246.616,396.599 246.482,396.357 246.549,396.129 L 248.174,390.248 C 248.241,390.006 248.483,389.872 248.711,389.939 L 258.016,392.504 C 258.258,392.571 258.392,392.813 258.325,393.054 L 256.7,398.935 L 256.7,398.922z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.095 387.791 L 254.981,384.582"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.391 387.871 L 255.277,384.662"/>
</g>
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="327.424" y1="326.359" x2="444.266" y2="375.437"/>
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="259.522" y1="401.737" x2="439.089" y2="384.112"/>
<g>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 290.594 477.19 C 290.943,475.941 292.38,469.684 292.447,468.811 C 292.514,467.938 292.192,466.851 291.722,466.623 C 291.749,466.314 291.749,466.139 291.749,466.139 C 291.641,466.099 291.521,466.059 291.413,466.005 L 291.453,466.018 C 291.453,466.018 291.776,464.622 291.977,463.655 C 292.34,461.802 292.38,460.862 292.38,460.862 C 292.367,460.607 292.299,460.379 292.071,460.312 L 290.984,460.016 C 290.755,459.949 290.594,460.097 290.446,460.325 C 290.446,460.325 290.017,461.184 289.426,462.957 C 289.104,463.883 288.808,465.065 288.808,465.065 L 288.822,465.065 C 288.177,464.85 287.519,464.662 286.861,464.474 C 285.169,464.004 283.491,463.655 281.799,463.4 C 281.799,463.4 281.719,463.548 281.571,463.83 C 281.061,463.776 280.228,464.555 279.839,465.334 C 279.449,466.112 277.476,472.222 277.126,473.471 C 276.777,474.719 276.119,477.915 275.824,479.499 C 275.529,481.084 275.26,483.85 274.24,487.529 C 273.635,489.704 272.669,492.954 272.158,494.296 C 272.024,494.659 270.963,496.445 272.507,497.062 C 274.025,497.667 276.294,498.311 277.435,498.633 C 278.577,498.942 280.846,499.546 282.457,499.815 C 284.095,500.084 284.109,497.989 284.176,497.613 C 284.431,496.203 285.263,492.913 285.854,490.738 C 286.875,487.046 288.07,484.548 288.634,483.031 C 289.184,481.514 290.245,478.439 290.594,477.19z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 290.594 477.19 C 290.943,475.941 292.38,469.684 292.447,468.811 C 292.514,467.938 292.192,466.851 291.722,466.623 C 291.749,466.314 291.749,466.139 291.749,466.139 C 291.641,466.099 291.521,466.059 291.413,466.005 L 291.453,466.018 C 291.453,466.018 291.776,464.622 291.977,463.655 C 292.34,461.802 292.38,460.862 292.38,460.862 C 292.367,460.607 292.299,460.379 292.071,460.312 L 290.984,460.016 C 290.755,459.949 290.594,460.097 290.446,460.325 C 290.446,460.325 290.017,461.184 289.426,462.957 C 289.104,463.883 288.808,465.065 288.808,465.065 L 288.822,465.065 C 288.177,464.85 287.519,464.662 286.861,464.474 C 285.169,464.004 283.491,463.655 281.799,463.4 C 281.799,463.4 281.719,463.548 281.571,463.83 L 281.571,463.83 C 281.061,463.776 280.228,464.555 279.839,465.334 C 279.449,466.112 277.476,472.222 277.126,473.471 C 276.777,474.719 276.119,477.915 275.824,479.499 C 275.529,481.084 275.26,483.85 274.24,487.529 C 273.635,489.704 272.669,492.954 272.158,494.296 C 272.024,494.659 270.963,496.445 272.507,497.062 C 274.025,497.667 276.294,498.311 277.435,498.633 C 278.577,498.942 280.846,499.546 282.457,499.815 C 284.095,500.084 284.109,497.989 284.176,497.613 C 284.431,496.203 285.263,492.913 285.854,490.738 C 286.875,487.046 288.07,484.548 288.634,483.031 C 289.184,481.514 290.245,478.439 290.594,477.19"/>
<path style="fill: #b7b79d; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 288.916 477.351 C 289.265,476.102 290.702,469.845 290.769,468.986 C 290.836,468.113 290.514,467.012 290.044,466.797 C 290.07,466.488 290.07,466.314 290.07,466.314 C 289.963,466.26 289.842,466.22 289.735,466.179 L 289.762,466.193 C 289.762,466.193 290.097,464.796 290.299,463.83 C 290.661,461.963 290.688,461.023 290.688,461.023 C 290.688,460.768 290.621,460.553 290.393,460.486 L 289.305,460.191 C 289.077,460.124 288.916,460.271 288.768,460.5 C 288.768,460.5 288.338,461.359 287.748,463.118 C 287.425,464.058 287.13,465.226 287.13,465.226 L 287.143,465.24 C 286.499,465.025 285.841,464.823 285.183,464.649 C 283.491,464.179 281.799,463.816 280.121,463.561 C 280.121,463.561 280.04,463.722 279.893,463.991 C 279.382,463.951 278.55,464.716 278.16,465.495 C 277.771,466.273 275.797,472.383 275.448,473.645 C 275.099,474.894 274.441,478.076 274.146,479.661 C 273.85,481.245 273.582,484.011 272.561,487.704 C 271.957,489.879 270.99,493.115 270.48,494.471 C 270.346,494.82 269.285,496.619 270.829,497.237 C 272.346,497.828 274.616,498.486 275.757,498.795 C 276.898,499.117 279.167,499.708 280.779,499.976 C 282.417,500.245 282.43,498.163 282.497,497.788 C 282.753,496.364 283.585,493.088 284.176,490.913 C 285.196,487.22 286.391,484.709 286.955,483.192 C 287.506,481.688 288.567,478.613 288.916,477.351z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 288.916 477.351 C 289.265,476.102 290.702,469.845 290.769,468.986 C 290.836,468.113 290.514,467.012 290.044,466.797 C 290.07,466.488 290.07,466.314 290.07,466.314 C 289.963,466.26 289.842,466.22 289.735,466.179 L 289.762,466.193 C 289.762,466.193 290.097,464.796 290.299,463.83 C 290.661,461.963 290.688,461.023 290.688,461.023 C 290.688,460.768 290.621,460.553 290.393,460.486 L 289.305,460.191 C 289.077,460.124 288.916,460.271 288.768,460.5 C 288.768,460.5 288.338,461.359 287.748,463.118 C 287.425,464.058 287.13,465.226 287.13,465.226 L 287.143,465.24 C 286.499,465.025 285.841,464.823 285.183,464.649 C 283.491,464.179 281.799,463.816 280.121,463.561 C 280.121,463.561 280.04,463.722 279.893,463.991 L 279.893,463.991 C 279.382,463.951 278.55,464.716 278.16,465.495 C 277.771,466.273 275.797,472.383 275.448,473.645 C 275.099,474.894 274.441,478.076 274.146,479.661 C 273.85,481.245 273.582,484.011 272.561,487.704 C 271.957,489.879 270.99,493.115 270.48,494.471 C 270.346,494.82 269.285,496.619 270.829,497.237 C 272.346,497.828 274.616,498.486 275.757,498.795 C 276.898,499.117 279.167,499.708 280.779,499.976 C 282.417,500.245 282.43,498.163 282.497,497.788 C 282.753,496.364 283.585,493.088 284.176,490.913 C 285.196,487.22 286.391,484.709 286.955,483.192 C 287.506,481.688 288.567,478.613 288.916,477.351"/>
<path style="fill: #c9c9b6; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.8; stroke: #ecece7" fill-rule="evenodd" d="M 280.336 463.601 C 280.336,463.601 278.12,468.126 276.845,472.719 C 275.341,478.184 275.126,479.996 275.354,482.534 C 275.394,483.058 275.918,483.702 276.495,483.863 C 276.724,483.917 276.992,483.998 277.1,484.024 C 277.22,484.065 277.65,484.159 277.999,484.441 C 278.362,484.723 278.442,484.79 278.657,484.897 C 278.859,485.018 278.899,485.099 279.49,485.26 C 280.08,485.421 280.148,485.381 280.389,485.381 C 280.631,485.394 280.738,485.381 281.195,485.327 C 281.638,485.26 282.054,485.394 282.175,485.421 C 282.283,485.461 282.551,485.528 282.779,485.595 C 283.357,485.757 284.136,485.475 284.444,485.045 C 285.935,482.991 286.687,481.312 288.191,475.847 C 289.453,471.255 289.869,466.233 289.869,466.233 L 280.336,463.601z"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 283.021 482.561 C 282.632,483.998 281.141,484.83 279.718,484.441 C 278.281,484.051 277.449,482.561 277.838,481.138 C 278.241,479.701 279.718,478.868 281.141,479.258 C 282.578,479.661 283.41,481.138 283.021,482.561z"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 278.066 478.157 C 278.429,478.264 278.711,478.412 278.845,478.492 C 278.979,478.586 279.02,478.707 278.899,478.788 C 278.778,478.868 278.563,479.029 278.442,479.137 C 278.295,479.258 278.201,479.285 277.999,479.164 C 277.637,478.962 276.871,478.412 276.683,478.157 C 276.576,478.022 276.67,477.969 276.871,477.955 C 277.14,477.942 277.677,478.049 278.066,478.157z"/>
<path style="fill: #ff0000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 276.16 480.99 C 276.361,481.057 276.845,481.299 276.979,481.406 C 277.126,481.5 277.341,481.728 277.328,481.997 C 277.301,482.306 277.328,482.964 277.462,483.179 C 277.637,483.46 277.61,483.581 277.355,483.541 C 277.153,483.501 276.63,483.313 276.482,483.232 C 276.334,483.165 276.119,483.031 276.052,482.829 C 275.918,482.413 275.878,481.554 275.958,481.124 C 275.985,480.95 276.066,480.95 276.16,480.99z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 283.021 482.561 C 282.632,483.998 281.141,484.83 279.718,484.441 C 278.281,484.051 277.449,482.561 277.838,481.138 C 278.241,479.701 279.718,478.868 281.141,479.258 C 282.578,479.661 283.41,481.138 283.021,482.561"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 278.066 478.157 C 278.429,478.264 278.711,478.412 278.845,478.492 C 278.979,478.586 279.02,478.707 278.899,478.788 C 278.778,478.868 278.563,479.029 278.442,479.137 C 278.295,479.258 278.201,479.285 277.999,479.164 C 277.637,478.962 276.871,478.412 276.683,478.157 C 276.576,478.022 276.67,477.969 276.871,477.955 C 277.14,477.942 277.677,478.049 278.066,478.157"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.16 480.99 C 276.361,481.057 276.845,481.299 276.979,481.406 C 277.126,481.5 277.341,481.728 277.328,481.997 C 277.301,482.306 277.328,482.964 277.462,483.179 C 277.637,483.46 277.61,483.581 277.355,483.541 C 277.153,483.501 276.63,483.313 276.482,483.232 C 276.334,483.165 276.119,483.031 276.052,482.829 C 275.918,482.413 275.878,481.554 275.958,481.124 C 275.985,480.95 276.066,480.95 276.16,480.99"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 284.35 479.889 C 283.988,479.795 283.679,479.781 283.518,479.781 C 283.357,479.795 283.263,479.875 283.316,479.996 C 283.384,480.13 283.491,480.386 283.531,480.533 C 283.598,480.708 283.666,480.788 283.894,480.802 C 284.31,480.802 285.25,480.721 285.545,480.6 C 285.693,480.533 285.639,480.439 285.478,480.332 C 285.25,480.184 284.74,479.996 284.35,479.889z"/>
<path style="fill: #00ff00; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 284.538 483.299 C 284.337,483.246 283.786,483.219 283.612,483.232 C 283.451,483.246 283.142,483.326 283.021,483.568 C 282.887,483.85 282.524,484.4 282.296,484.521 C 282.001,484.669 281.96,484.79 282.202,484.87 C 282.39,484.951 282.941,485.058 283.102,485.072 C 283.276,485.085 283.518,485.085 283.679,484.938 C 284.028,484.656 284.485,483.93 284.646,483.528 C 284.713,483.366 284.646,483.326 284.538,483.299z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.35 479.889 C 283.988,479.795 283.679,479.781 283.518,479.781 C 283.357,479.795 283.263,479.875 283.316,479.996 C 283.384,480.13 283.491,480.386 283.531,480.533 C 283.598,480.708 283.666,480.788 283.894,480.802 C 284.31,480.802 285.25,480.721 285.545,480.6 C 285.693,480.533 285.639,480.439 285.478,480.332 C 285.25,480.184 284.74,479.996 284.35,479.889"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.538 483.299 C 284.337,483.246 283.786,483.219 283.612,483.232 C 283.451,483.246 283.142,483.326 283.021,483.568 C 282.887,483.85 282.524,484.4 282.296,484.521 C 282.001,484.669 281.96,484.79 282.202,484.87 C 282.39,484.951 282.941,485.058 283.102,485.072 C 283.276,485.085 283.518,485.085 283.679,484.938 C 284.028,484.656 284.485,483.93 284.646,483.528 C 284.713,483.366 284.646,483.326 284.538,483.299"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.095 467.791 L 284.981,464.582"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.391 467.871 L 285.277,464.662"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 290.688 460.889 C 290.688,460.889 290.178,460.741 289.748,460.634 C 289.372,460.527 288.835,460.379 288.835,460.379"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 288.916 477.351 C 289.265,476.102 290.702,469.845 290.769,468.986 C 290.836,468.113 290.514,467.012 290.044,466.797 C 290.07,466.488 290.07,466.314 290.07,466.314 C 289.963,466.26 289.842,466.22 289.735,466.179 L 289.762,466.193 C 289.762,466.193 290.097,464.796 290.299,463.83 C 290.661,461.963 290.688,461.023 290.688,461.023 C 290.688,460.768 290.621,460.553 290.393,460.486 L 289.305,460.191 C 289.077,460.124 288.916,460.271 288.768,460.5 C 288.768,460.5 288.338,461.359 287.748,463.118 C 287.425,464.058 287.13,465.226 287.13,465.226 L 287.143,465.24 C 286.499,465.025 285.841,464.823 285.183,464.649 C 283.491,464.179 281.799,463.816 280.121,463.561 C 280.121,463.561 280.04,463.722 279.893,463.991 L 279.893,463.991 C 279.382,463.951 278.55,464.716 278.16,465.495 C 277.771,466.273 275.797,472.383 275.448,473.645 C 275.099,474.894 274.441,478.076 274.146,479.661 C 273.85,481.245 273.582,484.011 272.561,487.704 C 271.957,489.879 270.99,493.115 270.48,494.471 C 270.346,494.82 269.285,496.619 270.829,497.237 C 272.346,497.828 274.616,498.486 275.757,498.795 C 276.898,499.117 279.167,499.708 280.779,499.976 C 282.417,500.245 282.43,498.163 282.497,497.788 C 282.753,496.364 283.585,493.088 284.176,490.913 C 285.196,487.22 286.391,484.709 286.955,483.192 C 287.506,481.688 288.567,478.613 288.916,477.351"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 277.1 486.133 C 276.925,486.764 276.267,487.14 275.623,486.965 C 274.978,486.79 274.602,486.133 274.777,485.488 C 274.965,484.844 275.623,484.468 276.267,484.642 C 276.912,484.817 277.288,485.488 277.1,486.133z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 280.148 487.408 C 279.973,488.053 279.302,488.429 278.657,488.254 C 278.026,488.08 277.65,487.408 277.825,486.777 C 277.999,486.133 278.657,485.757 279.302,485.931 C 279.946,486.106 280.322,486.777 280.148,487.408z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 283.424 487.878 C 283.249,488.509 282.578,488.885 281.933,488.711 C 281.302,488.536 280.926,487.878 281.101,487.234 C 281.276,486.589 281.933,486.213 282.578,486.388 C 283.223,486.562 283.598,487.234 283.424,487.878z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 276.375 488.778 C 276.2,489.422 275.529,489.798 274.898,489.61 C 274.253,489.436 273.877,488.778 274.052,488.133 C 274.226,487.489 274.898,487.113 275.529,487.287 C 276.173,487.475 276.549,488.133 276.375,488.778z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 279.409 490.067 C 279.235,490.711 278.577,491.087 277.932,490.899 C 277.288,490.725 276.912,490.067 277.086,489.422 C 277.274,488.778 277.932,488.402 278.577,488.576 C 279.208,488.764 279.597,489.422 279.409,490.067z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 282.699 490.523 C 282.511,491.154 281.853,491.544 281.208,491.356 C 280.564,491.181 280.188,490.523 280.362,489.879 C 280.55,489.234 281.208,488.858 281.853,489.033 C 282.497,489.221 282.873,489.879 282.699,490.523z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 275.649 491.423 C 275.475,492.067 274.804,492.443 274.159,492.269 C 273.528,492.094 273.139,491.423 273.327,490.778 C 273.501,490.147 274.159,489.758 274.804,489.946 C 275.448,490.12 275.824,490.778 275.649,491.423z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 278.684 492.712 C 278.509,493.356 277.838,493.732 277.207,493.558 C 276.563,493.383 276.187,492.712 276.361,492.067 C 276.536,491.423 277.207,491.06 277.838,491.235 C 278.483,491.409 278.859,492.067 278.684,492.712z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 281.96 493.168 C 281.786,493.813 281.114,494.189 280.483,494.001 C 279.839,493.826 279.463,493.168 279.637,492.524 C 279.812,491.879 280.483,491.503 281.114,491.691 C 281.759,491.866 282.135,492.524 281.96,493.168z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 274.911 494.068 C 274.736,494.713 274.065,495.089 273.434,494.914 C 272.789,494.739 272.413,494.082 272.588,493.437 C 272.763,492.793 273.434,492.417 274.065,492.591 C 274.71,492.766 275.086,493.437 274.911,494.082 L 274.911,494.068z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 277.959 495.357 C 277.771,496.002 277.113,496.378 276.469,496.203 C 275.824,496.029 275.448,495.357 275.636,494.726 C 275.811,494.082 276.469,493.706 277.113,493.88 C 277.758,494.055 278.134,494.726 277.959,495.357z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 281.235 495.814 C 281.047,496.458 280.389,496.834 279.745,496.66 C 279.1,496.485 278.724,495.814 278.912,495.169 C 279.087,494.538 279.745,494.162 280.389,494.337 C 281.034,494.511 281.41,495.169 281.235,495.814z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.428 497.156 C 276.415,497.21 276.307,497.237 276.187,497.21 C 276.079,497.17 275.999,497.103 276.025,497.036 C 276.039,496.982 276.146,496.955 276.254,496.982 C 276.361,497.009 276.442,497.089 276.428,497.143"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.025 497.036 L 275.636,498.419"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.079 497.156 L 275.73,498.445"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.428 497.156 L 276.039,498.526"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.307 497.21 L 275.958,498.499"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 278.751 477.19 L 278.483,478.143"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 278.859 477.217 L 278.59,478.184"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.27 478.707 L 284.001,479.674"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.162 478.68 L 283.894,479.647"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 289.762 466.193 C 289.762,466.193 290.097,464.796 290.299,463.83 C 290.661,461.963 290.688,461.023 290.688,461.023 C 290.688,460.768 290.621,460.553 290.393,460.486 L 289.305,460.191 C 289.077,460.124 288.916,460.271 288.768,460.5 C 288.768,460.5 288.338,461.359 287.748,463.118 C 287.425,464.058 287.13,465.226 287.13,465.226"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 289.896 465.683 C 289.023,465.347 288.15,465.038 287.251,464.756"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 279.033 465.871 C 280.819,466.126 282.739,466.529 284.525,467.025 C 286.311,467.522 288.164,468.153 289.829,468.852"/>
<path style="fill: #b7b79d; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" fill-rule="evenodd" d="M 286.7 478.922 C 286.633,479.164 286.391,479.298 286.15,479.231 L 276.858,476.666 C 276.616,476.599 276.482,476.357 276.549,476.129 L 278.174,470.248 C 278.241,470.006 278.483,469.872 278.711,469.939 L 288.016,472.504 C 288.258,472.571 288.392,472.813 288.325,473.054 L 286.7,478.935 L 286.7,478.922z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.095 467.791 L 284.981,464.582"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.391 467.871 L 285.277,464.662"/>
</g>
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="290.438" y1="479.005" x2="440.053" y2="393.475"/>
<g>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 714.565 323.746 L 714.565,310.35"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 714.565 323.53 L 714.565,314.341"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 714.954 311.638 L 714.135,311.638 L 714.135,310 L 714.954,310 L 714.954,311.638z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 714.954 311.638 L 714.135,311.638 L 714.135,310 L 714.954,310 L 714.954,311.638"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 694.709 323.746 L 694.709,310.35"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 694.709 323.53 L 694.709,314.341"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 695.098 311.638 L 694.279,311.638 L 694.279,310 L 695.098,310 L 695.098,311.638z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 695.098 311.638 L 694.279,311.638 L 694.279,310 L 695.098,310 L 695.098,311.638"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 720.119 325.447 C 720.119,328.681 713.377,331.303 705.06,331.303 C 696.742,331.303 690,328.681 690,325.447 L 690,334.025 C 690,337.26 696.742,339.882 705.06,339.882 C 713.377,339.882 720.119,337.26 720.119,334.025 L 720.119,325.447z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 720.119 325.447 C 720.119,328.681 713.377,331.303 705.06,331.303 C 696.742,331.303 690,328.681 690,325.447 L 690,334.025 C 690,337.26 696.742,339.882 705.06,339.882 C 713.377,339.882 720.119,337.26 720.119,334.025 L 720.119,325.447"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 705.06 331.303 C 713.377,331.303 720.119,328.681 720.119,325.447 C 720.119,322.212 713.377,319.59 705.06,319.59 C 696.742,319.59 690,322.212 690,325.447 C 690,328.681 696.742,331.303 705.06,331.303z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 705.06 331.303 C 713.377,331.303 720.119,328.681 720.119,325.447 C 720.119,322.212 713.377,319.59 705.06,319.59 C 696.742,319.59 690,322.212 690,325.447 C 690,328.681 696.742,331.303 705.06,331.303"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 701.621 323.157 L 702.864,325.022 L 698.163,326.108 L 699.19,325.254 L 691.923,324.012 L 693.746,322.645 L 700.758,323.832 L 701.621,323.157z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 708.237 327.68 L 707.388,325.757 L 711.629,324.91 L 710.894,325.568 L 717.962,326.776 L 716.268,328.133 L 709.24,326.813 L 708.237,327.68z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 705.918 322.138 L 710.668,320.838 L 710.724,322.874 L 709.538,322.647 L 707.218,324.57 L 705.006,324.247 L 707.399,322.367 L 705.918,322.138z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 703.882 329.434 L 699.359,330.281 L 699.19,328.19 L 700.489,328.472 L 702.979,326.345 L 705.183,326.719 L 702.525,329.037 L 703.882,329.434z"/>
</g>
<g>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 774.565 453.746 L 774.565,440.35"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 774.565 453.53 L 774.565,444.341"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 774.954 441.638 L 774.135,441.638 L 774.135,440 L 774.954,440 L 774.954,441.638z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 774.954 441.638 L 774.135,441.638 L 774.135,440 L 774.954,440 L 774.954,441.638"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 754.709 453.746 L 754.709,440.35"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 754.709 453.53 L 754.709,444.341"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 755.098 441.638 L 754.279,441.638 L 754.279,440 L 755.098,440 L 755.098,441.638z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 755.098 441.638 L 754.279,441.638 L 754.279,440 L 755.098,440 L 755.098,441.638"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 780.119 455.447 C 780.119,458.681 773.377,461.303 765.06,461.303 C 756.742,461.303 750,458.681 750,455.447 L 750,464.025 C 750,467.26 756.742,469.882 765.06,469.882 C 773.377,469.882 780.119,467.26 780.119,464.025 L 780.119,455.447z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 780.119 455.447 C 780.119,458.681 773.377,461.303 765.06,461.303 C 756.742,461.303 750,458.681 750,455.447 L 750,464.025 C 750,467.26 756.742,469.882 765.06,469.882 C 773.377,469.882 780.119,467.26 780.119,464.025 L 780.119,455.447"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 765.06 461.303 C 773.377,461.303 780.119,458.681 780.119,455.447 C 780.119,452.212 773.377,449.59 765.06,449.59 C 756.742,449.59 750,452.212 750,455.447 C 750,458.681 756.742,461.303 765.06,461.303z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 765.06 461.303 C 773.377,461.303 780.119,458.681 780.119,455.447 C 780.119,452.212 773.377,449.59 765.06,449.59 C 756.742,449.59 750,452.212 750,455.447 C 750,458.681 756.742,461.303 765.06,461.303"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 761.621 453.157 L 762.864,455.022 L 758.163,456.108 L 759.19,455.254 L 751.923,454.012 L 753.746,452.645 L 760.758,453.832 L 761.621,453.157z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 768.237 457.68 L 767.388,455.757 L 771.629,454.91 L 770.894,455.568 L 777.962,456.776 L 776.268,458.133 L 769.24,456.813 L 768.237,457.68z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 765.918 452.138 L 770.668,450.838 L 770.724,452.874 L 769.538,452.647 L 767.218,454.57 L 765.006,454.247 L 767.399,452.367 L 765.918,452.138z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 763.882 459.434 L 759.359,460.281 L 759.19,458.19 L 760.489,458.472 L 762.979,456.345 L 765.183,456.719 L 762.525,459.037 L 763.882,459.434z"/>
</g>
<text font-size="21.4489" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:italic;font-weight:normal" x="270" y="430">
<tspan x="270" y="430">Clients</tspan>
</text>
</g>
<g id="to-clients">
<g>
<line style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #800080" x1="440" y1="380" x2="352" y2="380"/>
<polygon style="fill: #800080; fill-opacity: 1; stroke-opacity: 1; stroke-width: 4; stroke: #800080" fill-rule="evenodd" points="352,375 342,380 352,385 "/>
</g>
<rect style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 20; stroke: #000000" x="220" y="290" width="270" height="220" rx="0" ry="0"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 99 KiB

View File

@ -1,232 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
<svg width="29cm" height="12cm" viewBox="239 289 572 223" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="Background">
<g>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 713.614 347.58 L 713.54,345.719 L 713.283,343.858 L 712.804,342.03 L 712.142,340.201 L 711.258,338.34 L 710.264,336.545 L 709.013,334.781 L 707.614,333.051 L 706.104,331.321 L 704.337,329.688 L 702.46,328.056 L 700.398,326.521 L 698.153,324.986 L 695.797,323.55 L 693.294,322.146 L 690.606,320.84 L 687.845,319.566 L 684.974,318.391 L 681.955,317.281 L 678.826,316.269 L 675.587,315.289 L 672.237,314.473 L 668.887,313.657 L 665.39,312.971 L 661.819,312.351 L 658.248,311.828 L 654.604,311.404 L 650.922,311.11 L 647.204,310.849 L 643.45,310.718 L 639.695,310.653 L 639.695,310.653 L 635.977,310.718 L 632.185,310.849 L 628.504,311.11 L 624.822,311.404 L 621.141,311.828 L 617.57,312.351 L 614,312.971 L 610.539,313.657 L 607.116,314.473 L 603.839,315.289 L 600.6,316.269 L 597.508,317.281 L 594.452,318.391 L 591.581,319.566 L 588.783,320.84 L 586.096,322.146 L 583.592,323.55 L 581.236,324.986 L 578.991,326.521 L 576.929,328.056 L 575.052,329.688 L 573.322,331.321 L 571.739,333.051 L 570.414,334.781 L 569.162,336.545 L 568.131,338.34 L 567.248,340.201 L 566.659,342.03 L 566.18,343.858 L 565.849,345.719 L 565.812,347.58 L 565.812,347.58 L 565.849,349.474 L 566.18,351.335 L 566.659,353.196 L 567.248,355.024 L 568.131,356.853 L 569.162,358.649 L 570.414,360.412 L 571.739,362.175 L 573.322,363.873 L 575.052,365.505 L 576.929,367.138 L 578.991,368.705 L 581.236,370.207 L 583.592,371.643 L 586.096,373.047 L 588.783,374.386 L 591.581,375.594 L 594.452,376.835 L 597.508,377.945 L 600.6,378.957 L 603.839,379.871 L 607.116,380.753 L 610.539,381.536 L 614,382.222 L 617.57,382.842 L 621.141,383.365 L 624.822,383.757 L 628.504,384.083 L 632.185,384.377 L 635.977,384.475 L 639.695,384.508 L 639.695,384.508 L 643.45,384.475 L 647.204,384.377 L 650.922,384.083 L 654.604,383.757 L 658.248,383.365 L 661.819,382.842 L 665.39,382.222 L 668.887,381.536 L 672.237,380.753 L 675.587,379.871 L 678.826,378.957 L 681.955,377.945 L 684.974,376.835 L 687.845,375.594 L 690.606,374.386 L 693.294,373.047 L 695.797,371.643 L 698.153,370.207 L 700.398,368.705 L 702.46,367.138 L 704.337,365.505 L 706.104,363.873 L 707.614,362.175 L 709.013,360.412 L 710.264,358.649 L 711.258,356.853 L 712.142,355.024 L 712.804,353.196 L 713.283,351.335 L 713.54,349.474 L 713.614,347.58z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 597.765 366.974 L 597.692,365.113 L 597.434,363.252 L 597.139,361.424 L 596.624,359.563 L 595.961,357.734 L 595.152,355.939 L 594.194,354.176 L 593.164,352.445 L 591.986,350.715 L 590.66,349.082 L 589.225,347.45 L 587.642,345.915 L 585.875,344.381 L 584.071,342.944 L 582.157,341.54 L 580.095,340.234 L 578.034,338.961 L 575.751,337.785 L 573.469,336.675 L 571.039,335.696 L 568.61,334.683 L 566.07,333.802 L 563.419,333.051 L 560.769,332.365 L 558.045,331.745 L 555.284,331.223 L 552.486,330.798 L 549.651,330.504 L 546.854,330.243 L 543.982,330.08 L 541.111,330.047 L 541.111,330.047 L 538.239,330.08 L 535.368,330.243 L 532.497,330.504 L 529.699,330.798 L 526.864,331.223 L 524.104,331.745 L 521.416,332.365 L 518.766,333.051 L 516.152,333.802 L 513.612,334.683 L 511.109,335.696 L 508.753,336.675 L 506.397,337.785 L 504.188,338.961 L 502.09,340.234 L 500.028,341.54 L 498.114,342.944 L 496.273,344.381 L 494.543,345.915 L 492.997,347.45 L 491.524,349.082 L 490.236,350.715 L 489.021,352.445 L 487.954,354.176 L 487.033,355.939 L 486.223,357.734 L 485.561,359.563 L 485.082,361.424 L 484.714,363.252 L 484.493,365.113 L 484.42,366.974 L 484.42,366.974 L 484.493,368.868 L 484.714,370.729 L 485.082,372.59 L 485.561,374.419 L 486.223,376.247 L 487.033,378.043 L 487.954,379.806 L 489.021,381.536 L 490.236,383.267 L 491.524,384.899 L 492.997,386.532 L 494.543,388.066 L 496.273,389.601 L 498.114,391.038 L 500.028,392.442 L 502.09,393.748 L 504.188,394.988 L 506.397,396.164 L 508.753,397.339 L 511.109,398.351 L 513.612,399.265 L 516.152,400.18 L 518.766,400.931 L 521.416,401.616 L 524.104,402.237 L 526.864,402.726 L 529.699,403.151 L 532.497,403.477 L 535.368,403.771 L 538.239,403.869 L 541.111,403.902 L 541.111,403.902 L 543.982,403.869 L 546.854,403.771 L 549.651,403.477 L 552.486,403.151 L 555.284,402.726 L 558.045,402.237 L 560.769,401.616 L 563.419,400.931 L 566.07,400.18 L 568.61,399.265 L 571.039,398.351 L 573.469,397.339 L 575.751,396.164 L 578.034,394.988 L 580.095,393.748 L 582.157,392.442 L 584.071,391.038 L 585.875,389.601 L 587.642,388.066 L 589.225,386.532 L 590.66,384.899 L 591.986,383.267 L 593.164,381.536 L 594.194,379.806 L 595.152,378.043 L 595.961,376.247 L 596.624,374.419 L 597.139,372.59 L 597.434,370.729 L 597.692,368.868 L 597.765,366.974z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 526.312 404.685 L 526.275,403.151 L 526.165,401.616 L 525.907,400.082 L 525.576,398.58 L 525.097,397.143 L 524.545,395.641 L 523.956,394.172 L 523.257,392.768 L 522.447,391.364 L 521.527,390.025 L 520.533,388.752 L 519.465,387.446 L 518.324,386.205 L 517.109,384.997 L 515.784,383.887 L 514.422,382.842 L 513.023,381.765 L 511.55,380.818 L 509.968,379.904 L 508.348,379.055 L 506.691,378.304 L 504.961,377.586 L 503.231,376.965 L 501.427,376.41 L 499.586,375.888 L 497.746,375.496 L 495.868,375.104 L 493.917,374.876 L 492.003,374.68 L 490.126,374.582 L 488.175,374.517 L 488.175,374.517 L 486.223,374.582 L 484.272,374.68 L 482.358,374.876 L 480.481,375.104 L 478.566,375.496 L 476.689,375.888 L 474.885,376.41 L 473.118,376.965 L 471.314,377.586 L 469.584,378.304 L 467.928,379.055 L 466.308,379.904 L 464.762,380.818 L 463.252,381.765 L 461.854,382.842 L 460.492,383.887 L 459.203,384.997 L 457.951,386.205 L 456.81,387.446 L 455.743,388.752 L 454.749,390.025 L 453.902,391.364 L 453.092,392.768 L 452.393,394.172 L 451.73,395.641 L 451.178,397.143 L 450.773,398.58 L 450.442,400.082 L 450.147,401.616 L 450,403.151 L 450,404.685 L 450,404.685 L 450,406.155 L 450.147,407.689 L 450.442,409.191 L 450.773,410.693 L 451.178,412.227 L 451.73,413.664 L 452.393,415.101 L 453.092,416.537 L 453.902,417.941 L 454.749,419.28 L 455.743,420.586 L 456.81,421.859 L 457.951,423.1 L 459.203,424.275 L 460.492,425.385 L 461.854,426.463 L 463.252,427.54 L 464.762,428.455 L 466.308,429.369 L 467.928,430.218 L 469.584,431.001 L 471.314,431.72 L 473.118,432.34 L 474.885,432.895 L 476.689,433.385 L 478.566,433.809 L 480.481,434.168 L 482.358,434.462 L 484.272,434.625 L 486.223,434.723 L 488.175,434.789 L 488.175,434.789 L 490.126,434.723 L 492.003,434.625 L 493.917,434.462 L 495.868,434.168 L 497.746,433.809 L 499.586,433.385 L 501.427,432.895 L 503.231,432.34 L 504.961,431.72 L 506.691,431.001 L 508.348,430.218 L 509.968,429.369 L 511.55,428.455 L 513.023,427.54 L 514.422,426.463 L 515.784,425.385 L 517.109,424.275 L 518.324,423.1 L 519.465,421.859 L 520.533,420.586 L 521.527,419.28 L 522.447,417.941 L 523.257,416.537 L 523.956,415.101 L 524.545,413.664 L 525.097,412.227 L 525.576,410.693 L 525.907,409.191 L 526.165,407.689 L 526.275,406.155 L 526.312,404.685z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 587.936 433.711 L 587.9,432.046 L 587.642,430.414 L 587.237,428.748 L 586.758,427.116 L 586.096,425.516 L 585.323,423.916 L 584.329,422.349 L 583.298,420.814 L 582.046,419.378 L 580.721,417.876 L 579.212,416.439 L 577.629,415.101 L 575.935,413.762 L 574.095,412.423 L 572.144,411.215 L 570.082,410.04 L 567.91,408.962 L 565.628,407.885 L 563.309,406.938 L 560.879,405.991 L 558.339,405.175 L 555.762,404.391 L 553.112,403.706 L 550.424,403.085 L 547.663,402.563 L 544.829,402.139 L 542.031,401.747 L 539.16,401.42 L 536.288,401.224 L 533.38,401.094 L 530.435,401.061 L 530.435,401.061 L 527.527,401.094 L 524.656,401.224 L 521.711,401.42 L 518.876,401.747 L 516.005,402.139 L 513.244,402.563 L 510.483,403.085 L 507.759,403.706 L 505.108,404.391 L 502.568,405.175 L 500.028,405.991 L 497.599,406.938 L 495.243,407.885 L 492.997,408.962 L 490.825,410.04 L 488.764,411.215 L 486.812,412.423 L 484.972,413.762 L 483.242,415.101 L 481.659,416.439 L 480.149,417.876 L 478.787,419.378 L 477.609,420.814 L 476.542,422.349 L 475.548,423.916 L 474.738,425.516 L 474.149,427.116 L 473.597,428.748 L 473.229,430.414 L 473.008,432.046 L 472.934,433.711 L 472.934,433.711 L 473.008,435.344 L 473.229,437.009 L 473.597,438.641 L 474.149,440.274 L 474.738,441.874 L 475.548,443.474 L 476.542,445.073 L 477.609,446.608 L 478.787,448.077 L 480.149,449.514 L 481.659,450.95 L 483.242,452.322 L 484.972,453.693 L 486.812,454.999 L 488.764,456.207 L 490.825,457.35 L 492.997,458.46 L 495.243,459.505 L 497.599,460.484 L 500.028,461.431 L 502.568,462.247 L 505.108,463.031 L 507.759,463.684 L 510.483,464.304 L 513.244,464.827 L 516.005,465.284 L 518.876,465.708 L 521.711,466.002 L 524.656,466.198 L 527.527,466.329 L 530.435,466.329 L 530.435,466.329 L 533.38,466.329 L 536.288,466.198 L 539.16,466.002 L 542.031,465.708 L 544.829,465.284 L 547.663,464.827 L 550.424,464.304 L 553.112,463.684 L 555.762,463.031 L 558.339,462.247 L 560.879,461.431 L 563.309,460.484 L 565.628,459.505 L 567.91,458.46 L 570.082,457.35 L 572.144,456.207 L 574.095,454.999 L 575.935,453.693 L 577.629,452.322 L 579.212,450.95 L 580.721,449.514 L 582.046,448.077 L 583.298,446.608 L 584.329,445.073 L 585.323,443.474 L 586.096,441.874 L 586.758,440.274 L 587.237,438.641 L 587.642,437.009 L 587.9,435.344 L 587.936,433.711z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 725.946 450.591 L 725.799,448.6 L 725.505,446.608 L 724.916,444.682 L 724.142,442.755 L 723.185,440.829 L 722.007,438.968 L 720.608,437.139 L 718.989,435.278 L 717.148,433.483 L 715.16,431.752 L 712.915,430.087 L 710.559,428.455 L 707.982,426.855 L 705.258,425.32 L 702.276,423.851 L 699.257,422.48 L 696.018,421.141 L 692.631,419.9 L 689.171,418.757 L 685.489,417.68 L 681.771,416.668 L 677.906,415.786 L 673.967,414.937 L 669.881,414.219 L 665.795,413.566 L 661.598,413.044 L 657.401,412.587 L 653.058,412.26 L 648.824,412.032 L 644.443,411.836 L 640.1,411.836 L 640.1,411.836 L 635.756,411.836 L 631.412,412.032 L 627.105,412.26 L 622.835,412.587 L 618.564,413.044 L 614.405,413.566 L 610.282,414.219 L 606.269,414.937 L 602.256,415.786 L 598.465,416.668 L 594.673,417.68 L 591.065,418.757 L 587.568,419.9 L 584.218,421.141 L 580.979,422.48 L 577.887,423.851 L 574.978,425.32 L 572.254,426.855 L 569.641,428.455 L 567.248,430.087 L 565.039,431.752 L 563.088,433.483 L 561.247,435.278 L 559.628,437.139 L 558.229,438.968 L 557.014,440.829 L 556.057,442.755 L 555.247,444.682 L 554.695,446.608 L 554.363,448.6 L 554.253,450.591 L 554.253,450.591 L 554.363,452.485 L 554.695,454.477 L 555.247,456.403 L 556.057,458.362 L 557.014,460.288 L 558.229,462.149 L 559.628,463.978 L 561.247,465.839 L 563.088,467.635 L 565.039,469.365 L 567.248,471.03 L 569.641,472.728 L 572.254,474.263 L 574.978,475.797 L 577.887,477.234 L 580.979,478.67 L 584.218,479.976 L 587.568,481.217 L 591.065,482.36 L 594.673,483.47 L 598.465,484.417 L 602.256,485.331 L 606.269,486.147 L 610.282,486.866 L 614.405,487.551 L 618.564,488.041 L 622.835,488.498 L 627.105,488.857 L 631.412,489.086 L 635.756,489.282 L 640.1,489.282 L 640.1,489.282 L 644.443,489.282 L 648.824,489.086 L 653.058,488.857 L 657.401,488.498 L 661.598,488.041 L 665.795,487.551 L 669.881,486.866 L 673.967,486.147 L 677.906,485.331 L 681.771,484.417 L 685.489,483.47 L 689.171,482.36 L 692.631,481.217 L 696.018,479.976 L 699.257,478.67 L 702.276,477.234 L 705.258,475.797 L 707.982,474.263 L 710.559,472.728 L 712.915,471.03 L 715.16,469.365 L 717.148,467.635 L 718.989,465.839 L 720.608,463.978 L 722.007,462.149 L 723.185,460.288 L 724.142,458.362 L 724.916,456.403 L 725.505,454.477 L 725.799,452.485 L 725.946,450.591z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 773.582 361.228 L 773.545,359.791 L 773.324,358.289 L 772.919,356.82 L 772.477,355.384 L 771.815,353.98 L 771.078,352.543 L 770.158,351.139 L 769.091,349.768 L 767.949,348.462 L 766.698,347.123 L 765.262,345.85 L 763.716,344.609 L 762.096,343.466 L 760.292,342.291 L 758.452,341.213 L 756.427,340.201 L 754.366,339.157 L 752.23,338.242 L 749.948,337.393 L 747.629,336.577 L 745.273,335.826 L 742.77,335.141 L 740.23,334.52 L 737.653,333.965 L 735.002,333.475 L 732.352,333.149 L 729.628,332.757 L 726.903,332.496 L 724.106,332.333 L 721.345,332.235 L 718.547,332.169 L 718.547,332.169 L 715.712,332.235 L 712.951,332.333 L 710.154,332.496 L 707.43,332.757 L 704.742,333.149 L 702.055,333.475 L 699.441,333.965 L 696.828,334.52 L 694.288,335.141 L 691.784,335.826 L 689.392,336.577 L 687.109,337.393 L 684.827,338.242 L 682.692,339.157 L 680.63,340.201 L 678.642,341.213 L 676.765,342.291 L 674.961,343.466 L 673.341,344.609 L 671.832,345.85 L 670.359,347.123 L 669.108,348.462 L 667.967,349.768 L 666.899,351.139 L 665.979,352.543 L 665.243,353.98 L 664.617,355.384 L 664.101,356.82 L 663.77,358.289 L 663.586,359.791 L 663.476,361.228 L 663.476,361.228 L 663.586,362.697 L 663.77,364.167 L 664.101,365.603 L 664.617,367.072 L 665.243,368.509 L 665.979,369.913 L 666.899,371.317 L 667.967,372.688 L 669.108,374.059 L 670.359,375.333 L 671.832,376.574 L 673.341,377.847 L 674.961,379.022 L 676.765,380.132 L 678.642,381.243 L 680.63,382.287 L 682.692,383.267 L 684.827,384.181 L 687.109,385.095 L 689.392,385.911 L 691.784,386.63 L 694.288,387.348 L 696.828,387.936 L 699.441,388.458 L 702.055,388.981 L 704.742,389.372 L 707.43,389.699 L 710.154,389.993 L 712.951,390.123 L 715.712,390.287 L 718.547,390.287 L 718.547,390.287 L 721.345,390.287 L 724.106,390.123 L 726.903,389.993 L 729.628,389.699 L 732.352,389.372 L 735.002,388.981 L 737.653,388.458 L 740.23,387.936 L 742.77,387.348 L 745.273,386.63 L 747.629,385.911 L 749.948,385.095 L 752.23,384.181 L 754.366,383.267 L 756.427,382.287 L 758.452,381.243 L 760.292,380.132 L 762.096,379.022 L 763.716,377.847 L 765.262,376.574 L 766.698,375.333 L 767.949,374.059 L 769.091,372.688 L 770.158,371.317 L 771.078,369.913 L 771.815,368.509 L 772.477,367.072 L 772.919,365.603 L 773.324,364.167 L 773.545,362.697 L 773.582,361.228z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 789.19 398.547 L 789.08,397.078 L 788.932,395.609 L 788.564,394.172 L 788.086,392.735 L 787.423,391.266 L 786.687,389.895 L 785.803,388.458 L 784.736,387.12 L 783.595,385.748 L 782.343,384.475 L 780.907,383.169 L 779.361,381.961 L 777.778,380.818 L 775.974,379.61 L 774.134,378.565 L 772.22,377.488 L 770.158,376.508 L 767.949,375.594 L 765.777,374.712 L 763.458,373.896 L 761.102,373.145 L 758.636,372.46 L 756.133,371.872 L 753.556,371.317 L 750.905,370.827 L 748.255,370.435 L 745.567,370.109 L 742.806,369.815 L 740.082,369.684 L 737.321,369.586 L 734.56,369.521 L 734.56,369.521 L 731.763,369.586 L 729.039,369.684 L 726.278,369.815 L 723.59,370.109 L 720.903,370.435 L 718.216,370.827 L 715.602,371.317 L 713.062,371.872 L 710.522,372.46 L 708.055,373.145 L 705.699,373.896 L 703.38,374.712 L 701.135,375.594 L 699.036,376.508 L 696.975,377.488 L 694.95,378.565 L 693.11,379.61 L 691.379,380.818 L 689.796,381.961 L 688.25,383.169 L 686.851,384.475 L 685.526,385.748 L 684.385,387.12 L 683.391,388.458 L 682.471,389.895 L 681.661,391.266 L 681.072,392.735 L 680.593,394.172 L 680.225,395.609 L 680.004,397.078 L 679.968,398.547 L 679.968,398.547 L 680.004,400.016 L 680.225,401.518 L 680.593,402.955 L 681.072,404.391 L 681.661,405.828 L 682.471,407.232 L 683.391,408.669 L 684.385,410.007 L 685.526,411.313 L 686.851,412.652 L 688.25,413.893 L 689.796,415.133 L 691.379,416.309 L 693.11,417.451 L 694.95,418.562 L 696.975,419.574 L 699.036,420.586 L 701.135,421.5 L 703.38,422.349 L 705.699,423.165 L 708.055,423.916 L 710.522,424.602 L 713.062,425.222 L 715.602,425.81 L 718.216,426.3 L 720.903,426.626 L 723.59,427.018 L 726.278,427.247 L 729.039,427.442 L 731.763,427.54 L 734.56,427.573 L 734.56,427.573 L 737.321,427.54 L 740.082,427.442 L 742.806,427.247 L 745.567,427.018 L 748.255,426.626 L 750.905,426.3 L 753.556,425.81 L 756.133,425.222 L 758.636,424.602 L 761.102,423.916 L 763.458,423.165 L 765.777,422.349 L 767.949,421.5 L 770.158,420.586 L 772.22,419.574 L 774.134,418.562 L 775.974,417.451 L 777.778,416.309 L 779.361,415.133 L 780.907,413.893 L 782.343,412.652 L 783.595,411.313 L 784.736,410.007 L 785.803,408.669 L 786.687,407.232 L 787.423,405.828 L 788.086,404.391 L 788.564,402.955 L 788.932,401.518 L 789.08,400.016 L 789.19,398.547z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 778.515 429.401 L 778.441,427.018 L 778.22,424.569 L 777.926,422.218 L 777.447,419.802 L 776.821,417.451 L 776.048,415.133 L 775.165,412.848 L 774.097,410.595 L 772.956,408.407 L 771.741,406.252 L 770.342,404.163 L 768.796,402.171 L 767.176,400.212 L 765.409,398.351 L 763.569,396.555 L 761.654,394.825 L 759.593,393.192 L 757.495,391.723 L 755.249,390.287 L 752.967,388.981 L 750.611,387.74 L 748.218,386.63 L 745.715,385.585 L 743.175,384.671 L 740.524,383.887 L 737.91,383.267 L 735.186,382.679 L 732.499,382.255 L 729.812,381.961 L 727.087,381.765 L 724.327,381.732 L 724.327,381.732 L 721.566,381.765 L 718.841,381.961 L 716.081,382.255 L 713.393,382.679 L 710.743,383.267 L 708.055,383.887 L 705.479,384.671 L 702.939,385.585 L 700.435,386.63 L 697.969,387.74 L 695.613,388.981 L 693.33,390.287 L 691.159,391.723 L 688.987,393.192 L 686.962,394.825 L 685.011,396.555 L 683.17,398.351 L 681.44,400.212 L 679.783,402.171 L 678.311,404.163 L 676.912,406.252 L 675.624,408.407 L 674.482,410.595 L 673.489,412.848 L 672.605,415.133 L 671.832,417.451 L 671.206,419.802 L 670.728,422.218 L 670.359,424.569 L 670.139,427.018 L 670.065,429.401 L 670.065,429.401 L 670.139,431.818 L 670.359,434.266 L 670.728,436.617 L 671.206,439.001 L 671.832,441.417 L 672.605,443.702 L 673.489,445.955 L 674.482,448.241 L 675.624,450.395 L 676.912,452.55 L 678.311,454.673 L 679.783,456.664 L 681.44,458.591 L 683.17,460.484 L 685.011,462.28 L 686.962,463.978 L 688.987,465.61 L 691.159,467.145 L 693.33,468.549 L 695.613,469.888 L 697.969,471.096 L 700.435,472.238 L 702.939,473.25 L 705.479,474.165 L 708.055,474.916 L 710.743,475.601 L 713.393,476.124 L 716.081,476.548 L 718.841,476.842 L 721.566,477.038 L 724.327,477.136 L 724.327,477.136 L 727.087,477.038 L 729.812,476.842 L 732.499,476.548 L 735.186,476.124 L 737.91,475.601 L 740.524,474.916 L 743.175,474.165 L 745.715,473.25 L 748.218,472.238 L 750.611,471.096 L 752.967,469.888 L 755.249,468.549 L 757.495,467.145 L 759.593,465.61 L 761.654,463.978 L 763.569,462.28 L 765.409,460.484 L 767.176,458.591 L 768.796,456.664 L 770.342,454.673 L 771.741,452.55 L 772.956,450.395 L 774.097,448.241 L 775.165,445.955 L 776.048,443.702 L 776.821,441.417 L 777.447,439.001 L 777.926,436.617 L 778.22,434.266 L 778.441,431.818 L 778.515,429.401z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 731.689 400.702 L 731.542,398.253 L 731.1,395.902 L 730.401,393.454 L 729.443,391.103 L 728.192,388.752 L 726.646,386.401 L 724.842,384.116 L 722.744,381.863 L 720.461,379.675 L 717.884,377.553 L 715.013,375.431 L 711.958,373.406 L 708.644,371.513 L 705.11,369.619 L 701.356,367.791 L 697.453,366.093 L 693.294,364.493 L 688.95,362.958 L 684.495,361.522 L 679.82,360.183 L 674.998,358.975 L 670.065,357.832 L 665.022,356.82 L 659.868,355.939 L 654.567,355.188 L 649.192,354.502 L 643.781,353.98 L 638.296,353.555 L 632.774,353.196 L 627.215,353.033 L 621.583,352.968 L 621.583,352.968 L 616.024,353.033 L 610.466,353.196 L 604.944,353.555 L 599.422,353.98 L 594.01,354.502 L 588.636,355.188 L 583.372,355.939 L 578.218,356.82 L 573.101,357.832 L 568.242,358.975 L 563.419,360.183 L 558.707,361.522 L 554.216,362.958 L 549.946,364.493 L 545.749,366.093 L 541.81,367.791 L 538.129,369.619 L 534.558,371.513 L 531.245,373.406 L 528.227,375.431 L 525.355,377.553 L 522.815,379.675 L 520.496,381.863 L 518.361,384.116 L 516.594,386.401 L 515.084,388.752 L 513.759,391.103 L 512.802,393.454 L 512.103,395.902 L 511.661,398.253 L 511.55,400.702 L 511.55,400.702 L 511.661,403.085 L 512.103,405.502 L 512.802,407.885 L 513.759,410.301 L 515.084,412.652 L 516.594,414.97 L 518.361,417.223 L 520.496,419.508 L 522.815,421.729 L 525.355,423.851 L 528.227,425.908 L 531.245,427.932 L 534.558,429.891 L 538.129,431.752 L 541.81,433.548 L 545.749,435.278 L 549.946,436.911 L 554.216,438.445 L 558.707,439.882 L 563.419,441.155 L 568.242,442.429 L 573.101,443.506 L 578.218,444.518 L 583.372,445.433 L 588.636,446.216 L 594.01,446.869 L 599.422,447.424 L 604.944,447.849 L 610.466,448.143 L 616.024,448.371 L 621.583,448.404 L 621.583,448.404 L 627.215,448.371 L 632.774,448.143 L 638.296,447.849 L 643.781,447.424 L 649.192,446.869 L 654.567,446.216 L 659.868,445.433 L 665.022,444.518 L 670.065,443.506 L 674.998,442.429 L 679.82,441.155 L 684.495,439.882 L 688.95,438.445 L 693.294,436.911 L 697.453,435.278 L 701.356,433.548 L 705.11,431.752 L 708.644,429.891 L 711.958,427.932 L 715.013,425.908 L 717.884,423.851 L 720.461,421.729 L 722.744,419.508 L 724.842,417.223 L 726.646,414.97 L 728.192,412.652 L 729.443,410.301 L 730.401,407.885 L 731.1,405.502 L 731.542,403.085 L 731.689,400.702z"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 640.541 347.254 L 713.393,339.026 L 712.473,337.23 L 711.332,335.402 L 710.08,333.606 L 708.571,331.876 L 706.951,330.21 L 705.11,328.513 L 703.196,326.913 L 700.987,325.378 L 698.742,323.876 L 696.312,322.44 L 693.699,321.068 L 690.974,319.795 L 688.103,318.554 L 685.121,317.346 L 682.029,316.269 L 678.826,315.289 L 675.587,314.31 L 672.163,313.494 L 668.703,312.743 L 665.206,312.057 L 661.561,311.469 L 657.917,311.012 L 654.236,310.588 L 650.518,310.294 L 646.763,310.098 L 642.971,310 L 639.216,310 L 635.424,310.098 L 631.633,310.229 L 627.951,310.49 L 624.233,310.914 L 620.552,311.339 L 616.908,311.926 L 613.337,312.547 L 609.877,313.265 L 606.49,314.081 L 603.14,314.995 L 599.9,315.942 L 596.845,317.02 L 593.826,318.163 L 590.918,319.371 L 588.157,320.644 L 585.544,322.015 L 583.077,323.452 L 580.721,324.921 L 578.512,326.456 L 576.451,328.056 L 574.573,329.688 L 572.954,331.418 L 571.371,333.084 L 570.009,334.879 L 568.867,336.642 L 567.91,338.471 L 567.1,340.299 L 640.541,347.254z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 713.393 338.961 L 712.436,337.132 L 711.332,335.336 L 710.043,333.541 L 708.571,331.843 L 706.877,330.145 L 705.074,328.48 L 703.123,326.88 L 700.914,325.346 L 698.631,323.876 L 696.275,322.44 L 693.625,321.003 L 690.974,319.73 L 688.066,318.489 L 685.084,317.346 L 682.029,316.204 L 678.826,315.224 L 675.55,314.31 L 672.126,313.461 L 668.666,312.743 L 665.206,312.057 L 661.561,311.469 L 657.88,311.012 L 654.199,310.588 L 650.481,310.294 L 646.763,310.098 L 642.934,310 L 639.179,310 L 635.424,310.098 L 631.67,310.229 L 627.915,310.49 L 624.233,310.914 L 620.552,311.306 L 616.945,311.861 L 613.411,312.547 L 609.877,313.265 L 606.527,314.081 L 603.177,314.995 L 599.974,315.942 L 596.845,316.987 L 593.863,318.163 L 590.955,319.371 L 588.194,320.611 L 585.58,321.983 L 583.077,323.387 L 580.721,324.888 L 578.512,326.423 L 576.524,327.99 L 574.61,329.688 L 572.954,331.321 L 571.408,333.051 L 570.082,334.781 L 568.867,336.577 L 567.91,338.406 L 567.137,340.234"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 541.479 366.615 L 578.218,338.046 L 575.935,336.871 L 573.543,335.761 L 571.113,334.781 L 568.61,333.802 L 566.07,332.953 L 563.419,332.169 L 560.695,331.516 L 558.008,330.896 L 555.173,330.406 L 552.375,329.982 L 549.504,329.688 L 546.633,329.459 L 543.761,329.329 L 540.89,329.329 L 537.982,329.394 L 535.11,329.59 L 532.239,329.819 L 529.405,330.178 L 526.607,330.635 L 523.846,331.157 L 521.085,331.778 L 518.434,332.496 L 515.784,333.312 L 513.244,334.194 L 510.777,335.173 L 508.421,336.251 L 506.065,337.393 L 503.857,338.569 L 501.758,339.875 L 499.697,341.213 L 497.783,342.65 L 496.016,344.087 L 494.322,345.654 L 492.776,347.221 L 491.304,348.854 L 490.015,350.551 L 488.8,352.282 L 487.77,354.012 L 486.849,355.808 L 486.113,357.636 L 485.524,359.465 L 485.009,361.359 L 484.641,363.252 L 484.493,365.113 L 484.42,366.974 L 484.53,368.868 L 484.751,370.794 L 485.193,372.623 L 541.479,366.615z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 578.034 337.948 L 575.751,336.773 L 573.432,335.696 L 571.003,334.683 L 568.463,333.769 L 565.849,332.888 L 563.235,332.137 L 560.548,331.451 L 557.787,330.863 L 555.026,330.406 L 552.155,329.982 L 549.32,329.688 L 546.485,329.459 L 543.614,329.329 L 540.669,329.329 L 537.871,329.394 L 535,329.59 L 532.055,329.819 L 529.257,330.21 L 526.496,330.635 L 523.662,331.223 L 520.974,331.81 L 518.324,332.561 L 515.71,333.377 L 513.133,334.259 L 510.667,335.239 L 508.311,336.316 L 506.029,337.426 L 503.82,338.667 L 501.648,339.907 L 499.697,341.311 L 497.746,342.683 L 495.942,344.185 L 494.285,345.687 L 492.702,347.254 L 491.304,348.919 L 490.015,350.617 L 488.8,352.347 L 487.733,354.078 L 486.849,355.906 L 486.113,357.669 L 485.45,359.53 L 485.009,361.424 L 484.641,363.285 L 484.493,365.146 L 484.42,367.04 L 484.604,368.901 L 484.825,370.794 L 485.193,372.688"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 531.245 433.352 L 472.124,432.34 L 472.124,434.07 L 472.235,435.703 L 472.529,437.433 L 473.008,439.066 L 473.56,440.731 L 474.259,442.429 L 475.18,443.996 L 476.137,445.596 L 477.352,447.163 L 478.64,448.665 L 480.002,450.2 L 481.622,451.636 L 483.242,453.04 L 485.082,454.379 L 486.96,455.685 L 488.984,456.925 L 491.156,458.068 L 493.365,459.178 L 495.684,460.288 L 498.114,461.235 L 500.617,462.149 L 503.231,463.031 L 505.881,463.749 L 508.532,464.468 L 511.33,465.088 L 514.164,465.61 L 517.036,466.035 L 519.944,466.427 L 522.852,466.72 L 525.797,466.916 L 528.779,467.014 L 531.797,467.014 L 534.706,466.949 L 537.687,466.818 L 540.632,466.623 L 543.54,466.329 L 546.485,465.904 L 549.283,465.414 L 552.155,464.892 L 554.842,464.206 L 557.566,463.553 L 560.217,462.737 L 562.72,461.856 L 565.26,460.909 L 567.579,459.897 L 569.898,458.852 L 531.245,433.352z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 472.198 432.34 L 472.087,434.005 L 472.308,435.703 L 472.529,437.368 L 473.008,439.066 L 473.56,440.698 L 474.296,442.364 L 475.18,443.996 L 476.21,445.596 L 477.352,447.13 L 478.566,448.665 L 480.002,450.134 L 481.511,451.603 L 483.242,452.975 L 485.009,454.379 L 486.923,455.619 L 488.911,456.86 L 491.046,458.068 L 493.255,459.178 L 495.574,460.223 L 498.003,461.203 L 500.507,462.117 L 503.047,462.966 L 505.697,463.749 L 508.458,464.468 L 511.182,465.023 L 513.98,465.545 L 516.851,466.035 L 519.796,466.361 L 522.705,466.72 L 525.613,466.851 L 528.595,467.014 L 531.576,467.014 L 534.521,467.014 L 537.466,466.851 L 540.411,466.623 L 543.32,466.329 L 546.265,465.937 L 549.062,465.48 L 551.934,464.925 L 554.658,464.272 L 557.308,463.553 L 559.959,462.77 L 562.499,461.921 L 565.039,461.007 L 567.432,459.995 L 569.677,458.95"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 719.357 360.542 L 771.373,369.978 L 772.256,368.574 L 772.919,367.17 L 773.545,365.734 L 773.913,364.264 L 774.281,362.795 L 774.355,361.326 L 774.355,359.824 L 774.281,358.387 L 773.987,356.918 L 773.582,355.449 L 772.993,354.012 L 772.293,352.576 L 771.483,351.204 L 770.526,349.8 L 769.422,348.462 L 768.17,347.123 L 766.771,345.817 L 765.336,344.576 L 763.753,343.368 L 762.059,342.226 L 760.256,341.05 L 758.268,340.005 L 756.28,338.993 L 754.108,338.046 L 751.936,337.132 L 749.654,336.316 L 747.298,335.5 L 744.831,334.781 L 742.328,334.128 L 739.751,333.541 L 737.1,333.051 L 734.487,332.627 L 731.726,332.235 L 729.002,331.941 L 726.241,331.712 L 723.443,331.614 L 720.682,331.516 L 717.921,331.516 L 715.123,331.614 L 712.326,331.745 L 709.602,331.974 L 706.841,332.267 L 704.117,332.627 L 701.429,333.084 L 719.357,360.542z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 766.587 375.3 L 771.336,370.044 L 772.22,368.672 L 772.919,367.236 L 773.471,365.799 L 773.913,364.33 L 774.207,362.861 L 774.318,361.424 L 774.355,359.889 L 774.244,358.453 L 773.987,356.983 L 773.582,355.514 L 772.993,354.078 L 772.293,352.641 L 771.52,351.237 L 770.563,349.898 L 769.422,348.494 L 768.17,347.156 L 766.882,345.85 L 765.372,344.609 L 763.79,343.401 L 762.096,342.226 L 760.292,341.116 L 758.378,340.071 L 756.353,339.026 L 754.255,338.046 L 752.01,337.165 L 749.727,336.316 L 747.371,335.532 L 744.905,334.879 L 742.401,334.194 L 739.861,333.573 L 737.248,333.051 L 734.56,332.627 L 731.91,332.235 L 729.186,331.941 L 726.425,331.745 L 723.627,331.614 L 720.829,331.516 L 717.995,331.516 L 715.234,331.614 L 712.436,331.745 L 709.675,331.941 L 706.951,332.235 L 704.264,332.594 L 701.576,333.051"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 726.756 398.906 L 785.325,410.856 L 786.503,409.289 L 787.46,407.754 L 788.343,406.122 L 789.043,404.489 L 789.521,402.857 L 789.853,401.224 L 789.963,399.527 L 789.963,397.861 L 789.742,396.196 L 789.411,394.564 L 788.822,392.899 L 788.123,391.299 L 787.202,389.699 L 786.208,388.099 L 784.957,386.564 L 783.558,385.095 L 782.049,383.593 L 780.318,382.124 L 778.478,380.753 L 726.756,398.906z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 777.889 416.276 L 785.251,410.921 L 786.356,409.387 L 787.46,407.754 L 788.307,406.155 L 789.006,404.489 L 789.485,402.857 L 789.853,401.224 L 790,399.527 L 789.963,397.861 L 789.742,396.164 L 789.337,394.531 L 788.822,392.899 L 788.123,391.266 L 787.202,389.634 L 786.172,388.034 L 784.883,386.467 L 783.521,384.997 L 781.901,383.495 L 780.245,382.059 L 778.367,380.687 L 766.587,375.3"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 724.29 430.446 L 705.81,475.797 L 708.534,476.516 L 711.295,477.169 L 714.056,477.658 L 716.927,478.05 L 719.725,478.344 L 722.523,478.475 L 725.431,478.475 L 728.265,478.344 L 731.063,478.148 L 733.898,477.756 L 736.659,477.266 L 739.42,476.711 L 742.144,475.993 L 744.831,475.112 L 747.408,474.165 L 749.985,473.087 L 752.488,471.912 L 754.918,470.606 L 757.274,469.267 L 759.519,467.733 L 761.654,466.133 L 763.716,464.468 L 765.704,462.672 L 767.581,460.811 L 769.275,458.884 L 770.894,456.86 L 772.44,454.803 L 773.803,452.648 L 775.017,450.493 L 776.159,448.241 L 777.116,445.922 L 777.999,443.572 L 778.699,441.221 L 779.288,438.805 L 779.656,436.421 L 779.987,433.972 L 780.061,431.524 L 780.061,429.075 L 779.913,426.626 L 779.619,424.177 L 779.177,421.761 L 778.625,419.378 L 777.889,417.027 L 724.29,430.446z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 705.957 475.83 L 708.718,476.613 L 711.442,477.234 L 714.24,477.756 L 717.038,478.083 L 719.909,478.344 L 722.707,478.475 L 725.541,478.54 L 728.376,478.344 L 731.247,478.148 L 734.045,477.756 L 736.806,477.266 L 739.567,476.646 L 742.291,475.928 L 744.942,475.079 L 747.592,474.099 L 750.132,473.055 L 752.599,471.912 L 754.991,470.606 L 757.347,469.169 L 759.593,467.667 L 761.728,466.035 L 763.79,464.37 L 765.777,462.639 L 767.618,460.746 L 769.385,458.787 L 770.931,456.827 L 772.477,454.705 L 773.839,452.55 L 775.054,450.395 L 776.159,448.143 L 777.152,445.792 L 778.036,443.474 L 778.699,441.09 L 779.288,438.707 L 779.729,436.323 L 779.987,433.874 L 780.061,431.426 L 780.061,428.977 L 779.877,426.528 L 779.619,424.079 L 779.14,421.663 L 778.515,419.28 L 777.889,416.929"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 490.162 404.685 L 487.365,373.896 L 485.303,374.059 L 483.352,374.255 L 481.291,374.582 L 479.303,374.974 L 477.352,375.431 L 475.437,376.019 L 473.56,376.574 L 471.719,377.325 L 469.879,378.043 L 468.149,378.859 L 466.455,379.773 L 464.835,380.72 L 463.252,381.732 L 461.817,382.842 L 460.381,383.952 L 459.056,385.128 L 457.804,386.369 L 456.663,387.675 L 455.522,388.981 L 454.528,390.385 L 453.681,391.821 L 452.871,393.258 L 452.098,394.694 L 451.509,396.196 L 451.031,397.731 L 450.589,399.265 L 450.258,400.833 L 450.11,402.432 L 450,403.967 L 450,405.534 L 450.11,407.069 L 450.331,408.669 L 450.663,410.203 L 451.031,411.738 L 451.583,413.272 L 452.172,414.774 L 452.908,416.243 L 453.718,417.68 L 454.638,419.084 L 455.632,420.488 L 456.773,421.761 L 457.915,423.067 L 459.203,424.308 L 460.565,425.483 L 461.964,426.626 L 463.473,427.671 L 465.056,428.683 L 466.676,429.663 L 468.406,430.544 L 470.1,431.36 L 471.94,432.111 L 490.162,404.685z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 487.365 373.896 L 485.414,374.059 L 483.389,374.255 L 481.401,374.582 L 479.487,374.941 L 477.536,375.398 L 475.621,375.888 L 473.781,376.508 L 471.977,377.161 L 470.173,377.88 L 468.517,378.696 L 466.786,379.577 L 465.204,380.492 L 463.657,381.471 L 462.185,382.549 L 460.712,383.659 L 459.424,384.769 L 458.136,386.009 L 456.994,387.25 L 455.89,388.556 L 454.933,389.895 L 454.013,391.266 L 453.129,392.637 L 452.393,394.074 L 451.73,395.543 L 451.178,397.045 L 450.773,398.547 L 450.368,400.082 L 450.147,401.616 L 450,403.151 L 450,404.685 L 450,406.22 L 450.221,407.754 L 450.442,409.289 L 450.773,410.824 L 451.252,412.325 L 451.73,413.795 L 452.393,415.231 L 453.203,416.733 L 454.013,418.137 L 454.933,419.476 L 455.964,420.814 L 457.031,422.12 L 458.172,423.361 L 459.424,424.569 L 460.786,425.712 L 462.222,426.822 L 463.694,427.867 L 465.277,428.846 L 466.823,429.793 L 468.517,430.642 L 470.247,431.426 L 472.014,432.177"/>
<path style="fill: #b6c7c9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 639.29 454.118 L 555.505,457.676 L 556.057,459.472 L 556.756,461.301 L 557.713,463.064 L 558.928,464.794 L 560.217,466.459 L 561.799,468.157 L 563.53,469.79 L 565.481,471.422 L 567.653,472.957 L 569.972,474.491 L 572.401,475.928 L 575.089,477.332 L 577.887,478.67 L 580.868,479.976 L 583.997,481.152 L 587.237,482.327 L 590.697,483.372 L 594.158,484.417 L 597.802,485.331 L 601.52,486.213 L 605.422,486.931 L 609.324,487.649 L 613.263,488.237 L 617.386,488.759 L 621.509,489.184 L 625.669,489.51 L 629.792,489.771 L 634.026,489.902 L 638.296,490 L 642.492,490 L 646.763,489.869 L 650.959,489.673 L 655.119,489.38 L 659.242,488.955 L 663.365,488.498 L 667.341,487.943 L 671.317,487.257 L 675.182,486.604 L 679.01,485.788 L 682.692,484.874 L 686.226,483.894 L 689.686,482.85 L 693.036,481.707 L 696.239,480.531 L 699.294,479.291 L 702.129,477.985 L 704.89,476.613 L 707.43,475.177 L 709.859,473.675 L 712.105,472.14 L 714.093,470.606 L 715.933,468.973 L 717.627,467.276 L 719.062,465.61 L 639.29,454.118z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #6c8f93" d="M 555.578 457.742 L 556.057,459.505 L 556.793,461.301 L 557.713,463.064 L 558.928,464.794 L 560.29,466.525 L 561.799,468.157 L 563.566,469.79 L 565.481,471.422 L 567.653,472.957 L 569.972,474.491 L 572.401,475.928 L 575.089,477.332 L 577.96,478.67 L 580.868,479.976 L 583.997,481.152 L 587.237,482.327 L 590.697,483.372 L 594.158,484.384 L 597.802,485.331 L 601.52,486.213 L 605.349,486.931 L 609.251,487.649 L 613.227,488.237 L 617.35,488.759 L 621.436,489.184 L 625.595,489.478 L 629.755,489.771 L 633.952,489.902 L 638.185,490 L 642.419,489.967 L 646.615,489.869 L 650.812,489.608 L 655.045,489.38 L 659.168,488.955 L 663.218,488.465 L 667.267,487.943 L 671.206,487.323 L 675.071,486.604 L 678.863,485.788 L 682.508,484.874 L 686.115,483.894 L 689.576,482.882 L 692.889,481.805 L 696.091,480.597 L 699.11,479.356 L 702.055,478.05 L 704.779,476.613 L 707.356,475.21 L 709.786,473.708 L 711.958,472.238 L 714.019,470.606 L 715.86,469.006 L 717.479,467.341 L 718.989,465.643"/>
</g>
<g>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 472.883 378.401 L 472.883,360.469"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 472.883 378.111 L 472.883,365.811"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 473.404 362.192 L 472.308,362.192 L 472.308,360 L 473.404,360 L 473.404,362.192z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 473.404 362.192 L 472.308,362.192 L 472.308,360 L 473.404,360 L 473.404,362.192"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 446.304 378.401 L 446.304,360.469"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 446.304 378.111 L 446.304,365.811"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 446.824 362.192 L 445.728,362.192 L 445.728,360 L 446.824,360 L 446.824,362.192z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 446.824 362.192 L 445.728,362.192 L 445.728,360 L 446.824,360 L 446.824,362.192"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 480.318 380.677 C 480.318,385.007 471.293,388.516 460.159,388.516 C 449.025,388.516 440,385.007 440,380.677 L 440,392.16 C 440,396.49 449.025,400 460.159,400 C 471.293,400 480.318,396.49 480.318,392.16 L 480.318,380.677z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 480.318 380.677 C 480.318,385.007 471.293,388.516 460.159,388.516 C 449.025,388.516 440,385.007 440,380.677 L 440,392.16 C 440,396.49 449.025,400 460.159,400 C 471.293,400 480.318,396.49 480.318,392.16 L 480.318,380.677"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 460.159 388.516 C 471.293,388.516 480.318,385.007 480.318,380.677 C 480.318,376.347 471.293,372.837 460.159,372.837 C 449.025,372.837 440,376.347 440,380.677 C 440,385.007 449.025,388.516 460.159,388.516z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 460.159 388.516 C 471.293,388.516 480.318,385.007 480.318,380.677 C 480.318,376.347 471.293,372.837 460.159,372.837 C 449.025,372.837 440,376.347 440,380.677 C 440,385.007 449.025,388.516 460.159,388.516"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 455.555 377.612 L 457.22,380.109 L 450.927,381.563 L 452.301,380.419 L 442.574,378.756 L 445.015,376.927 L 454.4,378.516 L 455.555,377.612z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 464.413 383.666 L 463.276,381.093 L 468.953,379.958 L 467.968,380.84 L 477.431,382.456 L 475.162,384.272 L 465.754,382.507 L 464.413,383.666z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 461.308 376.248 L 467.667,374.508 L 467.742,377.234 L 466.153,376.93 L 463.048,379.503 L 460.088,379.072 L 463.29,376.554 L 461.308,376.248z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 458.583 386.014 L 452.528,387.149 L 452.301,384.349 L 454.041,384.726 L 457.374,381.88 L 460.324,382.38 L 456.767,385.484 L 458.583,386.014z"/>
</g>
<text font-size="21.4489" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:italic;font-weight:normal" x="620" y="390">
<tspan x="620" y="390">Mesh</tspan>
</text>
<g>
<path style="fill: #c9c9b6; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 294.294 324.172 L 328.289,324.172 L 313.995,338.514 L 280,338.514 L 294.294,324.172z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 294.294 324.172 L 328.289,324.172 L 313.995,338.514 L 280,338.514 L 294.294,324.172"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 295.599 336.092 L 295.599,336.168 L 295.613,336.23 L 295.633,336.314 L 295.661,336.397 L 295.703,336.46 L 295.751,336.536 L 295.814,336.605 L 295.876,336.668 L 295.939,336.744 L 296.022,336.821 L 296.106,336.883 L 296.196,336.939 L 296.3,336.994 L 296.397,337.057 L 296.522,337.105 L 296.633,337.168 L 296.758,337.216 L 296.897,337.265 L 297.036,337.306 L 297.168,337.348 L 297.313,337.39 L 297.459,337.431 L 297.612,337.452 L 297.779,337.48 L 297.938,337.494 L 298.105,337.522 L 298.258,337.543 L 298.431,337.563 L 298.605,337.57 L 298.771,337.577 L 298.938,337.577"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 298.57 337.577 L 298.737,337.577 L 298.896,337.57 L 299.056,337.556 L 299.222,337.536 L 299.389,337.522 L 299.542,337.494 L 299.695,337.48 L 299.854,337.445 L 300,337.411 L 300.153,337.369 L 300.285,337.327 L 300.423,337.286 L 300.555,337.237 L 300.68,337.188 L 300.791,337.14 L 300.909,337.084 L 301.02,337.022 L 301.118,336.966 L 301.215,336.897 L 301.298,336.827 L 301.375,336.758 L 301.437,336.696 L 301.506,336.619 L 301.562,336.543 L 301.604,336.48 L 301.652,336.404 L 301.673,336.314 L 301.694,336.237 L 301.715,336.168 L 301.722,336.092"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 299.306 333.308 L 299.132,333.308 L 298.966,333.315 L 298.792,333.315 L 298.639,333.329 L 298.473,333.35 L 298.306,333.363 L 298.146,333.377 L 297.98,333.412 L 297.834,333.44 L 297.688,333.461 L 297.543,333.495 L 297.397,333.537 L 297.265,333.572 L 297.14,333.613 L 297.015,333.669 L 296.876,333.711 L 296.779,333.759 L 296.668,333.801 L 296.564,333.856 L 296.48,333.919 L 296.39,333.974 L 296.314,334.023 L 296.237,334.085 L 296.182,334.148 L 296.126,334.217 L 296.071,334.28 L 296.043,334.335 L 296.008,334.405 L 295.988,334.46 L 295.981,334.537 L 295.974,334.592"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 302.083 334.592 L 302.083,334.53 L 302.076,334.46 L 302.048,334.398 L 302.02,334.321 L 301.985,334.266 L 301.93,334.19 L 301.874,334.134 L 301.819,334.065 L 301.736,334.016 L 301.673,333.947 L 301.59,333.891 L 301.479,333.842 L 301.388,333.773 L 301.284,333.738 L 301.173,333.683 L 301.048,333.627 L 300.916,333.586 L 300.784,333.544 L 300.653,333.509 L 300.514,333.481 L 300.368,333.447 L 300.215,333.412 L 300.069,333.391 L 299.917,333.363 L 299.764,333.35 L 299.604,333.329 L 299.438,333.315 L 299.264,333.315 L 299.098,333.308 L 298.938,333.308"/>
<path style="fill: #a5a585; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 280 340 L 313.995,340 L 313.995,338.514 L 280,338.514 L 280,340z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 280 340 L 313.995,340 L 313.995,338.514 L 280,338.514 L 280,340"/>
<path style="fill: #a5a585; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 294.294 324.172 L 328.289,324.172 L 328.289,300.916 L 294.294,300.916 L 294.294,324.172z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 294.294 324.172 L 328.289,324.172 L 328.289,300.916 L 294.294,300.916 L 294.294,324.172"/>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 329.219 323.256 L 329.219,300 L 328.289,300.916 L 328.289,324.172 L 329.219,323.256z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 329.219 323.256 L 329.219,300 L 328.289,300.916 L 328.289,324.172 L 329.219,323.256"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 295.974 322.694 L 326.623,322.694 L 326.623,302.784 L 295.974,302.784 L 295.974,322.694z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 295.974 322.694 L 326.623,322.694 L 326.623,302.784 L 295.974,302.784 L 295.974,322.694"/>
<path style="fill: #93936c; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 295.974 325.297 L 324.568,325.297 L 317.14,332.746 L 288.546,332.746 L 295.974,325.297z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 295.974 325.297 L 324.568,325.297 L 317.14,332.746 L 288.546,332.746 L 295.974,325.297"/>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 300.423 335.62 L 300.423,335.578 L 300.417,335.536 L 300.41,335.495 L 300.389,335.446 L 300.382,335.404 L 300.354,335.37 L 300.34,335.328 L 300.305,335.3 L 300.271,335.259 L 300.25,335.217 L 300.215,335.182 L 300.174,335.148 L 300.132,335.106 L 300.083,335.071 L 300.042,335.05 L 299.993,335.016 L 299.938,334.988 L 299.875,334.967 L 299.826,334.932 L 299.764,334.918 L 299.701,334.891 L 299.646,334.877 L 299.577,334.856 L 299.514,334.842 L 299.438,334.828 L 299.375,334.807 L 299.306,334.8 L 299.243,334.8 L 299.174,334.793 L 299.091,334.793 L 299.035,334.793 L 299.035,334.793 L 298.959,334.793 L 298.882,334.793 L 298.82,334.8 L 298.75,334.8 L 298.688,334.807 L 298.612,334.828 L 298.549,334.842 L 298.48,334.856 L 298.417,334.877 L 298.355,334.891 L 298.299,334.918 L 298.23,334.932 L 298.181,334.967 L 298.126,334.988 L 298.07,335.016 L 298.022,335.05 L 297.98,335.071 L 297.931,335.106 L 297.89,335.148 L 297.855,335.182 L 297.806,335.217 L 297.785,335.259 L 297.744,335.3 L 297.723,335.328 L 297.702,335.37 L 297.681,335.404 L 297.667,335.446 L 297.661,335.495 L 297.647,335.536 L 297.633,335.578 L 297.633,335.62 L 297.633,335.62 L 297.633,335.668 L 297.647,335.71 L 297.661,335.751 L 297.667,335.793 L 297.681,335.835 L 297.702,335.869 L 297.723,335.918 L 297.744,335.953 L 297.785,335.994 L 297.806,336.022 L 297.855,336.064 L 297.89,336.099 L 297.931,336.14 L 297.98,336.168 L 298.022,336.196 L 298.07,336.23 L 298.126,336.258 L 298.181,336.279 L 298.23,336.314 L 298.299,336.328 L 298.355,336.355 L 298.417,336.369 L 298.48,336.39 L 298.549,336.404 L 298.612,336.418 L 298.688,336.432 L 298.75,336.446 L 298.82,336.446 L 298.882,336.446 L 298.959,336.453 L 299.035,336.453 L 299.035,336.453 L 299.091,336.453 L 299.174,336.446 L 299.243,336.446 L 299.306,336.446 L 299.375,336.432 L 299.438,336.418 L 299.514,336.404 L 299.577,336.39 L 299.646,336.369 L 299.701,336.355 L 299.764,336.328 L 299.826,336.314 L 299.875,336.279 L 299.938,336.258 L 299.993,336.23 L 300.042,336.196 L 300.083,336.168 L 300.132,336.14 L 300.174,336.099 L 300.215,336.064 L 300.25,336.022 L 300.271,335.994 L 300.305,335.953 L 300.34,335.918 L 300.354,335.869 L 300.382,335.835 L 300.389,335.793 L 300.41,335.751 L 300.417,335.71 L 300.423,335.668 L 300.423,335.62z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #dbdbce" d="M 300.243 335.536 L 300.243,335.495 L 300.236,335.453 L 300.236,335.418 L 300.215,335.39 L 300.201,335.335 L 300.194,335.314 L 300.16,335.272 L 300.132,335.231 L 300.111,335.203 L 300.083,335.175 L 300.042,335.148 L 300.007,335.099 L 299.965,335.071 L 299.924,335.05 L 299.889,335.016 L 299.833,334.988 L 299.792,334.974 L 299.743,334.939 L 299.695,334.925 L 299.632,334.898 L 299.577,334.884 L 299.514,334.87 L 299.459,334.849 L 299.396,334.835 L 299.334,334.828 L 299.264,334.807 L 299.209,334.8 L 299.132,334.793 L 299.077,334.793 L 299.007,334.793 L 298.945,334.793 L 298.945,334.793 L 298.875,334.793 L 298.813,334.793 L 298.743,334.793 L 298.688,334.8 L 298.619,334.807 L 298.563,334.828 L 298.487,334.835 L 298.431,334.849 L 298.383,334.87 L 298.313,334.884 L 298.258,334.898 L 298.188,334.925 L 298.153,334.939 L 298.091,334.974 L 298.049,334.988 L 298.001,335.016 L 297.959,335.05 L 297.917,335.071 L 297.876,335.099 L 297.841,335.148 L 297.806,335.175 L 297.779,335.203 L 297.744,335.231 L 297.73,335.272 L 297.702,335.314 L 297.688,335.335 L 297.674,335.39 L 297.661,335.418 L 297.654,335.453 L 297.647,335.495 L 297.647,335.536 L 297.647,335.536 L 297.647,335.571 L 297.654,335.613 L 297.661,335.654 L 297.674,335.675 L 297.688,335.717 L 297.702,335.758 L 297.73,335.793 L 297.744,335.828 L 297.779,335.869 L 297.806,335.89 L 297.841,335.925 L 297.876,335.96 L 297.917,335.994 L 297.959,336.015 L 298.001,336.05 L 298.049,336.071 L 298.091,336.099 L 298.153,336.126 L 298.188,336.14 L 298.258,336.168 L 298.313,336.189 L 298.383,336.196 L 298.431,336.217 L 298.487,336.23 L 298.563,336.237 L 298.619,336.258 L 298.688,336.272 L 298.743,336.272 L 298.813,336.272 L 298.875,336.272 L 298.945,336.272 L 298.945,336.272 L 299.007,336.272 L 299.077,336.272 L 299.132,336.272 L 299.209,336.272 L 299.264,336.258 L 299.334,336.237 L 299.396,336.23 L 299.459,336.217 L 299.514,336.196 L 299.577,336.189 L 299.632,336.168 L 299.695,336.14 L 299.743,336.126 L 299.792,336.099 L 299.833,336.071 L 299.889,336.05 L 299.924,336.015 L 299.965,335.994 L 300.007,335.96 L 300.042,335.925 L 300.083,335.89 L 300.111,335.869 L 300.132,335.828 L 300.16,335.793 L 300.194,335.758 L 300.201,335.717 L 300.215,335.675 L 300.236,335.654 L 300.236,335.613 L 300.243,335.571 L 300.243,335.536"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #626248" d="M 295.793 336.272 L 295.793,336.355 L 295.807,336.418 L 295.835,336.494 L 295.856,336.578 L 295.897,336.647 L 295.939,336.709 L 296.001,336.786 L 296.064,336.862 L 296.133,336.925 L 296.203,336.994 L 296.293,337.057 L 296.376,337.126 L 296.487,337.182 L 296.591,337.237 L 296.703,337.286 L 296.821,337.348 L 296.952,337.397 L 297.07,337.445 L 297.223,337.487 L 297.362,337.529 L 297.508,337.577 L 297.654,337.612 L 297.806,337.633 L 297.959,337.661 L 298.126,337.688 L 298.285,337.702 L 298.445,337.73 L 298.612,337.744 L 298.785,337.751 L 298.952,337.751 L 299.118,337.751"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #626248" d="M 298.743 337.751 L 298.917,337.751 L 299.077,337.751 L 299.25,337.737 L 299.403,337.716 L 299.563,337.702 L 299.729,337.688 L 299.875,337.661 L 300.035,337.626 L 300.174,337.591 L 300.326,337.563 L 300.472,337.522 L 300.604,337.48 L 300.736,337.431 L 300.861,337.369 L 300.986,337.32 L 301.09,337.265 L 301.201,337.209 L 301.298,337.14 L 301.388,337.084 L 301.479,337.008 L 301.555,336.952 L 301.631,336.883 L 301.694,336.8 L 301.736,336.723 L 301.798,336.661 L 301.826,336.578 L 301.86,336.501 L 301.888,336.418 L 301.888,336.355 L 301.902,336.272"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #626248" d="M 299.486 333.488 L 299.327,333.488 L 299.16,333.495 L 298.993,333.495 L 298.827,333.509 L 298.653,333.53 L 298.487,333.537 L 298.341,333.565 L 298.174,333.586 L 298.022,333.627 L 297.876,333.641 L 297.73,333.683 L 297.591,333.711 L 297.452,333.759 L 297.327,333.801 L 297.202,333.842 L 297.07,333.884 L 296.966,333.933 L 296.855,333.981 L 296.758,334.044 L 296.668,334.099 L 296.585,334.148 L 296.501,334.217 L 296.418,334.266 L 296.369,334.321 L 296.314,334.398 L 296.265,334.453 L 296.224,334.523 L 296.196,334.578 L 296.175,334.641 L 296.168,334.717 L 296.161,334.787"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #626248" d="M 302.277 334.787 L 302.263,334.71 L 302.256,334.641 L 302.242,334.578 L 302.208,334.509 L 302.166,334.446 L 302.117,334.377 L 302.062,334.321 L 301.999,334.259 L 301.93,334.19 L 301.847,334.134 L 301.763,334.072 L 301.673,334.016 L 301.562,333.967 L 301.465,333.919 L 301.347,333.87 L 301.236,333.815 L 301.111,333.773 L 300.979,333.738 L 300.833,333.697 L 300.694,333.669 L 300.555,333.627 L 300.41,333.599 L 300.257,333.572 L 300.09,333.544 L 299.944,333.53 L 299.785,333.509 L 299.618,333.495 L 299.445,333.495 L 299.292,333.488 L 299.118,333.488"/>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 328.289 325.477 L 313.995,339.82 L 313.995,338.514 L 328.289,324.172 L 328.289,325.477z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 328.289 325.477 L 313.995,339.82 L 313.995,338.514 L 328.289,324.172 L 328.289,325.477"/>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 323.464 323.075 L 323.464,323.429 L 326.248,323.429 L 326.248,323.075 L 323.464,323.075z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 323.464 323.075 L 323.464,323.429 L 326.248,323.429 L 326.248,323.075 L 323.464,323.075"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #000000" d="M 322.7 327.157 L 294.294,327.157"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #000000" d="M 320.854 329.025 L 292.447,329.025"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #000000" d="M 319 330.885 L 290.587,330.885"/>
<path style="fill: #c9c9b6; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 295.224 300 L 329.219,300 L 328.289,300.916 L 294.294,300.916 L 295.224,300z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.02; stroke: #494936" d="M 295.224 300 L 329.219,300 L 328.289,300.916 L 294.294,300.916 L 295.224,300"/>
</g>
<g>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 260.594 397.19 C 260.943,395.941 262.38,389.684 262.447,388.811 C 262.514,387.938 262.192,386.851 261.722,386.623 C 261.749,386.314 261.749,386.139 261.749,386.139 C 261.641,386.099 261.521,386.059 261.413,386.005 L 261.453,386.018 C 261.453,386.018 261.776,384.622 261.977,383.655 C 262.34,381.802 262.38,380.862 262.38,380.862 C 262.367,380.607 262.299,380.379 262.071,380.312 L 260.984,380.016 C 260.755,379.949 260.594,380.097 260.446,380.325 C 260.446,380.325 260.017,381.184 259.426,382.957 C 259.104,383.883 258.808,385.065 258.808,385.065 L 258.822,385.065 C 258.177,384.85 257.519,384.662 256.861,384.474 C 255.169,384.004 253.491,383.655 251.799,383.4 C 251.799,383.4 251.719,383.548 251.571,383.83 C 251.061,383.776 250.228,384.555 249.839,385.334 C 249.449,386.112 247.476,392.222 247.126,393.471 C 246.777,394.719 246.119,397.915 245.824,399.499 C 245.529,401.084 245.26,403.85 244.24,407.529 C 243.635,409.704 242.669,412.954 242.158,414.296 C 242.024,414.659 240.963,416.445 242.507,417.062 C 244.025,417.667 246.294,418.311 247.435,418.633 C 248.577,418.942 250.846,419.546 252.457,419.815 C 254.095,420.084 254.109,417.989 254.176,417.613 C 254.431,416.203 255.263,412.913 255.854,410.738 C 256.875,407.046 258.07,404.548 258.634,403.031 C 259.184,401.514 260.245,398.439 260.594,397.19z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 260.594 397.19 C 260.943,395.941 262.38,389.684 262.447,388.811 C 262.514,387.938 262.192,386.851 261.722,386.623 C 261.749,386.314 261.749,386.139 261.749,386.139 C 261.641,386.099 261.521,386.059 261.413,386.005 L 261.453,386.018 C 261.453,386.018 261.776,384.622 261.977,383.655 C 262.34,381.802 262.38,380.862 262.38,380.862 C 262.367,380.607 262.299,380.379 262.071,380.312 L 260.984,380.016 C 260.755,379.949 260.594,380.097 260.446,380.325 C 260.446,380.325 260.017,381.184 259.426,382.957 C 259.104,383.883 258.808,385.065 258.808,385.065 L 258.822,385.065 C 258.177,384.85 257.519,384.662 256.861,384.474 C 255.169,384.004 253.491,383.655 251.799,383.4 C 251.799,383.4 251.719,383.548 251.571,383.83 L 251.571,383.83 C 251.061,383.776 250.228,384.555 249.839,385.334 C 249.449,386.112 247.476,392.222 247.126,393.471 C 246.777,394.719 246.119,397.915 245.824,399.499 C 245.529,401.084 245.26,403.85 244.24,407.529 C 243.635,409.704 242.669,412.954 242.158,414.296 C 242.024,414.659 240.963,416.445 242.507,417.062 C 244.025,417.667 246.294,418.311 247.435,418.633 C 248.577,418.942 250.846,419.546 252.457,419.815 C 254.095,420.084 254.109,417.989 254.176,417.613 C 254.431,416.203 255.263,412.913 255.854,410.738 C 256.875,407.046 258.07,404.548 258.634,403.031 C 259.184,401.514 260.245,398.439 260.594,397.19"/>
<path style="fill: #b7b79d; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 258.916 397.351 C 259.265,396.102 260.702,389.845 260.769,388.986 C 260.836,388.113 260.514,387.012 260.044,386.797 C 260.07,386.488 260.07,386.314 260.07,386.314 C 259.963,386.26 259.842,386.22 259.735,386.179 L 259.762,386.193 C 259.762,386.193 260.097,384.796 260.299,383.83 C 260.661,381.963 260.688,381.023 260.688,381.023 C 260.688,380.768 260.621,380.553 260.393,380.486 L 259.305,380.191 C 259.077,380.124 258.916,380.271 258.768,380.5 C 258.768,380.5 258.338,381.359 257.748,383.118 C 257.425,384.058 257.13,385.226 257.13,385.226 L 257.143,385.24 C 256.499,385.025 255.841,384.823 255.183,384.649 C 253.491,384.179 251.799,383.816 250.121,383.561 C 250.121,383.561 250.04,383.722 249.893,383.991 C 249.382,383.951 248.55,384.716 248.16,385.495 C 247.771,386.273 245.797,392.383 245.448,393.645 C 245.099,394.894 244.441,398.076 244.146,399.661 C 243.85,401.245 243.582,404.011 242.561,407.704 C 241.957,409.879 240.99,413.115 240.48,414.471 C 240.346,414.82 239.285,416.619 240.829,417.237 C 242.346,417.828 244.616,418.486 245.757,418.795 C 246.898,419.117 249.167,419.708 250.779,419.976 C 252.417,420.245 252.43,418.163 252.497,417.788 C 252.753,416.364 253.585,413.088 254.176,410.913 C 255.196,407.22 256.391,404.709 256.955,403.192 C 257.506,401.688 258.567,398.613 258.916,397.351z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 258.916 397.351 C 259.265,396.102 260.702,389.845 260.769,388.986 C 260.836,388.113 260.514,387.012 260.044,386.797 C 260.07,386.488 260.07,386.314 260.07,386.314 C 259.963,386.26 259.842,386.22 259.735,386.179 L 259.762,386.193 C 259.762,386.193 260.097,384.796 260.299,383.83 C 260.661,381.963 260.688,381.023 260.688,381.023 C 260.688,380.768 260.621,380.553 260.393,380.486 L 259.305,380.191 C 259.077,380.124 258.916,380.271 258.768,380.5 C 258.768,380.5 258.338,381.359 257.748,383.118 C 257.425,384.058 257.13,385.226 257.13,385.226 L 257.143,385.24 C 256.499,385.025 255.841,384.823 255.183,384.649 C 253.491,384.179 251.799,383.816 250.121,383.561 C 250.121,383.561 250.04,383.722 249.893,383.991 L 249.893,383.991 C 249.382,383.951 248.55,384.716 248.16,385.495 C 247.771,386.273 245.797,392.383 245.448,393.645 C 245.099,394.894 244.441,398.076 244.146,399.661 C 243.85,401.245 243.582,404.011 242.561,407.704 C 241.957,409.879 240.99,413.115 240.48,414.471 C 240.346,414.82 239.285,416.619 240.829,417.237 C 242.346,417.828 244.616,418.486 245.757,418.795 C 246.898,419.117 249.167,419.708 250.779,419.976 C 252.417,420.245 252.43,418.163 252.497,417.788 C 252.753,416.364 253.585,413.088 254.176,410.913 C 255.196,407.22 256.391,404.709 256.955,403.192 C 257.506,401.688 258.567,398.613 258.916,397.351"/>
<path style="fill: #c9c9b6; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.8; stroke: #ecece7" fill-rule="evenodd" d="M 250.336 383.601 C 250.336,383.601 248.12,388.126 246.845,392.719 C 245.341,398.184 245.126,399.996 245.354,402.534 C 245.394,403.058 245.918,403.702 246.495,403.863 C 246.724,403.917 246.992,403.998 247.1,404.024 C 247.22,404.065 247.65,404.159 247.999,404.441 C 248.362,404.723 248.442,404.79 248.657,404.897 C 248.859,405.018 248.899,405.099 249.49,405.26 C 250.08,405.421 250.148,405.381 250.389,405.381 C 250.631,405.394 250.738,405.381 251.195,405.327 C 251.638,405.26 252.054,405.394 252.175,405.421 C 252.283,405.461 252.551,405.528 252.779,405.595 C 253.357,405.757 254.136,405.475 254.444,405.045 C 255.935,402.991 256.687,401.312 258.191,395.847 C 259.453,391.255 259.869,386.233 259.869,386.233 L 250.336,383.601z"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 253.021 402.561 C 252.632,403.998 251.141,404.83 249.718,404.441 C 248.281,404.051 247.449,402.561 247.838,401.138 C 248.241,399.701 249.718,398.868 251.141,399.258 C 252.578,399.661 253.41,401.138 253.021,402.561z"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 248.066 398.157 C 248.429,398.264 248.711,398.412 248.845,398.492 C 248.979,398.586 249.02,398.707 248.899,398.788 C 248.778,398.868 248.563,399.029 248.442,399.137 C 248.295,399.258 248.201,399.285 247.999,399.164 C 247.637,398.962 246.871,398.412 246.683,398.157 C 246.576,398.022 246.67,397.969 246.871,397.955 C 247.14,397.942 247.677,398.049 248.066,398.157z"/>
<path style="fill: #ff0000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 246.16 400.99 C 246.361,401.057 246.845,401.299 246.979,401.406 C 247.126,401.5 247.341,401.728 247.328,401.997 C 247.301,402.306 247.328,402.964 247.462,403.179 C 247.637,403.46 247.61,403.581 247.355,403.541 C 247.153,403.501 246.63,403.313 246.482,403.232 C 246.334,403.165 246.119,403.031 246.052,402.829 C 245.918,402.413 245.878,401.554 245.958,401.124 C 245.985,400.95 246.066,400.95 246.16,400.99z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 253.021 402.561 C 252.632,403.998 251.141,404.83 249.718,404.441 C 248.281,404.051 247.449,402.561 247.838,401.138 C 248.241,399.701 249.718,398.868 251.141,399.258 C 252.578,399.661 253.41,401.138 253.021,402.561"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 248.066 398.157 C 248.429,398.264 248.711,398.412 248.845,398.492 C 248.979,398.586 249.02,398.707 248.899,398.788 C 248.778,398.868 248.563,399.029 248.442,399.137 C 248.295,399.258 248.201,399.285 247.999,399.164 C 247.637,398.962 246.871,398.412 246.683,398.157 C 246.576,398.022 246.67,397.969 246.871,397.955 C 247.14,397.942 247.677,398.049 248.066,398.157"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.16 400.99 C 246.361,401.057 246.845,401.299 246.979,401.406 C 247.126,401.5 247.341,401.728 247.328,401.997 C 247.301,402.306 247.328,402.964 247.462,403.179 C 247.637,403.46 247.61,403.581 247.355,403.541 C 247.153,403.501 246.63,403.313 246.482,403.232 C 246.334,403.165 246.119,403.031 246.052,402.829 C 245.918,402.413 245.878,401.554 245.958,401.124 C 245.985,400.95 246.066,400.95 246.16,400.99"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 254.35 399.889 C 253.988,399.795 253.679,399.781 253.518,399.781 C 253.357,399.795 253.263,399.875 253.316,399.996 C 253.384,400.13 253.491,400.386 253.531,400.533 C 253.598,400.708 253.666,400.788 253.894,400.802 C 254.31,400.802 255.25,400.721 255.545,400.6 C 255.693,400.533 255.639,400.439 255.478,400.332 C 255.25,400.184 254.74,399.996 254.35,399.889z"/>
<path style="fill: #00ff00; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 254.538 403.299 C 254.337,403.246 253.786,403.219 253.612,403.232 C 253.451,403.246 253.142,403.326 253.021,403.568 C 252.887,403.85 252.524,404.4 252.296,404.521 C 252.001,404.669 251.96,404.79 252.202,404.87 C 252.39,404.951 252.941,405.058 253.102,405.072 C 253.276,405.085 253.518,405.085 253.679,404.938 C 254.028,404.656 254.485,403.93 254.646,403.528 C 254.713,403.366 254.646,403.326 254.538,403.299z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.35 399.889 C 253.988,399.795 253.679,399.781 253.518,399.781 C 253.357,399.795 253.263,399.875 253.316,399.996 C 253.384,400.13 253.491,400.386 253.531,400.533 C 253.598,400.708 253.666,400.788 253.894,400.802 C 254.31,400.802 255.25,400.721 255.545,400.6 C 255.693,400.533 255.639,400.439 255.478,400.332 C 255.25,400.184 254.74,399.996 254.35,399.889"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.538 403.299 C 254.337,403.246 253.786,403.219 253.612,403.232 C 253.451,403.246 253.142,403.326 253.021,403.568 C 252.887,403.85 252.524,404.4 252.296,404.521 C 252.001,404.669 251.96,404.79 252.202,404.87 C 252.39,404.951 252.941,405.058 253.102,405.072 C 253.276,405.085 253.518,405.085 253.679,404.938 C 254.028,404.656 254.485,403.93 254.646,403.528 C 254.713,403.366 254.646,403.326 254.538,403.299"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.095 387.791 L 254.981,384.582"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.391 387.871 L 255.277,384.662"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 260.688 380.889 C 260.688,380.889 260.178,380.741 259.748,380.634 C 259.372,380.527 258.835,380.379 258.835,380.379"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 258.916 397.351 C 259.265,396.102 260.702,389.845 260.769,388.986 C 260.836,388.113 260.514,387.012 260.044,386.797 C 260.07,386.488 260.07,386.314 260.07,386.314 C 259.963,386.26 259.842,386.22 259.735,386.179 L 259.762,386.193 C 259.762,386.193 260.097,384.796 260.299,383.83 C 260.661,381.963 260.688,381.023 260.688,381.023 C 260.688,380.768 260.621,380.553 260.393,380.486 L 259.305,380.191 C 259.077,380.124 258.916,380.271 258.768,380.5 C 258.768,380.5 258.338,381.359 257.748,383.118 C 257.425,384.058 257.13,385.226 257.13,385.226 L 257.143,385.24 C 256.499,385.025 255.841,384.823 255.183,384.649 C 253.491,384.179 251.799,383.816 250.121,383.561 C 250.121,383.561 250.04,383.722 249.893,383.991 L 249.893,383.991 C 249.382,383.951 248.55,384.716 248.16,385.495 C 247.771,386.273 245.797,392.383 245.448,393.645 C 245.099,394.894 244.441,398.076 244.146,399.661 C 243.85,401.245 243.582,404.011 242.561,407.704 C 241.957,409.879 240.99,413.115 240.48,414.471 C 240.346,414.82 239.285,416.619 240.829,417.237 C 242.346,417.828 244.616,418.486 245.757,418.795 C 246.898,419.117 249.167,419.708 250.779,419.976 C 252.417,420.245 252.43,418.163 252.497,417.788 C 252.753,416.364 253.585,413.088 254.176,410.913 C 255.196,407.22 256.391,404.709 256.955,403.192 C 257.506,401.688 258.567,398.613 258.916,397.351"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 247.1 406.133 C 246.925,406.764 246.267,407.14 245.623,406.965 C 244.978,406.79 244.602,406.133 244.777,405.488 C 244.965,404.844 245.623,404.468 246.267,404.642 C 246.912,404.817 247.288,405.488 247.1,406.133z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 250.148 407.408 C 249.973,408.053 249.302,408.429 248.657,408.254 C 248.026,408.08 247.65,407.408 247.825,406.777 C 247.999,406.133 248.657,405.757 249.302,405.931 C 249.946,406.106 250.322,406.777 250.148,407.408z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 253.424 407.878 C 253.249,408.509 252.578,408.885 251.933,408.711 C 251.302,408.536 250.926,407.878 251.101,407.234 C 251.276,406.589 251.933,406.213 252.578,406.388 C 253.223,406.562 253.598,407.234 253.424,407.878z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 246.375 408.778 C 246.2,409.422 245.529,409.798 244.898,409.61 C 244.253,409.436 243.877,408.778 244.052,408.133 C 244.226,407.489 244.898,407.113 245.529,407.287 C 246.173,407.475 246.549,408.133 246.375,408.778z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 249.409 410.067 C 249.235,410.711 248.577,411.087 247.932,410.899 C 247.288,410.725 246.912,410.067 247.086,409.422 C 247.274,408.778 247.932,408.402 248.577,408.576 C 249.208,408.764 249.597,409.422 249.409,410.067z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 252.699 410.523 C 252.511,411.154 251.853,411.544 251.208,411.356 C 250.564,411.181 250.188,410.523 250.362,409.879 C 250.55,409.234 251.208,408.858 251.853,409.033 C 252.497,409.221 252.873,409.879 252.699,410.523z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 245.649 411.423 C 245.475,412.067 244.804,412.443 244.159,412.269 C 243.528,412.094 243.139,411.423 243.327,410.778 C 243.501,410.147 244.159,409.758 244.804,409.946 C 245.448,410.12 245.824,410.778 245.649,411.423z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 248.684 412.712 C 248.509,413.356 247.838,413.732 247.207,413.558 C 246.563,413.383 246.187,412.712 246.361,412.067 C 246.536,411.423 247.207,411.06 247.838,411.235 C 248.483,411.409 248.859,412.067 248.684,412.712z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 251.96 413.168 C 251.786,413.813 251.114,414.189 250.483,414.001 C 249.839,413.826 249.463,413.168 249.637,412.524 C 249.812,411.879 250.483,411.503 251.114,411.691 C 251.759,411.866 252.135,412.524 251.96,413.168z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 244.911 414.068 C 244.736,414.713 244.065,415.089 243.434,414.914 C 242.789,414.739 242.413,414.082 242.588,413.437 C 242.763,412.793 243.434,412.417 244.065,412.591 C 244.71,412.766 245.086,413.437 244.911,414.082 L 244.911,414.068z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 247.959 415.357 C 247.771,416.002 247.113,416.378 246.469,416.203 C 245.824,416.029 245.448,415.357 245.636,414.726 C 245.811,414.082 246.469,413.706 247.113,413.88 C 247.758,414.055 248.134,414.726 247.959,415.357z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 251.235 415.814 C 251.047,416.458 250.389,416.834 249.745,416.66 C 249.1,416.485 248.724,415.814 248.912,415.169 C 249.087,414.538 249.745,414.162 250.389,414.337 C 251.034,414.511 251.41,415.169 251.235,415.814z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.428 417.156 C 246.415,417.21 246.307,417.237 246.187,417.21 C 246.079,417.17 245.999,417.103 246.025,417.036 C 246.039,416.982 246.146,416.955 246.254,416.982 C 246.361,417.009 246.442,417.089 246.428,417.143"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.025 417.036 L 245.636,418.419"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.079 417.156 L 245.73,418.445"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.428 417.156 L 246.039,418.526"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 246.307 417.21 L 245.958,418.499"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 248.751 397.19 L 248.483,398.143"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 248.859 397.217 L 248.59,398.184"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.27 398.707 L 254.001,399.674"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.162 398.68 L 253.894,399.647"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 259.762 386.193 C 259.762,386.193 260.097,384.796 260.299,383.83 C 260.661,381.963 260.688,381.023 260.688,381.023 C 260.688,380.768 260.621,380.553 260.393,380.486 L 259.305,380.191 C 259.077,380.124 258.916,380.271 258.768,380.5 C 258.768,380.5 258.338,381.359 257.748,383.118 C 257.425,384.058 257.13,385.226 257.13,385.226"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 259.896 385.683 C 259.023,385.347 258.15,385.038 257.251,384.756"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 249.033 385.871 C 250.819,386.126 252.739,386.529 254.525,387.025 C 256.311,387.522 258.164,388.153 259.829,388.852"/>
<path style="fill: #b7b79d; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" fill-rule="evenodd" d="M 256.7 398.922 C 256.633,399.164 256.391,399.298 256.15,399.231 L 246.858,396.666 C 246.616,396.599 246.482,396.357 246.549,396.129 L 248.174,390.248 C 248.241,390.006 248.483,389.872 248.711,389.939 L 258.016,392.504 C 258.258,392.571 258.392,392.813 258.325,393.054 L 256.7,398.935 L 256.7,398.922z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.095 387.791 L 254.981,384.582"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 254.391 387.871 L 255.277,384.662"/>
</g>
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="327.424" y1="326.359" x2="444.266" y2="375.437"/>
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="259.522" y1="401.737" x2="439.089" y2="384.112"/>
<g>
<path style="fill: #7a7a5a; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 290.594 477.19 C 290.943,475.941 292.38,469.684 292.447,468.811 C 292.514,467.938 292.192,466.851 291.722,466.623 C 291.749,466.314 291.749,466.139 291.749,466.139 C 291.641,466.099 291.521,466.059 291.413,466.005 L 291.453,466.018 C 291.453,466.018 291.776,464.622 291.977,463.655 C 292.34,461.802 292.38,460.862 292.38,460.862 C 292.367,460.607 292.299,460.379 292.071,460.312 L 290.984,460.016 C 290.755,459.949 290.594,460.097 290.446,460.325 C 290.446,460.325 290.017,461.184 289.426,462.957 C 289.104,463.883 288.808,465.065 288.808,465.065 L 288.822,465.065 C 288.177,464.85 287.519,464.662 286.861,464.474 C 285.169,464.004 283.491,463.655 281.799,463.4 C 281.799,463.4 281.719,463.548 281.571,463.83 C 281.061,463.776 280.228,464.555 279.839,465.334 C 279.449,466.112 277.476,472.222 277.126,473.471 C 276.777,474.719 276.119,477.915 275.824,479.499 C 275.529,481.084 275.26,483.85 274.24,487.529 C 273.635,489.704 272.669,492.954 272.158,494.296 C 272.024,494.659 270.963,496.445 272.507,497.062 C 274.025,497.667 276.294,498.311 277.435,498.633 C 278.577,498.942 280.846,499.546 282.457,499.815 C 284.095,500.084 284.109,497.989 284.176,497.613 C 284.431,496.203 285.263,492.913 285.854,490.738 C 286.875,487.046 288.07,484.548 288.634,483.031 C 289.184,481.514 290.245,478.439 290.594,477.19z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 290.594 477.19 C 290.943,475.941 292.38,469.684 292.447,468.811 C 292.514,467.938 292.192,466.851 291.722,466.623 C 291.749,466.314 291.749,466.139 291.749,466.139 C 291.641,466.099 291.521,466.059 291.413,466.005 L 291.453,466.018 C 291.453,466.018 291.776,464.622 291.977,463.655 C 292.34,461.802 292.38,460.862 292.38,460.862 C 292.367,460.607 292.299,460.379 292.071,460.312 L 290.984,460.016 C 290.755,459.949 290.594,460.097 290.446,460.325 C 290.446,460.325 290.017,461.184 289.426,462.957 C 289.104,463.883 288.808,465.065 288.808,465.065 L 288.822,465.065 C 288.177,464.85 287.519,464.662 286.861,464.474 C 285.169,464.004 283.491,463.655 281.799,463.4 C 281.799,463.4 281.719,463.548 281.571,463.83 L 281.571,463.83 C 281.061,463.776 280.228,464.555 279.839,465.334 C 279.449,466.112 277.476,472.222 277.126,473.471 C 276.777,474.719 276.119,477.915 275.824,479.499 C 275.529,481.084 275.26,483.85 274.24,487.529 C 273.635,489.704 272.669,492.954 272.158,494.296 C 272.024,494.659 270.963,496.445 272.507,497.062 C 274.025,497.667 276.294,498.311 277.435,498.633 C 278.577,498.942 280.846,499.546 282.457,499.815 C 284.095,500.084 284.109,497.989 284.176,497.613 C 284.431,496.203 285.263,492.913 285.854,490.738 C 286.875,487.046 288.07,484.548 288.634,483.031 C 289.184,481.514 290.245,478.439 290.594,477.19"/>
<path style="fill: #b7b79d; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 288.916 477.351 C 289.265,476.102 290.702,469.845 290.769,468.986 C 290.836,468.113 290.514,467.012 290.044,466.797 C 290.07,466.488 290.07,466.314 290.07,466.314 C 289.963,466.26 289.842,466.22 289.735,466.179 L 289.762,466.193 C 289.762,466.193 290.097,464.796 290.299,463.83 C 290.661,461.963 290.688,461.023 290.688,461.023 C 290.688,460.768 290.621,460.553 290.393,460.486 L 289.305,460.191 C 289.077,460.124 288.916,460.271 288.768,460.5 C 288.768,460.5 288.338,461.359 287.748,463.118 C 287.425,464.058 287.13,465.226 287.13,465.226 L 287.143,465.24 C 286.499,465.025 285.841,464.823 285.183,464.649 C 283.491,464.179 281.799,463.816 280.121,463.561 C 280.121,463.561 280.04,463.722 279.893,463.991 C 279.382,463.951 278.55,464.716 278.16,465.495 C 277.771,466.273 275.797,472.383 275.448,473.645 C 275.099,474.894 274.441,478.076 274.146,479.661 C 273.85,481.245 273.582,484.011 272.561,487.704 C 271.957,489.879 270.99,493.115 270.48,494.471 C 270.346,494.82 269.285,496.619 270.829,497.237 C 272.346,497.828 274.616,498.486 275.757,498.795 C 276.898,499.117 279.167,499.708 280.779,499.976 C 282.417,500.245 282.43,498.163 282.497,497.788 C 282.753,496.364 283.585,493.088 284.176,490.913 C 285.196,487.22 286.391,484.709 286.955,483.192 C 287.506,481.688 288.567,478.613 288.916,477.351z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 288.916 477.351 C 289.265,476.102 290.702,469.845 290.769,468.986 C 290.836,468.113 290.514,467.012 290.044,466.797 C 290.07,466.488 290.07,466.314 290.07,466.314 C 289.963,466.26 289.842,466.22 289.735,466.179 L 289.762,466.193 C 289.762,466.193 290.097,464.796 290.299,463.83 C 290.661,461.963 290.688,461.023 290.688,461.023 C 290.688,460.768 290.621,460.553 290.393,460.486 L 289.305,460.191 C 289.077,460.124 288.916,460.271 288.768,460.5 C 288.768,460.5 288.338,461.359 287.748,463.118 C 287.425,464.058 287.13,465.226 287.13,465.226 L 287.143,465.24 C 286.499,465.025 285.841,464.823 285.183,464.649 C 283.491,464.179 281.799,463.816 280.121,463.561 C 280.121,463.561 280.04,463.722 279.893,463.991 L 279.893,463.991 C 279.382,463.951 278.55,464.716 278.16,465.495 C 277.771,466.273 275.797,472.383 275.448,473.645 C 275.099,474.894 274.441,478.076 274.146,479.661 C 273.85,481.245 273.582,484.011 272.561,487.704 C 271.957,489.879 270.99,493.115 270.48,494.471 C 270.346,494.82 269.285,496.619 270.829,497.237 C 272.346,497.828 274.616,498.486 275.757,498.795 C 276.898,499.117 279.167,499.708 280.779,499.976 C 282.417,500.245 282.43,498.163 282.497,497.788 C 282.753,496.364 283.585,493.088 284.176,490.913 C 285.196,487.22 286.391,484.709 286.955,483.192 C 287.506,481.688 288.567,478.613 288.916,477.351"/>
<path style="fill: #c9c9b6; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.8; stroke: #ecece7" fill-rule="evenodd" d="M 280.336 463.601 C 280.336,463.601 278.12,468.126 276.845,472.719 C 275.341,478.184 275.126,479.996 275.354,482.534 C 275.394,483.058 275.918,483.702 276.495,483.863 C 276.724,483.917 276.992,483.998 277.1,484.024 C 277.22,484.065 277.65,484.159 277.999,484.441 C 278.362,484.723 278.442,484.79 278.657,484.897 C 278.859,485.018 278.899,485.099 279.49,485.26 C 280.08,485.421 280.148,485.381 280.389,485.381 C 280.631,485.394 280.738,485.381 281.195,485.327 C 281.638,485.26 282.054,485.394 282.175,485.421 C 282.283,485.461 282.551,485.528 282.779,485.595 C 283.357,485.757 284.136,485.475 284.444,485.045 C 285.935,482.991 286.687,481.312 288.191,475.847 C 289.453,471.255 289.869,466.233 289.869,466.233 L 280.336,463.601z"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 283.021 482.561 C 282.632,483.998 281.141,484.83 279.718,484.441 C 278.281,484.051 277.449,482.561 277.838,481.138 C 278.241,479.701 279.718,478.868 281.141,479.258 C 282.578,479.661 283.41,481.138 283.021,482.561z"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 278.066 478.157 C 278.429,478.264 278.711,478.412 278.845,478.492 C 278.979,478.586 279.02,478.707 278.899,478.788 C 278.778,478.868 278.563,479.029 278.442,479.137 C 278.295,479.258 278.201,479.285 277.999,479.164 C 277.637,478.962 276.871,478.412 276.683,478.157 C 276.576,478.022 276.67,477.969 276.871,477.955 C 277.14,477.942 277.677,478.049 278.066,478.157z"/>
<path style="fill: #ff0000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 276.16 480.99 C 276.361,481.057 276.845,481.299 276.979,481.406 C 277.126,481.5 277.341,481.728 277.328,481.997 C 277.301,482.306 277.328,482.964 277.462,483.179 C 277.637,483.46 277.61,483.581 277.355,483.541 C 277.153,483.501 276.63,483.313 276.482,483.232 C 276.334,483.165 276.119,483.031 276.052,482.829 C 275.918,482.413 275.878,481.554 275.958,481.124 C 275.985,480.95 276.066,480.95 276.16,480.99z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 283.021 482.561 C 282.632,483.998 281.141,484.83 279.718,484.441 C 278.281,484.051 277.449,482.561 277.838,481.138 C 278.241,479.701 279.718,478.868 281.141,479.258 C 282.578,479.661 283.41,481.138 283.021,482.561"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 278.066 478.157 C 278.429,478.264 278.711,478.412 278.845,478.492 C 278.979,478.586 279.02,478.707 278.899,478.788 C 278.778,478.868 278.563,479.029 278.442,479.137 C 278.295,479.258 278.201,479.285 277.999,479.164 C 277.637,478.962 276.871,478.412 276.683,478.157 C 276.576,478.022 276.67,477.969 276.871,477.955 C 277.14,477.942 277.677,478.049 278.066,478.157"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.16 480.99 C 276.361,481.057 276.845,481.299 276.979,481.406 C 277.126,481.5 277.341,481.728 277.328,481.997 C 277.301,482.306 277.328,482.964 277.462,483.179 C 277.637,483.46 277.61,483.581 277.355,483.541 C 277.153,483.501 276.63,483.313 276.482,483.232 C 276.334,483.165 276.119,483.031 276.052,482.829 C 275.918,482.413 275.878,481.554 275.958,481.124 C 275.985,480.95 276.066,480.95 276.16,480.99"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 284.35 479.889 C 283.988,479.795 283.679,479.781 283.518,479.781 C 283.357,479.795 283.263,479.875 283.316,479.996 C 283.384,480.13 283.491,480.386 283.531,480.533 C 283.598,480.708 283.666,480.788 283.894,480.802 C 284.31,480.802 285.25,480.721 285.545,480.6 C 285.693,480.533 285.639,480.439 285.478,480.332 C 285.25,480.184 284.74,479.996 284.35,479.889z"/>
<path style="fill: #00ff00; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 284.538 483.299 C 284.337,483.246 283.786,483.219 283.612,483.232 C 283.451,483.246 283.142,483.326 283.021,483.568 C 282.887,483.85 282.524,484.4 282.296,484.521 C 282.001,484.669 281.96,484.79 282.202,484.87 C 282.39,484.951 282.941,485.058 283.102,485.072 C 283.276,485.085 283.518,485.085 283.679,484.938 C 284.028,484.656 284.485,483.93 284.646,483.528 C 284.713,483.366 284.646,483.326 284.538,483.299z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.35 479.889 C 283.988,479.795 283.679,479.781 283.518,479.781 C 283.357,479.795 283.263,479.875 283.316,479.996 C 283.384,480.13 283.491,480.386 283.531,480.533 C 283.598,480.708 283.666,480.788 283.894,480.802 C 284.31,480.802 285.25,480.721 285.545,480.6 C 285.693,480.533 285.639,480.439 285.478,480.332 C 285.25,480.184 284.74,479.996 284.35,479.889"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.538 483.299 C 284.337,483.246 283.786,483.219 283.612,483.232 C 283.451,483.246 283.142,483.326 283.021,483.568 C 282.887,483.85 282.524,484.4 282.296,484.521 C 282.001,484.669 281.96,484.79 282.202,484.87 C 282.39,484.951 282.941,485.058 283.102,485.072 C 283.276,485.085 283.518,485.085 283.679,484.938 C 284.028,484.656 284.485,483.93 284.646,483.528 C 284.713,483.366 284.646,483.326 284.538,483.299"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.095 467.791 L 284.981,464.582"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.391 467.871 L 285.277,464.662"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 290.688 460.889 C 290.688,460.889 290.178,460.741 289.748,460.634 C 289.372,460.527 288.835,460.379 288.835,460.379"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 288.916 477.351 C 289.265,476.102 290.702,469.845 290.769,468.986 C 290.836,468.113 290.514,467.012 290.044,466.797 C 290.07,466.488 290.07,466.314 290.07,466.314 C 289.963,466.26 289.842,466.22 289.735,466.179 L 289.762,466.193 C 289.762,466.193 290.097,464.796 290.299,463.83 C 290.661,461.963 290.688,461.023 290.688,461.023 C 290.688,460.768 290.621,460.553 290.393,460.486 L 289.305,460.191 C 289.077,460.124 288.916,460.271 288.768,460.5 C 288.768,460.5 288.338,461.359 287.748,463.118 C 287.425,464.058 287.13,465.226 287.13,465.226 L 287.143,465.24 C 286.499,465.025 285.841,464.823 285.183,464.649 C 283.491,464.179 281.799,463.816 280.121,463.561 C 280.121,463.561 280.04,463.722 279.893,463.991 L 279.893,463.991 C 279.382,463.951 278.55,464.716 278.16,465.495 C 277.771,466.273 275.797,472.383 275.448,473.645 C 275.099,474.894 274.441,478.076 274.146,479.661 C 273.85,481.245 273.582,484.011 272.561,487.704 C 271.957,489.879 270.99,493.115 270.48,494.471 C 270.346,494.82 269.285,496.619 270.829,497.237 C 272.346,497.828 274.616,498.486 275.757,498.795 C 276.898,499.117 279.167,499.708 280.779,499.976 C 282.417,500.245 282.43,498.163 282.497,497.788 C 282.753,496.364 283.585,493.088 284.176,490.913 C 285.196,487.22 286.391,484.709 286.955,483.192 C 287.506,481.688 288.567,478.613 288.916,477.351"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 277.1 486.133 C 276.925,486.764 276.267,487.14 275.623,486.965 C 274.978,486.79 274.602,486.133 274.777,485.488 C 274.965,484.844 275.623,484.468 276.267,484.642 C 276.912,484.817 277.288,485.488 277.1,486.133z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 280.148 487.408 C 279.973,488.053 279.302,488.429 278.657,488.254 C 278.026,488.08 277.65,487.408 277.825,486.777 C 277.999,486.133 278.657,485.757 279.302,485.931 C 279.946,486.106 280.322,486.777 280.148,487.408z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 283.424 487.878 C 283.249,488.509 282.578,488.885 281.933,488.711 C 281.302,488.536 280.926,487.878 281.101,487.234 C 281.276,486.589 281.933,486.213 282.578,486.388 C 283.223,486.562 283.598,487.234 283.424,487.878z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 276.375 488.778 C 276.2,489.422 275.529,489.798 274.898,489.61 C 274.253,489.436 273.877,488.778 274.052,488.133 C 274.226,487.489 274.898,487.113 275.529,487.287 C 276.173,487.475 276.549,488.133 276.375,488.778z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 279.409 490.067 C 279.235,490.711 278.577,491.087 277.932,490.899 C 277.288,490.725 276.912,490.067 277.086,489.422 C 277.274,488.778 277.932,488.402 278.577,488.576 C 279.208,488.764 279.597,489.422 279.409,490.067z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 282.699 490.523 C 282.511,491.154 281.853,491.544 281.208,491.356 C 280.564,491.181 280.188,490.523 280.362,489.879 C 280.55,489.234 281.208,488.858 281.853,489.033 C 282.497,489.221 282.873,489.879 282.699,490.523z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 275.649 491.423 C 275.475,492.067 274.804,492.443 274.159,492.269 C 273.528,492.094 273.139,491.423 273.327,490.778 C 273.501,490.147 274.159,489.758 274.804,489.946 C 275.448,490.12 275.824,490.778 275.649,491.423z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 278.684 492.712 C 278.509,493.356 277.838,493.732 277.207,493.558 C 276.563,493.383 276.187,492.712 276.361,492.067 C 276.536,491.423 277.207,491.06 277.838,491.235 C 278.483,491.409 278.859,492.067 278.684,492.712z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 281.96 493.168 C 281.786,493.813 281.114,494.189 280.483,494.001 C 279.839,493.826 279.463,493.168 279.637,492.524 C 279.812,491.879 280.483,491.503 281.114,491.691 C 281.759,491.866 282.135,492.524 281.96,493.168z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 274.911 494.068 C 274.736,494.713 274.065,495.089 273.434,494.914 C 272.789,494.739 272.413,494.082 272.588,493.437 C 272.763,492.793 273.434,492.417 274.065,492.591 C 274.71,492.766 275.086,493.437 274.911,494.082 L 274.911,494.068z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 277.959 495.357 C 277.771,496.002 277.113,496.378 276.469,496.203 C 275.824,496.029 275.448,495.357 275.636,494.726 C 275.811,494.082 276.469,493.706 277.113,493.88 C 277.758,494.055 278.134,494.726 277.959,495.357z"/>
<path style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.02; stroke: #ffffff" fill-rule="evenodd" d="M 281.235 495.814 C 281.047,496.458 280.389,496.834 279.745,496.66 C 279.1,496.485 278.724,495.814 278.912,495.169 C 279.087,494.538 279.745,494.162 280.389,494.337 C 281.034,494.511 281.41,495.169 281.235,495.814z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.428 497.156 C 276.415,497.21 276.307,497.237 276.187,497.21 C 276.079,497.17 275.999,497.103 276.025,497.036 C 276.039,496.982 276.146,496.955 276.254,496.982 C 276.361,497.009 276.442,497.089 276.428,497.143"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.025 497.036 L 275.636,498.419"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.079 497.156 L 275.73,498.445"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.428 497.156 L 276.039,498.526"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 276.307 497.21 L 275.958,498.499"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 278.751 477.19 L 278.483,478.143"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 278.859 477.217 L 278.59,478.184"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.27 478.707 L 284.001,479.674"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.162 478.68 L 283.894,479.647"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 289.762 466.193 C 289.762,466.193 290.097,464.796 290.299,463.83 C 290.661,461.963 290.688,461.023 290.688,461.023 C 290.688,460.768 290.621,460.553 290.393,460.486 L 289.305,460.191 C 289.077,460.124 288.916,460.271 288.768,460.5 C 288.768,460.5 288.338,461.359 287.748,463.118 C 287.425,464.058 287.13,465.226 287.13,465.226"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #000000" d="M 289.896 465.683 C 289.023,465.347 288.15,465.038 287.251,464.756"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 279.033 465.871 C 280.819,466.126 282.739,466.529 284.525,467.025 C 286.311,467.522 288.164,468.153 289.829,468.852"/>
<path style="fill: #b7b79d; fill-opacity: 1; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" fill-rule="evenodd" d="M 286.7 478.922 C 286.633,479.164 286.391,479.298 286.15,479.231 L 276.858,476.666 C 276.616,476.599 276.482,476.357 276.549,476.129 L 278.174,470.248 C 278.241,470.006 278.483,469.872 278.711,469.939 L 288.016,472.504 C 288.258,472.571 288.392,472.813 288.325,473.054 L 286.7,478.935 L 286.7,478.922z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.095 467.791 L 284.981,464.582"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 284.391 467.871 L 285.277,464.662"/>
</g>
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="290.438" y1="479.005" x2="440.053" y2="393.475"/>
<g>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 714.565 323.746 L 714.565,310.35"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 714.565 323.53 L 714.565,314.341"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 714.954 311.638 L 714.135,311.638 L 714.135,310 L 714.954,310 L 714.954,311.638z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 714.954 311.638 L 714.135,311.638 L 714.135,310 L 714.954,310 L 714.954,311.638"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 694.709 323.746 L 694.709,310.35"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 694.709 323.53 L 694.709,314.341"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 695.098 311.638 L 694.279,311.638 L 694.279,310 L 695.098,310 L 695.098,311.638z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 695.098 311.638 L 694.279,311.638 L 694.279,310 L 695.098,310 L 695.098,311.638"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 720.119 325.447 C 720.119,328.681 713.377,331.303 705.06,331.303 C 696.742,331.303 690,328.681 690,325.447 L 690,334.025 C 690,337.26 696.742,339.882 705.06,339.882 C 713.377,339.882 720.119,337.26 720.119,334.025 L 720.119,325.447z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 720.119 325.447 C 720.119,328.681 713.377,331.303 705.06,331.303 C 696.742,331.303 690,328.681 690,325.447 L 690,334.025 C 690,337.26 696.742,339.882 705.06,339.882 C 713.377,339.882 720.119,337.26 720.119,334.025 L 720.119,325.447"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 705.06 331.303 C 713.377,331.303 720.119,328.681 720.119,325.447 C 720.119,322.212 713.377,319.59 705.06,319.59 C 696.742,319.59 690,322.212 690,325.447 C 690,328.681 696.742,331.303 705.06,331.303z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 705.06 331.303 C 713.377,331.303 720.119,328.681 720.119,325.447 C 720.119,322.212 713.377,319.59 705.06,319.59 C 696.742,319.59 690,322.212 690,325.447 C 690,328.681 696.742,331.303 705.06,331.303"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 701.621 323.157 L 702.864,325.022 L 698.163,326.108 L 699.19,325.254 L 691.923,324.012 L 693.746,322.645 L 700.758,323.832 L 701.621,323.157z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 708.237 327.68 L 707.388,325.757 L 711.629,324.91 L 710.894,325.568 L 717.962,326.776 L 716.268,328.133 L 709.24,326.813 L 708.237,327.68z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 705.918 322.138 L 710.668,320.838 L 710.724,322.874 L 709.538,322.647 L 707.218,324.57 L 705.006,324.247 L 707.399,322.367 L 705.918,322.138z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 703.882 329.434 L 699.359,330.281 L 699.19,328.19 L 700.489,328.472 L 702.979,326.345 L 705.183,326.719 L 702.525,329.037 L 703.882,329.434z"/>
</g>
<g>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 774.565 453.746 L 774.565,440.35"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 774.565 453.53 L 774.565,444.341"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 774.954 441.638 L 774.135,441.638 L 774.135,440 L 774.954,440 L 774.954,441.638z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 774.954 441.638 L 774.135,441.638 L 774.135,440 L 774.954,440 L 774.954,441.638"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #00aed9" d="M 754.709 453.746 L 754.709,440.35"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #00aed9" d="M 754.709 453.53 L 754.709,444.341"/>
<path style="fill: #000000; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 755.098 441.638 L 754.279,441.638 L 754.279,440 L 755.098,440 L 755.098,441.638z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #00aed9" d="M 755.098 441.638 L 754.279,441.638 L 754.279,440 L 755.098,440 L 755.098,441.638"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 780.119 455.447 C 780.119,458.681 773.377,461.303 765.06,461.303 C 756.742,461.303 750,458.681 750,455.447 L 750,464.025 C 750,467.26 756.742,469.882 765.06,469.882 C 773.377,469.882 780.119,467.26 780.119,464.025 L 780.119,455.447z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 780.119 455.447 C 780.119,458.681 773.377,461.303 765.06,461.303 C 756.742,461.303 750,458.681 750,455.447 L 750,464.025 C 750,467.26 756.742,469.882 765.06,469.882 C 773.377,469.882 780.119,467.26 780.119,464.025 L 780.119,455.447"/>
<path style="fill: #00aed9; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 765.06 461.303 C 773.377,461.303 780.119,458.681 780.119,455.447 C 780.119,452.212 773.377,449.59 765.06,449.59 C 756.742,449.59 750,452.212 750,455.447 C 750,458.681 756.742,461.303 765.06,461.303z"/>
<path style="fill: none; stroke-opacity: 1; stroke-width: 0.8; stroke: #ffffff" d="M 765.06 461.303 C 773.377,461.303 780.119,458.681 780.119,455.447 C 780.119,452.212 773.377,449.59 765.06,449.59 C 756.742,449.59 750,452.212 750,455.447 C 750,458.681 756.742,461.303 765.06,461.303"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 761.621 453.157 L 762.864,455.022 L 758.163,456.108 L 759.19,455.254 L 751.923,454.012 L 753.746,452.645 L 760.758,453.832 L 761.621,453.157z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 768.237 457.68 L 767.388,455.757 L 771.629,454.91 L 770.894,455.568 L 777.962,456.776 L 776.268,458.133 L 769.24,456.813 L 768.237,457.68z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 765.918 452.138 L 770.668,450.838 L 770.724,452.874 L 769.538,452.647 L 767.218,454.57 L 765.006,454.247 L 767.399,452.367 L 765.918,452.138z"/>
<path style="fill: #ffffff; fill-opacity: 1; stroke: none" fill-rule="evenodd" d="M 763.882 459.434 L 759.359,460.281 L 759.19,458.19 L 760.489,458.472 L 762.979,456.345 L 765.183,456.719 L 762.525,459.037 L 763.882,459.434z"/>
</g>
<text font-size="21.4489" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:italic;font-weight:normal" x="270" y="430">
<tspan x="270" y="430">Clients</tspan>
</text>
</g>
<g id="to-mesh">
<g>
<line style="fill: none; stroke-opacity: 1; stroke-width: 4; stroke: #800080" x1="480" y1="380" x2="568" y2="380"/>
<polygon style="fill: #800080; fill-opacity: 1; stroke-opacity: 1; stroke-width: 4; stroke: #800080" fill-rule="evenodd" points="568,385 578,380 568,375 "/>
</g>
<rect style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 20; stroke: #000000" x="430" y="290" width="380" height="220" rx="0" ry="0"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 99 KiB

View File

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="900pt" height="600pt" id="svg2" sodipodi:version="0.32" inkscape:version="0.43" sodipodi:docname="multicast.svg" sodipodi:docbase="/home/cyberix/Desktop">
<metadata id="metadata5027">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview inkscape:window-height="555" inkscape:window-width="822" inkscape:pageshadow="2" inkscape:pageopacity="0.0" borderopacity="1.0" bordercolor="#666666" pagecolor="#ffffff" id="base" inkscape:zoom="1" inkscape:cx="381.10844" inkscape:cy="421.95237" inkscape:window-x="83" inkscape:window-y="46" inkscape:current-layer="svg2"/>
<defs id="defs4">
<marker refX="0" refY="0" orient="auto" style="overflow:visible" id="Arrow2Lend">
<path d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " transform="matrix(-1.1,0,0,-1.1,5.5,0)" style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" id="path3334"/>
</marker>
<marker refX="0" refY="0" orient="auto" style="overflow:visible" id="Arrow1Mstart">
<path d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " transform="scale(0.4,0.4)" style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" id="path3349"/>
</marker>
<marker refX="0" refY="0" orient="auto" style="overflow:visible" id="Arrow1Lstart">
<path d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " transform="scale(0.8,0.8)" style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" id="path3355"/>
</marker>
<marker refX="0" refY="0" orient="auto" style="overflow:visible" id="Arrow2Mend">
<path d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " transform="matrix(-0.6,0,0,-0.6,3,0)" style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" id="path3328"/>
</marker>
<marker refX="0" refY="0" orient="auto" style="overflow:visible" id="Arrow1Mend">
<path d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " transform="scale(-0.4,-0.4)" style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" id="path3346"/>
</marker>
<marker refX="0" refY="0" orient="auto" style="overflow:visible" id="Arrow1Lend">
<path d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " transform="scale(-0.8,-0.8)" style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" id="path3352"/>
</marker>
</defs>
<path id="path4261" style="fill:#ff5555;fill-opacity:1;stroke:#000000;stroke-width:7.57058573;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 223.53106,327.10441 C 223.53106,352.62811 202.95773,373.31911 177.57924,373.31911 C 152.20074,373.31911 131.62741,352.62811 131.62741,327.10441 C 131.62741,301.58081 152.20074,280.88981 177.57924,280.88981 C 202.95773,280.88981 223.53106,301.58081 223.53106,327.10441 z "/>
<path id="path4263" style="fill:#ffff33;fill-opacity:1;stroke:#000000;stroke-width:7.57058573;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 1037.931,293.05631 C 1037.931,318.58001 1017.3577,339.27101 991.97924,339.27101 C 966.60074,339.27101 946.02741,318.58001 946.02741,293.05631 C 946.02741,267.53271 966.60074,246.84171 991.97924,246.84171 C 1017.3577,246.84171 1037.931,267.53271 1037.931,293.05631 z "/>
<path id="path4265" style="fill:#ffff33;fill-opacity:1;stroke:#000000;stroke-width:7.57058573;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 632.21606,104.97986 C 632.21606,130.50353 611.64273,151.19455 586.26424,151.19455 C 560.88574,151.19455 540.31241,130.50353 540.31241,104.97986 C 540.31241,79.456184 560.88574,58.765174 586.26424,58.765174 C 611.64273,58.765174 632.21606,79.456184 632.21606,104.97986 z "/>
<path id="path4267" style="fill:#55ff55;fill-opacity:1;stroke:#000000;stroke-width:7.57058573;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 603.64506,607.83681 C 603.64506,633.36051 583.07173,654.05151 557.69324,654.05151 C 532.31474,654.05151 511.74141,633.36051 511.74141,607.83681 C 511.74141,582.31321 532.31474,561.62221 557.69324,561.62221 C 583.07173,561.62221 603.64506,582.31321 603.64506,607.83681 z "/>
<path id="path4269" style="fill:#55ff55;fill-opacity:1;stroke:#000000;stroke-width:7.57058573;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 903.64506,147.83696 C 903.64506,173.36063 883.07173,194.05161 857.69324,194.05161 C 832.31474,194.05161 811.74141,173.36063 811.74141,147.83696 C 811.74141,122.31328 832.31474,101.62227 857.69324,101.62227 C 883.07173,101.62227 903.64506,122.31328 903.64506,147.83696 z "/>
<path id="path4271" style="fill:#ffff33;fill-opacity:1;stroke:#000000;stroke-width:7.57058573;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 817.93106,413.55121 C 817.93106,439.07491 797.35773,459.76591 771.97924,459.76591 C 746.60074,459.76591 726.02741,439.07491 726.02741,413.55121 C 726.02741,388.02761 746.60074,367.33661 771.97924,367.33661 C 797.35773,367.33661 817.93106,388.02761 817.93106,413.55121 z "/>
<path id="path4273" style="fill:#55ff55;fill-opacity:1;stroke:#000000;stroke-width:7.57058573;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 915.07406,584.97981 C 915.07406,610.50351 894.50073,631.19451 869.12224,631.19451 C 843.74374,631.19451 823.17041,610.50351 823.17041,584.97981 C 823.17041,559.45621 843.74374,538.76521 869.12224,538.76521 C 894.50073,538.76521 915.07406,559.45621 915.07406,584.97981 z "/>
<path id="path4277" style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:4.69999981;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 369.68244,325.81177 L 812.01072,165.86573" sodipodi:nodetypes="cc"/>
<path id="path4281" style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:4.69999981;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 366.80669,324.95185 L 520.83602,583.62361" sodipodi:nodetypes="cc"/>
<path id="path4287" style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:4.69999981;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 368.22207,325.49587 L 828.71412,568.06311" sodipodi:nodetypes="cc"/>
<path style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:4.69999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 226.9654,327.86162 L 369.65596,325.86694" id="path1410" sodipodi:nodetypes="cc"/>
</svg>

Before

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -1,170 +0,0 @@
gluon-mesh-batman-adv
=====================
.. image:: gluon-mesh-batman-adv-logo.svg
:width: 300 px
B.A.T.M.A.N. Advanced (often referenced as batman-adv) is an implementation of
the B.A.T.M.A.N. routing protocol in form of a linux kernel module operating on layer 2.
Layer 2 means that all client devices will operate in the same, virtual broadcast
domain and will see each other "as if they were connected to one giant switch".
This comes with a set of advantages (like quick and economical client device roaming,
layer 3 protocol agnosticism, broadcast/multicast). But also impediments, especially
layer 2 multicast overhead - which Gluon tries to mitigate to achieve a certain degree
of scalability. See :doc:`gluon-ebtables-filter-multicast` and
:ref:`batman-adv-multicast-architecture` for details.
B.A.T.M.A.N. Advanced project homepage:
* https://www.open-mesh.org/projects/batman-adv/wiki/Wiki
B.A.T.M.A.N. Routing Algorithms
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Two routing algorithms are selectable via
:ref:`site.conf mesh section <user-site-mesh>`: BATMAN_IV and BATMAN_V.
BATMAN_IV - stable
""""""""""""""""""
This is the recommended algorithm to use with `gluon-mesh-batman-adv-15`.
BATMAN_V - experimental
"""""""""""""""""""""""
This is the experimental B.A.T.M.A.N. routing algorithm. It is packet format /
compatibility stable but is still in development.
For more details, see:
* https://www.open-mesh.org/projects/batman-adv/wiki/BATMAN_V
.. _batman-adv-multicast-architecture:
Multicast Architecture
----------------------
.. image:: gluon-mesh-batman-adv-multicast.svg
:width: 300 px
While generally broadcast capability is a nice feature of a layer 2
mesh protocol, it quickly reaches its limit.
For meshes with about **50 nodes / 100 clients, or more** it is therefore highly
recommended to add the :doc:`gluon-ebtables-filter-multicast`
package. Also, with the *mesh-batman-adv-15* feature,
:doc:`gluon-ebtables-limit-arp` is selected by default.
Furthermore, by default IGMP and MLD messages are filtered. See
:ref:`site.conf mesh section <user-site-mesh>` and
:ref:`igmp-mld-domain-segmentation` for details.
To achieve some level of scalability for multicast, multicast group
awareness is implemented and utilized in the following ways:
Node-Local Multicast Handling
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. image:: gluon-mesh-batman-adv-multicast-architecture-to-clients.svg
A Gluon node sends IGMP/MLD Queries with the following parameters on its
local segment:
* Interval: 20 seconds
* Robustness: 9
* Query Response Interval: 5 seconds
This way, through the returning IGMP/MLD reports, the node learns which
multicast groups its clients are interested in.
This is then used to deliver multicast packets to its own Wifi clients
via individual Wifi unicast transmissions instead of a broadcast transmission.
The advantages of this are:
* Usually higher bitrates: Mostly lower airtime usage
* Acknowledged, retried transmissions (ARQ): Higher reliability
* If no local client is interested: Avoiding the transmission, no airtime usage
Notably multicast for IPv6 Neighbor Discovery usually has only a single
multicast listener in the case of address resolution and usually no
multicast listener for duplicate address detection. Which are the ideal
cases for multicast snooping / multicast to unicast.
The unicast delivery is achieved through utilizing the multicast-to-unicast
feature in OpenWrt/netifd. Which in turn utilizes the multicast-to-unicast
conversion and hairpin features of the Linux bridge, plus the hostapd client
isolation feature, to hand over full delivery control to the bridge.
Mesh-wide Multicast Handling
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. image:: gluon-mesh-batman-adv-multicast-architecture-to-mesh.svg
To be able to avoid transmissions not only on the "last mile", the AP interface
to the local clients, but also from the "last mile" into the mesh in the future
multicast listener state is propagated through the mesh:
batman-adv (compat 15) taps into the Linux bridge and inherits the multicast
groups into its translation table. Which then takes care of efficiently
distributing this knowledge to other nodes.
While by that the receiver side is ready to go, the sender part in batman-adv
is disabled for now in Gluon. It will be enabled in a future release.
.. _igmp-mld-domain-segmentation:
IGMP/MLD Domain Segmentation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. image:: gluon-mesh-batman-adv-multicast-architecture-segmentation.svg
Internet Group Membership Protocol and Multicast Listener Discovery Protocol
are the standardized network protocols to query, report and learn multicast
group memberships on the local link for IPv4 (IGMP) and IPv6 (MLD).
By default Gluon filters IGMP and MLD queries and reports towards the mesh
and runs an IGMP/MLD querier on each node for its own local clients.
Furthermore Gluon tags the mesh side bridge port (bat0) as a multicast
router port.
That way, even though the Linux client bridge in Gluon is unable to learn
about multicast memberships behind other nodes, the multicast router port
flag will force it to unconditionally hand over all multicast packets to
batman-adv. Which even with IGMP/MLD filtered, will have full multicast
membership knowledge through its own propagation through the batman-adv
translation table.
Advantages are:
* Reduced overhead through reactive batman-adv multicast TT vs.
periodic IGMP/MLD messages in the mesh
* Increased IGMP/MLD snooping robustness via local, per node
IGMP/MLD queriers
* DDoS vector mitigation
**Note:** For nodes running an operating system other than Gluon, but a bridge
interface on top of the batman-adv interface, you will need to set the
multicast router flag there manually:
``debian$ echo 2 > /sys/class/net/bat0/brport/multicast_router``
"2" for this parameter means to always assume a multicast router behind
this bridge port and to therefore forward all multicast packets to this
port. Versus the default of "1" which means to learn about multicast
routers via IGMP/MLD Queries, PIM and MRD messages; or "0" to always
assume that there is no multicast router behind this port, meaning
to only forward multicast to this port if an according multicast
listener on this link was detected.
Further limitations: IGMP/MLD snooping switches (e.g. "enterprise switches")
behind the client network of a node (LAN ports) are unsupported. It is
advised to disable IGMP/MLD snooping on those enterprise switches for now
or to at least manually mark the port to the Gluon router as a
"multicast router port".
Alternatively, the filtering of IGMP/MLD reports can be disabled via
the site.conf (which is not recommended in large meshes though).
See :ref:`site.conf mesh section <user-site-mesh>` for details.

View File

@ -1,49 +0,0 @@
gluon-mesh-wireless-sae
=======================
This package adds support for SAE on 802.11s mesh connections.
Enabling this package will require all 802.11s mesh connections
to be encrypted using the SAE key agreement scheme. The security
of SAE relies upon the authentication through a shared secret.
In the context of public mesh networks a shared secret is an
obvious oxymoron. Still, this functionality may provide an improvement
over unencrypted mesh connections in that it protects against a
passive attacker who did not observe the key agreement. In addition
Management Frame Protection (802.11w) gets automatically enabled on
wireless mesh interfaces to prevent protocol-level deauthentication attacks.
If `wifi.mesh.sae` is enabled, a shared secret will automatically be
derived from the `prefix6` variable. This is as secure as it gets
for a public mesh network.
For *private* mesh networks `wifi.mesh.sae_passphrase` should be
set to your shared secret.
site.conf
---------
These settings apply to all 802.11s mesh interfaces on all radios.
wifi.mesh.sae \: optional
- ``true`` enables SAE on 802.11s mesh connections
- ``false`` disables SAE on 802.11s mesh connections
- defaults to ``false``
wifi.mesh.sae_passphrase \: optional
- sets a shared secret used to authenticate any two mesh nodes,
crucial for private mesh networks
- should not be set, if the shared secret is shared with untrusted
third parties, like in a publish mesh network
- defaults to an autogenerated value derived from ``prefix6``
Example::
wifi = {
mesh = {
sae = true,
-- sae_passphrase = "<shared secret>",
},
},

View File

@ -11,34 +11,31 @@ Selected router
---------------
The router selection mechanism is independent from the batman-adv gateway mode.
In contrast, the device originating the router advertisement could be any router
In contrast, the device originating the router advertisment could be any router
or client connected to the mesh, as radv-filterd captures all router
advertisements originating from it. All nodes announcing router advertisement
advertisements originating from it. All nodes announcing router advertisement
**with** a default lifetime greater than 0 are being considered as candidates.
In case a router is not a batman-adv originator itself, its TQ is defined by
the originator it is connected to. This lookup uses the batman-adv global
translation table.
Initially the router is selected by choosing the candidate with the strongest
TQ. When another candidate can provide a better TQ metric, that outperforms the
currently selected router by X metric units, it will be picked as the new
selected router. The hysteresis threshold is configurable and prevents excessive
flapping of the gateway.
Initially the router is the selected by choosing the candidate with the
strongest TQ. When another candidate can provide a better TQ metric it is not
picked up as the selected router until it will outperform the currently
selected router by X metric units. The hysteresis threshold is configurable
and prevents excessive flapping of the gateway.
Local routers
-------------
"Local" routers
---------------
Local routers (i.e. local internet gateways connected to some nodes) that are
connected to the client interface via cable or WLAN instead of via the mesh
(technically: appearing in the transtable_local) are taken into account with a
fake TQ of 512, so that they are always preferred.
Be aware of problems if you plan to use local routers together with the
:doc:`gluon-ebtables-filter-ra-dhcp` package. These router advertisements are
filtered anyway and reach neither the node nor any other client. Therefore the
use of local routers is not possible as long as the package
``gluon-radv-filterd`` is used.
The package has functionality to select "local" routers, i.e. those connected
via cable or WLAN instead of via the mesh (technically: appearing in the
``transtable_local``), a fake TQ of 512 so that they are always preferred.
However, if used together with the :doc:`gluon-ebtables-filter-ra-dhcp`
package, these router advertisements are filtered anyway and reach neither the
node nor any other client. You currently have to disable the package or insert
custom ebtables rules in order to use local routers.
respondd module
---------------

View File

@ -1,38 +0,0 @@
gluon-scheduled-domain-switch
=============================
This package allows to switch a routers domain at a given point
in time. This is needed for switching between incompatible transport
protocols (e.g. wired meshing with and without VXLAN).
Nodes will switch when the defined *switch-time* has passed. In case the node was
powered off while this was supposed to happen, it might not be able to acquire the
correct time. In this case, the node will switch after it has not seen any gateway
for a given period of time.
site.conf
---------
All those settings have to be defined exclusively in the domain, not the site.
domain_switch : optional (needed for domains to switch)
target_domain :
- target domain to switch to
switch_after_offline_mins :
- amount of time without reachable gateway to switch unconditionally
switch_time :
- UNIX epoch after which domain will be switched
connection_check_targets :
- array of IPv6 addresses which are probed to determine if the node is
connected to the mesh
Example::
domain_switch = {
target_domain = 'new_domain',
switch_after_offline_mins = 120,
switch_time = 1546344000, -- 01.01.2019 - 12:00 UTC
connection_check_targets = {
'2001:4860:4860::8888',
'2001:4860:4860::8844',
},
},

View File

@ -3,7 +3,7 @@ gluon-web-admin
This package allows the user to set options like the password for ssh access
within config mode. You can define in your ``site.conf`` whether it should be
possible to access the nodes via ssh with a password or not and what the minimum
possible to access the nodes via ssh with a password or not and what the mimimum
password length must be.
site.conf

View File

@ -1,129 +0,0 @@
Release Notes
=============
.. toctree::
:caption: Gluon 2022.1
:maxdepth: 2
v2022.1.4
v2022.1.3
v2022.1.2
v2022.1.1
v2022.1
.. toctree::
:caption: Gluon 2021.1
:maxdepth: 2
v2021.1.2
v2021.1.1
v2021.1
.. toctree::
:caption: Gluon 2020.2
:maxdepth: 2
v2020.2.3
v2020.2.2
v2020.2.1
v2020.2
.. toctree::
:caption: Gluon 2020.1
:maxdepth: 2
v2020.1.4
v2020.1.3
v2020.1.2
v2020.1.1
v2020.1
.. toctree::
:caption: Gluon 2019.1
:maxdepth: 2
v2019.1.3
v2019.1.2
v2019.1.1
v2019.1
.. toctree::
:caption: Gluon 2018.2
:maxdepth: 2
v2018.2.4
v2018.2.3
v2018.2.2
v2018.2.1
v2018.2
.. toctree::
:caption: Gluon 2018.1
:maxdepth: 2
v2018.1.4
v2018.1.3
v2018.1.2
v2018.1.1
v2018.1
.. toctree::
:caption: Gluon 2017.1
:maxdepth: 2
v2017.1.8
v2017.1.7
v2017.1.6
v2017.1.5
v2017.1.4
v2017.1.3
v2017.1.2
v2017.1.1
v2017.1
.. toctree::
:caption: Gluon 2016.2
:maxdepth: 2
v2016.2.7
v2016.2.6
v2016.2.5
v2016.2.4
v2016.2.3
v2016.2.2
v2016.2.1
v2016.2
.. toctree::
:caption: Gluon 2016.1
:maxdepth: 2
v2016.1.6
v2016.1.5
v2016.1.4
v2016.1.3
v2016.1.2
v2016.1.1
v2016.1
.. toctree::
:caption: Gluon 2015.1
:maxdepth: 2
v2015.1.2
v2015.1.1
v2015.1
.. toctree::
:caption: Gluon 2014.4
:maxdepth: 2
v2014.4
.. toctree::
:caption: Gluon 2014.3
:maxdepth: 2
v2014.3.1
v2014.3

View File

@ -31,7 +31,7 @@ and slowly increase to 1 until ``PRIORITY`` days have passed. From then, the pro
be configured in ``site.conf``. If the autoupdater is unable to determine the correct time, it will fall back to
a behavior similar to the old implementation (i.e. hourly update attempts).
Separation of announced data
Seperation of announced data
----------------------------
The data announced by alfred has been split into two data types:
@ -73,7 +73,7 @@ which allows simple configuration of batman-adv on the WAN interface.
Site validators
---------------
The content of the ``site.conf`` is now validated when the images are built to make it less likely to accidentally
The content of the ``site.conf`` is now validated when the images are built to make it less likely to accidentially
build broken images.
gluon-firewall

View File

@ -43,7 +43,7 @@ See the *Site changes* section for details.
Experimental support for batman-adv compat 15
---------------------------------------------
As batman-adv has broken compatibility starting with batman-adv 2014.0
As batman-adv has broken compatiblity starting with batman-adv 2014.0
(bumping the "compat level" to 15), Gluon users must decide which
batman-adv version to use. The package for the old batman-adv version
``gluon-mesh-batman-adv`` has been renamed to ``gluon-mesh-batman-adv-14``,

View File

@ -24,7 +24,7 @@ Bugfixes
~~~~~~~~
* Fix download of OpenSSL during build because of broken OpenSSL download servers (again...)
* Fix another ABI incompatibility with the upstream kernel modules which prevented loading some filesystem-related modules
* Fix another ABI incompatiblity with the upstream kernel modules which prevented loading some filesystem-related modules
* Fix potential MAC address conflicts on x86 target when using mesh-on-wan/lan
* Fix signal strength indicators on TP-LINK CPE210/510
* Fix the model name string on some NETGEAR WNDR3700v2

View File

@ -19,7 +19,7 @@ ar71xx-generic
- DIR-615 (C1)
* GL.iNet
* GL-Inet
- 6408A (v1)
- 6416A (v1)
@ -82,7 +82,7 @@ All config and expert mode modules contain both English and German texts now. Th
locale should always be enabled in ``site.mk`` (as English is the fallback language),
German can be enabled in addition using the ``GLUON_LANGS`` setting.
The language shown is automatically determined from the headers sent by the user's
The language shown is autmatically determined from the headers sent by the user's
browser.
Mesh-on-LAN
@ -106,7 +106,7 @@ the WLAN adapters' transmission power can be changed in this package.
fastd "performance mode"
^^^^^^^^^^^^^^^^^^^^^^^^
The new package `gluon-luci-mesh-vpn-fastd` allows the user to switch between the `security` and
`performance` VPN sections. In `performance mode`, the method `null` will be prepended to the
`performance` VPN settions. In `performance mode`, the method `null` will be prepended to the
method list.
The new option ``configurable`` in the ``fastd_mesh_vpn`` section of ``site.conf`` must be set to `true`
@ -131,7 +131,7 @@ ffmap backend has been adjusted accordingly.
Nested peer groups
^^^^^^^^^^^^^^^^^^
Nested peer groups for the `fastd-mesh-vpn-fastd` package can now be configured in ``site.conf``,
each with its own peer limit. This allows to add additional constraints, for example to connect
each with its own peer limit. This allows to add additional constaints, for example to connect
to 2 peers altogether, but only 1 peer in each data center.
Autoupdater manual branch override
@ -170,16 +170,16 @@ Site changes
for example::
fastd_mesh_vpn = {
methods = {'salsa2012+umac'},
mtu = 1426,
groups = {
backbone = {
limit = 2,
peers = {
-- ...
}
methods = {'salsa2012+umac'},
mtu = 1426,
groups = {
backbone = {
limit = 2,
peers = {
-- ...
}
}
}
}
}
- ``config_mode``: The config mode messages aren't configured in ``site.conf`` anymore. Instead, they are
@ -190,11 +190,11 @@ Site changes
in the site i18n files. The ``site.conf`` section becomes::
roles = {
default = 'foo',
list = {
'foo',
'bar',
}
default = 'foo',
list = {
'foo',
'bar',
}
}
The display string use i18n message IDs like ``gluon-luci-node-role:role:foo`` and ``gluon-luci-node-role:role:bar``.

View File

@ -19,8 +19,8 @@ Build
Don't overwrite the opkg repository key on each build.
AirOS 5.6.x compatibility
^^^^^^^^^^^^^^^^^^^^^^^^^
AirOS 5.6.x compatiblity
^^^^^^^^^^^^^^^^^^^^^^^^
Downgrading to AirOS 5.5.x before flashing Gluon on Airmax M XM/XW devices
(NanoStation, Bullet, ...) is not necessary anymore.
@ -28,9 +28,9 @@ Downgrading to AirOS 5.5.x before flashing Gluon on Airmax M XM/XW devices
Status page
^^^^^^^^^^^
* Fix purging of disappeared neighbours from the list
* Fix purging of disappered neighbours from the list
* Don't clear the signal graphs when scrolling in mobile browsers
* Improve browser compatibility (don't assume the Internationalization API is available,
* Improve browser compability (don't assume the Internationalization API is available,
fixes the display of numbers in Firefox for Android)
Config mode
@ -53,7 +53,7 @@ Known Issues
* The MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled (`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promicious mode is disallowed).
* Inconsistent respondd/announced API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -22,7 +22,7 @@ Known Issues
* The MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled (`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promicious mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -27,7 +27,7 @@ Known Issues
* The MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled (`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promicious mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -30,7 +30,7 @@ Known Issues
* The MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled (`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promicious mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

View File

@ -9,21 +9,21 @@ ar71xx-generic
* OpenMesh
- MR600 (v1, v2)
- MR900 (v1, v2)
- OM2P (v1, v2)
- OM2P-HS (v1, v2)
- OM2P-LC
- OM5P
- OM5P-AN
- MR600 (v1, v2)
- MR900 (v1, v2)
- OM2P (v1, v2)
- OM2P-HS (v1, v2)
- OM2P-LC
- OM5P
- OM5P-AN
* Ubiquiti
- Rocket M XW
- Rocket M XW
* TP-LINK
- TL-WR841N/ND v11
- TL-WR841N/ND v11
Bugfixes
~~~~~~~~
@ -59,7 +59,7 @@ Known Issues
* The MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled (`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promiscuous mode is disallowed).
This may lead to issues in environments where a fixed MAC address is expected (like VMware when promicious mode is disallowed).
* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

Some files were not shown because too many files have changed in this diff Show More