Преглед изворни кода

Merge remote-tracking branch 'origin/master' into dev/mt6701

Scott Bezek пре 4 година
родитељ
комит
04770fe306
35 измењених фајлова са 2995 додато и 985 уклоњено
  1. 3 0
      .github/FUNDING.yml
  2. 104 0
      .github/workflows/electronics.yml
  3. 2 0
      .gitignore
  4. 88 7
      README.md
  5. 0 0
      __init__.py
  6. 29 0
      cad/README.md
  7. BIN
      doc/img/PXL_20220212_013249074.jpg
  8. BIN
      doc/img/motors/PXL_20220121_220504138.jpg
  9. BIN
      doc/img/motors/PXL_20220121_220515698.jpg
  10. BIN
      doc/img/motors/PXL_20220121_220530808.jpg
  11. BIN
      doc/img/motors/PXL_20220121_220546761.jpg
  12. BIN
      doc/img/motors/PXL_20220121_221738745.jpg
  13. BIN
      doc/img/motors/PXL_20220121_221746595.jpg
  14. 43 0
      electronics/lib/GCT_USB.pretty/USB4510_NoPaste.kicad_mod
  15. 18 18
      electronics/lib/Molex.pretty/532610371.kicad_mod
  16. 0 0
      electronics/scripts/__init__.py
  17. 87 0
      electronics/scripts/config/eeschema
  18. 556 0
      electronics/scripts/config/pcbnew
  19. 96 0
      electronics/scripts/config/policy.xml
  20. 28 0
      electronics/scripts/dependencies.sh
  21. 199 0
      electronics/scripts/export_3d.py
  22. 70 0
      electronics/scripts/export_jlcpcb.py
  23. 138 0
      electronics/scripts/export_util.py
  24. 80 0
      electronics/scripts/generate_pdf.py
  25. 112 0
      electronics/scripts/pcb_util.py
  26. 68 0
      electronics/view_base/view_base.kibot.yml
  27. 320 200
      electronics/view_base/view_base.kicad_pcb
  28. 253 166
      electronics/view_base/view_base.sch
  29. 42 0
      electronics/view_screen/view_screen.kibot.yml
  30. 597 594
      electronics/view_screen/view_screen.kicad_pcb
  31. BIN
      scripts/RobotoMono-Bold.ttf
  32. 16 0
      scripts/annotate_image.sh
  33. 0 0
      util/__init__.py
  34. 14 0
      util/file_util.py
  35. 32 0
      util/rev_info.py

+ 3 - 0
.github/FUNDING.yml

@@ -0,0 +1,3 @@
+# These are supported funding model platforms
+
+github: scottbez1

+ 104 - 0
.github/workflows/electronics.yml

@@ -0,0 +1,104 @@
+name: Export Electronics
+
+on:
+  push:
+  pull_request:
+
+jobs:
+  export-electronics:
+    name: Export Electronics
+    runs-on: ubuntu-20.04
+
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v2
+
+      - name: Set up outputs directory
+        run: mkdir -p electronics/build/outputs
+
+      - name: Install dependencies
+        run: ./electronics/scripts/dependencies.sh
+
+      - name: Export JLCPCB fabrication files [view_base]
+        run: |
+          ./electronics/scripts/export_jlcpcb.py electronics/view_base/view_base.kicad_pcb
+          cp -r electronics/build/view_base-jlc electronics/build/outputs
+
+      - name: Export PCB overview PDF [view_base]
+        run: |
+          ./electronics/scripts/generate_pdf.py electronics/view_base/view_base.kicad_pcb
+          cp electronics/build/view_base-pcb-packet.pdf electronics/build/outputs
+        env:
+          PYTHONUNBUFFERED: 1
+
+      - name: Render PCB 3D [view_base]
+        run: |
+          ./electronics/scripts/export_3d.py electronics/view_base/view_base.kicad_pcb --suffix front --width 1024 --height 1024 --skip-virtual --color-soldermask 1 1 1 --color-silk 0.1 0.1 0.1 transform z+ z+ rx+ rx+ rz- ry- ry- mu
+          cp electronics/build/view_base-front-3d.png electronics/build/outputs
+          ./scripts/annotate_image.sh electronics/build/outputs/view_base-front-3d.png
+          ./electronics/scripts/export_3d.py electronics/view_base/view_base.kicad_pcb --suffix back --width 1024 --height 1024 --skip-virtual --color-soldermask 1 1 1 --color-silk 0.1 0.1 0.1 transform z+ z+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ rx+ rx+ rz- ry+ ry+ mu
+          cp electronics/build/view_base-back-3d.png electronics/build/outputs
+          ./scripts/annotate_image.sh electronics/build/outputs/view_base-back-3d.png
+        env:
+          PYTHONUNBUFFERED: 1
+
+      - name: Export JLCPCB fabrication files [view_screen]
+        run: |
+          ./electronics/scripts/export_jlcpcb.py electronics/view_screen/view_screen.kicad_pcb
+          cp -r electronics/build/view_screen-jlc electronics/build/outputs
+
+      - name: Export PCB overview PDF [view_screen]
+        run: |
+          ./electronics/scripts/generate_pdf.py electronics/view_screen/view_screen.kicad_pcb
+          cp electronics/build/view_screen-pcb-packet.pdf electronics/build/outputs
+        env:
+          PYTHONUNBUFFERED: 1
+
+      - name: Render PCB 3D [view_screen]
+        run: |
+          ./electronics/scripts/export_3d.py electronics/view_screen/view_screen.kicad_pcb --suffix front --width 1024 --height 1024 --skip-virtual transform z+ z+ rx+ rx+ rz- ry- ry- mu
+          cp electronics/build/view_screen-front-3d.png electronics/build/outputs
+          ./scripts/annotate_image.sh electronics/build/outputs/view_screen-front-3d.png
+          ./electronics/scripts/export_3d.py electronics/view_screen/view_screen.kicad_pcb --suffix back --width 1024 --height 1024 --skip-virtual transform z+ z+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ ry+ rx+ rx+ rz- ry+ ry+ mu
+          cp electronics/build/view_screen-back-3d.png electronics/build/outputs
+          ./scripts/annotate_image.sh electronics/build/outputs/view_screen-back-3d.png
+        env:
+          PYTHONUNBUFFERED: 1
+
+      - name: Export artifacts (KiBot) [view_base]
+        uses: INTI-CMNB/KiBot@fb6d637c17fbba2daf005a9a7972e4c02c1c997c
+        with:
+          config: electronics/view_base/view_base.kibot.yml
+          dir: electronics/build/outputs
+          schema: 'electronics/view_base/view_base.sch'
+          board: 'electronics/view_base/view_base.kicad_pcb'
+
+      - name: Export artifacts (KiBot) [view_screen]
+        uses: INTI-CMNB/KiBot@fb6d637c17fbba2daf005a9a7972e4c02c1c997c
+        with:
+          config: electronics/view_screen/view_screen.kibot.yml
+          dir: electronics/build/outputs
+          schema: 'electronics/view_screen/view_screen.sch'
+          board: 'electronics/view_screen/view_screen.kicad_pcb'
+
+      - name: Archive artifacts
+        uses: actions/upload-artifact@v2
+        if: always()
+        with:
+          name: electronics
+          path: |
+            electronics/build
+
+      - name: Configure AWS Credentials
+        if: github.event_name == 'push' && github.repository_owner == 'scottbez1'
+        uses: aws-actions/configure-aws-credentials@v1
+        with:
+          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
+          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+          aws-region: us-east-1
+
+      - name: Sync artifacts to S3
+        if: github.event_name == 'push' && github.repository_owner == 'scottbez1'
+        run: |
+          aws s3 sync electronics/build/outputs s3://smartknob-artifacts/${GITHUB_REF#refs/heads/}/electronics --delete --cache-control max-age=0,no-cache
+

+ 2 - 0
.gitignore

