This project is a collection of former (and some
+new) projects connected together to make an APRS digipeater, which
+doubles as an APRS weather station, with PE1RXF telemetry server
+capabilities.
+
+
The story
+
For several years I operate an APRS iGate on both 2 meter and 70 cm
+LoRa. I added my own PE1RXF telemetry support (see: https://www.meezenest.nl/mees-elektronica/aprs_telemetry.html).
+This worked fine, but I already had designed an updated version of the
+iGate. The prototype worked, but had some issues. So I kept using the
+old iGate and forgot all about the new version.
+
Some time ago I started to design a weather station (https://www.meezenest.nl/mees-elektronica/weather_station.html)
+which I located in the back garden. Because it was out of reach of my
+wifi network, I used the APRS iGate prototype to send the weather data
+via its build in LoRa modem to my PE1RXF telemetry server.
+
Than the idea of relocating my existing iGate to the location of my
+weather station emerged. The weather station had all the hardware I
+needed build in. And it made sense to combine the two systems, as both
+handle APRS traffic. Besides, both systems use energy so shutting one
+down seems sensible.
+
But the reason I used the APRS iGate prototype in the first place,
+namely the absence of wifi, became a problem again. An APRS iGate has to
+have access to the internet, that’s the whole point! But the amount of
+data it sends is small, so I didn’t need lots of bandwidth. And at that
+point another dormant project woke up: I always wanted to experiment
+with TCP/IP over the air. In the past I did some experiments with TCP/IP
+over AX.25 (packet radio), but the 1200 baud modems were simply too
+slow. I also had build a 5GHz HamNet link, but 350 Mbit/s is quite the
+overkill. I needed a link speed between 15kB/s to 500kB/s. The Rnode
+project from https://unsigned.io/hardware/RNode.html
+seemed perfect.
+
The design
+
Weather station
+
This project started with a weather station. I designed it as a stand
+alone weather station with an RS-484 ModBus interface. It can measure
+wind speed, wind direction, rain fall, humidity, air pressure and
+temperature. The complete build document of the weather station can be
+found here: https://www.meezenest.nl/mees-elektronica/projects/weather_station/build_doc/weather_station.html
+
+
Brains
+
Although stand alone in operation, to read the measurements the
+weather station must be connected to a host via RS-485. This host is a
+Raspberry Pi LoRa shield I designed to be the successor of my first APRS
+iGate. It is a simple PCB with room for a Raspberry Pi Zero 2 W, a LoRa
+transceiver, a real time clock and a power supply.
This modem I also had laying around. It is called “Packet modem nano
+2” and it is based on the Micromodem from unsigned.io (https://unsigned.io/hardware/MicroModem.html).
+The design files for this modem are part of this project and can be
+found in the git repository.
For the low speed network link I use the Rnode project from https://unsigned.io/hardware/RNode.html.
+This is an amazing project and I only use a small part of the features
+available. In my ow project is works as a KISS compatible LoRa modem.
+Together with the tncattach program (https://unsigned.io/software/tncattach.html)
+it forms a Linux network adapter over which I can route all the network
+traffic. The maximum speed is just above 20 KB/s, which is enough for
+APRS-IS traffic. For archival reasons, I included the source code of
+tncattach as well as rns (the firmware and configuration utility) in the
+git repository.
+
The hardware on which the Rnode firmware is flashed is a LilyGO
+LoRa32 v2.1 (also known as TTGO T3 v1.6.1). Of course you need at least
+two boards to form a network. With a good antenna, the range is easily
+100 meters (and probably more than 1 km), which is plenty enough for
+what I need.
+
+
More than brains alone
+
The Raspberry Pi with all the extra hardware is housed in a small
+plastic housing. On the back panel behind the SMA connectors and the
+power jack, I placed a copper strip. This acts as the start grounding
+strip on which all other ground wires are connected. This prevents a lot
+of RF and EMC problems.
The 2 meter transceiver is an old Alinco DJ-580 hand held radio with
+an output power of 5 Watt. It is connected to both the 5 pin DIN
+connector and the 12 Volt barrel jack on the Raspberry Pi.
+
+
Diplexer
+
The LoRa APRS transceiver (70cm) and the APRS transceiver (2m) are
+connected to a triplexer, making it possible to use one dual band
+antenna for both radios. Why a triplexer? Well, I had one laying around.
+I terminated the unused 1200MHz connector with a 50 Ohm load. But a
+diplexer would have been sufficient, of course.
+
+
Antenna
+
This is a simple 2m/70cm dual band antenna from Diamond, the X30.
The software is published as open-source software (GPL). The hardware
+is published as open-source hardware (OSH).
+
Software
+
This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by the
+Free Software Foundation, either version 3 of the License, or (at your
+option) any later version.
+
Hardware and documentation
+
This work is licensed under a Creative Commons Attribution-ShareAlike
+4.0 International License.
+
+
+
+
+
+
diff --git a/build_doc/aprs_digipeater.md b/build_doc/aprs_digipeater.md
new file mode 100644
index 0000000..f734c5d
--- /dev/null
+++ b/build_doc/aprs_digipeater.md
@@ -0,0 +1,142 @@
+---
+title: APRS digipeater
+subtitle: with weather and PE1RXF telemetry server
+author: M.T. Konstapel
+date: 2024-02-14
+website: https://meezenest.nl/mees/
+page_back: https://meezenest.nl/mees/aprs_digipeater.html
+logo: ./images/mees_logo.svg
+pdf_version: ./aprs_digipeater.pdf
+git_repo: https://git.meezenest.nl/marcel/aprs_digipeater
+numbersections: true
+# Formatting:
+geometry: "a4paper, left=2.0cm, right=2.0cm, top=1.9cm, bottom=2.54cm"
+abstract: >
+ This project is a collection of former (and some new) projects connected together to make an APRS digipeater, which doubles as an APRS weather station, with PE1RXF telemetry server capabilities.
+---
+
+![Block diagram of digipeater](./images/block_diagram_overview.svg "Block diagram ofdigipeater")
+
+# The story
+
+For several years I operate an APRS iGate on both 2 meter and 70 cm LoRa. I added my own PE1RXF telemetry support (see: [https://www.meezenest.nl/mees-elektronica/aprs_telemetry.html](https://www.meezenest.nl/mees-elektronica/aprs_telemetry.html)). This worked fine, but I already had designed an updated version of the iGate. The prototype worked, but had some issues. So I kept using the old iGate and forgot all about the new version.
+
+Some time ago I started to design a weather station ([https://www.meezenest.nl/mees-elektronica/weather_station.html](https://www.meezenest.nl/mees-elektronica/weather_station.html)) which I located in the back garden. Because it was out of reach of my wifi network, I used the APRS iGate prototype to send the weather data via its build in LoRa modem to my PE1RXF telemetry server.
+
+Than the idea of relocating my existing iGate to the location of my weather station emerged. The weather station had all the hardware I needed build in. And it made sense to combine the two systems, as both handle APRS traffic. Besides, both systems use energy so shutting one down seems sensible.
+
+But the reason I used the APRS iGate prototype in the first place, namely the absence of wifi, became a problem again. An APRS iGate has to have access to the internet, that's the whole point! But the amount of data it sends is small, so I didn't need lots of bandwidth. And at that point another dormant project woke up: I always wanted to experiment with TCP/IP over the air. In the past I did some experiments with TCP/IP over AX.25 (packet radio), but the 1200 baud modems were simply too slow. I also had build a 5GHz HamNet link, but 350 Mbit/s is quite the overkill. I needed a link speed between 15kB/s to 500kB/s. The Rnode project from [https://unsigned.io/hardware/RNode.html](https://unsigned.io/hardware/RNode.html) seemed perfect.
+
+# The design
+
+## Weather station
+
+This project started with a weather station. I designed it as a stand alone weather station with an RS-484 ModBus interface. It can measure wind speed, wind direction, rain fall, humidity, air pressure and temperature. The complete build document of the weather station can be found here: [https://www.meezenest.nl/mees-elektronica/projects/weather_station/build_doc/weather_station.html](https://www.meezenest.nl/mees-elektronica/projects/weather_station/build_doc/weather_station.html)
+
+![Weather station](./images/weather_station_sensors_small.jpg "Weather station")
+
+## Brains
+
+Although stand alone in operation, to read the measurements the weather station must be connected to a host via RS-485. This host is a Raspberry Pi LoRa shield I designed to be the successor of my first APRS iGate. It is a simple PCB with room for a Raspberry Pi Zero 2 W, a LoRa transceiver, a real time clock and a power supply.
+
+![Raspberry Pi LoRa shield prototype](./images/RPi-LoRa-shield_prototype.jpg "Raspberry Pi LoRa shield prototype")
+
+![Raspberry Pi LoRa shield schematic](./images/RPi-LoRa-shield_schematic.png "Raspberry Pi LoRa shield schematic")
+
+[PDF version of schematic](./images/RPi-LoRa-shield_schematic.pdf)
+
+## Peripherals
+
+The Raspberry Pi need some extra hardware for interfacing the various peripherals, like the transceiver, the ModBus and the Rnode modem.
+
+### USB hub
+
+As the Raspberry Pi only has one USB port, a hub is essential. I used an old one I had laying around. Taken out of its case, it fits perfectly.
+
+### RS-485 dongle
+
+To interface with the weather station a USB to RS-485 dongle is needed. A cheap one from Joy-IT ([https://joy-it.net/en/products/SBC-TTL-RS485](https://joy-it.net/en/products/SBC-TTL-RS485)) is fine.
+
+![RS-485 dongle](./images/rs-485_dongle.webp "RS-485 dongle")
+
+### 1200 baud APRS modem
+
+This modem I also had laying around. It is called "Packet modem nano 2" and it is based on the Micromodem from unsigned.io ([https://unsigned.io/hardware/MicroModem.html](https://unsigned.io/hardware/MicroModem.html)). The design files for this modem are part of this project and can be found in the git repository.
+
+![Packet modem nano 2](./images/packetmodem_nano2_pcb_small.jpg "Packet modem nano 2")
+
+![Packet modem nano 2 schamatic](./images/packetmodem_nano2_rev2.png "Packet modem nano 2 schematic")
+
+[PDF version of schematic](./images/packetmodem_nano2_rev2.pdf)
+
+### Rnode modem
+
+For the low speed network link I use the Rnode project from [https://unsigned.io/hardware/RNode.html](https://unsigned.io/hardware/RNode.html). This is an amazing project and I only use a small part of the features available. In my ow project is works as a KISS compatible LoRa modem. Together with the tncattach program ([https://unsigned.io/software/tncattach.html](https://unsigned.io/software/tncattach.html)) it forms a Linux network adapter over which I can route all the network traffic. The maximum speed is just above 20 KB/s, which is enough for APRS-IS traffic. For archival reasons, I included the source code of tncattach as well as rns (the firmware and configuration utility) in the git repository.
+
+The hardware on which the Rnode firmware is flashed is a LilyGO LoRa32 v2.1 (also known as TTGO T3 v1.6.1). Of course you need at least two boards to form a network. With a good antenna, the range is easily 100 meters (and probably more than 1 km), which is plenty enough for what I need.
+
+![LilyGO LoRa32](./images/lilygo-ttgo-lora32.jpg "LilyGO LoRa32")
+
+## More than brains alone
+
+The Raspberry Pi with all the extra hardware is housed in a small plastic housing. On the back panel behind the SMA connectors and the power jack, I placed a copper strip. This acts as the start grounding strip on which all other ground wires are connected. This prevents a lot of RF and EMC problems.
+
+![Inside the brains](./images/raspberry_pi_proto_small.jpg "Inside the brains")
+
+[Large version of photo](./images/raspberry_pi_proto.jpg)
+
+![Back side](./images/raspberry_pi_proto_backside.jpg "Back side")
+
+## External hardware
+
+### 2 meter transceiver
+
+The 2 meter transceiver is an old Alinco DJ-580 hand held radio with an output power of 5 Watt. It is connected to both the 5 pin DIN connector and the 12 Volt barrel jack on the Raspberry Pi.
+
+![Alinco DJ-580](./images/alinco_dj580t.jpg "Alinco DJ-580")
+
+### Diplexer
+
+The LoRa APRS transceiver (70cm) and the APRS transceiver (2m) are connected to a triplexer, making it possible to use one dual band antenna for both radios. Why a triplexer? Well, I had one laying around. I terminated the unused 1200MHz connector with a 50 Ohm load. But a diplexer would have been sufficient, of course.
+
+![Triplexer](./images/triplexer.png "Triplexer")
+
+### Antenna
+
+This is a simple 2m/70cm dual band antenna from Diamond, the X30.
+
+![Antenna](./images/diamond-x30.jpg "Antenna")
+
+# The build
+
+## Software
+
+The instalation of all the needed software on the Raspberry Pi is complicated, so I wrote a separate document: [installation_pe1rxf_aprs_weather_server.html](./installation_pe1rxf_aprs_weather_server.html)
+
+# The specifications
+
+- 2 meter transceiver with 5 Watt output power
+- 70 cm LoRa transceiver with 20 dBm output power
+- Raspberry Pi Zero 2 W
+- APRS cross band digipeater software
+- Weather station via ModBus
+- Rnode TCP/IP over 70 cm LoRa for internet
+
+# License
+
+Copyright (C) 2023, 2024 M.T. Konstapel
+
+[https://meezenest.nl/mees/](https://meezenest.nl/mees/)
+
+The software is published as open-source software (GPL). The hardware is published as open-source hardware (OSH).
+
+## Software
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+## Hardware and documentation
+
+This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
diff --git a/build_doc/css/mvp.css b/build_doc/css/mvp.css
new file mode 100644
index 0000000..94fcb2f
--- /dev/null
+++ b/build_doc/css/mvp.css
@@ -0,0 +1,563 @@
+/* MVP.css v1.14 - https://github.com/andybrewer/mvp */
+/* Edited by Konstapel https://meezenest.nl/mees */
+
+:root {
+ --active-brightness: 0.85;
+ --border-radius: 5px;
+ --box-shadow: 2px 2px 10px;
+ --color-accent: #f4f0ec;
+ --color-bg: #fff;
+ --color-bg-secondary: #e9e9e9;
+ --color-link: #a9a9a9;
+ --color-secondary: #3366FF;
+ --color-secondary-accent: #920de90b;
+ --color-shadow: #f4f4f4;
+ --color-table: #a9a9a9;
+ --color-text: #000;
+ --color-text-secondary: #999;
+ --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ --hover-brightness: 1.2;
+ --justify-important: center;
+ --justify-normal: left;
+ --line-height: 1.5;
+ --width-card: 285px;
+ --width-card-medium: 460px;
+ --width-card-wide: 1080px;
+ --width-content: 1080px;
+}
+
+@media (prefers-color-scheme: dark) {
+ :root[color-mode="user"] {
+ --color-accent: #0097fc4f;
+ --color-bg: #333;
+ --color-bg-secondary: #555;
+ --color-link: #0097fc;
+ --color-secondary: #e20de9;
+ --color-secondary-accent: #e20de94f;
+ --color-shadow: #bbbbbb20;
+ --color-table: #0097fc;
+ --color-text: #f7f7f7;
+ --color-text-secondary: #aaa;
+ }
+}
+
+html {
+ scroll-behavior: smooth;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ html {
+ scroll-behavior: auto;
+ }
+}
+
+/* Layout */
+article aside {
+ background: var(--color-secondary-accent);
+ border-left: 4px solid var(--color-secondary);
+ padding: 0.01rem 0.8rem;
+}
+
+body {
+ background: var(--color-bg);
+ color: var(--color-text);
+ font-family: var(--font-family);
+ line-height: var(--line-height);
+ margin: 0;
+ overflow-x: hidden;
+ padding: 0;
+ font-size: 110%;
+}
+
+footer,
+header,
+main {
+ margin: 0 auto;
+ max-width: var(--width-content);
+ padding: 3rem 1rem;
+}
+
+main {
+ border: 1px solid lightgray;
+ border-radius: 5px;
+}
+
+footer {
+ font-size: 0.7em;
+}
+
+hr {
+ background-color: var(--color-bg-secondary);
+ border: none;
+ height: 1px;
+ margin: 4rem 0;
+ width: 100%;
+}
+
+section {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: var(--justify-important);
+}
+
+section img,
+article img {
+ max-width: 100%;
+}
+
+section pre {
+ overflow: auto;
+}
+
+section aside {
+ border: 1px solid var(--color-bg-secondary);
+ border-radius: var(--border-radius);
+ box-shadow: var(--box-shadow) var(--color-shadow);
+ margin: 1rem;
+ padding: 1.25rem;
+ width: var(--width-card);
+}
+
+section aside:hover {
+ box-shadow: var(--box-shadow) var(--color-bg-secondary);
+}
+
+[hidden] {
+ display: none;
+}
+
+/* Headers */
+article header,
+div header,
+main header {
+ padding-top: 0;
+}
+
+header {
+ text-align: var(--justify-important);
+}
+
+header a b,
+header a em,
+header a i,
+header a strong {
+ margin-left: 0.5rem;
+ margin-right: 0.5rem;
+}
+
+header nav img {
+ margin: 1rem 0;
+}
+
+section header {
+ padding-top: 0;
+ width: 100%;
+}
+
+/* Nav */
+nav {
+ align-items: center;
+ display: flex;
+ font-weight: bold;
+ justify-content: space-between;
+ margin-bottom: 7rem;
+}
+
+nav ul {
+ list-style: none;
+ padding: 0;
+}
+
+nav ul li {
+ display: inline-block;
+ margin: 0 0.5rem;
+ position: relative;
+ text-align: left;
+}
+
+/* Nav Dropdown */
+nav ul li:hover ul {
+ display: block;
+}
+
+nav ul li ul {
+ background: var(--color-bg);
+ border: 1px solid var(--color-bg-secondary);
+ border-radius: var(--border-radius);
+ box-shadow: var(--box-shadow) var(--color-shadow);
+ display: none;
+ height: auto;
+ left: -2px;
+ padding: .5rem 1rem;
+ position: absolute;
+ top: 1.7rem;
+ white-space: nowrap;
+ width: auto;
+ z-index: 1;
+}
+
+nav ul li ul::before {
+ /* fill gap above to make mousing over them easier */
+ content: "";
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: -0.5rem;
+ height: 0.5rem;
+}
+
+nav ul li ul li,
+nav ul li ul li a {
+ display: block;
+}
+
+/* Typography */
+code,
+samp {
+ background-color: var(--color-accent);
+ border-radius: var(--border-radius);
+ color: var(--color-text);
+ display: inline-block;
+ margin: 0 0.1rem;
+ padding: 0 0.5rem;
+}
+
+details {
+ margin: 1.3rem 0;
+}
+
+details summary {
+ font-weight: bold;
+ cursor: pointer;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ line-height: var(--line-height);
+}
+
+h1 {
+ font-size: 1.875em;
+ border-bottom: 1px solid lightgray;
+}
+
+h2 {
+ font-size: 1.4em;
+}
+
+mark {
+ padding: 0.1rem;
+}
+
+ol li,
+ul li {
+ padding: 0.2rem 0;
+}
+
+p {
+ margin: 0.75rem 0;
+ padding: 0;
+ width: 100%;
+}
+
+pre {
+ margin: 1rem 0;
+ max-width: var(--width-card-wide);
+ padding: 1rem 0;
+}
+
+pre code,
+pre samp {
+ display: block;
+ max-width: var(--width-card-wide);
+ padding: 0.8rem 2rem;
+ /*white-space: pre-wrap;*/
+ overflow-x: auto;
+}
+
+small {
+ color: var(--color-text-secondary);
+}
+
+sup {
+ background-color: var(--color-secondary);
+ border-radius: var(--border-radius);
+ color: var(--color-bg);
+ font-size: xx-small;
+ font-weight: bold;
+ margin: 0.2rem;
+ padding: 0.2rem 0.3rem;
+ position: relative;
+ top: -2px;
+}
+
+/* Links */
+a {
+ color: var(--color-link);
+ display: inline-block;
+ font-weight: bold;
+ text-decoration: underline;
+}
+
+a:active {
+ filter: brightness(var(--active-brightness));
+}
+
+a:hover {
+ filter: brightness(var(--hover-brightness));
+}
+
+a b,
+a em,
+a i,
+a strong,
+button,
+input[type="submit"] {
+ border-radius: var(--border-radius);
+ display: inline-block;
+ font-size: medium;
+ font-weight: bold;
+ line-height: var(--line-height);
+ margin: 0.5rem 0;
+ padding: 1rem 2rem;
+}
+
+button,
+input[type="submit"] {
+ font-family: var(--font-family);
+}
+
+button:active,
+input[type="submit"]:active {
+ filter: brightness(var(--active-brightness));
+}
+
+button:hover,
+input[type="submit"]:hover {
+ cursor: pointer;
+ filter: brightness(var(--hover-brightness));
+}
+
+a b,
+a strong,
+button,
+input[type="submit"] {
+ background-color: var(--color-link);
+ border: 2px solid var(--color-link);
+ color: var(--color-bg);
+}
+
+a em,
+a i {
+ border: 2px solid var(--color-link);
+ border-radius: var(--border-radius);
+ color: var(--color-link);
+ display: inline-block;
+ padding: 1rem 2rem;
+}
+
+article aside a {
+ color: var(--color-secondary);
+}
+
+/* Images */
+figure {
+ margin: 0;
+ padding: 0;
+ text-align: center;
+}
+
+figure img {
+ max-width: 100%;
+ max-height: 500px;
+}
+
+figure figcaption {
+ color: var(--color-text-secondary);
+}
+
+/* Forms */
+button:disabled,
+input:disabled {
+ background: var(--color-bg-secondary);
+ border-color: var(--color-bg-secondary);
+ color: var(--color-text-secondary);
+ cursor: not-allowed;
+}
+
+button[disabled]:hover,
+input[type="submit"][disabled]:hover {
+ filter: none;
+}
+
+form {
+ border: 1px solid var(--color-bg-secondary);
+ border-radius: var(--border-radius);
+ box-shadow: var(--box-shadow) var(--color-shadow);
+ display: block;
+ max-width: var(--width-card-wide);
+ min-width: var(--width-card);
+ padding: 1.5rem;
+ text-align: var(--justify-normal);
+}
+
+form header {
+ margin: 1.5rem 0;
+ padding: 1.5rem 0;
+}
+
+input,
+label,
+select,
+textarea {
+ display: block;
+ font-size: inherit;
+ max-width: var(--width-card-wide);
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+ display: inline-block;
+}
+
+input[type="checkbox"]+label,
+input[type="radio"]+label {
+ display: inline-block;
+ font-weight: normal;
+ position: relative;
+ top: 1px;
+}
+
+input[type="range"] {
+ padding: 0.4rem 0;
+}
+
+input,
+select,
+textarea {
+ border: 1px solid var(--color-bg-secondary);
+ border-radius: var(--border-radius);
+ margin-bottom: 1rem;
+ padding: 0.4rem 0.8rem;
+}
+
+input[type="text"],
+textarea {
+ width: calc(100% - 1.6rem);
+}
+
+input[readonly],
+textarea[readonly] {
+ background-color: var(--color-bg-secondary);
+}
+
+label {
+ font-weight: bold;
+ margin-bottom: 0.2rem;
+}
+
+/* Popups */
+dialog {
+ border: 1px solid var(--color-bg-secondary);
+ border-radius: var(--border-radius);
+ box-shadow: var(--box-shadow) var(--color-shadow);
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ width: 50%;
+ z-index: 999;
+}
+
+/* Tables */
+table {
+ border: 1px solid var(--color-bg-secondary);
+ border-radius: var(--border-radius);
+ border-spacing: 0;
+ display: inline-block;
+ max-width: 100%;
+ overflow-x: auto;
+ padding: 0;
+ white-space: nowrap;
+}
+
+table td,
+table th,
+table tr {
+ padding: 0.4rem 0.8rem;
+ text-align: var(--justify-important);
+}
+
+table thead {
+ background-color: var(--color-table);
+ border-collapse: collapse;
+ border-radius: var(--border-radius);
+ /*color: var(--color-bg);*/
+ margin: 0;
+ padding: 0;
+}
+
+table thead th:first-child {
+ border-top-left-radius: var(--border-radius);
+}
+
+table thead th:last-child {
+ border-top-right-radius: var(--border-radius);
+}
+
+table thead th:first-child,
+table tr td:first-child {
+ text-align: var(--justify-normal);
+}
+
+table tr:nth-child(even) {
+ background-color: var(--color-accent);
+}
+
+/* Quotes */
+blockquote {
+ display: block;
+ font-size: x-large;
+ line-height: var(--line-height);
+ margin: 1rem auto;
+ max-width: var(--width-card-medium);
+ padding: 1.5rem 1rem;
+ text-align: var(--justify-important);
+}
+
+blockquote footer {
+ color: var(--color-text-secondary);
+ display: block;
+ font-size: small;
+ line-height: var(--line-height);
+ padding: 1.5rem 0;
+}
+
+/* Scrollbars */
+* {
+ scrollbar-width: thin;
+ scrollbar-color: rgb(202, 202, 232) auto;
+}
+
+*::-webkit-scrollbar {
+ width: 5px;
+ height: 5px;
+}
+
+*::-webkit-scrollbar-track {
+ background: transparent;
+}
+
+*::-webkit-scrollbar-thumb {
+ background-color: rgb(202, 202, 232);
+ border-radius: 10px;
+}
+
+h1.title {
+ border-bottom: 0px solid white;
+}
+
diff --git a/build_doc/images/RPi-LoRa-shield_prototype.jpg b/build_doc/images/RPi-LoRa-shield_prototype.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..afb92ea01a562d79ae27dea826f818ae72b04f9c
GIT binary patch
literal 526932
zcmeFYbyQqW*EM+2#w`$B0wg%WgEkNn2ol^qKyY{0;Eh`#NC@t(L4!kZmk`_u-Z)H?
zU!LcC=3Va}@67sU&6+i-mfC%4*SU4}tuAigI^56PF9A4G;*#P392@|^!5+ZDDJ|5q?9
z0K>5Aclqf5zpz>GKe4F88lQ&zgN^9_;VDXr$-SYHd@Cv;DJwxGCihleR91tTN=Eq=
zD-{(W|5{dARGmtig_G)E1$Y?Q!%_ZKE5374HhpjZ&i4I#DsEO@fP;;LgP)C^pM#5v
zotvNI1wS_zKm?@t{}ZD(OrW$sI0%NRL;lh8K?k}&*yv$s(I5a3RHK
zpT76^06_TVAN)Xp%l-$$AOQa#7~v0oPyy)=4u)am|KOnf2M6^(>}daC$M_HYaEymJ
zg$8?xz#Ko+|DBTmoef6)&8MdUfCugVoHf{N7KVL-`>iATZ}hKtzI;Z4Ss%vV_8bmC
z2L90kv;jv1g5igAflbPjiULCq97Nzt1_liO)&vj+F#p&QfKQ27f9x8~Gof4{=id
zvBLqu{#1W32nY{;@^4H_LiZ=GyXhYrEPw0(gO3L%?5Gbh!e+(*7Ysklvxneb{EGv`
zT7my%hcyZR!HBSBK?0`M!r<2;8y_-^(GKQ!9?;Q&Bmm;E2D03ff*;g6sDd#?n?f8(SC=YR8k
zBV1ti2md4ROK@&~>~L^u^6q~yJn)p-1BM@B0ch!YyF3$zAzjL!zeIJ3&W_ebq5uO$FKq5
z8>}xH42#3+cme=G|AXg90Du4<5q5q6fCa{X46{G1p`tKM3BwPAprV4U9Waasvs1ww
z-y^{6u#?L1a1dDeCo(u-Nfw|2sPx(YvHpGktH56c{wnZSfxim;Rp74ze--$vz+VOa
zD)3i3iV6!&i3v3g2uTQ!sY*+aiTM}{
ziHLOf3H%rxQy80@5}T4179MLC5}FvB7~>tE9+#9B5f$Yc5ENw=SCEmAo|u>rA0KG!
z=pAAoSD2F#ot7LP6&h~p8}>0ip~yEeA~ev~!O!2xFXUrPVpP`0;5a+K@Cbiz&rdFX
ze$frlULlDNVUQ0|E_#|yF^P>4o{(^x;E)gR?VaAeht$T#dj*Bq2L(mxI=gwf1SW(A
zdHDJJxcU40x>%?gIGRHIo%9_nO;ijFEgdu^rDbIm6}d&V)U`BJIYdOj|CbcV4XnT>qX%p5gx*0QN(Q
z)&Hr$J)~5{Ds#e;@qWh+Ak|m^#|rRu@czGf58usya&2HKG{4LJJRk-jz{5X0VFeNP
zL_$GALPSJD1A&lHFwihC(9zJ*F|qJ)FtKp4(9v-o#go28O4kOgyJmf_pz#}3&j2hPJ^*cQX7YXkPyD0J_g?AuoJA4kmm`oI!mlf><
zilc|LoCfy(sA!J~iHJ#_KBJ>&VC3TFdBMxaFZSxSxWpStDJ5kURW)@DO+%yi#wMm_
z<_?Zd&MvNQ?g1YHgMvds!(!v&6B3g?CZ~MK%FfBn%P%Obtg5c5t*dWn{MOOg)!ozE
z*FQEsF*!9oGds7uvbwguvAMOqb98)idImkexV(CZ3zi1_^ca({e38J$eZ3
zcVz#w!2JJjMfUH&{#RUc00sgqw+t5n7nZnob66AC`-%B$H%hl%lzR$iuvM!gZiclv
z+{v=te4Tq02_8173)!P>8ROctV?N8uRW_QA_-i|E_^pE1B*@<{dwO~srhr73K
zHL08XxL->7aj=ziV~+UQJh_+7e>OxEUlI@fT#TfT9jX5n#kXJt)Jofa9-ndSK_J^m
z4PfvWhs#a1laC-eMZ6PF1r0=Pz6q14FG!GVZ|jjV^3R{|+sH;eVc1QM&7J?~Vk`?jQm&Qe*DMY@N%q@+Q^U4@c3+oH~57busf{
zn@w-2SyJXDsV`mTuR!vq33j-RAJ&!&B(eBVste9#wLSlyS9lJnY7{
zL#DdQdaVdXeVvQ}?Q)t+wMS^Taq@{Y=hE-JgFdo5p|Dl-XKfIzooKT8WEXP8oSg5g
z*|6+epE|y>Ijvq#nlP@c?n8U>lCyeJ=oh-hn4QTe6cI@BX=d0Nd6UsQFrIAX6!@e`CZ
z({I3=qK%OMrRYcXl+a3&?&D3zcWI!QV4BJ6%#
zSNa7#r{U5C2M(j9OYXF^a9BOk=~7G3eL7GHo6$zuJK@9ke1oh(S;;hFxV8g@M#F8D
z%%+7bP>rT!fK#b>vHNHml!$+PBAQM1wRAb}wv1^c$WoE3@g2z~BAIgk8kPjbm(Lw=
zk(0ERQnBJM&$3kpV&2I8Am>{t=>m_QQ05pjh@BG!sJ_a{0vk(XeI)lGNu)D2r^!w=
zIm!RURZ~x_n_D2k&`Z2hz5m>KU6RzD!c?YT!ETC9Am7w?jR0DT-uV;D%86|#d`<55
zjNAteYJ9xW+t$Y|ejqK5xLRT(TfHsNKC{xfOm9fFz4FA-v!KjXPJToO0=w?04jm^L
zW)~>hX;u=ER7eK5lOpjiAJKi6B)UgSWYk8xdcBQ@9#-nW7}cXcd!J}#YU
z{to|!blg*G*=Aq5@BPV-{vMLsF_8B3XLawPMRHdeEAojXzM=g#`m@z$Hz!UsuKDmS
zceb{PShe&`+
zEJ*qU&o85fb82I>Aa^SEQyaf#tH>bP9@ATlo+yX$
zS_E7cD%v+QQG7+Ahhpu0siw}wLaPLELj}T>W@I$sjmd{XtzkBkNp7?Nh`YgXRg&hq
zGhhT)&pNMN4<+axh{lW*-u2CEZI?scTpMLh5>
z^`&;4*5k!z0^Uamr)9;<7q6GKoG}{7W2o+dVH~rA!>=9b`bJ|`N@iOX08@(k)$_gd
zAIx*b-p@Q+O;$pw-vtjKXhmPlF5K>CMRMwiz35WHT2%JP~Caxcvm5
z>MW{$YyWA>`5v$;tq{Z$CPWqe5s-dn%%VHDg~U?RXjp6UWA%^+lFIUdxSO-wI2(*S
zn%&NW^Xpf;1UIE-ut94bb!~tkO@EM8KiT7MHqf^6FD@UpLpTcmmf-NVtCtkat5+*I
zdT3@xhE|POGjojIH3TCT;M!5JVbiD)hPR?!Td_w3Zs@>ES)rm`(;IgE{DC!^fZKKa
z)a%030b!@0;@pd)S2R>2ivc{BaS5qDow%Qmk
z=P=(3=Wj9r7L?kzqpDTN)fEHGbE)^h`i~ZqjuNZp3o~jB9UXX4c`lNEADO->FGz1Oh&$KdS8{gq#Uya4V&c|jrOo2NSaPMPP(mvb(AZg;5Pd~
z9XYhzCkRJeRN_(~O49?*u+8ITG!UfhZ^wo{qgJ?{Uk7TyrBxX2lV4{igjSrZavY
ziIVC?0QX}u^&y}Aw&lzAF{?sbZBI;~ez*GR01TVG)%>J=;YAFJ8zFfeZ7|
zOEMJRH)}1A3YY8H*Mn>)5rOkxV;>%9D58#SYNvCg?e1+>L_`u31ZyVjeMunDQSpz2
z!)NyVihix?(;F2Q+%aerjhtlb9V+z`t0tsdOR9llQKPIH^8;zi$~A_3ilcNSXOt$m
z8Qgwb^n6XCOUV^o#V_gmI4e#?8#3oqDwtwt3?YJNIruuLW#VqgZ-oCG^yZ8lSJE-f%J79M$*Nz(GY8m>rrg$VX|Dbq5)G>bvw9Y#N$_hS({@DLO3%_B
zkMXenlu==JlI?67lG~$MPP&j=0SU84*h^HZFhvEr-@FPQ{iT+wpW}7h=!xo2qjxfw
zmC}vM$Ce4sRvjQ0(3#mx)c-jn(Ux&ocy`x1OGtK#QNNKZ_raUyeeY-<(;i6bx?2Z4
zd-W~&4&m+HV6E~B!RB1tce=4oFQ$X<|{g9$llo|0wTx_O9;&Fl%-ZJ&;p3lWC&EW1L?u=uaRlN(5
zvp}zi+y&&**}l&gOe(rsvJK>|lO)$d%v6hHosc%WguHOm_|(@#bS?B(H(v>EOO&z|
zj(l#OOs}_S@%j9iA1m%yB3HHfYRKxoN)~pFdiqIi=v@>`-?uRL?WqpoM!D;aq-i7J
z{jhM@46RyX(Xb`?rZ1tF__^VbCkO9Ea^7&%Id7NOM@y@Ax&fIC^CF>$uLVkYIPU()
zn3~;hf>S5W7ea0hkCJ>h%3T`j>SFLQDmh}pR4G*AWP6b|%0XW%puTNJ3*t4D)*
z0Vik~1WfBnB8O#;Hvs=)cEGbAgyO}tRZeuKaLsoxa>@MusY2t#WLYDhMyap^pq|KQ
zC@7Qqn7m3iZmC34P}KMdE$Pf5hS!37*zt@}Tf3n1pt^%X^lm5=eF@(8cfFx55g
zmc?}0Yn7@$7er{FmlVhvHeW;4auo;fCqa`pt&e3^qtk
zLB6aB2D8
zMwUTuxw{wzxnCxI^6YbUs5lROk3PQw)Kv01Aj-UBm*e@hb=5Wf#m-4Pe@V&QE6e^z
zec027MOI7XDpEe3Ek2)q-6WiSRiFR*epQ?%lZwRCHd~gQz~Qv;YTWs$33tNngr^r>
zfX%A0(tD1^HQe>oiSi3AU^Ws7<8XT#%DF54e#}G8PlJhV(+K?
zFo=p7U!E!hztj-WhwjU3yJD->CBL&Eeg$bjAYN%{4(mq}q>lO)T0%{ipw!I=pSNpe
zPB~BDye830w>(sRAv{}|nhKAk)&yI(X7f4CTu_=ncE9!dz>)<)YC{vskH-9Ji*jD1
z-d)F;XrXfZ!P7h)m|&F~c=t@MFh-Sh`EhN3X)R{JI0mMdA9*#1#|vGX^DX;`Y#=7@t>5r>c0H3z+*ML!GkFM5
zh|IgK$=v^C$6mIC??8&KbKLX!5u(Uf_1>_orxjhIR)^P`^$7_qMhmjw_cWJb*N$Ds
z(JFS^GSct+dMTx5jVJLIR?-+1=TIprULQtvUQ0y?*1F?#5NO(bxTC*}aojXks)hs%
zdVQ`aJmjU6Qm}-ewCzejyYy(%md&7G*Z>2iS3+nywv}S)XbU%wRz6uA8g`!haG31}
z_;c7=?2D4bO(W+-QU$8(`3eQ-Y4rB2hN@jX2hyzx-n9Mx%=u&!3
zq{BXK?U0Bdc%)|{_4eBb<4cLx`wFD4^}pN=J`EP?j@F%>U>9~2f(7H2GeTG#XRYR?
zKWY;quEsV6s|E
zkkf}R+l1oDQ_7^~du7wZR-|iwqf^22JX$7VM19C#j>mEpt_OluNPKl`>E*D{#Pz+T7gLP=&cuefZ!5H?%mUH0uM|W*~mM89G=h
z*XKupTW4)0NqgJH&d+xDAAL`_E@%AG32Sr$mh(bQFsr0KLhN13%DnsYU91#N@i&x}
zMi`*5D|SZK@T<#&vp0@laho8`qh-h40BS%Rzm52dTp*bFUA^f^x$uwnveFLfQaGaX
z+|F0bQsj9P@>K;t^Uh8lwYOd3-_RXt!>MnbOJ$qrJ_9!-A}c3S<$udC4pn5qZPOl<oi(R
zk`?hHdRgr7HVs_j5j@lQlvkpfE{age-cdkxts2Esn6RHItQ@%K*-Y0?iQkR>EM*}5
ztB%}R{>la4%7|M9ee*e6S^nGpLop*|MZJPc6bu1XIo^V?E-yv8@7ssLolDVH1a5*!
zh#tln&)duJQO-+3>f5d>czb*52u^8}Mq_2|X5geTuL}AE(H`5VUd{NxZqIxd26<|5
z1$-ZGO6Qka#$MMf_k4WB&irzI$>IBF5@_EU)t>B<*1|@1ZF3z*Sq2TQ(ara!Xd#ip
zyQ$(Iu`jPu@dO!K9=S%y-ve3QvaZMq8Q)TVqTPtV{WQ%ZYU4nILMIHh)7mn;YltVK
zGcSFiIk#n6RtP)Mg0F7qrm=rkiEbg7P}JCWEDe=0Su@#K_B6%nhe6?r^0gm#``{{o
zb0Ju43_cdBhF96x%#?6vA0G`$Ut4n^6CL|7%3UbjQJqZDI9T?JfK45$vE9!YxC4oR
zle6q3Rifo<_etid@|FUup48WeoXQ!_Kcr@DZPjBr<-(V`_M37SrFTUG7qHYzImfvd
ze9V6tv_msABWk{(z@6;SYvkx(WfON}2b{lyq7PWcO-BP)lc6m*JCDBx&s%9oh-625
z73C)BvA1}(XPB3IO2l*+WI)qwud*q{NU%Q;R&-PDmy44kn6GWlOlDsQ({2r2LD*YA
zEA^FF*x)1@AUvj`0PSi%zM~RmAP3hx=PFg3WGD?5plsJzLle)#T5{+on`k}EF^ODZ
zvMZ$Z8**63$vPTzmN(CR3AS!6(IxTgwOU(krkqP?tbnb+k*s>YafLy_sWr%uiA1NwqUf6>S*YRsaEUX8n|0njP$tq~`_|6KTve;8
z;avfgci!iN%bbM(PYDp6DSo`#+rB$hobiD{(A&tpvifp$h-js;_N!s)X}+%I`4FQ|
z^{$@XttNRShujCkqB`#^v+BA*NUYFKX9mjtmo@Y6`}-)}KKwg_-C9AP7p_uo-(qu>
zLJh7;znRQA;X|Svc3&AqJ{s_^!}3_l*j!pR+owN#0qdmX6}Rr~yEsIZ?~n$$nPttf
z@9QLuoBdMf+jw^S#=SKY+cmAEcOQe
zqcv)A=jxLQVaHeA`Rd6K
z*mX@&3*5y1M44@H3N#D6m!A7!IjX+UNq0YiY@Coh=Ypo!%EzQ&p7hLB*^yTKttRY3
z1CH5RWD+O;7fqSQtJMV2lE*l-#Ps>Tr^$&o%H_I`$?on41Ma6X?w#hv8C5K|
zv+w!4JIS^Bt~*Z3atP$hpJgL)h)`-yai=u2vG#h@5!|W~xXkR22m^6h55A^3gknt|-1>
zVq3z%RgHW5l{}t@!@^l8`-&uqiqbqMMfI2TxA8rPpZZ^M{pE2-05g*QJyy?h!g21=
z&?Go@{gdN~DC+7DfoLe*oO0KSWhdx6)z@TWJU&H;XyPcJ
zTax4?tJHN}J~}gZndu-YX=}3}r1)rg7mukc>tIMV?C`$AFMDC7;5BR8s>Q5(-e%!rY#*kD1oM6Xo>H%v?!)g-2f_)9lT^JsT^TC)-Hm?Y)$s
z+fFHud32nP#U`4IKpVwKO1$zpmP3oKpad0&1&Hw4kgk-iKz-@0nnua%A~fmd91f{u
zQ=KGY3)|;}`lY=@40_t<1WArTY;TA_kTHrZs`s=WCn>Jf8Ar&P`x^sVEZ2y(2{)@)^ULco2oS%sh5}`WN1?PMRZ_lo@`6T|&I*L`gcxihq3g-(mAXWRCrTT6h*#r3
z(4hKFCh1?|(;E)t=cQ=FM|%{MEOmU>jG)=_sn^QsN<^Mx$ZdAh&Eho7A_}oy3{vHn
zp{up@IKk;=>sh!s%9qK@Ro&qDZbf+2Sw1LtLC(e0wd5zlkZBZI>7Wj8FJb;K>Pn=D`o}`M4C9c=
z6#o2`!sYcrSyhvKSD&88bt6nH{iq!H-+Hh!-YuxTHz_V!VxRlbzQeT1z}zPA1+3*k
zGCqD|R=AC3XePLI3^ut8>B({`qo~y*wm>-GxMMDo%wHjxcGza}n4}3pROyV-T5JmF
zpv0wWnkPGc+VsgDF(P8I?X+}P?g){y437ybmE^E+*+gRm$js^Pp6!{sZs-LPcV6z(}Sy0Ze?vc*qNzmlcIN$1tC
zIoYKr7l;WOnQS2BD58v#&kR@OMDAx%z4*@WFc%cZz!PC=-2o7-l2@o@ejNtIXsAvr
zNIrUo&xzYd260#FGg`72Vk9vb6R(;p=@noixt79^8wgM3C!t3oW}(zbG&*
zVC1NTFJ==ZMs615;c+CdlNj7crXb`BPbdNJo`J<|l~Ye-u+)fF7n^N*e9*$&lH4^h
ze`x-^2SUqe>;0BuV%k+fNN>8CcJf!A=)MRSCiq@iEUu*#TY2h5MA)~Pl7f7@ROnH0
zpvp3TUNq>);|lxTMY*@0_vFGVr{#Mh>sn0r3&Sh5O0Df9R+QJEX@ZT6sz|x2hL1AkaoZO45p7Rpd8q{vuVjuJPW&K5aqvgYEVXU6NRN`=447Wb
zj=cvcySkpfjqD!N$uJjnNNn3xkIG;6R?6u95~cJcbjUj>E`T61Fb_G#n&Zvzs`gD|
z>1f)_6-l6zexAUwDb%uvoGpo%n_7nf(S=~>S$QCvwzub)bYZr+w@nW>creZ|PjV#S
zEZZUwLHMq5^U35FoL_Wj*`L&2FY!p8XO2gcW6yyMC83joCMg@OHU5#CG`Z#o#Z)%U
zSEpIC6?2;kPq!3CFh&VRjCZ^2hl>ixMe!%5CU~`1ie|qeMSk5!a?NATBX^%>e^v<}
z@U=`VrRs5UF3Wra0+$ER+vKrOmfcQO-3V-aNaGQ;lTdt)U0s-}1O}s5ApoJDfEhR*uF<lm
z0fQL=#+`~@h)OxWBGhWjFUw&VO=x??R+)0FVPg_kIPxQR!ghVkTcy|uRenxeB<^2_
zSWIdB{Rn+R<~&nb&(8}Rh}5^bMvZ|JsguBii)q2eFM#YGnVkZ;_M4fX>GX~>dyWQc
zkFG|c{&L!CJad))VDI>YeWSZ`Zf%GvKMfemo>P(eQV>ee-&g$Ey5%M%nLC^6=10Lb
z&trbQ>Mv_2J(`YcKt=nY{g?&&n&-DfA!{xHv7?z3-9Eo*bjbBYC>uh`hT$|$e#em_
z`TIA^-I#Jr1d*Yo!OIFYEBAnVL)~PM+;GfUu8+lMRl3W`Hl`ciDg}zOFCimLFMLbYqC$
zpssPoAId6bm=d_D;u&{ZYP)Mrc%ZKorz$BTP!BD^e?OA+=;cLmzYC5%Q+Er)1(-Bk
z!j7b}yaQruF_AYx(>nmq1nOiV*n5uKfxL9>G3`XuJ8bMpvl4-Him5R2{1?&Pe(-T2
zDtNuUTS82C^hiL&pYK@^>=xa7FNw@D99P|`{bfsJJ?|Rmh15{C70c*~f$24$gM{H|
z3%=)@<_oJ8`m&OlJ~LLljfEFj87l&6^O|~5mNi1)#p5yMlto7@2=+2?BVd#8l4*KN(nafmA-F+
z8glzQ#*PUEqJAADMrQ%xeF~mm2tseUc8ImD`*gE}m?Es4_!Do<^7IyW+AsCI7thS`
zW+Ig;A}^BqtQk(seX%~LtZW?NF=tsOD=dCoqzTr?+60fo04
zJI79W8S&7!=*{t_cYKM25Rl1)?P*{3c&~%=}Th
zg_;>D_sP7u+cO?_eGMYsAEa^36}-J!a~zfmetU+5?2>yA2)W|7&WXx$YNK70a7HY6
zOk{PjmmvkXtc^h}`LOo6sebtI*W7+42brI2-6-G+mg~uy_q%2yb1bE2;a^g;_YQ4y
z1NFHrncMAG(|DdT5jTdEn#rCLC_o~a5>#;}UDfH^iG$P4j!~1U-p8ful(oDgq1p)}
zC)!AHyFn386>OaWzp0GMq*r8l*3$@N-U*~SSiXmRgZ9!ZAH&wlH(Sh~9Vyek)5a0P
zeEyzl-9+>JQ{)R}J!{g6dMu{cxXw{LHi=D@jUz58(062yjik!xON}|NI>dKD*zS@x
z(liXa^C`>2;Vf-*-?bxW^R>F!V7G+TksTx|qwUG}G=th4`tn+e>-W3dK3$CQUY-P3
z{E)AU%mRVUSM#1FRYYH6%aKGo^z16;Ticw&J;J0h85^hhR9
zmmc2!YLK+F+be4hT5BP9Z|<@DdWq!Z<3&{=ij!`Br(7S8jlR@(5|n9Tpm3|_PoK`b
zraX`0EkmPt9so8PrzdYWe|;2~y)}T;FBk@ghD|5LzI&lY?HVeOzrAI(x6MK-fU4lefY(OVUY;0Ka8eD&+;PLF++x;Y%eSIWl
zz>^eGmPxj{t3yCTYMx?5FRuERaS69L8S>bkvOop+l)FQqo@mY}W{
zUZz8bfX|?tmukDSDKhm}5EQYMw(wRS=r(Fjt6@BYPIyN$hu{s?&-^
zH+h8^S6_O}$YShip069offH1IK`gaW&-+S^G4=b~2+7^f;EN@THN|O8Xq}lkGF2jX
zwjxPvGBLSF=ISRXUO%NZ9a^x7DDQ~u&VTlq<+J+Dv?V=ha;4nFIrsOzRV~Sk-r6uV
zyJ$%PTY+izVo%Yk8VnTYX!2GXBkR*a%}k!+TDsQ_+u;QTmNtB6LX0KdwTAYjQSu&Y
zX<8PIxp_2~JVqaYXd^O&@zcB?dgfpKbK;Zq36S3?M}I!#@G0RA`m}}G`RkJ+2IS%Z
zl9I<$v%cL0N(vYvr*qlkX1X!1@UT1SyBHr*4C*~DI@mL!5hz)
zId101n@6HCw#1RxnS$e5ogCTHPx>=?G29=W6}uT>yXlG~NEzheX)8Dd@TrySk`7wUvB
z92m8FHXgNU+goIf?bVb>iVf4(iEo;-zIEraPdU^15(Og9&@ac`EMcOEU8L_rtZNo~
z5w7COS_ratpCTv=LSB$MmhzdmIV_Qkh|k7W(7mM~{WRrJ*L!mh5Uj91{$w8U
z>{h4syJI?QD2L~gTphQ{jeM!>kHK_TYS~;qz3qW}6jE4Uu^(BG?{dD8WvO
zNm~@|&jl24*P4LW`1Ag}Rwb2RclhR-=9%@!tA^)(!Y-)}YGj{S<#fD_R99MPIdf^F)W2B)9q@xxT{yh8Ai+1ofLL+?}wch
ztX0+{_NuhJ}0v;3H?YHNn`|vQcFcET6kw?IMYk
zHX0(}`by`Q?mh|KH6^tgacXL=Uup+i+Gc@s>)99k(}?*fbpV^OgN_%uO
ztwz18jU5hyl;(?T5VVEIE*Cl<7Snrrd@YK)qR_ReeYpYMm`#Td~}1jNkm>8dT*G
z4xN0BKm(rWaL2c|1-Ykrlewnl#CZ1+p>a0#^JKhJ7(ATsY>R=qmgmJ9188N2tZfAx
zUl&Uygv>eZDlWL)z{D56w+B^4n}AyuU$!u&;Oh-~M?VhEj2FB)dqzEb$&v@iD`G~@
z1&>b+X(#jVh+HF0WzuyT>Evaa%|>pxk7y67`hE3H+~V~|_ukK#$1&yXq&mdO5{j&p
z!TyYw98tgV4Y!ZF@wO)L&drHi_6d0hk!+j{)_t}szb##U3xU+7_E8(W^pkx<*|o14
ztIu21==1FWX9v9r-Bc}i`{_M^*6`w6E3OD`+I}r3A_na+-3*#t4!CVwlIV+0*>N33
z0*9=$Q*UV`rT-mWLhlc=d%(x%YSPIY?E)g+q&iaKc-%x^+bt~r=!V`0kJ)nH$(W6obeL`&CW5&$w$YHhwqZ;k
zH1GB^J?&{}BBek7H6n|HQSzPpgd$&-?fSqc0V^KXW`r
zx2r0huxM>*EPSS&hC>
z%4qgg!`AQ`ScX7S873~DJ&0L`*cOp&IaAMbt6Sa;S&YzJz?Di;ocI{$J(0TUDf5nx
zI3!hz_(rby-Kh_*{`6*Nl5Ql!Xb43L8OyB%ohdr6OqYLJ3%kurd7+Re&yt!h38jbP
zjP8a($ZR88Q*TbLPC%47u$*(jPV+Tyg;ap)$pIx@M%ICtf3Yy*()U7KLZ%V5>>HU;
zYfphMpDdChHEhw5dV4Ac-I{nxpAg6Sf_0g;ZMEvwT9tY_ySiwHhw|Hz>M)|#RjEbP
zX!5z%%S}#raF+4eX>xd;zSm79fsU@GFt@xfwnoJ$3D{y9Z<4ul`BsLo>GtHn9!t2T
znQ1`Vt=63L1UEWsLao$7*XSq66B+W7QO>(Ci|@ME-MJvfZeb~Q-h7kFf3|lRKhA3L
zLfamtw}ez3BRt5erD5ZfP!*E4Kj*hKmjafACn4V<7vMJRW+hraMtIL3=Z+MU_QP_{
z%z!>;n?qE8Nlw+b^>#~J4%dT0c!myZqM#X9vcQ#eL(svChI?RFHFidl>wp@dBnR~a
zr(HT)Ca%tmHcThcS+#C`Iku)fxSW<`IBRU6W@&<$m`HK>sbQ#FW16sIrr%}5fm(Hh
zp!cDmCn0YSEm~2WA>y_f23|bvn;CKWCfw;~Dca>r7{%AeVgQW@ol5y8xj{TX6RLnn4+Pl>&QMNgY|Qj
zT~Wy>G`u^Ua^tyr7cVoz&6&c#xomE<%YHn~e_0(}K>NffjEIk6c|(MlY!B-g5t{t}iv58;nXth-F`_
z)Q{e$_dY()+-f)1z{97(Uu7~x{(|8kz8oe-rUfxhAqtRkE4Q@<+^m?|f-TwCB8xSo6lbYlvWo||r_vZ4L}$~JKHn&XLRos*U&x#x
zH$Rd(di5fogpa`Ql>0#H|}Uzi7_6z$H(zWl=G&UT=qKpu{&%$S@Py;Df(n3yrXG
z^QN1C&V@|8cJq2JXY}5EOiN%nI4mAwXU1`YSv+>qr;n`hLO-;=3RVb
zr-Sxo=oh=81sC!n8`&eqC5imJIcgB;bSS=;$7uh@)Ex2}@xh!GLTb^dm*$gGG32Li
zdNCorr(EDrf{k>W>Q8=dh=%7y_W%pwP7QK~yVbBTk6VXweSNcxTl_TF3%(z6uT7I<
zUkUN9H07<(b0
z2u+5r#Yj#Auv`>=ApnXw{MoTedA#*uTF!&|rUTKPN}{BjO};zHRu-OdTrnePlPPXjA4N>qFU}J+A!RRdHhKJlvv{B
zn3Yh9*ZS=~lV=-^xAD#un$Ch7a@f1lB*7kz-s^QffnZ_u-67Bc%a8}=EOdX+J+g+3
zaX#G*4slHqnKNKlS=Y2Gus({`_6<`Q0X=HY%*n)IOJgc~z;uw!VczRZbE?X!(z_lD
ztDD_=w=dOI>1MwsSypuRdg@A~u#?PbIhn)M82OEGQzshPybxZGtUmhY-XV_Ghcis;
zIZK%X`j*le8~77>l9;(Gcv~ml#WjlhO}E5h+#r}ZCy4JE)@L?)WYOKZjPkr0Y`(ac
zlTTBTO|#?_;uKng&$yi6T{W;Id2JHEqBj^tgcB-q!ginvYfdY>){45FTkJ+o^PyZ*
ziL8qfbl`v@#K4>0A8U7*5T3}+^vlArt(3;~m{m&(Z`GAXfi(GcT*kto9&(=#?y3$K
z37>21S(5wO6-(MEvg*ve`^m%BRcHEi=v4WhIf`vpL~_dUQxrolEI#6I@*StL?T6VN
zId_Xk^Y@*BqV545H9d05YJ#7TitA25`0C6&Rqds=JZnsTcfH3?q5T1t8
zoa7dWU*n8PizOwAwRGPD`}DI8$Ccgg%GjAdpBUebh>MQnq-IRjmN^N5-@NQCeoTi4
zR}D#@x!DQITk(1>8xgoRIv*){VuapfAWY)jFXTr*w|018tv1T~oKz*kC`>*a)%T{u
zT5`yBGb}ru(oEK;TFpc|WJqp2#X9fk#kZL4$IiRO%vJB_Tvwj>ZV|dHFfOCUISyoWL$@VgH%{zFP4-^3(j$fG&wXX^>iE_O{(-qPtSmW99a6c;!
zFL^nomB#p{_!ZuqHQ@_A(;v{Z&S+=n9Z)TUYz0ba%qmh^J&L#m{p+_Dq$K^R3gvgi
z2``1AUl{wp#^d_)^-ve;ZgF(>SM0oSsa%aeGK
zLDOG}1Q&WREY)g=)u~~v=RXF0x1Q69W;gkX7PbqoId)n!&^O0N_evqPF{T}%*m)%5E{QYNDy(BY`n#$O#HftE}*?vImhf`4p>@$ZHw7^fXo{4(Sg#QK_kg5=SwTF>BjNm
znYi4*b?aTT1Vsj))tBA49;UF~q)x=>8zzL~Xt&MrsTe`=VK&-wrFPieo9BiU9o4e2
z15%vyoVxsg?Mpv3+QS?6*BP~gaj5{31La{{vF&HYO@BGyWLKdq{JY;P2r?04Ir(d0
zLyB)^gG94cs{%yR~VeG!wAmxSlle=M!_f2U=APjhjp`hWVlGaOqjy7F6QhIWcZu2J1
z4{sm2H71laKB_Y_`0nM3u&wfRvgEv+5R+c%cwZa4N65T6-l~Ey+?`xEY01@wYyP^y
zCP%p%!Y&~3y>kge@y7+l+^|GlQ!Lc$7)d~cEFj|$bX2f;gh-<2>v%$%UG-C&E8-DF
zNB}IaqSEPru!|?j?5nYu6%+9il0w_fmh$q9`%gnL@o`T<<|8-m-35nOA|!?RI&SN?
zFGQSUR;~@^LwXf9jea2%tTvRw%i(k@=;^;_^1EJ8D&hW;e{I-bSl3_HMKSdFLjF>=
zf=h?d@X1LjfWju&4!JrlJSSmk48;>@Fxqj!dQFkRzKgf-V9tK
zT7hAvA9A!4G+kDVn~dMFDR14q`-S_31kxrn#nZSjDh3$h-{2d|PU@~oRRyXGH0}##
za1!*)xQ1|HL5^aF@(@>BMWvleF=K)qaS?{e#m)E??i5QNF2;Y!1#%cQnzbQV_p2?bbdS0IdOsr<}c^@=}t1X?B
zVO3sM<1BZcD?ayA7qIVZ=wXwtUGw?Wo*va=eM;8VA+B+``+?`VPRNXz{cJku~_!Ilb
zrcY{v<0?z5c+U1u5O|DOSlY-w#isq1S)z#tAPv7OF~LHnFF8ds5aXf9;7KW_`vx
zeLawZdf;~UuKE~g-ASHKBNL;H7tG~#zZL3QsqH9u5ZQv01b5u9h1ulhk6$vi~uu^z0cCUl?W|jtawtK
z-ja7X%WIO(S-B+S`__`Ot1OW*1RR6jsy3G_K46fAnjymD8`so(ikjLtUv4C;(toc49-@d4HO>b1a7KtX{lghya
ziZBToKJt6SbjyAil7xglIAJUs^xq$NU@_A#*d^_`
zIX3h61K1zwQw%l_mP%0fyq^sgwlTy>r^bZc%XnrxXBHbfd;LiAw&JU^U&1~qA
z=~^qjy~Vpdv!A@K+mqMu_OC7YPpew#wvgS~+i$g}72s_sUpXXl>jHNsVCehX}RsKiYV5>tJL*7=B-07c2(C%%_*02eq
z7#o$(`TEsczYpn=+b%6a$S?*R@;cX+uC;e#lV>#1ahFhV7>;W7zr=fsm5w{Oi6`#J
zyc6{m*9pR|$fpMl&hpbi(g`gpI|kq=knnL)OQmUXl77xyAD27N`ORR#;sp_wjo6Yf
zz@CDnx7HOFMsfpWu717iPF2_}YaJ^}kSP|toB%w-^yyl0Xu2`AiX&*IMPN$4cOS<*
z*A#W{HsG?!<*s_11CI3D?R^$`FFfs$sS2#m!EaA`e7fu>ZSHj%#-F7^@I&@Ex9$ar
z^z17(dp#;SR2xJf^cf@TSrhBiY7wJ|m9AKhLC!(%R5kmH=72xhq>Li&$pf7C>-tun
z$-ahO(wgdPT(+Gc0c_$zxf$KVR&pO
zrxZ_{cVOK=c)WfYtoOLQP2VowGI1dMy4Cv+BR7eG=&P#flU%OolmK#egOV!P)U>$M
zDGD_Ei{SJr+Z^?;Fo#dn*+lWete|e(^QTYFp_=CE($?bYSn)9;IL6>XC+{A;hx4lX
zwfY&nTo+T;to3^dBX($E^RfvC1De%MR?-V$IJ1qi+gZTe6!srl`Q{%ONonRQzn2-y
z9QVgzS-QW(+o?cHB`-PPHaG+6+|yWA-hlD6(z`yJn^)2;?cVO_MFcTpdq`D4{{Z#Y
zWw*rd2v0LXWv9=q&e;f-@%*{RT$7GHYvx-$Gg$FfqYG*`6I^+xh>(_J=rB50xM&{-
z{84wNTSKSmU)Yv%Myk(qD2TDgE=l>0eJiRM7~kGJ`q`Vcpsad6q4Aat8^UpEt>FzW
zS=vXCznUaqxEKt|J$nPiarWO4&7o&~KTRy-K1!)7PI<#;w+5!M{g%8%CfN?JrYi>C
zv4(c)J8{lyUf19kiZty$XydojwVP6`-esht&5ZisfIuC`JuAEFbdvZ_Ipgbek!sJ!
z_AZw1K8bB`w+pm=mSNkf;fGq@(Y!_B+rx7lqCFM%Nc)-%D=OHB@nd4)^+
z+Mi8HZ>B6sh;7MPEk8l-ktN3BmAN^4hUY3fO1Z!_W>P*`mw
zMg~Q5GhNz!qDS&A@D~M`3=vqmw~Xwi$@^uf+Isn!C-AOr=foD%`GGI32T(W2Mt$il
zHA`QV)>z65PGe_K*XMGDS2&TClOz)-bDn@xtpKsq9%YSP74Twm
zN-)QN{qyoG)G|gq=;Q?$Za*m*T=Ew<_U63D!e0_J
zp9`Q4(CVcQ^-Gve!6q;c4_eUBJ|gHkM~yWdY}{T?9I!}{Ta;M#$oM;(XvWY%`A4X)
z8aOFNPD&@S3}kdop5c9PsdlFG6|G^OjRN+>4FASs}lmr0|uxMD$iS5B$fjpR=2#RDvW@0RWCM
z)YLQI6C%U}NSzA$j8~Ohd}^`2nD4mSfp&%wHcmetDj)beeKh;#k8?8y5(@7Xz($(tKgHm-kOA6$Fs`
zPI~%PZA0R9rPZXMODNxvT*sAM`)418TyRzItW4*aVbXSy&v?h;9I<`7$`Pf_#Em7u
zP6`ruRU@GFtlbLM-^3_oyKH5HtU=DzZ(&pF8kdK4FA7^|)5h&27wvp?0TPRe11M7w
z^g)dO0EJgE=$6cmC)APG?(nz(`d3V_HIlRwO!6g+r6=z*X!yo23fNt_wwg%eU4mVh
z!w-M!SG+axcKw92$9RF76?Koy!=W8AE0v#7(*=v#87?P^QeS+krI;Q$=cRHf;f)n8
zBR_7xMN`-)Aa?+Y(ikedwv<_q*5L_WGCF?{c;;PF?(X9DVE0!NnHAIkp!6z7@~gfY
z@l+C9&HJ$%!Ux`dx$XsXZ=mQG35C1V+?E7x*hxQAR_!db3kND&QF)jFhGZT6DEggU
zxmmn%)ReidZ8wO7MpBso^1E@IpK9l|?;A?i38cdNZI%4zTn<|tbL*;by)hTgJjm-DBj`+IZNzm5p=LsjM3TE}=J-
z7$w>IRco8$5|jX{pYK<9@Vi1uWEWB{cX9!)tUU+K%8vsz$3})8RbNB4@GpX+uz@6W
z-7|7nj+N-v)@u>~1y|D|2@oQ+ZLQ?InPP=Ex$HZ8*V$2{8c{!)vmAYV!w}ndZ)7zP
z3bP%_fH;ioS6!{&BC6{W*=WkkJ=}51ypuD8AAss>5+4+4w=#&*`5no?Se2NX+nyF3PW!)W*JwUw2^r_eOV)2X!H`rO9$8k5SIhK9P4~xLe)2;17g^wewTQ?609v^l?;Bs=
z5@)}bPxuk%@~++g0A)WD-A0bk+HyupYD5G70FKu=@k8L0-wZr07N_DL58BCTEWS{>
zg7!vW#2jRF=hmfTVx6heE_^AEuD{xGS6@H)2O~bdf<{)5G=uL9-6RG~gfltDM@~g*H^P4%-XYEAl^6@b7ZL%V%Difnt5tWKZ2Md!@HjZ~
z;pwO^B$wn|`(jMV0Fa*Fdyi35U0lZuWA}lTdgr&etT=uI`1Rx^HERf%@(GpC^sCG8
zQ^zJSt*z-!dW4mY;&T=u2?k%;RNJns$BpG}=*B%DaQV*ufO4>fw{Ta3*b
z5*Unr0~PX|zAEu_tCo^DzuDaX0586AR?}MXea4=3Cc3tcBvZ8++)Csy2MdqJrddsO
zx+!NkchvfS`(1)0Wsb~_gP^B>Y^-VXF;Y%A9c$%luN?T=5ZSri5`t8eZb#FotmpBs
zj6@)(?hKIKdEH7$11M4N&su-jxSqoP-NN@i%AWW~4%pZz
zUx*iZ*_~S2m)jqdr2l{J(W;$#G0vl@e{-v
zeD^SFI+fjpye;#Yp)tPhz@a(G^sZW%IbofuXmr!eA&FO~sy^Vd)M0JgWiE5~f$v*O
zaI+wdgOh=Qk6QQwUx~lj(b~?szN2aDNdImLcjLGk-lxRrd(
zX^SgxcR1_ct#{rY@!yK|uP8^ZTuNPnM;*M(@6Q7Y58?RKG?Oo#GxR3nMcPV*45O_?
zx01mcTt+~2KAcy_+IFqtzX@xW&2_3?t;X;qhIVe
zWgUlx3eC0_mCCEPB%k78{DpDGJojC-F0DmM+HTG+O>XilNbTeVz@rO-K+QVR541(*
zG-NU7CY^a~lYIE)dBN-|ElX63OVWu4l^6&PS-yg?cb3NL$!LdtjUu_gJQ0)ZYfb?g
z#j!zl92^S6w!d^(;<;13lXm171B~F4S{6Pz)AWhtON6(LSP{L5EDk#4^sQq-%XVc_
zZ7mhp)wX$BUz2GccOB|&KHzVWALk`@WS*GsP{*#=>Wce0HCC#;th8qfI8r?>M%Z)G;uw&g~F*;A9ttYOlyxY4B)nUcBv+H3auoHsxUB5
z2mb)AQzqNH7m?)OwPm7O_*+eraxr$x0J~cw^{<=>B|b(!DCvs&H}=1as>t4NeBHVl@@K7=radCQFj$5jA
z^{*e)m7uuV$YUqw+Iv^A`A~ntuJ9wK^CL@oBp<`ocH*X68brspP1%e`^7RDuC)87o
zw%`YrWF(OJ93Q1%z5sd!;jbF90+Qvek
zI-Us`2aa+6HG0m>s_h~000ETrKT6P!&&^PF0^7031fP09QiDwsGO^#w5xPdm0<>*3
zxo)*6V~hzS4g-ks^JBQJHq!itf4v(FD?|=K$D#UGo{Oi>(nm5XMwps
z&Rh-TC)X(D-WtV)#}laH-)Hn-}!X@?&$mv()zQ`=sFj8F$l
z4ADln35>ZM9Q)Nx`-vb{WH)8za(T}~T{ncZDZE3f+gryBlB>7`Amsfhy@r*^G=C0X
z>rx`xTFEhH+m%y{{cBIg9|?Rx;VnKrTJG7t%)~6EGTuo)bTRFo)%4fGk^O~ZeG>hS
z-qTEsv!s#lE^&;89r-_vdUlIGiR0f1+-TC-N%kw4+6fkP$Cz=+4czz7wP($CY0G4M
z0i_w0S@t(E*bji1==BJ*Vc2<{7g#T~!>b+UZO#rv%E9{_v-yZD#k`+Y}2zlQ2&
zVv|~95=6tcJJlM#^I^B!3SyFi<%aA$-9;=VSvuZ}F+n+Q``!j1oc_K|h
z$%=!^GY)+^aZy_S%$_Q{yI3L?&Q3DoP!wm};=Ylzg3A8@P??hW+uZq|I2@c$h8@iag|`%T`=O6<+OxEq$@M#V1;jF?%8a5$t%f~GVmZ%hcD};7^8_EV
zCyU3X#w#}yNYrt6N5I-Q#GB1CWLJn}P9mRycfk^2er=y-aNL^8O^n;XT|~+pKDFT2!BnNL=>0P<&+wT0MLt<}XL%$d
zPrJyfa@%~zITanIrX6@{yt1UY&p%r8nrQlX_9{_UBET%(s=}anPy3t$6%KnuF%&
z5M3U!sQDY}J5?ENLxYS~b;Y?y;*IoR(t54V=EqZbTmr>p9AmX~5zii?j3iRbc-RJW
z^sg*kL+r7qmeLmL!HCD#L@B-w!Q5!{8kX5D0X%K-uhZ(zI^|BWCOGTt~yt6}7uAjdQH-a(W;8M@6-b86;11PqPYeC20XdIr50rK_siC*x%eYb)hYn6o2rG_$
zwalBy<%&Y-80Z5Y)qlpCjj~-u6He_js9*>LfKPvF;x*k#trW7A*m~i26Z90)=qCD|
zc9n5plI^{K7@w+_0Z75D`^{%h5hDrJR19RW#w*1TBh@4OTfLK19XSIAEvz@mKA27M>}W%9>9vBy2)?=mGYv9Sb7`icRQ`Zr40R
zr&~rHu8{R#k%6o$uN=W}uX2}?%;i-waq_B+008tA;Tpt}MH$LGJGjBh5-X6r@de$a
zq%6$HIOO#oTF>g~yPB+Bv}pJJSH(6aQps||xX&Y=waIE;J%ZZVP);}`1m~yVYsd$S
z-Twe~@-lYAbNbd+p{lgbOF8xewT>Fwidf674@u$2e{ZKQ0rM`Hg#9bmVfc4uVDsO{
z+I57o9Qm*}-CTA#;=W_}VQB`X;@vvl<@Uuq=?jtAF~R(6vG}`vrT9z48kU!*$R&yi
zj7cCN^NvB|j`%q4E3O!7ZamGNZCqt#HyEEo>Hh!tU>LPO?j00R6)4SGB
zLsjI{;xZD_N=fcq)qkt1-xB+X{{UJd_vSvhg?taDZ3A9Fq+suf3H&&wuZVme0fF^6
z3{Cf+eh=keA-0=p8!Ti$Sq)TH(xud`?01&9ox&*GP6^|h&UqXt#`PwVwLTzq<;zYI
zXV=2}!d6#COJ5O2BHjN0EdVDUomtYnLE#H<13B2p98F;nh6fK
zZ8|9hl~s>En9m}wzwG_zq>`?ywM!D9LctHXIq6(KQo${&FSzs`KNl;0>HZ()dtKj(
zJQpm+OHFPxQT!!A{{TNqo(~iF8O%~#YSG*n@_`fujMvVRd>+%5a(}jAF^;UC)0)t*
z_)Dc+A|!g;p_zCQ$GkVMekwkxgub;`+{*gqD&NC@hxwl8ec}&?8ivsK@y1vFc(4OC
zOZ!9Nsd!{;GZ3S~%R>V50Su093n<>QVGWgbKPGYzDE8LRf6v-X>H5}5VGJC4$-
z2P``O02L1lfWEbV0+uryZ7ILKf0^qNc#q+A%uJ0iS+{b?KtIoeS<=t&t%z}`O(T)f
zryt6^=|5-PDIGk`av)^{A;2Mzao6>xX`cXe%ZvG;y4Is)G-oMQBQLKC}Ff!c8kfe@f2#U&7PLzq*B#kPn~7Jvi@PdEyU%
z_S!r$PWq+1aYj@a8I0-nK^1aDZU#N`SU0``@N5c@rHnB5EcXt~e=1M-SH1>d!A{4{Syo3YkFTMq
zQp=ol=KGPOmNxp^?`K6n#Lo)qNox{_h__M_FSHyW>PJemZSgz7Vl_*jv$RQ)!2v%h
z_chH$;eQ6&MvwiM0pGxt!{d&)IpEPRhI|h+=&NO59|J0qFeljaS*n;6^iS|KZx-}&
z{8`pFk3JjC8H|Q<$0`ij#XNZL;oYUXTL?&I8CDX4aDDx&pM%4m9JjTRA<*qk(}2b>
z_#OGpSGdzW6=KCsiRVs9$#}j|`5r||tAls7?R5GiZs!S-
z(r57W7021V$JsAtlS;RO3rLz-pL&46akWNyIrPnOjqx{8)9$6UT`DN$4Y?wlbIX6w2P}~mK`S%edSav3W3)(nx7nW8+qk2=$padD!bru+Z4V7
zyS(w0)H7Y_Hul;)k~BYQ2Y51s-LpRR+kAZZNu_ufN${?#r>NPiS~QYEMnXD}GCsNK
z?OwJ64?`1E+0{)xhmV-ztKjJST3+&7^f-&Zk2($1A|~+RaHJ6I#h7;DqqX?yq1!3j
z;i%+N2rBAMN4_hD+7<8s>C~vJ8g-nv_X!oeW?5uARTXkrp1@bryo(Bz+3~B2F-_Vq
z{7%h&I(T@FJRfXG=**^@FUD;Ve3_TSHtD^O%7B(!diqwp{{XY^jV&~v?FZ5G2wmni
zU}OXR+U7325v*HiQ0p@3@-CMoo>JU0@LSW=RuRf@GWccr9dplf7<_cR`kO8B=R}bf
zHt@VtXRnzHFbB6@wL!iz===P^;afz>CnDP?Ju3E>@QcLSsM4O_OLHEhpR-EX3cw7W
zdsd%`z5)2Z!#Z={Tv#l&@%+xv$-iLrAXNVVW#Cig=ln*qoW@b+_F8<-RD5L8p>>WQ
z4O(1W7v2(hagR^RsDHv|sC+=w87*`jBGoOxk<5xo$v7cFJoM>aed3$pYvQJ1fKnx0
zz-P5_Qh38ygHmMES*^;q%JHww_04?FI*O%URH-c&Q|hw(OtBOpTBh$?9=R`yuk=ko
z-N&HmH)cK22TL_@dGs~V=${&HHE5;MV(?CjHs%6I(#1i~;a@zx?}#P1B;8!I5zyph
zA8Pi$*+%~WL|==VKA+;~E^h5)pUa*&o6B>QJ5EU-Fnzy;aKk0sG@M<$etDg|~n_W#YdF>sIFLLAjD-7JN1xa!{|oPs`fA!@lsH
zq<$sv_0^zQV-pofNgiQPP8qS(*TEmOEu5M+#$OYmY)Y5R;gtIFKb>^W30cEU3~9}@
z)ZNRU3bb_bFT_g?7-~;pZFh38OEbAuNJ$%uA3!olJREvg+CLNi09kxDvbxqZyS-9B
z4oJuQGSgPI#Pg=r%d0N~<|i2nNFd{y_=~_kHJ8EuBGEi!VdZ_Y-t7#q$eB?hoxqTC
z2sr3QIOe|O@el2DseDK9wwr0cQx902uv8SVwnlEYMt-WxR@f6^Ir2jAtBOXPJV&`
zRXTRm#&w%kK9%rC!<(NN=yG4A3wWY+SB?bSV#?=pZ99VX=rAkHd{`~?%|dGvXK@U$
z%2SA#s}cRuGm+N1yLQ*C{uW7fqhHNsCATjXx!E*|>IOrONa!)slU`wA@r%S-euaDC
zrn)fOx=U>+xQt8Xvwh-(^BMPEnKju8N^#Wkr&Y#G-?fKLg#@>-eVW;Z<8bOaXVW?D
z+No>W=Y)Ka;h!D652XA)@kXm>
zqDyf-wX=f?UxX8FJp-!!*2WGGBO^8ATF$pDq8K9~VvTc!Kg4?f0EKp68!qn?TX}C9
zPkP_@
zGw`C{$J*R7JNb52k}Q{Ka086+tM&d>_MNxFO+MyHFCKTW(ClqduO|m`M01Ui4E14w
z^);MeoA-;9+FBk%;2(#2UW?^g_(x1xWN64Ya!0yee~iEI{Wz|z{4JqbJdxk)K5goJ
z(kv&;W9-fMe*sqfVd9u$4W()Jr$y2ZJgW;<-7MaQR~=aT4l9(@^wnAHqStjhT@Jv4
zLILJXqZt`R>7R33HyHUC-LqQfQ_vuVP)~fDSb-#4a6NDVsO+D^miyM%U;8cOjg?!J
z+6e2{r{`Q$)94|*rMkS3HxbJSjHx}r=BvJg{i22|8-<>I`$SSj<;ft&Mb8JnuqXhT=4uAF?nz)wv(=EB!cxNwv=#EMInLr2EO$0{{Y3i-+_9>H#RXP=YuaU37bv1Uo~vz9f83r2+0Ii
zKkcF8Zvy;j@KieHlW5ijpd+R8QWkbCxUAk5f?$RN(n$u3MoAE@-phS#IRGF)Z%H
zD&a^2KU3>eWz=Me8Dnx|CmnH``YXX&Pl3EK@JiRkULw#&sVTYg<$ep6b|FCIe7F@r
z{9^blvJgBBDP~?ThMe^bUjpGTgPu4_OJ3ax@}@{
zj1IgW^gM12CgV-t`tvDaG2d#c`#O4Jc0D>d9{9w^=T)5-a{#@5VZc0|Ju3d0@gnxsVcT^O
zjg+IA6#)(F@Adbn`tEt>jy(o@Rn+~L
zylXF+9FSbe^9N+vo=D)HeLZX2EIf0o-rUIXYF3g)fU+>yn}F&u@9A3lzsA23YlxQO
z>I-Qhi^;{cxQx1k)REMT8fmKjvD(cc}jW5Ar-B+xA}Z1-!^^tnQF7JrE#0
zxXI0F+y2e-sE$7-a~5}WT(SD*y+Y&S7QC8s+dHiCGhx}FQs55Rt$iorJKI`AXtvgJ
zT({1iY#Cy`4teYCLdQ