@@ -27,3 +27,5 @@ build/
 !.vscode/extensions.json
 !.vscode/*.code-snippets
 
+__pycache__
+

+ 88 - 7
README.md

@@ -7,32 +7,81 @@ Coming soon...
 ## Designs
 
 ### SmartKnob View
-Premium SmartKnob experience. Under active development.
+Premium SmartKnob experience. Under active development. Untested & unproven.
+
+![Exploded view](doc/img/explodedv145.gif)
+
+#### Base PCB
+
+<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-front-3d.png">
+    <img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-front-3d.png" width="300" />
+</a>
+<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-back-3d.png">
+    <img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-back-3d.png" width="300" />
+</a>
+
+
+[Schematic](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-schematic.pdf)
+
+[Interactive BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-ibom.html)
+
+[PCB Packet](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-pcb-packet.pdf)
+
+[Gerbers](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-jlc/gerbers.zip)
+
+#### Screen PCB
+
+<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-front-3d.png">
+    <img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-front-3d.png" width="300" />
+</a>
+<a href="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-back-3d.png">
+    <img src="https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-back-3d.png" width="300" />
+</a>
+
+
+[Schematic](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-schematic.pdf)
+
+[Interactive BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-ibom.html)
+
+[PCB Packet](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-pcb-packet.pdf)
+
+[Gerbers](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_screen-jlc/gerbers.zip)
 
 ### SmartKnob Handheld
 An exploration of a small handheld form-factor. Under active development.
 
+<a href="doc/img/PXL_20220212_013249074.jpg"><img src="doc/img/PXL_20220212_013249074.jpg" width="200" /></a>
+
 ### SmartKnob Mini
 Planned for the future.
 
 ## Component Info
 
 ### Magnetic encoders
-#### TLV493 (Infineon)
-A decent choice, and easy to prototype with using [Adafruit's QWIIC breakout board](https://www.adafruit.com/product/4366).
+#### TLV493D (Infineon)
+A mediocre choice. Easy to prototype with using [Adafruit's QWIIC breakout board](https://www.adafruit.com/product/4366).
 
 In my testing, it is a little noisy, requiring filtering/smoothing that can slow responsiveness, hurting control loop stability. Or, with less filtering, the noise
 can easily be "amplified" by the derivative component in the PID motor torque controller, causing audible (and tactile) humming/buzzing.
 
+There is also apparently a known silicon issue that causes the internal ADC to sometimes completely lock up, requiring a full reset and re-configuration. See section
+5.6 in the [User Manual](https://www.infineon.com/dgdl/Infineon-TLV493D-A1B6_3DMagnetic-UM-v01_03-EN.pdf?fileId=5546d46261d5e6820161e75721903ddd)
+
+    In the Master Controlled Mode (MCM) or the Fast Mode (FM) the ADC conversion may hang up. A hang up can
+    be detected by:
+     - Frame Counter (FRM) counter stucks and does not increment anymore.
+
+In my experience testing 4 different Adafruit breakout boards, 2 of them (50%) regularly exhibit this lockup behavior within a minute or two of use.
+
 As of 2022-02-08, there is limited availability of this IC.
 
 [Datasheet](https://www.mouser.com/datasheet/2/196/Infineon_TLV493D_A1B6_DataSheet_v01_10_EN-1227967.pdf)
 
 #### MT6701 (MagnTek)
-Very promising based on the datasheet and initial prototyping.
+Very promising based on the datasheet and initial tests. Seems to be less noisy than TLV493D, and more responsive (control loop is more stable) using SSI.
 
- - Haven't testing in a full control loop yet, but data looks good and relatively noise-free.
- - Lots of IO options - SPI, I2C, and ABZ - should offer good response latency.
+ - Lots of IO options - SSI, I2C, and ABZ - should offer good response latency
+ - SSI include CRC to validate data
  - No power-down or low-power options - may not be ideal for battery-powered devices
  - Not available from US distributors (Mouser, Digi-Key)
 
@@ -54,11 +103,43 @@ Highlights:
  [Product page](https://www.trinamic.com/products/integrated-circuits/details/tmc6300-la/)
 
 ### Motors
-TODO
+#### 32mm Rotor, Hollow Shaft, Diametric magnet
+<a href="doc/img/motors/PXL_20220121_221746595.jpg"><img src="doc/img/motors/PXL_20220121_221746595.jpg" width="200" /></a>
+<a href="doc/img/motors/PXL_20220121_221738745.jpg"><img src="doc/img/motors/PXL_20220121_221738745.jpg" width="200" /></a>
+
+
+- 32mm rotor
+- 15mm overall height (including magnet), 12.75mm height w/o magnet, 9mm rotor height
+- low/zero cogging - excellent for completely smooth input
+- 5.9mm hollow shaft
+- built-in diametric magnet for encoder
+- Proven option
+
+This is overall the easiest motor to get started with. Low cogging and a built-in diametric magnet are great!
+
+[AliExpress](https://www.aliexpress.com/item/1005001384349991.html)
+
+#### ~17mm Rotor
+<a href="doc/img/motors/PXL_20220121_220530808.jpg"><img src="doc/img/motors/PXL_20220121_220530808.jpg" width="200" /></a>
+<a href="doc/img/motors/PXL_20220121_220546761.jpg"><img src="doc/img/motors/PXL_20220121_220546761.jpg" width="200" /></a>
+
+- Not tested yet
+- Stepped 17.3mm and 16.3mm diameter rotor
+- 11.2mm total height, 8.6mm rotor height
+- moderate cogging - not ideal for completely smooth input
+- Rotor has threaded hole on the side that should be usable for keying a cap
+- Very little shaft accessible on bottom - may be tricky to mount a diametric magnet to it. Maybe could replace screw with something else?
+
+[AliExpress](https://www.aliexpress.com/item/1005003240145615.html)
 
 # Firmware
 TODO
 
+# Acknowledgements
+This project was greatly inspired by Jesse Schoch's video "[haptic textures and virtual detents](https://www.youtube.com/watch?v=1gPQfDkX3BU)" and the
+corresponding [discussion in the SimpleFOC community](https://community.simplefoc.com/t/haptic-textures/301).
+
+
 # License
 
 This project is licensed under Apache v2 (see [LICENSE.txt](LICENSE.txt)).


+ 29 - 0
cad/README.md

@@ -0,0 +1,29 @@
+# CAD
+
+Most CAD work is done in Fusion 360 and versioned outside of this git repo.
+
+# Assemblies
+## SmartKnob View
+ - [Complete SmartKnob View assembly](https://a360.co/3BzkU0n)
+
+## Handheld
+ - [Case bottom](https://a360.co/3LM82se) For breadboard with power rails removed.
+ - [Motor adapter](https://a360.co/3LO03eC) Connects motor to Adafruit TLV493d adapter board, and screws into Case
+ - [Thumbwheel](https://a360.co/3H3jSee) Test thumbwheel for motor rotor, for turning from the side
+
+# Motors
+Note that all measurements were done by hand and will be approximate. Chamfers & fillets are approximated.
+
+## 32mm
+ - [Motor model](https://a360.co/3H8LUFi)
+
+## 17mm
+ - [Motor model](https://a360.co/3sYa93Y)
+ - [Spacer](https://a360.co/3H3xh5M) (screw at the bottom is replaced with a longer M1.4 screw with this spacer inserted; diametric magnet is glued to screw)
+ - [Dummy test jig](https://a360.co/3sPQgvB)
+
+ ## 15mm
+ - [Motor model](https://a360.co/34N1nOa)
+ - [Magnet spacer](https://a360.co/3532Tvb)
+ - [Magnet gluing jig](https://a360.co/3I1xbx6)
+ - [Adapter](https://a360.co/35gC86B) - mount motor to Adafruit TLV493d adapter board

BIN
doc/img/PXL_20220212_013249074.jpg


BIN
doc/img/motors/PXL_20220121_220504138.jpg


BIN
doc/img/motors/PXL_20220121_220515698.jpg


BIN
doc/img/motors/PXL_20220121_220530808.jpg


BIN
doc/img/motors/PXL_20220121_220546761.jpg


BIN
doc/img/motors/PXL_20220121_221738745.jpg


BIN
doc/img/motors/PXL_20220121_221746595.jpg


+ 43 - 0
electronics/lib/GCT_USB.pretty/USB4510_NoPaste.kicad_mod

@@ -0,0 +1,43 @@
+(module USB4510_NoPaste (layer F.Cu) (tedit 620C1622)
+  (attr smd)
+  (fp_text reference REF** (at 0 -3.35) (layer F.Fab)
+    (effects (font (size 1 1) (thickness 0.15)))
+  )
+  (fp_text value USB4510_NoPaste (at 0 -0.5) (layer F.Fab)
+    (effects (font (size 1 1) (thickness 0.15)))
+  )
+  (fp_line (start -4.62 0) (end -4.62 -5.7) (layer Edge.Cuts) (width 0.2))
+  (fp_line (start -4.12 -6.2) (end 4.12 -6.2) (layer Edge.Cuts) (width 0.2))
+  (fp_line (start 4.62 0) (end 4.62 -5.7) (layer Edge.Cuts) (width 0.2))
+  (fp_line (start -4.47 0.5) (end -4.47 -6) (layer F.Fab) (width 0.05))
+  (fp_line (start 4.47 0.5) (end 4.47 -6) (layer F.Fab) (width 0.05))
+  (fp_line (start -4.47 0.5) (end 4.47 0.5) (layer F.Fab) (width 0.05))
+  (fp_line (start 4.47 -6) (end -4.47 -6) (layer F.Fab) (width 0.05))
+  (fp_arc (start -4.12 -5.7) (end -4.12 -6.2) (angle -90) (layer Edge.Cuts) (width 0.2))
+  (fp_arc (start 4.12 -5.7) (end 4.62 -5.7) (angle -90) (layer Edge.Cuts) (width 0.2))
+  (pad S1 thru_hole oval (at 5.62 -5.6) (size 1 1.8) (drill oval 0.6 1.4) (layers *.Cu *.Mask))
+  (pad S1 thru_hole oval (at -5.62 -1.6) (size 1 2.2) (drill oval 0.6 1.8) (layers *.Cu *.Mask))
+  (pad S1 thru_hole oval (at 5.62 -1.6) (size 1 2.2) (drill oval 0.6 1.8) (layers *.Cu *.Mask))
+  (pad S1 thru_hole oval (at -5.62 -5.6) (size 1 1.8) (drill oval 0.6 1.4) (layers *.Cu *.Mask))
+  (pad A1 smd rect (at -3.2 -6.75) (size 0.6 1.1) (layers F.Cu F.Mask))
+  (pad A4 smd rect (at -2.4 -6.75) (size 0.6 1.1) (layers F.Cu F.Mask))
+  (pad B12 smd rect (at -3.2 -6.75) (size 0.6 1.1) (layers F.Cu F.Mask))
+  (pad B9 smd rect (at -2.4 -6.75) (size 0.6 1.1) (layers F.Cu F.Mask))
+  (pad B8 smd rect (at -1.75 -6.75) (size 0.3 1.1) (layers F.Cu F.Mask))
+  (pad A5 smd rect (at -1.25 -6.75) (size 0.3 1.1) (layers F.Cu F.Mask))
+  (pad B7 smd rect (at -0.75 -6.75) (size 0.3 1.1) (layers F.Cu F.Mask))
+  (pad A6 smd rect (at -0.25 -6.75) (size 0.3 1.1) (layers F.Cu F.Mask))
+  (pad A7 smd rect (at 0.25 -6.75) (size 0.3 1.1) (layers F.Cu F.Mask))
+  (pad B6 smd rect (at 0.75 -6.75) (size 0.3 1.1) (layers F.Cu F.Mask))
+  (pad A8 smd rect (at 1.25 -6.75) (size 0.3 1.1) (layers F.Cu F.Mask))
+  (pad B5 smd rect (at 1.75 -6.75) (size 0.3 1.1) (layers F.Cu F.Mask))
+  (pad A9 smd rect (at 2.4 -6.75) (size 0.6 1.1) (layers F.Cu F.Mask))
+  (pad B4 smd rect (at 2.4 -6.75) (size 0.6 1.1) (layers F.Cu F.Mask))
+  (pad B1 smd rect (at 3.2 -6.75) (size 0.6 1.1) (layers F.Cu F.Mask))
+  (pad A12 smd rect (at 3.2 -6.75) (size 0.6 1.1) (layers F.Cu F.Mask))
+  (model ${KIPRJMOD}/../lib/GCT_USB.3dshapes/proprietary/USB4510-03-1-A.stp
+    (offset (xyz 0 -0.5 0))
+    (scale (xyz 1 1 1))
+    (rotate (xyz -90 0 0))
+  )
+)

+ 18 - 18
electronics/lib/Molex.pretty/532610371.kicad_mod

@@ -1,28 +1,28 @@
-(module 532610371 (layer F.Cu) (tedit 6205F83E)
+(module 532610371 (layer F.Cu) (tedit 620AE163)
   (fp_text reference REF** (at 1.25 -3.02) (layer F.SilkS)
     (effects (font (size 1 1) (thickness 0.15)))
   )
   (fp_text value CON_532610371 (at 1.25 -5.08) (layer F.Fab)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (fp_line (start 6.969991 -1.47) (end -4.469991 -1.47) (layer F.CrtYd) (width 0.05))
-  (fp_line (start 6.969991 6.27) (end 6.969991 -1.47) (layer F.CrtYd) (width 0.05))
-  (fp_line (start -4.469991 6.27) (end 6.969991 6.27) (layer F.CrtYd) (width 0.05))
-  (fp_line (start -4.469991 -1.47) (end -4.469991 6.27) (layer F.CrtYd) (width 0.05))
-  (fp_line (start 5.699991 1.07996) (end 5.699991 -0.2) (layer F.SilkS) (width 0.12))
-  (fp_line (start -3.199991 4.720039) (end -3.199991 5) (layer F.SilkS) (width 0.12))
-  (fp_line (start -0.72004 -0.2) (end -3.199991 -0.2) (layer F.SilkS) (width 0.12))
-  (fp_line (start -3.199991 -0.2) (end -3.199991 5) (layer F.Fab) (width 0.1))
-  (fp_line (start 5.699991 -0.2) (end -3.199991 -0.2) (layer F.Fab) (width 0.1))
-  (fp_line (start 5.699991 5) (end 5.699991 -0.2) (layer F.Fab) (width 0.1))
-  (fp_line (start -3.199991 5) (end 5.699991 5) (layer F.Fab) (width 0.1))
-  (fp_line (start 5.699991 -0.2) (end 3.22004 -0.2) (layer F.SilkS) (width 0.12))
-  (fp_line (start 5.699991 5) (end 5.699991 4.720039) (layer F.SilkS) (width 0.12))
-  (fp_line (start -3.199991 5) (end 5.699991 5) (layer F.SilkS) (width 0.12))
-  (fp_line (start -3.199991 -0.2) (end -3.199991 1.07996) (layer F.SilkS) (width 0.12))
-  (fp_line (start -4.977991 0.635) (end -3.453991 0) (layer F.Fab) (width 0.1))
-  (fp_line (start -4.977991 -0.635) (end -4.977991 0.635) (layer F.Fab) (width 0.1))
   (fp_line (start -3.453991 0) (end -4.977991 -0.635) (layer F.Fab) (width 0.1))
+  (fp_line (start -4.977991 -0.635) (end -4.977991 0.635) (layer F.Fab) (width 0.1))
+  (fp_line (start -4.977991 0.635) (end -3.453991 0) (layer F.Fab) (width 0.1))
+  (fp_line (start -3.199991 -0.2) (end -3.199991 1.07996) (layer F.SilkS) (width 0.12))
+  (fp_line (start -3.199991 5) (end 5.699991 5) (layer F.SilkS) (width 0.12))
+  (fp_line (start 5.699991 5) (end 5.699991 4.720039) (layer F.SilkS) (width 0.12))
+  (fp_line (start 5.699991 -0.2) (end 3.22004 -0.2) (layer F.SilkS) (width 0.12))
+  (fp_line (start -3.199991 5) (end 5.699991 5) (layer F.Fab) (width 0.1))
+  (fp_line (start 5.699991 5) (end 5.699991 -0.2) (layer F.Fab) (width 0.1))
+  (fp_line (start 5.699991 -0.2) (end -3.199991 -0.2) (layer F.Fab) (width 0.1))
+  (fp_line (start -3.199991 -0.2) (end -3.199991 5) (layer F.Fab) (width 0.1))
+  (fp_line (start -0.72004 -0.2) (end -3.199991 -0.2) (layer F.SilkS) (width 0.12))
+  (fp_line (start -3.199991 4.720039) (end -3.199991 5) (layer F.SilkS) (width 0.12))
+  (fp_line (start 5.699991 1.07996) (end 5.699991 -0.2) (layer F.SilkS) (width 0.12))
+  (fp_line (start -4 -1) (end -4 5.5) (layer F.CrtYd) (width 0.05))
+  (fp_line (start -4 5.5) (end 6.5 5.5) (layer F.CrtYd) (width 0.05))
+  (fp_line (start 6.5 5.5) (end 6.5 -1) (layer F.CrtYd) (width 0.05))
+  (fp_line (start 6.5 -1) (end -4 -1) (layer F.CrtYd) (width 0.05))
   (fp_text user "Copyright 2021 Accelerated Designs. All rights reserved." (at 0 0) (layer Cmts.User)
     (effects (font (size 0.127 0.127) (thickness 0.002)))
   )

+ 0 - 0
electronics/scripts/__init__.py


+ 87 - 0
electronics/scripts/config/eeschema

@@ -0,0 +1,87 @@
+SchematicFramePos_x=89
+SchematicFramePos_y=38
+SchematicFrameSize_x=1125
+SchematicFrameSize_y=739
+SchematicFrameMaximized=0
+SchematicFrameAutoSaveInterval=600
+SchematicFramePerspective=layout2|name=MainToolbar;caption=;state=139644;dir=1;layer=6;row=0;pos=0;prop=100000;bestw=1016;besth=36;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=OptToolbar;caption=;state=139596;dir=4;layer=3;row=0;pos=0;prop=100000;bestw=36;besth=212;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=ToolsToolbar;caption=;state=139596;dir=2;layer=1;row=0;pos=0;prop=100000;bestw=36;besth=688;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrame;caption=;state=1020;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=387;besth=181;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131452;dir=3;layer=6;row=0;pos=0;prop=100000;bestw=400;besth=34;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,6,0)=36|dock_size(4,3,0)=36|dock_size(2,1,0)=36|dock_size(5,0,0)=337|dock_size(3,6,0)=34|
+SchematicFrameMostRecentlyUsedPath=
+SchematicFrameUnits=1
+SchematicFrameShowGrid=1
+SchematicFrame_LastGridSize=5
+SchematicFrameFirstRunShown=0
+SchematicFrameDevelMaxUndoItems=0
+SchematicFrameGalDisplayOptionsGridStyle=0
+SchematicFrameGalDisplayOptionsGridLineWidth=1
+SchematicFrameGalDisplayOptionsGridMaxDensity=10
+SchematicFrameGalDisplayOptionsGridAxesEnabled=0
+SchematicFrameGalDisplayOptionsCursorFullscreen=0
+SchematicFrameGalDisplayOptionsForceDisplayCursor=1
+ShowPageLimits=1
+Units=1
+PrintMonochrome=1
+PrintSheetReferenceAndTitleBlock=1
+RepeatStepX=0
+RepeatStepY=100
+RepeatLabelIncrement=1
+ShowIllegalSymbolLibDialog=1
+ShowSheetFileNameCaseSensitivityDlg=1
+DefaultBusWidth=12
+DefaultWireWidth=6
+DefaultJunctionSize=40
+ShowHiddenPins=0
+HorizVertLinesOnly=1
+AutoplaceFields=1
+AutoplaceJustify=1
+AutoplaceAlign=0
+FootprintPreview=0
+SimCmdLine=
+LastFindReplaceFlags=1
+LastFindString=
+LastReplaceString=
+FieldNames=(templatefields)
+canvas_type=2
+Color4DWireEx=rgb(0, 132, 0)
+Color4DBusEx=rgb(0, 0, 132)
+Color4DConnEx=rgb(0, 132, 0)
+Color4DLLabelEx=rgb(0, 0, 0)
+Color4DHLabelEx=rgb(132, 132, 0)
+Color4DGLabelEx=rgb(132, 0, 0)
+Color4DPinNumEx=rgb(132, 0, 0)
+Color4DPinNameEx=rgb(0, 132, 132)
+Color4DFieldEx=rgb(132, 0, 132)
+Color4DReferenceEx=rgb(0, 132, 132)
+Color4DValueEx=rgb(0, 132, 132)
+Color4DNoteEx=rgb(0, 0, 194)
+Color4DBodyEx=rgb(132, 0, 0)
+Color4DBodyBgEx=rgb(255, 255, 194)
+Color4DNetNameEx=rgb(132, 132, 132)
+Color4DPinEx=rgb(132, 0, 0)
+Color4DSheetEx=rgb(132, 0, 132)
+Color4DSheetFileNameEx=rgb(132, 132, 0)
+Color4DSheetNameEx=rgb(0, 132, 132)
+Color4DSheetLabelEx=rgb(132, 132, 0)
+Color4DNoConnectEx=rgb(0, 0, 132)
+Color4DErcWEx=rgba(0, 132, 0, 0.800)
+Color4DErcEEx=rgba(132, 0, 0, 0.800)
+Color4DGridEx=rgb(132, 132, 132)
+Color4DBgCanvasEx=rgb(255, 255, 255)
+Color4DCursorEx=rgb(0, 0, 0)
+Color4DBrightenedEx=rgb(255, 0, 255)
+Color4DHiddenEx=rgb(194, 194, 194)
+Color4DWorksheetEx=rgb(132, 0, 0)
+file1=
+file2=
+file3=
+file4=
+file5=
+file6=
+file7=
+file8=
+file9=
+PlotModeColor=1
+PlotFrameRef=1
+PlotFormat=3
+PlotHPGLOrg=0
+PlotHPGLPaperSize=0
+PlotHPGLPenSize=0.4826

+ 556 - 0
electronics/scripts/config/pcbnew

@@ -0,0 +1,556 @@
+Color4DPCBLayer_F.Cu=rgb(132, 0, 0)
+Color4DPCBLayer_In1.Cu=rgb(194, 194, 0)
+Color4DPCBLayer_In2.Cu=rgb(194, 0, 194)
+Color4DPCBLayer_In3.Cu=rgb(194, 0, 0)
+Color4DPCBLayer_In4.Cu=rgb(0, 132, 132)
+Color4DPCBLayer_In5.Cu=rgb(0, 132, 0)
+Color4DPCBLayer_In6.Cu=rgb(0, 0, 132)
+Color4DPCBLayer_In7.Cu=rgb(132, 132, 132)
+Color4DPCBLayer_In8.Cu=rgb(132, 0, 132)
+Color4DPCBLayer_In9.Cu=rgb(194, 194, 194)
+Color4DPCBLayer_In10.Cu=rgb(132, 0, 132)
+Color4DPCBLayer_In11.Cu=rgb(132, 0, 0)
+Color4DPCBLayer_In12.Cu=rgb(132, 132, 0)
+Color4DPCBLayer_In13.Cu=rgb(194, 194, 194)
+Color4DPCBLayer_In14.Cu=rgb(0, 0, 132)
+Color4DPCBLayer_In15.Cu=rgb(0, 132, 0)
+Color4DPCBLayer_In16.Cu=rgb(132, 0, 0)
+Color4DPCBLayer_In17.Cu=rgb(194, 194, 0)
+Color4DPCBLayer_In18.Cu=rgb(194, 0, 194)
+Color4DPCBLayer_In19.Cu=rgb(194, 0, 0)
+Color4DPCBLayer_In20.Cu=rgb(0, 132, 132)
+Color4DPCBLayer_In21.Cu=rgb(0, 132, 0)
+Color4DPCBLayer_In22.Cu=rgb(0, 0, 132)
+Color4DPCBLayer_In23.Cu=rgb(132, 132, 132)
+Color4DPCBLayer_In24.Cu=rgb(132, 0, 132)
+Color4DPCBLayer_In25.Cu=rgb(194, 194, 194)
+Color4DPCBLayer_In26.Cu=rgb(132, 0, 132)
+Color4DPCBLayer_In27.Cu=rgb(132, 0, 0)
+Color4DPCBLayer_In28.Cu=rgb(132, 132, 0)
+Color4DPCBLayer_In29.Cu=rgb(194, 194, 194)
+Color4DPCBLayer_In30.Cu=rgb(0, 0, 132)
+Color4DPCBLayer_B.Cu=rgba(0, 132, 0, 0.439)
+Color4DPCBLayer_B.Adhes=rgb(0, 0, 132)
+Color4DPCBLayer_F.Adhes=rgb(132, 0, 132)
+Color4DPCBLayer_B.Paste=rgb(0, 194, 194)
+Color4DPCBLayer_F.Paste=rgb(132, 0, 0)
+Color4DPCBLayer_B.SilkS=rgb(132, 0, 132)
+Color4DPCBLayer_F.SilkS=rgb(0, 132, 132)
+Color4DPCBLayer_B.Mask=rgb(132, 132, 0)
+Color4DPCBLayer_F.Mask=rgb(132, 0, 132)
+Color4DPCBLayer_Dwgs.User=rgb(194, 194, 194)
+Color4DPCBLayer_Cmts.User=rgb(0, 0, 132)
+Color4DPCBLayer_Eco1.User=rgb(0, 132, 0)
+Color4DPCBLayer_Eco2.User=rgb(194, 194, 0)
+Color4DPCBLayer_Edge.Cuts=rgb(194, 194, 0)
+Color4DPCBLayer_Margin=rgb(194, 0, 194)
+Color4DPCBLayer_B.CrtYd=rgb(132, 132, 132)
+Color4DPCBLayer_F.CrtYd=rgb(194, 194, 194)
+Color4DPCBLayer_B.Fab=rgb(0, 0, 132)
+Color4DPCBLayer_F.Fab=rgb(132, 132, 132)
+Color4DTxtFrontEx=rgb(194, 194, 194)
+Color4DTxtBackEx=rgb(0, 0, 132)
+Color4DTxtInvisEx=rgb(132, 132, 132)
+Color4DPadBackEx=rgb(0, 132, 0)
+Color4DAnchorEx=rgb(0, 0, 132)
+Color4DPadFrontEx=rgb(132, 0, 0)
+Color4DPadThruHoleEx=rgb(194, 194, 0)
+Color4DNonPlatedEx=rgb(194, 194, 0)
+Color4DPCBBackground=rgb(0, 0, 0)
+Color4DPCBCursor=rgb(255, 255, 255)
+Color4DAuxItems=rgb(255, 255, 255)
+Color4DWorksheet=rgb(72, 0, 0)
+Color4DGrid=rgb(132, 132, 132)
+Color4DViaThruEx=rgb(194, 194, 194)
+Color4DViaBBlindEx=rgb(132, 132, 0)
+Color4DViaMicroEx=rgb(0, 132, 132)
+Color4DRatsEx=rgb(255, 255, 255)
+Color4DNoNetPadMarker=rgb(0, 0, 132)
+LegacyAutoDeleteOldTrack=1
+LegacyUse45DegreeTracks=1
+LegacyUseTwoSegmentTracks=1
+Use45DegreeGraphicSegments=0
+MagneticPads=2
+MagneticTracks=1
+EditActionChangesTrackWidth=0
+DragSelects=1
+PcbFramePos_x=72
+PcbFramePos_y=27
+PcbFrameSize_x=2488
+PcbFrameSize_y=1413
+PcbFrameMaximized=1
+PcbFrameAutoSaveInterval=600
+PcbFramePerspective=layout2|name=MainToolbar;caption=;state=139644;dir=1;layer=6;row=0;pos=0;prop=100000;bestw=956;besth=38;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=AuxToolbar;caption=;state=139644;dir=1;layer=4;row=0;pos=0;prop=100000;bestw=995;besth=38;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131452;dir=3;layer=6;row=0;pos=0;prop=100000;bestw=400;besth=34;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=OptToolbar;caption=;state=139596;dir=4;layer=3;row=0;pos=0;prop=100000;bestw=36;besth=597;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MicrowaveToolbar;caption=;state=139598;dir=2;layer=1;row=0;pos=0;prop=100000;bestw=36;besth=187;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=ToolsToolbar;caption=;state=139596;dir=2;layer=2;row=0;pos=0;prop=100000;bestw=36;besth=708;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=LayersManager;caption=Layers Manager;state=1532;dir=2;layer=3;row=0;pos=0;prop=100000;bestw=198;besth=32;minw=198;minh=32;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=198;floath=32|name=DrawFrame;caption=;state=1022;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=387;besth=181;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrameGal;caption=;state=1020;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=1112;besth=731;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,6,0)=38|dock_size(1,4,0)=38|dock_size(3,6,0)=34|dock_size(4,3,0)=36|dock_size(2,2,0)=36|dock_size(2,3,0)=198|dock_size(5,0,0)=389|
+PcbFrameMostRecentlyUsedPath=
+PcbFrameShowGrid=1
+PcbFrameGridColor=rgb(132, 132, 132)
+PcbFrame_LastGridSize=2
+PcbFrameFirstRunShown=1
+PcbFrameDevelMaxUndoItems=0
+PcbFrameGalDisplayOptionsOpenGLAntialiasingMode=0
+PcbFrameGalDisplayOptionsGridStyle=0
+PcbFrameGalDisplayOptionsGridLineWidth=1
+PcbFrameGalDisplayOptionsGridMaxDensity=10
+PcbFrameGalDisplayOptionsGridAxesEnabled=0
+PcbFrameGalDisplayOptionsCursorFullscreen=0
+PcbFrameGalDisplayOptionsForceDisplayCursor=0
+PcbFramePcbUserGrid_X=0.254
+PcbFramePcbUserGrid_Y=0.254
+PcbFramePcbUserGrid_Unit=1
+PcbFrameDiPadFi=1
+PcbFrameDiViaFi=1
+PcbFrameDiPadNu=1
+PcbFrameDiModEd=1
+PcbFrameDiModTx=1
+PcbFrameFastGrid1=0
+PcbFrameFastGrid2=0
+Units=1
+DisplayPolarCoords=0
+ShowNetNamesMode=3
+DisplayTrackFilled=1
+TrackDisplayClearance=2
+PadFill=1
+ViaFill=1
+PadAffG=1
+PadSNum=1
+ModAffC=1
+ModAffT=1
+PcbAffT=1
+PcbShowZonesMode=0
+RotationAngle=900
+MaxLnkS=3
+PlotLineWidth_mm=0.1
+ShowMicrowaveTools=0
+ShowLayerManagerTools=1
+ShowPageLimits=0
+canvas_type=1
+pcbnew.InteractiveRouter.Mode=1
+pcbnew.InteractiveRouter.OptimizerEffort=1
+pcbnew.InteractiveRouter.RemoveLoops=1
+pcbnew.InteractiveRouter.SmartPads=1
+pcbnew.InteractiveRouter.ShoveVias=1
+pcbnew.InteractiveRouter.StartDiagonal=0
+pcbnew.InteractiveRouter.ShoveTimeLimit=1000
+pcbnew.InteractiveRouter.ShoveIterationLimit=250
+pcbnew.InteractiveRouter.WalkaroundIterationLimit=50
+pcbnew.InteractiveRouter.JumpOverObstacles=0
+pcbnew.InteractiveRouter.SmoothDraggedSegments=1
+pcbnew.InteractiveRouter.CanViolateDRC=0
+pcbnew.InteractiveRouter.SuggestFinish=0
+pcbnew.InteractiveRouter.FreeAngleMode=0
+pcbnew.InteractiveRouter.InlineDragEnabled=0
+MousewheelPAN=0
+ZoomNoCenter=0
+AutoPAN=1
+file1=
+file2=
+file3=
+file4=
+file5=
+file6=
+file7=
+file8=
+file9=
+PcbFrameCursorShape=0
+PcbFrameMaxUndoItems=0
+ViaHoleDisplayMode=1
+ColorPCBLayer_F.Cu=Red 2
+ColorPCBLayer_In1.Cu=Yellow 3
+ColorPCBLayer_In2.Cu=Magenta 3
+ColorPCBLayer_In3.Cu=Red 3
+ColorPCBLayer_In4.Cu=Cyan 2
+ColorPCBLayer_In5.Cu=Green 2
+ColorPCBLayer_In6.Cu=Blue 2
+ColorPCBLayer_In7.Cu=Gray 2
+ColorPCBLayer_In8.Cu=Magenta 2
+ColorPCBLayer_In9.Cu=Gray 3
+ColorPCBLayer_In10.Cu=Magenta 2
+ColorPCBLayer_In11.Cu=Red 2
+ColorPCBLayer_In12.Cu=Brown 2
+ColorPCBLayer_In13.Cu=Gray 3
+ColorPCBLayer_In14.Cu=Blue 2
+ColorPCBLayer_In15.Cu=Green 2
+ColorPCBLayer_In16.Cu=Red 2
+ColorPCBLayer_In17.Cu=Yellow 3
+ColorPCBLayer_In18.Cu=Magenta 3
+ColorPCBLayer_In19.Cu=Red 3
+ColorPCBLayer_In20.Cu=Cyan 2
+ColorPCBLayer_In21.Cu=Green 2
+ColorPCBLayer_In22.Cu=Blue 2
+ColorPCBLayer_In23.Cu=Gray 2
+ColorPCBLayer_In24.Cu=Magenta 2
+ColorPCBLayer_In25.Cu=Gray 3
+ColorPCBLayer_In26.Cu=Magenta 2
+ColorPCBLayer_In27.Cu=Red 2
+ColorPCBLayer_In28.Cu=Brown 2
+ColorPCBLayer_In29.Cu=Gray 3
+ColorPCBLayer_In30.Cu=Blue 2
+ColorPCBLayer_B.Cu=Green 2
+ColorPCBLayer_B.Adhes=Blue 2
+ColorPCBLayer_F.Adhes=Magenta 2
+ColorPCBLayer_B.Paste=Cyan 3
+ColorPCBLayer_F.Paste=Red 2
+ColorPCBLayer_B.SilkS=Magenta 2
+ColorPCBLayer_F.SilkS=Cyan 2
+ColorPCBLayer_B.Mask=Brown 2
+ColorPCBLayer_F.Mask=Magenta 2
+ColorPCBLayer_Dwgs.User=Gray 3
+ColorPCBLayer_Cmts.User=Blue 2
+ColorPCBLayer_Eco1.User=Green 2
+ColorPCBLayer_Eco2.User=Yellow 3
+ColorPCBLayer_Edge.Cuts=Yellow 3
+ColorPCBLayer_Margin=Magenta 3
+ColorPCBLayer_B.CrtYd=Yellow 3
+ColorPCBLayer_F.CrtYd=Gray 2
+ColorPCBLayer_B.Fab=Red 2
+ColorPCBLayer_F.Fab=Yellow 3
+ColorTxtFrontEx=Gray 3
+ColorTxtBackEx=Blue 2
+ColorTxtInvisEx=Gray 2
+ColorAnchorEx=Blue 2
+ColorPadBackEx=Green 2
+ColorPadFrontEx=Red 2
+ColorViaThruEx=Gray 3
+ColorViaBBlindEx=Brown 2
+ColorViaMicroEx=Cyan 2
+ColorNonPlatedEx=Yellow 3
+ColorRatsEx=White
+ShowMRa=1
+TwoSegT=1
+SegmPcb45Only=1
+PcbMagPadOpt=1
+PcbMagTrackOpt=1
+MiddleButtonPAN=1
+MiddleBtnPANLimited=0
+FootprintWizardPos_x=384
+FootprintWizardPos_y=514
+FootprintWizardSize_x=2272
+FootprintWizardSize_y=1000
+FootprintWizardMaximized=0
+FootprintWizardPerspective=layout2|name=m_mainToolBar;caption=;state=139632;dir=1;layer=10;row=0;pos=0;prop=100000;bestw=393;besth=36;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=m_parametersPanel;caption=;state=508;dir=4;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=360;minh=180;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=m_buildMessageBox;caption=;state=508;dir=4;layer=0;row=0;pos=1;prop=100000;bestw=104;besth=73;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrame;caption=;state=256;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=382;besth=63;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131388;dir=3;layer=1;row=0;pos=0;prop=100000;bestw=400;besth=68;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,10,0)=36|dock_size(4,0,0)=513|dock_size(5,0,0)=300|dock_size(3,1,0)=68|
+FootprintWizardMostRecentlyUsedPath=
+FootprintWizardShowGrid=1
+FootprintWizardGridColor=rgb(132, 132, 132)
+FootprintWizard_LastGridSize=0
+FootprintWizardFirstRunShown=0
+FootprintWizardDevelMaxUndoItems=0
+FootprintWizardGalDisplayOptionsOpenGLAntialiasingMode=0
+FootprintWizardGalDisplayOptionsGridStyle=0
+FootprintWizardGalDisplayOptionsGridLineWidth=0.5
+FootprintWizardGalDisplayOptionsGridMaxDensity=10
+FootprintWizardGalDisplayOptionsGridAxesEnabled=0
+FootprintWizardGalDisplayOptionsCursorFullscreen=0
+FootprintWizardGalDisplayOptionsForceDisplayCursor=0
+Fpwizard_auiPerspective=layout2|name=m_mainToolBar;caption=;state=139632;dir=1;layer=10;row=0;pos=0;prop=100000;bestw=393;besth=36;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=m_parametersPanel;caption=;state=508;dir=4;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=360;minh=180;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=m_buildMessageBox;caption=;state=508;dir=4;layer=0;row=0;pos=1;prop=100000;bestw=104;besth=73;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrame;caption=;state=256;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=382;besth=63;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131388;dir=3;layer=1;row=0;pos=0;prop=100000;bestw=400;besth=68;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,10,0)=36|dock_size(4,0,0)=513|dock_size(5,0,0)=300|dock_size(3,1,0)=68|
+ModEditColor4DPCBLayer_F.Cu=rgb(132, 0, 0)
+ModEditColor4DPCBLayer_In1.Cu=rgb(194, 194, 0)
+ModEditColor4DPCBLayer_In2.Cu=rgb(194, 0, 194)
+ModEditColor4DPCBLayer_In3.Cu=rgb(194, 0, 0)
+ModEditColor4DPCBLayer_In4.Cu=rgb(0, 132, 132)
+ModEditColor4DPCBLayer_In5.Cu=rgb(0, 132, 0)
+ModEditColor4DPCBLayer_In6.Cu=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_In7.Cu=rgb(132, 132, 132)
+ModEditColor4DPCBLayer_In8.Cu=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_In9.Cu=rgb(194, 194, 194)
+ModEditColor4DPCBLayer_In10.Cu=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_In11.Cu=rgb(132, 0, 0)
+ModEditColor4DPCBLayer_In12.Cu=rgb(132, 132, 0)
+ModEditColor4DPCBLayer_In13.Cu=rgb(194, 194, 194)
+ModEditColor4DPCBLayer_In14.Cu=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_In15.Cu=rgb(0, 132, 0)
+ModEditColor4DPCBLayer_In16.Cu=rgb(132, 0, 0)
+ModEditColor4DPCBLayer_In17.Cu=rgb(194, 194, 0)
+ModEditColor4DPCBLayer_In18.Cu=rgb(194, 0, 194)
+ModEditColor4DPCBLayer_In19.Cu=rgb(194, 0, 0)
+ModEditColor4DPCBLayer_In20.Cu=rgb(0, 132, 132)
+ModEditColor4DPCBLayer_In21.Cu=rgb(0, 132, 0)
+ModEditColor4DPCBLayer_In22.Cu=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_In23.Cu=rgb(132, 132, 132)
+ModEditColor4DPCBLayer_In24.Cu=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_In25.Cu=rgb(194, 194, 194)
+ModEditColor4DPCBLayer_In26.Cu=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_In27.Cu=rgb(132, 0, 0)
+ModEditColor4DPCBLayer_In28.Cu=rgb(132, 132, 0)
+ModEditColor4DPCBLayer_In29.Cu=rgb(194, 194, 194)
+ModEditColor4DPCBLayer_In30.Cu=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_B.Cu=rgb(0, 132, 0)
+ModEditColor4DPCBLayer_B.Adhes=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_F.Adhes=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_B.Paste=rgb(0, 194, 194)
+ModEditColor4DPCBLayer_F.Paste=rgb(132, 0, 0)
+ModEditColor4DPCBLayer_B.SilkS=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_F.SilkS=rgb(0, 132, 132)
+ModEditColor4DPCBLayer_B.Mask=rgb(132, 132, 0)
+ModEditColor4DPCBLayer_F.Mask=rgb(132, 0, 132)
+ModEditColor4DPCBLayer_Dwgs.User=rgb(194, 194, 194)
+ModEditColor4DPCBLayer_Cmts.User=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_Eco1.User=rgb(0, 132, 0)
+ModEditColor4DPCBLayer_Eco2.User=rgb(194, 194, 0)
+ModEditColor4DPCBLayer_Edge.Cuts=rgb(194, 194, 0)
+ModEditColor4DPCBLayer_Margin=rgb(194, 0, 194)
+ModEditColor4DPCBLayer_B.CrtYd=rgb(132, 132, 132)
+ModEditColor4DPCBLayer_F.CrtYd=rgb(194, 194, 194)
+ModEditColor4DPCBLayer_B.Fab=rgb(0, 0, 132)
+ModEditColor4DPCBLayer_F.Fab=rgb(132, 132, 132)
+ModEditColor4DTxtFrontEx=rgb(194, 194, 194)
+ModEditColor4DTxtBackEx=rgb(0, 0, 132)
+ModEditColor4DTxtInvisEx=rgb(132, 132, 132)
+ModEditColor4DPadBackEx=rgb(0, 132, 0)
+ModEditColor4DAnchorEx=rgb(0, 0, 132)
+ModEditColor4DPadFrontEx=rgb(132, 0, 0)
+ModEditColor4DPadThruHoleEx=rgb(194, 194, 0)
+ModEditColor4DNonPlatedEx=rgb(194, 194, 0)
+ModEditColor4DPCBBackground=rgb(0, 0, 0)
+ModEditColor4DPCBCursor=rgb(255, 255, 255)
+ModEditColor4DAuxItems=rgb(255, 255, 255)
+ModEditColor4DWorksheet=rgb(72, 0, 0)
+ModEditColor4DGrid=rgb(132, 132, 132)
+ModEditFramePos_x=72
+ModEditFramePos_y=27
+ModEditFrameSize_x=1848
+ModEditFrameSize_y=1053
+ModEditFrameMaximized=1
+ModEditFramePerspective=layout2|name=MainToolbar;caption=;state=139644;dir=1;layer=6;row=0;pos=0;prop=100000;bestw=982;besth=38;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131452;dir=3;layer=6;row=0;pos=0;prop=100000;bestw=400;besth=34;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=OptToolbar;caption=;state=139596;dir=4;layer=3;row=0;pos=0;prop=100000;bestw=36;besth=366;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Footprints;caption=Libraries;state=2044;dir=4;layer=1;row=0;pos=0;prop=100000;bestw=552;besth=-1;minw=250;minh=400;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=ToolsToolbar;caption=;state=139596;dir=2;layer=1;row=0;pos=0;prop=100000;bestw=36;besth=418;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=LayersManager;caption=Layers Manager;state=1532;dir=2;layer=3;row=0;pos=0;prop=100000;bestw=188;besth=32;minw=188;minh=32;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=188;floath=32|name=DrawFrame;caption=;state=1022;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=387;besth=144;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrameGal;caption=;state=1020;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=1112;besth=731;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,6,0)=38|dock_size(3,6,0)=34|dock_size(4,3,0)=36|dock_size(4,1,0)=554|dock_size(2,1,0)=36|dock_size(2,3,0)=188|dock_size(5,0,0)=554|
+ModEditFrameMostRecentlyUsedPath=
+ModEditFrameShowGrid=1
+ModEditFrameGridColor=rgb(132, 132, 132)
+ModEditFrame_LastGridSize=16
+ModEditFrameFirstRunShown=0
+ModEditFrameDevelMaxUndoItems=0
+ModEditFrameGalDisplayOptionsOpenGLAntialiasingMode=0
+ModEditFrameGalDisplayOptionsGridStyle=0
+ModEditFrameGalDisplayOptionsGridLineWidth=0.5
+ModEditFrameGalDisplayOptionsGridMaxDensity=10
+ModEditFrameGalDisplayOptionsGridAxesEnabled=1
+ModEditFrameGalDisplayOptionsCursorFullscreen=0
+ModEditFrameGalDisplayOptionsForceDisplayCursor=0
+ModEditFramePcbUserGrid_X=0.254
+ModEditFramePcbUserGrid_Y=0.254
+ModEditFramePcbUserGrid_Unit=1
+ModEditFrameDiPadFi=1
+ModEditFrameDiViaFi=1
+ModEditFrameDiPadNu=1
+ModEditFrameDiModEd=1
+ModEditFrameDiModTx=1
+ModEditFrameFastGrid1=0
+ModEditFrameFastGrid2=0
+FpEditorUnits=1
+FpEditorDisplayPolarCoords=0
+FpEditorPadDisplayMode=1
+FpEditorGraphicLinesDisplayMode=1
+FpEditorTextsDisplayMode=1
+FpEditorTextsRefDefaultText=REF**
+FpEditorGrlineWidth=0.15
+FpEditorTextsDefaultSizeH=1
+FpEditorTextsDefaultSizeV=1
+FpEditorTextsDefaultThickness=0.15
+FpEditorRefDefaultText=REF**
+FpEditorRefDefaultVisibility=1
+FpEditorRefDefaultLayer=37
+FpEditorValueDefaultText=
+FpEditorValueDefaultVisibility=1
+FpEditorValueDefaultLayer=49
+ModViewFramePos_x=72
+ModViewFramePos_y=27
+ModViewFrameSize_x=2488
+ModViewFrameSize_y=1413
+ModViewFrameMaximized=1
+ModViewFramePerspective=layout2|name=MainToolbar;caption=;state=139644;dir=1;layer=6;row=0;pos=0;prop=100000;bestw=779;besth=38;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131452;dir=3;layer=6;row=0;pos=0;prop=100000;bestw=400;besth=34;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Libraries;caption=;state=1020;dir=4;layer=2;row=0;pos=0;prop=100000;bestw=200;besth=-1;minw=100;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Footprints;caption=;state=1020;dir=4;layer=1;row=0;pos=0;prop=100000;bestw=300;besth=-1;minw=100;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrame;caption=;state=1022;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=387;besth=144;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrameGal;caption=;state=1020;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=1835;besth=1040;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,6,0)=38|dock_size(3,6,0)=34|dock_size(4,2,0)=202|dock_size(4,1,0)=302|dock_size(5,0,0)=389|
+ModViewFrameMostRecentlyUsedPath=
+ModViewFrameShowGrid=1
+ModViewFrameGridColor=rgb(132, 132, 132)
+ModViewFrame_LastGridSize=1
+ModViewFrameFirstRunShown=0
+ModViewFrameDevelMaxUndoItems=0
+ModViewFrameGalDisplayOptionsOpenGLAntialiasingMode=0
+ModViewFrameGalDisplayOptionsGridStyle=0
+ModViewFrameGalDisplayOptionsGridLineWidth=0.5
+ModViewFrameGalDisplayOptionsGridMaxDensity=10
+ModViewFrameGalDisplayOptionsGridAxesEnabled=1
+ModViewFrameGalDisplayOptionsCursorFullscreen=0
+ModViewFrameGalDisplayOptionsForceDisplayCursor=0
+import_last_path=
+FpWizardListWidth=588
+FpWizardListHeight=482
+Viewer3DFrameNamePos_x=72
+Viewer3DFrameNamePos_y=27
+Viewer3DFrameNameSize_x=2488
+Viewer3DFrameNameSize_y=1413
+Viewer3DFrameNameMaximized=1
+Viewer3DFrameNamePerspective=layout2|name=MainToolbar;caption=;state=139644;dir=1;layer=6;row=0;pos=0;prop=100000;bestw=735;besth=36;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=DrawFrame;caption=;state=1020;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,6,0)=36|dock_size(5,0,0)=22|
+Viewer3DFrameNameMostRecentlyUsedPath=
+BgColor_Red=0.4
+BgColor_Green=0.4
+BgColor_Blue=0.5
+BgColor_Red_Top=0.8
+BgColor_Green_Top=0.8
+BgColor_Blue_Top=0.9
+SMaskColor_Red=0.0784314
+SMaskColor_Green=0.2
+SMaskColor_Blue=0.141176
+SPasteColor_Red=0.501961
+SPasteColor_Green=0.501961
+SPasteColor_Blue=0.501961
+SilkColor_Red=0.9
+SilkColor_Green=0.9
+SilkColor_Blue=0.9
+CopperColor_Red=0.7
+CopperColor_Green=0.612157
+CopperColor_Blue=0
+BoardBodyColor_Red=0.2
+BoardBodyColor_Green=0.168627
+BoardBodyColor_Blue=0.0862745
+ShowRealisticMode=1
+MousewheelPAN3D=0
+RenderEngine=0
+Render_Material=0
+Render_OGL_ShowCopperThickness=1
+Render_OGL_ShowModelBoudingBoxes=0
+Render_RAY_Shadows=1
+Render_RAY_Backfloor=1
+Render_RAY_Refractions=1
+Render_RAY_Reflections=1
+Render_RAY_PostProcess=1
+Render_RAY_AntiAliasing=1
+Render_RAY_ProceduralTextures=1
+ShowAxis=1
+ShowGrid3D=0
+ShowFootprints_Normal=1
+ShowFootprints_Insert=1
+ShowFootprints_Virtual=1
+ShowZones=1
+ShowAdhesiveLayers=1
+ShowSilkScreenLayers=1
+ShowSolderMasLayers=1
+ShowSolderPasteLayers=1
+ShowCommentsLayers=1
+ShowEcoLayers=1
+ShowBoardBody=1
+SilentMode=0
+NetlistDeleteSinglePadNets=1
+NetlistReportFilterMsg=15
+TestMissingCourtyard=0
+TestFootprintCourtyard=0
+RefillZonesBeforeDrc=0
+Zone_Ouline_Hatch_Opt=2
+Zone_Filter_Opt=Net-*
+Zone_Clearance=20
+Zone_Thickness=10
+Zone_TH_Gap=20
+Zone_TH_Copper_Width=39.37007874015748
+PcbIconScale=-1
+PrintModuleScale=3
+PrintMonochrome=1
+ModEditColor4DPCBLayer_Rescue=rgb(132, 0, 0)
+ActionPluginButtons=
+ModEditFrameUnits=1
+FpEditorSilkLineWidth=0.15
+FpEditorSilkTextSizeH=1
+FpEditorSilkTextSizeV=1
+FpEditorSilkTextThickness=0.15
+FpEditorSilkTextItalic=0
+FpEditorCopperLineWidth=0.12
+FpEditorCopperTextSizeV=1.5
+FpEditorCopperTextSizeH=1.5
+FpEditorCopperTextThickness=0.3
+FpEditorCopperTextItalic=0
+FpEditorEdgeCutLineWidth=0.12
+FpEditorCourtyardLineWidth=0.12
+FpEditorOthersLineWidth=0.12
+FpEditorOthersTextSizeV=1
+FpEditorOthersTextSizeH=1
+FpEditorOthersTextSizeThickness=0.15
+FpEditorOthersTextItalic=0
+ModeditLibWidth=552
+NetlistUpdateFootprints=1
+NetlistDeleteShortingTracks=0
+NetlistDeleteExtraFootprints=1
+FootprintTextShownColumns=0 1 2 3 4 5 6
+DrcTrackToZoneTest=0
+ModViewFrameUnits=1
+ModViewFrameModalPcbUserGrid_X=0.254
+ModViewFrameModalPcbUserGrid_Y=0.254
+ModViewFrameModalPcbUserGrid_Unit=1
+ModViewFrameModalDiPadFi=1
+ModViewFrameModalDiViaFi=1
+ModViewFrameModalDiPadNu=1
+ModViewFrameModalDiModEd=1
+ModViewFrameModalDiModTx=1
+ModViewFrameModalFastGrid1=0
+ModViewFrameModalFastGrid2=0
+ModViewFrameAutoZoom=1
+ModViewFrameZoom=17.1134
+Color4DPCBLayer_Rescue=rgb(132, 0, 0)
+MagneticGraphics=1
+PcbFrameUnits=1
+PrintScale=1
+PrintPageFrame=1
+PlotLayer_0=1
+PlotLayer_1=0
+PlotLayer_2=0
+PlotLayer_3=0
+PlotLayer_4=0
+PlotLayer_5=0
+PlotLayer_6=0
+PlotLayer_7=0
+PlotLayer_8=0
+PlotLayer_9=0
+PlotLayer_10=0
+PlotLayer_11=0
+PlotLayer_12=0
+PlotLayer_13=0
+PlotLayer_14=0
+PlotLayer_15=0
+PlotLayer_16=0
+PlotLayer_17=0
+PlotLayer_18=0
+PlotLayer_19=0
+PlotLayer_20=0
+PlotLayer_21=0
+PlotLayer_22=0
+PlotLayer_23=0
+PlotLayer_24=0
+PlotLayer_25=0
+PlotLayer_26=0
+PlotLayer_27=0
+PlotLayer_28=0
+PlotLayer_29=0
+PlotLayer_30=0
+PlotLayer_31=1
+PlotLayer_32=0
+PlotLayer_33=0
+PlotLayer_34=1
+PlotLayer_35=1
+PlotLayer_36=1
+PlotLayer_37=1
+PlotLayer_38=1
+PlotLayer_39=1
+PlotLayer_40=0
+PlotLayer_41=0
+PlotLayer_42=0
+PlotLayer_43=0
+PlotLayer_44=1
+PlotLayer_45=0
+PlotLayer_46=0
+PlotLayer_47=0
+PlotLayer_48=0
+PlotLayer_49=0
+PlotLayer_50=0
+PrintPadsDrillOpt=2
+PrintSinglePage=0
+PlotXFineScaleAdj=1
+PlotYFineScaleAdj=1
+CheckZonesBeforePlotting=1
+PSPlotFineWidthAdj=0
+DrillZerosFormat=0
+DrillMirrorYOpt=0
+DrillMergePTHNPTH=0
+DrillMinHeader=0
+DrillUnit=1
+DrillMapFileType=1
+DrillFileType=0
+OvalHolesRouteMode=1
+PlaceFileUnits=1
+PlaceFileOpts=0
+PlaceFileFormat=1
+LibFootprintTextShownColumns=0 1 2 3 4 5 6

+ 96 - 0
electronics/scripts/config/policy.xml

@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE policymap [
+  <!ELEMENT policymap (policy)+>
+  <!ATTLIST policymap xmlns CDATA #FIXED ''>
+  <!ELEMENT policy EMPTY>
+  <!ATTLIST policy xmlns CDATA #FIXED '' domain NMTOKEN #REQUIRED
+    name NMTOKEN #IMPLIED pattern CDATA #IMPLIED rights NMTOKEN #IMPLIED
+    stealth NMTOKEN #IMPLIED value CDATA #IMPLIED>
+]>
+<!--
+  Configure ImageMagick policies.
+
+  Domains include system, delegate, coder, filter, path, or resource.
+
+  Rights include none, read, write, execute and all.  Use | to combine them,
+  for example: "read | write" to permit read from, or write to, a path.
+
+  Use a glob expression as a pattern.
+
+  Suppose we do not want users to process MPEG video images:
+
+    <policy domain="delegate" rights="none" pattern="mpeg:decode" />
+
+  Here we do not want users reading images from HTTP:
+
+    <policy domain="coder" rights="none" pattern="HTTP" />
+
+  The /repository file system is restricted to read only.  We use a glob
+  expression to match all paths that start with /repository:
+
+    <policy domain="path" rights="read" pattern="/repository/*" />
+
+  Lets prevent users from executing any image filters:
+
+    <policy domain="filter" rights="none" pattern="*" />
+
+  Any large image is cached to disk rather than memory:
+
+    <policy domain="resource" name="area" value="1GP"/>
+
+  Define arguments for the memory, map, area, width, height and disk resources
+  with SI prefixes (.e.g 100MB).  In addition, resource policies are maximums
+  for each instance of ImageMagick (e.g. policy memory limit 1GB, -limit 2GB
+  exceeds policy maximum so memory limit is 1GB).
+
+  Rules are processed in order.  Here we want to restrict ImageMagick to only
+  read or write a small subset of proven web-safe image types:
+
+    <policy domain="delegate" rights="none" pattern="*" />
+    <policy domain="filter" rights="none" pattern="*" />
+    <policy domain="coder" rights="none" pattern="*" />
+    <policy domain="coder" rights="read|write" pattern="{GIF,JPEG,PNG,WEBP}" />
+-->
+<policymap>
+  <!-- <policy domain="system" name="shred" value="2"/> -->
+  <!-- <policy domain="system" name="precision" value="6"/> -->
+  <!-- <policy domain="system" name="memory-map" value="anonymous"/> -->
+  <!-- <policy domain="system" name="max-memory-request" value="256MiB"/> -->
+  <!-- <policy domain="resource" name="temporary-path" value="/tmp"/> -->
+  <policy domain="resource" name="memory" value="256MiB"/>
+  <policy domain="resource" name="map" value="512MiB"/>
+  <policy domain="resource" name="width" value="16KP"/>
+  <policy domain="resource" name="height" value="16KP"/>
+  <!-- <policy domain="resource" name="list-length" value="128"/> -->
+  <policy domain="resource" name="area" value="128MB"/>
+  <policy domain="resource" name="disk" value="1GiB"/>
+  <!-- <policy domain="resource" name="file" value="768"/> -->
+  <!-- <policy domain="resource" name="thread" value="4"/> -->
+  <!-- <policy domain="resource" name="throttle" value="0"/> -->
+  <!-- <policy domain="resource" name="time" value="3600"/> -->
+  <!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
+  <!-- <policy domain="module" rights="none" pattern="{PS,PDF,XPS}" /> -->
+  <!-- <policy domain="delegate" rights="none" pattern="HTTPS" /> -->
+  <!-- <policy domain="path" rights="none" pattern="@*" /> -->
+  <!-- <policy domain="cache" name="memory-map" value="anonymous"/> -->
+  <!-- <policy domain="cache" name="synchronize" value="True"/> -->
+  <!-- <policy domain="cache" name="shared-secret" value="passphrase" stealth="true"/> -->
+  <!-- <policy domain="system" name="pixel-cache-memory" value="anonymous"/> -->
+  <!-- <policy domain="system" name="shred" value="2"/> -->
+  <!-- <policy domain="system" name="precision" value="6"/> -->
+  <!-- not needed due to the need to use explicitly by mvg: -->
+  <!-- <policy domain="delegate" rights="none" pattern="MVG" /> -->
+  <!-- use curl -->
+  <policy domain="delegate" rights="none" pattern="URL" />
+  <policy domain="delegate" rights="none" pattern="HTTPS" />
+  <policy domain="delegate" rights="none" pattern="HTTP" />
+  <!-- in order to avoid to get image with password text -->
+  <policy domain="path" rights="none" pattern="@*"/>
+  <!-- disable ghostscript format types -->
+  <policy domain="coder" rights="none" pattern="PS" />
+  <policy domain="coder" rights="none" pattern="PS2" />
+  <policy domain="coder" rights="none" pattern="PS3" />
+  <policy domain="coder" rights="none" pattern="EPS" />
+  <policy domain="coder" rights="read|write" pattern="PDF" />
+  <policy domain="coder" rights="none" pattern="XPS" />
+</policymap>

+ 28 - 0
electronics/scripts/dependencies.sh

@@ -0,0 +1,28 @@
+#!/bin/bash
+set -e
+
+if [[ -z "${GITHUB_WORKFLOW}" ]]; then
+    >&2 echo "Aborting! This script is meant to be run in CI (Github Actions) only. It may modify/damage your system configuration if run outside of CI."
+    exit 1
+fi
+
+set -v
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+
+sudo add-apt-repository --yes ppa:kicad/kicad-5.1-releases
+sudo apt-get update -qq
+sudo DEBIAN_FRONTEND=noninteractive apt-get install -y kicad inkscape poppler-utils xdotool recordmydesktop python3-dev python3-pip
+
+# KiKit is installed via pinned git revision to get "new" CLI with support for V-Cuts layer specification. TODO: switch to release version once landed.
+sudo python3 -m pip install psutil kikit==1.0.2 xvfbwrapper
+
+mkdir -p ~/.config/kicad
+cp /usr/share/kicad/template/fp-lib-table ~/.config/kicad/
+cp /usr/share/kicad/template/sym-lib-table ~/.config/kicad/
+
+cp "$DIR/config/eeschema" ~/.config/kicad/
+cp "$DIR/config/pcbnew" ~/.config/kicad/
+
+# Install ImageMagick policy that allows PDF conversion (safe in CI because we control all inputs/outputs)
+sudo cp "$DIR/config/policy.xml" /etc/ImageMagick-6/policy.xml

+ 199 - 0
electronics/scripts/export_3d.py

@@ -0,0 +1,199 @@
+#!/usr/bin/env python3
+
+#   Copyright 2015-2021 Scott Bezek and the splitflap contributors
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+import argparse
+import logging
+import os
+import psutil
+import sys
+import time
+
+electronics_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+repo_root = os.path.dirname(electronics_root)
+sys.path.append(repo_root)
+
+from util import file_util
+from export_util import (
+    patch_config,
+    PopenContext,
+    versioned_file,
+    xdotool,
+    wait_for_window,
+    recorded_xvfb,
+)
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+RENDER_TIMEOUT = 10 * 60
+
+
+def _wait_for_pcbnew_idle():
+    start = time.time()
+    while time.time() < start + RENDER_TIMEOUT:
+        for proc in psutil.process_iter():
+            if proc.name() == 'pcbnew':
+                cpu = proc.cpu_percent(interval=1)
+                print(f'CPU={cpu}', flush=True)
+                if cpu < 5:
+                    print('Render took %d seconds' % (time.time() - start))
+                    return
+        time.sleep(1)
+    raise RuntimeError('Timeout waiting for pcbnew to go idle')
+
+
+def _zoom_in():
+    xdotool([
+        'click',
+        '4',
+    ])
+    time.sleep(0.2)
+
+
+def _invoke_view_option(index):
+    command = ['key', 'alt+v'] + ['Down']*index + ['Return']
+    xdotool(command)
+    time.sleep(2)
+
+
+_transforms = {
+    'z+': ('Zoom in', _zoom_in),
+    'rx+': ('Rotate X Clockwise', lambda: _invoke_view_option(4)),
+    'rx-': ('Rotate X Counterclockwise', lambda: _invoke_view_option(5)),
+    'ry+': ('Rotate Y Clockwise', lambda: _invoke_view_option(6)),
+    'ry-': ('Rotate Y Counterclockwise', lambda: _invoke_view_option(7)),
+    'rz+': ('Rotate Z Clockwise', lambda: _invoke_view_option(8)),
+    'rz-': ('Rotate Z Counterclockwise', lambda: _invoke_view_option(9)),
+    'ml': ('Move left', lambda: _invoke_view_option(10)),
+    'mr': ('Move right', lambda: _invoke_view_option(11)),
+    'mu': ('Move up', lambda: _invoke_view_option(12)),
+    'md': ('Move down', lambda: _invoke_view_option(13)),
+}
+
+
+def _pcbnew_export_3d(output_file, width, height, transforms):
+    if os.path.exists(output_file):
+        os.remove(output_file)
+
+    wait_for_window('pcbnew', 'Pcbnew ', additional_commands=['windowfocus'])
+
+    time.sleep(1)
+
+    logger.info('Open 3d viewer')
+    xdotool(['key', 'alt+3'])
+
+    wait_for_window('3D Viewer', '3D Viewer', additional_commands=['windowfocus'])
+
+    time.sleep(3)
+
+    # Maximize window
+    xdotool(['search', '--name', '3D Viewer', 'windowmove', '0', '0'])
+    xdotool(['search', '--name', '3D Viewer', 'windowsize', str(width), str(height)])
+
+    time.sleep(3)
+
+    for transform in transforms:
+        description, func = _transforms[transform]
+        logger.info(description)
+        func()
+
+    logger.info('Wait for rendering...')
+
+    _wait_for_pcbnew_idle()
+
+    time.sleep(5)
+
+    logger.info('Export current view')
+    xdotool([
+        'key',
+        'alt+f',
+        'Return',
+    ])
+
+    logger.info('Enter build output filename')
+    xdotool([
+        'key',
+        'ctrl+a',
+    ])
+    xdotool(['type', output_file])
+
+    logger.info('Save')
+    xdotool(['key', 'Return'])
+
+    logger.info('Wait before shutdown')
+    time.sleep(2)
+
+
+def export_3d(filename, suffix, width, height, transforms, raytrace, virtual, color_soldermask, color_silk, color_board, color_copper):
+    pcb_file = os.path.abspath(filename)
+    output_dir = os.path.join(electronics_root, 'build')
+    file_util.mkdir_p(output_dir)
+
+    screencast_output_file = os.path.join(output_dir, 'export_3d_screencast.ogv')
+
+    name, _ = os.path.splitext(os.path.basename(pcb_file))
+    if suffix:
+        name = name + '-' + suffix
+    output_file = os.path.join(output_dir, f'{name}-3d.png')
+
+    settings = {
+        'canvas_type': '1',
+        'RenderEngine': '1' if raytrace else '0',
+        'ShowFootprints_Virtual': '1' if virtual else '0',
+        'Render_RAY_Backfloor': '0',
+        'Render_RAY_ProceduralTextures': '0',
+    }
+    def apply_color(name, values):
+        components = ['Red', 'Green', 'Blue']
+        for component, value in zip(components, values):
+            settings[name + '_' + component] = str(value)
+
+    apply_color('SMaskColor', color_soldermask)
+    apply_color('SilkColor', color_silk)
+    apply_color('BoardBodyColor', color_board)
+    apply_color('CopperColor', color_copper)
+
+    with patch_config(os.path.expanduser('~/.config/kicad/pcbnew'), settings):
+        with versioned_file(pcb_file):
+            with recorded_xvfb(screencast_output_file, width=width, height=height, colordepth=24):
+                with PopenContext(['pcbnew', pcb_file], close_fds=True) as pcbnew_proc:
+                    _pcbnew_export_3d(output_file, width, height, transforms)
+                    pcbnew_proc.terminate()
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser()
+    parser.add_argument('pcb')
+    parser.add_argument('--suffix', default='')
+    parser.add_argument('--width', type=int, default=2560)
+    parser.add_argument('--height', type=int, default=1440)
+    parser.add_argument('--skip-raytrace', action='store_true')
+    parser.add_argument('--skip-virtual', action='store_true', help='Don\'t render virtual footprints')
+    parser.add_argument('--color-soldermask', type=float, nargs=3, help='Soldermask color as 3 floats from 0-1', default=[0, 0, 0])
+    parser.add_argument('--color-silk', type=float, nargs=3, help='Silkscreen color as 3 floats from 0-1', default=[1, 1, 1])
+    parser.add_argument('--color-board', type=float, nargs=3, help='PCB substrate color as 3 floats from 0-1', default=[0.764705882, 0.729411765, 0.607843137])
+    parser.add_argument('--color-copper', type=float, nargs=3, help='Copper color as 3 floats from 0-1', default=[0.7, 0.7, 0.7])
+
+    # Use subparsers to for an optional nargs="*" choices argument (workaround for https://bugs.python.org/issue9625)
+    subparsers = parser.add_subparsers(dest='which')
+    transform_parser = subparsers.add_parser('transform', help='Apply one or more transforms before capturing image')
+    transform_parser.add_argument('transform', nargs='+', choices=list(_transforms.keys()))
+
+    args = parser.parse_args()
+
+    transforms = args.transform if args.which == 'transform' else []
+
+    export_3d(args.pcb, args.suffix, args.width, args.height, transforms, not args.skip_raytrace, not args.skip_virtual, args.color_soldermask, args.color_silk, args.color_board, args.color_copper)

+ 70 - 0
electronics/scripts/export_jlcpcb.py

@@ -0,0 +1,70 @@
+#!/usr/bin/env python3
+
+#   Copyright 2021 Scott Bezek and the splitflap contributors
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+import argparse
+import logging
+import os
+import subprocess
+import sys
+
+electronics_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+repo_root = os.path.dirname(electronics_root)
+sys.path.append(repo_root)
+
+from util import file_util
+from export_util import (
+    versioned_file,
+)
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+
+def export_jlcpcb(pcb, schematic, alt_fields):
+    pcb_file = os.path.abspath(pcb)
+
+    output_dir = os.path.join(electronics_root, 'build', os.path.splitext(os.path.basename(pcb_file))[0] + '-jlc')
+    file_util.mkdir_p(output_dir)
+
+    with versioned_file(pcb_file):
+        command = [
+            'kikit',
+            'fab',
+            'jlcpcb',
+        ]
+        if schematic is not None:
+            schematic_file = os.path.abspath(schematic)
+            command += [
+                '--assembly',
+                '--schematic',
+                schematic_file,
+                '--field',
+            ]
+            command.append(','.join(alt_fields + ['LCSC']))
+        command += [
+            pcb_file,
+            output_dir,
+        ]
+        subprocess.check_call(command)
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser()
+    parser.add_argument('pcb')
+    parser.add_argument('--assembly-schematic')
+    parser.add_argument('--alt-fields', nargs='+')
+    args = parser.parse_args()
+    export_jlcpcb(args.pcb, args.assembly_schematic, args.alt_fields)

+ 138 - 0
electronics/scripts/export_util.py

@@ -0,0 +1,138 @@
+#!/usr/bin/env python
+
+#   Copyright 2015-2016 Scott Bezek and the splitflap contributors
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+import logging
+import os
+import re
+import subprocess
+import sys
+import tempfile
+import time
+
+from contextlib import contextmanager
+
+electronics_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+repo_root = os.path.dirname(electronics_root)
+sys.path.append(repo_root)
+
+from xvfbwrapper import Xvfb
+from util import file_util, rev_info
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+class PopenContext(subprocess.Popen):
+    def __enter__(self):
+        return self
+    def __exit__(self, type, value, traceback):
+        if self.stdout:
+            self.stdout.close()
+        if self.stderr:
+            self.stderr.close()
+        if self.stdin:
+            self.stdin.close()
+        if type:
+            self.terminate()
+        # Wait for the process to terminate, to avoid zombies.
+        self.wait()
+
+def xdotool(command):
+    return subprocess.check_output(['xdotool'] + command)
+
+def wait_for_window(name, window_regex, additional_commands=None, timeout=10):
+    if additional_commands is not None:
+        commands = additional_commands
+    else:
+        commands = []
+
+    DELAY = 0.5
+    logger.info('Waiting for %s window...', name)
+    for i in range(int(timeout/DELAY)):
+        try:
+            xdotool(['search', '--name', window_regex] + commands)
+            logger.info('Found %s window', name)
+            return
+        except subprocess.CalledProcessError:
+            pass
+        time.sleep(DELAY)
+    raise RuntimeError('Timed out waiting for %s window' % name)
+
+@contextmanager
+def recorded_xvfb(video_filename, **xvfb_args):
+    with Xvfb(**xvfb_args):
+        with PopenContext([
+                'recordmydesktop',
+                '--no-sound',
+                '--no-frame',
+                '--on-the-fly-encoding',
+                '-o', video_filename], close_fds=True) as screencast_proc: 
+            yield
+            screencast_proc.terminate()
+
+
+def get_versioned_contents(filename):
+    with open(filename, 'r') as f:
+        original_contents = f.read()
+        date = rev_info.git_date()
+        date_long = rev_info.git_date(short=False)
+        rev = rev_info.git_short_rev()
+        logger.info('Replacing placeholders with %s and %s' % (date, rev))
+        return original_contents, original_contents \
+            .replace('Date ""', 'Date "%s"' % date_long) \
+            .replace('DATE: YYYY-MM-DD TIME TZ', 'DATE: %s' % date_long) \
+            .replace('DATE: YYYY-MM-DD', 'DATE: %s' % date) \
+            .replace('Rev ""', 'Rev "%s"' % rev) \
+            .replace('COMMIT: deadbeef', 'COMMIT: %s' % rev)
+
+
+@contextmanager
+def versioned_file(filename):
+    original_contents, versioned_contents = get_versioned_contents(filename)
+    with open(filename, 'w') as temp_schematic:
+        logger.debug('Writing to %s', filename)
+        temp_schematic.write(versioned_contents)
+    try:
+        yield
+    finally:
+        with open(filename, 'w') as temp_schematic:
+            logger.debug('Restoring %s', filename)
+            temp_schematic.write(original_contents)
+
+
+@contextmanager
+def patch_config(filename, replacements):
+    if not os.path.exists(filename):
+        yield
+        return
+
+    with open(filename, 'r') as f:
+        original_contents = f.read()
+
+    new_contents = original_contents
+    for (key, value) in replacements.items():
+        pattern = '^' + re.escape(key) + '=(.*)$'
+        new_contents = re.sub(pattern, key + '=' + value, new_contents, flags=re.MULTILINE)
+
+    with open(filename, 'w') as f:
+        logger.debug('Writing to %s', filename)
+        f.write(new_contents)
+    try:
+        yield
+    finally:
+        with open(filename, 'w') as f:
+            logger.debug('Restoring %s', filename)
+            f.write(original_contents)
+

+ 80 - 0
electronics/scripts/generate_pdf.py

@@ -0,0 +1,80 @@
+#!/usr/bin/env python3
+#   Copyright 2015-2021 Scott Bezek and the splitflap contributors
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+import argparse
+import logging
+import os
+import pcbnew
+import shutil
+import subprocess
+
+from collections import namedtuple
+
+import pcb_util
+
+electronics_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+
+def run(pcb_file):
+    output_directory = os.path.join(electronics_root, 'build')
+    temp_dir = os.path.join(output_directory, 'temp_pdfs')
+    shutil.rmtree(temp_dir, ignore_errors=True)
+    try:
+        os.makedirs(temp_dir)
+        plot_to_directory(pcb_file, output_directory, temp_dir)
+    finally:
+        shutil.rmtree(temp_dir, ignore_errors=True)
+
+
+def plot_to_directory(pcb_file, output_directory, temp_dir):
+    board_name = os.path.splitext(os.path.basename(pcb_file))[0]
+
+    with pcb_util.get_plotter(pcb_file, temp_dir) as plotter:
+        plotter.plot_options.SetDrillMarksType(pcbnew.PCB_PLOT_PARAMS.NO_DRILL_SHAPE)
+        plotter.plot_options.SetExcludeEdgeLayer(False)
+
+        LayerDef = namedtuple('LayerDef', ['layer', 'mirror'])
+        layers = [
+            LayerDef(pcbnew.F_Cu, False),
+            LayerDef(pcbnew.B_Cu, True),
+            LayerDef(pcbnew.F_SilkS, False),
+            LayerDef(pcbnew.B_SilkS, True),
+            LayerDef(pcbnew.F_Mask, False),
+            LayerDef(pcbnew.B_Mask, True),
+            LayerDef(pcbnew.F_Paste, False),
+        ]
+
+        pdfs = []
+        for layer in layers:
+            plotter.plot_options.SetMirror(layer.mirror)
+            output_filename = plotter.plot(layer.layer, pcbnew.PLOT_FORMAT_PDF)
+            pdfs.append(output_filename)
+
+        _, map_file = plotter.plot_drill()
+        pdfs.append(map_file)
+
+        output_pdf_filename = os.path.join(output_directory, '%s-pcb-packet.pdf' % (board_name,))
+
+        command = ['pdfunite'] + pdfs + [output_pdf_filename]
+        subprocess.check_call(command)
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser('Generate a pdf of the PCB')
+    parser.add_argument('pcb_file')
+    args = parser.parse_args()
+    run(args.pcb_file)
+

+ 112 - 0
electronics/scripts/pcb_util.py

@@ -0,0 +1,112 @@
+#!/usr/bin/env python3
+#   Copyright 2015-2021 Scott Bezek and the splitflap contributors
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+import argparse
+import logging
+import os
+import pcbnew
+import tempfile
+
+from contextlib import contextmanager
+
+from export_util import (
+    get_versioned_contents
+)
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+@contextmanager
+def versioned_board(filename):
+    _, versioned_contents = get_versioned_contents(filename)
+    with tempfile.NamedTemporaryFile(suffix='.kicad_pcb', mode='w') as temp_pcb:
+        logger.debug('Writing to %s', temp_pcb.name)
+        temp_pcb.write(versioned_contents)
+        temp_pcb.flush()
+
+        logger.debug('Load board')
+        board = pcbnew.LoadBoard(temp_pcb.name)
+        yield board
+
+@contextmanager
+def get_plotter(pcb_filename, build_directory):
+    with versioned_board(pcb_filename) as board:
+        yield Plotter(board, build_directory)
+
+
+class Plotter(object):
+    def __init__(self, board, build_directory):
+        self.board = board
+        self.build_directory = build_directory
+        self.plot_controller = pcbnew.PLOT_CONTROLLER(board)
+        self.plot_options = self.plot_controller.GetPlotOptions()
+        self.plot_options.SetOutputDirectory(build_directory)
+
+        self.plot_options.SetPlotFrameRef(False)
+        self.plot_options.SetLineWidth(pcbnew.FromMM(0.35))
+        self.plot_options.SetScale(1)
+        self.plot_options.SetUseAuxOrigin(True)
+        self.plot_options.SetMirror(False)
+        self.plot_options.SetExcludeEdgeLayer(True)
+
+    def plot(self, layer, plot_format):
+        layer_name = self.board.GetLayerName(layer)
+        logger.info('Plotting layer %s (kicad layer=%r)', layer_name, layer)
+        self.plot_controller.SetLayer(layer)
+        self.plot_controller.OpenPlotfile(layer_name, plot_format , 'Plot')
+        output_filename = self.plot_controller.GetPlotFileName()
+        self.plot_controller.PlotLayer()
+        self.plot_controller.ClosePlot()
+        return output_filename
+
+    def plot_drill(self):
+        board_name = os.path.splitext(os.path.basename(self.board.GetFileName()))[0]
+        logger.info('Plotting drill file')
+        drill_writer = pcbnew.EXCELLON_WRITER(self.board)
+        drill_writer.SetMapFileFormat(pcbnew.PLOT_FORMAT_PDF)
+
+        mirror = False
+        minimalHeader = False
+        offset = pcbnew.wxPoint(0, 0)
+        merge_npth = True
+        drill_writer.SetOptions(mirror, minimalHeader, offset, merge_npth)
+
+        metric_format = True
+        drill_writer.SetFormat(metric_format)
+
+        generate_drill = True
+        generate_map = True
+        drill_writer.CreateDrillandMapFilesSet(self.build_directory, generate_drill, generate_map)
+
+        drill_file_name = os.path.join(
+            self.build_directory,
+            '%s.drl' % (board_name,)
+        )
+
+        map_file_name = os.path.join(
+            self.build_directory,
+            '%s-drl_map.pdf' % (board_name,)
+        )
+        return drill_file_name, map_file_name
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Test pcb util')
+    parser.add_argument('input_file', help='Input .kicad_pcb file')
+    args = parser.parse_args()
+    with versioned_board(args.input_file) as board:
+        logger.info('Loaded %s', board.GetFileName())
+        for module in board.GetModules():
+            logger.info('Module %s: %s', module.GetReference(), module.GetValue())

+ 68 - 0
electronics/view_base/view_base.kibot.yml

@@ -0,0 +1,68 @@
+kibot:
+  version: 1
+
+preflight:
+  check_zone_fills: true
+  run_drc: true
+  run_erc: true
+  update_xml: true
+
+outputs:
+  # - name: pdf
+  #   type: pdf_pcb_print
+  #   dir: pdf
+  #   options:
+  #     separated: true
+  #   layers:
+  #     - 'F.Cu'
+  #     - 'B.Cu'
+  #     - 'F.Paste'
+  #     - 'B.Paste'
+  #     - 'F.SilkS'
+  #     - 'B.SilkS'
+  #     - 'Edge.Cuts'
+
+  # - name: gerber
+  #   type: gerber
+  #   dir: gerber
+  #   layers:
+  #     - 'F.Cu'
+  #     - 'B.Cu'
+  #     - 'F.Paste'
+  #     - 'B.Paste'
+  #     - 'F.SilkS'
+  #     - 'B.SilkS'
+  #     - 'Edge.Cuts'
+
+  - name: ibom
+    comment: 'Interactive BOM'
+    type: ibom
+    options:
+      dark_mode: true
+      netlist_file: '%F.xml'
+      # extra_fields: 'LCSC'
+
+  - name: schematic
+    type: pdf_sch_print
+
+  # - name: 3d
+  #   type: render_3d
+  #   options:
+  #     no_virtual: true
+  #     view: 'top'
+  #     silk: '#111111'
+  #     solder_mask: '#ffffff'
+  #     board: '#C3BA9B'
+  #     copper: '#99967F'
+  #     zoom: 4
+  #     orthographic: true
+  #     ray_tracing: true
+  #     height: 1920
+  #     width: 1920
+
+  # - name: 3d_back
+  #   type: render_3d
+  #   extends: 3d
+  #   options:
+  #     view: 'bottom'
+  #     zoom: 3

Разлика између датотеке није приказан због своје велике величине
+ 320 - 200
electronics/view_base/view_base.kicad_pcb


+ 253 - 166
electronics/view_base/view_base.sch

@@ -484,7 +484,7 @@ U 1 1 61FCAA5B
 P 1500 3000
 F 0 "J2" H 1607 3867 50  0000 C CNN
 F 1 "USB_C_Receptacle_USB2.0" H 1607 3776 50  0000 C CNN
-F 2 "GCT_USB:USB4510" H 1650 3000 50  0001 C CNN
+F 2 "GCT_USB:USB4510_NoPaste" H 1650 3000 50  0001 C CNN
 F 3 "https://www.usb.org/sites/default/files/documents/usb_type-c.zip" H 1650 3000 50  0001 C CNN
 	1    1500 3000
 	1    0    0    -1  
@@ -1462,9 +1462,9 @@ Wire Wire Line
 Wire Wire Line
 	6900 3550 6900 3650
 Wire Wire Line
-	6900 3650 6300 3650
+	6900 3650 6800 3650
 Wire Wire Line
-	6300 2450 6900 2450
+	6300 2450 6800 2450
 Wire Wire Line
 	6900 2450 6900 2550
 Text Label 6300 2450 0    50   ~ 0
@@ -1477,8 +1477,6 @@ Text Label 7950 3350 2    50   ~ 0
 RTS
 Text Notes 6600 2300 0    50   ~ 0
 Reset/Boot via USB serial
-Wire Wire Line
-	12650 2800 12150 2800
 Text Label 12150 2800 0    50   ~ 0
 ESP32_EN
 Wire Wire Line
@@ -1509,8 +1507,6 @@ F 3 "~" H 11750 2500 50  0001 C CNN
 $EndComp
 Wire Wire Line
 	12650 2600 12100 2600
-Wire Wire Line
-	11550 2600 11550 2750
 Connection ~ 11750 2600
 Connection ~ 12100 2600
 Wire Wire Line
@@ -1543,12 +1539,12 @@ $EndComp
 $Comp
 L power:GND #PWR0127
 U 1 1 623D364A
-P 11550 2750
-F 0 "#PWR0127" H 11550 2500 50  0001 C CNN
-F 1 "GND" H 11555 2577 50  0000 C CNN
-F 2 "" H 11550 2750 50  0001 C CNN
-F 3 "" H 11550 2750 50  0001 C CNN
-	1    11550 2750
+P 11550 3100
+F 0 "#PWR0127" H 11550 2850 50  0001 C CNN
+F 1 "GND" H 11555 2927 50  0000 C CNN
+F 2 "" H 11550 3100 50  0001 C CNN
+F 3 "" H 11550 3100 50  0001 C CNN
+	1    11550 3100
 	1    0    0    -1  
 $EndComp
 Wire Wire Line
@@ -1656,8 +1652,6 @@ Text Label 9050 3500 0    50   ~ 0
 LCD_CS
 Text Label 9050 3600 0    50   ~ 0
 LCD_CMD
-Text Notes 8750 3750 0    50   ~ 0
-TODO: figure these out
 Wire Wire Line
 	7750 6800 7950 6800
 Wire Wire Line
@@ -1903,135 +1897,135 @@ Connection ~ 12750 6600
 Wire Wire Line
 	12750 6600 13100 6600
 Wire Wire Line
-	8450 5000 7850 5000
-Text Label 7850 5000 0    50   ~ 0
+	7750 4900 7150 4900
+Text Label 7150 4900 0    50   ~ 0
 TMC_UH
 Wire Wire Line
-	8450 5300 7850 5300
-Text Label 7850 5300 0    50   ~ 0
+	7750 5200 7150 5200
+Text Label 7150 5200 0    50   ~ 0
 TMC_UL
 Wire Wire Line
-	8450 5100 7850 5100
-Text Label 7850 5100 0    50   ~ 0
+	7750 5000 7150 5000
+Text Label 7150 5000 0    50   ~ 0
 TMC_VH
 Wire Wire Line
-	8450 5500 7850 5500
-Text Label 7850 5500 0    50   ~ 0
+	7750 5400 7150 5400
+Text Label 7150 5400 0    50   ~ 0
 TMC_VL
 Wire Wire Line
-	8450 5200 7850 5200
-Text Label 7850 5200 0    50   ~ 0
+	7750 5100 7150 5100
+Text Label 7150 5100 0    50   ~ 0
 TMC_WH
 Wire Wire Line
-	8450 5400 7850 5400
-Text Label 7850 5400 0    50   ~ 0
+	7750 5300 7150 5300
+Text Label 7150 5300 0    50   ~ 0
 TMC_WL
 $Comp
 L Device:R_Small R7
 U 1 1 6217C4CC
-P 8550 5000
-F 0 "R7" V 8600 5050 50  0000 L CNN
-F 1 "10k" V 8550 5000 31  0000 C CNN
-F 2 "Resistor_SMD:R_0603_1608Metric" H 8550 5000 50  0001 C CNN
-F 3 "~" H 8550 5000 50  0001 C CNN
-	1    8550 5000
+P 7850 4900
+F 0 "R7" V 7900 4950 50  0000 L CNN
+F 1 "10k" V 7850 4900 31  0000 C CNN
+F 2 "Resistor_SMD:R_0603_1608Metric" H 7850 4900 50  0001 C CNN
+F 3 "~" H 7850 4900 50  0001 C CNN
+	1    7850 4900
 	0    -1   -1   0   
 $EndComp
 $Comp
 L Device:R_Small R8
 U 1 1 62180F46
-P 8550 5100
-F 0 "R8" V 8600 5150 50  0000 L CNN
-F 1 "10k" V 8550 5100 31  0000 C CNN
-F 2 "Resistor_SMD:R_0603_1608Metric" H 8550 5100 50  0001 C CNN
-F 3 "~" H 8550 5100 50  0001 C CNN
-	1    8550 5100
+P 7850 5000
+F 0 "R8" V 7900 5050 50  0000 L CNN
+F 1 "10k" V 7850 5000 31  0000 C CNN
+F 2 "Resistor_SMD:R_0603_1608Metric" H 7850 5000 50  0001 C CNN
+F 3 "~" H 7850 5000 50  0001 C CNN
+	1    7850 5000
 	0    -1   -1   0   
 $EndComp
 $Comp
 L Device:R_Small R9
 U 1 1 621810C8
-P 8550 5200
-F 0 "R9" V 8600 5250 50  0000 L CNN
-F 1 "10k" V 8550 5200 31  0000 C CNN
-F 2 "Resistor_SMD:R_0603_1608Metric" H 8550 5200 50  0001 C CNN
-F 3 "~" H 8550 5200 50  0001 C CNN
-	1    8550 5200
+P 7850 5100
+F 0 "R9" V 7900 5150 50  0000 L CNN
+F 1 "10k" V 7850 5100 31  0000 C CNN
+F 2 "Resistor_SMD:R_0603_1608Metric" H 7850 5100 50  0001 C CNN
+F 3 "~" H 7850 5100 50  0001 C CNN
+	1    7850 5100
 	0    -1   -1   0   
 $EndComp
 $Comp
 L Device:R_Small R10
 U 1 1 62181360
-P 8550 5300
-F 0 "R10" V 8600 5350 50  0000 L CNN
-F 1 "10k" V 8550 5300 31  0000 C CNN
-F 2 "Resistor_SMD:R_0603_1608Metric" H 8550 5300 50  0001 C CNN
-F 3 "~" H 8550 5300 50  0001 C CNN
-	1    8550 5300
+P 7850 5200
+F 0 "R10" V 7900 5250 50  0000 L CNN
+F 1 "10k" V 7850 5200 31  0000 C CNN
+F 2 "Resistor_SMD:R_0603_1608Metric" H 7850 5200 50  0001 C CNN
+F 3 "~" H 7850 5200 50  0001 C CNN
+	1    7850 5200
 	0    -1   -1   0   
 $EndComp
 $Comp
 L Device:R_Small R11
 U 1 1 621814C1
-P 8550 5400
-F 0 "R11" V 8600 5450 50  0000 L CNN
-F 1 "10k" V 8550 5400 31  0000 C CNN
-F 2 "Resistor_SMD:R_0603_1608Metric" H 8550 5400 50  0001 C CNN
-F 3 "~" H 8550 5400 50  0001 C CNN
-	1    8550 5400
+P 7850 5300
+F 0 "R11" V 7900 5350 50  0000 L CNN
+F 1 "10k" V 7850 5300 31  0000 C CNN
+F 2 "Resistor_SMD:R_0603_1608Metric" H 7850 5300 50  0001 C CNN
+F 3 "~" H 7850 5300 50  0001 C CNN
+	1    7850 5300
 	0    -1   -1   0   
 $EndComp
 $Comp
 L Device:R_Small R12
 U 1 1 6218171E
-P 8550 5500
-F 0 "R12" V 8600 5550 50  0000 L CNN
-F 1 "10k" V 8550 5500 31  0000 C CNN
-F 2 "Resistor_SMD:R_0603_1608Metric" H 8550 5500 50  0001 C CNN
-F 3 "~" H 8550 5500 50  0001 C CNN
-	1    8550 5500
+P 7850 5400
+F 0 "R12" V 7900 5450 50  0000 L CNN
+F 1 "10k" V 7850 5400 31  0000 C CNN
+F 2 "Resistor_SMD:R_0603_1608Metric" H 7850 5400 50  0001 C CNN
+F 3 "~" H 7850 5400 50  0001 C CNN
+	1    7850 5400
 	0    -1   -1   0   
 $EndComp
 $Comp
 L power:GND #PWR0135
 U 1 1 62182795
-P 8850 5700
-F 0 "#PWR0135" H 8850 5450 50  0001 C CNN
-F 1 "GND" H 8855 5527 50  0000 C CNN
-F 2 "" H 8850 5700 50  0001 C CNN
-F 3 "" H 8850 5700 50  0001 C CNN
-	1    8850 5700
+P 8150 5600
+F 0 "#PWR0135" H 8150 5350 50  0001 C CNN
+F 1 "GND" H 8155 5427 50  0000 C CNN
+F 2 "" H 8150 5600 50  0001 C CNN
+F 3 "" H 8150 5600 50  0001 C CNN
+	1    8150 5600
 	1    0    0    -1  
 $EndComp
 Wire Wire Line
-	8650 5000 8850 5000
+	7950 4900 8150 4900
 Wire Wire Line
-	8850 5000 8850 5100
+	8150 4900 8150 5000
 Wire Wire Line
-	8850 5100 8650 5100
-Connection ~ 8850 5100
+	8150 5000 7950 5000
+Connection ~ 8150 5000
 Wire Wire Line
-	8850 5100 8850 5200
+	8150 5000 8150 5100
 Wire Wire Line
-	8650 5200 8850 5200
-Connection ~ 8850 5200
+	7950 5100 8150 5100
+Connection ~ 8150 5100
 Wire Wire Line
-	8850 5200 8850 5300
+	8150 5100 8150 5200
 Wire Wire Line
-	8650 5300 8850 5300
-Connection ~ 8850 5300
+	7950 5200 8150 5200
+Connection ~ 8150 5200
 Wire Wire Line
-	8850 5300 8850 5400
+	8150 5200 8150 5300
 Wire Wire Line
-	8650 5400 8850 5400
-Connection ~ 8850 5400
+	7950 5300 8150 5300
+Connection ~ 8150 5300
 Wire Wire Line
-	8850 5400 8850 5500
+	8150 5300 8150 5400
 Wire Wire Line
-	8650 5500 8850 5500
-Connection ~ 8850 5500
+	7950 5400 8150 5400
+Connection ~ 8150 5400
 Wire Wire Line
-	8850 5500 8850 5700
+	8150 5400 8150 5600
 Wire Wire Line
 	13250 4200 13250 5100
 Wire Wire Line
@@ -2214,53 +2208,53 @@ Wire Wire Line
 $Comp
 L Device:R_Small R13
 U 1 1 627E020E
-P 6950 5250
-F 0 "R13" V 6754 5250 50  0000 C CNN
-F 1 "2.2k" V 6845 5250 50  0000 C CNN
-F 2 "Resistor_SMD:R_0603_1608Metric" H 6950 5250 50  0001 C CNN
-F 3 "~" H 6950 5250 50  0001 C CNN
-	1    6950 5250
+P 6550 5200
+F 0 "R13" V 6354 5200 50  0000 C CNN
+F 1 "2.2k" V 6445 5200 50  0000 C CNN
+F 2 "Resistor_SMD:R_0603_1608Metric" H 6550 5200 50  0001 C CNN
+F 3 "~" H 6550 5200 50  0001 C CNN
+	1    6550 5200
 	1    0    0    -1  
 $EndComp
 $Comp
 L Device:R_Small R14
 U 1 1 627EADB9
-P 7200 5500
-F 0 "R14" V 7004 5500 50  0000 C CNN
-F 1 "2.2k" V 7095 5500 50  0000 C CNN
-F 2 "Resistor_SMD:R_0603_1608Metric" H 7200 5500 50  0001 C CNN
-F 3 "~" H 7200 5500 50  0001 C CNN
-	1    7200 5500
+P 6800 5450
+F 0 "R14" V 6604 5450 50  0000 C CNN
+F 1 "2.2k" V 6695 5450 50  0000 C CNN
+F 2 "Resistor_SMD:R_0603_1608Metric" H 6800 5450 50  0001 C CNN
+F 3 "~" H 6800 5450 50  0001 C CNN
+	1    6800 5450
 	1    0    0    -1  
 $EndComp
-Text Label 6350 5350 0    50   ~ 0
+Text Label 5950 5300 0    50   ~ 0
 SDA
-Text Label 6350 5600 0    50   ~ 0
+Text Label 5950 5550 0    50   ~ 0
 SCL
 $Comp
 L power:+3.3V #PWR0141
 U 1 1 62826CAD
-P 7100 5050
-F 0 "#PWR0141" H 7100 4900 50  0001 C CNN
-F 1 "+3.3V" H 7115 5223 50  0000 C CNN
-F 2 "" H 7100 5050 50  0001 C CNN
-F 3 "" H 7100 5050 50  0001 C CNN
-	1    7100 5050
+P 6700 5000
+F 0 "#PWR0141" H 6700 4850 50  0001 C CNN
+F 1 "+3.3V" H 6715 5173 50  0000 C CNN
+F 2 "" H 6700 5000 50  0001 C CNN
+F 3 "" H 6700 5000 50  0001 C CNN
+	1    6700 5000
 	1    0    0    -1  
 $EndComp
 Wire Wire Line
-	6950 5150 6950 5050
+	6550 5100 6550 5000
 Wire Wire Line
-	6950 5050 7100 5050
+	6550 5000 6700 5000
 Wire Wire Line
-	7100 5050 7200 5050
+	6700 5000 6800 5000
 Wire Wire Line
-	7200 5050 7200 5400
-Connection ~ 7100 5050
+	6800 5000 6800 5350
+Connection ~ 6700 5000
 Wire Wire Line
-	6350 5350 6550 5350
+	5950 5300 6150 5300
 Wire Wire Line
-	6350 5600 6550 5600
+	5950 5550 6150 5550
 $Comp
 L Connector:TestPoint_Small TP1
 U 1 1 620734A8
@@ -2410,35 +2404,35 @@ Wire Wire Line
 $Comp
 L Connector:TestPoint_Small TP4
 U 1 1 622F4012
-P 6550 5300
-F 0 "TP4" H 6598 5346 50  0000 L CNN
-F 1 "SDA" H 6600 5300 50  0000 L CNN
-F 2 "Modified:TestPoint_Pad_D2.0mm_ValueSilk" H 6750 5300 50  0001 C CNN
-F 3 "~" H 6750 5300 50  0001 C CNN
-	1    6550 5300
+P 6150 5250
+F 0 "TP4" H 6198 5296 50  0000 L CNN
+F 1 "SDA" H 6200 5250 50  0000 L CNN
+F 2 "Modified:TestPoint_Pad_D2.0mm_ValueSilk" H 6350 5250 50  0001 C CNN
+F 3 "~" H 6350 5250 50  0001 C CNN
+	1    6150 5250
 	1    0    0    -1  
 $EndComp
 Wire Wire Line
-	6550 5300 6550 5350
+	6150 5250 6150 5300
 $Comp
 L Connector:TestPoint_Small TP5
 U 1 1 623162CF
-P 6550 5550
-F 0 "TP5" H 6598 5596 50  0000 L CNN
-F 1 "SCL" H 6600 5550 50  0000 L CNN
-F 2 "Modified:TestPoint_Pad_D2.0mm_ValueSilk" H 6750 5550 50  0001 C CNN
-F 3 "~" H 6750 5550 50  0001 C CNN
-	1    6550 5550
+P 6150 5500
+F 0 "TP5" H 6198 5546 50  0000 L CNN
+F 1 "SCL" H 6200 5500 50  0000 L CNN
+F 2 "Modified:TestPoint_Pad_D2.0mm_ValueSilk" H 6350 5500 50  0001 C CNN
+F 3 "~" H 6350 5500 50  0001 C CNN
+	1    6150 5500
 	1    0    0    -1  
 $EndComp
 Wire Wire Line
-	6550 5550 6550 5600
-Connection ~ 6550 5350
+	6150 5500 6150 5550
+Connection ~ 6150 5300
 Wire Wire Line
-	6550 5350 6950 5350
-Connection ~ 6550 5600
+	6150 5300 6550 5300
+Connection ~ 6150 5550
 Wire Wire Line
-	6550 5600 7200 5600
+	6150 5550 6800 5550
 Connection ~ 14950 6750
 Connection ~ 14950 6850
 Wire Wire Line
@@ -2463,63 +2457,63 @@ Connection ~ 3100 7750
 $Comp
 L Device:R_Small R15
 U 1 1 62132FFE
-P 5300 5150
-F 0 "R15" V 5104 5150 50  0000 C CNN
-F 1 "2.2k" V 5195 5150 50  0000 C CNN
-F 2 "Resistor_SMD:R_0603_1608Metric" H 5300 5150 50  0001 C CNN
-F 3 "~" H 5300 5150 50  0001 C CNN
-	1    5300 5150
+P 5150 5250
+F 0 "R15" V 4954 5250 50  0000 C CNN
+F 1 "2.2k" V 5045 5250 50  0000 C CNN
+F 2 "Resistor_SMD:R_0603_1608Metric" H 5150 5250 50  0001 C CNN
+F 3 "~" H 5150 5250 50  0001 C CNN
+	1    5150 5250
 	1    0    0    -1  
 $EndComp
 $Comp
 L Device:R_Small R16
 U 1 1 62133004
-P 5400 5150
-F 0 "R16" V 5204 5150 50  0000 C CNN
-F 1 "2.2k" V 5295 5150 50  0000 C CNN
-F 2 "Resistor_SMD:R_0603_1608Metric" H 5400 5150 50  0001 C CNN
-F 3 "~" H 5400 5150 50  0001 C CNN
-	1    5400 5150
+P 5250 5250
+F 0 "R16" V 5054 5250 50  0000 C CNN
+F 1 "2.2k" V 5145 5250 50  0000 C CNN
+F 2 "Resistor_SMD:R_0603_1608Metric" H 5250 5250 50  0001 C CNN
+F 3 "~" H 5250 5250 50  0001 C CNN
+	1    5250 5250
 	-1   0    0    1   
 $EndComp
 $Comp
 L power:+3.3V #PWR0142
 U 1 1 6213300A
-P 5350 4950
-F 0 "#PWR0142" H 5350 4800 50  0001 C CNN
-F 1 "+3.3V" H 5365 5123 50  0000 C CNN
-F 2 "" H 5350 4950 50  0001 C CNN
-F 3 "" H 5350 4950 50  0001 C CNN
-	1    5350 4950
+P 5200 5050
+F 0 "#PWR0142" H 5200 4900 50  0001 C CNN
+F 1 "+3.3V" H 5215 5223 50  0000 C CNN
+F 2 "" H 5200 5050 50  0001 C CNN
+F 3 "" H 5200 5050 50  0001 C CNN
+	1    5200 5050
 	1    0    0    -1  
 $EndComp
 Wire Wire Line
-	5300 5250 5300 5500
+	5150 5350 5150 5600
 Wire Wire Line
-	5400 5250 5400 5600
+	5250 5350 5250 5700
 Wire Wire Line
-	5300 5050 5300 4950
+	5150 5150 5150 5050
 Wire Wire Line
-	5300 4950 5350 4950
+	5150 5050 5200 5050
 Wire Wire Line
-	5350 4950 5400 4950
+	5200 5050 5250 5050
 Wire Wire Line
-	5400 4950 5400 5050
-Connection ~ 5350 4950
-Text Notes 4700 5800 0    50   ~ 0
-Pull-ups allow for I2C (though\nwe'll primarily use SSI)
+	5250 5050 5250 5150
+Connection ~ 5200 5050
+Text Notes 4400 5900 0    50   ~ 0
+Pull-ups on MT6701 allow for I2C\n(though we'll primarily use SSI)
 Wire Wire Line
 	3100 7650 4000 7650
 Wire Wire Line
 	3100 7750 4000 7750
-Text Label 4800 5600 0    50   ~ 0
+Text Label 4650 5700 0    50   ~ 0
 MAG_CLK
-Text Label 4800 5500 0    50   ~ 0
+Text Label 4650 5600 0    50   ~ 0
 MAG_DO
 Wire Wire Line
-	4800 5500 5300 5500
+	4650 5600 5150 5600
 Wire Wire Line
-	4800 5600 5400 5600
+	4650 5700 5250 5700
 Wire Notes Line
 	3100 1950 3100 500 
 Wire Notes Line
@@ -2536,8 +2530,6 @@ Wire Notes Line
 	4350 6000 10950 6000
 Wire Notes Line
 	10950 6000 10950 8600
-Wire Notes Line
-	9200 4550 9200 6000
 Text Notes 500  2100 0    79   Italic 16
 USB
 Text Notes 500  4700 0    79   Italic 16
@@ -2566,8 +2558,6 @@ Wire Notes Line
 	12350 5850 16500 5850
 Text Notes 3150 600  0    79   Italic 16
 MECHANICAL
-Wire Notes Line
-	10350 4550 10350 1950
 Wire Notes Line
 	500  1950 10350 1950
 Wire Notes Line
@@ -2586,4 +2576,101 @@ Text Notes 11200 1900 0    79   Italic 16
 MCU - ESP32 (T-MICRO32 PLUS)
 Wire Notes Line
 	7700 1950 7700 500 
+$Comp
+L Device:C_Small C28
+U 1 1 6211BEF1
+P 9500 5400
+F 0 "C28" H 9592 5446 50  0000 L CNN
+F 1 "1uF" H 9592 5355 50  0000 L CNN
+F 2 "Capacitor_SMD:C_0603_1608Metric" H 9500 5400 50  0001 C CNN
+F 3 "~" H 9500 5400 50  0001 C CNN
+	1    9500 5400
+	1    0    0    -1  
+$EndComp
+Text Notes 8500 5950 0    50   ~ 0
+Recommended 1uF-10uF on EN for auto-reset\ncircuitry, per Espressif design notes.
+Wire Notes Line
+	10350 1950 10350 6000
+$Comp
+L Device:R_Small R17
+U 1 1 621B8442
+P 9500 5050
+F 0 "R17" V 9304 5050 50  0000 C CNN
+F 1 "10k" V 9395 5050 50  0000 C CNN
+F 2 "Resistor_SMD:R_0603_1608Metric" H 9500 5050 50  0001 C CNN
+F 3 "~" H 9500 5050 50  0001 C CNN
+	1    9500 5050
+	1    0    0    -1  
+$EndComp
+Text Label 8650 5250 0    50   ~ 0
+ESP32_EN
+$Comp
+L power:+3.3V #PWR01
+U 1 1 621B8449
+P 9500 4850
+F 0 "#PWR01" H 9500 4700 50  0001 C CNN
+F 1 "+3.3V" H 9515 5023 50  0000 C CNN
+F 2 "" H 9500 4850 50  0001 C CNN
+F 3 "" H 9500 4850 50  0001 C CNN
+	1    9500 4850
+	1    0    0    -1  
+$EndComp
+Wire Wire Line
+	9500 4950 9500 4850
+$Comp
+L Connector:TestPoint_Small TP13
+U 1 1 621B8454
+P 6800 2400
+F 0 "TP13" H 6848 2446 50  0000 L CNN
+F 1 "EN" H 6850 2400 50  0000 L CNN
+F 2 "Modified:TestPoint_Pad_D2.0mm_ValueSilk" H 7000 2400 50  0001 C CNN
+F 3 "~" H 7000 2400 50  0001 C CNN
+	1    6800 2400
+	1    0    0    -1  
+$EndComp
+$Comp
+L power:GND #PWR02
+U 1 1 62269E5E
+P 9500 5550
+F 0 "#PWR02" H 9500 5300 50  0001 C CNN
+F 1 "GND" H 9505 5377 50  0000 C CNN
+F 2 "" H 9500 5550 50  0001 C CNN
+F 3 "" H 9500 5550 50  0001 C CNN
+	1    9500 5550
+	1    0    0    -1  
+$EndComp
+Wire Wire Line
+	9500 5550 9500 5500
+Wire Wire Line
+	9500 5300 9500 5250
+Connection ~ 9500 5250
+Wire Wire Line
+	9500 5250 9500 5150
+Wire Wire Line
+	12150 2800 12650 2800
+Wire Wire Line
+	6800 2400 6800 2450
+Connection ~ 6800 2450
+Wire Wire Line
+	6800 2450 6900 2450
+$Comp
+L Connector:TestPoint_Small TP14
+U 1 1 62317868
+P 6800 3750
+F 0 "TP14" H 6848 3796 50  0000 L CNN
+F 1 "BOOT" H 6850 3750 50  0000 L CNN
+F 2 "Modified:TestPoint_Pad_D2.0mm_ValueSilk" H 7000 3750 50  0001 C CNN
+F 3 "~" H 7000 3750 50  0001 C CNN
+	1    6800 3750
+	1    0    0    -1  
+$EndComp
+Wire Wire Line
+	6800 3750 6800 3650
+Connection ~ 6800 3650
+Wire Wire Line
+	6800 3650 6300 3650
+Wire Wire Line
+	8650 5250 9500 5250
+Wire Wire Line
+	11550 2600 11550 3100
 $EndSCHEMATC

+ 42 - 0
electronics/view_screen/view_screen.kibot.yml

@@ -0,0 +1,42 @@
+kibot:
+  version: 1
+
+preflight:
+  check_zone_fills: true
+  run_drc: true
+  run_erc: true
+  update_xml: true
+
+outputs:
+  - name: ibom
+    comment: 'Interactive BOM'
+    type: ibom
+    options:
+      dark_mode: true
+      netlist_file: '%F.xml'
+      # extra_fields: 'LCSC'
+
+  - name: schematic
+    type: pdf_sch_print
+
+  # - name: 3d
+  #   type: render_3d
+  #   options:
+  #     no_virtual: true
+  #     view: 'top'
+  #     silk: '#111111'
+  #     solder_mask: '#ffffff'
+  #     board: '#C3BA9B'
+  #     copper: '#99967F'
+  #     orthographic: true
+  #     ray_tracing: true
+  #     height: 1920
+  #     width: 1920
+  #     zoom: 4
+
+  # - name: 3d_back
+  #   type: render_3d
+  #   extends: 3d
+  #   options:
+  #     view: 'bottom'
+  #     zoom: 3

+ 597 - 594
electronics/view_screen/view_screen.kicad_pcb

@@ -2,8 +2,8 @@
 
   (general
     (thickness 1.2)
-    (drawings 50)
-    (tracks 81)
+    (drawings 66)
+    (tracks 71)
     (zones 0)
     (modules 10)
     (nets 12)
@@ -11,7 +11,7 @@
 
   (page A4)
   (layers
-    (0 F.Cu signal)
+    (0 F.Cu signal hide)
     (31 B.Cu signal)
     (32 B.Adhes user)
     (33 F.Adhes user)
@@ -83,11 +83,11 @@
       (plotinvisibletext false)
       (padsonsilk false)
       (subtractmaskfromsilk false)
-      (outputformat 1)
+      (outputformat 4)
       (mirror false)
-      (drillshape 1)
+      (drillshape 0)
       (scaleselection 1)
-      (outputdirectory ""))
+      (outputdirectory "../build/"))
   )
 
   (net 0 "")
@@ -120,11 +120,12 @@
     (add_net /nCS)
     (add_net /nRESET)
     (add_net GND)
+    (add_net "Net-(H1-Pad1)")
     (add_net "Net-(Q1-Pad1)")
   )
 
   (module LCD_GC9A01:GC9A01Round1.28 (layer B.Cu) (tedit 6208A85C) (tstamp 6207D05B)
-    (at 0 10.9 90)
+    (at 100 110.9 90)
     (path /620756C7)
     (attr virtual)
     (fp_text reference J2 (at 4 -1 90) (layer B.SilkS) hide
@@ -133,12 +134,12 @@
     (fp_text value GC9A01 (at 0 0.5 90) (layer B.Fab)
       (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
     )
-    (fp_line (start 0 5.7) (end -3 5.7) (layer B.SilkS) (width 0.15))
-    (fp_line (start 0 -5.7) (end -6.5 -5.7) (layer B.SilkS) (width 0.15))
-    (fp_line (start -6.5 6.4) (end -4.5 6.4) (layer B.SilkS) (width 0.15))
-    (fp_line (start -4.5 6.4) (end -3 5.7) (layer B.SilkS) (width 0.15))
-    (fp_line (start 0 5.7) (end 0 4.5) (layer B.SilkS) (width 0.15))
     (fp_line (start 0 -5.7) (end 0 -4.5) (layer B.SilkS) (width 0.15))
+    (fp_line (start 0 5.7) (end 0 4.5) (layer B.SilkS) (width 0.15))
+    (fp_line (start -4.5 6.4) (end -3 5.7) (layer B.SilkS) (width 0.15))
+    (fp_line (start -6.5 6.4) (end -4.5 6.4) (layer B.SilkS) (width 0.15))
+    (fp_line (start 0 -5.7) (end -6.5 -5.7) (layer B.SilkS) (width 0.15))
+    (fp_line (start 0 5.7) (end -3 5.7) (layer B.SilkS) (width 0.15))
     (fp_text user 12 (at 2 -4 90) (layer B.SilkS)
       (effects (font (size 0.8 0.8) (thickness 0.12)) (justify mirror))
     )
@@ -177,7 +178,7 @@
   )
 
   (module Resistor_SMD:R_0603_1608Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 6207D0AD)
-    (at 12.5 7.5)
+    (at 112.5 107.5)
     (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
     (tags resistor)
     (path /620807F6)
@@ -188,16 +189,16 @@
     (fp_text value 1M (at 0 -1.43) (layer B.Fab)
       (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
     )
-    (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1))
-    (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1))
-    (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1))
-    (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1))
-    (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer B.SilkS) (width 0.12))
-    (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer B.SilkS) (width 0.12))
-    (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer B.CrtYd) (width 0.05))
-    (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer B.CrtYd) (width 0.05))
-    (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer B.CrtYd) (width 0.05))
     (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer B.SilkS) (width 0.12))
+    (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer B.SilkS) (width 0.12))
+    (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1))
+    (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1))
+    (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1))
+    (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1))
     (fp_text user %R (at 0 0) (layer B.Fab)
       (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror))
     )
@@ -213,7 +214,7 @@
   )
 
   (module Resistor_SMD:R_0603_1608Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 6207D09C)
-    (at 4.5 7.5 270)
+    (at 104.5 107.5 270)
     (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
     (tags resistor)
     (path /6209F498)
@@ -224,16 +225,16 @@
     (fp_text value 22R (at 0 -1.43 270) (layer B.Fab)
       (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
     )
-    (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1))
-    (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1))
-    (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1))
-    (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1))
-    (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer B.SilkS) (width 0.12))
-    (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer B.SilkS) (width 0.12))
-    (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer B.CrtYd) (width 0.05))
-    (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer B.CrtYd) (width 0.05))
-    (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer B.CrtYd) (width 0.05))
     (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer B.SilkS) (width 0.12))
+    (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer B.SilkS) (width 0.12))
+    (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1))
+    (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1))
+    (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1))
+    (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1))
     (fp_text user %R (at 0 0 270) (layer B.Fab)
       (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror))
     )
@@ -249,7 +250,7 @@
   )
 
   (module Resistor_SMD:R_0603_1608Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 6207D08B)
-    (at 12.5 6 180)
+    (at 112.5 106 180)
     (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
     (tags resistor)
     (path /6208164C)
@@ -260,16 +261,16 @@
     (fp_text value 10k (at 0 -1.43) (layer B.Fab)
       (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
     )
-    (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1))
-    (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1))
-    (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1))
-    (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1))
-    (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer B.SilkS) (width 0.12))
-    (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer B.SilkS) (width 0.12))
-    (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer B.CrtYd) (width 0.05))
-    (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer B.CrtYd) (width 0.05))
-    (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer B.CrtYd) (width 0.05))
     (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer B.SilkS) (width 0.12))
+    (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer B.SilkS) (width 0.12))
+    (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1))
+    (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1))
+    (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1))
+    (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1))
     (fp_text user %R (at 0 0) (layer B.Fab)
       (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror))
     )
@@ -285,7 +286,7 @@
   )
 
   (module Package_TO_SOT_SMD:SOT-23 (layer B.Cu) (tedit 5A02FF57) (tstamp 6207D07A)
-    (at 10 10.5 180)
+    (at 110 110.5 180)
     (descr "SOT-23, Standard")
     (tags SOT-23)
     (path /6207DB9F)
@@ -296,19 +297,19 @@
     (fp_text value 2N7002 (at 0 -2.5 180) (layer B.Fab)
       (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
     )
-    (fp_line (start -0.7 0.95) (end -0.7 -1.5) (layer B.Fab) (width 0.1))
-    (fp_line (start -0.15 1.52) (end 0.7 1.52) (layer B.Fab) (width 0.1))
-    (fp_line (start -0.7 0.95) (end -0.15 1.52) (layer B.Fab) (width 0.1))
-    (fp_line (start 0.7 1.52) (end 0.7 -1.52) (layer B.Fab) (width 0.1))
-    (fp_line (start -0.7 -1.52) (end 0.7 -1.52) (layer B.Fab) (width 0.1))
-    (fp_line (start 0.76 -1.58) (end 0.76 -0.65) (layer B.SilkS) (width 0.12))
-    (fp_line (start 0.76 1.58) (end 0.76 0.65) (layer B.SilkS) (width 0.12))
-    (fp_line (start -1.7 1.75) (end 1.7 1.75) (layer B.CrtYd) (width 0.05))
-    (fp_line (start 1.7 1.75) (end 1.7 -1.75) (layer B.CrtYd) (width 0.05))
-    (fp_line (start 1.7 -1.75) (end -1.7 -1.75) (layer B.CrtYd) (width 0.05))
-    (fp_line (start -1.7 -1.75) (end -1.7 1.75) (layer B.CrtYd) (width 0.05))
-    (fp_line (start 0.76 1.58) (end -1.4 1.58) (layer B.SilkS) (width 0.12))
     (fp_line (start 0.76 -1.58) (end -0.7 -1.58) (layer B.SilkS) (width 0.12))
+    (fp_line (start 0.76 1.58) (end -1.4 1.58) (layer B.SilkS) (width 0.12))
+    (fp_line (start -1.7 -1.75) (end -1.7 1.75) (layer B.CrtYd) (width 0.05))
+    (fp_line (start 1.7 -1.75) (end -1.7 -1.75) (layer B.CrtYd) (width 0.05))
+    (fp_line (start 1.7 1.75) (end 1.7 -1.75) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -1.7 1.75) (end 1.7 1.75) (layer B.CrtYd) (width 0.05))
+    (fp_line (start 0.76 1.58) (end 0.76 0.65) (layer B.SilkS) (width 0.12))
+    (fp_line (start 0.76 -1.58) (end 0.76 -0.65) (layer B.SilkS) (width 0.12))
+    (fp_line (start -0.7 -1.52) (end 0.7 -1.52) (layer B.Fab) (width 0.1))
+    (fp_line (start 0.7 1.52) (end 0.7 -1.52) (layer B.Fab) (width 0.1))
+    (fp_line (start -0.7 0.95) (end -0.15 1.52) (layer B.Fab) (width 0.1))
+    (fp_line (start -0.15 1.52) (end 0.7 1.52) (layer B.Fab) (width 0.1))
+    (fp_line (start -0.7 0.95) (end -0.7 -1.5) (layer B.Fab) (width 0.1))
     (fp_text user %R (at 0 0 90) (layer B.Fab)
       (effects (font (size 0.5 0.5) (thickness 0.075)) (justify mirror))
     )
@@ -325,50 +326,50 @@
     )
   )
 
-  (module SolderPads:SolderPads_2mm_4 (layer F.Cu) (tedit 62075369) (tstamp 6207D74B)
-    (at -2.5 -9.5 90)
+  (module SolderPads:SolderPads_2mm_4 (layer B.Cu) (tedit 62075369) (tstamp 6207D74B)
+    (at 93 92 90)
     (path /62076D99)
-    (fp_text reference J3 (at 0 0.5 90) (layer F.SilkS) hide
-      (effects (font (size 1 1) (thickness 0.15)))
+    (fp_text reference J3 (at 0 -0.5 270) (layer B.SilkS) hide
+      (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
     )
-    (fp_text value Conn_01x04 (at 0 -0.5 90) (layer F.Fab)
-      (effects (font (size 1 1) (thickness 0.15)))
+    (fp_text value Conn_01x04 (at 0 0.5 270) (layer B.Fab)
+      (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
     )
-    (fp_line (start -0.5 -1.5) (end -1 -1.5) (layer F.SilkS) (width 0.15))
-    (fp_line (start -1 -1.5) (end -1 -1) (layer F.SilkS) (width 0.15))
-    (pad 4 smd oval (at 6 0 90) (size 1.25 2.5) (layers F.Cu F.Mask)
+    (fp_line (start -1 1.5) (end -1 1) (layer B.SilkS) (width 0.15))
+    (fp_line (start -0.5 1.5) (end -1 1.5) (layer B.SilkS) (width 0.15))
+    (pad 4 smd oval (at 6 0 90) (size 1.25 2.5) (layers B.Cu B.Mask)
       (net 5 /nRESET))
-    (pad 3 smd oval (at 4 0 90) (size 1.25 2.5) (layers F.Cu F.Mask)
+    (pad 3 smd oval (at 4 0 90) (size 1.25 2.5) (layers B.Cu B.Mask)
       (net 6 /MOSI))
-    (pad 2 smd oval (at 2 0 90) (size 1.25 2.5) (layers F.Cu F.Mask)
+    (pad 2 smd oval (at 2 0 90) (size 1.25 2.5) (layers B.Cu B.Mask)
       (net 7 /SCK))
-    (pad 1 smd oval (at 0 0 90) (size 1.25 2.5) (layers F.Cu F.Mask)
+    (pad 1 smd oval (at 0 0 90) (size 1.25 2.5) (layers B.Cu B.Mask)
       (net 8 /nCS))
   )
 
-  (module SolderPads:SolderPads_2mm_4 (layer F.Cu) (tedit 62075369) (tstamp 6207D043)
-    (at 2.5 -9.5 90)
+  (module SolderPads:SolderPads_2mm_4 (layer B.Cu) (tedit 62075369) (tstamp 620C013A)
+    (at 107 92 90)
     (path /6207690B)
-    (fp_text reference J1 (at 0 0.5 90) (layer F.SilkS) hide
-      (effects (font (size 1 1) (thickness 0.15)))
+    (fp_text reference J1 (at 0 -0.5 270) (layer B.SilkS) hide
+      (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
     )
-    (fp_text value Conn_01x04 (at 0 -0.5 90) (layer F.Fab)
-      (effects (font (size 1 1) (thickness 0.15)))
+    (fp_text value Conn_01x04 (at 0 0.5 270) (layer B.Fab)
+      (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
     )
-    (fp_line (start -0.5 -1.5) (end -1 -1.5) (layer F.SilkS) (width 0.15))
-    (fp_line (start -1 -1.5) (end -1 -1) (layer F.SilkS) (width 0.15))
-    (pad 4 smd oval (at 6 0 90) (size 1.25 2.5) (layers F.Cu F.Mask)
+    (fp_line (start -1 1.5) (end -1 1) (layer B.SilkS) (width 0.15))
+    (fp_line (start -0.5 1.5) (end -1 1.5) (layer B.SilkS) (width 0.15))
+    (pad 4 smd oval (at 6 0 90) (size 1.25 2.5) (layers B.Cu B.Mask)
       (net 3 /DC))
-    (pad 3 smd oval (at 4 0 90) (size 1.25 2.5) (layers F.Cu F.Mask)
+    (pad 3 smd oval (at 4 0 90) (size 1.25 2.5) (layers B.Cu B.Mask)
       (net 4 /BACKLIGHT_EN))
-    (pad 2 smd oval (at 2 0 90) (size 1.25 2.5) (layers F.Cu F.Mask)
+    (pad 2 smd oval (at 2 0 90) (size 1.25 2.5) (layers B.Cu B.Mask)
       (net 2 /VDD))
-    (pad 1 smd oval (at 0 0 90) (size 1.25 2.5) (layers F.Cu F.Mask)
+    (pad 1 smd oval (at 0 0 90) (size 1.25 2.5) (layers B.Cu B.Mask)
       (net 1 GND))
   )
 
   (module Holes:AlignmentHole_1.6 locked (layer F.Cu) (tedit 620752D6) (tstamp 6207D039)
-    (at -6 0)
+    (at 94 100)
     (descr "Mounting Hole 2.2mm, no annular, M2, ISO7380")
     (tags "mounting hole 2.2mm no annular m2 iso7380")
     (path /62075165)
@@ -386,7 +387,7 @@
   )
 
   (module Capacitor_SMD:C_0603_1608Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 6207D496)
-    (at 6 7 270)
+    (at 106 107 270)
     (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
     (tags capacitor)
     (path /620AE2F6)
@@ -397,16 +398,16 @@
     (fp_text value 0.1uF (at 0 -1.43 270) (layer B.Fab)
       (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
     )
-    (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1))
-    (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1))
-    (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1))
-    (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1))
-    (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer B.SilkS) (width 0.12))
-    (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer B.SilkS) (width 0.12))
-    (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer B.CrtYd) (width 0.05))
-    (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer B.CrtYd) (width 0.05))
-    (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer B.CrtYd) (width 0.05))
     (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer B.SilkS) (width 0.12))
+    (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer B.SilkS) (width 0.12))
+    (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1))
+    (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1))
+    (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1))
+    (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1))
     (fp_text user %R (at 0 0 270) (layer B.Fab)
       (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror))
     )
@@ -422,7 +423,7 @@
   )
 
   (module Capacitor_SMD:C_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 6207D4C6)
-    (at 8 7 270)
+    (at 108 107 270)
     (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator")
     (tags capacitor)
     (path /6208DA53)
@@ -433,16 +434,16 @@
     (fp_text value 22uF (at 0 -1.68 270) (layer B.Fab)
       (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
     )
-    (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1))
-    (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1))
-    (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1))
-    (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1))
-    (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12))
-    (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12))
-    (fp_line (start -1.7 -0.98) (end -1.7 0.98) (layer B.CrtYd) (width 0.05))
-    (fp_line (start -1.7 0.98) (end 1.7 0.98) (layer B.CrtYd) (width 0.05))
-    (fp_line (start 1.7 0.98) (end 1.7 -0.98) (layer B.CrtYd) (width 0.05))
     (fp_line (start 1.7 -0.98) (end -1.7 -0.98) (layer B.CrtYd) (width 0.05))
+    (fp_line (start 1.7 0.98) (end 1.7 -0.98) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -1.7 0.98) (end 1.7 0.98) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -1.7 -0.98) (end -1.7 0.98) (layer B.CrtYd) (width 0.05))
+    (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12))
+    (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12))
+    (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1))
+    (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1))
+    (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1))
+    (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1))
     (fp_text user %R (at 0 0 270) (layer B.Fab)
       (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror))
     )
@@ -457,537 +458,539 @@
     )
   )
 
-  (gr_line (start 1 13.5) (end 1 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start 0 -16.6) (end 0 -8.4) (layer F.SilkS) (width 0.12))
-  (gr_text S (at -0.6 -9.5) (layer F.SilkS)
-    (effects (font (size 1 1) (thickness 0.15)))
+  (gr_line (start 101.5 91) (end 105.5 92) (layer B.SilkS) (width 0.12) (tstamp 620C24DF))
+  (gr_line (start 101.5 89) (end 105.5 90) (layer B.SilkS) (width 0.12) (tstamp 620C24DF))
+  (gr_line (start 101.5 87) (end 105.5 88) (layer B.SilkS) (width 0.12) (tstamp 620C24DF))
+  (gr_line (start 101.5 85) (end 105.5 86) (layer B.SilkS) (width 0.12) (tstamp 620C24DA))
+  (gr_line (start 98.5 91) (end 94.5 92) (layer B.SilkS) (width 0.12) (tstamp 620C23A8))
+  (gr_line (start 98.5 89) (end 94.5 90) (layer B.SilkS) (width 0.12) (tstamp 620C23A8))
+  (gr_line (start 98.5 87) (end 94.5 88) (layer B.SilkS) (width 0.12) (tstamp 620C23A8))
+  (gr_line (start 98.5 85) (end 94.5 86) (layer B.SilkS) (width 0.12) (tstamp 620C23A4))
+  (gr_text "VHB 5925" (at 88.5 100 -90) (layer F.SilkS) (tstamp 620C0FC5)
+    (effects (font (size 2 2) (thickness 0.2)))
   )
-  (gr_text C (at -0.6 -11.5) (layer F.SilkS)
-    (effects (font (size 1 1) (thickness 0.15)))
+  (gr_arc (start 100 100) (end 100 107) (angle -108.4349488) (layer B.SilkS) (width 0.12) (tstamp 620C0C43))
+  (gr_line (start 98.5 91) (end 94.5 91) (layer F.SilkS) (width 0.12) (tstamp 620C0A67))
+  (gr_line (start 101 91) (end 101 85) (layer Edge.Cuts) (width 0.2) (tstamp 620C0238))
+  (gr_line (start 99 85) (end 99 91) (layer Edge.Cuts) (width 0.2) (tstamp 620C0236))
+  (gr_arc (start 100 91) (end 99 91) (angle -180) (layer Edge.Cuts) (width 0.2) (tstamp 620C0228))
+  (gr_arc (start 100 85) (end 101 85) (angle -180) (layer Edge.Cuts) (width 0.2))
+  (gr_arc (start 100 100) (end 100 93) (angle -111.037511) (layer B.SilkS) (width 0.12))
+  (gr_text "    COMMIT: deadbeef\nDATE: YYYY-MM-DD\n" (at 100 105) (layer B.SilkS) (tstamp 620BB164)
+    (effects (font (size 0.9 0.9) (thickness 0.12)) (justify left mirror))
   )
-  (gr_text - (at 0.6 -9.5) (layer F.SilkS)
-    (effects (font (size 1 1) (thickness 0.15)))
+  (gr_text "Screen PCB v0.1" (at 116.5 96.5) (layer B.SilkS)
+    (effects (font (size 1 1) (thickness 0.1)) (justify left mirror))
   )
-  (gr_text + (at 0.6 -11.5) (layer F.SilkS)
-    (effects (font (size 1 1) (thickness 0.15)))
+  (gr_text "SmartKnob View" (at 115.5 94.5) (layer B.SilkS) (tstamp 620C0ACE)
+    (effects (font (size 1.4 1.4) (thickness 0.27)) (justify left mirror))
   )
-  (gr_text B (at 0.6 -13.5) (layer F.SilkS)
-    (effects (font (size 1 1) (thickness 0.15)))
+  (gr_line (start 101 113.5) (end 101 104) (layer F.SilkS) (width 0.12))
+  (gr_text S (at 91.1 92) (layer B.SilkS)
+    (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
   )
-  (gr_text D (at -0.6 -13.5) (layer F.SilkS)
-    (effects (font (size 1 1) (thickness 0.15)))
+  (gr_text C (at 91.1 90) (layer B.SilkS)
+    (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
   )
-  (gr_text M (at 0.6 -15.5) (layer F.SilkS)
-    (effects (font (size 1 1) (thickness 0.15)))
+  (gr_text - (at 108.9 92) (layer B.SilkS)
+    (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
   )
-  (gr_text R (at -0.6 -15.5) (layer F.SilkS)
-    (effects (font (size 1 1) (thickness 0.15)))
+  (gr_text + (at 108.9 90) (layer B.SilkS)
+    (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
+  )
+  (gr_text B (at 108.9 88) (layer B.SilkS)
+    (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
+  )
+  (gr_text D (at 91.1 88) (layer B.SilkS)
+    (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
+  )
+  (gr_text M (at 108.9 86) (layer B.SilkS)
+    (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
   )
-  (gr_text "0.6mm thick" (at -13 4.5 -90) (layer F.SilkS) (tstamp 6208F7F2)
+  (gr_text R (at 91.1 86) (layer B.SilkS)
+    (effects (font (size 1 1) (thickness 0.15)) (justify mirror))
+  )
+  (gr_text "0.6mm thick" (at 86 100 -90) (layer F.SilkS) (tstamp 6208F7F2)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (gr_text "0.6mm thick" (at 9.5 4.5 -90) (layer F.SilkS)
+  (gr_text "0.6mm thick" (at 109.5 100 -90) (layer F.SilkS)
     (effects (font (size 1 1) (thickness 0.15)))
   )
-  (gr_line (start -2 12.5) (end -2 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start -5.5 12.5) (end -2 12.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start -5.5 -9.5) (end -5.5 12.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start -1.5 13) (end -1.5 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start -6 13) (end -1.5 13) (layer F.SilkS) (width 0.12))
-  (gr_line (start -6 -11.5) (end -6 13) (layer F.SilkS) (width 0.12))
-  (gr_line (start -5.5 -11.5) (end -6 -11.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start -1 13.5) (end -1 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start -6.5 13.5) (end -1 13.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start -6.5 -13.5) (end -6.5 13.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start -5.5 -13.5) (end -6.5 -13.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start -0.5 14) (end -0.5 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start -7 14) (end -0.5 14) (layer F.SilkS) (width 0.12))
-  (gr_line (start -7 -15.5) (end -7 14) (layer F.SilkS) (width 0.12))
-  (gr_line (start -5.5 -15.5) (end -7 -15.5) (layer F.SilkS) (width 0.12))
-  (gr_text "service loops" (at 0 15) (layer F.SilkS) (tstamp 6208F6F4)
+  (gr_line (start 98 112.5) (end 98 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 94.5 112.5) (end 98 112.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 94.5 91) (end 94.5 112.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 98.5 113) (end 98.5 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 94 113) (end 98.5 113) (layer F.SilkS) (width 0.12))
+  (gr_line (start 94 89) (end 94 113) (layer F.SilkS) (width 0.12))
+  (gr_line (start 98.5 89) (end 94 89) (layer F.SilkS) (width 0.12))
+  (gr_line (start 99 113.5) (end 99 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 93.5 113.5) (end 99 113.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 93.5 87) (end 93.5 113.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 98.5 87) (end 93.5 87) (layer F.SilkS) (width 0.12))
+  (gr_line (start 99.5 114) (end 99.5 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 93 114) (end 99.5 114) (layer F.SilkS) (width 0.12))
+  (gr_line (start 93 85) (end 93 114) (layer F.SilkS) (width 0.12))
+  (gr_line (start 98.5 85) (end 93 85) (layer F.SilkS) (width 0.12))
+  (gr_text "service loops" (at 100 115) (layer F.SilkS) (tstamp 6208F6F4)
     (effects (font (size 1 1) (thickness 0.15) italic))
   )
-  (gr_line (start 2 12.5) (end 2 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start 5.5 12.5) (end 2 12.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 5.5 -9.5) (end 5.5 12.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 4.5 -9.5) (end 5.5 -9.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 1.5 13) (end 1.5 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start 6 13) (end 1.5 13) (layer F.SilkS) (width 0.12))
-  (gr_line (start 6 -11.5) (end 6 13) (layer F.SilkS) (width 0.12) (tstamp 6208F6BF))
-  (gr_line (start 5.5 -11.5) (end 6 -11.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 6.5 13.5) (end 1 13.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 6.5 -13.5) (end 6.5 13.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 5.5 -13.5) (end 6.5 -13.5) (layer F.SilkS) (width 0.12))
-  (gr_line (start 0.5 14) (end 0.5 4) (layer F.SilkS) (width 0.12))
-  (gr_line (start 7 14) (end 0.5 14) (layer F.SilkS) (width 0.12))
-  (gr_line (start 7 -15.5) (end 7 14) (layer F.SilkS) (width 0.12))
-  (gr_line (start 5.5 -15.5) (end 7 -15.5) (layer F.SilkS) (width 0.12))
-  (gr_text "VHB 5925" (at -10.5 0 270) (layer F.SilkS) (tstamp 6208F695)
-    (effects (font (size 2.5 2.5) (thickness 0.3)))
-  )
-  (gr_text "VHB 5925" (at 12 0 -90) (layer F.SilkS)
-    (effects (font (size 2.5 2.5) (thickness 0.3)))
-  )
-  (gr_line (start -8 -15) (end -8 15) (layer F.SilkS) (width 0.3))
-  (gr_line (start 8 -15) (end 8 15) (layer F.SilkS) (width 0.3))
-  (gr_circle (center 0 0) (end 7 0) (layer B.SilkS) (width 0.12))
-  (gr_circle (center 0 0) (end 17.5 0) (layer Edge.Cuts) (width 0.2))
-  (gr_circle (center 0 0) (end 4.05 0) (layer Edge.Cuts) (width 0.2))
+  (gr_line (start 102 112.5) (end 102 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 105.5 112.5) (end 102 112.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 105.5 91) (end 105.5 112.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 101.5 91) (end 105.5 91) (layer F.SilkS) (width 0.12))
+  (gr_line (start 101.5 113) (end 101.5 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 106 113) (end 101.5 113) (layer F.SilkS) (width 0.12))
+  (gr_line (start 106 89) (end 106 113) (layer F.SilkS) (width 0.12) (tstamp 6208F6BF))
+  (gr_line (start 101.5 89) (end 106 89) (layer F.SilkS) (width 0.12))
+  (gr_line (start 106.5 113.5) (end 101 113.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 106.5 87) (end 106.5 113.5) (layer F.SilkS) (width 0.12))
+  (gr_line (start 101.5 87) (end 106.5 87) (layer F.SilkS) (width 0.12))
+  (gr_line (start 100.5 114) (end 100.5 104) (layer F.SilkS) (width 0.12))
+  (gr_line (start 107 114) (end 100.5 114) (layer F.SilkS) (width 0.12))
+  (gr_line (start 107 85) (end 107 114) (layer F.SilkS) (width 0.12))
+  (gr_line (start 101.5 85) (end 107 85) (layer F.SilkS) (width 0.12))
+  (gr_text "VHB 5925" (at 112 100 -90) (layer F.SilkS)
+    (effects (font (size 2 2) (thickness 0.2)))
+  )
+  (gr_line (start 92 85) (end 92 115) (layer F.SilkS) (width 0.3))
+  (gr_line (start 108 85) (end 108 115) (layer F.SilkS) (width 0.3))
+  (gr_circle (center 100 100) (end 117.5 100) (layer Edge.Cuts) (width 0.2))
+  (gr_circle (center 100 100) (end 104.05 100) (layer Edge.Cuts) (width 0.2))
 
-  (via (at -9 -1.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at -11 -1.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at -13 -1.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at -5.75 5.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at -7 6.75) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1) (tstamp 620905D8))
-  (via (at -8.25 8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at 0 16.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at 15 0) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at -15 -1.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at 0 7.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at 7.75 9) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at 0 -7.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
-  (via (at 4.5 -11.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2))
-  (segment (start 2.5 -11.5) (end 4.5 -11.5) (width 0.4) (layer F.Cu) (net 2))
-  (segment (start 4.5 -11.5) (end 4.5 -9) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 4.5 -9) (end 9.5 -4) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 9.5 4.55) (end 8 6.05) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 9.5 -4) (end 9.5 4.55) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 6.175 6.05) (end 6 6.225) (width 0.25) (layer B.Cu) (net 2))
-  (segment (start 8 6.05) (end 6.175 6.05) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 4.775 6.225) (end 1.75 9.25) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 6 6.225) (end 4.775 6.225) (width 0.4) (layer B.Cu) (net 2))
-  (segment (start 1.75 9.25) (end 1.75 10.6) (width 0.4) (layer B.Cu) (net 2))
-  (via (at 4.5 -15.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 3))
-  (segment (start 2.5 -15.5) (end 4.5 -15.5) (width 0.25) (layer F.Cu) (net 3))
-  (segment (start 7.5 1.5) (end -0.35 9.35) (width 0.25) (layer B.Cu) (net 3))
-  (segment (start 7.5 -3) (end 7.5 1.5) (width 0.25) (layer B.Cu) (net 3))
-  (segment (start 3 -7.5) (end 7.5 -3) (width 0.25) (layer B.Cu) (net 3))
-  (segment (start 3 -14) (end 3 -7.5) (width 0.25) (layer B.Cu) (net 3))
-  (segment (start 4.5 -15.5) (end 3 -14) (width 0.25) (layer B.Cu) (net 3))
-  (segment (start -0.35 9.35) (end -0.35 10.6) (width 0.25) (layer B.Cu) (net 3))
-  (via (at 4.5 -13.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 4))
-  (segment (start 2.5 -13.5) (end 4.5 -13.5) (width 0.25) (layer F.Cu) (net 4))
-  (segment (start 4.5 -13.5) (end 11.5 -6.5) (width 0.25) (layer B.Cu) (net 4))
-  (segment (start 11.5 -6.5) (end 11.5 2.5) (width 0.25) (layer B.Cu) (net 4))
-  (segment (start 11.5 2.5) (end 13 4) (width 0.25) (layer B.Cu) (net 4))
-  (segment (start 13 5.675) (end 13.325 6) (width 0.25) (layer B.Cu) (net 4))
-  (segment (start 13 4) (end 13 5.675) (width 0.25) (layer B.Cu) (net 4))
-  (via (at -4.5 -15.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 5))
-  (segment (start -2.5 -15.5) (end -4.5 -15.5) (width 0.25) (layer F.Cu) (net 5))
-  (segment (start -3.15 9.35) (end -3.15 10.6) (width 0.25) (layer B.Cu) (net 5))
-  (segment (start -3.5 9) (end -3.15 9.35) (width 0.25) (layer B.Cu) (net 5))
-  (segment (start -8.5 9) (end -3.5 9) (width 0.25) (layer B.Cu) (net 5))
-  (segment (start -14 -7) (end -14 3.5) (width 0.25) (layer B.Cu) (net 5))
-  (segment (start -14 3.5) (end -8.5 9) (width 0.25) (layer B.Cu) (net 5))
-  (segment (start -5.5 -15.5) (end -14 -7) (width 0.25) (layer B.Cu) (net 5))
-  (segment (start -4.5 -15.5) (end -5.5 -15.5) (width 0.25) (layer B.Cu) (net 5))
-  (via (at -4.5 -13.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 6))
-  (segment (start -2.5 -13.5) (end -4.5 -13.5) (width 0.25) (layer F.Cu) (net 6))
-  (segment (start -12 3) (end -6.450009 8.549991) (width 0.25) (layer B.Cu) (net 6))
-  (segment (start -6.450009 8.549991) (end -3.313599 8.549991) (width 0.25) (layer B.Cu) (net 6))
-  (segment (start -12 -6) (end -12 3) (width 0.25) (layer B.Cu) (net 6))
-  (segment (start -3.313599 8.549991) (end -2.45 9.413589) (width 0.25) (layer B.Cu) (net 6))
-  (segment (start -4.5 -13.5) (end -12 -6) (width 0.25) (layer B.Cu) (net 6))
-  (segment (start -2.45 9.413589) (end -2.45 10.6) (width 0.25) (layer B.Cu) (net 6))
-  (via (at -4.5 -11.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 7))
-  (segment (start -4.5 -11.5) (end -2.5 -11.5) (width 0.25) (layer F.Cu) (net 7))
-  (segment (start -10 -6) (end -4.5 -11.5) (width 0.25) (layer B.Cu) (net 7))
-  (segment (start -10 2.5) (end -10 -6) (width 0.25) (layer B.Cu) (net 7))
-  (segment (start -4.5 8) (end -10 2.5) (width 0.25) (layer B.Cu) (net 7))
-  (segment (start -3 8) (end -4.5 8) (width 0.25) (layer B.Cu) (net 7))
-  (segment (start -1.75 9.25) (end -3 8) (width 0.25) (layer B.Cu) (net 7))
-  (segment (start -1.75 9.25) (end -1.75 10.6) (width 0.25) (layer B.Cu) (net 7))
-  (via (at -4.5 -9.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 8))
-  (segment (start -4.5 -9.5) (end -2.5 -9.5) (width 0.25) (layer F.Cu) (net 8))
-  (segment (start -4.5 -9) (end -4.5 -9.5) (width 0.25) (layer B.Cu) (net 8))
-  (segment (start -8 -5.5) (end -4.5 -9) (width 0.25) (layer B.Cu) (net 8))
-  (segment (start -1.05 8.95) (end -8 2) (width 0.25) (layer B.Cu) (net 8))
-  (segment (start -8 2) (end -8 -5.5) (width 0.25) (layer B.Cu) (net 8))
-  (segment (start -1.05 8.95) (end -1.05 10.6) (width 0.25) (layer B.Cu) (net 8))
-  (segment (start 3.725 8.325) (end 4.5 8.325) (width 0.25) (layer B.Cu) (net 9))
-  (segment (start 2.45 9.6) (end 3.725 8.325) (width 0.25) (layer B.Cu) (net 9))
-  (segment (start 2.45 10.6) (end 2.45 9.6) (width 0.25) (layer B.Cu) (net 9))
-  (segment (start 3.47501 9.27499) (end 4.77499 9.27499) (width 0.25) (layer B.Cu) (net 10))
-  (segment (start 3.15 9.6) (end 3.47501 9.27499) (width 0.25) (layer B.Cu) (net 10))
-  (segment (start 3.15 10.6) (end 3.15 9.6) (width 0.25) (layer B.Cu) (net 10))
-  (segment (start 6 10.5) (end 9 10.5) (width 0.25) (layer B.Cu) (net 10))
-  (segment (start 4.77499 9.27499) (end 6 10.5) (width 0.25) (layer B.Cu) (net 10))
-  (segment (start 11 8.175) (end 11.675 7.5) (width 0.25) (layer B.Cu) (net 11))
-  (segment (start 11 9.55) (end 11 8.175) (width 0.25) (layer B.Cu) (net 11))
-  (segment (start 11.675 6) (end 11.675 7.5) (width 0.25) (layer B.Cu) (net 11))
+  (via (at 91 98.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 89 98.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 87 98.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 95.75 107) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 93.25 107) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1) (tstamp 620905D8))
+  (via (at 90.75 107) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 100 116.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 115 101.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 85 98.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 100 107.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 107.75 109) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 98.5 92.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (via (at 105.5 93) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
+  (segment (start 106.175 106.05) (end 106 106.225) (width 0.25) (layer B.Cu) (net 2))
+  (segment (start 108 106.05) (end 106.175 106.05) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 104.775 106.225) (end 101.75 109.25) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 106 106.225) (end 104.775 106.225) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 101.75 109.25) (end 101.75 110.6) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 109.5 104.55) (end 108 106.05) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 109.5 91.5) (end 109.5 104.55) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 108 90) (end 109.5 91.5) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 108 90) (end 107 90) (width 0.4) (layer B.Cu) (net 2))
+  (segment (start 106 86) (end 107 86) (width 0.25) (layer B.Cu) (net 3))
+  (segment (start 104.5 87.5) (end 106 86) (width 0.25) (layer B.Cu) (net 3))
+  (segment (start 104.5 94) (end 104.5 87.5) (width 0.25) (layer B.Cu) (net 3))
+  (segment (start 107.5 101.5) (end 107.5 97) (width 0.25) (layer B.Cu) (net 3))
+  (segment (start 107.5 97) (end 104.5 94) (width 0.25) (layer B.Cu) (net 3))
+  (segment (start 99.65 109.35) (end 107.5 101.5) (width 0.25) (layer B.Cu) (net 3))
+  (segment (start 99.65 110.6) (end 99.65 109.35) (width 0.25) (layer B.Cu) (net 3))
+  (segment (start 113 104) (end 113 105.675) (width 0.25) (layer B.Cu) (net 4))
+  (segment (start 111.5 102.5) (end 113 104) (width 0.25) (layer B.Cu) (net 4))
+  (segment (start 111.5 91.5) (end 111.5 102.5) (width 0.25) (layer B.Cu) (net 4))
+  (segment (start 108 88) (end 111.5 91.5) (width 0.25) (layer B.Cu) (net 4))
+  (segment (start 113 105.675) (end 113.325 106) (width 0.25) (layer B.Cu) (net 4))
+  (segment (start 107 88) (end 108 88) (width 0.25) (layer B.Cu) (net 4))
+  (segment (start 86 92) (end 92 86) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 86 103.5) (end 86 92) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 91.5 109) (end 86 103.5) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 96.5 109) (end 91.5 109) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 96.85 109.35) (end 96.5 109) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 92 86) (end 93 86) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 96.85 110.6) (end 96.85 109.35) (width 0.25) (layer B.Cu) (net 5))
+  (segment (start 96.686401 108.549991) (end 97.55 109.413589) (width 0.25) (layer B.Cu) (net 6))
+  (segment (start 93.549991 108.549991) (end 96.686401 108.549991) (width 0.25) (layer B.Cu) (net 6))
+  (segment (start 88 103) (end 93.549991 108.549991) (width 0.25) (layer B.Cu) (net 6))
+  (segment (start 97.55 109.413589) (end 97.55 110.6) (width 0.25) (layer B.Cu) (net 6))
+  (segment (start 88 92) (end 88 103) (width 0.25) (layer B.Cu) (net 6))
+  (segment (start 92 88) (end 88 92) (width 0.25) (layer B.Cu) (net 6))
+  (segment (start 93 88) (end 92 88) (width 0.25) (layer B.Cu) (net 6))
+  (segment (start 90 92.5) (end 92.5 90) (width 0.25) (layer B.Cu) (net 7))
+  (segment (start 95.5 108) (end 90 102.5) (width 0.25) (layer B.Cu) (net 7))
+  (segment (start 90 102.5) (end 90 92.5) (width 0.25) (layer B.Cu) (net 7))
+  (segment (start 97 108) (end 95.5 108) (width 0.25) (layer B.Cu) (net 7))
+  (segment (start 98.25 109.25) (end 97 108) (width 0.25) (layer B.Cu) (net 7))
+  (segment (start 92.5 90) (end 93 90) (width 0.25) (layer B.Cu) (net 7))
+  (segment (start 98.25 110.6) (end 98.25 109.25) (width 0.25) (layer B.Cu) (net 7))
+  (segment (start 92 93) (end 93 92) (width 0.25) (layer B.Cu) (net 8))
+  (segment (start 92 102) (end 92 93) (width 0.25) (layer B.Cu) (net 8))
+  (segment (start 98.95 108.95) (end 92 102) (width 0.25) (layer B.Cu) (net 8))
+  (segment (start 98.95 110.6) (end 98.95 108.95) (width 0.25) (layer B.Cu) (net 8))
+  (segment (start 103.725 108.325) (end 104.5 108.325) (width 0.25) (layer B.Cu) (net 9))
+  (segment (start 102.45 109.6) (end 103.725 108.325) (width 0.25) (layer B.Cu) (net 9))
+  (segment (start 102.45 110.6) (end 102.45 109.6) (width 0.25) (layer B.Cu) (net 9))
+  (segment (start 103.47501 109.27499) (end 104.77499 109.27499) (width 0.25) (layer B.Cu) (net 10))
+  (segment (start 103.15 109.6) (end 103.47501 109.27499) (width 0.25) (layer B.Cu) (net 10))
+  (segment (start 103.15 110.6) (end 103.15 109.6) (width 0.25) (layer B.Cu) (net 10))
+  (segment (start 106 110.5) (end 109 110.5) (width 0.25) (layer B.Cu) (net 10))
+  (segment (start 104.77499 109.27499) (end 106 110.5) (width 0.25) (layer B.Cu) (net 10))
+  (segment (start 111 108.175) (end 111.675 107.5) (width 0.25) (layer B.Cu) (net 11))
+  (segment (start 111 109.55) (end 111 108.175) (width 0.25) (layer B.Cu) (net 11))
+  (segment (start 111.675 106) (end 111.675 107.5) (width 0.25) (layer B.Cu) (net 11))
 
-  (zone (net 1) (net_name GND) (layer B.Cu) (tstamp 0) (hatch edge 0.508)
+  (zone (net 1) (net_name GND) (layer F.Cu) (tstamp 620B8EC8) (hatch edge 0.508)
     (connect_pads (clearance 0.254))
     (min_thickness 0.254)
     (fill yes (arc_segments 32) (thermal_gap 0.254) (thermal_bridge_width 0.508))
     (polygon
       (pts
-        (xy 20 20) (xy -20 20) (xy -20 -20) (xy 20 -20)
+        (xy 120 120) (xy 80 120) (xy 80 80) (xy 120 80)
       )
     )
     (filled_polygon
       (pts
-        (xy 1.617759 -16.941937) (xy 3.220867 -16.711444) (xy 4.794806 -16.329611) (xy 6.325323 -15.799894) (xy 7.798557 -15.127091)
-        (xy 9.201166 -14.317294) (xy 10.520448 -13.377838) (xy 11.744455 -12.31723) (xy 12.862102 -11.145075) (xy 13.863268 -9.871989)
-        (xy 14.738886 -8.5095) (xy 15.481027 -7.069948) (xy 16.082969 -5.56637) (xy 16.539261 -4.012381) (xy 16.845771 -2.422056)
-        (xy 16.999723 -0.809797) (xy 16.999723 0.809797) (xy 16.845771 2.422056) (xy 16.539261 4.012381) (xy 16.082969 5.56637)
-        (xy 15.481027 7.069948) (xy 14.738886 8.5095) (xy 13.863268 9.871989) (xy 12.862102 11.145075) (xy 11.744455 12.31723)
-        (xy 10.520448 13.377838) (xy 9.201166 14.317294) (xy 7.798557 15.127091) (xy 6.325323 15.799894) (xy 4.794806 16.329611)
-        (xy 3.220867 16.711444) (xy 1.617759 16.941937) (xy 0 17.019) (xy -1.617759 16.941937) (xy -3.220867 16.711444)
-        (xy -4.794806 16.329611) (xy -6.325323 15.799894) (xy -7.798557 15.127091) (xy -9.201166 14.317294) (xy -10.520448 13.377838)
-        (xy -11.744455 12.31723) (xy -12.142282 11.9) (xy -4.407843 11.9) (xy -4.400487 11.974689) (xy -4.378701 12.046508)
-        (xy -4.343322 12.112696) (xy -4.295711 12.170711) (xy -4.237696 12.218322) (xy -4.171508 12.253701) (xy -4.099689 12.275487)
-        (xy -4.025 12.282843) (xy -3.99325 12.281) (xy -3.898 12.18575) (xy -3.898 11.027) (xy -4.31075 11.027)
-        (xy -4.406 11.12225) (xy -4.407843 11.9) (xy -12.142282 11.9) (xy -12.862102 11.145075) (xy -13.841239 9.9)
-        (xy -4.407843 9.9) (xy -4.406 10.67775) (xy -4.31075 10.773) (xy -3.898 10.773) (xy -3.898 9.61425)
-        (xy -3.99325 9.519) (xy -4.025 9.517157) (xy -4.099689 9.524513) (xy -4.171508 9.546299) (xy -4.237696 9.581678)
-        (xy -4.295711 9.629289) (xy -4.343322 9.687304) (xy -4.378701 9.753492) (xy -4.400487 9.825311) (xy -4.407843 9.9)
-        (xy -13.841239 9.9) (xy -13.863268 9.871989) (xy -14.738886 8.5095) (xy -15.481027 7.069948) (xy -16.082969 5.56637)
-        (xy -16.539261 4.012381) (xy -16.845771 2.422056) (xy -16.999723 0.809797) (xy -16.999723 -0.809797) (xy -16.845771 -2.422056)
-        (xy -16.539261 -4.012381) (xy -16.082969 -5.56637) (xy -15.50903 -7) (xy -14.508447 -7) (xy -14.506 -6.975154)
-        (xy -14.505999 3.475144) (xy -14.508447 3.5) (xy -14.498678 3.599192) (xy -14.469745 3.694574) (xy -14.469744 3.694575)
-        (xy -14.422758 3.782479) (xy -14.359526 3.859527) (xy -14.340219 3.875372) (xy -8.875372 9.34022) (xy -8.859527 9.359527)
-        (xy -8.782479 9.422759) (xy -8.694914 9.469564) (xy -8.694575 9.469745) (xy -8.599193 9.498678) (xy -8.5 9.508448)
-        (xy -8.475146 9.506) (xy -3.709591 9.506) (xy -3.697149 9.518443) (xy -3.70675 9.519) (xy -3.802 9.61425)
-        (xy -3.802 10.773) (xy -3.707843 10.773) (xy -3.707843 11.027) (xy -3.802 11.027) (xy -3.802 12.18575)
-        (xy -3.70675 12.281) (xy -3.675 12.282843) (xy -3.600311 12.275487) (xy -3.528492 12.253701) (xy -3.466762 12.220705)
-        (xy -3.417492 12.24704) (xy -3.329259 12.273805) (xy -3.2375 12.282843) (xy -3.0625 12.282843) (xy -2.970741 12.273805)
-        (xy -2.882508 12.24704) (xy -2.801191 12.203576) (xy -2.8 12.202599) (xy -2.798809 12.203576) (xy -2.717492 12.24704)
-        (xy -2.629259 12.273805) (xy -2.5375 12.282843) (xy -2.3625 12.282843) (xy -2.270741 12.273805) (xy -2.182508 12.24704)
-        (xy -2.101191 12.203576) (xy -2.1 12.202599) (xy -2.098809 12.203576) (xy -2.017492 12.24704) (xy -1.929259 12.273805)
-        (xy -1.8375 12.282843) (xy -1.6625 12.282843) (xy -1.570741 12.273805) (xy -1.482508 12.24704) (xy -1.401191 12.203576)
-        (xy -1.4 12.202599) (xy -1.398809 12.203576) (xy -1.317492 12.24704) (xy -1.229259 12.273805) (xy -1.1375 12.282843)
-        (xy -0.9625 12.282843) (xy -0.870741 12.273805) (xy -0.782508 12.24704) (xy -0.701191 12.203576) (xy -0.7 12.202599)
-        (xy -0.698809 12.203576) (xy -0.617492 12.24704) (xy -0.529259 12.273805) (xy -0.4375 12.282843) (xy -0.2625 12.282843)
-        (xy -0.170741 12.273805) (xy -0.082508 12.24704) (xy -0.033238 12.220705) (xy 0.028492 12.253701) (xy 0.100311 12.275487)
-        (xy 0.175 12.282843) (xy 0.20675 12.281) (xy 0.302 12.18575) (xy 0.302 11.027) (xy 0.398 11.027)
-        (xy 0.398 12.18575) (xy 0.49325 12.281) (xy 0.525 12.282843) (xy 0.599689 12.275487) (xy 0.671508 12.253701)
-        (xy 0.7 12.238471) (xy 0.728492 12.253701) (xy 0.800311 12.275487) (xy 0.875 12.282843) (xy 0.90675 12.281)
-        (xy 1.002 12.18575) (xy 1.002 11.027) (xy 0.398 11.027) (xy 0.302 11.027) (xy 0.207843 11.027)
-        (xy 0.207843 10.773) (xy 0.302 10.773) (xy 0.302 9.61425) (xy 0.398 9.61425) (xy 0.398 10.773)
-        (xy 1.002 10.773) (xy 1.002 9.61425) (xy 1.098 9.61425) (xy 1.098 10.773) (xy 1.192157 10.773)
-        (xy 1.192157 11.027) (xy 1.098 11.027) (xy 1.098 12.18575) (xy 1.19325 12.281) (xy 1.225 12.282843)
-        (xy 1.299689 12.275487) (xy 1.371508 12.253701) (xy 1.433238 12.220705) (xy 1.482508 12.24704) (xy 1.570741 12.273805)
-        (xy 1.6625 12.282843) (xy 1.8375 12.282843) (xy 1.929259 12.273805) (xy 2.017492 12.24704) (xy 2.098809 12.203576)
-        (xy 2.1 12.202599) (xy 2.101191 12.203576) (xy 2.182508 12.24704) (xy 2.270741 12.273805) (xy 2.3625 12.282843)
-        (xy 2.5375 12.282843) (xy 2.629259 12.273805) (xy 2.717492 12.24704) (xy 2.798809 12.203576) (xy 2.8 12.202599)
-        (xy 2.801191 12.203576) (xy 2.882508 12.24704) (xy 2.970741 12.273805) (xy 3.0625 12.282843) (xy 3.2375 12.282843)
-        (xy 3.329259 12.273805) (xy 3.417492 12.24704) (xy 3.466762 12.220705) (xy 3.528492 12.253701) (xy 3.600311 12.275487)
-        (xy 3.675 12.282843) (xy 3.70675 12.281) (xy 3.802 12.18575) (xy 3.802 11.027) (xy 3.898 11.027)
-        (xy 3.898 12.18575) (xy 3.99325 12.281) (xy 4.025 12.282843) (xy 4.099689 12.275487) (xy 4.171508 12.253701)
-        (xy 4.237696 12.218322) (xy 4.295711 12.170711) (xy 4.343322 12.112696) (xy 4.378701 12.046508) (xy 4.400487 11.974689)
-        (xy 4.407843 11.9) (xy 4.407725 11.85) (xy 10.167157 11.85) (xy 10.174513 11.924689) (xy 10.196299 11.996508)
-        (xy 10.231678 12.062696) (xy 10.279289 12.120711) (xy 10.337304 12.168322) (xy 10.403492 12.203701) (xy 10.475311 12.225487)
-        (xy 10.55 12.232843) (xy 10.77775 12.231) (xy 10.873 12.13575) (xy 10.873 11.577) (xy 11.127 11.577)
-        (xy 11.127 12.13575) (xy 11.22225 12.231) (xy 11.45 12.232843) (xy 11.524689 12.225487) (xy 11.596508 12.203701)
-        (xy 11.662696 12.168322) (xy 11.720711 12.120711) (xy 11.768322 12.062696) (xy 11.803701 11.996508) (xy 11.825487 11.924689)
-        (xy 11.832843 11.85) (xy 11.831 11.67225) (xy 11.73575 11.577) (xy 11.127 11.577) (xy 10.873 11.577)
-        (xy 10.26425 11.577) (xy 10.169 11.67225) (xy 10.167157 11.85) (xy 4.407725 11.85) (xy 4.406 11.12225)
-        (xy 4.31075 11.027) (xy 3.898 11.027) (xy 3.802 11.027) (xy 3.707843 11.027) (xy 3.707843 10.773)
-        (xy 3.802 10.773) (xy 3.802 10.753) (xy 3.898 10.753) (xy 3.898 10.773) (xy 4.31075 10.773)
-        (xy 4.406 10.67775) (xy 4.407843 9.9) (xy 4.400487 9.825311) (xy 4.387042 9.78099) (xy 4.565399 9.78099)
-        (xy 5.624628 10.84022) (xy 5.640473 10.859527) (xy 5.717521 10.922759) (xy 5.786309 10.959527) (xy 5.805425 10.969745)
-        (xy 5.900807 10.998678) (xy 6 11.008448) (xy 6.024854 11.006) (xy 8.184011 11.006) (xy 8.196299 11.046508)
-        (xy 8.231678 11.112696) (xy 8.279289 11.170711) (xy 8.337304 11.218322) (xy 8.403492 11.253701) (xy 8.475311 11.275487)
-        (xy 8.55 11.282843) (xy 9.45 11.282843) (xy 9.524689 11.275487) (xy 9.596508 11.253701) (xy 9.662696 11.218322)
-        (xy 9.720711 11.170711) (xy 9.768322 11.112696) (xy 9.801834 11.05) (xy 10.167157 11.05) (xy 10.169 11.22775)
-        (xy 10.26425 11.323) (xy 10.873 11.323) (xy 10.873 10.76425) (xy 11.127 10.76425) (xy 11.127 11.323)
-        (xy 11.73575 11.323) (xy 11.831 11.22775) (xy 11.832843 11.05) (xy 11.825487 10.975311) (xy 11.803701 10.903492)
-        (xy 11.768322 10.837304) (xy 11.720711 10.779289) (xy 11.662696 10.731678) (xy 11.596508 10.696299) (xy 11.524689 10.674513)
-        (xy 11.45 10.667157) (xy 11.22225 10.669) (xy 11.127 10.76425) (xy 10.873 10.76425) (xy 10.77775 10.669)
-        (xy 10.55 10.667157) (xy 10.475311 10.674513) (xy 10.403492 10.696299) (xy 10.337304 10.731678) (xy 10.279289 10.779289)
-        (xy 10.231678 10.837304) (xy 10.196299 10.903492) (xy 10.174513 10.975311) (xy 10.167157 11.05) (xy 9.801834 11.05)
-        (xy 9.803701 11.046508) (xy 9.825487 10.974689) (xy 9.832843 10.9) (xy 9.832843 10.1) (xy 9.825487 10.025311)
-        (xy 9.803701 9.953492) (xy 9.768322 9.887304) (xy 9.720711 9.829289) (xy 9.662696 9.781678) (xy 9.596508 9.746299)
-        (xy 9.524689 9.724513) (xy 9.45 9.717157) (xy 8.55 9.717157) (xy 8.475311 9.724513) (xy 8.403492 9.746299)
-        (xy 8.337304 9.781678) (xy 8.279289 9.829289) (xy 8.231678 9.887304) (xy 8.196299 9.953492) (xy 8.184011 9.994)
-        (xy 6.209592 9.994) (xy 5.365592 9.15) (xy 10.167157 9.15) (xy 10.167157 9.95) (xy 10.174513 10.024689)
-        (xy 10.196299 10.096508) (xy 10.231678 10.162696) (xy 10.279289 10.220711) (xy 10.337304 10.268322) (xy 10.403492 10.303701)
-        (xy 10.475311 10.325487) (xy 10.55 10.332843) (xy 11.45 10.332843) (xy 11.524689 10.325487) (xy 11.596508 10.303701)
-        (xy 11.662696 10.268322) (xy 11.720711 10.220711) (xy 11.768322 10.162696) (xy 11.803701 10.096508) (xy 11.825487 10.024689)
-        (xy 11.832843 9.95) (xy 11.832843 9.15) (xy 11.825487 9.075311) (xy 11.803701 9.003492) (xy 11.768322 8.937304)
-        (xy 11.720711 8.879289) (xy 11.662696 8.831678) (xy 11.596508 8.796299) (xy 11.524689 8.774513) (xy 11.506 8.772672)
-        (xy 11.506 8.384591) (xy 11.532748 8.357843) (xy 11.875 8.357843) (xy 11.988707 8.346644) (xy 12.098044 8.313477)
-        (xy 12.19881 8.259616) (xy 12.287132 8.187132) (xy 12.359616 8.09881) (xy 12.413477 7.998044) (xy 12.420467 7.975)
-        (xy 12.542157 7.975) (xy 12.549513 8.049689) (xy 12.571299 8.121508) (xy 12.606678 8.187696) (xy 12.654289 8.245711)
-        (xy 12.712304 8.293322) (xy 12.778492 8.328701) (xy 12.850311 8.350487) (xy 12.925 8.357843) (xy 13.10275 8.356)
-        (xy 13.198 8.26075) (xy 13.198 7.627) (xy 13.452 7.627) (xy 13.452 8.26075) (xy 13.54725 8.356)
-        (xy 13.725 8.357843) (xy 13.799689 8.350487) (xy 13.871508 8.328701) (xy 13.937696 8.293322) (xy 13.995711 8.245711)
-        (xy 14.043322 8.187696) (xy 14.078701 8.121508) (xy 14.100487 8.049689) (xy 14.107843 7.975) (xy 14.106 7.72225)
-        (xy 14.01075 7.627) (xy 13.452 7.627) (xy 13.198 7.627) (xy 12.63925 7.627) (xy 12.544 7.72225)
-        (xy 12.542157 7.975) (xy 12.420467 7.975) (xy 12.446644 7.888707) (xy 12.457843 7.775) (xy 12.457843 7.225)
-        (xy 12.446644 7.111293) (xy 12.413477 7.001956) (xy 12.359616 6.90119) (xy 12.287132 6.812868) (xy 12.210527 6.75)
-        (xy 12.287132 6.687132) (xy 12.359616 6.59881) (xy 12.413477 6.498044) (xy 12.446644 6.388707) (xy 12.457843 6.275)
-        (xy 12.457843 5.725) (xy 12.446644 5.611293) (xy 12.413477 5.501956) (xy 12.359616 5.40119) (xy 12.287132 5.312868)
-        (xy 12.19881 5.240384) (xy 12.098044 5.186523) (xy 11.988707 5.153356) (xy 11.875 5.142157) (xy 11.475 5.142157)
-        (xy 11.361293 5.153356) (xy 11.251956 5.186523) (xy 11.15119 5.240384) (xy 11.062868 5.312868) (xy 10.990384 5.40119)
-        (xy 10.936523 5.501956) (xy 10.903356 5.611293) (xy 10.892157 5.725) (xy 10.892157 6.275) (xy 10.903356 6.388707)
-        (xy 10.936523 6.498044) (xy 10.990384 6.59881) (xy 11.062868 6.687132) (xy 11.139473 6.75) (xy 11.062868 6.812868)
-        (xy 10.990384 6.90119) (xy 10.936523 7.001956) (xy 10.903356 7.111293) (xy 10.892157 7.225) (xy 10.892157 7.567252)
-        (xy 10.65978 7.799629) (xy 10.640474 7.815473) (xy 10.577242 7.892521) (xy 10.552127 7.939508) (xy 10.530255 7.980426)
-        (xy 10.501322 8.075808) (xy 10.491553 8.175) (xy 10.494001 8.199856) (xy 10.494001 8.772672) (xy 10.475311 8.774513)
-        (xy 10.403492 8.796299) (xy 10.337304 8.831678) (xy 10.279289 8.879289) (xy 10.231678 8.937304) (xy 10.196299 9.003492)
-        (xy 10.174513 9.075311) (xy 10.167157 9.15) (xy 5.365592 9.15) (xy 5.168233 8.952642) (xy 5.187132 8.937132)
-        (xy 5.259616 8.84881) (xy 5.313477 8.748044) (xy 5.346644 8.638707) (xy 5.353851 8.56553) (xy 5.378492 8.578701)
-        (xy 5.450311 8.600487) (xy 5.525 8.607843) (xy 5.77775 8.606) (xy 5.873 8.51075) (xy 5.873 7.902)
-        (xy 6.127 7.902) (xy 6.127 8.51075) (xy 6.22225 8.606) (xy 6.475 8.607843) (xy 6.549689 8.600487)
-        (xy 6.621508 8.578701) (xy 6.687696 8.543322) (xy 6.745711 8.495711) (xy 6.783224 8.45) (xy 6.892157 8.45)
-        (xy 6.899513 8.524689) (xy 6.921299 8.596508) (xy 6.956678 8.662696) (xy 7.004289 8.720711) (xy 7.062304 8.768322)
-        (xy 7.128492 8.803701) (xy 7.200311 8.825487) (xy 7.275 8.832843) (xy 7.77775 8.831) (xy 7.873 8.73575)
-        (xy 7.873 8.077) (xy 8.127 8.077) (xy 8.127 8.73575) (xy 8.22225 8.831) (xy 8.725 8.832843)
-        (xy 8.799689 8.825487) (xy 8.871508 8.803701) (xy 8.937696 8.768322) (xy 8.995711 8.720711) (xy 9.043322 8.662696)
-        (xy 9.078701 8.596508) (xy 9.100487 8.524689) (xy 9.107843 8.45) (xy 9.106 8.17225) (xy 9.01075 8.077)
-        (xy 8.127 8.077) (xy 7.873 8.077) (xy 6.98925 8.077) (xy 6.894 8.17225) (xy 6.892157 8.45)
-        (xy 6.783224 8.45) (xy 6.793322 8.437696) (xy 6.828701 8.371508) (xy 6.850487 8.299689) (xy 6.857843 8.225)
-        (xy 6.856 7.99725) (xy 6.76075 7.902) (xy 6.127 7.902) (xy 5.873 7.902) (xy 5.853 7.902)
-        (xy 5.853 7.648) (xy 5.873 7.648) (xy 5.873 7.628) (xy 6.127 7.628) (xy 6.127 7.648)
-        (xy 6.76075 7.648) (xy 6.856 7.55275) (xy 6.856831 7.45) (xy 6.892157 7.45) (xy 6.894 7.72775)
-        (xy 6.98925 7.823) (xy 7.873 7.823) (xy 7.873 7.16425) (xy 8.127 7.16425) (xy 8.127 7.823)
-        (xy 9.01075 7.823) (xy 9.106 7.72775) (xy 9.107843 7.45) (xy 9.100487 7.375311) (xy 9.078701 7.303492)
-        (xy 9.043322 7.237304) (xy 8.995711 7.179289) (xy 8.937696 7.131678) (xy 8.871508 7.096299) (xy 8.799689 7.074513)
-        (xy 8.725 7.067157) (xy 8.22225 7.069) (xy 8.127 7.16425) (xy 7.873 7.16425) (xy 7.77775 7.069)
-        (xy 7.275 7.067157) (xy 7.200311 7.074513) (xy 7.128492 7.096299) (xy 7.062304 7.131678) (xy 7.004289 7.179289)
-        (xy 6.956678 7.237304) (xy 6.921299 7.303492) (xy 6.899513 7.375311) (xy 6.892157 7.45) (xy 6.856831 7.45)
-        (xy 6.857843 7.325) (xy 6.850487 7.250311) (xy 6.828701 7.178492) (xy 6.793322 7.112304) (xy 6.745711 7.054289)
-        (xy 6.687696 7.006678) (xy 6.621508 6.971299) (xy 6.580967 6.959001) (xy 6.587699 6.955403) (xy 6.67981 6.87981)
-        (xy 6.755403 6.787699) (xy 6.811574 6.682611) (xy 6.82723 6.631) (xy 6.987805 6.631) (xy 6.99881 6.651589)
-        (xy 7.077512 6.747488) (xy 7.173411 6.82619) (xy 7.282821 6.884671) (xy 7.401538 6.920683) (xy 7.525 6.932843)
-        (xy 8.475 6.932843) (xy 8.598462 6.920683) (xy 8.717179 6.884671) (xy 8.826589 6.82619) (xy 8.922488 6.747488)
-        (xy 9.00119 6.651589) (xy 9.059671 6.542179) (xy 9.095683 6.423462) (xy 9.107843 6.3) (xy 9.107843 5.8)
-        (xy 9.104599 5.767059) (xy 9.890645 4.981013) (xy 9.912817 4.962817) (xy 9.985421 4.874348) (xy 10.039371 4.773415)
-        (xy 10.072593 4.663896) (xy 10.081 4.57854) (xy 10.081 4.578538) (xy 10.083811 4.550001) (xy 10.081 4.521464)
-        (xy 10.081 -3.97146) (xy 10.083811 -4) (xy 10.072593 -4.113896) (xy 10.039371 -4.223415) (xy 9.985421 -4.324348)
-        (xy 9.93101 -4.390649) (xy 9.931008 -4.390651) (xy 9.912817 -4.412817) (xy 9.890652 -4.431007) (xy 5.081 -9.240657)
-        (xy 5.081 -10.976499) (xy 5.106642 -11.002141) (xy 5.192113 -11.130058) (xy 5.250987 -11.272191) (xy 5.281 -11.423078)
-        (xy 5.281 -11.576922) (xy 5.250987 -11.727809) (xy 5.192113 -11.869942) (xy 5.106642 -11.997859) (xy 4.997859 -12.106642)
-        (xy 4.869942 -12.192113) (xy 4.727809 -12.250987) (xy 4.576922 -12.281) (xy 4.423078 -12.281) (xy 4.272191 -12.250987)
-        (xy 4.130058 -12.192113) (xy 4.002141 -12.106642) (xy 3.893358 -11.997859) (xy 3.807887 -11.869942) (xy 3.749013 -11.727809)
-        (xy 3.719 -11.576922) (xy 3.719 -11.423078) (xy 3.749013 -11.272191) (xy 3.807887 -11.130058) (xy 3.893358 -11.002141)
-        (xy 3.919 -10.976499) (xy 3.919001 -9.02855) (xy 3.916189 -9) (xy 3.927407 -8.886105) (xy 3.960629 -8.776586)
-        (xy 3.9922 -8.717521) (xy 4.01458 -8.675652) (xy 4.087184 -8.587183) (xy 4.109356 -8.568987) (xy 8.919 -3.759341)
-        (xy 8.919001 4.309341) (xy 8.061186 5.167157) (xy 7.525 5.167157) (xy 7.401538 5.179317) (xy 7.282821 5.215329)
-        (xy 7.173411 5.27381) (xy 7.077512 5.352512) (xy 6.99881 5.448411) (xy 6.987805 5.469) (xy 6.539811 5.469)
-        (xy 6.482611 5.438426) (xy 6.368584 5.403837) (xy 6.25 5.392157) (xy 5.75 5.392157) (xy 5.631416 5.403837)
-        (xy 5.517389 5.438426) (xy 5.412301 5.494597) (xy 5.32019 5.57019) (xy 5.259616 5.644) (xy 4.803539 5.644)
-        (xy 4.774999 5.641189) (xy 4.661104 5.652407) (xy 4.551585 5.685629) (xy 4.450652 5.739579) (xy 4.362183 5.812183)
-        (xy 4.343987 5.834355) (xy 4.286185 5.892157) (xy 4.225 5.892157) (xy 4.111293 5.903356) (xy 4.001956 5.936523)
-        (xy 3.90119 5.990384) (xy 3.812868 6.062868) (xy 3.740384 6.15119) (xy 3.686523 6.251956) (xy 3.653356 6.361293)
-        (xy 3.642157 6.475) (xy 3.642157 6.536185) (xy 1.35936 8.818983) (xy 1.337183 8.837183) (xy 1.277607 8.909778)
-        (xy 1.264579 8.925653) (xy 1.210629 9.026586) (xy 1.177407 9.136105) (xy 1.166189 9.25) (xy 1.169 9.27854)
-        (xy 1.169 9.54325) (xy 1.098 9.61425) (xy 1.002 9.61425) (xy 0.90675 9.519) (xy 0.875 9.517157)
-        (xy 0.800311 9.524513) (xy 0.728492 9.546299) (xy 0.7 9.561529) (xy 0.671508 9.546299) (xy 0.599689 9.524513)
-        (xy 0.525 9.517157) (xy 0.49325 9.519) (xy 0.398 9.61425) (xy 0.302 9.61425) (xy 0.20675 9.519)
-        (xy 0.197148 9.518443) (xy 7.84022 1.875372) (xy 7.859527 1.859527) (xy 7.922759 1.782479) (xy 7.969745 1.694575)
-        (xy 7.998678 1.599193) (xy 8.006 1.524854) (xy 8.006 1.524847) (xy 8.008447 1.500001) (xy 8.006 1.475155)
-        (xy 8.006 -2.975155) (xy 8.008447 -3.000001) (xy 8.006 -3.024847) (xy 8.006 -3.024854) (xy 7.998678 -3.099193)
-        (xy 7.969745 -3.194575) (xy 7.922759 -3.282479) (xy 7.859527 -3.359527) (xy 7.84022 -3.375372) (xy 3.506 -7.709591)
-        (xy 3.506 -13.576922) (xy 3.719 -13.576922) (xy 3.719 -13.423078) (xy 3.749013 -13.272191) (xy 3.807887 -13.130058)
-        (xy 3.893358 -13.002141) (xy 4.002141 -12.893358) (xy 4.130058 -12.807887) (xy 4.272191 -12.749013) (xy 4.423078 -12.719)
-        (xy 4.565409 -12.719) (xy 10.994 -6.290408) (xy 10.994001 2.475144) (xy 10.991553 2.5) (xy 11.001322 2.599192)
-        (xy 11.030255 2.694574) (xy 11.052127 2.735492) (xy 11.077242 2.782479) (xy 11.140474 2.859527) (xy 11.15978 2.875372)
-        (xy 12.494 4.209592) (xy 12.494001 5.650144) (xy 12.491553 5.675) (xy 12.501322 5.774192) (xy 12.530255 5.869574)
-        (xy 12.542157 5.89184) (xy 12.542157 6.275) (xy 12.553356 6.388707) (xy 12.586523 6.498044) (xy 12.640384 6.59881)
-        (xy 12.712868 6.687132) (xy 12.727068 6.698786) (xy 12.712304 6.706678) (xy 12.654289 6.754289) (xy 12.606678 6.812304)
-        (xy 12.571299 6.878492) (xy 12.549513 6.950311) (xy 12.542157 7.025) (xy 12.544 7.27775) (xy 12.63925 7.373)
-        (xy 13.198 7.373) (xy 13.198 7.353) (xy 13.452 7.353) (xy 13.452 7.373) (xy 14.01075 7.373)
-        (xy 14.106 7.27775) (xy 14.107843 7.025) (xy 14.100487 6.950311) (xy 14.078701 6.878492) (xy 14.043322 6.812304)
-        (xy 13.995711 6.754289) (xy 13.937696 6.706678) (xy 13.922932 6.698786) (xy 13.937132 6.687132) (xy 14.009616 6.59881)
-        (xy 14.063477 6.498044) (xy 14.096644 6.388707) (xy 14.107843 6.275) (xy 14.107843 5.725) (xy 14.096644 5.611293)
-        (xy 14.063477 5.501956) (xy 14.009616 5.40119) (xy 13.937132 5.312868) (xy 13.84881 5.240384) (xy 13.748044 5.186523)
-        (xy 13.638707 5.153356) (xy 13.525 5.142157) (xy 13.506 5.142157) (xy 13.506 4.024845) (xy 13.508447 3.999999)
-        (xy 13.506 3.975153) (xy 13.506 3.975146) (xy 13.498678 3.900807) (xy 13.469745 3.805425) (xy 13.422759 3.717521)
-        (xy 13.359527 3.640473) (xy 13.34022 3.624628) (xy 12.006 2.290409) (xy 12.006 -6.475146) (xy 12.008448 -6.5)
-        (xy 11.998678 -6.599193) (xy 11.969745 -6.694575) (xy 11.957479 -6.717522) (xy 11.922759 -6.782479) (xy 11.859527 -6.859527)
-        (xy 11.84022 -6.875372) (xy 5.281 -13.434591) (xy 5.281 -13.576922) (xy 5.250987 -13.727809) (xy 5.192113 -13.869942)
-        (xy 5.106642 -13.997859) (xy 4.997859 -14.106642) (xy 4.869942 -14.192113) (xy 4.727809 -14.250987) (xy 4.576922 -14.281)
-        (xy 4.423078 -14.281) (xy 4.272191 -14.250987) (xy 4.130058 -14.192113) (xy 4.002141 -14.106642) (xy 3.893358 -13.997859)
-        (xy 3.807887 -13.869942) (xy 3.749013 -13.727809) (xy 3.719 -13.576922) (xy 3.506 -13.576922) (xy 3.506 -13.790409)
-        (xy 4.434592 -14.719) (xy 4.576922 -14.719) (xy 4.727809 -14.749013) (xy 4.869942 -14.807887) (xy 4.997859 -14.893358)
-        (xy 5.106642 -15.002141) (xy 5.192113 -15.130058) (xy 5.250987 -15.272191) (xy 5.281 -15.423078) (xy 5.281 -15.576922)
-        (xy 5.250987 -15.727809) (xy 5.192113 -15.869942) (xy 5.106642 -15.997859) (xy 4.997859 -16.106642) (xy 4.869942 -16.192113)
-        (xy 4.727809 -16.250987) (xy 4.576922 -16.281) (xy 4.423078 -16.281) (xy 4.272191 -16.250987) (xy 4.130058 -16.192113)
-        (xy 4.002141 -16.106642) (xy 3.893358 -15.997859) (xy 3.807887 -15.869942) (xy 3.749013 -15.727809) (xy 3.719 -15.576922)
-        (xy 3.719 -15.434592) (xy 2.659785 -14.375376) (xy 2.640473 -14.359527) (xy 2.577241 -14.282479) (xy 2.530255 -14.194574)
-        (xy 2.501322 -14.099192) (xy 2.494 -14.024853) (xy 2.494 -14.024846) (xy 2.491553 -14) (xy 2.494 -13.975154)
-        (xy 2.494001 -7.524856) (xy 2.491553 -7.5) (xy 2.501322 -7.400808) (xy 2.530255 -7.305426) (xy 2.552127 -7.264508)
-        (xy 2.577242 -7.217521) (xy 2.640474 -7.140473) (xy 2.659781 -7.124628) (xy 6.994 -2.790408) (xy 6.994001 1.290407)
-        (xy -0.554831 8.83924) (xy -0.565611 8.803701) (xy -0.580255 8.755425) (xy -0.627241 8.667521) (xy -0.690473 8.590473)
-        (xy -0.70978 8.574628) (xy -7.494 1.790409) (xy -7.494 0.524517) (xy -7.401064 0.748884) (xy -7.228043 1.007829)
-        (xy -7.007829 1.228043) (xy -6.748884 1.401064) (xy -6.461161 1.520243) (xy -6.155715 1.581) (xy -5.844285 1.581)
-        (xy -5.538839 1.520243) (xy -5.251116 1.401064) (xy -4.992171 1.228043) (xy -4.771957 1.007829) (xy -4.598936 0.748884)
-        (xy -4.511055 0.536722) (xy -4.355035 1.321086) (xy -4.013624 2.145327) (xy -3.517971 2.887124) (xy -2.887124 3.517971)
-        (xy -2.145327 4.013624) (xy -1.321086 4.355035) (xy -0.446076 4.529086) (xy 0.446076 4.529086) (xy 1.321086 4.355035)
-        (xy 2.145327 4.013624) (xy 2.887124 3.517971) (xy 3.517971 2.887124) (xy 4.013624 2.145327) (xy 4.355035 1.321086)
-        (xy 4.529086 0.446076) (xy 4.529086 -0.446076) (xy 4.355035 -1.321086) (xy 4.013624 -2.145327) (xy 3.517971 -2.887124)
-        (xy 2.887124 -3.517971) (xy 2.145327 -4.013624) (xy 1.321086 -4.355035) (xy 0.446076 -4.529086) (xy -0.446076 -4.529086)
-        (xy -1.321086 -4.355035) (xy -2.145327 -4.013624) (xy -2.887124 -3.517971) (xy -3.517971 -2.887124) (xy -4.013624 -2.145327)
-        (xy -4.355035 -1.321086) (xy -4.511055 -0.536722) (xy -4.598936 -0.748884) (xy -4.771957 -1.007829) (xy -4.992171 -1.228043)
-        (xy -5.251116 -1.401064) (xy -5.538839 -1.520243) (xy -5.844285 -1.581) (xy -6.155715 -1.581) (xy -6.461161 -1.520243)
-        (xy -6.748884 -1.401064) (xy -7.007829 -1.228043) (xy -7.228043 -1.007829) (xy -7.401064 -0.748884) (xy -7.494 -0.524517)
-        (xy -7.494 -5.290409) (xy -4.15978 -8.624628) (xy -4.140473 -8.640473) (xy -4.077241 -8.717521) (xy -4.030255 -8.805425)
-        (xy -4.005782 -8.886105) (xy -4.003948 -8.892151) (xy -4.002141 -8.893358) (xy -3.893358 -9.002141) (xy -3.807887 -9.130058)
-        (xy -3.749013 -9.272191) (xy -3.719 -9.423078) (xy -3.719 -9.576922) (xy -3.749013 -9.727809) (xy -3.807887 -9.869942)
-        (xy -3.893358 -9.997859) (xy -4.002141 -10.106642) (xy -4.130058 -10.192113) (xy -4.272191 -10.250987) (xy -4.423078 -10.281)
-        (xy -4.576922 -10.281) (xy -4.727809 -10.250987) (xy -4.869942 -10.192113) (xy -4.997859 -10.106642) (xy -5.106642 -9.997859)
-        (xy -5.192113 -9.869942) (xy -5.250987 -9.727809) (xy -5.281 -9.576922) (xy -5.281 -9.423078) (xy -5.250987 -9.272191)
-        (xy -5.192113 -9.130058) (xy -5.149424 -9.066168) (xy -8.340219 -5.875372) (xy -8.359526 -5.859527) (xy -8.422758 -5.782479)
-        (xy -8.447873 -5.735492) (xy -8.469745 -5.694574) (xy -8.498678 -5.599192) (xy -8.508447 -5.5) (xy -8.505999 -5.475144)
-        (xy -8.506 1.975154) (xy -8.508447 2) (xy -8.506 2.024846) (xy -8.506 2.024853) (xy -8.498678 2.099192)
-        (xy -8.469745 2.194574) (xy -8.422759 2.282479) (xy -8.359527 2.359527) (xy -8.340215 2.375376) (xy -3.221592 7.494)
-        (xy -4.290408 7.494) (xy -9.494 2.290409) (xy -9.494 -5.790409) (xy -4.565408 -10.719) (xy -4.423078 -10.719)
-        (xy -4.272191 -10.749013) (xy -4.130058 -10.807887) (xy -4.002141 -10.893358) (xy -3.893358 -11.002141) (xy -3.807887 -11.130058)
-        (xy -3.749013 -11.272191) (xy -3.719 -11.423078) (xy -3.719 -11.576922) (xy -3.749013 -11.727809) (xy -3.807887 -11.869942)
-        (xy -3.893358 -11.997859) (xy -4.002141 -12.106642) (xy -4.130058 -12.192113) (xy -4.272191 -12.250987) (xy -4.423078 -12.281)
-        (xy -4.576922 -12.281) (xy -4.727809 -12.250987) (xy -4.869942 -12.192113) (xy -4.997859 -12.106642) (xy -5.106642 -11.997859)
-        (xy -5.192113 -11.869942) (xy -5.250987 -11.727809) (xy -5.281 -11.576922) (xy -5.281 -11.434592) (xy -10.340219 -6.375372)
-        (xy -10.359526 -6.359527) (xy -10.422758 -6.282479) (xy -10.447873 -6.235492) (xy -10.469745 -6.194574) (xy -10.498678 -6.099192)
-        (xy -10.508447 -6) (xy -10.505999 -5.975144) (xy -10.506 2.475154) (xy -10.508447 2.5) (xy -10.506 2.524846)
-        (xy -10.506 2.524853) (xy -10.498678 2.599192) (xy -10.469745 2.694574) (xy -10.422759 2.782479) (xy -10.359527 2.859527)
-        (xy -10.340215 2.875376) (xy -5.171601 8.043991) (xy -6.240417 8.043991) (xy -11.494 2.790409) (xy -11.494 -5.790409)
-        (xy -4.565408 -12.719) (xy -4.423078 -12.719) (xy -4.272191 -12.749013) (xy -4.130058 -12.807887) (xy -4.002141 -12.893358)
-        (xy -3.893358 -13.002141) (xy -3.807887 -13.130058) (xy -3.749013 -13.272191) (xy -3.719 -13.423078) (xy -3.719 -13.576922)
-        (xy -3.749013 -13.727809) (xy -3.807887 -13.869942) (xy -3.893358 -13.997859) (xy -4.002141 -14.106642) (xy -4.130058 -14.192113)
-        (xy -4.272191 -14.250987) (xy -4.423078 -14.281) (xy -4.576922 -14.281) (xy -4.727809 -14.250987) (xy -4.869942 -14.192113)
-        (xy -4.997859 -14.106642) (xy -5.106642 -13.997859) (xy -5.192113 -13.869942) (xy -5.250987 -13.727809) (xy -5.281 -13.576922)
-        (xy -5.281 -13.434592) (xy -12.340215 -6.375376) (xy -12.359527 -6.359527) (xy -12.422759 -6.282479) (xy -12.469745 -6.194574)
-        (xy -12.498678 -6.099192) (xy -12.506 -6.024853) (xy -12.506 -6.024846) (xy -12.508447 -6) (xy -12.506 -5.975154)
-        (xy -12.505999 2.975144) (xy -12.508447 3) (xy -12.498678 3.099192) (xy -12.469745 3.194574) (xy -12.447873 3.235492)
-        (xy -12.422758 3.282479) (xy -12.359526 3.359527) (xy -12.340219 3.375372) (xy -7.221592 8.494) (xy -8.290408 8.494)
-        (xy -13.494 3.290409) (xy -13.494 -6.790409) (xy -5.290408 -14.994) (xy -5.098501 -14.994) (xy -4.997859 -14.893358)
-        (xy -4.869942 -14.807887) (xy -4.727809 -14.749013) (xy -4.576922 -14.719) (xy -4.423078 -14.719) (xy -4.272191 -14.749013)
-        (xy -4.130058 -14.807887) (xy -4.002141 -14.893358) (xy -3.893358 -15.002141) (xy -3.807887 -15.130058) (xy -3.749013 -15.272191)
-        (xy -3.719 -15.423078) (xy -3.719 -15.576922) (xy -3.749013 -15.727809) (xy -3.807887 -15.869942) (xy -3.893358 -15.997859)
-        (xy -4.002141 -16.106642) (xy -4.130058 -16.192113) (xy -4.272191 -16.250987) (xy -4.423078 -16.281) (xy -4.576922 -16.281)
-        (xy -4.727809 -16.250987) (xy -4.869942 -16.192113) (xy -4.997859 -16.106642) (xy -5.098501 -16.006) (xy -5.475155 -16.006)
-        (xy -5.500001 -16.008447) (xy -5.524847 -16.006) (xy -5.524854 -16.006) (xy -5.586512 -15.999927) (xy -5.599194 -15.998678)
-        (xy -5.621393 -15.991944) (xy -5.694575 -15.969745) (xy -5.782479 -15.922759) (xy -5.859527 -15.859527) (xy -5.875372 -15.84022)
-        (xy -14.340215 -7.375376) (xy -14.359527 -7.359527) (xy -14.422759 -7.282479) (xy -14.469745 -7.194574) (xy -14.498678 -7.099192)
-        (xy -14.506 -7.024853) (xy -14.506 -7.024846) (xy -14.508447 -7) (xy -15.50903 -7) (xy -15.481027 -7.069948)
-        (xy -14.738886 -8.5095) (xy -13.863268 -9.871989) (xy -12.862102 -11.145075) (xy -11.744455 -12.31723) (xy -10.520448 -13.377838)
-        (xy -9.201166 -14.317294) (xy -7.798557 -15.127091) (xy -6.325323 -15.799894) (xy -4.794806 -16.329611) (xy -3.220867 -16.711444)
-        (xy -1.617759 -16.941937) (xy 0 -17.019)
+        (xy 101.617759 83.058063) (xy 103.220867 83.288556) (xy 104.794806 83.670389) (xy 106.325323 84.200106) (xy 107.798557 84.872909)
+        (xy 109.201166 85.682706) (xy 110.520448 86.622162) (xy 111.744455 87.68277) (xy 112.862102 88.854925) (xy 113.863268 90.128011)
+        (xy 114.738886 91.4905) (xy 115.481027 92.930052) (xy 116.082969 94.43363) (xy 116.539261 95.987619) (xy 116.845771 97.577944)
+        (xy 116.999723 99.190203) (xy 116.999723 100.809797) (xy 116.845771 102.422056) (xy 116.539261 104.012381) (xy 116.082969 105.56637)
+        (xy 115.481027 107.069948) (xy 114.738886 108.5095) (xy 113.863268 109.871989) (xy 112.862102 111.145075) (xy 111.744455 112.31723)
+        (xy 110.520448 113.377838) (xy 109.201166 114.317294) (xy 107.798557 115.127091) (xy 106.325323 115.799894) (xy 104.794806 116.329611)
+        (xy 103.220867 116.711444) (xy 101.617759 116.941937) (xy 100 117.019) (xy 98.382241 116.941937) (xy 96.779133 116.711444)
+        (xy 95.205194 116.329611) (xy 93.674677 115.799894) (xy 92.201443 115.127091) (xy 90.798834 114.317294) (xy 89.479552 113.377838)
+        (xy 88.255545 112.31723) (xy 87.137898 111.145075) (xy 86.136732 109.871989) (xy 85.261114 108.5095) (xy 84.518973 107.069948)
+        (xy 83.917031 105.56637) (xy 83.460739 104.012381) (xy 83.154229 102.422056) (xy 83.000277 100.809797) (xy 83.000277 99.844285)
+        (xy 92.419 99.844285) (xy 92.419 100.155715) (xy 92.479757 100.461161) (xy 92.598936 100.748884) (xy 92.771957 101.007829)
+        (xy 92.992171 101.228043) (xy 93.251116 101.401064) (xy 93.538839 101.520243) (xy 93.844285 101.581) (xy 94.155715 101.581)
+        (xy 94.461161 101.520243) (xy 94.748884 101.401064) (xy 95.007829 101.228043) (xy 95.228043 101.007829) (xy 95.401064 100.748884)
+        (xy 95.488945 100.536722) (xy 95.644965 101.321086) (xy 95.986376 102.145327) (xy 96.482029 102.887124) (xy 97.112876 103.517971)
+        (xy 97.854673 104.013624) (xy 98.678914 104.355035) (xy 99.553924 104.529086) (xy 100.446076 104.529086) (xy 101.321086 104.355035)
+        (xy 102.145327 104.013624) (xy 102.887124 103.517971) (xy 103.517971 102.887124) (xy 104.013624 102.145327) (xy 104.355035 101.321086)
+        (xy 104.529086 100.446076) (xy 104.529086 99.553924) (xy 104.355035 98.678914) (xy 104.013624 97.854673) (xy 103.517971 97.112876)
+        (xy 102.887124 96.482029) (xy 102.145327 95.986376) (xy 101.321086 95.644965) (xy 100.446076 95.470914) (xy 99.553924 95.470914)
+        (xy 98.678914 95.644965) (xy 97.854673 95.986376) (xy 97.112876 96.482029) (xy 96.482029 97.112876) (xy 95.986376 97.854673)
+        (xy 95.644965 98.678914) (xy 95.488945 99.463278) (xy 95.401064 99.251116) (xy 95.228043 98.992171) (xy 95.007829 98.771957)
+        (xy 94.748884 98.598936) (xy 94.461161 98.479757) (xy 94.155715 98.419) (xy 93.844285 98.419) (xy 93.538839 98.479757)
+        (xy 93.251116 98.598936) (xy 92.992171 98.771957) (xy 92.771957 98.992171) (xy 92.598936 99.251116) (xy 92.479757 99.538839)
+        (xy 92.419 99.844285) (xy 83.000277 99.844285) (xy 83.000277 99.190203) (xy 83.154229 97.577944) (xy 83.460739 95.987619)
+        (xy 83.917031 94.43363) (xy 84.518973 92.930052) (xy 85.261114 91.4905) (xy 86.136732 90.128011) (xy 87.137898 88.854925)
+        (xy 88.255545 87.68277) (xy 89.479552 86.622162) (xy 90.798834 85.682706) (xy 92.022234 84.976375) (xy 98.519 84.976375)
+        (xy 98.519001 91.023626) (xy 98.521393 91.047912) (xy 98.521393 91.060899) (xy 98.522095 91.067579) (xy 98.54385 91.261528)
+        (xy 98.552909 91.304146) (xy 98.561382 91.346938) (xy 98.563368 91.353354) (xy 98.622381 91.539384) (xy 98.63954 91.579418)
+        (xy 98.656167 91.619758) (xy 98.659362 91.625666) (xy 98.753384 91.796691) (xy 98.777997 91.832636) (xy 98.802138 91.868972)
+        (xy 98.806419 91.874147) (xy 98.931869 92.023653) (xy 98.963018 92.054157) (xy 98.993737 92.08509) (xy 98.998941 92.089335)
+        (xy 99.151041 92.211626) (xy 99.187487 92.235475) (xy 99.22366 92.259874) (xy 99.22959 92.263027) (xy 99.402546 92.353447)
+        (xy 99.442954 92.369773) (xy 99.483159 92.386673) (xy 99.489588 92.388614) (xy 99.676814 92.443717) (xy 99.719606 92.45188)
+        (xy 99.762339 92.460652) (xy 99.769023 92.461307) (xy 99.963385 92.478996) (xy 100.006981 92.478692) (xy 100.050576 92.478996)
+        (xy 100.057261 92.478341) (xy 100.251357 92.45794) (xy 100.294038 92.449179) (xy 100.336884 92.441005) (xy 100.343313 92.439064)
+        (xy 100.529751 92.381352) (xy 100.569937 92.36446) (xy 100.61036 92.348127) (xy 100.616286 92.344976) (xy 100.616291 92.344974)
+        (xy 100.616295 92.344971) (xy 100.787967 92.25215) (xy 100.824098 92.227779) (xy 100.86059 92.203899) (xy 100.865795 92.199654)
+        (xy 101.016172 92.07525) (xy 101.046872 92.044335) (xy 101.078038 92.013815) (xy 101.082319 92.00864) (xy 101.205669 91.857398)
+        (xy 101.229785 91.821101) (xy 101.254425 91.785115) (xy 101.257619 91.779207) (xy 101.349244 91.606885) (xy 101.36584 91.56662)
+        (xy 101.383031 91.52651) (xy 101.385017 91.520094) (xy 101.441426 91.333258) (xy 101.44989 91.290511) (xy 101.458957 91.247851)
+        (xy 101.459659 91.241172) (xy 101.478704 91.046938) (xy 101.481 91.023626) (xy 101.481 84.976374) (xy 101.478607 84.952077)
+        (xy 101.478607 84.9391) (xy 101.477905 84.932421) (xy 101.45615 84.738471) (xy 101.44709 84.695847) (xy 101.438618 84.653062)
+        (xy 101.436632 84.646646) (xy 101.377619 84.460616) (xy 101.36046 84.420582) (xy 101.343833 84.380242) (xy 101.340638 84.374334)
+        (xy 101.246616 84.203309) (xy 101.222004 84.167364) (xy 101.197862 84.131028) (xy 101.193581 84.125853) (xy 101.068131 83.976347)
+        (xy 101.037001 83.945862) (xy 101.006263 83.914909) (xy 101.001064 83.91067) (xy 101.00106 83.910666) (xy 101.001056 83.910663)
+        (xy 100.848959 83.788374) (xy 100.81248 83.764503) (xy 100.776339 83.740126) (xy 100.77041 83.736973) (xy 100.597454 83.646553)
+        (xy 100.557057 83.630232) (xy 100.516841 83.613327) (xy 100.510411 83.611385) (xy 100.323186 83.556283) (xy 100.280394 83.54812)
+        (xy 100.237661 83.539348) (xy 100.230977 83.538693) (xy 100.036615 83.521004) (xy 99.993019 83.521308) (xy 99.949423 83.521004)
+        (xy 99.942739 83.521659) (xy 99.748642 83.54206) (xy 99.705955 83.550823) (xy 99.663116 83.558995) (xy 99.656687 83.560936)
+        (xy 99.470249 83.618648) (xy 99.430048 83.635547) (xy 99.389639 83.651873) (xy 99.383709 83.655026) (xy 99.212033 83.747851)
+        (xy 99.175929 83.772204) (xy 99.13941 83.796101) (xy 99.134205 83.800346) (xy 98.983827 83.92475) (xy 98.953108 83.955684)
+        (xy 98.921962 83.986185) (xy 98.917681 83.99136) (xy 98.794331 84.142602) (xy 98.77021 84.178907) (xy 98.745576 84.214884)
+        (xy 98.742381 84.220792) (xy 98.650756 84.393115) (xy 98.634148 84.433408) (xy 98.616969 84.47349) (xy 98.614983 84.479906)
+        (xy 98.558574 84.666742) (xy 98.550108 84.709502) (xy 98.541043 84.752149) (xy 98.540341 84.758829) (xy 98.521296 84.953062)
+        (xy 98.519 84.976375) (xy 92.022234 84.976375) (xy 92.201443 84.872909) (xy 93.674677 84.200106) (xy 95.205194 83.670389)
+        (xy 96.779133 83.288556) (xy 98.382241 83.058063) (xy 100 82.981)
       )
     )
   )
-  (zone (net 1) (net_name GND) (layer F.Cu) (tstamp 6208EBFD) (hatch edge 0.508)
+  (zone (net 1) (net_name GND) (layer B.Cu) (tstamp 620B8ECB) (hatch edge 0.508)
     (connect_pads (clearance 0.254))
     (min_thickness 0.254)
     (fill yes (arc_segments 32) (thermal_gap 0.254) (thermal_bridge_width 0.508))
     (polygon
       (pts
-        (xy 20 20) (xy -20 20) (xy -20 -20) (xy 20 -20)
+        (xy 120 120) (xy 80 120) (xy 80 80) (xy 120 80)
+      )
+    )
+    (filled_polygon
+      (pts
+        (xy 101.617759 83.058063) (xy 103.220867 83.288556) (xy 104.794806 83.670389) (xy 106.325323 84.200106) (xy 107.798557 84.872909)
+        (xy 109.201166 85.682706) (xy 110.520448 86.622162) (xy 111.744455 87.68277) (xy 112.862102 88.854925) (xy 113.863268 90.128011)
+        (xy 114.738886 91.4905) (xy 115.481027 92.930052) (xy 116.082969 94.43363) (xy 116.539261 95.987619) (xy 116.845771 97.577944)
+        (xy 116.999723 99.190203) (xy 116.999723 100.809797) (xy 116.845771 102.422056) (xy 116.539261 104.012381) (xy 116.082969 105.56637)
+        (xy 115.481027 107.069948) (xy 114.738886 108.5095) (xy 113.863268 109.871989) (xy 112.862102 111.145075) (xy 111.744455 112.31723)
+        (xy 110.520448 113.377838) (xy 109.201166 114.317294) (xy 107.798557 115.127091) (xy 106.325323 115.799894) (xy 104.794806 116.329611)
+        (xy 103.220867 116.711444) (xy 101.617759 116.941937) (xy 100 117.019) (xy 98.382241 116.941937) (xy 96.779133 116.711444)
+        (xy 95.205194 116.329611) (xy 93.674677 115.799894) (xy 92.201443 115.127091) (xy 90.798834 114.317294) (xy 89.479552 113.377838)
+        (xy 88.255545 112.31723) (xy 87.857718 111.9) (xy 95.592157 111.9) (xy 95.599513 111.974689) (xy 95.621299 112.046508)
+        (xy 95.656678 112.112696) (xy 95.704289 112.170711) (xy 95.762304 112.218322) (xy 95.828492 112.253701) (xy 95.900311 112.275487)
+        (xy 95.975 112.282843) (xy 96.00675 112.281) (xy 96.102 112.18575) (xy 96.102 111.027) (xy 95.68925 111.027)
+        (xy 95.594 111.12225) (xy 95.592157 111.9) (xy 87.857718 111.9) (xy 87.137898 111.145075) (xy 86.158761 109.9)
+        (xy 95.592157 109.9) (xy 95.594 110.67775) (xy 95.68925 110.773) (xy 96.102 110.773) (xy 96.102 109.61425)
+        (xy 96.00675 109.519) (xy 95.975 109.517157) (xy 95.900311 109.524513) (xy 95.828492 109.546299) (xy 95.762304 109.581678)
+        (xy 95.704289 109.629289) (xy 95.656678 109.687304) (xy 95.621299 109.753492) (xy 95.599513 109.825311) (xy 95.592157 109.9)
+        (xy 86.158761 109.9) (xy 86.136732 109.871989) (xy 85.261114 108.5095) (xy 84.518973 107.069948) (xy 83.917031 105.56637)
+        (xy 83.460739 104.012381) (xy 83.154229 102.422056) (xy 83.000277 100.809797) (xy 83.000277 99.190203) (xy 83.154229 97.577944)
+        (xy 83.460739 95.987619) (xy 83.917031 94.43363) (xy 84.518973 92.930052) (xy 84.998448 92) (xy 85.491553 92)
+        (xy 85.494001 92.024856) (xy 85.494 103.475154) (xy 85.491553 103.5) (xy 85.494 103.524846) (xy 85.494 103.524853)
+        (xy 85.501322 103.599192) (xy 85.530255 103.694574) (xy 85.577241 103.782479) (xy 85.640473 103.859527) (xy 85.659785 103.875376)
+        (xy 91.124628 109.34022) (xy 91.140473 109.359527) (xy 91.217521 109.422759) (xy 91.305086 109.469564) (xy 91.305425 109.469745)
+        (xy 91.400807 109.498678) (xy 91.5 109.508448) (xy 91.524854 109.506) (xy 96.290409 109.506) (xy 96.302851 109.518443)
+        (xy 96.29325 109.519) (xy 96.198 109.61425) (xy 96.198 110.773) (xy 96.292157 110.773) (xy 96.292157 111.027)
+        (xy 96.198 111.027) (xy 96.198 112.18575) (xy 96.29325 112.281) (xy 96.325 112.282843) (xy 96.399689 112.275487)
+        (xy 96.471508 112.253701) (xy 96.533238 112.220705) (xy 96.582508 112.24704) (xy 96.670741 112.273805) (xy 96.7625 112.282843)
+        (xy 96.9375 112.282843) (xy 97.029259 112.273805) (xy 97.117492 112.24704) (xy 97.198809 112.203576) (xy 97.2 112.202599)
+        (xy 97.201191 112.203576) (xy 97.282508 112.24704) (xy 97.370741 112.273805) (xy 97.4625 112.282843) (xy 97.6375 112.282843)
+        (xy 97.729259 112.273805) (xy 97.817492 112.24704) (xy 97.898809 112.203576) (xy 97.9 112.202599) (xy 97.901191 112.203576)
+        (xy 97.982508 112.24704) (xy 98.070741 112.273805) (xy 98.1625 112.282843) (xy 98.3375 112.282843) (xy 98.429259 112.273805)
+        (xy 98.517492 112.24704) (xy 98.598809 112.203576) (xy 98.6 112.202599) (xy 98.601191 112.203576) (xy 98.682508 112.24704)
+        (xy 98.770741 112.273805) (xy 98.8625 112.282843) (xy 99.0375 112.282843) (xy 99.129259 112.273805) (xy 99.217492 112.24704)
+        (xy 99.298809 112.203576) (xy 99.3 112.202599) (xy 99.301191 112.203576) (xy 99.382508 112.24704) (xy 99.470741 112.273805)
+        (xy 99.5625 112.282843) (xy 99.7375 112.282843) (xy 99.829259 112.273805) (xy 99.917492 112.24704) (xy 99.966762 112.220705)
+        (xy 100.028492 112.253701) (xy 100.100311 112.275487) (xy 100.175 112.282843) (xy 100.20675 112.281) (xy 100.302 112.18575)
+        (xy 100.302 111.027) (xy 100.398 111.027) (xy 100.398 112.18575) (xy 100.49325 112.281) (xy 100.525 112.282843)
+        (xy 100.599689 112.275487) (xy 100.671508 112.253701) (xy 100.7 112.238471) (xy 100.728492 112.253701) (xy 100.800311 112.275487)
+        (xy 100.875 112.282843) (xy 100.90675 112.281) (xy 101.002 112.18575) (xy 101.002 111.027) (xy 100.398 111.027)
+        (xy 100.302 111.027) (xy 100.207843 111.027) (xy 100.207843 110.773) (xy 100.302 110.773) (xy 100.302 109.61425)
+        (xy 100.398 109.61425) (xy 100.398 110.773) (xy 101.002 110.773) (xy 101.002 109.61425) (xy 100.90675 109.519)
+        (xy 100.875 109.517157) (xy 100.800311 109.524513) (xy 100.728492 109.546299) (xy 100.7 109.561529) (xy 100.671508 109.546299)
+        (xy 100.599689 109.524513) (xy 100.525 109.517157) (xy 100.49325 109.519) (xy 100.398 109.61425) (xy 100.302 109.61425)
+        (xy 100.20675 109.519) (xy 100.197148 109.518443) (xy 107.84022 101.875372) (xy 107.859527 101.859527) (xy 107.922759 101.782479)
+        (xy 107.969745 101.694575) (xy 107.998678 101.599193) (xy 108.006 101.524854) (xy 108.006 101.524847) (xy 108.008447 101.500001)
+        (xy 108.006 101.475155) (xy 108.006 97.024854) (xy 108.008448 97) (xy 107.998678 96.900807) (xy 107.969745 96.805425)
+        (xy 107.922759 96.717521) (xy 107.859527 96.640473) (xy 107.84022 96.624628) (xy 105.006 93.790409) (xy 105.006 92.28155)
+        (xy 105.409203 92.28155) (xy 105.467983 92.453307) (xy 105.573847 92.621547) (xy 105.710499 92.765901) (xy 105.872687 92.880822)
+        (xy 106.054179 92.961894) (xy 106.248 93.006) (xy 106.873 93.006) (xy 106.873 92.127) (xy 107.127 92.127)
+        (xy 107.127 93.006) (xy 107.752 93.006) (xy 107.945821 92.961894) (xy 108.127313 92.880822) (xy 108.289501 92.765901)
+        (xy 108.426153 92.621547) (xy 108.532017 92.453307) (xy 108.590797 92.28155) (xy 108.526852 92.127) (xy 107.127 92.127)
+        (xy 106.873 92.127) (xy 105.473148 92.127) (xy 105.409203 92.28155) (xy 105.006 92.28155) (xy 105.006 87.709591)
+        (xy 105.853597 86.861995) (xy 105.988158 86.933919) (xy 106.17779 86.991443) (xy 106.264669 87) (xy 106.17779 87.008557)
+        (xy 105.988158 87.066081) (xy 105.813392 87.159495) (xy 105.660209 87.285209) (xy 105.534495 87.438392) (xy 105.441081 87.613158)
+        (xy 105.383557 87.80279) (xy 105.364133 88) (xy 105.383557 88.19721) (xy 105.441081 88.386842) (xy 105.534495 88.561608)
+        (xy 105.660209 88.714791) (xy 105.813392 88.840505) (xy 105.988158 88.933919) (xy 106.17779 88.991443) (xy 106.264669 89)
+        (xy 106.17779 89.008557) (xy 105.988158 89.066081) (xy 105.813392 89.159495) (xy 105.660209 89.285209) (xy 105.534495 89.438392)
+        (xy 105.441081 89.613158) (xy 105.383557 89.80279) (xy 105.364133 90) (xy 105.383557 90.19721) (xy 105.441081 90.386842)
+        (xy 105.534495 90.561608) (xy 105.660209 90.714791) (xy 105.813392 90.840505) (xy 105.988158 90.933919) (xy 106.17779 90.991443)
+        (xy 106.234633 90.997042) (xy 106.054179 91.038106) (xy 105.872687 91.119178) (xy 105.710499 91.234099) (xy 105.573847 91.378453)
+        (xy 105.467983 91.546693) (xy 105.409203 91.71845) (xy 105.473148 91.873) (xy 106.873 91.873) (xy 106.873 91.853)
+        (xy 107.127 91.853) (xy 107.127 91.873) (xy 108.526852 91.873) (xy 108.590797 91.71845) (xy 108.532017 91.546693)
+        (xy 108.426153 91.378453) (xy 108.289501 91.234099) (xy 108.127313 91.119178) (xy 107.945821 91.038106) (xy 107.765367 90.997042)
+        (xy 107.82221 90.991443) (xy 108.011842 90.933919) (xy 108.077283 90.89894) (xy 108.919 91.740658) (xy 108.919001 104.309341)
+        (xy 108.061186 105.167157) (xy 107.525 105.167157) (xy 107.401538 105.179317) (xy 107.282821 105.215329) (xy 107.173411 105.27381)
+        (xy 107.077512 105.352512) (xy 106.99881 105.448411) (xy 106.987805 105.469) (xy 106.539811 105.469) (xy 106.482611 105.438426)
+        (xy 106.368584 105.403837) (xy 106.25 105.392157) (xy 105.75 105.392157) (xy 105.631416 105.403837) (xy 105.517389 105.438426)
+        (xy 105.412301 105.494597) (xy 105.32019 105.57019) (xy 105.259616 105.644) (xy 104.803539 105.644) (xy 104.774999 105.641189)
+        (xy 104.661104 105.652407) (xy 104.551585 105.685629) (xy 104.450652 105.739579) (xy 104.362183 105.812183) (xy 104.343987 105.834355)
+        (xy 104.286185 105.892157) (xy 104.225 105.892157) (xy 104.111293 105.903356) (xy 104.001956 105.936523) (xy 103.90119 105.990384)
+        (xy 103.812868 106.062868) (xy 103.740384 106.15119) (xy 103.686523 106.251956) (xy 103.653356 106.361293) (xy 103.642157 106.475)
+        (xy 103.642157 106.536185) (xy 101.35936 108.818983) (xy 101.337183 108.837183) (xy 101.277607 108.909778) (xy 101.264579 108.925653)
+        (xy 101.210629 109.026586) (xy 101.177407 109.136105) (xy 101.166189 109.25) (xy 101.169 109.27854) (xy 101.169 109.54325)
+        (xy 101.098 109.61425) (xy 101.098 110.773) (xy 101.192157 110.773) (xy 101.192157 111.027) (xy 101.098 111.027)
+        (xy 101.098 112.18575) (xy 101.19325 112.281) (xy 101.225 112.282843) (xy 101.299689 112.275487) (xy 101.371508 112.253701)
+        (xy 101.433238 112.220705) (xy 101.482508 112.24704) (xy 101.570741 112.273805) (xy 101.6625 112.282843) (xy 101.8375 112.282843)
+        (xy 101.929259 112.273805) (xy 102.017492 112.24704) (xy 102.098809 112.203576) (xy 102.1 112.202599) (xy 102.101191 112.203576)
+        (xy 102.182508 112.24704) (xy 102.270741 112.273805) (xy 102.3625 112.282843) (xy 102.5375 112.282843) (xy 102.629259 112.273805)
+        (xy 102.717492 112.24704) (xy 102.798809 112.203576) (xy 102.8 112.202599) (xy 102.801191 112.203576) (xy 102.882508 112.24704)
+        (xy 102.970741 112.273805) (xy 103.0625 112.282843) (xy 103.2375 112.282843) (xy 103.329259 112.273805) (xy 103.417492 112.24704)
+        (xy 103.466762 112.220705) (xy 103.528492 112.253701) (xy 103.600311 112.275487) (xy 103.675 112.282843) (xy 103.70675 112.281)
+        (xy 103.802 112.18575) (xy 103.802 111.027) (xy 103.898 111.027) (xy 103.898 112.18575) (xy 103.99325 112.281)
+        (xy 104.025 112.282843) (xy 104.099689 112.275487) (xy 104.171508 112.253701) (xy 104.237696 112.218322) (xy 104.295711 112.170711)
+        (xy 104.343322 112.112696) (xy 104.378701 112.046508) (xy 104.400487 111.974689) (xy 104.407843 111.9) (xy 104.407725 111.85)
+        (xy 110.167157 111.85) (xy 110.174513 111.924689) (xy 110.196299 111.996508) (xy 110.231678 112.062696) (xy 110.279289 112.120711)
+        (xy 110.337304 112.168322) (xy 110.403492 112.203701) (xy 110.475311 112.225487) (xy 110.55 112.232843) (xy 110.77775 112.231)
+        (xy 110.873 112.13575) (xy 110.873 111.577) (xy 111.127 111.577) (xy 111.127 112.13575) (xy 111.22225 112.231)
+        (xy 111.45 112.232843) (xy 111.524689 112.225487) (xy 111.596508 112.203701) (xy 111.662696 112.168322) (xy 111.720711 112.120711)
+        (xy 111.768322 112.062696) (xy 111.803701 111.996508) (xy 111.825487 111.924689) (xy 111.832843 111.85) (xy 111.831 111.67225)
+        (xy 111.73575 111.577) (xy 111.127 111.577) (xy 110.873 111.577) (xy 110.26425 111.577) (xy 110.169 111.67225)
+        (xy 110.167157 111.85) (xy 104.407725 111.85) (xy 104.406 111.12225) (xy 104.31075 111.027) (xy 103.898 111.027)
+        (xy 103.802 111.027) (xy 103.707843 111.027) (xy 103.707843 110.773) (xy 103.802 110.773) (xy 103.802 110.753)
+        (xy 103.898 110.753) (xy 103.898 110.773) (xy 104.31075 110.773) (xy 104.406 110.67775) (xy 104.407843 109.9)
+        (xy 104.400487 109.825311) (xy 104.387042 109.78099) (xy 104.565399 109.78099) (xy 105.624628 110.84022) (xy 105.640473 110.859527)
+        (xy 105.717521 110.922759) (xy 105.786309 110.959527) (xy 105.805425 110.969745) (xy 105.900807 110.998678) (xy 106 111.008448)
+        (xy 106.024854 111.006) (xy 108.184011 111.006) (xy 108.196299 111.046508) (xy 108.231678 111.112696) (xy 108.279289 111.170711)
+        (xy 108.337304 111.218322) (xy 108.403492 111.253701) (xy 108.475311 111.275487) (xy 108.55 111.282843) (xy 109.45 111.282843)
+        (xy 109.524689 111.275487) (xy 109.596508 111.253701) (xy 109.662696 111.218322) (xy 109.720711 111.170711) (xy 109.768322 111.112696)
+        (xy 109.801834 111.05) (xy 110.167157 111.05) (xy 110.169 111.22775) (xy 110.26425 111.323) (xy 110.873 111.323)
+        (xy 110.873 110.76425) (xy 111.127 110.76425) (xy 111.127 111.323) (xy 111.73575 111.323) (xy 111.831 111.22775)
+        (xy 111.832843 111.05) (xy 111.825487 110.975311) (xy 111.803701 110.903492) (xy 111.768322 110.837304) (xy 111.720711 110.779289)
+        (xy 111.662696 110.731678) (xy 111.596508 110.696299) (xy 111.524689 110.674513) (xy 111.45 110.667157) (xy 111.22225 110.669)
+        (xy 111.127 110.76425) (xy 110.873 110.76425) (xy 110.77775 110.669) (xy 110.55 110.667157) (xy 110.475311 110.674513)
+        (xy 110.403492 110.696299) (xy 110.337304 110.731678) (xy 110.279289 110.779289) (xy 110.231678 110.837304) (xy 110.196299 110.903492)
+        (xy 110.174513 110.975311) (xy 110.167157 111.05) (xy 109.801834 111.05) (xy 109.803701 111.046508) (xy 109.825487 110.974689)
+        (xy 109.832843 110.9) (xy 109.832843 110.1) (xy 109.825487 110.025311) (xy 109.803701 109.953492) (xy 109.768322 109.887304)
+        (xy 109.720711 109.829289) (xy 109.662696 109.781678) (xy 109.596508 109.746299) (xy 109.524689 109.724513) (xy 109.45 109.717157)
+        (xy 108.55 109.717157) (xy 108.475311 109.724513) (xy 108.403492 109.746299) (xy 108.337304 109.781678) (xy 108.279289 109.829289)
+        (xy 108.231678 109.887304) (xy 108.196299 109.953492) (xy 108.184011 109.994) (xy 106.209592 109.994) (xy 105.365592 109.15)
+        (xy 110.167157 109.15) (xy 110.167157 109.95) (xy 110.174513 110.024689) (xy 110.196299 110.096508) (xy 110.231678 110.162696)
+        (xy 110.279289 110.220711) (xy 110.337304 110.268322) (xy 110.403492 110.303701) (xy 110.475311 110.325487) (xy 110.55 110.332843)
+        (xy 111.45 110.332843) (xy 111.524689 110.325487) (xy 111.596508 110.303701) (xy 111.662696 110.268322) (xy 111.720711 110.220711)
+        (xy 111.768322 110.162696) (xy 111.803701 110.096508) (xy 111.825487 110.024689) (xy 111.832843 109.95) (xy 111.832843 109.15)
+        (xy 111.825487 109.075311) (xy 111.803701 109.003492) (xy 111.768322 108.937304) (xy 111.720711 108.879289) (xy 111.662696 108.831678)
+        (xy 111.596508 108.796299) (xy 111.524689 108.774513) (xy 111.506 108.772672) (xy 111.506 108.384591) (xy 111.532748 108.357843)
+        (xy 111.875 108.357843) (xy 111.988707 108.346644) (xy 112.098044 108.313477) (xy 112.19881 108.259616) (xy 112.287132 108.187132)
+        (xy 112.359616 108.09881) (xy 112.413477 107.998044) (xy 112.420467 107.975) (xy 112.542157 107.975) (xy 112.549513 108.049689)
+        (xy 112.571299 108.121508) (xy 112.606678 108.187696) (xy 112.654289 108.245711) (xy 112.712304 108.293322) (xy 112.778492 108.328701)
+        (xy 112.850311 108.350487) (xy 112.925 108.357843) (xy 113.10275 108.356) (xy 113.198 108.26075) (xy 113.198 107.627)
+        (xy 113.452 107.627) (xy 113.452 108.26075) (xy 113.54725 108.356) (xy 113.725 108.357843) (xy 113.799689 108.350487)
+        (xy 113.871508 108.328701) (xy 113.937696 108.293322) (xy 113.995711 108.245711) (xy 114.043322 108.187696) (xy 114.078701 108.121508)
+        (xy 114.100487 108.049689) (xy 114.107843 107.975) (xy 114.106 107.72225) (xy 114.01075 107.627) (xy 113.452 107.627)
+        (xy 113.198 107.627) (xy 112.63925 107.627) (xy 112.544 107.72225) (xy 112.542157 107.975) (xy 112.420467 107.975)
+        (xy 112.446644 107.888707) (xy 112.457843 107.775) (xy 112.457843 107.225) (xy 112.446644 107.111293) (xy 112.413477 107.001956)
+        (xy 112.359616 106.90119) (xy 112.287132 106.812868) (xy 112.210527 106.75) (xy 112.287132 106.687132) (xy 112.359616 106.59881)
+        (xy 112.413477 106.498044) (xy 112.446644 106.388707) (xy 112.457843 106.275) (xy 112.457843 105.725) (xy 112.446644 105.611293)
+        (xy 112.413477 105.501956) (xy 112.359616 105.40119) (xy 112.287132 105.312868) (xy 112.19881 105.240384) (xy 112.098044 105.186523)
+        (xy 111.988707 105.153356) (xy 111.875 105.142157) (xy 111.475 105.142157) (xy 111.361293 105.153356) (xy 111.251956 105.186523)
+        (xy 111.15119 105.240384) (xy 111.062868 105.312868) (xy 110.990384 105.40119) (xy 110.936523 105.501956) (xy 110.903356 105.611293)
+        (xy 110.892157 105.725) (xy 110.892157 106.275) (xy 110.903356 106.388707) (xy 110.936523 106.498044) (xy 110.990384 106.59881)
+        (xy 111.062868 106.687132) (xy 111.139473 106.75) (xy 111.062868 106.812868) (xy 110.990384 106.90119) (xy 110.936523 107.001956)
+        (xy 110.903356 107.111293) (xy 110.892157 107.225) (xy 110.892157 107.567252) (xy 110.65978 107.799629) (xy 110.640474 107.815473)
+        (xy 110.577242 107.892521) (xy 110.552127 107.939508) (xy 110.530255 107.980426) (xy 110.501322 108.075808) (xy 110.491553 108.175)
+        (xy 110.494001 108.199856) (xy 110.494001 108.772672) (xy 110.475311 108.774513) (xy 110.403492 108.796299) (xy 110.337304 108.831678)
+        (xy 110.279289 108.879289) (xy 110.231678 108.937304) (xy 110.196299 109.003492) (xy 110.174513 109.075311) (xy 110.167157 109.15)
+        (xy 105.365592 109.15) (xy 105.168233 108.952642) (xy 105.187132 108.937132) (xy 105.259616 108.84881) (xy 105.313477 108.748044)
+        (xy 105.346644 108.638707) (xy 105.353851 108.56553) (xy 105.378492 108.578701) (xy 105.450311 108.600487) (xy 105.525 108.607843)
+        (xy 105.77775 108.606) (xy 105.873 108.51075) (xy 105.873 107.902) (xy 106.127 107.902) (xy 106.127 108.51075)
+        (xy 106.22225 108.606) (xy 106.475 108.607843) (xy 106.549689 108.600487) (xy 106.621508 108.578701) (xy 106.687696 108.543322)
+        (xy 106.745711 108.495711) (xy 106.783224 108.45) (xy 106.892157 108.45) (xy 106.899513 108.524689) (xy 106.921299 108.596508)
+        (xy 106.956678 108.662696) (xy 107.004289 108.720711) (xy 107.062304 108.768322) (xy 107.128492 108.803701) (xy 107.200311 108.825487)
+        (xy 107.275 108.832843) (xy 107.77775 108.831) (xy 107.873 108.73575) (xy 107.873 108.077) (xy 108.127 108.077)
+        (xy 108.127 108.73575) (xy 108.22225 108.831) (xy 108.725 108.832843) (xy 108.799689 108.825487) (xy 108.871508 108.803701)
+        (xy 108.937696 108.768322) (xy 108.995711 108.720711) (xy 109.043322 108.662696) (xy 109.078701 108.596508) (xy 109.100487 108.524689)
+        (xy 109.107843 108.45) (xy 109.106 108.17225) (xy 109.01075 108.077) (xy 108.127 108.077) (xy 107.873 108.077)
+        (xy 106.98925 108.077) (xy 106.894 108.17225) (xy 106.892157 108.45) (xy 106.783224 108.45) (xy 106.793322 108.437696)
+        (xy 106.828701 108.371508) (xy 106.850487 108.299689) (xy 106.857843 108.225) (xy 106.856 107.99725) (xy 106.76075 107.902)
+        (xy 106.127 107.902) (xy 105.873 107.902) (xy 105.853 107.902) (xy 105.853 107.648) (xy 105.873 107.648)
+        (xy 105.873 107.628) (xy 106.127 107.628) (xy 106.127 107.648) (xy 106.76075 107.648) (xy 106.856 107.55275)
+        (xy 106.856831 107.45) (xy 106.892157 107.45) (xy 106.894 107.72775) (xy 106.98925 107.823) (xy 107.873 107.823)
+        (xy 107.873 107.16425) (xy 108.127 107.16425) (xy 108.127 107.823) (xy 109.01075 107.823) (xy 109.106 107.72775)
+        (xy 109.107843 107.45) (xy 109.100487 107.375311) (xy 109.078701 107.303492) (xy 109.043322 107.237304) (xy 108.995711 107.179289)
+        (xy 108.937696 107.131678) (xy 108.871508 107.096299) (xy 108.799689 107.074513) (xy 108.725 107.067157) (xy 108.22225 107.069)
+        (xy 108.127 107.16425) (xy 107.873 107.16425) (xy 107.77775 107.069) (xy 107.275 107.067157) (xy 107.200311 107.074513)
+        (xy 107.128492 107.096299) (xy 107.062304 107.131678) (xy 107.004289 107.179289) (xy 106.956678 107.237304) (xy 106.921299 107.303492)
+        (xy 106.899513 107.375311) (xy 106.892157 107.45) (xy 106.856831 107.45) (xy 106.857843 107.325) (xy 106.850487 107.250311)
+        (xy 106.828701 107.178492) (xy 106.793322 107.112304) (xy 106.745711 107.054289) (xy 106.687696 107.006678) (xy 106.621508 106.971299)
+        (xy 106.580967 106.959001) (xy 106.587699 106.955403) (xy 106.67981 106.87981) (xy 106.755403 106.787699) (xy 106.811574 106.682611)
+        (xy 106.82723 106.631) (xy 106.987805 106.631) (xy 106.99881 106.651589) (xy 107.077512 106.747488) (xy 107.173411 106.82619)
+        (xy 107.282821 106.884671) (xy 107.401538 106.920683) (xy 107.525 106.932843) (xy 108.475 106.932843) (xy 108.598462 106.920683)
+        (xy 108.717179 106.884671) (xy 108.826589 106.82619) (xy 108.922488 106.747488) (xy 109.00119 106.651589) (xy 109.059671 106.542179)
+        (xy 109.095683 106.423462) (xy 109.107843 106.3) (xy 109.107843 105.8) (xy 109.104599 105.767059) (xy 109.890645 104.981013)
+        (xy 109.912817 104.962817) (xy 109.985421 104.874348) (xy 110.039371 104.773415) (xy 110.072593 104.663896) (xy 110.081 104.57854)
+        (xy 110.081 104.578538) (xy 110.083811 104.550001) (xy 110.081 104.521464) (xy 110.081 91.528536) (xy 110.083811 91.499999)
+        (xy 110.080629 91.467696) (xy 110.072593 91.386104) (xy 110.039371 91.276585) (xy 109.985421 91.175652) (xy 109.912817 91.087183)
+        (xy 109.890646 91.068988) (xy 108.612958 89.791301) (xy 108.558919 89.613158) (xy 108.465505 89.438392) (xy 108.339791 89.285209)
+        (xy 108.186608 89.159495) (xy 108.011842 89.066081) (xy 107.82221 89.008557) (xy 107.735331 89) (xy 107.82221 88.991443)
+        (xy 108.011842 88.933919) (xy 108.146404 88.861995) (xy 110.994 91.709592) (xy 110.994001 102.475144) (xy 110.991553 102.5)
+        (xy 111.001322 102.599192) (xy 111.030255 102.694574) (xy 111.052127 102.735492) (xy 111.077242 102.782479) (xy 111.140474 102.859527)
+        (xy 111.15978 102.875372) (xy 112.494 104.209592) (xy 112.494001 105.650144) (xy 112.491553 105.675) (xy 112.501322 105.774192)
+        (xy 112.530255 105.869574) (xy 112.542157 105.89184) (xy 112.542157 106.275) (xy 112.553356 106.388707) (xy 112.586523 106.498044)
+        (xy 112.640384 106.59881) (xy 112.712868 106.687132) (xy 112.727068 106.698786) (xy 112.712304 106.706678) (xy 112.654289 106.754289)
+        (xy 112.606678 106.812304) (xy 112.571299 106.878492) (xy 112.549513 106.950311) (xy 112.542157 107.025) (xy 112.544 107.27775)
+        (xy 112.63925 107.373) (xy 113.198 107.373) (xy 113.198 107.353) (xy 113.452 107.353) (xy 113.452 107.373)
+        (xy 114.01075 107.373) (xy 114.106 107.27775) (xy 114.107843 107.025) (xy 114.100487 106.950311) (xy 114.078701 106.878492)
+        (xy 114.043322 106.812304) (xy 113.995711 106.754289) (xy 113.937696 106.706678) (xy 113.922932 106.698786) (xy 113.937132 106.687132)
+        (xy 114.009616 106.59881) (xy 114.063477 106.498044) (xy 114.096644 106.388707) (xy 114.107843 106.275) (xy 114.107843 105.725)
+        (xy 114.096644 105.611293) (xy 114.063477 105.501956) (xy 114.009616 105.40119) (xy 113.937132 105.312868) (xy 113.84881 105.240384)
+        (xy 113.748044 105.186523) (xy 113.638707 105.153356) (xy 113.525 105.142157) (xy 113.506 105.142157) (xy 113.506 104.024845)
+        (xy 113.508447 103.999999) (xy 113.506 103.975153) (xy 113.506 103.975146) (xy 113.498678 103.900807) (xy 113.469745 103.805425)
+        (xy 113.422759 103.717521) (xy 113.359527 103.640473) (xy 113.34022 103.624628) (xy 112.006 102.290409) (xy 112.006 91.524845)
+        (xy 112.008447 91.499999) (xy 112.006 91.475153) (xy 112.006 91.475146) (xy 111.998678 91.400807) (xy 111.969745 91.305425)
+        (xy 111.922759 91.217521) (xy 111.859527 91.140473) (xy 111.84022 91.124628) (xy 108.627157 87.911566) (xy 108.616443 87.80279)
+        (xy 108.558919 87.613158) (xy 108.465505 87.438392) (xy 108.339791 87.285209) (xy 108.186608 87.159495) (xy 108.011842 87.066081)
+        (xy 107.82221 87.008557) (xy 107.735331 87) (xy 107.82221 86.991443) (xy 108.011842 86.933919) (xy 108.186608 86.840505)
+        (xy 108.339791 86.714791) (xy 108.465505 86.561608) (xy 108.558919 86.386842) (xy 108.616443 86.19721) (xy 108.635867 86)
+        (xy 108.616443 85.80279) (xy 108.558919 85.613158) (xy 108.465505 85.438392) (xy 108.339791 85.285209) (xy 108.186608 85.159495)
+        (xy 108.011842 85.066081) (xy 107.82221 85.008557) (xy 107.674414 84.994) (xy 106.325586 84.994) (xy 106.17779 85.008557)
+        (xy 105.988158 85.066081) (xy 105.813392 85.159495) (xy 105.660209 85.285209) (xy 105.534495 85.438392) (xy 105.441081 85.613158)
+        (xy 105.383557 85.80279) (xy 105.372843 85.911565) (xy 104.15978 87.124628) (xy 104.140474 87.140473) (xy 104.077242 87.217521)
+        (xy 104.052127 87.264508) (xy 104.030255 87.305426) (xy 104.001322 87.400808) (xy 103.991553 87.5) (xy 103.994001 87.524856)
+        (xy 103.994 93.975154) (xy 103.991553 94) (xy 103.994 94.024846) (xy 103.994 94.024853) (xy 104.001322 94.099192)
+        (xy 104.030255 94.194574) (xy 104.077241 94.282479) (xy 104.140473 94.359527) (xy 104.159785 94.375376) (xy 106.994001 97.209593)
+        (xy 106.994 101.290408) (xy 99.445169 108.83924) (xy 99.434389 108.803701) (xy 99.419745 108.755425) (xy 99.372759 108.667521)
+        (xy 99.309527 108.590473) (xy 99.29022 108.574628) (xy 92.506 101.790409) (xy 92.506 100.524517) (xy 92.598936 100.748884)
+        (xy 92.771957 101.007829) (xy 92.992171 101.228043) (xy 93.251116 101.401064) (xy 93.538839 101.520243) (xy 93.844285 101.581)
+        (xy 94.155715 101.581) (xy 94.461161 101.520243) (xy 94.748884 101.401064) (xy 95.007829 101.228043) (xy 95.228043 101.007829)
+        (xy 95.401064 100.748884) (xy 95.488945 100.536722) (xy 95.644965 101.321086) (xy 95.986376 102.145327) (xy 96.482029 102.887124)
+        (xy 97.112876 103.517971) (xy 97.854673 104.013624) (xy 98.678914 104.355035) (xy 99.553924 104.529086) (xy 100.446076 104.529086)
+        (xy 101.321086 104.355035) (xy 102.145327 104.013624) (xy 102.887124 103.517971) (xy 103.517971 102.887124) (xy 104.013624 102.145327)
+        (xy 104.355035 101.321086) (xy 104.529086 100.446076) (xy 104.529086 99.553924) (xy 104.355035 98.678914) (xy 104.013624 97.854673)
+        (xy 103.517971 97.112876) (xy 102.887124 96.482029) (xy 102.145327 95.986376) (xy 101.321086 95.644965) (xy 100.446076 95.470914)
+        (xy 99.553924 95.470914) (xy 98.678914 95.644965) (xy 97.854673 95.986376) (xy 97.112876 96.482029) (xy 96.482029 97.112876)
+        (xy 95.986376 97.854673) (xy 95.644965 98.678914) (xy 95.488945 99.463278) (xy 95.401064 99.251116) (xy 95.228043 98.992171)
+        (xy 95.007829 98.771957) (xy 94.748884 98.598936) (xy 94.461161 98.479757) (xy 94.155715 98.419) (xy 93.844285 98.419)
+        (xy 93.538839 98.479757) (xy 93.251116 98.598936) (xy 92.992171 98.771957) (xy 92.771957 98.992171) (xy 92.598936 99.251116)
+        (xy 92.506 99.475483) (xy 92.506 93.209591) (xy 92.709591 93.006) (xy 93.674414 93.006) (xy 93.82221 92.991443)
+        (xy 94.011842 92.933919) (xy 94.186608 92.840505) (xy 94.339791 92.714791) (xy 94.465505 92.561608) (xy 94.558919 92.386842)
+        (xy 94.616443 92.19721) (xy 94.635867 92) (xy 94.616443 91.80279) (xy 94.558919 91.613158) (xy 94.465505 91.438392)
+        (xy 94.339791 91.285209) (xy 94.186608 91.159495) (xy 94.011842 91.066081) (xy 93.82221 91.008557) (xy 93.735331 91)
+        (xy 93.82221 90.991443) (xy 94.011842 90.933919) (xy 94.186608 90.840505) (xy 94.339791 90.714791) (xy 94.465505 90.561608)
+        (xy 94.558919 90.386842) (xy 94.616443 90.19721) (xy 94.635867 90) (xy 94.616443 89.80279) (xy 94.558919 89.613158)
+        (xy 94.465505 89.438392) (xy 94.339791 89.285209) (xy 94.186608 89.159495) (xy 94.011842 89.066081) (xy 93.82221 89.008557)
+        (xy 93.735331 89) (xy 93.82221 88.991443) (xy 94.011842 88.933919) (xy 94.186608 88.840505) (xy 94.339791 88.714791)
+        (xy 94.465505 88.561608) (xy 94.558919 88.386842) (xy 94.616443 88.19721) (xy 94.635867 88) (xy 94.616443 87.80279)
+        (xy 94.558919 87.613158) (xy 94.465505 87.438392) (xy 94.339791 87.285209) (xy 94.186608 87.159495) (xy 94.011842 87.066081)
+        (xy 93.82221 87.008557) (xy 93.735331 87) (xy 93.82221 86.991443) (xy 94.011842 86.933919) (xy 94.186608 86.840505)
+        (xy 94.339791 86.714791) (xy 94.465505 86.561608) (xy 94.558919 86.386842) (xy 94.616443 86.19721) (xy 94.635867 86)
+        (xy 94.616443 85.80279) (xy 94.558919 85.613158) (xy 94.465505 85.438392) (xy 94.339791 85.285209) (xy 94.186608 85.159495)
+        (xy 94.011842 85.066081) (xy 93.82221 85.008557) (xy 93.674414 84.994) (xy 92.325586 84.994) (xy 92.17779 85.008557)
+        (xy 91.988158 85.066081) (xy 91.813392 85.159495) (xy 91.660209 85.285209) (xy 91.534495 85.438392) (xy 91.441081 85.613158)
+        (xy 91.383557 85.80279) (xy 91.372843 85.911565) (xy 85.659781 91.624628) (xy 85.640474 91.640473) (xy 85.577242 91.717521)
+        (xy 85.559042 91.751571) (xy 85.530255 91.805426) (xy 85.501322 91.900808) (xy 85.491553 92) (xy 84.998448 92)
+        (xy 85.261114 91.4905) (xy 86.136732 90.128011) (xy 87.137898 88.854925) (xy 88.255545 87.68277) (xy 89.479552 86.622162)
+        (xy 90.798834 85.682706) (xy 92.022234 84.976375) (xy 98.519 84.976375) (xy 98.519001 91.023626) (xy 98.521393 91.047912)
+        (xy 98.521393 91.060899) (xy 98.522095 91.067579) (xy 98.54385 91.261528) (xy 98.552909 91.304146) (xy 98.561382 91.346938)
+        (xy 98.563368 91.353354) (xy 98.622381 91.539384) (xy 98.63954 91.579418) (xy 98.656167 91.619758) (xy 98.659362 91.625666)
+        (xy 98.753384 91.796691) (xy 98.777997 91.832636) (xy 98.802138 91.868972) (xy 98.806419 91.874147) (xy 98.931869 92.023653)
+        (xy 98.963018 92.054157) (xy 98.993737 92.08509) (xy 98.998941 92.089335) (xy 99.151041 92.211626) (xy 99.187487 92.235475)
+        (xy 99.22366 92.259874) (xy 99.22959 92.263027) (xy 99.402546 92.353447) (xy 99.442954 92.369773) (xy 99.483159 92.386673)
+        (xy 99.489588 92.388614) (xy 99.676814 92.443717) (xy 99.719606 92.45188) (xy 99.762339 92.460652) (xy 99.769023 92.461307)
+        (xy 99.963385 92.478996) (xy 100.006981 92.478692) (xy 100.050576 92.478996) (xy 100.057261 92.478341) (xy 100.251357 92.45794)
+        (xy 100.294038 92.449179) (xy 100.336884 92.441005) (xy 100.343313 92.439064) (xy 100.529751 92.381352) (xy 100.569937 92.36446)
+        (xy 100.61036 92.348127) (xy 100.616286 92.344976) (xy 100.616291 92.344974) (xy 100.616295 92.344971) (xy 100.787967 92.25215)
+        (xy 100.824098 92.227779) (xy 100.86059 92.203899) (xy 100.865795 92.199654) (xy 101.016172 92.07525) (xy 101.046872 92.044335)
+        (xy 101.078038 92.013815) (xy 101.082319 92.00864) (xy 101.205669 91.857398) (xy 101.229785 91.821101) (xy 101.254425 91.785115)
+        (xy 101.257619 91.779207) (xy 101.349244 91.606885) (xy 101.36584 91.56662) (xy 101.383031 91.52651) (xy 101.385017 91.520094)
+        (xy 101.441426 91.333258) (xy 101.44989 91.290511) (xy 101.458957 91.247851) (xy 101.459659 91.241172) (xy 101.478704 91.046938)
+        (xy 101.481 91.023626) (xy 101.481 84.976374) (xy 101.478607 84.952077) (xy 101.478607 84.9391) (xy 101.477905 84.932421)
+        (xy 101.45615 84.738471) (xy 101.44709 84.695847) (xy 101.438618 84.653062) (xy 101.436632 84.646646) (xy 101.377619 84.460616)
+        (xy 101.36046 84.420582) (xy 101.343833 84.380242) (xy 101.340638 84.374334) (xy 101.246616 84.203309) (xy 101.222004 84.167364)
+        (xy 101.197862 84.131028) (xy 101.193581 84.125853) (xy 101.068131 83.976347) (xy 101.037001 83.945862) (xy 101.006263 83.914909)
+        (xy 101.001064 83.91067) (xy 101.00106 83.910666) (xy 101.001056 83.910663) (xy 100.848959 83.788374) (xy 100.81248 83.764503)
+        (xy 100.776339 83.740126) (xy 100.77041 83.736973) (xy 100.597454 83.646553) (xy 100.557057 83.630232) (xy 100.516841 83.613327)
+        (xy 100.510411 83.611385) (xy 100.323186 83.556283) (xy 100.280394 83.54812) (xy 100.237661 83.539348) (xy 100.230977 83.538693)
+        (xy 100.036615 83.521004) (xy 99.993019 83.521308) (xy 99.949423 83.521004) (xy 99.942739 83.521659) (xy 99.748642 83.54206)
+        (xy 99.705955 83.550823) (xy 99.663116 83.558995) (xy 99.656687 83.560936) (xy 99.470249 83.618648) (xy 99.430048 83.635547)
+        (xy 99.389639 83.651873) (xy 99.383709 83.655026) (xy 99.212033 83.747851) (xy 99.175929 83.772204) (xy 99.13941 83.796101)
+        (xy 99.134205 83.800346) (xy 98.983827 83.92475) (xy 98.953108 83.955684) (xy 98.921962 83.986185) (xy 98.917681 83.99136)
+        (xy 98.794331 84.142602) (xy 98.77021 84.178907) (xy 98.745576 84.214884) (xy 98.742381 84.220792) (xy 98.650756 84.393115)
+        (xy 98.634148 84.433408) (xy 98.616969 84.47349) (xy 98.614983 84.479906) (xy 98.558574 84.666742) (xy 98.550108 84.709502)
+        (xy 98.541043 84.752149) (xy 98.540341 84.758829) (xy 98.521296 84.953062) (xy 98.519 84.976375) (xy 92.022234 84.976375)
+        (xy 92.201443 84.872909) (xy 93.674677 84.200106) (xy 95.205194 83.670389) (xy 96.779133 83.288556) (xy 98.382241 83.058063)
+        (xy 100 82.981)
+      )
+    )
+    (filled_polygon
+      (pts
+        (xy 91.988158 86.933919) (xy 92.17779 86.991443) (xy 92.264669 87) (xy 92.17779 87.008557) (xy 91.988158 87.066081)
+        (xy 91.813392 87.159495) (xy 91.660209 87.285209) (xy 91.534495 87.438392) (xy 91.441081 87.613158) (xy 91.383557 87.80279)
+        (xy 91.372843 87.911565) (xy 87.659785 91.624624) (xy 87.640473 91.640473) (xy 87.577241 91.717521) (xy 87.530255 91.805426)
+        (xy 87.501322 91.900808) (xy 87.494 91.975147) (xy 87.494 91.975154) (xy 87.491553 92) (xy 87.494 92.024846)
+        (xy 87.494001 102.975144) (xy 87.491553 103) (xy 87.501322 103.099192) (xy 87.530255 103.194574) (xy 87.552127 103.235492)
+        (xy 87.577242 103.282479) (xy 87.640474 103.359527) (xy 87.659781 103.375372) (xy 92.778408 108.494) (xy 91.709592 108.494)
+        (xy 86.506 103.290409) (xy 86.506 92.209591) (xy 91.853597 86.861995)
+      )
+    )
+    (filled_polygon
+      (pts
+        (xy 91.988158 88.933919) (xy 92.17779 88.991443) (xy 92.264669 89) (xy 92.17779 89.008557) (xy 91.988158 89.066081)
+        (xy 91.813392 89.159495) (xy 91.660209 89.285209) (xy 91.534495 89.438392) (xy 91.441081 89.613158) (xy 91.383557 89.80279)
+        (xy 91.364133 90) (xy 91.383557 90.19721) (xy 91.430953 90.353455) (xy 89.659781 92.124628) (xy 89.640474 92.140473)
+        (xy 89.577242 92.217521) (xy 89.554604 92.259874) (xy 89.530255 92.305426) (xy 89.501322 92.400808) (xy 89.491553 92.5)
+        (xy 89.494001 92.524856) (xy 89.494 102.475154) (xy 89.491553 102.5) (xy 89.494 102.524846) (xy 89.494 102.524853)
+        (xy 89.501322 102.599192) (xy 89.530255 102.694574) (xy 89.577241 102.782479) (xy 89.640473 102.859527) (xy 89.659785 102.875376)
+        (xy 94.828399 108.043991) (xy 93.759583 108.043991) (xy 88.506 102.790409) (xy 88.506 92.209591) (xy 91.853597 88.861995)
       )
     )
     (filled_polygon
       (pts
-        (xy 1.617759 -16.941937) (xy 3.220867 -16.711444) (xy 4.794806 -16.329611) (xy 6.325323 -15.799894) (xy 7.798557 -15.127091)
-        (xy 9.201166 -14.317294) (xy 10.520448 -13.377838) (xy 11.744455 -12.31723) (xy 12.862102 -11.145075) (xy 13.863268 -9.871989)
-        (xy 14.738886 -8.5095) (xy 15.481027 -7.069948) (xy 16.082969 -5.56637) (xy 16.539261 -4.012381) (xy 16.845771 -2.422056)
-        (xy 16.999723 -0.809797) (xy 16.999723 0.809797) (xy 16.845771 2.422056) (xy 16.539261 4.012381) (xy 16.082969 5.56637)
-        (xy 15.481027 7.069948) (xy 14.738886 8.5095) (xy 13.863268 9.871989) (xy 12.862102 11.145075) (xy 11.744455 12.31723)
-        (xy 10.520448 13.377838) (xy 9.201166 14.317294) (xy 7.798557 15.127091) (xy 6.325323 15.799894) (xy 4.794806 16.329611)
-        (xy 3.220867 16.711444) (xy 1.617759 16.941937) (xy 0 17.019) (xy -1.617759 16.941937) (xy -3.220867 16.711444)
-        (xy -4.794806 16.329611) (xy -6.325323 15.799894) (xy -7.798557 15.127091) (xy -9.201166 14.317294) (xy -10.520448 13.377838)
-        (xy -11.744455 12.31723) (xy -12.862102 11.145075) (xy -13.863268 9.871989) (xy -14.738886 8.5095) (xy -15.481027 7.069948)
-        (xy -16.082969 5.56637) (xy -16.539261 4.012381) (xy -16.845771 2.422056) (xy -16.999723 0.809797) (xy -16.999723 -0.155715)
-        (xy -7.581 -0.155715) (xy -7.581 0.155715) (xy -7.520243 0.461161) (xy -7.401064 0.748884) (xy -7.228043 1.007829)
-        (xy -7.007829 1.228043) (xy -6.748884 1.401064) (xy -6.461161 1.520243) (xy -6.155715 1.581) (xy -5.844285 1.581)
-        (xy -5.538839 1.520243) (xy -5.251116 1.401064) (xy -4.992171 1.228043) (xy -4.771957 1.007829) (xy -4.598936 0.748884)
-        (xy -4.511055 0.536722) (xy -4.355035 1.321086) (xy -4.013624 2.145327) (xy -3.517971 2.887124) (xy -2.887124 3.517971)
-        (xy -2.145327 4.013624) (xy -1.321086 4.355035) (xy -0.446076 4.529086) (xy 0.446076 4.529086) (xy 1.321086 4.355035)
-        (xy 2.145327 4.013624) (xy 2.887124 3.517971) (xy 3.517971 2.887124) (xy 4.013624 2.145327) (xy 4.355035 1.321086)
-        (xy 4.529086 0.446076) (xy 4.529086 -0.446076) (xy 4.355035 -1.321086) (xy 4.013624 -2.145327) (xy 3.517971 -2.887124)
-        (xy 2.887124 -3.517971) (xy 2.145327 -4.013624) (xy 1.321086 -4.355035) (xy 0.446076 -4.529086) (xy -0.446076 -4.529086)
-        (xy -1.321086 -4.355035) (xy -2.145327 -4.013624) (xy -2.887124 -3.517971) (xy -3.517971 -2.887124) (xy -4.013624 -2.145327)
-        (xy -4.355035 -1.321086) (xy -4.511055 -0.536722) (xy -4.598936 -0.748884) (xy -4.771957 -1.007829) (xy -4.992171 -1.228043)
-        (xy -5.251116 -1.401064) (xy -5.538839 -1.520243) (xy -5.844285 -1.581) (xy -6.155715 -1.581) (xy -6.461161 -1.520243)
-        (xy -6.748884 -1.401064) (xy -7.007829 -1.228043) (xy -7.228043 -1.007829) (xy -7.401064 -0.748884) (xy -7.520243 -0.461161)
-        (xy -7.581 -0.155715) (xy -16.999723 -0.155715) (xy -16.999723 -0.809797) (xy -16.845771 -2.422056) (xy -16.539261 -4.012381)
-        (xy -16.082969 -5.56637) (xy -15.481027 -7.069948) (xy -14.738886 -8.5095) (xy -13.863268 -9.871989) (xy -12.862102 -11.145075)
-        (xy -11.744455 -12.31723) (xy -10.520448 -13.377838) (xy -9.201166 -14.317294) (xy -7.798557 -15.127091) (xy -6.813564 -15.576922)
-        (xy -5.281 -15.576922) (xy -5.281 -15.423078) (xy -5.250987 -15.272191) (xy -5.192113 -15.130058) (xy -5.106642 -15.002141)
-        (xy -4.997859 -14.893358) (xy -4.869942 -14.807887) (xy -4.727809 -14.749013) (xy -4.576922 -14.719) (xy -4.423078 -14.719)
-        (xy -4.272191 -14.749013) (xy -4.130058 -14.807887) (xy -4.002141 -14.893358) (xy -3.96172 -14.933779) (xy -3.839791 -14.785209)
-        (xy -3.686608 -14.659495) (xy -3.511842 -14.566081) (xy -3.32221 -14.508557) (xy -3.235331 -14.5) (xy -3.32221 -14.491443)
-        (xy -3.511842 -14.433919) (xy -3.686608 -14.340505) (xy -3.839791 -14.214791) (xy -3.96172 -14.066221) (xy -4.002141 -14.106642)
-        (xy -4.130058 -14.192113) (xy -4.272191 -14.250987) (xy -4.423078 -14.281) (xy -4.576922 -14.281) (xy -4.727809 -14.250987)
-        (xy -4.869942 -14.192113) (xy -4.997859 -14.106642) (xy -5.106642 -13.997859) (xy -5.192113 -13.869942) (xy -5.250987 -13.727809)
-        (xy -5.281 -13.576922) (xy -5.281 -13.423078) (xy -5.250987 -13.272191) (xy -5.192113 -13.130058) (xy -5.106642 -13.002141)
-        (xy -4.997859 -12.893358) (xy -4.869942 -12.807887) (xy -4.727809 -12.749013) (xy -4.576922 -12.719) (xy -4.423078 -12.719)
-        (xy -4.272191 -12.749013) (xy -4.130058 -12.807887) (xy -4.002141 -12.893358) (xy -3.96172 -12.933779) (xy -3.839791 -12.785209)
-        (xy -3.686608 -12.659495) (xy -3.511842 -12.566081) (xy -3.32221 -12.508557) (xy -3.235331 -12.5) (xy -3.32221 -12.491443)
-        (xy -3.511842 -12.433919) (xy -3.686608 -12.340505) (xy -3.839791 -12.214791) (xy -3.96172 -12.066221) (xy -4.002141 -12.106642)
-        (xy -4.130058 -12.192113) (xy -4.272191 -12.250987) (xy -4.423078 -12.281) (xy -4.576922 -12.281) (xy -4.727809 -12.250987)
-        (xy -4.869942 -12.192113) (xy -4.997859 -12.106642) (xy -5.106642 -11.997859) (xy -5.192113 -11.869942) (xy -5.250987 -11.727809)
-        (xy -5.281 -11.576922) (xy -5.281 -11.423078) (xy -5.250987 -11.272191) (xy -5.192113 -11.130058) (xy -5.106642 -11.002141)
-        (xy -4.997859 -10.893358) (xy -4.869942 -10.807887) (xy -4.727809 -10.749013) (xy -4.576922 -10.719) (xy -4.423078 -10.719)
-        (xy -4.272191 -10.749013) (xy -4.130058 -10.807887) (xy -4.002141 -10.893358) (xy -3.96172 -10.933779) (xy -3.839791 -10.785209)
-        (xy -3.686608 -10.659495) (xy -3.511842 -10.566081) (xy -3.32221 -10.508557) (xy -3.235331 -10.5) (xy -3.32221 -10.491443)
-        (xy -3.511842 -10.433919) (xy -3.686608 -10.340505) (xy -3.839791 -10.214791) (xy -3.96172 -10.066221) (xy -4.002141 -10.106642)
-        (xy -4.130058 -10.192113) (xy -4.272191 -10.250987) (xy -4.423078 -10.281) (xy -4.576922 -10.281) (xy -4.727809 -10.250987)
-        (xy -4.869942 -10.192113) (xy -4.997859 -10.106642) (xy -5.106642 -9.997859) (xy -5.192113 -9.869942) (xy -5.250987 -9.727809)
-        (xy -5.281 -9.576922) (xy -5.281 -9.423078) (xy -5.250987 -9.272191) (xy -5.192113 -9.130058) (xy -5.106642 -9.002141)
-        (xy -4.997859 -8.893358) (xy -4.869942 -8.807887) (xy -4.727809 -8.749013) (xy -4.576922 -8.719) (xy -4.423078 -8.719)
-        (xy -4.272191 -8.749013) (xy -4.130058 -8.807887) (xy -4.002141 -8.893358) (xy -3.96172 -8.933779) (xy -3.839791 -8.785209)
-        (xy -3.686608 -8.659495) (xy -3.511842 -8.566081) (xy -3.32221 -8.508557) (xy -3.174414 -8.494) (xy -1.825586 -8.494)
-        (xy -1.67779 -8.508557) (xy -1.488158 -8.566081) (xy -1.313392 -8.659495) (xy -1.160209 -8.785209) (xy -1.034495 -8.938392)
-        (xy -0.941081 -9.113158) (xy -0.909142 -9.21845) (xy 0.909203 -9.21845) (xy 0.967983 -9.046693) (xy 1.073847 -8.878453)
-        (xy 1.210499 -8.734099) (xy 1.372687 -8.619178) (xy 1.554179 -8.538106) (xy 1.748 -8.494) (xy 2.373 -8.494)
-        (xy 2.373 -9.373) (xy 2.627 -9.373) (xy 2.627 -8.494) (xy 3.252 -8.494) (xy 3.445821 -8.538106)
-        (xy 3.627313 -8.619178) (xy 3.789501 -8.734099) (xy 3.926153 -8.878453) (xy 4.032017 -9.046693) (xy 4.090797 -9.21845)
-        (xy 4.026852 -9.373) (xy 2.627 -9.373) (xy 2.373 -9.373) (xy 0.973148 -9.373) (xy 0.909203 -9.21845)
-        (xy -0.909142 -9.21845) (xy -0.883557 -9.30279) (xy -0.864133 -9.5) (xy -0.883557 -9.69721) (xy -0.941081 -9.886842)
-        (xy -1.034495 -10.061608) (xy -1.160209 -10.214791) (xy -1.313392 -10.340505) (xy -1.488158 -10.433919) (xy -1.67779 -10.491443)
-        (xy -1.764669 -10.5) (xy -1.67779 -10.508557) (xy -1.488158 -10.566081) (xy -1.313392 -10.659495) (xy -1.160209 -10.785209)
-        (xy -1.034495 -10.938392) (xy -0.941081 -11.113158) (xy -0.883557 -11.30279) (xy -0.864133 -11.5) (xy -0.883557 -11.69721)
-        (xy -0.941081 -11.886842) (xy -1.034495 -12.061608) (xy -1.160209 -12.214791) (xy -1.313392 -12.340505) (xy -1.488158 -12.433919)
-        (xy -1.67779 -12.491443) (xy -1.764669 -12.5) (xy -1.67779 -12.508557) (xy -1.488158 -12.566081) (xy -1.313392 -12.659495)
-        (xy -1.160209 -12.785209) (xy -1.034495 -12.938392) (xy -0.941081 -13.113158) (xy -0.883557 -13.30279) (xy -0.864133 -13.5)
-        (xy -0.883557 -13.69721) (xy -0.941081 -13.886842) (xy -1.034495 -14.061608) (xy -1.160209 -14.214791) (xy -1.313392 -14.340505)
-        (xy -1.488158 -14.433919) (xy -1.67779 -14.491443) (xy -1.764669 -14.5) (xy -1.67779 -14.508557) (xy -1.488158 -14.566081)
-        (xy -1.313392 -14.659495) (xy -1.160209 -14.785209) (xy -1.034495 -14.938392) (xy -0.941081 -15.113158) (xy -0.883557 -15.30279)
-        (xy -0.864133 -15.5) (xy 0.864133 -15.5) (xy 0.883557 -15.30279) (xy 0.941081 -15.113158) (xy 1.034495 -14.938392)
-        (xy 1.160209 -14.785209) (xy 1.313392 -14.659495) (xy 1.488158 -14.566081) (xy 1.67779 -14.508557) (xy 1.764669 -14.5)
-        (xy 1.67779 -14.491443) (xy 1.488158 -14.433919) (xy 1.313392 -14.340505) (xy 1.160209 -14.214791) (xy 1.034495 -14.061608)
-        (xy 0.941081 -13.886842) (xy 0.883557 -13.69721) (xy 0.864133 -13.5) (xy 0.883557 -13.30279) (xy 0.941081 -13.113158)
-        (xy 1.034495 -12.938392) (xy 1.160209 -12.785209) (xy 1.313392 -12.659495) (xy 1.488158 -12.566081) (xy 1.67779 -12.508557)
-        (xy 1.764669 -12.5) (xy 1.67779 -12.491443) (xy 1.488158 -12.433919) (xy 1.313392 -12.340505) (xy 1.160209 -12.214791)
-        (xy 1.034495 -12.061608) (xy 0.941081 -11.886842) (xy 0.883557 -11.69721) (xy 0.864133 -11.5) (xy 0.883557 -11.30279)
-        (xy 0.941081 -11.113158) (xy 1.034495 -10.938392) (xy 1.160209 -10.785209) (xy 1.313392 -10.659495) (xy 1.488158 -10.566081)
-        (xy 1.67779 -10.508557) (xy 1.734633 -10.502958) (xy 1.554179 -10.461894) (xy 1.372687 -10.380822) (xy 1.210499 -10.265901)
-        (xy 1.073847 -10.121547) (xy 0.967983 -9.953307) (xy 0.909203 -9.78155) (xy 0.973148 -9.627) (xy 2.373 -9.627)
-        (xy 2.373 -9.647) (xy 2.627 -9.647) (xy 2.627 -9.627) (xy 4.026852 -9.627) (xy 4.090797 -9.78155)
-        (xy 4.032017 -9.953307) (xy 3.926153 -10.121547) (xy 3.789501 -10.265901) (xy 3.627313 -10.380822) (xy 3.445821 -10.461894)
-        (xy 3.265367 -10.502958) (xy 3.32221 -10.508557) (xy 3.511842 -10.566081) (xy 3.686608 -10.659495) (xy 3.839791 -10.785209)
-        (xy 3.94959 -10.919) (xy 3.976499 -10.919) (xy 4.002141 -10.893358) (xy 4.130058 -10.807887) (xy 4.272191 -10.749013)
-        (xy 4.423078 -10.719) (xy 4.576922 -10.719) (xy 4.727809 -10.749013) (xy 4.869942 -10.807887) (xy 4.997859 -10.893358)
-        (xy 5.106642 -11.002141) (xy 5.192113 -11.130058) (xy 5.250987 -11.272191) (xy 5.281 -11.423078) (xy 5.281 -11.576922)
-        (xy 5.250987 -11.727809) (xy 5.192113 -11.869942) (xy 5.106642 -11.997859) (xy 4.997859 -12.106642) (xy 4.869942 -12.192113)
-        (xy 4.727809 -12.250987) (xy 4.576922 -12.281) (xy 4.423078 -12.281) (xy 4.272191 -12.250987) (xy 4.130058 -12.192113)
-        (xy 4.002141 -12.106642) (xy 3.976499 -12.081) (xy 3.94959 -12.081) (xy 3.839791 -12.214791) (xy 3.686608 -12.340505)
-        (xy 3.511842 -12.433919) (xy 3.32221 -12.491443) (xy 3.235331 -12.5) (xy 3.32221 -12.508557) (xy 3.511842 -12.566081)
-        (xy 3.686608 -12.659495) (xy 3.839791 -12.785209) (xy 3.96172 -12.933779) (xy 4.002141 -12.893358) (xy 4.130058 -12.807887)
-        (xy 4.272191 -12.749013) (xy 4.423078 -12.719) (xy 4.576922 -12.719) (xy 4.727809 -12.749013) (xy 4.869942 -12.807887)
-        (xy 4.997859 -12.893358) (xy 5.106642 -13.002141) (xy 5.192113 -13.130058) (xy 5.250987 -13.272191) (xy 5.281 -13.423078)
-        (xy 5.281 -13.576922) (xy 5.250987 -13.727809) (xy 5.192113 -13.869942) (xy 5.106642 -13.997859) (xy 4.997859 -14.106642)
-        (xy 4.869942 -14.192113) (xy 4.727809 -14.250987) (xy 4.576922 -14.281) (xy 4.423078 -14.281) (xy 4.272191 -14.250987)
-        (xy 4.130058 -14.192113) (xy 4.002141 -14.106642) (xy 3.96172 -14.066221) (xy 3.839791 -14.214791) (xy 3.686608 -14.340505)
-        (xy 3.511842 -14.433919) (xy 3.32221 -14.491443) (xy 3.235331 -14.5) (xy 3.32221 -14.508557) (xy 3.511842 -14.566081)
-        (xy 3.686608 -14.659495) (xy 3.839791 -14.785209) (xy 3.96172 -14.933779) (xy 4.002141 -14.893358) (xy 4.130058 -14.807887)
-        (xy 4.272191 -14.749013) (xy 4.423078 -14.719) (xy 4.576922 -14.719) (xy 4.727809 -14.749013) (xy 4.869942 -14.807887)
-        (xy 4.997859 -14.893358) (xy 5.106642 -15.002141) (xy 5.192113 -15.130058) (xy 5.250987 -15.272191) (xy 5.281 -15.423078)
-        (xy 5.281 -15.576922) (xy 5.250987 -15.727809) (xy 5.192113 -15.869942) (xy 5.106642 -15.997859) (xy 4.997859 -16.106642)
-        (xy 4.869942 -16.192113) (xy 4.727809 -16.250987) (xy 4.576922 -16.281) (xy 4.423078 -16.281) (xy 4.272191 -16.250987)
-        (xy 4.130058 -16.192113) (xy 4.002141 -16.106642) (xy 3.96172 -16.066221) (xy 3.839791 -16.214791) (xy 3.686608 -16.340505)
-        (xy 3.511842 -16.433919) (xy 3.32221 -16.491443) (xy 3.174414 -16.506) (xy 1.825586 -16.506) (xy 1.67779 -16.491443)
-        (xy 1.488158 -16.433919) (xy 1.313392 -16.340505) (xy 1.160209 -16.214791) (xy 1.034495 -16.061608) (xy 0.941081 -15.886842)
-        (xy 0.883557 -15.69721) (xy 0.864133 -15.5) (xy -0.864133 -15.5) (xy -0.883557 -15.69721) (xy -0.941081 -15.886842)
-        (xy -1.034495 -16.061608) (xy -1.160209 -16.214791) (xy -1.313392 -16.340505) (xy -1.488158 -16.433919) (xy -1.67779 -16.491443)
-        (xy -1.825586 -16.506) (xy -3.174414 -16.506) (xy -3.32221 -16.491443) (xy -3.511842 -16.433919) (xy -3.686608 -16.340505)
-        (xy -3.839791 -16.214791) (xy -3.96172 -16.066221) (xy -4.002141 -16.106642) (xy -4.130058 -16.192113) (xy -4.272191 -16.250987)
-        (xy -4.423078 -16.281) (xy -4.576922 -16.281) (xy -4.727809 -16.250987) (xy -4.869942 -16.192113) (xy -4.997859 -16.106642)
-        (xy -5.106642 -15.997859) (xy -5.192113 -15.869942) (xy -5.250987 -15.727809) (xy -5.281 -15.576922) (xy -6.813564 -15.576922)
-        (xy -6.325323 -15.799894) (xy -4.794806 -16.329611) (xy -3.220867 -16.711444) (xy -1.617759 -16.941937) (xy 0 -17.019)
+        (xy 91.364133 92) (xy 91.383557 92.19721) (xy 91.441081 92.386842) (xy 91.534495 92.561608) (xy 91.619846 92.665608)
+        (xy 91.577242 92.717521) (xy 91.552127 92.764508) (xy 91.530255 92.805426) (xy 91.501322 92.900808) (xy 91.491553 93)
+        (xy 91.494001 93.024856) (xy 91.494 101.975154) (xy 91.491553 102) (xy 91.494 102.024846) (xy 91.494 102.024853)
+        (xy 91.501322 102.099192) (xy 91.530255 102.194574) (xy 91.577241 102.282479) (xy 91.640473 102.359527) (xy 91.659785 102.375376)
+        (xy 96.778408 107.494) (xy 95.709592 107.494) (xy 90.506 102.290409) (xy 90.506 92.709591) (xy 91.380362 91.83523)
       )
     )
   )

BIN
scripts/RobotoMono-Bold.ttf


+ 16 - 0
scripts/annotate_image.sh

@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+
+FONT="$DIR/RobotoMono-Bold.ttf"
+
+# Make sure font exists
+ls "$FONT"
+
+set -v
+
+LABEL="`date --rfc-3339=seconds`\n`git rev-parse --short HEAD`"
+convert -background black -fill white -pointsize 12 -font "$FONT" -size 300x36 label:"$LABEL" -bordercolor black -border 3 $1 +swap -append $1
+

+ 0 - 0
util/__init__.py


+ 14 - 0
util/file_util.py

@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+
+import errno
+import os
+
+def mkdir_p(path):
+    try:
+        os.makedirs(path)
+    except OSError as exc:  # Python >2.5
+        if exc.errno == errno.EEXIST and os.path.isdir(path):
+            pass
+        else:
+            raise
+

+ 32 - 0
util/rev_info.py

@@ -0,0 +1,32 @@
+import datetime
+import subprocess
+
+def git_short_rev():
+    try:
+        return subprocess.check_output([
+            'git',
+            'rev-parse',
+            '--short',
+            'HEAD',
+        ]).decode('utf-8').strip()
+    except Exception:
+        raise RuntimeError("Could not read git revision. Make sure you have git installed and you're working with a git clone of the repository.")
+
+def current_date():
+    return datetime.date.today().strftime('%Y-%m-%d')
+
+def git_date(short=True):
+    try:
+        iso = subprocess.check_output([
+            'git',
+            'log',
+            '-1',
+            '--format=%ci',
+            'HEAD',
+        ]).decode('utf-8').strip()
+        if short:
+            return iso.split(' ')[0]
+        else:
+            return iso
+    except Exception:
+        raise RuntimeError("Could not read git commit date. Make sure you have git installed and you're working with a git clone of the repository.")

Неке датотеке нису приказане због велике количине промена