diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index d259fc9..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -ko_fi: polprzewodnikowy diff --git a/.github/sc64_clean_pcb.jpg b/.github/sc64_clean_pcb.jpg deleted file mode 100644 index bcd4ff9..0000000 Binary files a/.github/sc64_clean_pcb.jpg and /dev/null differ diff --git a/.github/sc64_in_n64.jpg b/.github/sc64_in_n64.jpg deleted file mode 100644 index 60f234e..0000000 Binary files a/.github/sc64_in_n64.jpg and /dev/null differ diff --git a/.github/sc64_on_table.jpg b/.github/sc64_on_table.jpg deleted file mode 100644 index 80b8538..0000000 Binary files a/.github/sc64_on_table.jpg and /dev/null differ diff --git a/.github/sc64_v2_block_diagram.svg b/.github/sc64_v2_block_diagram.svg new file mode 100644 index 0000000..35515f2 --- /dev/null +++ b/.github/sc64_v2_block_diagram.svg @@ -0,0 +1,4 @@ + + + +
SPI Interface
SPI Interface
USB FIFO R/W
USB FIFO R/W
Memory interface
Memory interface
Control Register File
Control Register File
FT1248 Interface
FT1248 Interface
TX FIFO 1kB
TX FIFO 1kB
RX FIFO 1kB
RX FIFO 1kB
FIFO Junction
FIFO Junction
USB DMA Controller
USB DMA Controller
SDIO Interface
SDIO Interface
TX FIFO 1kB
TX FIFO 1kB
RX FIFO 1kB
RX FIFO 1kB
SD DMA Controller
SD DMA Controller
USB
FT232H
USB...
USB
Type-C
USB...
SD Card Slot
SD Card Sl...
μC
STM32G030
μC...
RTC
MCP7940N
RTC...
UART Header
UART Header
 USB
 USB
 Flashcart Controller
 Flashcart Controller
 SD Card
 SD Card
Button
Button
LED
LED
FLASH Interface
FLASH Interface
SDRAM Interface
SDRAM Interface
Block RAM ~10kB
Block RAM ~10kB
SDRAM
64 MB
SDRAM...
QSPI FLASH
16 MB
QSPI FLASH...
 Memory
 Memory
Memory Arbiter
Memory Arbiter
FPGA Vendor Interface
FPGA Vendor Int...
N64
CIC
N64...
N64
Reset
N64...
N64
IRQ
N64...
N64
Joybus
N64...
N64
AD16 Bus
N64...
PI Interface
PI Interface
Joybus Interface
Joybus Interface
EEPROM Controller
EEPROM Controller
RTC Controller
RTC Controller
64DD Controller
64DD Controller
FlashRAM Controller
FlashRAM Controller
Flashcart Interface
Flashcart Interface
 N64 Joybus devices
 N64 Joybus devices
 N64 PI devices
 N64 PI devices
IRQ Controller
IRQ Controller
FPGA 
LCMXO2-7000 
FPGA...
12 MHz
Clock
12 MHz...
50 MHz
Clock
50 MHz...
PLL
PLL
SYS CLK
SYS CLK
SYS CLK
100 MHz
SYS CLK...
SDRAM CLK
100 MHz 90°
SDRAM CLK...
 Clock & Reset
 Clock & Reset
RESET
RESET
Power-ON
Reset Generator
Power-ON...
Debug
Header
Debug...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/.github/sc64_v2_example.jpg b/.github/sc64_v2_example.jpg new file mode 100644 index 0000000..5a5ae41 Binary files /dev/null and b/.github/sc64_v2_example.jpg differ diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4da4db4..708ec6a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,15 +20,25 @@ jobs: - uses: actions/checkout@v2 with: submodules: true + + - name: Prepare Lattice Diamond license + env: + ENCODED_LICENSE: ${{ secrets.LATTICE_DIAMOND_LICENSE }} + run: | + mkdir -p ./flexlm + echo "$ENCODED_LICENSE" > ./flexlm/encoded_license + base64 -d ./flexlm/encoded_license > ./flexlm/license.dat - name: Build script + env: + MAC_ADDRESS: ${{ secrets.LATTICE_DIAMOND_MAC }} run: ./docker_build.sh release --force-clean - name: Upload artifact uses: actions/upload-artifact@v2 with: - name: SummerCart64 - path: SummerCart64.zip + name: SC64 + path: SC64.zip - name: Get release if: github.event_name == 'release' && github.event.action == 'created' @@ -44,6 +54,6 @@ jobs: GITHUB_TOKEN: ${{ github.token }} with: upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: SummerCart64.zip - asset_name: SummerCart64.zip + asset_path: SC64.zip + asset_name: SC64.zip asset_content_type: application/zip diff --git a/.gitignore b/.gitignore index 2e1177e..44266f1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ **/.DS_Store -**/.vscode +**/.vscode/ **/*.bak **/*.zip +/flexlm + +!**/.vscode/tasks.json diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e1371e8..0000000 --- a/.gitmodules +++ /dev/null @@ -1,8 +0,0 @@ -[submodule "fw/picorv32"] - path = fw/picorv32 - url = https://github.com/cliffordwolf/picorv32.git - ignore = dirty -[submodule "sw/cic"] - path = sw/cic - url = https://github.com/ManCloud/UltraCIC-III.git - ignore = dirty diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..6a40325 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,73 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build_bootloader", + "type": "shell", + "command": "./docker_build.sh bootloader", + "presentation": { + "showReuseMessage": false, + "clear": true + }, + "windows": { + "command": "wsl -- ./docker_build.sh bootloader" + }, + "group": "build" + }, + { + "label": "build_controller", + "type": "shell", + "command": "./docker_build.sh controller", + "presentation": { + "showReuseMessage": false, + "clear": true + }, + "windows": { + "command": "wsl -- ./docker_build.sh controller" + }, + "group": "build" + }, + { + "label": "build_fpga", + "type": "shell", + "command": "./docker_build.sh fpga", + "presentation": { + "showReuseMessage": false, + "clear": true + }, + "windows": { + "command": "wsl -- ./docker_build.sh fpga" + }, + "group": "build" + }, + { + "label": "build_update", + "type": "shell", + "command": "./docker_build.sh update", + "presentation": { + "showReuseMessage": false, + "clear": true + }, + "windows": { + "command": "wsl -- ./docker_build.sh update" + }, + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "label": "build_release", + "type": "shell", + "command": "./docker_build.sh release --force-clean", + "presentation": { + "showReuseMessage": false, + "clear": true + }, + "windows":{ + "command": "wsl -- ./docker_build.sh release --force-clean" + }, + "group": "build" + }, + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 8b70715..9a834fb 100644 --- a/README.md +++ b/README.md @@ -1,78 +1,29 @@ -# SummerCollection - -A collection of hardware, firmware and software designs of SummerCart64 - Nintendo 64 FlashCart/DevKit. +# SC64 - an open source Nintendo 64 flashcart -## Project parts - -### Firmware - -Folder **`fw`** contains firmware written in Verilog for Intel MAX10 FPGA. - -### Hardware - -Folder **`hw`** contains PCB design made in Autodesk Eagle. - -### Software - -Folder **`sw`** contains several helper programs that makes flash cart work all together, including bootloader and CIC emulation. +## Features + - 64 MB SDRAM memory for game and save data + - 16 MB FLASH memory for bootloader and extended game data + - 8 kB on-chip buffer for general use + - 25 MB/s peak transfer rate USB interface for data upload/download and debug functionality + - 25 MB/s peak transfer rate SD card interface + - EEPROM, SRAM and FlashRAM save types ~~with automatic writeback to SD card~~ (_not implemented yet_) + - Battery backed real time clock (RTC) + - Status LED and button for general use + - 64DD add-on emulation + - IS-Viewer 64 debug interface + - Software and firmware update via USB interface + - N64 bootloader with support for IPL2 registers spoofing and loading menu from SD card + - Enhanced [UltraCIC_C](https://github.com/jago85/UltraCIC_C) emulation with automatic region switching and programmable seed/checksum values + - PC app for communicating with flashcart (game/save data upload/download, feature enable control and debug console) + - [UNFLoader](https://github.com/buu342/N64-UNFLoader) support -## What works +## High-level flashcart block diagram -### **OLD STATUS, WILL BE UPDATED SOON** - -~~Currently hardware implements basic functionality for playing games - ROM emulation, 4/16K EEPROM, bootloader and PC communication. You can send any ROM to the SDRAM from PC and if game doesn't check for save hardware other than EEPROM then it most likely will work. Bootloader does all the work necessary to setup the console registers for specific CIC chip that game requires.~~ +[](.github/sc64_v2_block_diagram.svg) -## How to build +## Finished sample -### **OLD INSTRUCTIONS, WILL BE UPDATED SOON** - -~~Instructions below are mostly written for Windows users and point to Windows specific executables.~~ - -1. ~~Download latest zip files from [releases tab](https://github.com/Polprzewodnikowy/SummerCollection/releases).~~ -2. ~~Order PCBs in your farovite company, all gerbers, bill of materials and schematics are in **`SummerCart64_PCB-[version].zip`** file.~~ -3. ~~Order all necessary components, eg. in [Mouser](https://mouser.com/).~~ -4. ~~Solder all components onto the PCB.~~ -5. ~~Connect flashcart to PC.~~ -6. ~~Download [FT_PROG](https://www.ftdichip.com/Support/Utilities.htm#FT_PROG) from FTDI website.~~ -7. ~~Open FT_PROG and scan for devices.~~ -8. ~~Load `ftdi-template.xml` from **`SummerCart64-[version].zip`** located in `hw` folder.~~ -9. ~~Program FTDI chip, then right click on the device and select "Cycle port"~~ -10. ~~Download and install [Arrow USB Blaster drivers](https://shop.trenz-electronic.de/en/Download/?path=Trenz_Electronic/Software/Drivers/Arrow_USB_Programmer/Arrow_USB_Programmer_2.4) from Trenz Electronic website.~~ -11. ~~Download and install [QuartusProgrammer](https://download.altera.com/akdlm/software/acdsinst/20.1std/711/ib_installers/QuartusProgrammerSetup-20.1.0.711-windows.exe) from Intel website.~~ -12. ~~Click on "Hardware Setup..." button and select "Arrow-USB-Blaster [AR*xxxxxx*]" in "Currently selected hardware", then close window.~~ -13. ~~Click on "Auto Detect" button and select "10M08SC" option.~~ -14. ~~Click on the newly shown row, then click on "Change File..." button and select `SummerCart64.pof` file from **`SummerCart64-[version].zip`** located in `fw/output_files` folder.~~ -15. ~~Select "Program/Configure" and "Verify" checkboxes.~~ -16. ~~Click on "Start" button and wait for operation to finish.~~ -17. ~~Download and install avrdude.~~ -18. ~~Program ATtiny45 with `UltraCIC-III.hex` file from **`SummerCart64-[version].zip`** located in `sw/cic` folder, more information is available [here](https://github.com/ManCloud/UltraCIC-III).~~ -19. ~~Download latest release of [N64-UNFLoader](https://github.com/buu342/N64-UNFLoader).~~ -20. ~~Insert flashcart in the Nintendo 64.~~ -21. ~~Upload ROM by executing `UNFLoader -r your_rom_file.n64`~~ -22. ~~Turn on console and enjoy playing homebrew games on real hardware.~~ - - -## Issues - -### **OLD STATUS, WILL BE UPDATED SOON** - -~~There are several issues with the project at the moment in order of importance. Keep in mind that core flashcart functionality is fully working:~~ - -- ~~No save write-back to SD card without console reset implementation.~~ - - -## What's next - -Current goal is to rewrite README.md - - -## Finished sample (obsolete v1 version, to be replaced with v2) - -![SummerCart64 clean PCB](.github/sc64_clean_pcb.jpg) - -![SummerCart64 on table](.github/sc64_on_table.jpg) - -![SummerCart64 in partialy disassembled Nintendo 64](.github/sc64_in_n64.jpg) +[SC64 HW ver: 2.0](.github/sc64_v2_example.jpg) diff --git a/assets/sc64_logo.blend b/assets/sc64_logo.blend new file mode 100644 index 0000000..ecde59d Binary files /dev/null and b/assets/sc64_logo.blend differ diff --git a/build.sh b/build.sh index a240f1f..10e5af8 100755 --- a/build.sh +++ b/build.sh @@ -2,80 +2,66 @@ set -e -PACKAGE_FILE_NAME="SummerCart64" +PACKAGE_FILE_NAME="SC64" FILES=( - "./fw/output_files/SC64_firmware.pof" - "./fw/output_files/SC64_update.bin" - "./hw/ftdi-template.xml" - "./sw/cic/UltraCIC-III.hex" + "./fw/ftdi/ft232h_config.xml" + "./fw/project/lcmxo2/impl1/sc64_impl1.mrp" + "./fw/project/lcmxo2/impl1/sc64_impl1.twr" + "./sw/pc/dd64.py" + "./sw/pc/sc64.py" + "./sw/update/sc64.upd" "./LICENSE" + "./README.md" ) -BUILT_CIC=false -BUILT_N64=false -BUILT_RISCV=false +BUILT_BOOTLOADER=false +BUILT_CONTROLLER=false BUILT_FPGA=false BUILT_UPDATE=false BUILT_RELEASE=false FORCE_CLEAN=false -SKIP_FPGA_REBUILD=false -DEBUG_ENABLED=false -USER_FLAGS+=" -D__SC64_VERSION=\"$__SC64_VERSION\"" -build_cic () { - if [ "$BUILT_CIC" = true ]; then return; fi +build_bootloader () { + if [ "$BUILT_BOOTLOADER" = true ]; then return; fi - pushd sw/cic > /dev/null - avra UltraCIC-III.asm -D attiny45 - popd > /dev/null - - BUILT_CIC=true -} - -build_n64 () { - if [ "$BUILT_N64" = true ]; then return; fi - - pushd sw/n64 > /dev/null + pushd sw/bootloader > /dev/null if [ "$FORCE_CLEAN" = true ]; then make clean fi - make all -j USER_FLAGS="$USER_FLAGS" + FLAGS="$USER_FLAGS" + if [ ! -z "${GIT_BRANCH+x}" ]; then FLAGS+=" -DGIT_BRANCH='\"$GIT_BRANCH\"'"; fi + if [ ! -z "${GIT_TAG+x}" ]; then FLAGS+=" -DGIT_TAG='\"$GIT_TAG\"'"; fi + if [ ! -z "${GIT_SHA+x}" ]; then FLAGS+=" -DGIT_SHA='\"$GIT_SHA\"'"; fi + if [ ! -z "${GIT_MESSAGE+x}" ]; then FLAGS+=" -DGIT_MESSAGE='\"$GIT_MESSAGE\"'"; fi + make all -j USER_FLAGS="$FLAGS" popd > /dev/null - BUILT_N64=true + BUILT_BOOTLOADER=true } -build_riscv () { - if [ "$BUILT_RISCV" = true ]; then return; fi +build_controller () { + if [ "$BUILT_CONTROLLER" = true ]; then return; fi - pushd sw/riscv > /dev/null + pushd sw/controller > /dev/null if [ "$FORCE_CLEAN" = true ]; then - make clean + ./build.sh clean fi - make all -j USER_FLAGS="$USER_FLAGS" + USER_FLAGS="$USER_FLAGS" ./build.sh all popd > /dev/null - BUILT_RISCV=true + BUILT_CONTROLLER=true } build_fpga () { if [ "$BUILT_FPGA" = true ]; then return; fi - build_n64 - build_riscv - - pushd fw > /dev/null - if [ "$SKIP_FPGA_REBUILD" = true ] && [ -f output_files/SummerCart64.sof ]; then - quartus_cpf -c SummerCart64.cof - else - if [ "$DEBUG_ENABLED" = true ]; then - quartus_sh --set VERILOG_MACRO="DEBUG" ./SummerCart64.qpf - fi - quartus_sh --flow compile ./SummerCart64.qpf - quartus_sh --set -remove VERILOG_MACRO="DEBUG" ./SummerCart64.qpf + pushd fw/project/lcmxo2 > /dev/null + if [ "$FORCE_CLEAN" = true ]; then + rm -rf ./impl1/ fi + ./build.sh popd > /dev/null BUILT_FPGA=true @@ -84,12 +70,26 @@ build_fpga () { build_update () { if [ "$BUILT_UPDATE" = true ]; then return; fi + build_bootloader + build_controller build_fpga - pushd fw/output_files > /dev/null - cat sc64_firmware_ufm_auto.rpd sc64_firmware_cfm0_auto.rpd > SC64_update_tmp.bin - objcopy -I binary -O binary --reverse-bytes=4 SC64_update_tmp.bin SC64_update.bin - rm SC64_update_tmp.bin + pushd sw/update > /dev/null + if [ "$FORCE_CLEAN" = true ]; then + rm -f ./sc64.upd + fi + GIT_INFO="" + if [ ! -z "${GIT_BRANCH}" ]; then GIT_INFO+="branch: [$GIT_BRANCH] "; fi + if [ ! -z "${GIT_TAG}" ]; then GIT_INFO+="tag: [$GIT_TAG] "; fi + if [ ! -z "${GIT_SHA}" ]; then GIT_INFO+="sha: [$GIT_SHA] "; fi + if [ ! -z "${GIT_MESSAGE}" ]; then GIT_INFO+="message: [$GIT_MESSAGE] "; fi + GIT_INFO=$(echo "$GIT_INFO" | xargs) + python3 update.py \ + --git "$GIT_INFO" \ + --mcu ../controller/build/app/app.bin \ + --fpga ../../fw/project/lcmxo2/impl1/sc64_impl1.jed \ + --boot ../bootloader/build/bootloader.bin \ + sc64.upd popd > /dev/null BUILT_UPDATE=true @@ -98,7 +98,6 @@ build_update () { build_release () { if [ "$BUILT_RELEASE" = true ]; then return; fi - build_cic build_update if [ -e "./${PACKAGE_FILE_NAME}.zip" ]; then @@ -110,22 +109,17 @@ build_release () { } print_usage () { - echo "builder script for SummerCart64" - echo "usage: ./build.sh [cic] [n64] [riscv] [fpga] [update] [release] [-c] [-s] [-d] [--help]" + echo "builder script for SC64" + echo "usage: ./build.sh [bootloader] [controller] [fpga] [update] [release] [-c] [--help]" echo "parameters:" - echo " cic - assemble UltraCIC-III software" - echo " n64 - compile N64 bootloader software" - echo " riscv - compile cart governor software" - echo " fpga - compile FPGA design (triggers 'n64' and 'riscv' build)" - echo " update - convert programming .pof file to raw binary for self-upgrade (triggers 'fpga' build)" - echo " release - collect and zip files for release (triggers 'cic' and 'update' build)" + echo " bootloader - compile N64 bootloader software" + echo " controller - compile ARM controller software" + echo " fpga - compile FPGA design" + echo " update - compile all software and designs" + echo " release - collect and zip files for release (triggers 'update' build)" echo " -c | --force-clean" - echo " - clean software compilation result directories before build" - echo " -s | --skip-fpga-rebuild" - echo " - do not recompile whole FPGA design if it's already done, just update software binaries" - echo " -d | --debug" - echo " - enable debug features" - echo " --help - print this guide" + echo " - clean compilation result directories before build" + echo " --help - print this guide" } if test $# -eq 0; then @@ -135,23 +129,19 @@ if test $# -eq 0; then exit 1 fi -TRIGGER_CIC=false -TRIGGER_N64=false -TRIGGER_RISCV=false +TRIGGER_BOOTLOADER=false +TRIGGER_CONTROLLER=false TRIGGER_FPGA=false TRIGGER_UPDATE=false TRIGGER_RELEASE=false while test $# -gt 0; do case "$1" in - cic) - TRIGGER_CIC=true + bootloader) + TRIGGER_BOOTLOADER=true ;; - n64) - TRIGGER_N64=true - ;; - riscv) - TRIGGER_RISCV=true + controller) + TRIGGER_CONTROLLER=true ;; fpga) TRIGGER_FPGA=true @@ -165,12 +155,6 @@ while test $# -gt 0; do -c|--force-clean) FORCE_CLEAN=true ;; - -s|--skip-fpga-rebuild) - SKIP_FPGA_REBUILD=true - ;; - -d|--debug) - DEBUG_ENABLED=true - ;; --help) print_usage exit 0 @@ -185,10 +169,8 @@ while test $# -gt 0; do shift done -if [ "$DEBUG_ENABLED" = true ]; then USER_FLAGS+=" -DDEBUG"; fi -if [ "$TRIGGER_CIC" = true ]; then build_cic; fi -if [ "$TRIGGER_N64" = true ]; then build_n64; fi -if [ "$TRIGGER_RISCV" = true ]; then build_riscv; fi +if [ "$TRIGGER_BOOTLOADER" = true ]; then build_bootloader; fi +if [ "$TRIGGER_CONTROLLER" = true ]; then build_controller; fi if [ "$TRIGGER_FPGA" = true ]; then build_fpga; fi if [ "$TRIGGER_UPDATE" = true ]; then build_update; fi if [ "$TRIGGER_RELEASE" = true ]; then build_release; fi diff --git a/docker_build.sh b/docker_build.sh index 169cea1..0129053 100755 --- a/docker_build.sh +++ b/docker_build.sh @@ -1,18 +1,37 @@ #!/bin/bash -GIT_SHA=$(git rev-parse --short HEAD) -GIT_TAG=$(git describe --tags --exact-match 2> /dev/null) +BUILDER_IMAGE="ghcr.io/polprzewodnikowy/sc64env:v1.5" -if [ ! -z $GIT_TAG ]; then - __SC64_VERSION=$(printf "%.7q\ %.7q" $GIT_SHA $GIT_TAG) -else - __SC64_VERSION=$(printf "%.7q\ develop" $GIT_SHA) +pushd $(dirname $0) > /dev/null + +GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD) +GIT_TAG=$(git describe --tags 2> /dev/null) +GIT_SHA=$(git rev-parse HEAD) +GIT_MESSAGE=$(git log --oneline --format=%B -n 1 HEAD | head -n 1) + +if [ -t 1 ]; then + DOCKER_OPTIONS="-it" fi docker run \ + $DOCKER_OPTIONS \ --rm \ --user $(id -u):$(id -g) \ + --mac-address ${MAC_ADDRESS:-F8:12:34:56:78:90} \ + --mount type=bind,src="$(pwd)/flexlm",target="/flexlm" \ --mount type=bind,src="$(pwd)",target="/workdir" \ - -e __SC64_VERSION="$__SC64_VERSION" \ - ghcr.io/polprzewodnikowy/sc64env:v1.2 \ + -h=`hostname` \ + -e GIT_BRANCH="$GIT_BRANCH" \ + -e GIT_TAG="$GIT_TAG" \ + -e GIT_SHA="$GIT_SHA" \ + -e GIT_MESSAGE="$GIT_MESSAGE" \ + $BUILDER_IMAGE \ ./build.sh $@ + +BUILD_ERROR=$? + +popd > /dev/null + +if [ $BUILD_ERROR -ne 0 ]; then + exit -1 +fi diff --git a/fw/.gitignore b/fw/.gitignore deleted file mode 100644 index e8bfb66..0000000 --- a/fw/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -/db -/greybox_tmp -/incremental_db -/output_files -**/.qsys_edit -**/*.bin -**/*.dat -**/*.elf -*.qws -*.rpt -*.sopcinfo -*.srf -*.txt diff --git a/fw/SummerCart64.cof b/fw/SummerCart64.cof deleted file mode 100644 index ebd1b9d..0000000 --- a/fw/SummerCart64.cof +++ /dev/null @@ -1,42 +0,0 @@ - - - output_files/SC64_firmware.pof - 1 - 1 - 14 - - Page_0 - 1 - - output_files/SummerCart64.sof1 - - - 10 - 0 - 0 - 1 - 0 - - 1 - - - 0 - 1 - 0 - 0 - 0 - 0 - 2 - ../sw/n64/build/n64boot.hex - ../sw/riscv/build/governor.hex - 305152 - - - 1 - 2 - 0 - -1 - -1 - 1 - - \ No newline at end of file diff --git a/fw/SummerCart64.qpf b/fw/SummerCart64.qpf deleted file mode 100644 index b58ed21..0000000 --- a/fw/SummerCart64.qpf +++ /dev/null @@ -1,31 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# Copyright (C) 2020 Intel Corporation. All rights reserved. -# Your use of Intel Corporation's design tools, logic functions -# and other software and tools, and any partner logic -# functions, and any output files from any of the foregoing -# (including device programming or simulation files), and any -# associated documentation or information are expressly subject -# to the terms and conditions of the Intel Program License -# Subscription Agreement, the Intel Quartus Prime License Agreement, -# the Intel FPGA IP License Agreement, or other applicable license -# agreement, including, without limitation, that your use is for -# the sole purpose of programming logic devices manufactured by -# Intel and sold by Intel or its authorized distributors. Please -# refer to the applicable agreement for further details, at -# https://fpgasoftware.intel.com/eula. -# -# -------------------------------------------------------------------------- # -# -# Quartus Prime -# Version 20.1.1 Build 720 11/11/2020 SJ Lite Edition -# Date created = 10:53:32 August 01, 2021 -# -# -------------------------------------------------------------------------- # - -QUARTUS_VERSION = "20.1" -DATE = "10:53:32 August 01, 2021" - -# Revisions - -PROJECT_REVISION = "SummerCart64" diff --git a/fw/SummerCart64.qsf b/fw/SummerCart64.qsf deleted file mode 100644 index d24b06c..0000000 --- a/fw/SummerCart64.qsf +++ /dev/null @@ -1,292 +0,0 @@ -# -------------------------------------------------------------------------- # -# -# Copyright (C) 2021 Intel Corporation. All rights reserved. -# Your use of Intel Corporation's design tools, logic functions -# and other software and tools, and any partner logic -# functions, and any output files from any of the foregoing -# (including device programming or simulation files), and any -# associated documentation or information are expressly subject -# to the terms and conditions of the Intel Program License -# Subscription Agreement, the Intel Quartus Prime License Agreement, -# the Intel FPGA IP License Agreement, or other applicable license -# agreement, including, without limitation, that your use is for -# the sole purpose of programming logic devices manufactured by -# Intel and sold by Intel or its authorized distributors. Please -# refer to the applicable agreement for further details, at -# https://fpgasoftware.intel.com/eula. -# -# -------------------------------------------------------------------------- # -# -# Quartus Prime -# Version 21.1.0 Build 842 10/21/2021 SJ Lite Edition -# Date created = 13:29:40 November 11, 2021 -# -# -------------------------------------------------------------------------- # -# -# Notes: -# -# 1) The default values for assignments are stored in the file: -# SummerCart64_assignment_defaults.qdf -# If this file doesn't exist, see file: -# assignment_defaults.qdf -# -# 2) Intel recommends that you do not modify this file. This -# file is updated automatically by the Quartus Prime software -# and any changes you make may be lost or overwritten. -# -# -------------------------------------------------------------------------- # - - - -# Project-Wide Assignments -# ======================== -set_global_assignment -name ORIGINAL_QUARTUS_VERSION 20.1.1 -set_global_assignment -name PROJECT_CREATION_TIME_DATE "10:53:32 AUGUST 01, 2021" -set_global_assignment -name LAST_QUARTUS_VERSION "21.1.0 Lite Edition" -set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files -set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL -set_global_assignment -name FLOW_ENABLE_POWER_ANALYZER ON -set_global_assignment -name QSYS_FILE rtl/intel/flash/intel_flash.qsys -set_global_assignment -name QIP_FILE rtl/intel/fifo/intel_fifo_8.qip -set_global_assignment -name QIP_FILE rtl/intel/gpio/intel_gpio_ddro.qip -set_global_assignment -name QIP_FILE rtl/intel/pll/intel_pll.qip -set_global_assignment -name SDC_FILE SummerCart64.sdc -set_global_assignment -name SYSTEMVERILOG_FILE picorv32/picorv32.v -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_bus.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_cfg.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_dd.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_dma.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_flash.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_flashram.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_gpio.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_i2c.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_ram.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_sdram.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_si.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_soc.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_uart.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_usb.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/cpu/cpu_wrapper.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/memory/memory_sdram.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/n64/n64_bootloader.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/n64/n64_bus.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/n64/n64_cfg.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/n64/n64_dd.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/n64/n64_flashram.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/n64/n64_pi.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/n64/n64_pi_fifo.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/n64/n64_sdram.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/n64/n64_si.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/n64/n64_soc.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/SummerCart64.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/system/config.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/system/sc64.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/system/system.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/usb/usb_ft1248.sv -set_global_assignment -name POST_MODULE_SCRIPT_FILE "quartus_sh:scripts/post_module.tcl" - -# Pin & Location Assignments -# ========================== -set_location_assignment PIN_6 -to o_usb_clk -set_location_assignment PIN_7 -to io_usb_miosi[2] -set_location_assignment PIN_8 -to io_usb_miosi[3] -set_location_assignment PIN_10 -to io_usb_miosi[0] -set_location_assignment PIN_11 -to io_usb_miosi[1] -set_location_assignment PIN_12 -to i_uart_rxd -set_location_assignment PIN_13 -to o_uart_txd -set_location_assignment PIN_17 -to o_led -set_location_assignment PIN_21 -to o_rtc_scl -set_location_assignment PIN_22 -to io_rtc_sda -set_location_assignment PIN_24 -to io_n64_si_dq -set_location_assignment PIN_25 -to i_n64_nmi -set_location_assignment PIN_26 -to i_clk -set_location_assignment PIN_27 -to i_n64_reset -set_location_assignment PIN_28 -to i_n64_si_clk -set_location_assignment PIN_32 -to io_n64_pi_ad[7] -set_location_assignment PIN_33 -to io_n64_pi_ad[8] -set_location_assignment PIN_38 -to io_n64_pi_ad[6] -set_location_assignment PIN_39 -to io_n64_pi_ad[9] -set_location_assignment PIN_41 -to io_n64_pi_ad[5] -set_location_assignment PIN_43 -to io_n64_pi_ad[10] -set_location_assignment PIN_44 -to io_n64_pi_ad[4] -set_location_assignment PIN_45 -to io_n64_pi_ad[11] -set_location_assignment PIN_46 -to i_n64_pi_aleh -set_location_assignment PIN_47 -to i_n64_pi_read -set_location_assignment PIN_48 -to i_n64_pi_write -set_location_assignment PIN_50 -to i_n64_pi_alel -set_location_assignment PIN_52 -to io_n64_pi_ad[12] -set_location_assignment PIN_54 -to io_n64_pi_ad[3] -set_location_assignment PIN_55 -to io_n64_pi_ad[13] -set_location_assignment PIN_56 -to io_n64_pi_ad[2] -set_location_assignment PIN_57 -to io_n64_pi_ad[14] -set_location_assignment PIN_58 -to io_n64_pi_ad[1] -set_location_assignment PIN_59 -to io_n64_pi_ad[15] -set_location_assignment PIN_60 -to io_n64_pi_ad[0] -set_location_assignment PIN_61 -to o_sdram_a[4] -set_location_assignment PIN_62 -to o_sdram_a[5] -set_location_assignment PIN_64 -to o_sdram_a[6] -set_location_assignment PIN_65 -to o_sdram_a[7] -set_location_assignment PIN_66 -to o_sdram_a[8] -set_location_assignment PIN_69 -to o_sdram_a[9] -set_location_assignment PIN_70 -to o_sdram_a[11] -set_location_assignment PIN_74 -to o_sdram_a[12] -set_location_assignment PIN_75 -to o_sdram_clk -set_location_assignment PIN_76 -to o_sdram_a[3] -set_location_assignment PIN_77 -to o_sdram_a[2] -set_location_assignment PIN_78 -to o_sdram_a[1] -set_location_assignment PIN_79 -to o_sdram_a[0] -set_location_assignment PIN_80 -to o_sdram_a[10] -set_location_assignment PIN_81 -to o_sdram_ba[1] -set_location_assignment PIN_84 -to o_sdram_ba[0] -set_location_assignment PIN_85 -to o_sdram_cs -set_location_assignment PIN_86 -to o_sdram_ras -set_location_assignment PIN_87 -to o_sdram_cas -set_location_assignment PIN_88 -to o_sdram_we -set_location_assignment PIN_89 -to io_sdram_dq[7] -set_location_assignment PIN_90 -to io_sdram_dq[6] -set_location_assignment PIN_91 -to io_sdram_dq[5] -set_location_assignment PIN_92 -to io_sdram_dq[4] -set_location_assignment PIN_93 -to io_sdram_dq[3] -set_location_assignment PIN_96 -to io_sdram_dq[2] -set_location_assignment PIN_97 -to io_sdram_dq[1] -set_location_assignment PIN_98 -to io_sdram_dq[0] -set_location_assignment PIN_99 -to io_sdram_dq[8] -set_location_assignment PIN_100 -to io_sdram_dq[9] -set_location_assignment PIN_101 -to io_sdram_dq[10] -set_location_assignment PIN_102 -to io_sdram_dq[11] -set_location_assignment PIN_105 -to io_sdram_dq[12] -set_location_assignment PIN_106 -to io_sdram_dq[13] -set_location_assignment PIN_110 -to io_sdram_dq[14] -set_location_assignment PIN_111 -to io_sdram_dq[15] -set_location_assignment PIN_112 -to io_sd_dat[1] -set_location_assignment PIN_113 -to io_sd_dat[0] -set_location_assignment PIN_114 -to o_sd_clk -set_location_assignment PIN_118 -to io_sd_cmd -set_location_assignment PIN_119 -to io_sd_dat[3] -set_location_assignment PIN_120 -to io_sd_dat[2] -set_location_assignment PIN_123 -to o_n64_irq -set_location_assignment PIN_138 -to i_usb_pwren -set_location_assignment PIN_140 -to o_usb_cs -set_location_assignment PIN_141 -to i_usb_miso - -# Classic Timing Assignments -# ========================== -set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 -set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 -set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS ON - -# Compiler Assignments -# ==================== -set_global_assignment -name OPTIMIZATION_MODE "HIGH PERFORMANCE EFFORT" - -# Analysis & Synthesis Assignments -# ================================ -set_global_assignment -name FAMILY "MAX 10" -set_global_assignment -name DEVICE_FILTER_PACKAGE EQFP -set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144 -set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8 -set_global_assignment -name PROJECT_IP_REGENERATION_POLICY ALWAYS_REGENERATE_IP -set_global_assignment -name VHDL_INPUT_VERSION VHDL_2008 -set_global_assignment -name VHDL_SHOW_LMF_MAPPING_MESSAGES OFF -set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2005 -set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF -set_global_assignment -name TOP_LEVEL_ENTITY SummerCart64 - -# Fitter Assignments -# ================== -set_global_assignment -name DEVICE 10M08SCE144C8G -set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256 -set_global_assignment -name ENABLE_CONFIGURATION_PINS OFF -set_global_assignment -name ENABLE_BOOT_SEL_PIN OFF -set_global_assignment -name INTERNAL_FLASH_UPDATE_MODE "SINGLE COMP IMAGE" -set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF -set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" - -# Assembler Assignments -# ===================== -set_global_assignment -name ENABLE_OCT_DONE OFF -set_global_assignment -name EXTERNAL_FLASH_FALLBACK_ADDRESS 00000000 -set_global_assignment -name USE_CONFIGURATION_DEVICE OFF - -# Power Estimation Assignments -# ============================ -set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "NO HEAT SINK WITH STILL AIR" -set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" -set_global_assignment -name POWER_DEFAULT_INPUT_IO_TOGGLE_RATE "12.5 %" - -# Advanced I/O Timing Assignments -# =============================== -set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise -set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall -set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise -set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall - -# -------------------------- -# start ENTITY(SummerCart64) - - # Pin & Location Assignments - # ========================== - set_instance_assignment -name FAST_INPUT_REGISTER ON -to io_usb_miosi[*] - set_instance_assignment -name FAST_INPUT_REGISTER ON -to i_uart_rxd - set_instance_assignment -name FAST_INPUT_REGISTER ON -to io_rtc_sda - set_instance_assignment -name FAST_INPUT_REGISTER ON -to io_n64_si_dq - set_instance_assignment -name FAST_INPUT_REGISTER ON -to i_n64_nmi - set_instance_assignment -name FAST_INPUT_REGISTER ON -to i_n64_reset - set_instance_assignment -name FAST_INPUT_REGISTER ON -to i_n64_si_clk - set_instance_assignment -name FAST_INPUT_REGISTER ON -to io_n64_pi_ad[*] - set_instance_assignment -name FAST_INPUT_REGISTER ON -to i_n64_pi_aleh - set_instance_assignment -name FAST_INPUT_REGISTER ON -to i_n64_pi_read - set_instance_assignment -name FAST_INPUT_REGISTER ON -to i_n64_pi_write - set_instance_assignment -name FAST_INPUT_REGISTER ON -to i_n64_pi_alel - set_instance_assignment -name FAST_INPUT_REGISTER ON -to io_sdram_dq[*] - set_instance_assignment -name FAST_INPUT_REGISTER ON -to io_sd_* - set_instance_assignment -name FAST_INPUT_REGISTER ON -to i_usb_pwren - set_instance_assignment -name FAST_INPUT_REGISTER ON -to i_usb_miso - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to o_usb_clk - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to io_usb_miosi[*] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to o_uart_txd - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to o_rtc_scl - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to io_rtc_sda - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to io_n64_pi_ad[*] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to o_sdram_* - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to io_sdram_dq[*] - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to o_sd_clk - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to io_sd_* - set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to o_usb_cs - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to io_usb_miosi[*] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to io_n64_pi_ad[*] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to io_sdram_dq[*] - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to io_sd_* - set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to io_rtc_sda - - # Fitter Assignments - # ================== - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_usb_miosi[*] - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n64_nmi - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_uart_rxd - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to io_n64_si_dq - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n64_reset - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n64_si_clk - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n64_pi_aleh - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n64_pi_read - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n64_pi_write - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_n64_pi_alel - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to o_n64_irq - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_usb_pwren - set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to i_usb_miso - - # start DESIGN_PARTITION(Top) - # --------------------------- - - # Incremental Compilation Assignments - # =================================== - set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top - set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top - set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top - set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top - - # end DESIGN_PARTITION(Top) - # ------------------------- - -# end ENTITY(SummerCart64) -# ------------------------ \ No newline at end of file diff --git a/fw/SummerCart64.sdc b/fw/SummerCart64.sdc deleted file mode 100644 index 530e475..0000000 --- a/fw/SummerCart64.sdc +++ /dev/null @@ -1,81 +0,0 @@ -# Clocks - -derive_pll_clocks -create_base_clocks - -set sys_clk {system_inst|intel_pll_inst|altpll_component|auto_generated|pll1|clk[0]} -set sdram_pll_clk {system_inst|intel_pll_inst|altpll_component|auto_generated|pll1|clk[1]} -# set sd_reg_clk {sd_interface_inst|sd_clk_inst|o_sd_clk|q} - -create_generated_clock -name sdram_clk -source [get_pins $sdram_pll_clk] [get_ports {o_sdram_clk}] -# create_generated_clock -name sd_reg_clk -source [get_pins {sd_interface_inst|sd_clk_inst|o_sd_clk|clk}] -divide_by 2 [get_pins $sd_reg_clk] -# create_generated_clock -name sd_clk -source [get_pins $sd_reg_clk] [get_ports {o_sd_clk}] - -create_generated_clock -name flash_se_neg_reg \ - -source [get_pins -compatibility_mode {*altera_onchip_flash:*onchip_flash_0|altera_onchip_flash_avmm_data_controller:avmm_data_controller|flash_se_neg_reg|clk}] \ - -divide_by 2 \ - [get_pins -compatibility_mode {*altera_onchip_flash:*onchip_flash_0|altera_onchip_flash_avmm_data_controller:avmm_data_controller|flash_se_neg_reg|q}] - -derive_clock_uncertainty - - -# SDRAM timings - -set sdram_outputs {o_sdram_cs o_sdram_ras o_sdram_cas o_sdram_we o_sdram_a[*] o_sdram_ba[*] io_sdram_dq[*]} -set sdram_inputs {io_sdram_dq[*]} - -set_output_delay -clock [get_clocks {sdram_clk}] -max 1.5 [get_ports $sdram_outputs] -set_output_delay -clock [get_clocks {sdram_clk}] -min -0.8 [get_ports $sdram_outputs] - -set_input_delay -clock [get_clocks {sdram_clk}] -max 5.4 [get_ports $sdram_inputs] -set_input_delay -clock [get_clocks {sdram_clk}] -min 2.5 [get_ports $sdram_inputs] - -set_multicycle_path -setup -end 2 -from [get_clocks {sdram_clk}] -to [get_clocks $sys_clk] - - -# SD card timings - -# set_output_delay -clock [get_clocks {sd_clk}] -max 6.0 [get_ports {io_sd_cmd io_sd_dat[*]}] -# set_output_delay -clock [get_clocks {sd_clk}] -min -2.0 [get_ports {io_sd_cmd io_sd_dat[*]}] - -# set_input_delay -clock [get_clocks {sd_clk}] -max 15.0 [get_ports {io_sd_cmd io_sd_dat[*]}] -# set_input_delay -clock [get_clocks {sd_clk}] -min 6.5 [get_ports {io_sd_cmd io_sd_dat[*]}] - -# set_multicycle_path -hold -start 1 -from [get_clocks $sys_clk] -to [get_clocks {sd_clk}] - -# set_multicycle_path -setup -end 3 -from [get_clocks {sd_clk}] -to [get_clocks $sys_clk] -# set_multicycle_path -hold -end 1 -from [get_clocks {sd_clk}] -to [get_clocks $sys_clk] - - -# FT1248 timings - -set_false_path -to [get_ports {o_usb_clk io_usb_miosi[*] o_usb_cs}] -set_false_path -from [get_ports {io_usb_miosi[*] i_usb_miso i_usb_pwren}] - - -# N64, PI and SI timings - -set_false_path -to [get_ports {o_n64_irq}] -set_false_path -from [get_ports {i_n64_reset i_n64_nmi}] - -set_false_path -to [get_ports {io_n64_pi_ad[*]}] -set_false_path -from [get_ports {i_n64_pi_* io_n64_pi_ad[*]}] - -set_false_path -to [get_ports {io_n64_si_dq}] -set_false_path -from [get_ports {i_n64_si_clk io_n64_si_dq}] - - -# LED timings - -set_false_path -to [get_ports {o_led}] - - -# UART timings - -set_false_path -to [get_ports {o_uart_txd}] -set_false_path -from [get_ports {i_uart_rxd}] - - -# I2C timings - -set_false_path -to [get_ports {o_rtc_scl io_rtc_sda}] -set_false_path -from [get_ports {io_rtc_sda}] diff --git a/hw/ftdi-template.xml b/fw/ftdi/ft232h_config.xml similarity index 55% rename from hw/ftdi-template.xml rename to fw/ftdi/ft232h_config.xml index 50922cc..30ed587 100644 Binary files a/hw/ftdi-template.xml and b/fw/ftdi/ft232h_config.xml differ diff --git a/fw/picorv32 b/fw/picorv32 deleted file mode 160000 index f9b1beb..0000000 --- a/fw/picorv32 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f9b1beb4cfd6b382157b54bc8f38c61d5ae7d785 diff --git a/fw/project/lcmxo2/.gitignore b/fw/project/lcmxo2/.gitignore new file mode 100644 index 0000000..aa4d819 --- /dev/null +++ b/fw/project/lcmxo2/.gitignore @@ -0,0 +1,17 @@ +.recovery +*.dir/ +*.ccl +*.dmp +*.html +*.ini +*.rva +*.rvl +*.rvs +*.svf +*.tcl +*.tpf +*.trc +*.xml +impl*/ + +!build.tcl diff --git a/fw/project/lcmxo2/build.sh b/fw/project/lcmxo2/build.sh new file mode 100755 index 0000000..35a8b44 --- /dev/null +++ b/fw/project/lcmxo2/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +source $bindir/diamond_env + +diamondc build.tcl diff --git a/fw/project/lcmxo2/build.tcl b/fw/project/lcmxo2/build.tcl new file mode 100644 index 0000000..3dba79f --- /dev/null +++ b/fw/project/lcmxo2/build.tcl @@ -0,0 +1,2 @@ +prj_project open sc64.ldf +prj_run Export -impl impl1 -task Jedecgen diff --git a/fw/project/lcmxo2/debug.sty b/fw/project/lcmxo2/debug.sty new file mode 100644 index 0000000..e2e20d6 --- /dev/null +++ b/fw/project/lcmxo2/debug.sty @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fw/project/lcmxo2/release.sty b/fw/project/lcmxo2/release.sty new file mode 100644 index 0000000..3408612 --- /dev/null +++ b/fw/project/lcmxo2/release.sty @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fw/project/lcmxo2/sc64.ldf b/fw/project/lcmxo2/sc64.ldf new file mode 100644 index 0000000..d9473c2 --- /dev/null +++ b/fw/project/lcmxo2/sc64.ldf @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fw/project/lcmxo2/sc64.lpf b/fw/project/lcmxo2/sc64.lpf new file mode 100644 index 0000000..dfc6bdd --- /dev/null +++ b/fw/project/lcmxo2/sc64.lpf @@ -0,0 +1,209 @@ +RVL_ALIAS "clk" "clk"; +BANK 0 VCCIO 3.3 V; +BANK 1 VCCIO 3.3 V; +BANK 2 VCCIO 3.3 V; +BANK 3 VCCIO 3.3 V; +BANK 4 VCCIO 3.3 V; +BANK 5 VCCIO 3.3 V; +BLOCK ASYNCPATHS ; +BLOCK JTAGPATHS ; +BLOCK PATH FROM PORT "button" ; +BLOCK RESETPATHS ; +IOBUF ALLPORTS IO_TYPE=LVCMOS33 ; +IOBUF PORT "button" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "flash_clk" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "flash_cs" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "flash_dq[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "flash_dq[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "flash_dq[2]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "flash_dq[3]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "inclk" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "mcu_clk" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "mcu_cs" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "mcu_int" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "mcu_miso" IO_TYPE=LVCMOS33 PULLMODE=NONE ; +IOBUF PORT "mcu_mosi" IO_TYPE=LVCMOS33 PULLMODE=NONE ; +IOBUF PORT "n64_irq" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_nmi" PULLMODE=DOWN IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[10]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[11]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[12]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[13]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[14]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[15]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[2]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[3]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[4]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[5]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[6]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[7]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[8]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_ad[9]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_aleh" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_alel" PULLMODE=DOWN IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_read" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_pi_write" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_reset" PULLMODE=DOWN IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_si_clk" PULLMODE=DOWN IO_TYPE=LVCMOS33 ; +IOBUF PORT "n64_si_dq" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "sd_clk" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "sd_cmd" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "sd_dat[0]" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "sd_dat[1]" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "sd_dat[2]" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "sd_dat[3]" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "sd_det" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[10]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[11]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[12]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[2]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[3]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[4]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[5]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[6]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[7]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[8]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_a[9]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_ba[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_ba[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_cas" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_clk" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_cs" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[10]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[11]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[12]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[13]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[14]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[15]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[2]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[3]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[4]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[5]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[6]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[7]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[8]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dq[9]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dqm[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_dqm[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_ras" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "sdram_we" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "usb_clk" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "usb_cs" PULLMODE=UP IO_TYPE=LVCMOS33 ; +IOBUF PORT "usb_miosi[0]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "usb_miosi[1]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "usb_miosi[2]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "usb_miosi[3]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "usb_miosi[4]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "usb_miosi[5]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "usb_miosi[6]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "usb_miosi[7]" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "usb_miso" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +IOBUF PORT "usb_pwrsav" PULLMODE=NONE IO_TYPE=LVCMOS33 ; +LOCATE COMP "button" SITE "1" ; +LOCATE COMP "flash_clk" SITE "142" ; +LOCATE COMP "flash_cs" SITE "138" ; +LOCATE COMP "flash_dq[0]" SITE "141" ; +LOCATE COMP "flash_dq[1]" SITE "139" ; +LOCATE COMP "flash_dq[2]" SITE "140" ; +LOCATE COMP "flash_dq[3]" SITE "143" ; +LOCATE COMP "inclk" SITE "3" ; +LOCATE COMP "mcu_clk" SITE "121" ; +LOCATE COMP "mcu_cs" SITE "122" ; +LOCATE COMP "mcu_int" SITE "117" ; +LOCATE COMP "mcu_miso" SITE "119" ; +LOCATE COMP "mcu_mosi" SITE "120" ; +LOCATE COMP "n64_irq" SITE "32" ; +LOCATE COMP "n64_nmi" SITE "28" ; +LOCATE COMP "n64_pi_ad[0]" SITE "60" ; +LOCATE COMP "n64_pi_ad[1]" SITE "58" ; +LOCATE COMP "n64_pi_ad[10]" SITE "42" ; +LOCATE COMP "n64_pi_ad[11]" SITE "44" ; +LOCATE COMP "n64_pi_ad[12]" SITE "52" ; +LOCATE COMP "n64_pi_ad[13]" SITE "55" ; +LOCATE COMP "n64_pi_ad[14]" SITE "57" ; +LOCATE COMP "n64_pi_ad[15]" SITE "59" ; +LOCATE COMP "n64_pi_ad[2]" SITE "56" ; +LOCATE COMP "n64_pi_ad[3]" SITE "54" ; +LOCATE COMP "n64_pi_ad[4]" SITE "45" ; +LOCATE COMP "n64_pi_ad[5]" SITE "43" ; +LOCATE COMP "n64_pi_ad[6]" SITE "40" ; +LOCATE COMP "n64_pi_ad[7]" SITE "38" ; +LOCATE COMP "n64_pi_ad[8]" SITE "39" ; +LOCATE COMP "n64_pi_ad[9]" SITE "41" ; +LOCATE COMP "n64_pi_aleh" SITE "48" ; +LOCATE COMP "n64_pi_alel" SITE "50" ; +LOCATE COMP "n64_pi_read" SITE "47" ; +LOCATE COMP "n64_pi_write" SITE "49" ; +LOCATE COMP "n64_reset" SITE "31" ; +LOCATE COMP "n64_si_clk" SITE "33" ; +LOCATE COMP "n64_si_dq" SITE "27" ; +LOCATE COMP "sd_clk" SITE "111" ; +LOCATE COMP "sd_cmd" SITE "112" ; +LOCATE COMP "sd_dat[0]" SITE "110" ; +LOCATE COMP "sd_dat[1]" SITE "109" ; +LOCATE COMP "sd_dat[2]" SITE "114" ; +LOCATE COMP "sd_dat[3]" SITE "113" ; +LOCATE COMP "sd_det" SITE "115" ; +LOCATE COMP "sdram_a[0]" SITE "85" ; +LOCATE COMP "sdram_a[1]" SITE "86" ; +LOCATE COMP "sdram_a[10]" SITE "84" ; +LOCATE COMP "sdram_a[11]" SITE "63" ; +LOCATE COMP "sdram_a[12]" SITE "62" ; +LOCATE COMP "sdram_a[2]" SITE "87" ; +LOCATE COMP "sdram_a[3]" SITE "89" ; +LOCATE COMP "sdram_a[4]" SITE "71" ; +LOCATE COMP "sdram_a[5]" SITE "70" ; +LOCATE COMP "sdram_a[6]" SITE "69" ; +LOCATE COMP "sdram_a[7]" SITE "68" ; +LOCATE COMP "sdram_a[8]" SITE "67" ; +LOCATE COMP "sdram_a[9]" SITE "65" ; +LOCATE COMP "sdram_ba[0]" SITE "92" ; +LOCATE COMP "sdram_ba[1]" SITE "91" ; +LOCATE COMP "sdram_cas" SITE "95" ; +LOCATE COMP "sdram_clk" SITE "61" ; +LOCATE COMP "sdram_cs" SITE "93" ; +LOCATE COMP "sdram_dq[0]" SITE "107" ; +LOCATE COMP "sdram_dq[1]" SITE "106" ; +LOCATE COMP "sdram_dq[10]" SITE "76" ; +LOCATE COMP "sdram_dq[11]" SITE "77" ; +LOCATE COMP "sdram_dq[12]" SITE "78" ; +LOCATE COMP "sdram_dq[13]" SITE "81" ; +LOCATE COMP "sdram_dq[14]" SITE "82" ; +LOCATE COMP "sdram_dq[15]" SITE "83" ; +LOCATE COMP "sdram_dq[2]" SITE "105" ; +LOCATE COMP "sdram_dq[3]" SITE "104" ; +LOCATE COMP "sdram_dq[4]" SITE "103" ; +LOCATE COMP "sdram_dq[5]" SITE "100" ; +LOCATE COMP "sdram_dq[6]" SITE "99" ; +LOCATE COMP "sdram_dq[7]" SITE "98" ; +LOCATE COMP "sdram_dq[8]" SITE "74" ; +LOCATE COMP "sdram_dq[9]" SITE "75" ; +LOCATE COMP "sdram_dqm[0]" SITE "97" ; +LOCATE COMP "sdram_dqm[1]" SITE "73" ; +LOCATE COMP "sdram_ras" SITE "94" ; +LOCATE COMP "sdram_we" SITE "96" ; +LOCATE COMP "usb_clk" SITE "12" ; +LOCATE COMP "usb_cs" SITE "11" ; +LOCATE COMP "usb_miosi[0]" SITE "22" ; +LOCATE COMP "usb_miosi[1]" SITE "21" ; +LOCATE COMP "usb_miosi[2]" SITE "20" ; +LOCATE COMP "usb_miosi[3]" SITE "19" ; +LOCATE COMP "usb_miosi[4]" SITE "17" ; +LOCATE COMP "usb_miosi[5]" SITE "15" ; +LOCATE COMP "usb_miosi[6]" SITE "14" ; +LOCATE COMP "usb_miosi[7]" SITE "13" ; +LOCATE COMP "usb_miso" SITE "10" ; +LOCATE COMP "usb_pwrsav" SITE "2" ; +SYSCONFIG SDM_PORT=DISABLE ; +VOLTAGE 3.300 V; +FREQUENCY NET "clk" 100.000000 MHz PAR_ADJ 10.000000 ; +BLOCK PATH TO PORT "mcu_int" ; +BLOCK PATH TO PORT "n64_irq" ; +BLOCK PATH FROM PORT "usb_pwrsav" ; +BLOCK PATH FROM PORT "sd_det" ; diff --git a/fw/rtl/SummerCart64.sv b/fw/rtl/SummerCart64.sv deleted file mode 100644 index cb164c7..0000000 --- a/fw/rtl/SummerCart64.sv +++ /dev/null @@ -1,154 +0,0 @@ -module SummerCart64 ( - input i_clk, - - input i_n64_reset, - input i_n64_nmi, - output o_n64_irq, - - input i_n64_pi_alel, - input i_n64_pi_aleh, - input i_n64_pi_read, - input i_n64_pi_write, - inout [15:0] io_n64_pi_ad, - - input i_n64_si_clk, - inout io_n64_si_dq, - - output o_sdram_clk, - output o_sdram_cs, - output o_sdram_ras, - output o_sdram_cas, - output o_sdram_we, - output [1:0] o_sdram_ba, - output [12:0] o_sdram_a, - inout [15:0] io_sdram_dq, - - output o_rtc_scl, - inout io_rtc_sda, - - output o_usb_clk, - output o_usb_cs, - input i_usb_miso, - inout [3:0] io_usb_miosi, - input i_usb_pwren, - - input i_uart_rxd, - output o_uart_txd, - - output o_sd_clk, - inout io_sd_cmd, - inout [3:0] io_sd_dat, - - output o_led -); - - logic [7:0] gpio_o; - logic [7:0] gpio_i; - logic [7:0] gpio_oe; - - logic dd_interrupt; - - if_system sys ( - .in_clk(i_clk), - .n64_reset(i_n64_reset), - .n64_nmi(i_n64_nmi) - ); - - if_config cfg (); - - if_dma dma (); - - if_sdram sdram (); - - if_flashram flashram (); - - if_si si (); - - if_flash flash (); - - if_dd dd ( - .dd_interrupt(dd_interrupt) - ); - - system system_inst ( - .sys(sys) - ); - - intel_gpio_ddro sdram_clk_ddro ( - .outclock(sys.sdram.sdram_clk), - .din({1'b0, 1'b1}), - .pad_out(o_sdram_clk) - ); - - n64_soc n64_soc_inst ( - .sys(sys), - .cfg(cfg), - .dma(dma), - .sdram(sdram), - .flashram(flashram), - .si(si), - .flash(flash), - .dd(dd), - - .n64_pi_alel(i_n64_pi_alel), - .n64_pi_aleh(i_n64_pi_aleh), - .n64_pi_read(i_n64_pi_read), - .n64_pi_write(i_n64_pi_write), - .n64_pi_ad(io_n64_pi_ad), - - .n64_si_clk(i_n64_si_clk), - .n64_si_dq(io_n64_si_dq), - - .sdram_cs(o_sdram_cs), - .sdram_ras(o_sdram_ras), - .sdram_cas(o_sdram_cas), - .sdram_we(o_sdram_we), - .sdram_ba(o_sdram_ba), - .sdram_a(o_sdram_a), - .sdram_dq(io_sdram_dq) - ); - - cpu_soc cpu_soc_inst ( - .sys(sys), - .cfg(cfg), - .dma(dma), - .sdram(sdram), - .flashram(flashram), - .si(si), - .flash(flash), - .dd(dd), - - .gpio_o(gpio_o), - .gpio_i(gpio_i), - .gpio_oe(gpio_oe), - - .i2c_scl(o_rtc_scl), - .i2c_sda(io_rtc_sda), - - .usb_clk(o_usb_clk), - .usb_cs(o_usb_cs), - .usb_miso(i_usb_miso), - .usb_miosi(io_usb_miosi), - .usb_pwren(i_usb_pwren), - - .uart_rxd(i_uart_rxd), - .uart_txd(o_uart_txd), - - .sd_clk(o_sd_clk), - .sd_cmd(io_sd_cmd), - .sd_dat(io_sd_dat) - ); - - always_comb begin - o_n64_irq = dd_interrupt ? 1'b0 : 1'bZ; - end - - always_comb begin - o_led = gpio_oe[0] ? gpio_o[0] : 1'bZ; - end - - always_ff @(posedge sys.clk) begin - gpio_i <= {4'b0000, i_n64_nmi, i_n64_reset, gpio_o[1:0]}; - end - -endmodule diff --git a/fw/rtl/cpu/cpu_bus.sv b/fw/rtl/cpu/cpu_bus.sv deleted file mode 100644 index 13579af..0000000 --- a/fw/rtl/cpu/cpu_bus.sv +++ /dev/null @@ -1,54 +0,0 @@ -interface if_cpu_bus (); - - localparam [3:0] NUM_DEVICES = sc64::__ID_CPU_END; - - logic request; - logic ack; - logic [3:0] wmask; - logic [31:0] address; - logic [31:0] wdata; - logic [31:0] rdata; - - logic device_ack [(NUM_DEVICES - 1):0]; - logic [31:0] device_rdata [(NUM_DEVICES - 1):0]; - - always_comb begin - ack = 1'b0; - rdata = 32'd0; - - for (integer i = 0; i < NUM_DEVICES; i++) begin - ack = ack | device_ack[i]; - rdata = rdata | device_rdata[i]; - end - end - - modport cpu ( - output request, - input ack, - output wmask, - output address, - output wdata, - input rdata - ); - - genvar n; - generate - for (n = 0; n < NUM_DEVICES; n++) begin : at - logic device_request; - - always_comb begin - device_request = request && address[31:28] == n[3:0]; - end - - modport device ( - input .request(device_request), - output .ack(device_ack[n]), - input .wmask(wmask), - input .address(address), - input .wdata(wdata), - output .rdata(device_rdata[n]) - ); - end - endgenerate - -endinterface diff --git a/fw/rtl/cpu/cpu_cfg.sv b/fw/rtl/cpu/cpu_cfg.sv deleted file mode 100644 index cf45e77..0000000 --- a/fw/rtl/cpu/cpu_cfg.sv +++ /dev/null @@ -1,164 +0,0 @@ -module cpu_cfg ( - if_system.sys sys, - if_cpu_bus bus, - if_config.cpu cfg -); - - logic skip_bootloader; - logic trigger_reconfiguration; - - typedef enum bit [2:0] { - R_SCR, - R_DDIPL_OFFSET, - R_SAVE_OFFSET, - R_COMMAND, - R_DATA_0, - R_DATA_1, - R_VERSION, - R_RECONFIGURE - } e_reg_id; - - const logic [31:0] RECONFIGURE_MAGIC = 32'h52535446; - - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - if (bus.request) begin - bus.ack <= 1'b1; - end - end - - always_comb begin - bus.rdata = 32'd0; - if (bus.ack) begin - case (bus.address[4:2]) - R_SCR: bus.rdata = { - cfg.cpu_ready, - cfg.cpu_busy, - 1'b0, - cfg.cmd_error, - 21'd0, - skip_bootloader, - cfg.flashram_enabled, - cfg.sram_banked, - cfg.sram_enabled, - cfg.dd_enabled, - cfg.sdram_writable, - cfg.sdram_switch - }; - R_DDIPL_OFFSET: bus.rdata = {6'd0, cfg.ddipl_offset}; - R_SAVE_OFFSET: bus.rdata = {6'd0, cfg.save_offset}; - R_COMMAND: bus.rdata = {24'd0, cfg.cmd}; - R_DATA_0: bus.rdata = cfg.data[0]; - R_DATA_1: bus.rdata = cfg.data[1]; - R_VERSION: bus.rdata = sc64::SC64_VER; - R_RECONFIGURE: bus.rdata = RECONFIGURE_MAGIC; - default: bus.rdata = 32'd0; - endcase - end - end - - always_comb begin - cfg.wdata = bus.wdata; - cfg.data_write = 2'b00; - if (bus.request && (&bus.wmask)) begin - cfg.data_write[0] = bus.address[4:2] == R_DATA_0; - cfg.data_write[1] = bus.address[4:2] == R_DATA_1; - end - end - - always_ff @(posedge sys.clk) begin - if (sys.reset) begin - cfg.cpu_ready <= 1'b0; - cfg.cpu_busy <= 1'b0; - cfg.cmd_error <= 1'b0; - cfg.sdram_switch <= 1'b0; - cfg.sdram_writable <= 1'b0; - cfg.dd_enabled <= 1'b0; - cfg.sram_enabled <= 1'b0; - cfg.sram_banked <= 1'b0; - cfg.flashram_enabled <= 1'b0; - cfg.ddipl_offset <= 26'h3BE_0000; - cfg.save_offset <= 26'h3FE_0000; - skip_bootloader <= 1'b0; - trigger_reconfiguration <= 1'b0; - end else begin - if (sys.n64_soft_reset) begin - cfg.sdram_switch <= skip_bootloader; - cfg.sdram_writable <= 1'b0; - end - if (cfg.cmd_request) begin - cfg.cpu_busy <= 1'b1; - end - if (bus.request) begin - case (bus.address[4:2]) - R_SCR: begin - if (bus.wmask[3]) begin - { - cfg.cpu_ready, - cfg.cpu_busy, - cfg.cmd_error - } <= {bus.wdata[31:30], bus.wdata[28]}; - end - if (bus.wmask[0]) begin - { - skip_bootloader, - cfg.flashram_enabled, - cfg.sram_banked, - cfg.sram_enabled, - cfg.dd_enabled, - cfg.sdram_writable, - cfg.sdram_switch - } <= bus.wdata[6:0]; - end - end - - R_DDIPL_OFFSET: begin - if (&bus.wmask) begin - cfg.ddipl_offset <= bus.wdata[25:0]; - end - end - - R_SAVE_OFFSET: begin - if (&bus.wmask) begin - cfg.save_offset <= bus.wdata[25:0]; - end - end - - R_RECONFIGURE: begin - if (&bus.wmask && bus.wdata == RECONFIGURE_MAGIC) begin - trigger_reconfiguration <= 1'b1; - end - end - endcase - end - end - end - - logic [1:0] ru_clk; - logic ru_rconfig; - logic ru_regout; - - always_ff @(posedge sys.clk) begin - if (sys.reset) begin - ru_clk <= 2'd0; - ru_rconfig <= 1'b0; - end else begin - ru_clk <= ru_clk + 1'd1; - - if (ru_clk == 2'd1) begin - ru_rconfig <= trigger_reconfiguration; - end - end - end - - fiftyfivenm_rublock fiftyfivenm_rublock_inst ( - .clk(ru_clk[1]), - .shiftnld(1'b0), - .captnupdt(1'b0), - .regin(1'b0), - .rsttimer(1'b0), - .rconfig(ru_rconfig), - .regout(ru_regout) - ); - -endmodule diff --git a/fw/rtl/cpu/cpu_dd.sv b/fw/rtl/cpu/cpu_dd.sv deleted file mode 100644 index f4227d2..0000000 --- a/fw/rtl/cpu/cpu_dd.sv +++ /dev/null @@ -1,141 +0,0 @@ -module cpu_dd ( - if_system.sys sys, - if_cpu_bus bus, - if_dd.cpu dd -); - - const bit [8:0] M_SECTOR_BUFFER = 9'h100; - - logic bm_ack; - logic [31:0] seek_timer; - - typedef enum bit [2:0] { - R_SCR, - R_CMD_DATA, - R_HEAD_TRACK, - R_SECTOR_INFO, - R_DRIVE_ID, - R_SEEK_TIMER - } e_reg_id; - - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - if (bus.request) begin - bus.ack <= 1'b1; - end - end - - always_comb begin - bus.rdata = 32'd0; - if (bus.ack) begin - if (bus.address[8] == M_SECTOR_BUFFER[8]) begin - bus.rdata = { - dd.sector_rdata[7:0], - dd.sector_rdata[15:8], - dd.sector_rdata[23:16], - dd.sector_rdata[31:24] - }; - end else begin - case (bus.address[5:2]) - R_SCR: bus.rdata = { - 14'd0, - bm_ack, - dd.bm_micro_error, - dd.bm_transfer_c2, - dd.bm_transfer_data, - dd.bm_transfer_blocks, - dd.bm_transfer_mode, - 1'b0, - dd.bm_stop_pending, - 1'b0, - dd.bm_start_pending, - dd.disk_changed, - dd.disk_inserted, - 1'b0, - dd.bm_pending, - 1'b0, - dd.cmd_pending, - 1'b0, - dd.hard_reset - }; - R_CMD_DATA: bus.rdata = {8'd0, dd.cmd, dd.data}; - R_HEAD_TRACK: bus.rdata = {18'd0, dd.index_lock, dd.head_track}; - R_SECTOR_INFO: bus.rdata = { - dd.sectors_in_block, - dd.sector_size_full, - dd.sector_size, - dd.sector_num - }; - R_DRIVE_ID: bus.rdata = {dd.drive_id}; - R_SEEK_TIMER: bus.rdata = seek_timer; - default: bus.rdata = 32'd0; - endcase - end - end - end - - always_comb begin - dd.sector_address = bus.address[7:2]; - dd.sector_address_valid = bus.request && bus.address[8] == M_SECTOR_BUFFER[8]; - dd.sector_write = (&bus.wmask) && dd.sector_address_valid; - dd.sector_wdata = {bus.wdata[7:0], bus.wdata[15:8], bus.wdata[23:16], bus.wdata[31:24]}; - end - - always_ff @(posedge sys.clk) begin - dd.hard_reset_clear <= 1'b0; - dd.cmd_ready <= 1'b0; - dd.bm_start_clear <= 1'b0; - dd.bm_stop_clear <= 1'b0; - dd.bm_clear <= 1'b0; - dd.bm_ready <= 1'b0; - - if (dd.bm_interrupt_ack) begin - bm_ack <= 1'b1; - end - - if (!(&seek_timer)) begin - seek_timer <= seek_timer + 1'd1; - end - - if (sys.reset) begin - bm_ack <= 1'b0; - end else begin - if (bus.request && (!bus.address[8])) begin - case (bus.address[4:2]) - R_SCR: if (&bus.wmask) begin - if (bus.wdata[20]) begin - seek_timer <= 32'd0; - end - dd.bm_clear <= bus.wdata[19]; - if (bus.wdata[18]) begin - bm_ack <= 1'b0; - end - dd.bm_micro_error <= bus.wdata[16]; - dd.bm_transfer_c2 <= bus.wdata[15]; - dd.bm_transfer_data <= bus.wdata[14]; - dd.bm_stop_clear <= bus.wdata[11]; - dd.bm_start_clear <= bus.wdata[9]; - dd.disk_changed <= bus.wdata[7]; - dd.disk_inserted <= bus.wdata[6]; - dd.bm_ready <= bus.wdata[5]; - dd.cmd_ready <= bus.wdata[3]; - dd.hard_reset_clear <= bus.wdata[1]; - end - - R_CMD_DATA: if (&bus.wmask[1:0]) begin - dd.cmd_data <= bus.wdata[15:0]; - end - - R_HEAD_TRACK: if (&bus.wmask[1:0]) begin - {dd.index_lock, dd.head_track} <= bus.wdata[13:0]; - end - - R_DRIVE_ID: if (&bus.wmask[1:0]) begin - dd.drive_id <= bus.wdata[15:0]; - end - endcase - end - end - end - -endmodule diff --git a/fw/rtl/cpu/cpu_dma.sv b/fw/rtl/cpu/cpu_dma.sv deleted file mode 100644 index 45b2989..0000000 --- a/fw/rtl/cpu/cpu_dma.sv +++ /dev/null @@ -1,222 +0,0 @@ -interface if_dma (); - - localparam [1:0] NUM_DEVICES = sc64::__ID_DMA_END; - - sc64::e_dma_id id; - - logic rx_empty; - logic rx_read; - logic [7:0] rx_rdata; - logic tx_full; - logic tx_write; - logic [7:0] tx_wdata; - - logic request; - logic ack; - logic write; - logic [31:0] address; - logic [15:0] rdata; - logic [15:0] wdata; - - modport controller ( - output id, - - input rx_empty, - output rx_read, - input rx_rdata, - input tx_full, - output tx_write, - output tx_wdata, - - output request, - input ack, - output write, - output address, - input rdata, - output wdata - ); - - modport memory ( - input request, - output ack, - input write, - input address, - output rdata, - input wdata - ); - - logic [7:0] device_rx_rdata [(NUM_DEVICES - 1):0]; - logic device_rx_empty [(NUM_DEVICES - 1):0]; - logic device_tx_full [(NUM_DEVICES - 1):0]; - - always_comb begin - rx_rdata = 8'd0; - rx_empty = 1'b0; - tx_full = 1'b0; - - for (integer i = 0; i < NUM_DEVICES; i++) begin - rx_rdata = rx_rdata | (id == i[1:0] ? device_rx_rdata[i] : 8'd0); - rx_empty = rx_empty | (device_rx_empty[i] && id == i[1:0]); - tx_full = tx_full | (device_tx_full[i] && id == i[1:0]); - end - end - - genvar n; - generate - for (n = 0; n < NUM_DEVICES; n++) begin : at - logic device_selected; - logic device_rx_read; - logic device_tx_write; - - always_comb begin - device_selected = id == n[1:0]; - device_rx_read = device_selected && rx_read; - device_tx_write = device_selected && tx_write; - end - - modport device ( - output .rx_empty(device_rx_empty[n]), - input .rx_read(device_rx_read), - output .rx_rdata(device_rx_rdata[n]), - output .tx_full(device_tx_full[n]), - input .tx_write(device_tx_write), - input .tx_wdata(tx_wdata) - ); - end - endgenerate - -endinterface - - -module cpu_dma ( - if_system.sys sys, - if_cpu_bus bus, - if_dma.controller dma -); - - typedef enum bit [2:0] { - S_IDLE, - S_FETCH, - S_TRANSFER - } e_state; - - e_state state; - logic pending_stop; - logic direction; - logic [27:0] length; - logic [15:0] rdata_buffer; - logic byte_counter; - - always_comb begin - bus.rdata = 32'd0; - if (bus.ack) begin - case (bus.address[3:2]) - 0: bus.rdata = {28'd0, state != S_IDLE, direction, 2'b00}; - 1: bus.rdata = dma.address; - 2: bus.rdata = {2'b00, dma.id, length}; - default: bus.rdata = 32'd0; - endcase - end - end - - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - if (bus.request) begin - bus.ack <= 1'b1; - end - - dma.rx_read <= 1'b0; - dma.tx_write <= 1'b0; - - if (sys.reset) begin - state <= S_IDLE; - pending_stop <= 1'b0; - dma.request <= 1'b0; - end else begin - if (bus.request && bus.address[3:2] == 0 && bus.wmask[0]) begin - pending_stop <= bus.wdata[1]; - end - - case (state) - S_IDLE: begin - pending_stop <= 1'b0; - - if (bus.request) begin - case (bus.address[3:2]) - 0: if (bus.wmask[0]) begin - direction <= bus.wdata[2]; - if (bus.wdata[0]) begin - state <= S_FETCH; - byte_counter <= 1'b0; - end - end - - 1: if (&bus.wmask) begin - dma.address <= bus.wdata; - end - - 2: if (&bus.wmask) begin - {dma.id, length} <= {bus.wdata[29:1], 1'b0}; - end - endcase - end - end - - S_FETCH: begin - if (length != 28'd0 && !pending_stop) begin - if (direction) begin - if (!dma.rx_empty && !dma.rx_read) begin - dma.rx_read <= 1'b1; - dma.wdata <= {dma.wdata[7:0], dma.rx_rdata}; - byte_counter <= ~byte_counter; - if (byte_counter) begin - state <= S_TRANSFER; - dma.request <= 1'b1; - dma.write <= 1'b1; - end - end - end else begin - dma.request <= 1'b1; - dma.write <= 1'b0; - if (dma.ack) begin - state <= S_TRANSFER; - dma.request <= 1'b0; - rdata_buffer <= dma.rdata; - end - end - end else begin - state <= S_IDLE; - end - end - - S_TRANSFER: begin - if (direction) begin - if (dma.ack) begin - state <= S_FETCH; - dma.request <= 1'b0; - dma.address <= dma.address + 2'd2; - length <= length - 2'd2; - end - end else begin - if (!dma.tx_full && !dma.tx_write) begin - dma.tx_write <= 1'b1; - dma.tx_wdata <= byte_counter ? rdata_buffer[7:0] : rdata_buffer[15:8]; - byte_counter <= ~byte_counter; - if (byte_counter) begin - state <= S_FETCH; - dma.address <= dma.address + 2'd2; - length <= length - 2'd2; - end - end - end - end - - default: begin - state <= S_IDLE; - dma.request <= 1'b0; - end - endcase - end - end - -endmodule diff --git a/fw/rtl/cpu/cpu_flash.sv b/fw/rtl/cpu/cpu_flash.sv deleted file mode 100644 index a7c3b6f..0000000 --- a/fw/rtl/cpu/cpu_flash.sv +++ /dev/null @@ -1,61 +0,0 @@ -interface if_flash (); - - logic request; - logic ack; - logic write; - logic [31:0] address; - logic [31:0] rdata; - logic [31:0] wdata; - - modport cpu ( - output request, - input ack, - output write, - output address, - input rdata, - output wdata - ); - - modport memory ( - input request, - output ack, - input write, - input address, - output rdata, - input wdata - ); - -endinterface - - -module cpu_flash ( - if_system.sys sys, - if_cpu_bus bus, - if_flash.cpu flash -); - - logic request; - - always_comb begin - bus.ack = flash.ack; - bus.rdata = flash.rdata; - flash.request = bus.request || request; - flash.write = &bus.wmask; - flash.address = bus.address; - flash.wdata = bus.wdata; - end - - always_ff @(posedge sys.clk) begin - if (sys.reset) begin - request <= 1'b0; - end else begin - if (bus.request) begin - request <= 1'b1; - end - if (flash.ack) begin - request <= 1'b0; - end - end - end - -endmodule diff --git a/fw/rtl/cpu/cpu_flashram.sv b/fw/rtl/cpu/cpu_flashram.sv deleted file mode 100644 index 7519811..0000000 --- a/fw/rtl/cpu/cpu_flashram.sv +++ /dev/null @@ -1,77 +0,0 @@ -interface if_flashram (); - - logic [4:0] address; - logic [31:0] rdata; - logic [9:0] sector; - logic operation_pending; - logic write_or_erase; - logic sector_or_all; - logic operation_done; - - modport cpu ( - output address, - input rdata, - input sector, - input operation_pending, - input write_or_erase, - input sector_or_all, - output operation_done - ); - - modport flashram ( - input address, - output rdata, - output sector, - output operation_pending, - output write_or_erase, - output sector_or_all, - input operation_done - ); - -endinterface - - -module cpu_flashram ( - if_system.sys sys, - if_cpu_bus bus, - if_flashram.cpu flashram -); - - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - if (bus.request) begin - bus.ack <= 1'b1; - end - end - - always_comb begin - bus.rdata = 32'd0; - if (bus.ack) begin - bus.rdata = { - 14'd0, - flashram.sector, - 4'd0, - flashram.sector_or_all, - flashram.write_or_erase, - 1'b0, - flashram.operation_pending - }; - if (bus.address[7]) begin - bus.rdata = {flashram.rdata[7:0], flashram.rdata[15:8], flashram.rdata[23:16], flashram.rdata[31:24]}; - end - end - - flashram.address = bus.address[6:2]; - end - - always_ff @(posedge sys.clk) begin - flashram.operation_done <= 1'b0; - - if (bus.request) begin - if (!bus.address[7] && bus.wmask[0]) begin - flashram.operation_done <= bus.wdata[1]; - end - end - end - -endmodule diff --git a/fw/rtl/cpu/cpu_gpio.sv b/fw/rtl/cpu/cpu_gpio.sv deleted file mode 100644 index 4877713..0000000 --- a/fw/rtl/cpu/cpu_gpio.sv +++ /dev/null @@ -1,42 +0,0 @@ -module cpu_gpio ( - if_system.sys sys, - if_cpu_bus bus, - - input [7:0] gpio_i, - output [7:0] gpio_o, - output [7:0] gpio_oe -); - - logic [1:0][7:0] gpio_i_ff; - logic [7:0] gpio_o_value; - logic [7:0] gpio_oe_value; - - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - if (bus.request) begin - bus.ack <= 1'b1; - end - end - - always_comb begin - bus.rdata = 32'd0; - if (bus.ack) begin - bus.rdata = {8'd0, gpio_oe_value, gpio_i_ff[1], gpio_o_value}; - end - end - - always_ff @(posedge sys.clk) begin - gpio_i_ff <= {gpio_i_ff[0], gpio_i}; - gpio_o <= gpio_o_value; - gpio_oe <= gpio_oe_value; - - if (sys.reset) begin - gpio_o_value <= 8'd0; - gpio_oe_value <= 8'd0; - end else if (bus.request) begin - if (bus.wmask[0]) gpio_o_value <= bus.wdata[7:0]; - if (bus.wmask[2]) gpio_oe_value <= bus.wdata[23:16]; - end - end - -endmodule diff --git a/fw/rtl/cpu/cpu_i2c.sv b/fw/rtl/cpu/cpu_i2c.sv deleted file mode 100644 index ab2c7e2..0000000 --- a/fw/rtl/cpu/cpu_i2c.sv +++ /dev/null @@ -1,155 +0,0 @@ -module cpu_i2c ( - if_system.sys sys, - if_cpu_bus bus, - - output i2c_scl, - inout i2c_sda -); - - reg [1:0] state; - reg mack; - reg [8:0] trx_data; - - always_comb begin - bus.rdata = 32'd0; - if (bus.ack) begin - case (bus.address[2]) - 0: bus.rdata = {27'd0, |state, ~trx_data[0], mack, 2'b00}; - 1: bus.rdata = {23'd0, trx_data[0], trx_data[8:1]}; - default: bus.rdata = 32'd0; - endcase - end - end - - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - if (bus.request) begin - bus.ack <= 1'b1; - end - - if (sys.reset) begin - mack <= 1'b0; - end else if (bus.request && bus.wmask[0] && !bus.address[2]) begin - mack <= bus.wdata[2]; - end - end - - reg [5:0] clock_div; - reg [3:0] clock_phase_gen; - - wire clock_tick = &clock_div; - wire [3:0] clock_phase = {4{clock_tick}} & clock_phase_gen; - - always_ff @(posedge sys.clk) begin - if (sys.reset) begin - clock_div <= 6'd0; - end else begin - clock_div <= clock_div + 1'd1; - end - - if (sys.reset || state == 2'd0) begin - clock_phase_gen <= 4'b0001; - end else if (clock_tick) begin - clock_phase_gen <= {clock_phase_gen[2:0], clock_phase_gen[3]}; - end - end - - reg [3:0] bit_counter; - - reg sda_i_ff1, sda_i_ff2; - reg scl_o; - reg sda_o; - - assign i2c_scl = scl_o ? 1'bZ : 1'b0; - assign i2c_sda = sda_o ? 1'bZ : 1'b0; - - always_ff @(posedge sys.clk) begin - {sda_i_ff2, sda_i_ff1} <= {sda_i_ff1, i2c_sda}; - - if (sys.reset) begin - state <= 2'd0; - scl_o <= 1'b1; - sda_o <= 1'b1; - end else begin - case (state) - 2'd0: begin - bit_counter <= 4'd0; - - if (bus.request && bus.wmask[0]) begin - case (bus.address[2]) - 0: begin - if (bus.wdata[1]) state <= 2'd2; - if (bus.wdata[0]) state <= 2'd1; - end - - 1: begin - state <= 2'd3; - trx_data <= {bus.wdata[7:0], ~mack}; - end - endcase - end - end - - 2'd1: begin - if (clock_phase[0]) begin - scl_o <= 1'b1; - sda_o <= 1'b1; - end - - if (clock_phase[1]) begin - sda_o <= 1'b0; - end - - if (clock_phase[3]) begin - state <= 2'd0; - scl_o <= 1'b0; - end - end - - 2'd2: begin - if (clock_phase[0]) begin - scl_o <= 1'b0; - sda_o <= 1'b0; - end - - if (clock_phase[1]) begin - scl_o <= 1'b1; - end - - if (clock_phase[3]) begin - state <= 2'd0; - sda_o <= 1'b1; - end - end - - 2'd3: begin - if (clock_phase[0]) begin - bit_counter <= bit_counter + 1'd1; - scl_o <= 1'b0; - sda_o <= trx_data[8]; - end - - if (clock_phase[1]) begin - scl_o <= 1'b1; - end - - if (clock_phase[3]) begin - trx_data <= {trx_data[7:0], sda_i_ff2}; - scl_o <= 1'b0; - end - - if (bit_counter == 4'b1010) begin - state <= 2'd0; - end - end - - default: begin - state <= 2'd0; - scl_o <= 1'b1; - sda_o <= 1'b1; - end - endcase - end - end - -endmodule diff --git a/fw/rtl/cpu/cpu_ram.sv b/fw/rtl/cpu/cpu_ram.sv deleted file mode 100644 index fae5dd9..0000000 --- a/fw/rtl/cpu/cpu_ram.sv +++ /dev/null @@ -1,33 +0,0 @@ -module cpu_ram ( - if_system.sys sys, - if_cpu_bus bus -); - - logic [3:0][7:0] ram [0:4095]; - logic [31:0] q; - - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - if (bus.request) begin - bus.ack <= 1'b1; - end - end - - always_comb begin - bus.rdata = 32'd0; - if (bus.ack) begin - bus.rdata = q; - end - end - - always_ff @(posedge sys.clk) begin - q <= ram[bus.address[13:2]]; - if (bus.request) begin - if (bus.wmask[0]) ram[bus.address[13:2]][0] <= bus.wdata[7:0]; - if (bus.wmask[1]) ram[bus.address[13:2]][1] <= bus.wdata[15:8]; - if (bus.wmask[2]) ram[bus.address[13:2]][2] <= bus.wdata[23:16]; - if (bus.wmask[3]) ram[bus.address[13:2]][3] <= bus.wdata[31:24]; - end - end - -endmodule diff --git a/fw/rtl/cpu/cpu_sdram.sv b/fw/rtl/cpu/cpu_sdram.sv deleted file mode 100644 index 6f01317..0000000 --- a/fw/rtl/cpu/cpu_sdram.sv +++ /dev/null @@ -1,76 +0,0 @@ -interface if_sdram (); - - logic request; - logic ack; - logic write; - logic [31:0] address; - logic [15:0] rdata; - logic [15:0] wdata; - - modport cpu ( - output request, - input ack, - output write, - output address, - input rdata, - output wdata - ); - - modport memory ( - input request, - output ack, - input write, - input address, - output rdata, - input wdata - ); - -endinterface - - -module cpu_sdram ( - if_system.sys sys, - if_cpu_bus bus, - if_sdram.cpu sdram -); - - logic request; - logic current_word; - logic [31:0] rdata; - - always_comb begin - bus.rdata = 32'd0; - if (bus.ack) begin - bus.rdata = {rdata[7:0], rdata[15:8], rdata[23:16], rdata[31:24]}; - end - - sdram.write = current_word ? &bus.wmask[1:0] : &bus.wmask[3:2]; - sdram.address = {1'b0, bus.address[30:2], current_word, 1'b0}; - sdram.wdata = current_word ? {bus.wdata[23:16], bus.wdata[31:24]} : {bus.wdata[7:0], bus.wdata[15:8]}; - end - - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - - if (sys.reset) begin - sdram.request <= 1'b0; - end else begin - if (bus.request) begin - sdram.request <= 1'b1; - current_word <= 1'b0; - end - - if (sdram.ack) begin - if (!current_word) begin - current_word <= 1'b1; - rdata[31:16] <= sdram.rdata; - end else begin - bus.ack <= 1'b1; - sdram.request <= 1'b0; - rdata[15:0] <= sdram.rdata; - end - end - end - end - -endmodule diff --git a/fw/rtl/cpu/cpu_si.sv b/fw/rtl/cpu/cpu_si.sv deleted file mode 100644 index 2197d68..0000000 --- a/fw/rtl/cpu/cpu_si.sv +++ /dev/null @@ -1,59 +0,0 @@ -module cpu_si ( - if_system.sys sys, - if_cpu_bus bus, - if_si.cpu si -); - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - if (bus.request) begin - bus.ack <= 1'b1; - end - end - - always_comb begin - bus.rdata = 32'd0; - if (bus.ack) begin - case (bus.address[3:2]) - 0: bus.rdata = { - 20'd0, - si.rx_length[6:3], - 4'd0, - si.tx_busy, - 1'b0, - si.rx_data[0], - si.rx_ready - }; - 1: bus.rdata = {si.rx_data[56:49], si.rx_data[64:57], si.rx_data[72:65], si.rx_data[80:73]}; - 2: bus.rdata = {si.rx_data[24:17], si.rx_data[32:25], si.rx_data[40:33], si.rx_data[48:41]}; - 3: bus.rdata = {16'd0, si.rx_data[8:1], si.rx_data[16:9]}; - default: bus.rdata = 32'd0; - endcase - end - end - - always_comb begin - si.tx_data = {bus.wdata[7:0], bus.wdata[15:8], bus.wdata[23:16], bus.wdata[31:24]}; - si.tx_length = bus.wdata[22:16]; - end - - always_ff @(posedge sys.clk) begin - si.tx_reset <= 1'b0; - si.rx_reset <= 1'b0; - si.tx_start <= 1'b0; - si.tx_wmask <= 3'b000; - - if (bus.request && (&bus.wmask)) begin - case (bus.address[3:2]) - 0: begin - si.tx_reset <= bus.wdata[7]; - si.rx_reset <= bus.wdata[6]; - si.tx_start <= bus.wdata[2]; - end - 1: si.tx_wmask[0] <= 1'b1; - 2: si.tx_wmask[1] <= 1'b1; - 3: si.tx_wmask[2] <= 1'b1; - endcase - end - end - -endmodule diff --git a/fw/rtl/cpu/cpu_soc.sv b/fw/rtl/cpu/cpu_soc.sv deleted file mode 100644 index 7a15039..0000000 --- a/fw/rtl/cpu/cpu_soc.sv +++ /dev/null @@ -1,127 +0,0 @@ -module cpu_soc ( - if_system.sys sys, - if_config.cpu cfg, - if_dma dma, - if_sdram.cpu sdram, - if_flashram.cpu flashram, - if_si.cpu si, - if_flash.cpu flash, - if_dd.cpu dd, - - input [7:0] gpio_i, - output [7:0] gpio_o, - output [7:0] gpio_oe, - - output i2c_scl, - inout i2c_sda, - - output usb_clk, - output usb_cs, - input usb_miso, - inout [3:0] usb_miosi, - input usb_pwren, - - input uart_rxd, - output uart_txd, - - output sd_clk, - inout sd_cmd, - inout [3:0] sd_dat -); - - if_cpu_bus bus (); - - cpu_wrapper cpu_wrapper_inst ( - .sys(sys), - .bus(bus) - ); - - cpu_ram cpu_ram_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_CPU_RAM].device) - ); - - cpu_flash cpu_flash_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_CPU_FLASH].device), - .flash(flash) - ); - - cpu_gpio cpu_gpio_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_CPU_GPIO].device), - .gpio_i(gpio_i), - .gpio_o(gpio_o), - .gpio_oe(gpio_oe) - ); - - cpu_i2c cpu_i2c_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_CPU_I2C].device), - .i2c_scl(i2c_scl), - .i2c_sda(i2c_sda) - ); - - cpu_usb cpu_usb_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_CPU_USB].device), - .dma(dma.at[sc64::ID_DMA_USB].device), - .usb_clk(usb_clk), - .usb_cs(usb_cs), - .usb_miso(usb_miso), - .usb_miosi(usb_miosi), - .usb_pwren(usb_pwren) - ); - - generate - if (sc64::CPU_HAS_UART) begin - cpu_uart cpu_uart_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_CPU_UART].device), - .uart_rxd(uart_rxd), - .uart_txd(uart_txd) - ); - end - endgenerate - - cpu_dma cpu_dma_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_CPU_DMA].device), - .dma(dma) - ); - - cpu_cfg cpu_cfg_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_CPU_CFG].device), - .cfg(cfg) - ); - - cpu_sdram cpu_sdram_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_CPU_SDRAM].device), - .sdram(sdram) - ); - - cpu_flashram cpu_flashram_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_CPU_FLASHRAM].device), - .flashram(flashram) - ); - - cpu_si cpu_si_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_CPU_SI].device), - .si(si) - ); - - cpu_dd cpu_dd_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_CPU_DD].device), - .dd(dd) - ); - - assign sd_clk = 1'bZ; - assign sd_cmd = 1'bZ; - assign sd_dat = 4'bZZZZ; - -endmodule diff --git a/fw/rtl/cpu/cpu_uart.sv b/fw/rtl/cpu/cpu_uart.sv deleted file mode 100644 index 6da1ed1..0000000 --- a/fw/rtl/cpu/cpu_uart.sv +++ /dev/null @@ -1,153 +0,0 @@ -module cpu_uart ( - if_system.sys sys, - if_cpu_bus bus, - - input uart_rxd, - output uart_txd -); - - localparam BAUD_GEN_VALUE = int'(sc64::CLOCK_FREQUENCY / sc64::UART_BAUD_RATE) - 1'd1; - - typedef enum bit [1:0] { - S_TRX_IDLE, - S_TRX_DATA, - S_TRX_SAMPLING_OFFSET - } e_trx_state; - - - // CPU bus controller - - e_trx_state tx_state; - e_trx_state rx_state; - logic [7:0] rx_data; - logic rx_available; - logic rx_overrun; - - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - if (bus.request) begin - bus.ack <= 1'b1; - end - end - - always_comb begin - bus.rdata = 32'd0; - if (bus.ack) begin - case (bus.address[2:2]) - 0: bus.rdata = {29'd0, rx_overrun, tx_state == S_TRX_IDLE, rx_available}; - 1: bus.rdata = {24'd0, rx_data}; - default: bus.rdata = 32'd0; - endcase - end - end - - - // TX path - - logic [6:0] tx_baud_counter; - logic [3:0] tx_bit_counter; - logic [9:0] tx_shifter; - - always_ff @(posedge sys.clk) begin - tx_baud_counter <= tx_baud_counter + 1'd1; - uart_txd <= tx_shifter[0]; - - if (sys.reset) begin - tx_state <= S_TRX_IDLE; - tx_shifter <= 10'h3FF; - end else begin - case (tx_state) - S_TRX_IDLE: begin - if (bus.request && bus.wmask[0] && bus.address[2]) begin - tx_state <= S_TRX_DATA; - tx_baud_counter <= 7'd0; - tx_bit_counter <= 4'd0; - tx_shifter <= {1'b1, bus.wdata[7:0], 1'b0}; - end - end - - S_TRX_DATA: begin - if (tx_baud_counter == BAUD_GEN_VALUE) begin - tx_baud_counter <= 7'd0; - tx_bit_counter <= tx_bit_counter + 1'd1; - tx_shifter <= {1'b1, tx_shifter[9:1]}; - if (tx_bit_counter == 4'd9) begin - tx_state <= S_TRX_IDLE; - end - end - end - - default: begin - tx_state <= S_TRX_IDLE; - tx_shifter <= 10'h3FF; - end - endcase - end - end - - - // RX path - - logic [6:0] rx_baud_counter; - logic [3:0] rx_bit_counter; - logic [7:0] rx_shifter; - logic [1:0] rxd_ff; - - always_ff @(posedge sys.clk) begin - rx_baud_counter <= rx_baud_counter + 1'd1; - rxd_ff <= {rxd_ff[0], uart_rxd}; - - if (bus.request && bus.wmask[0] && !bus.address[2]) begin - rx_overrun <= bus.wdata[2]; - end - if (bus.request && !bus.wmask[0] && bus.address[2]) begin - rx_available <= 1'b0; - end - - if (sys.reset) begin - rx_state <= S_TRX_IDLE; - rx_available <= 1'b0; - rx_overrun <= 1'b0; - end else begin - case (rx_state) - S_TRX_IDLE: begin - if (!rxd_ff[1]) begin - rx_state <= S_TRX_SAMPLING_OFFSET; - rx_baud_counter <= 7'd0; - rx_bit_counter <= 4'd0; - end - end - - S_TRX_SAMPLING_OFFSET: begin - if (rx_baud_counter == (BAUD_GEN_VALUE / 2)) begin - rx_state <= S_TRX_DATA; - rx_baud_counter <= 7'd0; - end - end - - S_TRX_DATA: begin - if (rx_baud_counter == BAUD_GEN_VALUE) begin - rx_baud_counter <= 7'd0; - rx_bit_counter <= rx_bit_counter + 1'd1; - rx_shifter <= {rxd_ff[1], rx_shifter[7:1]}; - if (rx_bit_counter == 4'd8) begin - rx_state <= S_TRX_IDLE; - if (rxd_ff[1]) begin - rx_data <= rx_shifter[7:0]; - rx_available <= 1'b1; - rx_overrun <= rx_available; - end - end - end - end - - default: begin - rx_state <= S_TRX_IDLE; - rx_available <= 1'b0; - rx_overrun <= 1'b0; - end - endcase - end - end - -endmodule diff --git a/fw/rtl/cpu/cpu_usb.sv b/fw/rtl/cpu/cpu_usb.sv deleted file mode 100644 index da439c2..0000000 --- a/fw/rtl/cpu/cpu_usb.sv +++ /dev/null @@ -1,119 +0,0 @@ -module cpu_usb ( - if_system sys, - if_cpu_bus bus, - if_dma dma, - - output usb_clk, - output usb_cs, - input usb_miso, - inout [3:0] usb_miosi, - input usb_pwren -); - - logic rx_flush; - logic rx_empty; - logic rx_read; - logic [7:0] rx_rdata; - - logic tx_flush; - logic tx_full; - logic tx_write; - logic [7:0] tx_wdata; - - logic rx_escape_valid; - logic rx_escape_ack; - logic [7:0] rx_escape; - - logic cpu_rx_read; - logic cpu_tx_write; - - logic usb_enabled; - - always_comb begin - dma.rx_empty = rx_empty; - rx_read = cpu_rx_read || dma.rx_read; - dma.rx_rdata = rx_rdata; - - dma.tx_full = tx_full; - tx_write = cpu_tx_write || dma.tx_write; - tx_wdata = dma.tx_write ? dma.tx_wdata : bus.wdata[7:0]; - end - - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - if (bus.request) begin - bus.ack <= 1'b1; - end - end - - always_comb begin - bus.rdata = 32'd0; - if (bus.ack) begin - case (bus.address[3:2]) - 0: bus.rdata = {25'd0, rx_escape_valid, usb_pwren, usb_enabled, 2'b00, ~tx_full, ~rx_empty}; - 1: bus.rdata = {24'd0, rx_rdata}; - 2: bus.rdata = {24'd0, rx_escape}; - default: bus.rdata = 32'd0; - endcase - end - end - - always_ff @(posedge sys.clk) begin - rx_flush <= 1'b0; - cpu_rx_read <= 1'b0; - - tx_flush <= 1'b0; - cpu_tx_write <= 1'b0; - - rx_escape_ack <= 1'b0; - - if (sys.reset) begin - usb_enabled <= 1'b0; - end else begin - if (bus.request) begin - case (bus.address[2:2]) - 2'd0: begin - if (bus.wmask[0]) begin - rx_escape_ack <= bus.wdata[7]; - {usb_enabled, tx_flush, rx_flush} <= bus.wdata[4:2]; - end - end - - 2'd1: begin - if (bus.wmask[0]) begin - cpu_tx_write <= 1'b1; - end else begin - cpu_rx_read <= 1'b1; - end - end - endcase - end - end - end - - usb_ft1248 usb_ft1248_inst ( - .sys(sys), - - .usb_enabled(usb_enabled), - - .usb_clk(usb_clk), - .usb_cs(usb_cs), - .usb_miso(usb_miso), - .usb_miosi(usb_miosi), - - .rx_flush(rx_flush), - .rx_empty(rx_empty), - .rx_read(rx_read), - .rx_rdata(rx_rdata), - - .tx_flush(tx_flush), - .tx_full(tx_full), - .tx_write(tx_write), - .tx_wdata(tx_wdata), - - .rx_escape_valid(rx_escape_valid), - .rx_escape_ack(rx_escape_ack), - .rx_escape(rx_escape) - ); - -endmodule diff --git a/fw/rtl/cpu/cpu_wrapper.sv b/fw/rtl/cpu/cpu_wrapper.sv deleted file mode 100644 index aaededc..0000000 --- a/fw/rtl/cpu/cpu_wrapper.sv +++ /dev/null @@ -1,49 +0,0 @@ -module cpu_wrapper ( - if_system.sys sys, - if_cpu_bus.cpu bus -); - - typedef enum bit [0:0] { - S_IDLE, - S_WAITING - } e_bus_state; - - e_bus_state state; - - logic mem_la_read; - logic mem_la_write; - - always_ff @(posedge sys.clk) begin - bus.request <= 1'b0; - if (sys.reset) begin - state <= S_IDLE; - end else begin - if (state == S_IDLE && (mem_la_read || mem_la_write)) begin - state <= S_WAITING; - bus.request <= 1'b1; - end - if (state == S_WAITING && bus.ack) begin - state <= S_IDLE; - end - end - end - - picorv32 #( - .ENABLE_COUNTERS(0), - .ENABLE_COUNTERS64(0), - .CATCH_MISALIGN(0), - .CATCH_ILLINSN(0), - .PROGADDR_RESET(sc64::CPU_RESET_VECTOR) - ) cpu_inst ( - .clk(sys.clk), - .resetn(~sys.reset), - .mem_addr(bus.address), - .mem_wdata(bus.wdata), - .mem_wstrb(bus.wmask), - .mem_ready(bus.ack), - .mem_rdata(bus.rdata), - .mem_la_read(mem_la_read), - .mem_la_write(mem_la_write) - ); - -endmodule diff --git a/fw/rtl/fifo/fifo_bus.sv b/fw/rtl/fifo/fifo_bus.sv new file mode 100644 index 0000000..80ca607 --- /dev/null +++ b/fw/rtl/fifo/fifo_bus.sv @@ -0,0 +1,37 @@ +interface fifo_bus (); + + logic rx_empty; + logic rx_almost_empty; + logic rx_read; + logic [7:0] rx_rdata; + + logic tx_full; + logic tx_almost_full; + logic tx_write; + logic [7:0] tx_wdata; + + modport controller ( + input rx_empty, + input rx_almost_empty, + output rx_read, + input rx_rdata, + + input tx_full, + input tx_almost_full, + output tx_write, + output tx_wdata + ); + + modport fifo ( + output rx_empty, + output rx_almost_empty, + input rx_read, + output rx_rdata, + + output tx_full, + output tx_almost_full, + input tx_write, + input tx_wdata + ); + +endinterface diff --git a/fw/rtl/fifo/fifo_junction.sv b/fw/rtl/fifo/fifo_junction.sv new file mode 100644 index 0000000..cd3ffdc --- /dev/null +++ b/fw/rtl/fifo/fifo_junction.sv @@ -0,0 +1,26 @@ +module fifo_junction ( + fifo_bus.controller dev_bus, + + fifo_bus.fifo cfg_bus, + fifo_bus.fifo dma_bus +); + + always_comb begin + dev_bus.rx_read = cfg_bus.rx_read || dma_bus.rx_read; + dev_bus.tx_write = cfg_bus.tx_write || dma_bus.tx_write; + dev_bus.tx_wdata = cfg_bus.tx_write ? cfg_bus.tx_wdata : dma_bus.tx_wdata; + + cfg_bus.rx_empty = dev_bus.rx_empty; + cfg_bus.rx_almost_empty = dev_bus.rx_almost_empty; + cfg_bus.rx_rdata = dev_bus.rx_rdata; + cfg_bus.tx_full = dev_bus.tx_full; + cfg_bus.tx_almost_full = dev_bus.tx_almost_full; + + dma_bus.rx_empty = dev_bus.rx_empty; + dma_bus.rx_almost_empty = dev_bus.rx_almost_empty; + dma_bus.rx_rdata = dev_bus.rx_rdata; + dma_bus.tx_full = dev_bus.tx_full; + dma_bus.tx_almost_full = dev_bus.tx_almost_full; + end + +endmodule diff --git a/fw/rtl/intel/fifo/intel_fifo_8.qip b/fw/rtl/intel/fifo/intel_fifo_8.qip deleted file mode 100644 index f252a4d..0000000 --- a/fw/rtl/intel/fifo/intel_fifo_8.qip +++ /dev/null @@ -1,4 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "FIFO" -set_global_assignment -name IP_TOOL_VERSION "21.1" -set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{MAX 10}" -set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "intel_fifo_8.v"] diff --git a/fw/rtl/intel/fifo/intel_fifo_8.v b/fw/rtl/intel/fifo/intel_fifo_8.v deleted file mode 100644 index 88316a2..0000000 --- a/fw/rtl/intel/fifo/intel_fifo_8.v +++ /dev/null @@ -1,162 +0,0 @@ -// megafunction wizard: %FIFO% -// GENERATION: STANDARD -// VERSION: WM1.0 -// MODULE: scfifo - -// ============================================================ -// File Name: intel_fifo_8.v -// Megafunction Name(s): -// scfifo -// -// Simulation Library Files(s): -// -// ============================================================ -// ************************************************************ -// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! -// -// 21.1.0 Build 842 10/21/2021 SJ Lite Edition -// ************************************************************ - - -//Copyright (C) 2021 Intel Corporation. All rights reserved. -//Your use of Intel Corporation's design tools, logic functions -//and other software and tools, and any partner logic -//functions, and any output files from any of the foregoing -//(including device programming or simulation files), and any -//associated documentation or information are expressly subject -//to the terms and conditions of the Intel Program License -//Subscription Agreement, the Intel Quartus Prime License Agreement, -//the Intel FPGA IP License Agreement, or other applicable license -//agreement, including, without limitation, that your use is for -//the sole purpose of programming logic devices manufactured by -//Intel and sold by Intel or its authorized distributors. Please -//refer to the applicable agreement for further details, at -//https://fpgasoftware.intel.com/eula. - - -// synopsys translate_off -`timescale 1 ps / 1 ps -// synopsys translate_on -module intel_fifo_8 ( - clock, - data, - rdreq, - sclr, - wrreq, - empty, - full, - q); - - input clock; - input [7:0] data; - input rdreq; - input sclr; - input wrreq; - output empty; - output full; - output [7:0] q; - - wire sub_wire0; - wire sub_wire1; - wire [7:0] sub_wire2; - wire empty = sub_wire0; - wire full = sub_wire1; - wire [7:0] q = sub_wire2[7:0]; - - scfifo scfifo_component ( - .clock (clock), - .data (data), - .rdreq (rdreq), - .sclr (sclr), - .wrreq (wrreq), - .empty (sub_wire0), - .full (sub_wire1), - .q (sub_wire2), - .aclr (), - .almost_empty (), - .almost_full (), - .eccstatus (), - .usedw ()); - defparam - scfifo_component.add_ram_output_register = "ON", - scfifo_component.intended_device_family = "MAX 10", - scfifo_component.lpm_numwords = 1024, - scfifo_component.lpm_showahead = "ON", - scfifo_component.lpm_type = "scfifo", - scfifo_component.lpm_width = 8, - scfifo_component.lpm_widthu = 10, - scfifo_component.overflow_checking = "ON", - scfifo_component.underflow_checking = "ON", - scfifo_component.use_eab = "ON"; - - -endmodule - -// ============================================================ -// CNX file retrieval info -// ============================================================ -// Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" -// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" -// Retrieval info: PRIVATE: AlmostFull NUMERIC "0" -// Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" -// Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "1" -// Retrieval info: PRIVATE: Clock NUMERIC "0" -// Retrieval info: PRIVATE: Depth NUMERIC "1024" -// Retrieval info: PRIVATE: Empty NUMERIC "1" -// Retrieval info: PRIVATE: Full NUMERIC "1" -// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "MAX 10" -// Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" -// Retrieval info: PRIVATE: LegacyRREQ NUMERIC "0" -// Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" -// Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" -// Retrieval info: PRIVATE: Optimize NUMERIC "1" -// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" -// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" -// Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" -// Retrieval info: PRIVATE: UsedW NUMERIC "0" -// Retrieval info: PRIVATE: Width NUMERIC "8" -// Retrieval info: PRIVATE: dc_aclr NUMERIC "0" -// Retrieval info: PRIVATE: diff_widths NUMERIC "0" -// Retrieval info: PRIVATE: msb_usedw NUMERIC "0" -// Retrieval info: PRIVATE: output_width NUMERIC "8" -// Retrieval info: PRIVATE: rsEmpty NUMERIC "1" -// Retrieval info: PRIVATE: rsFull NUMERIC "0" -// Retrieval info: PRIVATE: rsUsedW NUMERIC "0" -// Retrieval info: PRIVATE: sc_aclr NUMERIC "0" -// Retrieval info: PRIVATE: sc_sclr NUMERIC "1" -// Retrieval info: PRIVATE: wsEmpty NUMERIC "0" -// Retrieval info: PRIVATE: wsFull NUMERIC "1" -// Retrieval info: PRIVATE: wsUsedW NUMERIC "0" -// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all -// Retrieval info: CONSTANT: ADD_RAM_OUTPUT_REGISTER STRING "ON" -// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "MAX 10" -// Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "1024" -// Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "ON" -// Retrieval info: CONSTANT: LPM_TYPE STRING "scfifo" -// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" -// Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "10" -// Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" -// Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" -// Retrieval info: CONSTANT: USE_EAB STRING "ON" -// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock" -// Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL "data[7..0]" -// Retrieval info: USED_PORT: empty 0 0 0 0 OUTPUT NODEFVAL "empty" -// Retrieval info: USED_PORT: full 0 0 0 0 OUTPUT NODEFVAL "full" -// Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL "q[7..0]" -// Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL "rdreq" -// Retrieval info: USED_PORT: sclr 0 0 0 0 INPUT NODEFVAL "sclr" -// Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL "wrreq" -// Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 -// Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 -// Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 -// Retrieval info: CONNECT: @sclr 0 0 0 0 sclr 0 0 0 0 -// Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 -// Retrieval info: CONNECT: empty 0 0 0 0 @empty 0 0 0 0 -// Retrieval info: CONNECT: full 0 0 0 0 @full 0 0 0 0 -// Retrieval info: CONNECT: q 0 0 8 0 @q 0 0 8 0 -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_fifo_8.v TRUE -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_fifo_8.inc FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_fifo_8.cmp FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_fifo_8.bsf FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_fifo_8_inst.v FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_fifo_8_bb.v FALSE diff --git a/fw/rtl/intel/flash/intel_flash.qsys b/fw/rtl/intel/flash/intel_flash.qsys deleted file mode 100644 index 5759c65..0000000 --- a/fw/rtl/intel/flash/intel_flash.qsys +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Single Compressed Image - Internal Configuration - - - - - - Read and write,Read and write,Hidden,Read and write,Read and write - $${FILENAME}_onchip_flash_0 - - - - - - - - - - diff --git a/fw/rtl/intel/gpio/intel_gpio_ddro.qip b/fw/rtl/intel/gpio/intel_gpio_ddro.qip deleted file mode 100644 index 2cd6c78..0000000 --- a/fw/rtl/intel/gpio/intel_gpio_ddro.qip +++ /dev/null @@ -1,77 +0,0 @@ -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_TOOL_NAME "altera_gpio_lite" -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_TOOL_VERSION "21.1" -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_TOOL_ENV "mwpim" -set_global_assignment -library "intel_gpio_ddro" -name MISC_FILE [file join $::quartus(qip_path) "intel_gpio_ddro.cmp"] -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_TARGETED_DEVICE_FAMILY "MAX 10" -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_GENERATED_DEVICE_FAMILY "{MAX 10}" -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_QSYS_MODE "UNKNOWN" -set_global_assignment -name SYNTHESIS_ONLY_QIP ON -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_COMPONENT_NAME "aW50ZWxfZ3Bpb19kZHJv" -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_COMPONENT_DISPLAY_NAME "R1BJTyBMaXRlIEludGVsIEZQR0EgSVA=" -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_COMPONENT_REPORT_HIERARCHY "Off" -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_COMPONENT_INTERNAL "Off" -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_COMPONENT_AUTHOR "SW50ZWwgQ29ycG9yYXRpb24=" -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_COMPONENT_VERSION "MjEuMQ==" -set_global_assignment -entity "intel_gpio_ddro" -library "intel_gpio_ddro" -name IP_COMPONENT_DESCRIPTION "R1BJTyBMaXRlIEludGVsIEZQR0EgSVA=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_NAME "YWx0ZXJhX2dwaW9fbGl0ZQ==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_DISPLAY_NAME "R1BJTyBMaXRlIEludGVsIEZQR0EgSVA=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_REPORT_HIERARCHY "Off" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_INTERNAL "Off" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_AUTHOR "SW50ZWwgQ29ycG9yYXRpb24=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_VERSION "MjEuMQ==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_DESCRIPTION "R1BJTyBMaXRlIEludGVsIEZQR0EgSVA=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "REVWSUNFX0ZBTUlMWQ==::TUFYIDEw::RGV2aWNlIGZhbWlseQ==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "UElOX1RZUEU=::b3V0cHV0::RGF0YSBkaXJlY3Rpb24=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "U0laRQ==::MQ==::RGF0YSB3aWR0aA==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX3RydWVfZGlmZl9idWY=::ZmFsc2U=::VXNlIHRydWUgZGlmZmVyZW50aWFsIGJ1ZmZlcg==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX3BzZXVkb19kaWZmX2J1Zg==::ZmFsc2U=::VXNlIHBzZXVkbyBkaWZmZXJlbnRpYWwgYnVmZmVy" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2J1c19ob2xk::ZmFsc2U=::VXNlIGJ1cy1ob2xkIGNpcmN1aXRyeQ==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX29wZW5fZHJhaW4=::ZmFsc2U=::VXNlIG9wZW4gZHJhaW4gb3V0cHV0" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2VuYWJsZV9vZV9wb3J0::ZmFsc2U=::RW5hYmxlIG9lIHBvcnQ=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2lvX3JlZ19tb2Rl::ZGRy::UmVnaXN0ZXIgbW9kZQ==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2VuYWJsZV9hY2xyX3BvcnQ=::ZmFsc2U=::RW5hYmxlIGFjbHIgcG9ydA==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2VuYWJsZV9hc2V0X3BvcnQ=::ZmFsc2U=::RW5hYmxlIGFzZXQgcG9ydA==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2VuYWJsZV9zY2xyX3BvcnQ=::ZmFsc2U=::RW5hYmxlIHNjbHIgcG9ydA==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX3NldF9yZWdpc3RlcnNfdG9fcG93ZXJfdXBfaGlnaA==::ZmFsc2U=::U2V0IHJlZ2lzdGVycyB0byBwb3dlciB1cCBoaWdoICh3aGVuIGFjbHIsIHNjbHIgYW5kIGFzZXQgcG9ydHMgYXJlIG5vdCB1c2VkKQ==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2Nsb2NrX2VuYWJsZQ==::ZmFsc2U=::RW5hYmxlIGluY2xvY2tlbi9vdXRjbG9ja2VuIHBvcnRz" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2ludmVydF9vdXRwdXQ=::ZmFsc2U=::SW52ZXJ0IGRpbg==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX3VzZV9yZWdpc3Rlcl90b19kcml2ZV9vYnVmX29l::ZmFsc2U=::VXNlIGEgc2luZ2xlIHJlZ2lzdGVyIHRvIGRyaXZlIHRoZSBvdXRwdXQgZW5hYmxlIChvZSkgc2lnbmFsIGF0IHRoZSBJL08gYnVmZmVy" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX3VzZV9kZGlvX3JlZ190b19kcml2ZV9vZQ==::ZmFsc2U=::VXNlIERESU8gcmVnaXN0ZXJzIHRvIGRyaXZlIHRoZSBvdXRwdXQgZW5hYmxlIChvZSkgc2lnbmFsIGF0IHRoZSBJL08gYnVmZmVy" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX3VzZV9hZHZhbmNlZF9kZHJfZmVhdHVyZXM=::ZmFsc2U=::RW5hYmxlIGFkdmFuY2VkIEREUiBmZWF0dXJlcw==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2VuYWJsZV9waGFzZV9kZXRlY3Rvcl9mb3JfY2s=::ZmFsc2U=::RW5hYmxlIFBoYXNlIERldGVjdG9yIGZyb20gQ0sgbG9vcGJhY2sgc2lnbmFs" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2VuYWJsZV9vZV9oYWxmX2N5Y2xlX2RlbGF5::dHJ1ZQ==::QWRkIGhhbGYtY3ljbGUgZGVsYXkgdG8gT0Ugc2lnbmFs" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2VuYWJsZV9ocl9jbG9jaw==::ZmFsc2U=::RW5hYmxlIGhhbGYtcmF0ZSBjbG9jayBwb3J0" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2VuYWJsZV9pbnZlcnRfaHJfY2xvY2tfcG9ydA==::ZmFsc2U=::RW5hYmxlIGludmVydF9ocl9jbG9jayBwb3J0" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2ludmVydF9jbGtkaXZfaW5wdXRfY2xvY2s=::ZmFsc2U=::SW52ZXJ0IGNsb2NrIGRpdmlkZXIgaW5wdXQgY2xvY2s=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2ludmVydF9vdXRwdXRfY2xvY2s=::ZmFsc2U=::SW52ZXJ0IERESU8gb3V0Y2xvY2s=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "Z3VpX2ludmVydF9vZV9pbmNsb2Nr::ZmFsc2U=::SW52ZXJ0IG91dHB1dCBlbmFibGUgKG9lKSByZWdpc3RlciBpbmNsb2Nr" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "UkVHSVNURVJfTU9ERQ==::ZGRy::UkVHSVNURVJfTU9ERQ==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "QlVGRkVSX1RZUEU=::c2luZ2xlLWVuZGVk::QlVGRkVSX1RZUEU=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "QVNZTkNfTU9ERQ==::bm9uZQ==::QVNZTkNfTU9ERQ==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "U1lOQ19NT0RF::bm9uZQ==::U1lOQ19NT0RF" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "QlVTX0hPTEQ=::ZmFsc2U=::QlVTX0hPTEQ=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "T1BFTl9EUkFJTl9PVVRQVVQ=::ZmFsc2U=::T1BFTl9EUkFJTl9PVVRQVVQ=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "RU5BQkxFX09FX1BPUlQ=::ZmFsc2U=::RU5BQkxFX09FX1BPUlQ=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "RU5BQkxFX05TTEVFUF9QT1JU::ZmFsc2U=::RU5BQkxFX05TTEVFUF9QT1JU" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "RU5BQkxFX0NMT0NLX0VOQV9QT1JU::ZmFsc2U=::RU5BQkxFX0NMT0NLX0VOQV9QT1JU" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "U0VUX1JFR0lTVEVSX09VVFBVVFNfSElHSA==::ZmFsc2U=::U0VUX1JFR0lTVEVSX09VVFBVVFNfSElHSA==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "SU5WRVJUX09VVFBVVA==::ZmFsc2U=::SU5WRVJUX09VVFBVVA==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "SU5WRVJUX0lOUFVUX0NMT0NL::ZmFsc2U=::SU5WRVJUX0lOUFVUX0NMT0NL" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "VVNFX09ORV9SRUdfVE9fRFJJVkVfT0U=::ZmFsc2U=::VVNFX09ORV9SRUdfVE9fRFJJVkVfT0U=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "VVNFX0RESU9fUkVHX1RPX0RSSVZFX09F::ZmFsc2U=::VVNFX0RESU9fUkVHX1RPX0RSSVZFX09F" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "VVNFX0FEVkFOQ0VEX0REUl9GRUFUVVJFUw==::ZmFsc2U=::VVNFX0FEVkFOQ0VEX0REUl9GRUFUVVJFUw==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "VVNFX0FEVkFOQ0VEX0REUl9GRUFUVVJFU19GT1JfSU5QVVRfT05MWQ==::ZmFsc2U=::VVNFX0FEVkFOQ0VEX0REUl9GRUFUVVJFU19GT1JfSU5QVVRfT05MWQ==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "RU5BQkxFX09FX0hBTEZfQ1lDTEVfREVMQVk=::dHJ1ZQ==::RU5BQkxFX09FX0hBTEZfQ1lDTEVfREVMQVk=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "SU5WRVJUX0NMS0RJVl9JTlBVVF9DTE9DSw==::ZmFsc2U=::SU5WRVJUX0NMS0RJVl9JTlBVVF9DTE9DSw==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "RU5BQkxFX1BIQVNFX0lOVkVSVF9DVFJMX1BPUlQ=::ZmFsc2U=::RU5BQkxFX1BIQVNFX0lOVkVSVF9DVFJMX1BPUlQ=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "RU5BQkxFX0hSX0NMT0NL::ZmFsc2U=::RU5BQkxFX0hSX0NMT0NL" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "SU5WRVJUX09VVFBVVF9DTE9DSw==::ZmFsc2U=::SU5WRVJUX09VVFBVVF9DTE9DSw==" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "SU5WRVJUX09FX0lOQ0xPQ0s=::ZmFsc2U=::SU5WRVJUX09FX0lOQ0xPQ0s=" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_COMPONENT_PARAMETER "RU5BQkxFX1BIQVNFX0RFVEVDVE9SX0ZPUl9DSw==::ZmFsc2U=::RU5BQkxFX1BIQVNFX0RFVEVDVE9SX0ZPUl9DSw==" - -set_global_assignment -library "intel_gpio_ddro" -name VERILOG_FILE [file join $::quartus(qip_path) "intel_gpio_ddro.v"] -set_global_assignment -library "intel_gpio_ddro" -name SYSTEMVERILOG_FILE [file join $::quartus(qip_path) "intel_gpio_ddro/altera_gpio_lite.sv"] - -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_TOOL_NAME "altera_gpio_lite" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_TOOL_VERSION "21.1" -set_global_assignment -entity "altera_gpio_lite" -library "intel_gpio_ddro" -name IP_TOOL_ENV "mwpim" diff --git a/fw/rtl/intel/gpio/intel_gpio_ddro.v b/fw/rtl/intel/gpio/intel_gpio_ddro.v deleted file mode 100644 index 66bf848..0000000 --- a/fw/rtl/intel/gpio/intel_gpio_ddro.v +++ /dev/null @@ -1,123 +0,0 @@ -// megafunction wizard: %GPIO Lite Intel FPGA IP v21.1% -// GENERATION: XML -// intel_gpio_ddro.v - -// Generated using ACDS version 21.1 842 - -`timescale 1 ps / 1 ps -module intel_gpio_ddro ( - input wire outclock, // outclock.export - input wire [1:0] din, // din.export - output wire [0:0] pad_out // pad_out.export - ); - - altera_gpio_lite #( - .PIN_TYPE ("output"), - .SIZE (1), - .REGISTER_MODE ("ddr"), - .BUFFER_TYPE ("single-ended"), - .ASYNC_MODE ("none"), - .SYNC_MODE ("none"), - .BUS_HOLD ("false"), - .OPEN_DRAIN_OUTPUT ("false"), - .ENABLE_OE_PORT ("false"), - .ENABLE_NSLEEP_PORT ("false"), - .ENABLE_CLOCK_ENA_PORT ("false"), - .SET_REGISTER_OUTPUTS_HIGH ("false"), - .INVERT_OUTPUT ("false"), - .INVERT_INPUT_CLOCK ("false"), - .USE_ONE_REG_TO_DRIVE_OE ("false"), - .USE_DDIO_REG_TO_DRIVE_OE ("false"), - .USE_ADVANCED_DDR_FEATURES ("false"), - .USE_ADVANCED_DDR_FEATURES_FOR_INPUT_ONLY ("false"), - .ENABLE_OE_HALF_CYCLE_DELAY ("true"), - .INVERT_CLKDIV_INPUT_CLOCK ("false"), - .ENABLE_PHASE_INVERT_CTRL_PORT ("false"), - .ENABLE_HR_CLOCK ("false"), - .INVERT_OUTPUT_CLOCK ("false"), - .INVERT_OE_INCLOCK ("false"), - .ENABLE_PHASE_DETECTOR_FOR_CK ("false") - ) intel_gpio_ddro_inst ( - .outclock (outclock), // outclock.export - .din (din), // din.export - .pad_out (pad_out), // pad_out.export - .outclocken (1'b1), // (terminated) - .inclock (1'b0), // (terminated) - .inclocken (1'b0), // (terminated) - .fr_clock (), // (terminated) - .hr_clock (), // (terminated) - .invert_hr_clock (1'b0), // (terminated) - .phy_mem_clock (1'b0), // (terminated) - .mimic_clock (), // (terminated) - .dout (), // (terminated) - .pad_io (), // (terminated) - .pad_io_b (), // (terminated) - .pad_in (1'b0), // (terminated) - .pad_in_b (1'b0), // (terminated) - .pad_out_b (), // (terminated) - .aset (1'b0), // (terminated) - .aclr (1'b0), // (terminated) - .sclr (1'b0), // (terminated) - .nsleep (1'b0), // (terminated) - .oe (1'b0) // (terminated) - ); - -endmodule -// Retrieval info: -// -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// Retrieval info: -// IPFS_FILES : intel_gpio_ddro.vo -// RELATED_FILES: intel_gpio_ddro.v, altera_gpio_lite.sv diff --git a/fw/rtl/intel/gpio/intel_gpio_ddro/altera_gpio_lite.sv b/fw/rtl/intel/gpio/intel_gpio_ddro/altera_gpio_lite.sv deleted file mode 100644 index 4c06935..0000000 --- a/fw/rtl/intel/gpio/intel_gpio_ddro/altera_gpio_lite.sv +++ /dev/null @@ -1,1200 +0,0 @@ -// (C) 2001-2021 Intel Corporation. All rights reserved. -// Your use of Intel Corporation's design tools, logic functions and other -// software and tools, and its AMPP partner logic functions, and any output -// files from any of the foregoing (including device programming or simulation -// files), and any associated documentation or information are expressly subject -// to the terms and conditions of the Intel Program License Subscription -// Agreement, Intel FPGA IP License Agreement, or other applicable -// license agreement, including, without limitation, that your use is for the -// sole purpose of programming logic devices manufactured by Intel and sold by -// Intel or its authorized distributors. Please refer to the applicable -// agreement for further details. - - -`timescale 1 ps / 1 ps - -module altgpio_one_bit( - inclock, - outclock, - phy_mem_clock, - inclocken, - outclocken, - oe, - din, - dout, - pad, - pad_b, - aset, - sclr, - hr_clock, - fr_clock, - mimic_clock, - nsleep -); - - parameter PIN_TYPE = "output"; - parameter BUFFER_TYPE = "single-ended"; - parameter REGISTER_MODE = "bypass"; - parameter ASYNC_MODE = "none"; - parameter SYNC_MODE = "none"; - parameter BUS_HOLD = "false"; - parameter SET_REGISTER_OUTPUTS_HIGH = "false"; - parameter USE_ENHANCED_DDR_HIO_REGISTER = "false"; - parameter BYPASS_THREE_QUARTER_REGISTER = "true"; - parameter INVERT_OUTPUT = "false"; - parameter INVERT_INPUT_CLOCK = "false"; - parameter INVERT_OUTPUT_CLOCK = "false"; - parameter INVERT_OE_INCLOCK = "false"; - parameter USE_ONE_REG_TO_DRIVE_OE = "false"; - parameter USE_DDIO_REG_TO_DRIVE_OE = "false"; - parameter OPEN_DRAIN_OUTPUT = "false"; - parameter ENABLE_OE_HALF_CYCLE_DELAY = "true"; - parameter USE_ADVANCED_DDR_FEATURES_FOR_INPUT_ONLY = "false"; - parameter ENABLE_CLOCK_ENA_PORT = "false"; - parameter ENABLE_HR_CLOCK = "false"; - parameter ENABLE_PHASE_DETECTOR_FOR_CK = "false"; - parameter ENABLE_NSLEEP_PORT = "false"; - - localparam DATA_SIZE = (REGISTER_MODE == "ddr") ? 2:1; - localparam DDIO_REG_POWER_UP = (ASYNC_MODE == "preset" || SET_REGISTER_OUTPUTS_HIGH == "true") ? "high" : "low"; - - input inclock; - input outclock; - input inclocken; - input outclocken; - input oe; - input nsleep; - input [DATA_SIZE - 1:0] din; - output [DATA_SIZE - 1:0] dout; - inout pad; - inout pad_b; - input aset; - input sclr; - input phy_mem_clock; - input hr_clock; - (* altera_attribute = "-name GLOBAL_SIGNAL\"OFF\"" *) output fr_clock; - output mimic_clock; - - wire din_ddr; - wire buf_in; - - wire oe_out; - wire nsleep_in; - - generate - if (PIN_TYPE == "output" || PIN_TYPE == "bidir") - begin - wire [1:0] din_fr; - if (INVERT_OUTPUT == "false") - begin - assign din_fr = din; - end - else - begin - assign din_fr = ~din; - end - - wire outclock_wire; - if (REGISTER_MODE != "bypass") - begin - if (INVERT_OUTPUT_CLOCK == "false") - begin: normal_input_clock - assign outclock_wire = outclock; - end - else - begin: inverted_output_clock - assign outclock_wire = ~outclock; - end - end - - wire outclocken_wire; - assign outclocken_wire = (ENABLE_CLOCK_ENA_PORT == "true") ? outclocken : 1'b1; - - if (REGISTER_MODE == "ddr" && USE_ENHANCED_DDR_HIO_REGISTER == "true") - begin - if (ASYNC_MODE != "none") - begin: async_mode_out_path_enhanced_ddr - fiftyfivenm_ddio_out - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .use_enhanced_ddr_hio(USE_ENHANCED_DDR_HIO_REGISTER), - .bypass_three_quarter_register(BYPASS_THREE_QUARTER_REGISTER), - .power_up(DDIO_REG_POWER_UP), - .use_new_clocking_model("true") - ) fr_out_data_ddio ( - .datainhi(din_fr[0]), - .datainlo(din_fr[1]), - .dataout(din_ddr), - .clkhi(outclock_wire), - .clklo(outclock_wire), - .muxsel(outclock_wire), - .areset(aset), - .ena(outclocken_wire), - .phymemclock(phy_mem_clock) - `ifndef ALTERA_RESERVED_QIS - , - .clk (outclock_wire), - .sreset(1'b0), - .dfflo(), - .dffhi(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - else if (SYNC_MODE != "none") - begin: sync_mode_out_path_enhanced_ddr - fiftyfivenm_ddio_out - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .use_enhanced_ddr_hio(USE_ENHANCED_DDR_HIO_REGISTER), - .bypass_three_quarter_register(BYPASS_THREE_QUARTER_REGISTER), - .power_up(DDIO_REG_POWER_UP), - .use_new_clocking_model("true") - ) fr_out_data_ddio ( - .datainhi(din_fr[0]), - .datainlo(din_fr[1]), - .dataout(din_ddr), - .clkhi(outclock_wire), - .clklo(outclock_wire), - .muxsel(outclock_wire), - .sreset(sclr), - .ena(outclocken_wire), - .phymemclock(phy_mem_clock) - `ifndef ALTERA_RESERVED_QIS - , - .clk (outclock_wire), - .areset(1'b0), - .dfflo(), - .dffhi(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - else - begin: out_path_enhanced_ddr - fiftyfivenm_ddio_out - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .use_enhanced_ddr_hio(USE_ENHANCED_DDR_HIO_REGISTER), - .bypass_three_quarter_register(BYPASS_THREE_QUARTER_REGISTER), - .power_up(DDIO_REG_POWER_UP), - .use_new_clocking_model("true") - ) fr_out_data_ddio ( - .datainhi(din_fr[0]), - .datainlo(din_fr[1]), - .dataout(din_ddr), - .clkhi(outclock_wire), - .clklo(outclock_wire), - .muxsel(outclock_wire), - .ena(outclocken_wire), - .phymemclock(phy_mem_clock) - `ifndef ALTERA_RESERVED_QIS - , - .areset(1'b0), - .clk(1'b0), - .sreset(1'b0), - .dfflo(), - .dffhi(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - end - else if (REGISTER_MODE == "ddr" && USE_ENHANCED_DDR_HIO_REGISTER == "false") - begin - if (ASYNC_MODE != "none") - begin: async_mode_out_path_ddr - fiftyfivenm_ddio_out - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .power_up(DDIO_REG_POWER_UP), - .use_new_clocking_model("true"), - .bypass_three_quarter_register(BYPASS_THREE_QUARTER_REGISTER) - ) fr_out_data_ddio ( - .datainhi(din_fr[0]), - .datainlo(din_fr[1]), - .dataout(din_ddr), - .clkhi(outclock_wire), - .clklo(outclock_wire), - .muxsel(outclock_wire), - .areset(aset), - .ena(outclocken_wire) - `ifndef ALTERA_RESERVED_QIS - , - .clk(1'b0), - .phymemclock(1'b0), - .sreset(1'b0), - .dfflo(), - .dffhi(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - else if (SYNC_MODE != "none") - begin: sync_mode_out_path_ddr - fiftyfivenm_ddio_out - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .power_up(DDIO_REG_POWER_UP), - .use_new_clocking_model("true"), - .bypass_three_quarter_register(BYPASS_THREE_QUARTER_REGISTER) - ) fr_out_data_ddio ( - .datainhi(din_fr[0]), - .datainlo(din_fr[1]), - .dataout(din_ddr), - .clkhi(outclock_wire), - .clklo(outclock_wire), - .muxsel(outclock_wire), - .sreset(sclr), - .ena(outclocken_wire) - `ifndef ALTERA_RESERVED_QIS - , - .areset(1'b0), - .clk(1'b0), - .phymemclock(1'b0), - .dfflo(), - .dffhi(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - else - begin: out_path_ddr - fiftyfivenm_ddio_out - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .power_up(DDIO_REG_POWER_UP), - .use_new_clocking_model("true"), - .bypass_three_quarter_register(BYPASS_THREE_QUARTER_REGISTER) - ) fr_out_data_ddio ( - .datainhi(din_fr[0]), - .datainlo(din_fr[1]), - .dataout(din_ddr), - .clkhi(outclock_wire), - .clklo(outclock_wire), - .muxsel(outclock_wire), - .ena(outclocken_wire) - `ifndef ALTERA_RESERVED_QIS - , - .areset(1'b0), - .clk(1'b0), - .phymemclock(1'b0), - .sreset(1'b0), - .dfflo(), - .dffhi(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - end - else if (REGISTER_MODE == "single-register") - begin: out_path_sdr - reg reg_data_out /* synthesis altera_attribute="FAST_OUTPUT_REGISTER=on" */; - always @(posedge outclock_wire) - reg_data_out <= din_fr[0]; - - assign din_ddr = reg_data_out; - end - else - begin: out_path_reg_none - assign din_ddr = din_fr[0]; - end - end - endgenerate - - generate - - if (PIN_TYPE == "bidir" || PIN_TYPE == "output") - begin - wire oe_inclk_wire; - if (USE_ONE_REG_TO_DRIVE_OE == "true" || USE_DDIO_REG_TO_DRIVE_OE == "true") - begin - if (INVERT_OE_INCLOCK == "false") - begin: normal_oe_inclock - assign oe_inclk_wire = outclock; - end - else - begin: inverted_oe_inclock - assign oe_inclk_wire = ~outclock; - end - end - - wire oe_outclocken_wire; - assign oe_outclocken_wire = (ENABLE_CLOCK_ENA_PORT == "true") ? outclocken : 1'b1; - - if (USE_DDIO_REG_TO_DRIVE_OE == "true") - begin - if (REGISTER_MODE == "ddr" && USE_ENHANCED_DDR_HIO_REGISTER == "true") - begin - if (ASYNC_MODE != "none") - begin: async_mode_oe_path_enhanced_ddr - fiftyfivenm_ddio_oe - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .use_enhanced_ddr_hio(USE_ENHANCED_DDR_HIO_REGISTER), - .bypass_three_quarter_register(BYPASS_THREE_QUARTER_REGISTER), - .enable_half_cycle_delay(ENABLE_OE_HALF_CYCLE_DELAY), - .power_up(DDIO_REG_POWER_UP) - ) fr_oe_data_ddio ( - .oe(~oe), - .dataout(oe_out), - .clk(oe_inclk_wire), - .areset(aset), - .ena(oe_outclocken_wire), - .phymemclock(phy_mem_clock) - `ifndef ALTERA_RESERVED_QIS - , - .sreset(1'b0), - .dfflo(), - .dffhi(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - else if (SYNC_MODE != "none") - begin: sync_mode_oe_path_enhanced_ddr - fiftyfivenm_ddio_oe - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .use_enhanced_ddr_hio(USE_ENHANCED_DDR_HIO_REGISTER), - .bypass_three_quarter_register(BYPASS_THREE_QUARTER_REGISTER), - .enable_half_cycle_delay(ENABLE_OE_HALF_CYCLE_DELAY), - .power_up(DDIO_REG_POWER_UP) - ) fr_oe_data_ddio ( - .oe(~oe), - .dataout(oe_out), - .clk(oe_inclk_wire), - .sreset(sclr), - .ena(oe_outclocken_wire), - .phymemclock(phy_mem_clock) - `ifndef ALTERA_RESERVED_QIS - , - .areset(1'b0), - .dfflo(), - .dffhi(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - else - begin: oe_path_enhanced_ddr - fiftyfivenm_ddio_oe - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .use_enhanced_ddr_hio(USE_ENHANCED_DDR_HIO_REGISTER), - .bypass_three_quarter_register(BYPASS_THREE_QUARTER_REGISTER), - .enable_half_cycle_delay(ENABLE_OE_HALF_CYCLE_DELAY), - .power_up(DDIO_REG_POWER_UP) - ) fr_oe_data_ddio ( - .oe(~oe), - .dataout(oe_out), - .clk(oe_inclk_wire), - .ena(oe_outclocken_wire), - .phymemclock(phy_mem_clock) - `ifndef ALTERA_RESERVED_QIS - , - .areset(1'b0), - .sreset(1'b0), - .dfflo(), - .dffhi(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - end - else if (REGISTER_MODE == "ddr" && USE_ENHANCED_DDR_HIO_REGISTER == "false") - begin - if (ASYNC_MODE != "none") - begin: async_mode_oe_path_ddr - fiftyfivenm_ddio_oe - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .enable_half_cycle_delay(ENABLE_OE_HALF_CYCLE_DELAY), - .power_up(DDIO_REG_POWER_UP), - .bypass_three_quarter_register(BYPASS_THREE_QUARTER_REGISTER) - ) fr_oe_data_ddio ( - .oe(~oe), - .dataout(oe_out), - .clk(oe_inclk_wire), - .areset(aset), - .ena(oe_outclocken_wire) - `ifndef ALTERA_RESERVED_QIS - , - .phymemclock(1'b0), - .sreset(1'b0), - .dfflo(), - .dffhi(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - else if (SYNC_MODE != "none") - begin: sync_mode_oe_path_ddr - fiftyfivenm_ddio_oe - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .enable_half_cycle_delay(ENABLE_OE_HALF_CYCLE_DELAY), - .power_up(DDIO_REG_POWER_UP), - .bypass_three_quarter_register(BYPASS_THREE_QUARTER_REGISTER) - ) fr_oe_data_ddio ( - .oe(~oe), - .dataout(oe_out), - .clk(oe_inclk_wire), - .sreset(sclr), - .ena(oe_outclocken_wire) - `ifndef ALTERA_RESERVED_QIS - , - .areset(1'b0), - .phymemclock(1'b0), - .dfflo(), - .dffhi(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - else - begin: oe_path_ddr - fiftyfivenm_ddio_oe - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .enable_half_cycle_delay(ENABLE_OE_HALF_CYCLE_DELAY), - .power_up(DDIO_REG_POWER_UP), - .bypass_three_quarter_register(BYPASS_THREE_QUARTER_REGISTER) - ) fr_oe_data_ddio ( - .oe(~oe), - .dataout(oe_out), - .clk(oe_inclk_wire), - .ena(oe_outclocken_wire) - `ifndef ALTERA_RESERVED_QIS - , - .areset(1'b0), - .phymemclock(1'b0), - .sreset(1'b0), - .dfflo(), - .dffhi(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - end - end - else if (USE_ONE_REG_TO_DRIVE_OE == "true") - begin: oe_path_sdr - fiftyfivenm_ff oe_reg ( - .clk(oe_inclk_wire), - .d(~oe), - .clrn(1'b1), - .ena(1'b1), - .q(oe_out) - ); - end - else if (USE_ONE_REG_TO_DRIVE_OE == "false" && USE_DDIO_REG_TO_DRIVE_OE == "false") - begin: oe_path_reg_none - assign oe_out = ~oe; - end - end - endgenerate - - generate - if (PIN_TYPE == "input" || PIN_TYPE == "bidir") - begin - wire [1:0] ddr_input; - wire inclock_wire; - - if (REGISTER_MODE != "bypass") - begin - if (INVERT_INPUT_CLOCK == "false") - begin: normal_input_clock - assign inclock_wire = inclock; - end - else - begin: inverted_input_clock - assign inclock_wire = ~inclock; - end - end - - wire inclocken_wire; - assign inclocken_wire = (ENABLE_CLOCK_ENA_PORT == "true") ? inclocken : 1'b1; - - if (REGISTER_MODE == "ddr") - begin - if (USE_ENHANCED_DDR_HIO_REGISTER == "true" || USE_ADVANCED_DDR_FEATURES_FOR_INPUT_ONLY == "true") - begin - if (ENABLE_HR_CLOCK == "true") - begin - if (ASYNC_MODE != "none") - begin: async_mode_in_path_enhanced_ddr_with_halfrateresyncclk - fiftyfivenm_ddio_in - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .power_up(DDIO_REG_POWER_UP), - .invert_input_clock(INVERT_INPUT_CLOCK) - ) fr_in_ddio ( - .datain(buf_in), - .clk(inclock_wire), - .ena(inclocken_wire), - .halfrateresyncclk(hr_clock), - .regouthi(ddr_input[1]), - .regoutlo(ddr_input[0]), - .clkout(fr_clock), - .areset(aset) - `ifndef ALTERA_RESERVED_QIS - , - .sreset(1'b0), - .dfflo(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - else if (SYNC_MODE != "none") - begin:sync_mode_in_path_enhanced_ddr_with_halfrateresyncclk - fiftyfivenm_ddio_in - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .power_up(DDIO_REG_POWER_UP), - .invert_input_clock(INVERT_INPUT_CLOCK) - ) fr_in_ddio ( - .datain(buf_in), - .clk (inclock_wire), - .ena(inclocken_wire), - .sreset(sclr), - .halfrateresyncclk(hr_clock), - .regouthi(ddr_input[1]), - .regoutlo(ddr_input[0]), - .clkout(fr_clock) - `ifndef ALTERA_RESERVED_QIS - , - .areset(1'b0), - .dfflo(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - else - begin:in_path_enhanced_ddr_with_halfrateresyncclk - fiftyfivenm_ddio_in - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .power_up(DDIO_REG_POWER_UP), - .invert_input_clock(INVERT_INPUT_CLOCK) - ) fr_in_ddio ( - .datain(buf_in), - .clk (inclock_wire), - .ena(inclocken_wire), - .halfrateresyncclk(hr_clock), - .regouthi(ddr_input[1]), - .regoutlo(ddr_input[0]), - .clkout(fr_clock) - `ifndef ALTERA_RESERVED_QIS - , - .sreset(1'b0), - .areset(1'b0), - .dfflo(), - .devpor(1'b1), - .devclrn(1'b1) - `endif - ); - end - end - else - begin - if (ASYNC_MODE != "none") - begin: async_mode_in_path_enhanced_ddr - fiftyfivenm_ddio_in - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .power_up(DDIO_REG_POWER_UP), - .invert_input_clock(INVERT_INPUT_CLOCK) - ) fr_in_ddio ( - .datain(buf_in), - .clk(inclock_wire), - .ena(inclocken_wire), - .regouthi(ddr_input[1]), - .regoutlo(ddr_input[0]), - .clkout(fr_clock), - .areset(aset) - `ifndef ALTERA_RESERVED_QIS - , - .sreset(1'b0), - .dfflo(), - .devpor(1'b1), - .devclrn(1'b1), - .halfrateresyncclk(1'b0) - `endif - ); - end - else if (SYNC_MODE != "none") - begin:sync_mode_in_path_enhanced_ddr - fiftyfivenm_ddio_in - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .power_up(DDIO_REG_POWER_UP), - .invert_input_clock(INVERT_INPUT_CLOCK) - ) fr_in_ddio ( - .datain(buf_in), - .clk (inclock_wire), - .ena(inclocken_wire), - .sreset(sclr), - .regouthi(ddr_input[1]), - .regoutlo(ddr_input[0]), - .clkout(fr_clock) - `ifndef ALTERA_RESERVED_QIS - , - .areset(1'b0), - .dfflo(), - .devpor(1'b1), - .devclrn(1'b1), - .halfrateresyncclk(1'b0) - `endif - ); - end - else - begin:in_path_enhanced_ddr - fiftyfivenm_ddio_in - #( - .async_mode(ASYNC_MODE), - .sync_mode(SYNC_MODE), - .power_up(DDIO_REG_POWER_UP), - .invert_input_clock(INVERT_INPUT_CLOCK) - ) fr_in_ddio ( - .datain(buf_in), - .clk (inclock_wire), - .ena(inclocken_wire), - .regouthi(ddr_input[1]), - .regoutlo(ddr_input[0]), - .clkout(fr_clock) - `ifndef ALTERA_RESERVED_QIS - , - .sreset(1'b0), - .areset(1'b0), - .dfflo(), - .devpor(1'b1), - .devclrn(1'b1), - .halfrateresyncclk(1'b0) - `endif - ); - end - end - end - else if (ENABLE_PHASE_DETECTOR_FOR_CK == "true") - begin - assign mimic_clock = buf_in; - end - else - begin: in_path_ddr - wire input_cell_l_q; - wire input_aset; - - assign input_aset = ( ASYNC_MODE == "clear") ? !aset : aset; - - fiftyfivenm_ff input_cell_l ( - .clk(inclock_wire), - .d(buf_in), - .clrn(input_aset), - .ena(inclocken_wire), - .q(input_cell_l_q) - ); - - fiftyfivenm_ff input_latch_l ( - .clk(~inclock_wire), - .d(input_cell_l_q), - .clrn(input_aset), - .ena(inclocken_wire), - .q(ddr_input[0]) - ); - - fiftyfivenm_ff input_cell_h ( - .clk(~inclock_wire), - .d(buf_in), - .clrn(input_aset), - .ena(inclocken_wire), - .q(ddr_input[1]) - ); - - end - end - else if (REGISTER_MODE == "single-register") - begin: in_path_sdr - reg reg_data_in /* synthesis altera_attribute="FAST_INPUT_REGISTER=on" */; - always @(posedge inclock_wire) begin - reg_data_in <= buf_in; - end - assign ddr_input[0] = reg_data_in; - end - else - begin: in_path_reg_none - assign ddr_input[0] = buf_in; - end - - assign dout[DATA_SIZE - 1:0] = ddr_input[DATA_SIZE - 1:0]; - - end - endgenerate - - generate - if (PIN_TYPE == "output" || PIN_TYPE == "bidir") - begin - if(BUFFER_TYPE == "pseudo_differential") - begin: pseudo_diff_output_buf - - wire wire_pseudo_diff_o; - wire wire_pseudo_diff_o_bar; - - fiftyfivenm_io_obuf - #( - .bus_hold(BUS_HOLD), - .open_drain_output(OPEN_DRAIN_OUTPUT) - ) obuf_a ( - .i(wire_pseudo_diff_o), - .oe(~oe_out), - .o(pad), - .obar() - `ifndef ALTERA_RESERVED_QIS - , - .seriesterminationcontrol(16'b0), - .devoe(1'b1) - `endif - ); - - fiftyfivenm_io_obuf - #( - .bus_hold(BUS_HOLD), - .open_drain_output(OPEN_DRAIN_OUTPUT) - ) obuf_a_bar ( - .i(wire_pseudo_diff_o_bar), - .oe(~oe_out), - .o(pad_b), - .obar() - `ifndef ALTERA_RESERVED_QIS - , - .seriesterminationcontrol(16'b0), - .devoe(1'b1) - `endif - ); - - fiftyfivenm_pseudo_diff_out pseudo_diff_a - ( - .i(din_ddr), - .o(wire_pseudo_diff_o), - .obar(wire_pseudo_diff_o_bar) - ); - - - - end - else if (BUFFER_TYPE == "true_differential") - begin: true_diff_output_buf - fiftyfivenm_io_obuf - #( - .bus_hold(BUS_HOLD), - .open_drain_output(OPEN_DRAIN_OUTPUT) - ) obuf ( - .i(din_ddr), - .oe(~oe_out), - .o(pad), - .obar(pad_b) - `ifndef ALTERA_RESERVED_QIS - , - .seriesterminationcontrol(16'b0), - .devoe(1'b1) - `endif - ); - end - else - begin: output_buf - fiftyfivenm_io_obuf - #( - .bus_hold(BUS_HOLD), - .open_drain_output(OPEN_DRAIN_OUTPUT) - ) obuf ( - .i(din_ddr), - .oe(~oe_out), - .o(pad), - .obar() - `ifndef ALTERA_RESERVED_QIS - , - .seriesterminationcontrol(16'b0), - .devoe(1'b1) - `endif - ); - end - end - endgenerate - - assign nsleep_in = (ENABLE_NSLEEP_PORT == "true") ? nsleep : 1'b1; - - generate - if (PIN_TYPE == "input" || PIN_TYPE == "bidir") - begin - if(BUFFER_TYPE == "true_differential" || BUFFER_TYPE == "pseudo_differential") - begin: diff_input_buf - if (ENABLE_NSLEEP_PORT == "true") - begin: diff_input_buf_with_nsleep - fiftyfivenm_io_ibuf - #( - .bus_hold(BUS_HOLD) - ) ibuf ( - .i(pad), - .ibar(pad_b), - .o(buf_in), - .nsleep(nsleep_in) - ); - end - else - begin: diff_input_buf_without_nsleep - fiftyfivenm_io_ibuf - #( - .bus_hold(BUS_HOLD) - ) ibuf ( - .i(pad), - .ibar(pad_b), - .o(buf_in) - ); - end - end - else - begin:input_buf - if (ENABLE_NSLEEP_PORT == "true") - begin: input_buf_with_nsleep - fiftyfivenm_io_ibuf - #( - .bus_hold(BUS_HOLD) - ) ibuf ( - .i(pad), - .o(buf_in), - .nsleep(nsleep_in) - `ifndef ALTERA_RESERVED_QIS - , - .ibar(1'b0) - `endif - ); - end - else - begin: input_buf_without_nsleep - fiftyfivenm_io_ibuf - #( - .bus_hold(BUS_HOLD) - ) ibuf ( - .i(pad), - .o(buf_in) - `ifndef ALTERA_RESERVED_QIS - , - .ibar(1'b0) - `endif - ); - end - end - end - endgenerate - - generate - if (PIN_TYPE == "output") - begin - assign dout = {DATA_SIZE{1'b0}}; - end - - if (PIN_TYPE == "output" || REGISTER_MODE != "ddr" || USE_ENHANCED_DDR_HIO_REGISTER == "false") - begin - assign fr_clock = 1'b0; - end - - if (PIN_TYPE == "input" || PIN_TYPE == "output" || REGISTER_MODE != "ddr" || ENABLE_PHASE_DETECTOR_FOR_CK == "false") - begin - assign mimic_clock = 1'b0; - end - endgenerate - -endmodule - -module altera_gpio_lite( - inclock, - outclock, - inclocken, - outclocken, - oe, - din, - dout, - pad_io, - pad_io_b, - pad_in, - pad_in_b, - pad_out, - pad_out_b, - aset, - aclr, - phy_mem_clock, - sclr, - hr_clock, - fr_clock, - invert_hr_clock, - mimic_clock, - nsleep -); - - parameter PIN_TYPE = "output"; - parameter BUFFER_TYPE = "single-ended"; - parameter REGISTER_MODE = "bypass"; - parameter SIZE = 4; - parameter ASYNC_MODE = "none"; - parameter SYNC_MODE = "none"; - parameter BUS_HOLD = "false"; - parameter SET_REGISTER_OUTPUTS_HIGH = "false"; - parameter INVERT_OUTPUT = "false"; - parameter INVERT_INPUT_CLOCK = "false"; - parameter INVERT_OUTPUT_CLOCK = "false"; - parameter INVERT_OE_INCLOCK = "false"; - parameter USE_ONE_REG_TO_DRIVE_OE = "false"; - parameter USE_DDIO_REG_TO_DRIVE_OE = "false"; - parameter OPEN_DRAIN_OUTPUT = "false"; - parameter USE_ADVANCED_DDR_FEATURES = "false"; - parameter USE_ADVANCED_DDR_FEATURES_FOR_INPUT_ONLY = "false"; - parameter INVERT_CLKDIV_INPUT_CLOCK = "false"; - parameter ENABLE_HR_CLOCK = "false"; - parameter ENABLE_OE_HALF_CYCLE_DELAY = "true"; - parameter ENABLE_OE_PORT = "false"; - parameter ENABLE_CLOCK_ENA_PORT = "false"; - parameter ENABLE_PHASE_INVERT_CTRL_PORT = "false"; - parameter ENABLE_PHASE_DETECTOR_FOR_CK = "false"; - parameter ENABLE_NSLEEP_PORT = "false"; - - localparam USE_ENHANCED_DDR_HIO_REGISTER = USE_ADVANCED_DDR_FEATURES; - localparam BYPASS_THREE_QUARTER_REGISTER = (USE_ADVANCED_DDR_FEATURES == "true") ? "false" : "true"; - localparam DATA_SIZE = (REGISTER_MODE == "ddr") ? 2 : 1; - - input inclock; - input outclock; - input inclocken; - input outclocken; - input [SIZE - 1:0] oe; - input [SIZE - 1:0] nsleep; - input [SIZE * DATA_SIZE - 1:0] din; - output [SIZE * DATA_SIZE - 1:0] dout; - inout [SIZE - 1:0] pad_io; - inout [SIZE - 1:0] pad_io_b; - input [SIZE - 1:0] pad_in; - input [SIZE - 1:0] pad_in_b; - output [SIZE - 1:0] pad_out; - output [SIZE - 1:0] pad_out_b; - input aset; - input aclr; - input sclr; - input phy_mem_clock; - input invert_hr_clock; - output [SIZE - 1:0] fr_clock; - output wire hr_clock; - output [SIZE - 1:0] mimic_clock; - - wire [SIZE * DATA_SIZE - 1:0] din_reordered; - wire [SIZE * DATA_SIZE - 1:0] dout_reordered; - wire aclr_aset_wire; - wire sclr_wire; - wire [SIZE - 1:0] pad_io; - wire [SIZE - 1:0] pad_io_b; - - - assign aclr_aset_wire = (ASYNC_MODE == "clear") ? aclr : (ASYNC_MODE == "preset") ? aset : 1'b1; - assign sclr_wire = (SYNC_MODE == "clear") ? sclr : 1'b0; - - generate - if (PIN_TYPE == "input") - begin - assign pad_io = pad_in; - assign pad_io_b = pad_in_b; - assign pad_out = {SIZE{1'b0}}; - assign pad_out_b = {SIZE{1'b0}}; - end - else if (PIN_TYPE == "output") - begin - assign pad_out = pad_io; - assign pad_out_b = pad_io_b; - end - else begin - assign pad_out = {SIZE{1'b0}}; - assign pad_out_b = {SIZE{1'b0}}; - end - endgenerate - - genvar j, k; - generate - begin : reorder - for(j = 0; j < SIZE ; j = j + 1) begin : j_loop - for(k = 0; k < DATA_SIZE; k = k + 1) begin : k_d_loop - assign din_reordered[j * DATA_SIZE + k] = din[j + k * SIZE]; - assign dout[j + k * SIZE] = dout_reordered[j * DATA_SIZE + k]; - end - end - end - endgenerate - - genvar i; - generate - begin : gpio_one_bit - for(i = 0 ; i < SIZE ; i = i + 1) begin : i_loop - wire oe_wire; - wire nsleep_wire; - - - assign oe_wire = (PIN_TYPE == "output" && ENABLE_OE_PORT == "false") ? 1'b1 : - (PIN_TYPE == "input") ? 1'b0 : oe[i]; - - - assign nsleep_wire = (PIN_TYPE == "input" && ENABLE_NSLEEP_PORT == "false") ? 1'b1 : - (PIN_TYPE == "output") ? 1'b0 : nsleep[i]; - - altgpio_one_bit #( - .PIN_TYPE(PIN_TYPE), - .BUFFER_TYPE(BUFFER_TYPE), - .REGISTER_MODE(REGISTER_MODE), - .ASYNC_MODE(ASYNC_MODE), - .SYNC_MODE(SYNC_MODE), - .BUS_HOLD(BUS_HOLD), - .SET_REGISTER_OUTPUTS_HIGH(SET_REGISTER_OUTPUTS_HIGH), - .USE_ENHANCED_DDR_HIO_REGISTER(USE_ENHANCED_DDR_HIO_REGISTER), - .USE_ADVANCED_DDR_FEATURES_FOR_INPUT_ONLY(USE_ADVANCED_DDR_FEATURES_FOR_INPUT_ONLY), - .BYPASS_THREE_QUARTER_REGISTER(BYPASS_THREE_QUARTER_REGISTER), - .INVERT_OUTPUT(INVERT_OUTPUT), - .INVERT_INPUT_CLOCK(INVERT_INPUT_CLOCK), - .INVERT_OUTPUT_CLOCK(INVERT_OUTPUT_CLOCK), - .INVERT_OE_INCLOCK(INVERT_OE_INCLOCK), - .USE_ONE_REG_TO_DRIVE_OE(USE_ONE_REG_TO_DRIVE_OE), - .USE_DDIO_REG_TO_DRIVE_OE(USE_DDIO_REG_TO_DRIVE_OE), - .OPEN_DRAIN_OUTPUT(OPEN_DRAIN_OUTPUT), - .ENABLE_OE_HALF_CYCLE_DELAY(ENABLE_OE_HALF_CYCLE_DELAY), - .ENABLE_CLOCK_ENA_PORT(ENABLE_CLOCK_ENA_PORT), - .ENABLE_HR_CLOCK(ENABLE_HR_CLOCK), - .ENABLE_PHASE_DETECTOR_FOR_CK(ENABLE_PHASE_DETECTOR_FOR_CK), - .ENABLE_NSLEEP_PORT(ENABLE_NSLEEP_PORT) - ) altgpio_bit_i ( - .inclock(inclock), - .outclock(outclock), - .phy_mem_clock(phy_mem_clock), - .inclocken(inclocken), - .outclocken(outclocken), - .oe(oe_wire), - .din(din_reordered[(i + 1) * DATA_SIZE - 1 : i * DATA_SIZE]), - .dout(dout_reordered[(i + 1) * DATA_SIZE - 1 : i * DATA_SIZE]), - .pad(pad_io[i]), - .pad_b(pad_io_b[i]), - .aset(aclr_aset_wire), - .sclr(sclr_wire), - .fr_clock(fr_clock[i]), - .hr_clock(hr_clock), - .mimic_clock(mimic_clock[i]), - .nsleep(nsleep_wire) - ); - end - end - endgenerate - - generate - if ((PIN_TYPE == "input" || PIN_TYPE == "bidir") && (ENABLE_HR_CLOCK == "true")) - begin - if (ENABLE_PHASE_INVERT_CTRL_PORT == "true") - begin - if (SYNC_MODE == "clear") - begin : clock_divider_sync_mode_invert_hr_clock - fiftyfivenm_io_clock_divider - #( - .invert_input_clock_phase(INVERT_CLKDIV_INPUT_CLOCK), - .use_phasectrlin(ENABLE_PHASE_INVERT_CTRL_PORT), - .sync_mode(SYNC_MODE) - ) io_clkdiv ( - .clk(inclock), - .phaseinvertctrl(invert_hr_clock), - .sreset(sclr_wire), - .clkout(hr_clock) - ); - end - else - begin : clock_divider_invert_hr_clock - fiftyfivenm_io_clock_divider - #( - .invert_input_clock_phase(INVERT_CLKDIV_INPUT_CLOCK), - .use_phasectrlin(ENABLE_PHASE_INVERT_CTRL_PORT), - .sync_mode(SYNC_MODE) - ) io_clkdiv ( - .clk(inclock), - .phaseinvertctrl(invert_hr_clock), - .clkout(hr_clock) - `ifndef ALTERA_RESERVED_QIS - , - .sreset(1'b0) - `endif - ); - end - end - else - begin - if (SYNC_MODE == "clear") - begin : clock_divider_sync_mode - fiftyfivenm_io_clock_divider - #( - .invert_input_clock_phase(INVERT_CLKDIV_INPUT_CLOCK), - .use_phasectrlin(ENABLE_PHASE_INVERT_CTRL_PORT), - .sync_mode(SYNC_MODE) - ) io_clkdiv ( - .clk(inclock), - .sreset(sclr_wire), - .clkout(hr_clock) - `ifndef ALTERA_RESERVED_QIS - , - .phaseinvertctrl(1'b0) - `endif - ); - end - else - begin : clock_divider - fiftyfivenm_io_clock_divider - #( - .invert_input_clock_phase(INVERT_CLKDIV_INPUT_CLOCK), - .use_phasectrlin(ENABLE_PHASE_INVERT_CTRL_PORT), - .sync_mode(SYNC_MODE) - ) io_clkdiv ( - .clk(inclock), - .clkout(hr_clock) - `ifndef ALTERA_RESERVED_QIS - , - .sreset(1'b0), - .phaseinvertctrl(1'b0) - `endif - ); - end - end - end - else begin - assign hr_clock = 1'b0; - end - endgenerate - -endmodule diff --git a/fw/rtl/intel/pll/intel_pll.ppf b/fw/rtl/intel/pll/intel_pll.ppf deleted file mode 100644 index bf13a5c..0000000 --- a/fw/rtl/intel/pll/intel_pll.ppf +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/fw/rtl/intel/pll/intel_pll.qip b/fw/rtl/intel/pll/intel_pll.qip deleted file mode 100644 index b7fa58d..0000000 --- a/fw/rtl/intel/pll/intel_pll.qip +++ /dev/null @@ -1,5 +0,0 @@ -set_global_assignment -name IP_TOOL_NAME "ALTPLL" -set_global_assignment -name IP_TOOL_VERSION "21.1" -set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{MAX 10}" -set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "intel_pll.v"] -set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "intel_pll.ppf"] diff --git a/fw/rtl/intel/pll/intel_pll.v b/fw/rtl/intel/pll/intel_pll.v deleted file mode 100644 index 64aa37d..0000000 --- a/fw/rtl/intel/pll/intel_pll.v +++ /dev/null @@ -1,340 +0,0 @@ -// megafunction wizard: %ALTPLL% -// GENERATION: STANDARD -// VERSION: WM1.0 -// MODULE: altpll - -// ============================================================ -// File Name: intel_pll.v -// Megafunction Name(s): -// altpll -// -// Simulation Library Files(s): -// -// ============================================================ -// ************************************************************ -// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! -// -// 21.1.0 Build 842 10/21/2021 SJ Lite Edition -// ************************************************************ - - -//Copyright (C) 2021 Intel Corporation. All rights reserved. -//Your use of Intel Corporation's design tools, logic functions -//and other software and tools, and any partner logic -//functions, and any output files from any of the foregoing -//(including device programming or simulation files), and any -//associated documentation or information are expressly subject -//to the terms and conditions of the Intel Program License -//Subscription Agreement, the Intel Quartus Prime License Agreement, -//the Intel FPGA IP License Agreement, or other applicable license -//agreement, including, without limitation, that your use is for -//the sole purpose of programming logic devices manufactured by -//Intel and sold by Intel or its authorized distributors. Please -//refer to the applicable agreement for further details, at -//https://fpgasoftware.intel.com/eula. - - -// synopsys translate_off -`timescale 1 ps / 1 ps -// synopsys translate_on -module intel_pll ( - inclk0, - c0, - c1, - locked); - - input inclk0; - output c0; - output c1; - output locked; - - wire [0:0] sub_wire2 = 1'h0; - wire [4:0] sub_wire3; - wire sub_wire6; - wire sub_wire0 = inclk0; - wire [1:0] sub_wire1 = {sub_wire2, sub_wire0}; - wire [1:1] sub_wire5 = sub_wire3[1:1]; - wire [0:0] sub_wire4 = sub_wire3[0:0]; - wire c0 = sub_wire4; - wire c1 = sub_wire5; - wire locked = sub_wire6; - - altpll altpll_component ( - .inclk (sub_wire1), - .clk (sub_wire3), - .locked (sub_wire6), - .activeclock (), - .areset (1'b0), - .clkbad (), - .clkena ({6{1'b1}}), - .clkloss (), - .clkswitch (1'b0), - .configupdate (1'b0), - .enable0 (), - .enable1 (), - .extclk (), - .extclkena ({4{1'b1}}), - .fbin (1'b1), - .fbmimicbidir (), - .fbout (), - .fref (), - .icdrclk (), - .pfdena (1'b1), - .phasecounterselect ({4{1'b1}}), - .phasedone (), - .phasestep (1'b1), - .phaseupdown (1'b1), - .pllena (1'b1), - .scanaclr (1'b0), - .scanclk (1'b0), - .scanclkena (1'b1), - .scandata (1'b0), - .scandataout (), - .scandone (), - .scanread (1'b0), - .scanwrite (1'b0), - .sclkout0 (), - .sclkout1 (), - .vcooverrange (), - .vcounderrange ()); - defparam - altpll_component.bandwidth_type = "AUTO", - altpll_component.clk0_divide_by = 1, - altpll_component.clk0_duty_cycle = 50, - altpll_component.clk0_multiply_by = 2, - altpll_component.clk0_phase_shift = "0", - altpll_component.clk1_divide_by = 1, - altpll_component.clk1_duty_cycle = 50, - altpll_component.clk1_multiply_by = 2, - altpll_component.clk1_phase_shift = "-1500", - altpll_component.compensate_clock = "CLK0", - altpll_component.inclk0_input_frequency = 20000, - altpll_component.intended_device_family = "MAX 10", - altpll_component.lpm_hint = "CBX_MODULE_PREFIX=intel_pll", - altpll_component.lpm_type = "altpll", - altpll_component.operation_mode = "NORMAL", - altpll_component.pll_type = "AUTO", - altpll_component.port_activeclock = "PORT_UNUSED", - altpll_component.port_areset = "PORT_UNUSED", - altpll_component.port_clkbad0 = "PORT_UNUSED", - altpll_component.port_clkbad1 = "PORT_UNUSED", - altpll_component.port_clkloss = "PORT_UNUSED", - altpll_component.port_clkswitch = "PORT_UNUSED", - altpll_component.port_configupdate = "PORT_UNUSED", - altpll_component.port_fbin = "PORT_UNUSED", - altpll_component.port_inclk0 = "PORT_USED", - altpll_component.port_inclk1 = "PORT_UNUSED", - altpll_component.port_locked = "PORT_USED", - altpll_component.port_pfdena = "PORT_UNUSED", - altpll_component.port_phasecounterselect = "PORT_UNUSED", - altpll_component.port_phasedone = "PORT_UNUSED", - altpll_component.port_phasestep = "PORT_UNUSED", - altpll_component.port_phaseupdown = "PORT_UNUSED", - altpll_component.port_pllena = "PORT_UNUSED", - altpll_component.port_scanaclr = "PORT_UNUSED", - altpll_component.port_scanclk = "PORT_UNUSED", - altpll_component.port_scanclkena = "PORT_UNUSED", - altpll_component.port_scandata = "PORT_UNUSED", - altpll_component.port_scandataout = "PORT_UNUSED", - altpll_component.port_scandone = "PORT_UNUSED", - altpll_component.port_scanread = "PORT_UNUSED", - altpll_component.port_scanwrite = "PORT_UNUSED", - altpll_component.port_clk0 = "PORT_USED", - altpll_component.port_clk1 = "PORT_USED", - altpll_component.port_clk2 = "PORT_UNUSED", - altpll_component.port_clk3 = "PORT_UNUSED", - altpll_component.port_clk4 = "PORT_UNUSED", - altpll_component.port_clk5 = "PORT_UNUSED", - altpll_component.port_clkena0 = "PORT_UNUSED", - altpll_component.port_clkena1 = "PORT_UNUSED", - altpll_component.port_clkena2 = "PORT_UNUSED", - altpll_component.port_clkena3 = "PORT_UNUSED", - altpll_component.port_clkena4 = "PORT_UNUSED", - altpll_component.port_clkena5 = "PORT_UNUSED", - altpll_component.port_extclk0 = "PORT_UNUSED", - altpll_component.port_extclk1 = "PORT_UNUSED", - altpll_component.port_extclk2 = "PORT_UNUSED", - altpll_component.port_extclk3 = "PORT_UNUSED", - altpll_component.self_reset_on_loss_lock = "ON", - altpll_component.width_clock = 5; - - -endmodule - -// ============================================================ -// CNX file retrieval info -// ============================================================ -// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" -// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" -// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" -// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" -// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" -// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" -// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" -// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" -// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" -// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" -// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" -// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" -// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" -// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" -// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" -// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "Any" -// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" -// Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "1" -// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" -// Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" -// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "100.000000" -// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "100.000000" -// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" -// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" -// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" -// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" -// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" -// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" -// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" -// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "50.000" -// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" -// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" -// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" -// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" -// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" -// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "MAX 10" -// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" -// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" -// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" -// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" -// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" -// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" -// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" -// Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" -// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" -// Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" -// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "1" -// Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "1" -// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" -// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "100.00000000" -// Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "100.00000000" -// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" -// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "1" -// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" -// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" -// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" -// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" -// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" -// Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "-54.00000000" -// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" -// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" -// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" -// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" -// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" -// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" -// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" -// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" -// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" -// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" -// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" -// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" -// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" -// Retrieval info: PRIVATE: RECONFIG_FILE STRING "intel_pll.mif" -// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" -// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" -// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "1" -// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" -// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" -// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" -// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" -// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" -// Retrieval info: PRIVATE: SPREAD_USE STRING "0" -// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" -// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" -// Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" -// Retrieval info: PRIVATE: STICKY_CLK2 STRING "0" -// Retrieval info: PRIVATE: STICKY_CLK3 STRING "0" -// Retrieval info: PRIVATE: STICKY_CLK4 STRING "0" -// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" -// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" -// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" -// Retrieval info: PRIVATE: USE_CLK0 STRING "1" -// Retrieval info: PRIVATE: USE_CLK1 STRING "1" -// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" -// Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" -// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" -// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" -// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all -// Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" -// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "1" -// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" -// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "2" -// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" -// Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "1" -// Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" -// Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "2" -// Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "-1500" -// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" -// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "20000" -// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "MAX 10" -// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" -// Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" -// Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" -// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" -// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" -// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" -// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" -// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" -// Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "ON" -// Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" -// Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" -// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" -// Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" -// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" -// Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" -// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 -// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 -// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 -// Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 -// Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_pll.v TRUE -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_pll.ppf TRUE -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_pll.inc FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_pll.cmp FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_pll.bsf FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_pll_inst.v FALSE -// Retrieval info: GEN_FILE: TYPE_NORMAL intel_pll_bb.v FALSE -// Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/fw/rtl/mcu/mcu_spi.sv b/fw/rtl/mcu/mcu_spi.sv new file mode 100644 index 0000000..9cebb5f --- /dev/null +++ b/fw/rtl/mcu/mcu_spi.sv @@ -0,0 +1,92 @@ +module mcu_spi ( + input clk, + input reset, + + output logic frame_start, + output logic data_ready, + output logic [7:0] rx_data, + input [7:0] tx_data, + + input mcu_clk, + input mcu_cs, + input mcu_mosi, + output logic mcu_miso +); + + logic [2:0] mcu_clk_ff; + logic [2:0] mcu_cs_ff; + + always_ff @(posedge clk) begin + mcu_clk_ff <= {mcu_clk_ff[1:0], mcu_clk}; + mcu_cs_ff <= {mcu_cs_ff[1:0], mcu_cs}; + end + + logic mcu_clk_falling; + logic mcu_clk_rising; + logic mcu_cs_falling; + logic mcu_cs_rising; + + always_comb begin + mcu_clk_falling = mcu_clk_ff[2] && !mcu_clk_ff[1]; + mcu_clk_rising = !mcu_clk_ff[2] && mcu_clk_ff[1]; + mcu_cs_falling = mcu_cs_ff[2] && !mcu_cs_ff[1]; + mcu_cs_rising = !mcu_cs_ff[2] && mcu_cs_ff[1]; + end + + logic mcu_dq_in; + logic mcu_dq_out; + logic mcu_miso_out; + + assign mcu_miso = mcu_cs_ff[1] ? 1'bZ : mcu_miso_out; + + always_ff @(posedge clk) begin + mcu_dq_in <= mcu_mosi; + mcu_miso_out <= mcu_dq_out; + end + + logic [7:0] spi_tx_shift; + + assign mcu_dq_out = spi_tx_shift[7]; + + logic spi_enabled; + logic [2:0] spi_bit_counter; + + always_ff @(posedge clk) begin + frame_start <= 1'b0; + data_ready <= 1'b0; + + if (reset) begin + spi_enabled <= 1'b0; + spi_bit_counter <= 3'd0; + end else begin + if (mcu_cs_falling) begin + spi_enabled <= 1'b1; + spi_bit_counter <= 3'd0; + frame_start <= 1'b1; + end + + if (mcu_cs_rising) begin + spi_enabled <= 1'b0; + end + + if (spi_enabled) begin + if (mcu_clk_rising) begin + if (spi_bit_counter == 3'd0) begin + spi_tx_shift <= tx_data; + end else begin + spi_tx_shift <= {spi_tx_shift[6:0], 1'b0}; + end + end + + if (mcu_clk_falling) begin + spi_bit_counter <= spi_bit_counter + 1'd1; + rx_data <= {rx_data[6:0], mcu_dq_in}; + if (spi_bit_counter == 3'd7) begin + data_ready <= 1'b1; + end + end + end + end + end + +endmodule diff --git a/fw/rtl/mcu/mcu_top.sv b/fw/rtl/mcu/mcu_top.sv new file mode 100644 index 0000000..76e9996 --- /dev/null +++ b/fw/rtl/mcu/mcu_top.sv @@ -0,0 +1,901 @@ +module mcu_top ( + input clk, + input reset, + + n64_scb.controller n64_scb, + dd_scb.controller dd_scb, + usb_scb.controller usb_scb, + dma_scb.controller usb_dma_scb, + sd_scb.controller sd_scb, + dma_scb.controller sd_dma_scb, + flash_scb.controller flash_scb, + vendor_scb.controller vendor_scb, + + fifo_bus.controller fifo_bus, + mem_bus.controller mem_bus, + + input sd_det, + input button, + + output logic mcu_int, + input mcu_clk, + input mcu_cs, + input mcu_mosi, + output mcu_miso +); + + // Button input synchronization + + logic [2:0] sd_det_ff; + logic [2:0] button_ff; + + always_ff @(posedge clk) begin + sd_det_ff <= {sd_det_ff[1:0], sd_det}; + button_ff <= {button_ff[1:0], button}; + end + + + // MCU <-> FPGA transport + + logic frame_start; + logic data_ready; + logic [7:0] rdata; + logic [7:0] wdata; + + mcu_spi mcu_spi_inst ( + .clk(clk), + .reset(reset), + + .frame_start(frame_start), + .data_ready(data_ready), + .rx_data(rdata), + .tx_data(wdata), + + .mcu_clk(mcu_clk), + .mcu_cs(mcu_cs), + .mcu_mosi(mcu_mosi), + .mcu_miso(mcu_miso) + ); + + + // Protocol controller + + const bit [7:0] FPGA_ID = 8'h64; + + typedef enum bit [1:0] { + PHASE_CMD, + PHASE_ADDRESS, + PHASE_DATA, + PHASE_NOP + } phase_e; + + typedef enum bit [7:0] { + CMD_IDENTIFY, + CMD_REG_READ, + CMD_REG_WRITE, + CMD_MEM_READ, + CMD_MEM_WRITE, + CMD_USB_STATUS, + CMD_USB_READ, + CMD_USB_WRITE + } cmd_e; + + phase_e phase; + cmd_e cmd; + + logic [1:0] counter; + logic [7:0] address; + + logic reg_read; + logic reg_write; + logic [31:0] reg_rdata; + logic [31:0] reg_wdata; + + logic mem_read; + logic mem_write; + logic [15:0] mem_rdata; + logic [15:0] mem_wdata; + logic mem_word_select; + + always_ff @(posedge clk) begin + fifo_bus.rx_read <= 1'b0; + fifo_bus.tx_write <= 1'b0; + + reg_read <= 1'b0; + reg_write <= 1'b0; + + mem_read <= 1'b0; + mem_write <= 1'b0; + + if (reset) begin + end else begin + if (frame_start) begin + counter <= 2'd0; + phase <= PHASE_CMD; + end + + if (reg_read || reg_write || (mem_word_select && (mem_read || mem_write))) begin + address <= address + 1'd1; + end + + if (data_ready) begin + case (phase) + PHASE_CMD: begin + cmd <= cmd_e'(rdata); + phase <= PHASE_ADDRESS; + + if (rdata == CMD_USB_STATUS) begin + phase <= PHASE_NOP; + end + + if (rdata == CMD_USB_READ) begin + fifo_bus.rx_read <= 1'b1; + phase <= PHASE_DATA; + end + + if (rdata == CMD_USB_WRITE) begin + phase <= PHASE_DATA; + end + end + + PHASE_ADDRESS: begin + address <= rdata; + phase <= PHASE_DATA; + + if (cmd == CMD_REG_READ) begin + reg_read <= 1'b1; + end + + if (cmd == CMD_MEM_READ) begin + mem_read <= 1'b1; + mem_word_select <= 1'b0; + end + end + + PHASE_DATA: begin + counter <= counter + 1'd1; + + if (cmd == CMD_REG_READ) begin + if (counter == 2'd3) begin + reg_read <= 1'd1; + end + end + + if (cmd == CMD_REG_WRITE) begin + case (counter) + 2'd0: reg_wdata[7:0] <= rdata; + 2'd1: reg_wdata[15:8] <= rdata; + 2'd2: reg_wdata[23:16] <= rdata; + 2'd3: reg_wdata[31:24] <= rdata; + endcase + if (counter == 2'd3) begin + reg_write <= 1'd1; + end + end + + if (cmd == CMD_MEM_READ) begin + if (counter[0]) begin + mem_read <= 1'b1; + mem_word_select <= ~mem_word_select; + end + end + + if (cmd == CMD_MEM_WRITE) begin + case (counter[0]) + 1'd0: mem_wdata[15:8] <= rdata; + 1'd1: mem_wdata[7:0] <= rdata; + endcase + if (counter[0]) begin + mem_write <= 1'b1; + mem_word_select <= counter[1]; + end + end + + if (cmd == CMD_USB_READ) begin + phase <= PHASE_NOP; + end + + if (cmd == CMD_USB_WRITE) begin + fifo_bus.tx_write <= 1'b1; + fifo_bus.tx_wdata <= rdata; + phase <= PHASE_NOP; + end + end + + PHASE_NOP: begin end + endcase + end + end + end + + always_comb begin + wdata = 8'h00; + + case (cmd) + CMD_IDENTIFY: begin + wdata = FPGA_ID; + end + + CMD_REG_READ: begin + case (counter) + 2'd0: wdata = reg_rdata[7:0]; + 2'd1: wdata = reg_rdata[15:8]; + 2'd2: wdata = reg_rdata[23:16]; + 2'd3: wdata = reg_rdata[31:24]; + endcase + end + + CMD_REG_WRITE: begin + wdata = 8'h00; + end + + CMD_MEM_READ: begin + case (counter[0]) + 1'd0: wdata = mem_rdata[15:8]; + 1'd1: wdata = mem_rdata[7:0]; + endcase + end + + CMD_MEM_WRITE: begin + wdata = 8'h00; + end + + CMD_USB_STATUS: begin + wdata = {6'd0, ~fifo_bus.tx_full, ~fifo_bus.rx_empty}; + end + + CMD_USB_READ: begin + wdata = fifo_bus.rx_rdata; + end + + CMD_USB_WRITE: begin + wdata = 8'h00; + end + endcase + end + + + // Mem bus controller + + logic [15:0] mem_buffer [0:511]; + + logic mem_start; + logic mem_stop; + logic mem_direction; + logic [8:0] mem_length; + logic [31:0] mem_address; + + logic mem_busy; + logic mem_stop_pending; + logic [8:0] mem_counter; + + always_ff @(posedge clk) begin + if (reset) begin + mem_busy <= 1'b0; + mem_stop_pending <= 1'b0; + mem_bus.request <= 1'b0; + end else begin + if (mem_read) begin + mem_rdata <= mem_buffer[{address, mem_word_select}]; + end + + if (mem_write) begin + mem_buffer[{address, mem_word_select}] <= mem_wdata; + end + + if (mem_stop) begin + mem_stop_pending <= mem_busy; + end else if (mem_start && !mem_busy) begin + mem_bus.write <= mem_direction; + mem_bus.address <= mem_address; + mem_busy <= 1'b1; + mem_counter <= 9'd0; + end + + if (mem_busy) begin + if (!mem_bus.request) begin + mem_bus.request <= 1'b1; + mem_bus.wdata <= mem_buffer[mem_counter]; + end + + if (mem_bus.ack) begin + mem_bus.request <= 1'b0; + mem_bus.address <= mem_bus.address + 2'd2; + mem_counter <= mem_counter + 1'd1; + if (!mem_bus.write) begin + mem_buffer[mem_counter] <= mem_bus.rdata; + end + if ((mem_counter == mem_length) || mem_stop_pending) begin + mem_busy <= 1'b0; + mem_stop_pending <= 1'b0; + end + end + end + end + end + + always_comb begin + mem_bus.wmask = 2'b11; + end + + + // Register list + + typedef enum bit [7:0] { + REG_MEM_ADDRESS, + REG_MEM_SCR, + REG_USB_SCR, + REG_USB_DMA_ADDRESS, + REG_USB_DMA_LENGTH, + REG_USB_DMA_SCR, + REG_CFG_SCR, + REG_CFG_DATA_0, + REG_CFG_DATA_1, + REG_CFG_CMD, + REG_CFG_VERSION, + REG_FLASHRAM_SCR, + REG_FLASH_SCR, + REG_RTC_SCR, + REG_RTC_TIME_0, + REG_RTC_TIME_1, + REG_SD_SCR, + REG_SD_ARG, + REG_SD_CMD, + REG_SD_RSP_0, + REG_SD_RSP_1, + REG_SD_RSP_2, + REG_SD_RSP_3, + REG_SD_DAT, + REG_SD_DMA_ADDRESS, + REG_SD_DMA_LENGTH, + REG_SD_DMA_SCR, + REG_DD_SCR, + REG_DD_CMD_DATA, + REG_DD_HEAD_TRACK, + REG_DD_SECTOR_INFO, + REG_DD_DRIVE_ID, + REG_VENDOR_SCR, + REG_VENDOR_DATA, + REG_DEBUG_0, + REG_DEBUG_1 + } reg_address_e; + + logic bootloader_skip; + + assign n64_scb.cfg_version = 32'h53437632; + + logic dd_bm_ack; + + + // Register read logic + + always_ff @(posedge clk) begin + if (reg_read) begin + reg_rdata <= 32'd0; + + case (address) + REG_MEM_ADDRESS: begin + reg_rdata <= mem_address; + end + + REG_MEM_SCR: begin + reg_rdata <= { + 28'd0, + mem_busy, + 3'b000 + }; + end + + REG_USB_SCR: begin + reg_rdata <= { + 2'd0, + usb_scb.pwrsav, + usb_scb.reset_state, + usb_scb.tx_count, + usb_scb.rx_count, + 2'b00, + usb_scb.reset_pending, + ~fifo_bus.tx_full, + ~fifo_bus.rx_empty, + 1'b0 + }; + end + + REG_USB_DMA_ADDRESS: begin + reg_rdata <= { + 5'd0, + usb_dma_scb.starting_address + }; + end + + REG_USB_DMA_LENGTH: begin + reg_rdata <= { + 5'd0, + usb_dma_scb.transfer_length + }; + end + + REG_USB_DMA_SCR: begin + reg_rdata <= { + 28'd0, + usb_dma_scb.busy, + usb_dma_scb.direction, + 2'b00 + }; + end + + REG_CFG_SCR: begin + reg_rdata <= { + ~button_ff[2], + 19'd0, + n64_scb.rom_extended_enabled, + n64_scb.eeprom_16k_mode, + n64_scb.eeprom_enabled, + n64_scb.ddipl_enabled, + n64_scb.dd_enabled, + n64_scb.flashram_enabled, + n64_scb.sram_banked, + n64_scb.sram_enabled, + n64_scb.rom_shadow_enabled, + n64_scb.rom_write_enabled, + bootloader_skip, + n64_scb.bootloader_enabled + }; + end + + REG_CFG_DATA_0: begin + reg_rdata <= n64_scb.cfg_rdata[0]; + end + + REG_CFG_DATA_1: begin + reg_rdata <= n64_scb.cfg_rdata[1]; + end + + REG_CFG_CMD: begin + reg_rdata <= { + 23'd0, + n64_scb.cfg_pending, + n64_scb.cfg_cmd + }; + end + + REG_CFG_VERSION: begin + reg_rdata <= n64_scb.cfg_version; + end + + REG_FLASHRAM_SCR: begin + reg_rdata <= { + 18'd0, + n64_scb.flashram_write_or_erase, + n64_scb.flashram_sector_or_all, + n64_scb.flashram_sector, + n64_scb.flashram_pending, + 1'b0 + }; + end + + REG_FLASH_SCR: begin + reg_rdata <= { + 31'd0, + flash_scb.erase_pending + }; + end + + REG_RTC_SCR: begin + reg_rdata <= { + 24'h525443, + 7'd0, + n64_scb.rtc_pending + }; + end + + REG_RTC_TIME_0: begin + reg_rdata <= { + 5'd0, n64_scb.rtc_rdata[28:26], + 2'd0, n64_scb.rtc_rdata[19:14], + 1'd0, n64_scb.rtc_rdata[13:7], + 1'd0, n64_scb.rtc_rdata[6:0] + }; + end + + REG_RTC_TIME_1: begin + reg_rdata <= { + 8'd0, + n64_scb.rtc_rdata[41:34], + 3'd0, n64_scb.rtc_rdata[33:29], + 2'd0, n64_scb.rtc_rdata[25:20] + }; + end + + REG_SD_SCR: begin + reg_rdata <= { + 4'd0, + sd_scb.tx_count, + sd_scb.rx_count, + ~sd_det_ff[2], + sd_scb.card_busy, + sd_scb.cmd_error, + sd_scb.cmd_busy, + sd_scb.clock_mode + }; + end + + REG_SD_ARG: begin + reg_rdata <= sd_scb.cmd_arg; + end + + REG_SD_CMD: begin + reg_rdata <= { + 22'd0, + sd_scb.cmd_ignore_crc, + sd_scb.cmd_long_response, + sd_scb.cmd_reserved_response, + sd_scb.cmd_skip_response, + sd_scb.cmd_index + }; + end + + REG_SD_RSP_0: begin + reg_rdata <= sd_scb.cmd_rsp[31:0]; + end + + REG_SD_RSP_1: begin + reg_rdata <= sd_scb.cmd_rsp[63:32]; + end + + REG_SD_RSP_2: begin + reg_rdata <= sd_scb.cmd_rsp[95:64]; + end + + REG_SD_RSP_3: begin + reg_rdata <= sd_scb.cmd_rsp[127:96]; + end + + REG_SD_DAT: begin + reg_rdata <= { + 18'd0, + sd_scb.dat_error, + sd_scb.dat_busy, + 12'd0 + }; + end + + REG_SD_DMA_ADDRESS: begin + reg_rdata <= { + 5'd0, + sd_dma_scb.starting_address + }; + end + + REG_SD_DMA_LENGTH: begin + reg_rdata <= { + 5'd0, + sd_dma_scb.transfer_length + }; + end + + REG_SD_DMA_SCR: begin + reg_rdata <= { + 28'd0, + sd_dma_scb.busy, + sd_dma_scb.direction, + 2'b00 + }; + end + + REG_DD_SCR: begin + reg_rdata <= { + 14'd0, + dd_bm_ack, + dd_scb.bm_micro_error, + dd_scb.bm_transfer_c2, + dd_scb.bm_transfer_data, + dd_scb.bm_transfer_blocks, + dd_scb.bm_transfer_mode, + 1'b0, + dd_scb.bm_stop_pending, + 1'b0, + dd_scb.bm_start_pending, + dd_scb.disk_changed, + dd_scb.disk_inserted, + 1'b0, + dd_scb.bm_pending, + 1'b0, + dd_scb.cmd_pending, + 1'b0, + dd_scb.hard_reset + }; + end + + REG_DD_CMD_DATA: begin + reg_rdata <= {8'd0, dd_scb.cmd, dd_scb.data}; + end + + REG_DD_HEAD_TRACK: begin + reg_rdata <= {18'd0, dd_scb.index_lock, dd_scb.head_track}; + end + + REG_DD_SECTOR_INFO: begin + reg_rdata <= { + dd_scb.sectors_in_block, + dd_scb.sector_size_full, + dd_scb.sector_size, + dd_scb.sector_num + }; + end + + REG_VENDOR_SCR: begin + reg_rdata <= vendor_scb.control_rdata; + end + + REG_VENDOR_DATA: begin + reg_rdata <= vendor_scb.data_rdata; + end + + REG_DEBUG_0: begin + reg_rdata <= n64_scb.pi_debug[31:0]; + end + + REG_DEBUG_1: begin + reg_rdata <= { + 28'd0, + n64_scb.pi_debug[35:32] + }; + end + endcase + end + end + + + // Register write logic + + always_ff @(posedge clk) begin + mem_start <= 1'b0; + mem_stop <= 1'b0; + + usb_scb.write_buffer_flush <= 1'b0; + usb_scb.reset_ack <= 1'b0; + usb_scb.fifo_flush <= 1'b0; + + usb_dma_scb.start <= 1'b0; + usb_dma_scb.stop <= 1'b0; + + sd_scb.cmd_start <= 1'b0; + sd_scb.dat_fifo_flush <= 1'b0; + sd_scb.dat_start_write <= 1'b0; + sd_scb.dat_start_read <= 1'b0; + sd_scb.dat_stop <= 1'b0; + + sd_dma_scb.start <= 1'b0; + sd_dma_scb.stop <= 1'b0; + + n64_scb.cfg_done <= 1'b0; + n64_scb.cfg_error <= 1'b0; + n64_scb.cfg_irq <= 1'b0; + + n64_scb.flashram_done <= 1'b0; + + n64_scb.rtc_done <= 1'b0; + + dd_scb.hard_reset_clear <= 1'b0; + dd_scb.cmd_ready <= 1'b0; + dd_scb.bm_start_clear <= 1'b0; + dd_scb.bm_stop_clear <= 1'b0; + dd_scb.bm_clear <= 1'b0; + dd_scb.bm_ready <= 1'b0; + + vendor_scb.control_valid <= 1'b0; + + if (n64_scb.n64_nmi) begin + n64_scb.bootloader_enabled <= !bootloader_skip; + end + + if (flash_scb.erase_done) begin + flash_scb.erase_pending <= 1'b0; + end + + if (dd_scb.bm_interrupt_ack) begin + dd_bm_ack <= 1'b1; + end + + if (reset) begin + mcu_int <= 1'b0; + sd_scb.clock_mode <= 2'd0; + n64_scb.rom_extended_enabled <= 1'b0; + n64_scb.eeprom_16k_mode <= 1'b0; + n64_scb.eeprom_enabled <= 1'b0; + n64_scb.dd_enabled <= 1'b0; + n64_scb.ddipl_enabled <= 1'b0; + n64_scb.flashram_enabled <= 1'b0; + n64_scb.sram_banked <= 1'b0; + n64_scb.sram_enabled <= 1'b0; + n64_scb.rom_shadow_enabled <= 1'b0; + n64_scb.rom_write_enabled <= 1'b0; + bootloader_skip <= 1'b0; + n64_scb.bootloader_enabled <= 1'b1; + flash_scb.erase_pending <= 1'b0; + dd_bm_ack <= 1'b0; + n64_scb.rtc_wdata_valid <= 1'b0; + end else if (reg_write) begin + case (address) + REG_MEM_ADDRESS: begin + mem_address <= reg_wdata; + end + + REG_MEM_SCR: begin + { + mem_length, + mem_direction, + mem_stop, + mem_start + } <= {(reg_wdata[14:5] - 1'd1), reg_wdata[2:0]}; + end + + REG_USB_SCR: begin + { + usb_scb.write_buffer_flush, + usb_scb.reset_ack, + usb_scb.fifo_flush + } <= {reg_wdata[5:4], reg_wdata[0]}; + end + + REG_USB_DMA_ADDRESS: begin + usb_dma_scb.starting_address <= reg_wdata[26:0]; + end + + REG_USB_DMA_LENGTH: begin + usb_dma_scb.transfer_length <= reg_wdata[26:0]; + end + + REG_USB_DMA_SCR: begin + { + usb_dma_scb.direction, + usb_dma_scb.stop, + usb_dma_scb.start + } <= reg_wdata[2:0]; + end + + REG_CFG_SCR: begin + { + n64_scb.rom_extended_enabled, + n64_scb.eeprom_16k_mode, + n64_scb.eeprom_enabled, + n64_scb.ddipl_enabled, + n64_scb.dd_enabled, + n64_scb.flashram_enabled, + n64_scb.sram_banked, + n64_scb.sram_enabled, + n64_scb.rom_shadow_enabled, + n64_scb.rom_write_enabled, + bootloader_skip, + n64_scb.bootloader_enabled + } <= reg_wdata[11:0]; + end + + REG_CFG_DATA_0: begin + n64_scb.cfg_wdata[0] <= reg_wdata; + end + + REG_CFG_DATA_1: begin + n64_scb.cfg_wdata[1] <= reg_wdata; + end + + REG_CFG_CMD: begin + { + n64_scb.cfg_irq, + n64_scb.cfg_error, + n64_scb.cfg_done + } <= reg_wdata[11:9]; + end + + REG_FLASHRAM_SCR: begin + n64_scb.flashram_done <= reg_wdata[0]; + end + + REG_FLASH_SCR: begin + flash_scb.erase_pending <= 1'b1; + flash_scb.erase_block <= reg_wdata[23:16]; + end + + REG_RTC_SCR: begin + n64_scb.rtc_done <= reg_wdata[1]; + end + + REG_RTC_TIME_0: begin + n64_scb.rtc_wdata_valid <= 1'b0; + n64_scb.rtc_wdata[28:26] <= reg_wdata[26:24]; + n64_scb.rtc_wdata[19:14] <= reg_wdata[21:16]; + n64_scb.rtc_wdata[13:7] <= reg_wdata[14:8]; + n64_scb.rtc_wdata[6:0] <= reg_wdata[6:0]; + end + + REG_RTC_TIME_1: begin + n64_scb.rtc_wdata_valid <= 1'b1; + n64_scb.rtc_wdata[41:34] <= reg_wdata[23:16]; + n64_scb.rtc_wdata[33:29] <= reg_wdata[12:8]; + n64_scb.rtc_wdata[25:20] <= reg_wdata[5:0]; + end + + REG_SD_SCR: begin + sd_scb.clock_mode <= reg_wdata[1:0]; + end + + REG_SD_ARG: begin + sd_scb.cmd_arg <= reg_wdata; + end + + REG_SD_CMD: begin + sd_scb.cmd_start <= 1'b1; + sd_scb.cmd_ignore_crc <= reg_wdata[9]; + sd_scb.cmd_long_response <= reg_wdata[8]; + sd_scb.cmd_reserved_response <= reg_wdata[7]; + sd_scb.cmd_skip_response <= reg_wdata[6]; + sd_scb.cmd_index <= reg_wdata[5:0]; + end + + REG_SD_DAT: begin + sd_scb.dat_blocks <= reg_wdata[11:4]; + sd_scb.dat_stop <= reg_wdata[3]; + sd_scb.dat_start_read <= reg_wdata[2]; + sd_scb.dat_start_write <= reg_wdata[1]; + sd_scb.dat_fifo_flush <= reg_wdata[0]; + end + + REG_SD_DMA_ADDRESS: begin + sd_dma_scb.starting_address <= reg_wdata[26:0]; + end + + REG_SD_DMA_LENGTH: begin + sd_dma_scb.transfer_length <= reg_wdata[26:0]; + end + + REG_SD_DMA_SCR: begin + { + sd_dma_scb.direction, + sd_dma_scb.stop, + sd_dma_scb.start + } <= reg_wdata[2:0]; + end + + REG_DD_SCR: begin + dd_scb.bm_clear <= reg_wdata[19]; + if (reg_wdata[18]) begin + dd_bm_ack <= 1'b0; + end + dd_scb.bm_micro_error <= reg_wdata[16]; + dd_scb.bm_transfer_c2 <= reg_wdata[15]; + dd_scb.bm_transfer_data <= reg_wdata[14]; + dd_scb.bm_stop_clear <= reg_wdata[11]; + dd_scb.bm_start_clear <= reg_wdata[9]; + dd_scb.disk_changed <= reg_wdata[7]; + dd_scb.disk_inserted <= reg_wdata[6]; + dd_scb.bm_ready <= reg_wdata[5]; + dd_scb.cmd_ready <= reg_wdata[3]; + dd_scb.hard_reset_clear <= reg_wdata[1]; + end + + REG_DD_CMD_DATA: begin + dd_scb.cmd_data <= reg_wdata[15:0]; + end + + REG_DD_HEAD_TRACK: begin + {dd_scb.index_lock, dd_scb.head_track} <= reg_wdata[13:0]; + end + + REG_DD_DRIVE_ID: begin + dd_scb.drive_id <= reg_wdata[15:0]; + end + + REG_VENDOR_SCR: begin + vendor_scb.control_valid <= 1'b1; + vendor_scb.control_wdata <= reg_wdata; + end + + REG_VENDOR_DATA: begin + vendor_scb.data_wdata <= reg_wdata; + end + endcase + end + end + +endmodule diff --git a/fw/rtl/memory/mem_bus.sv b/fw/rtl/memory/mem_bus.sv new file mode 100644 index 0000000..75e92f5 --- /dev/null +++ b/fw/rtl/memory/mem_bus.sv @@ -0,0 +1,31 @@ +interface mem_bus (); + + logic request; + logic ack; + logic write; + logic [1:0] wmask; + logic [26:0] address; + logic [15:0] rdata; + logic [15:0] wdata; + + modport controller ( + output request, + input ack, + output write, + output wmask, + output address, + input rdata, + output wdata + ); + + modport memory ( + input request, + output ack, + input write, + input wmask, + input address, + output rdata, + input wdata + ); + +endinterface diff --git a/fw/rtl/memory/memory_arbiter.sv b/fw/rtl/memory/memory_arbiter.sv new file mode 100644 index 0000000..adaf700 --- /dev/null +++ b/fw/rtl/memory/memory_arbiter.sv @@ -0,0 +1,231 @@ +module memory_arbiter ( + input clk, + input reset, + + n64_scb.arbiter n64_scb, + + mem_bus.memory n64_bus, + mem_bus.memory cfg_bus, + mem_bus.memory usb_dma_bus, + mem_bus.memory sd_dma_bus, + + mem_bus.controller sdram_mem_bus, + mem_bus.controller flash_mem_bus, + mem_bus.controller bram_mem_bus +); + + typedef enum bit [1:0] { + SOURCE_N64, + SOURCE_CFG, + SOURCE_USB_DMA, + SOURCE_SD_DMA + } e_source_request; + + logic n64_sdram_request; + logic cfg_sdram_request; + logic usb_dma_sdram_request; + logic sd_dma_sdram_request; + + logic n64_flash_request; + logic cfg_flash_request; + logic usb_dma_flash_request; + logic sd_dma_flash_request; + + logic n64_bram_request; + logic cfg_bram_request; + logic usb_dma_bram_request; + logic sd_dma_bram_request; + + assign n64_sdram_request = n64_bus.request && !n64_bus.address[26]; + assign cfg_sdram_request = !n64_scb.pi_sdram_active && cfg_bus.request && !cfg_bus.address[26]; + assign usb_dma_sdram_request = !n64_scb.pi_sdram_active && usb_dma_bus.request && !usb_dma_bus.address[26]; + assign sd_dma_sdram_request = !n64_scb.pi_sdram_active && sd_dma_bus.request && !sd_dma_bus.address[26]; + + assign n64_flash_request = n64_bus.request && (n64_bus.address[26:24] == 3'b100); + assign cfg_flash_request = !n64_scb.pi_flash_active && cfg_bus.request && (cfg_bus.address[26:24] == 3'b100); + assign usb_dma_flash_request = !n64_scb.pi_flash_active && usb_dma_bus.request && (usb_dma_bus.address[26:24] == 3'b100); + assign sd_dma_flash_request = !n64_scb.pi_flash_active && sd_dma_bus.request && (sd_dma_bus.address[26:24] == 3'b100); + + assign n64_bram_request = n64_bus.request && (n64_bus.address[26:24] >= 3'b101); + assign cfg_bram_request = cfg_bus.request && (cfg_bus.address[26:24] >= 3'b101); + assign usb_dma_bram_request = usb_dma_bus.request && (usb_dma_bus.address[26:24] >= 3'b101); + assign sd_dma_bram_request = sd_dma_bus.request && (sd_dma_bus.address[26:24] >= 3'b101); + + e_source_request sdram_source_request; + + always_ff @(posedge clk) begin + if (reset) begin + sdram_mem_bus.request <= 1'b0; + end else begin + if (!sdram_mem_bus.request) begin + sdram_mem_bus.request <= ( + n64_sdram_request || + cfg_sdram_request || + usb_dma_sdram_request || + sd_dma_sdram_request + ); + + if (n64_sdram_request) begin + sdram_mem_bus.write <= n64_bus.write; + sdram_mem_bus.wmask <= n64_bus.wmask; + sdram_mem_bus.address <= n64_bus.address; + sdram_mem_bus.wdata <= n64_bus.wdata; + sdram_source_request <= SOURCE_N64; + end else if (cfg_sdram_request) begin + sdram_mem_bus.write <= cfg_bus.write; + sdram_mem_bus.wmask <= cfg_bus.wmask; + sdram_mem_bus.address <= cfg_bus.address; + sdram_mem_bus.wdata <= cfg_bus.wdata; + sdram_source_request <= SOURCE_CFG; + end else if (usb_dma_sdram_request) begin + sdram_mem_bus.write <= usb_dma_bus.write; + sdram_mem_bus.wmask <= usb_dma_bus.wmask; + sdram_mem_bus.address <= usb_dma_bus.address; + sdram_mem_bus.wdata <= usb_dma_bus.wdata; + sdram_source_request <= SOURCE_USB_DMA; + end else if (sd_dma_sdram_request) begin + sdram_mem_bus.write <= sd_dma_bus.write; + sdram_mem_bus.wmask <= sd_dma_bus.wmask; + sdram_mem_bus.address <= sd_dma_bus.address; + sdram_mem_bus.wdata <= sd_dma_bus.wdata; + sdram_source_request <= SOURCE_SD_DMA; + end + end + + if (sdram_mem_bus.ack) begin + sdram_mem_bus.request <= 1'b0; + end + end + end + + e_source_request flash_source_request; + + always_ff @(posedge clk) begin + if (reset) begin + flash_mem_bus.request <= 1'b0; + end else begin + if (!flash_mem_bus.request) begin + flash_mem_bus.request <= ( + n64_flash_request || + cfg_flash_request || + usb_dma_flash_request || + sd_dma_flash_request + ); + + if (n64_flash_request) begin + flash_mem_bus.write <= n64_bus.write; + flash_mem_bus.wmask <= n64_bus.wmask; + flash_mem_bus.address <= n64_bus.address; + flash_mem_bus.wdata <= n64_bus.wdata; + flash_source_request <= SOURCE_N64; + end else if (cfg_flash_request) begin + flash_mem_bus.write <= cfg_bus.write; + flash_mem_bus.wmask <= cfg_bus.wmask; + flash_mem_bus.address <= cfg_bus.address; + flash_mem_bus.wdata <= cfg_bus.wdata; + flash_source_request <= SOURCE_CFG; + end else if (usb_dma_flash_request) begin + flash_mem_bus.write <= usb_dma_bus.write; + flash_mem_bus.wmask <= usb_dma_bus.wmask; + flash_mem_bus.address <= usb_dma_bus.address; + flash_mem_bus.wdata <= usb_dma_bus.wdata; + flash_source_request <= SOURCE_USB_DMA; + end else if (sd_dma_flash_request) begin + flash_mem_bus.write <= sd_dma_bus.write; + flash_mem_bus.wmask <= sd_dma_bus.wmask; + flash_mem_bus.address <= sd_dma_bus.address; + flash_mem_bus.wdata <= sd_dma_bus.wdata; + flash_source_request <= SOURCE_SD_DMA; + end + end + + if (flash_mem_bus.ack) begin + flash_mem_bus.request <= 1'b0; + end + end + end + + e_source_request bram_source_request; + + always_ff @(posedge clk) begin + if (reset) begin + bram_mem_bus.request <= 1'b0; + end else begin + if (!bram_mem_bus.request) begin + bram_mem_bus.request <= ( + n64_bram_request || + cfg_bram_request || + usb_dma_bram_request || + sd_dma_bram_request + ); + + if (n64_bram_request) begin + bram_mem_bus.write <= n64_bus.write; + bram_mem_bus.wmask <= n64_bus.wmask; + bram_mem_bus.address <= n64_bus.address; + bram_mem_bus.wdata <= n64_bus.wdata; + bram_source_request <= SOURCE_N64; + end else if (cfg_bram_request) begin + bram_mem_bus.write <= cfg_bus.write; + bram_mem_bus.wmask <= cfg_bus.wmask; + bram_mem_bus.address <= cfg_bus.address; + bram_mem_bus.wdata <= cfg_bus.wdata; + bram_source_request <= SOURCE_CFG; + end else if (usb_dma_bram_request) begin + bram_mem_bus.write <= usb_dma_bus.write; + bram_mem_bus.wmask <= usb_dma_bus.wmask; + bram_mem_bus.address <= usb_dma_bus.address; + bram_mem_bus.wdata <= usb_dma_bus.wdata; + bram_source_request <= SOURCE_USB_DMA; + end else if (sd_dma_bram_request) begin + bram_mem_bus.write <= sd_dma_bus.write; + bram_mem_bus.wmask <= sd_dma_bus.wmask; + bram_mem_bus.address <= sd_dma_bus.address; + bram_mem_bus.wdata <= sd_dma_bus.wdata; + bram_source_request <= SOURCE_SD_DMA; + end + end + + if (bram_mem_bus.ack) begin + bram_mem_bus.request <= 1'b0; + end + end + end + + always_comb begin + n64_bus.ack = ( + ((sdram_source_request == SOURCE_N64) && sdram_mem_bus.ack) || + ((flash_source_request == SOURCE_N64) && flash_mem_bus.ack) || + ((bram_source_request == SOURCE_N64) && bram_mem_bus.ack) + ); + cfg_bus.ack = ( + ((sdram_source_request == SOURCE_CFG) && sdram_mem_bus.ack) || + ((flash_source_request == SOURCE_CFG) && flash_mem_bus.ack) || + ((bram_source_request == SOURCE_CFG) && bram_mem_bus.ack) + ); + usb_dma_bus.ack = ( + ((sdram_source_request == SOURCE_USB_DMA) && sdram_mem_bus.ack) || + ((flash_source_request == SOURCE_USB_DMA) && flash_mem_bus.ack) || + ((bram_source_request == SOURCE_USB_DMA) && bram_mem_bus.ack) + ); + sd_dma_bus.ack = ( + ((sdram_source_request == SOURCE_SD_DMA) && sdram_mem_bus.ack) || + ((flash_source_request == SOURCE_SD_DMA) && flash_mem_bus.ack) || + ((bram_source_request == SOURCE_SD_DMA) && bram_mem_bus.ack) + ); + + n64_bus.rdata = n64_bram_request ? bram_mem_bus.rdata : + n64_flash_request ? flash_mem_bus.rdata : + sdram_mem_bus.rdata; + cfg_bus.rdata = cfg_bram_request ? bram_mem_bus.rdata : + cfg_flash_request ? flash_mem_bus.rdata : + sdram_mem_bus.rdata; + usb_dma_bus.rdata = usb_dma_bram_request ? bram_mem_bus.rdata : + usb_dma_flash_request ? flash_mem_bus.rdata : + sdram_mem_bus.rdata; + sd_dma_bus.rdata = sd_dma_bram_request ? bram_mem_bus.rdata : + sd_dma_flash_request ? flash_mem_bus.rdata : + sdram_mem_bus.rdata; + end + +endmodule diff --git a/fw/rtl/memory/memory_bram.sv b/fw/rtl/memory/memory_bram.sv new file mode 100644 index 0000000..689dabf --- /dev/null +++ b/fw/rtl/memory/memory_bram.sv @@ -0,0 +1,164 @@ +module memory_bram ( + input clk, + + n64_scb.bram n64_scb, + + mem_bus.memory mem_bus +); + + // Request logic + + logic [1:0] last_request; + logic write; + + always_ff @(posedge clk) begin + last_request <= {last_request[0], mem_bus.request}; + end + + always_ff @(posedge clk) begin + mem_bus.ack <= mem_bus.request && last_request[0] && !last_request[1]; + end + + always_comb begin + write = mem_bus.request && !last_request[0] && mem_bus.write; + end + + + // Address decoding + + logic buffer_selected; + logic eeprom_selected; + logic dd_selected; + logic flashram_selected; + + always_comb begin + buffer_selected = 1'b0; + eeprom_selected = 1'b0; + dd_selected = 1'b0; + flashram_selected = 1'b0; + if (mem_bus.address[25:24] == 2'b01 && mem_bus.address[23:14] == 10'd0) begin + buffer_selected = mem_bus.address[13] == 1'b0; + eeprom_selected = mem_bus.address[13:11] == 3'b100; + dd_selected = mem_bus.address[13:8] == 6'b101000; + flashram_selected = mem_bus.address[13:7] == 7'b1010010; + end + end + + + // Buffer memory + + logic [15:0] buffer_bram [0:4095]; + logic [15:0] buffer_bram_rdata; + + always_ff @(posedge clk) begin + if (write && buffer_selected) begin + if (mem_bus.wmask[1]) buffer_bram[mem_bus.address[12:1]][15:8] <= mem_bus.wdata[15:8]; + if (mem_bus.wmask[0]) buffer_bram[mem_bus.address[12:1]][7:0] <= mem_bus.wdata[7:0]; + end + end + + always_ff @(posedge clk) begin + buffer_bram_rdata <= buffer_bram[mem_bus.address[12:1]]; + end + + + // EEPROM memory + + logic [7:0] eeprom_bram_high [0:1023]; + logic [7:0] eeprom_bram_low [0:1023]; + logic [7:0] eeprom_bram_high_rdata; + logic [7:0] eeprom_bram_low_rdata; + logic [7:0] eeprom_bram_high_n64_rdata; + logic [7:0] eeprom_bram_low_n64_rdata; + logic [15:0] eeprom_bram_rdata; + + always_ff @(posedge clk) begin + if (write && mem_bus.wmask[1] && eeprom_selected) begin + eeprom_bram_high[mem_bus.address[10:1]] <= mem_bus.wdata[15:8]; + end + if (n64_scb.eeprom_write && !n64_scb.eeprom_address[0]) begin + eeprom_bram_high[n64_scb.eeprom_address[10:1]] <= n64_scb.eeprom_wdata; + end + end + + always_ff @(posedge clk) begin + if (write && mem_bus.wmask[0] && eeprom_selected) begin + eeprom_bram_low[mem_bus.address[10:1]] <= mem_bus.wdata[7:0]; + end + if (n64_scb.eeprom_write && n64_scb.eeprom_address[0]) begin + eeprom_bram_low[n64_scb.eeprom_address[10:1]] <= n64_scb.eeprom_wdata; + end + end + + always_ff @(posedge clk) begin + eeprom_bram_high_rdata <= eeprom_bram_high[mem_bus.address[10:1]]; + end + + always_ff @(posedge clk) begin + eeprom_bram_low_rdata <= eeprom_bram_low[mem_bus.address[10:1]]; + end + + always_ff @(posedge clk) begin + eeprom_bram_high_n64_rdata <= eeprom_bram_high[n64_scb.eeprom_address[10:1]]; + end + + always_ff @(posedge clk) begin + eeprom_bram_low_n64_rdata <= eeprom_bram_low[n64_scb.eeprom_address[10:1]]; + end + + always_comb begin + eeprom_bram_rdata = {eeprom_bram_high_rdata, eeprom_bram_low_rdata}; + n64_scb.eeprom_rdata = n64_scb.eeprom_address[0] ? eeprom_bram_low_n64_rdata : eeprom_bram_high_n64_rdata; + end + + + // DD memory + + logic [15:0] dd_bram [0:127]; + logic [15:0] dd_bram_rdata; + + always_ff @(posedge clk) begin + if (write && dd_selected) begin + dd_bram[mem_bus.address[7:1]] <= mem_bus.wdata; + end + if (n64_scb.dd_write) begin + dd_bram[n64_scb.dd_address] <= n64_scb.dd_wdata; + end + end + + always_ff @(posedge clk) begin + dd_bram_rdata <= dd_bram[mem_bus.address[7:1]]; + end + + always_ff @(posedge clk) begin + n64_scb.dd_rdata <= dd_bram[n64_scb.dd_address]; + end + + + // FlashRAM memory + + logic [15:0] flashram_bram [0:63]; + logic [15:0] flashram_bram_rdata; + + always_ff @(posedge clk) begin + if (n64_scb.flashram_write) begin + flashram_bram[n64_scb.flashram_address] <= n64_scb.flashram_wdata; + end + end + + always_ff @(posedge clk) begin + flashram_bram_rdata <= flashram_bram[mem_bus.address[6:1]]; + end + + + // Output data mux + + always_ff @(posedge clk) begin + mem_bus.rdata <= 16'd0; + if (buffer_selected) mem_bus.rdata <= buffer_bram_rdata; + if (eeprom_selected) mem_bus.rdata <= eeprom_bram_rdata; + if (dd_selected) mem_bus.rdata <= dd_bram_rdata; + if (flashram_selected) mem_bus.rdata <= flashram_bram_rdata; + end + +endmodule diff --git a/fw/rtl/memory/memory_dma.sv b/fw/rtl/memory/memory_dma.sv new file mode 100644 index 0000000..fcba0bd --- /dev/null +++ b/fw/rtl/memory/memory_dma.sv @@ -0,0 +1,243 @@ +interface dma_scb (); + + logic start; + logic stop; + logic busy; + logic direction; + logic [26:0] starting_address; + logic [26:0] transfer_length; + + modport controller ( + output start, + output stop, + input busy, + output direction, + output starting_address, + output transfer_length + ); + + modport dma ( + input start, + input stop, + output busy, + input direction, + input starting_address, + input transfer_length + ); + +endinterface + + +module memory_dma ( + input clk, + input reset, + + dma_scb.dma dma_scb, + + fifo_bus.controller fifo_bus, + mem_bus.controller mem_bus +); + + // DMA start/stop control + + logic dma_start; + logic dma_stop; + + always_comb begin + dma_start = dma_scb.start && !dma_scb.stop && !dma_scb.busy; + dma_stop = dma_scb.stop; + end + + + // Remaining counter and FIFO enable + + logic [26:0] remaining; + logic trx_enabled; + + always_comb begin + trx_enabled = remaining > 27'd0; + end + + + // RX FIFO controller + + logic rx_rdata_pop; + logic rx_rdata_shift; + logic rx_rdata_valid; + logic [15:0] rx_buffer; + logic rx_buffer_valid; + logic [1:0] rx_buffer_counter; + logic [1:0] rx_buffer_valid_counter; + + always_comb begin + rx_buffer_valid = rx_buffer_valid_counter == 2'd2; + end + + always_ff @(posedge clk) begin + rx_rdata_pop <= ( + !rx_rdata_pop && + !fifo_bus.rx_read && + trx_enabled && + rx_buffer_counter < 2'd2 && + !fifo_bus.rx_empty && + mem_bus.write + ); + rx_rdata_shift <= 1'b0; + fifo_bus.rx_read <= rx_rdata_pop; + rx_rdata_valid <= fifo_bus.rx_read; + + if (dma_start) begin + if (dma_scb.starting_address[0]) begin + mem_bus.wmask <= 2'b01; + rx_buffer_counter <= 2'd1; + rx_buffer_valid_counter <= 2'd1; + end else begin + mem_bus.wmask <= 2'b11; + rx_buffer_counter <= 2'd0; + rx_buffer_valid_counter <= 2'd0; + end + end + + if (rx_rdata_pop) begin + rx_buffer_counter <= rx_buffer_counter + 1'd1; + end + + if (rx_rdata_shift || rx_rdata_valid) begin + rx_buffer <= {rx_buffer[7:0], fifo_bus.rx_rdata}; + rx_buffer_valid_counter <= rx_buffer_valid_counter + 1'd1; + if (remaining == 27'd0 && rx_buffer_counter == 2'd1) begin + mem_bus.wmask <= 2'b10; + rx_rdata_shift <= 1'b1; + rx_buffer_counter <= rx_buffer_counter + 1'd1; + end + end + + if (rx_buffer_valid && !mem_bus.request) begin + rx_buffer_counter <= 2'd0; + rx_buffer_valid_counter <= 2'd0; + end + end + + + // TX FIFO controller + + logic tx_wdata_push; + logic tx_wdata_first_push; + logic [7:0] tx_buffer; + logic tx_buffer_counter; + logic tx_buffer_ready; + logic tx_buffer_valid; + + always_comb begin + fifo_bus.tx_write = tx_wdata_push; + end + + always_ff @(posedge clk) begin + tx_wdata_push <= ( + !tx_wdata_push && + trx_enabled && + tx_buffer_valid && + !fifo_bus.tx_full && + !mem_bus.write + ); + + if (reset || dma_stop) begin + tx_buffer_ready <= 1'b0; + tx_buffer_valid <= 1'b0; + end + + if (dma_start) begin + tx_wdata_first_push <= 1'b1; + tx_buffer_ready <= 1'b1; + tx_buffer_valid <= 1'b0; + end + + if (tx_buffer_ready && mem_bus.request) begin + tx_buffer_ready <= 1'b0; + end + + if (mem_bus.ack) begin + tx_wdata_first_push <= 1'b0; + tx_buffer_counter <= 1'd1; + tx_buffer_valid <= 1'b1; + {fifo_bus.tx_wdata, tx_buffer} <= mem_bus.rdata; + if (tx_wdata_first_push && dma_scb.starting_address[0]) begin + fifo_bus.tx_wdata <= mem_bus.rdata[7:0]; + tx_buffer_counter <= 1'd0; + end + end + + if (tx_wdata_push) begin + tx_buffer_counter <= tx_buffer_counter - 1'd1; + fifo_bus.tx_wdata <= tx_buffer; + if (tx_buffer_counter == 1'd0) begin + tx_buffer_ready <= 1'b1; + tx_buffer_valid <= 1'b0; + end + end + end + + + // Remaining counter controller + + always_ff @(posedge clk) begin + if (reset || dma_stop) begin + remaining <= 27'd0; + end else begin + if (dma_start) begin + remaining <= dma_scb.transfer_length; + end + + if ((mem_bus.write && rx_rdata_pop) || (!mem_bus.write && tx_wdata_push)) begin + remaining <= remaining - 1'd1; + end + end + end + + + // Mem bus controller + + always_ff @(posedge clk) begin + dma_scb.busy <= mem_bus.request || trx_enabled; + end + + always_ff @(posedge clk) begin + if (reset) begin + mem_bus.request <= 1'b0; + end else begin + if (!mem_bus.request) begin + if (mem_bus.write) begin + if (rx_buffer_valid) begin + mem_bus.request <= 1'b1; + mem_bus.wdata <= rx_buffer; + end + end else begin + if (tx_buffer_ready) begin + mem_bus.request <= 1'b1; + end + end + end + end + + if (mem_bus.ack) begin + mem_bus.request <= 1'b0; + end + end + + always_ff @(posedge clk) begin + if (dma_start) begin + mem_bus.write <= dma_scb.direction; + end + end + + always_ff @(posedge clk) begin + if (dma_start) begin + mem_bus.address <= {dma_scb.starting_address[26:1], 1'b0}; + end + + if (mem_bus.ack) begin + mem_bus.address <= mem_bus.address + 2'd2; + end + end + +endmodule diff --git a/fw/rtl/memory/memory_flash.sv b/fw/rtl/memory/memory_flash.sv new file mode 100644 index 0000000..5d3abfc --- /dev/null +++ b/fw/rtl/memory/memory_flash.sv @@ -0,0 +1,492 @@ +interface flash_scb (); + + logic erase_pending; + logic erase_done; + logic [7:0] erase_block; + + modport controller ( + output erase_pending, + input erase_done, + output erase_block + ); + + modport flash ( + input erase_pending, + output erase_done, + input erase_block + ); + +endinterface + + +module flash_qspi ( + input clk, + input reset, + + input start, + input finish, + output logic busy, + output logic valid, + input output_enable, + input quad_enable, + output logic [7:0] rdata, + input [7:0] wdata, + + output logic flash_clk, + output logic flash_cs, + inout [3:0] flash_dq +); + + logic flash_dq_oe_s; + logic flash_dq_oe_q; + logic [3:0] flash_dq_out; + + assign flash_dq[0] = flash_dq_oe_s ? flash_dq_out[0] : 1'bZ; + assign flash_dq[3:1] = flash_dq_oe_q ? flash_dq_out[3:1] : 3'bZZZ; + + logic ff_clk; + logic ff_cs; + logic ff_dq_oe_s; + logic ff_dq_oe_q; + logic [3:0] ff_dq_out; + logic [3:0] ff_dq_in; + + always_ff @(posedge clk) begin + flash_clk <= ff_clk; + flash_cs <= ff_cs; + flash_dq_oe_s <= ff_dq_oe_s; + flash_dq_oe_q <= ff_dq_oe_q; + flash_dq_out <= ff_dq_out; + ff_dq_in <= flash_dq; + end + + logic running; + logic exit; + logic valid_enable; + logic quad_mode; + logic [2:0] counter; + logic [7:0] output_shift; + logic [2:0] sample_s; + logic [2:0] sample_q; + logic [2:0] valid_ff; + + assign ff_dq_out = quad_mode ? output_shift[7:4] : {3'bXXX, output_shift[7]}; + + always_ff @(posedge clk) begin + sample_s <= {sample_s[1:0], 1'b0}; + sample_q <= {sample_q[1:0], 1'b0}; + valid_ff <= {valid_ff[1:0], 1'b0}; + if (reset) begin + ff_clk <= 1'b0; + ff_cs <= 1'b1; + ff_dq_oe_s <= 1'b0; + ff_dq_oe_q <= 1'b0; + busy <= 1'b0; + running <= 1'b0; + end else begin + if (running) begin + ff_clk <= ~ff_clk; + if (!ff_clk) begin + if (counter == 3'd0) begin + busy <= 1'b0; + valid_ff[0] <= valid_enable; + end + if (!quad_mode) begin + sample_s[0] <= 1'b1; + end else begin + sample_q[0] <= 1'b1; + end + end else begin + counter <= counter - 1'd1; + if (counter == 3'd0) begin + running <= 1'b0; + end + if (!quad_mode) begin + output_shift <= {output_shift[6:0], 1'bX}; + end else begin + output_shift <= {output_shift[3:0], 4'bXXXX}; + end + end + end + + if (exit) begin + ff_cs <= 1'b1; + counter <= counter - 1'd1; + if (counter == 3'd0) begin + busy <= 1'b0; + exit <= 1'b0; + end + end + + if (!busy) begin + if (start) begin + ff_clk <= 1'b0; + ff_cs <= 1'b0; + ff_dq_oe_s <= !quad_enable || (quad_enable && output_enable); + ff_dq_oe_q <= quad_enable && output_enable; + busy <= 1'b1; + running <= 1'b1; + valid_enable <= !output_enable; + quad_mode <= quad_enable; + counter <= quad_enable ? 3'd1 : 3'd7; + output_shift <= wdata; + end else if (finish) begin + busy <= 1'b1; + exit <= 1'b1; + counter <= wdata[2:0]; + end + end + end + end + + always_ff @(posedge clk) begin + valid <= 1'b0; + if (sample_s[2]) begin + rdata <= {rdata[6:0], ff_dq_in[1]}; + end + if (sample_q[2]) begin + rdata <= {rdata[3:0], ff_dq_in}; + end + if (valid_ff[2]) begin + valid <= 1'b1; + end + end + +endmodule + + +module memory_flash ( + input clk, + input reset, + + flash_scb.flash flash_scb, + + mem_bus.memory mem_bus, + + output flash_clk, + output flash_cs, + inout [3:0] flash_dq +); + + logic start; + logic finish; + logic busy; + logic valid; + logic output_enable; + logic quad_enable; + logic [7:0] rdata; + logic [7:0] wdata; + + flash_qspi flash_qspi_inst ( + .clk(clk), + .reset(reset), + + .start(start), + .finish(finish), + .busy(busy), + .valid(valid), + .output_enable(output_enable), + .quad_enable(quad_enable), + .rdata(rdata), + .wdata(wdata), + + .flash_clk(flash_clk), + .flash_cs(flash_cs), + .flash_dq(flash_dq) + ); + + typedef enum bit [7:0] { + FLASH_CMD_PAGE_PROGRAM = 8'h02, + FLASH_CMD_READ_STATUS_1 = 8'h05, + FLASH_CMD_WRITE_ENABLE = 8'h06, + FLASH_CMD_BLOCK_ERASE_64KB = 8'hD8, + FLASH_CMD_FAST_READ_QUAD_IO = 8'hEB + } e_flash_cmd; + + typedef enum { + FLASH_STATUS_1_BUSY = 0 + } e_flash_status_1; + + typedef enum bit [3:0] { + STATE_IDLE, + STATE_WRITE_ENABLE, + STATE_ERASE, + STATE_PROGRAM_START, + STATE_PROGRAM, + STATE_PROGRAM_END, + STATE_WAIT, + STATE_READ_START, + STATE_READ, + STATE_READ_END + } e_state; + + e_state state; + logic [2:0] counter; + logic valid_counter; + logic [23:0] current_address; + + always_ff @(posedge clk) begin + start <= 1'b0; + finish <= 1'b0; + flash_scb.erase_done <= 1'b0; + mem_bus.ack <= 1'b0; + + if (reset) begin + state <= STATE_IDLE; + end else begin + if (!busy && (start || finish)) begin + counter <= counter + 1'd1; + end + + case (state) + STATE_IDLE: begin + output_enable <= 1'b1; + quad_enable <= 1'b0; + counter <= 3'd0; + if (flash_scb.erase_pending) begin + state <= STATE_WRITE_ENABLE; + end else if (mem_bus.request) begin + current_address <= {mem_bus.address[23:1], 1'b0}; + if (mem_bus.write) begin + state <= STATE_WRITE_ENABLE; + end else begin + state <= STATE_READ_START; + end + end + end + + STATE_WRITE_ENABLE: begin + case (counter) + 3'd0: begin + start <= 1'b1; + wdata <= FLASH_CMD_WRITE_ENABLE; + end + 3'd1: begin + finish <= 1'b1; + wdata <= 8'd4; + if (!busy) begin + counter <= 3'd0; + if (flash_scb.erase_pending) begin + state <= STATE_ERASE; + end else begin + state <= STATE_PROGRAM_START; + end + end + end + endcase + end + + STATE_ERASE: begin + case (counter) + 3'd0: begin + start <= 1'b1; + wdata <= FLASH_CMD_BLOCK_ERASE_64KB; + end + 3'd1: begin + start <= 1'b1; + wdata <= flash_scb.erase_block; + end + 3'd2: begin + start <= 1'b1; + wdata <= 8'd0; + end + 3'd3: begin + start <= 1'b1; + wdata <= 8'd0; + end + 3'd4: begin + finish <= 1'b1; + wdata <= 8'd4; + if (!busy) begin + flash_scb.erase_done <= 1'b1; + counter <= 3'd0; + state <= STATE_WAIT; + end + end + endcase + end + + STATE_PROGRAM_START: begin + case (counter) + 3'd0: begin + start <= 1'b1; + wdata <= FLASH_CMD_PAGE_PROGRAM; + end + 3'd1: begin + start <= 1'b1; + wdata <= mem_bus.address[23:16]; + end + 3'd2: begin + start <= 1'b1; + wdata <= mem_bus.address[15:8]; + end + 3'd3: begin + start <= 1'b1; + wdata <= mem_bus.address[7:0]; + if (!busy) begin + counter <= 3'd0; + state <= STATE_PROGRAM; + end + end + endcase + end + + STATE_PROGRAM: begin + case (counter) + 3'd0: begin + start <= 1'b1; + wdata <= mem_bus.wdata[15:8]; + end + 3'd1: begin + start <= 1'b1; + wdata <= mem_bus.wdata[7:0]; + if (!busy) begin + mem_bus.ack <= 1'b1; + current_address <= current_address + 2'd2; + end + end + 3'd2: begin + if (current_address[7:0] == 8'h00) begin + state <= STATE_PROGRAM_END; + end else if (flash_scb.erase_pending) begin + state <= STATE_PROGRAM_END; + end else if (mem_bus.request && !mem_bus.ack) begin + if (!mem_bus.write || (mem_bus.address[23:0] != current_address)) begin + state <= STATE_PROGRAM_END; + end else begin + counter <= 3'd0; + end + end + end + endcase + end + + STATE_PROGRAM_END: begin + finish <= 1'b1; + wdata <= 8'd4; + if (!busy) begin + counter <= 3'd0; + state <= STATE_WAIT; + end + end + + STATE_WAIT: begin + case (counter) + 3'd0: begin + start <= 1'b1; + output_enable <= 1'b1; + wdata <= FLASH_CMD_READ_STATUS_1; + end + 3'd1: begin + start <= 1'b1; + output_enable <= 1'b0; + end + 3'd2: begin + finish <= 1'b1; + wdata <= 8'd0; + end + 3'd3: begin + counter <= counter; + end + endcase + if (valid) begin + if (rdata[FLASH_STATUS_1_BUSY]) begin + counter <= 3'd0; + end else begin + state <= STATE_IDLE; + end + end + end + + STATE_READ_START: begin + case (counter) + 3'd0: begin + start <= 1'b1; + wdata <= FLASH_CMD_FAST_READ_QUAD_IO; + end + 3'd1: begin + start <= 1'b1; + quad_enable <= 1'b1; + wdata <= mem_bus.address[23:16]; + end + 3'd2: begin + start <= 1'b1; + wdata <= mem_bus.address[15:8]; + end + 3'd3: begin + start <= 1'b1; + wdata <= mem_bus.address[7:0]; + end + 3'd4: begin + start <= 1'b1; + wdata <= 8'hFF; + end + 3'd5: begin + start <= 1'b1; + end + 3'd6: begin + start <= 1'b1; + if (!busy) begin + counter <= 3'd0; + valid_counter <= 1'b0; + state <= STATE_READ; + end + end + endcase + end + + STATE_READ: begin + case (counter) + 3'd0: begin + start <= 1'b1; + output_enable <= 1'b0; + end + 3'd1: begin + start <= 1'b1; + end + 3'd2: begin end + 3'd3: begin + if (flash_scb.erase_pending) begin + state <= STATE_READ_END; + end else if (mem_bus.request && !mem_bus.ack) begin + if (mem_bus.write || (mem_bus.address[23:0] != current_address)) begin + state <= STATE_READ_END; + end else begin + start <= 1'b1; + counter <= 3'd0; + end + end + end + endcase + if (valid) begin + valid_counter <= ~valid_counter; + if (valid_counter) begin + mem_bus.ack <= 1'b1; + counter <= counter + 1'd1; + current_address <= current_address + 2'd2; + end + end + end + + STATE_READ_END: begin + finish <= 1'b1; + wdata <= 8'd0; + if (!busy) begin + state <= STATE_IDLE; + end + end + + default: begin + state <= STATE_IDLE; + end + endcase + end + end + + always_ff @(posedge clk) begin + if (valid) begin + mem_bus.rdata <= {mem_bus.rdata[7:0], rdata}; + end + end + +endmodule diff --git a/fw/rtl/memory/memory_sdram.sv b/fw/rtl/memory/memory_sdram.sv index 06e3e51..fce983a 100644 --- a/fw/rtl/memory/memory_sdram.sv +++ b/fw/rtl/memory/memory_sdram.sv @@ -1,48 +1,41 @@ module memory_sdram ( - if_system sys, + input clk, + input reset, - input request, - output ack, - input write, - input [25:0] address, - output [15:0] rdata, - input [15:0] wdata, + mem_bus.memory mem_bus, - output sdram_cs, - output sdram_ras, - output sdram_cas, - output sdram_we, - output [1:0] sdram_ba, - output [12:0] sdram_a, + output logic sdram_cs, + output logic sdram_ras, + output logic sdram_cas, + output logic sdram_we, + output logic [1:0] sdram_ba, + output logic [12:0] sdram_a, + output logic [1:0] sdram_dqm, inout [15:0] sdram_dq ); - parameter [2:0] CAS_LATENCY = 3'd2; + localparam [2:0] CAS_LATENCY = 3'd2; - parameter real T_INIT = 100_000.0; - parameter real T_RC = 60.0; - parameter real T_RP = 15.0; - parameter real T_RCD = 15.0; - // parameter real T_RAS = 37.0; //TODO: handle this timing - // parameter real T_WR = T_RAS - T_RCD; //TODO: handle this timing - parameter real T_MRD = 14.0; - parameter real T_REF = 7_800.0; + localparam real T_INIT = 100_000.0; + localparam real T_RC = 60.0; + localparam real T_RP = 15.0; + localparam real T_RCD = 15.0; + localparam real T_MRD = 14.0; + localparam real T_REF = 7_800.0; - localparam real T_CLK = (1.0 / sc64::CLOCK_FREQUENCY) * 1_000_000_000.0; + localparam real T_CLK = (1.0 / 100_000_000) * 1_000_000_000.0; localparam int C_INIT = int'((T_INIT + T_CLK - 1) / T_CLK); localparam int C_RC = int'((T_RC + T_CLK - 1) / T_CLK); localparam int C_RP = int'((T_RP + T_CLK - 1) / T_CLK); localparam int C_RCD = int'((T_RCD + T_CLK - 1) / T_CLK); - // localparam int C_RAS = int'((T_RAS + T_CLK - 1) / T_CLK); - // localparam int C_WR = int'((T_WR + T_CLK - 1) / T_CLK); localparam int C_MRD = int'((T_MRD + T_CLK - 1) / T_CLK); localparam int C_REF = int'((T_REF + T_CLK - 1) / T_CLK); - localparam INIT_PRECHARGE = C_INIT; - localparam INIT_REFRESH_1 = C_INIT + C_RP; - localparam INIT_REFRESH_2 = C_INIT + C_RP + C_RC; - localparam INIT_MODE_REG = C_INIT + C_RP + (2 * C_RC); - localparam INIT_DONE = C_INIT + C_RP + (2 * C_RC) + C_MRD; + localparam INIT_PRECHARGE = 4'd0; + localparam INIT_REFRESH_1 = C_RP; + localparam INIT_REFRESH_2 = C_RP + C_RC; + localparam INIT_MODE_REG = C_RP + (2 * C_RC); + localparam INIT_DONE = C_RP + (2 * C_RC) + C_MRD; typedef enum bit [3:0] { CMD_DESL = 4'b1111, @@ -63,37 +56,51 @@ module memory_sdram ( logic [14:0] current_active_bank_row; logic request_in_current_active_bank_row; - always_ff @(posedge sys.clk) begin + always_ff @(posedge clk) begin {sdram_cs, sdram_ras, sdram_cas, sdram_we} <= 4'(sdram_next_cmd); {sdram_ba, sdram_a} <= 15'd0; + sdram_dqm <= 2'b00; sdram_dq_input <= sdram_dq; - sdram_dq_output <= wdata; + sdram_dq_output <= mem_bus.wdata; sdram_dq_output_enable <= 1'b0; case (sdram_next_cmd) CMD_READ, CMD_WRITE: begin - {sdram_ba, sdram_a} <= {address[25:24], 3'b000, address[10:1]}; - sdram_dq_output_enable <= sdram_next_cmd == CMD_WRITE; + {sdram_ba, sdram_a} <= {mem_bus.address[25:24], 3'b000, mem_bus.address[10:1]}; + sdram_dqm <= (sdram_next_cmd == CMD_WRITE) ? (~mem_bus.wmask) : 2'b00; + sdram_dq_output_enable <= (sdram_next_cmd == CMD_WRITE); end + CMD_ACT: begin - {sdram_ba, sdram_a} <= address[25:11]; - current_active_bank_row <= address[25:11]; + {sdram_ba, sdram_a} <= mem_bus.address[25:11]; + sdram_dqm <= 2'b00; + current_active_bank_row <= mem_bus.address[25:11]; + end + + CMD_PRE: begin + {sdram_ba, sdram_a} <= {2'b00, 2'b00, 1'b1, 10'd0}; + sdram_dqm <= 2'b00; + end + + CMD_MRS: begin + {sdram_ba, sdram_a} <= {2'b00, 1'b0, 1'b0, 2'b00, CAS_LATENCY, 1'b0, 3'b000}; + sdram_dqm <= 2'b00; end - CMD_PRE: {sdram_ba, sdram_a} <= {2'b00, 2'b00, 1'b1, 10'd0}; - CMD_MRS: {sdram_ba, sdram_a} <= {2'b00, 1'b0, 1'b0, 2'b00, CAS_LATENCY, 1'b0, 3'b000}; endcase end + assign sdram_dq = sdram_dq_output_enable ? sdram_dq_output : 16'hZZZZ; + always_comb begin - rdata = sdram_dq_input; - sdram_dq = sdram_dq_output_enable ? sdram_dq_output : 16'hZZZZ; - request_in_current_active_bank_row = address[25:11] == current_active_bank_row; + mem_bus.rdata = sdram_dq_input; + request_in_current_active_bank_row = mem_bus.address[25:11] == current_active_bank_row; end typedef enum bit [2:0] { + S_POWERUP, S_INIT, S_IDLE, S_ACTIVATING, @@ -106,44 +113,54 @@ module memory_sdram ( e_state state; e_state next_state; - always_ff @(posedge sys.clk) begin - if (sys.reset) begin - state <= S_INIT; + always_ff @(posedge clk) begin + if (reset) begin + state <= S_POWERUP; end else begin state <= next_state; end end - logic [13:0] wait_counter; + logic [13:0] powerup_coutner; + logic powerup_done; + logic [4:0] wait_counter; logic [9:0] refresh_counter; logic pending_refresh; - always_ff @(posedge sys.clk) begin - if (sys.reset || state != next_state) begin - wait_counter <= 14'd0; + always_ff @(posedge clk) begin + if (reset) begin + powerup_coutner <= 14'd0; + powerup_done <= 1'b0; + end else if (powerup_coutner < C_INIT) begin + powerup_coutner <= powerup_coutner + 1'd1; + end else begin + powerup_done <= 1'b1; + end + + if (reset || state != next_state) begin + wait_counter <= 5'd0; end else begin wait_counter <= wait_counter + 1'd1; end if (sdram_next_cmd == CMD_REF) begin refresh_counter <= 10'd0; - end else if (refresh_counter < 10'h3FF) begin + pending_refresh <= 1'b0; + end else if (refresh_counter < C_REF) begin refresh_counter <= refresh_counter + 1'd1; + end else begin + pending_refresh <= 1'b1; end end - always_comb begin - pending_refresh = refresh_counter >= C_REF; - end - logic [(CAS_LATENCY):0] read_cmd_ack_delay; - always_ff @(posedge sys.clk) begin - ack <= 1'b0; + always_ff @(posedge clk) begin + mem_bus.ack <= 1'b0; read_cmd_ack_delay <= {sdram_next_cmd == CMD_READ, read_cmd_ack_delay[(CAS_LATENCY):1]}; if (sdram_next_cmd == CMD_WRITE || read_cmd_ack_delay[0]) begin - ack <= 1'b1; + mem_bus.ack <= 1'b1; end end @@ -152,10 +169,14 @@ module memory_sdram ( next_state = state; case (state) - S_INIT: begin - if (wait_counter < INIT_PRECHARGE) begin - sdram_next_cmd = CMD_DESL; + S_POWERUP: begin + sdram_next_cmd = CMD_DESL; + if (powerup_done) begin + next_state = S_INIT; end + end + + S_INIT: begin if (wait_counter == INIT_PRECHARGE) begin sdram_next_cmd = CMD_PRE; end @@ -174,7 +195,7 @@ module memory_sdram ( if (pending_refresh) begin next_state = S_REFRESH; sdram_next_cmd = CMD_REF; - end else if (request) begin + end else if (mem_bus.request) begin next_state = S_ACTIVATING; sdram_next_cmd = CMD_ACT; end @@ -190,10 +211,10 @@ module memory_sdram ( if (pending_refresh) begin next_state = S_PRECHARGE; sdram_next_cmd = CMD_PRE; - end else if (request) begin + end else if (mem_bus.request) begin if (request_in_current_active_bank_row) begin next_state = S_BUSY; - sdram_next_cmd = write ? CMD_WRITE : CMD_READ; + sdram_next_cmd = mem_bus.write ? CMD_WRITE : CMD_READ; end else begin next_state = S_PRECHARGE; sdram_next_cmd = CMD_PRE; @@ -202,7 +223,7 @@ module memory_sdram ( end S_BUSY: begin - if (ack) begin + if (mem_bus.ack) begin next_state = S_ACTIVE; end end diff --git a/fw/rtl/n64/n64_bootloader.sv b/fw/rtl/n64/n64_bootloader.sv deleted file mode 100644 index 0f5942e..0000000 --- a/fw/rtl/n64/n64_bootloader.sv +++ /dev/null @@ -1,124 +0,0 @@ -module n64_bootloader ( - if_system.sys sys, - if_n64_bus bus, - if_flash.memory flash -); - - logic mem_request; - logic csr_ack; - logic data_ack; - logic write_ack; - logic data_busy; - logic mem_write; - logic [31:0] mem_address; - logic [31:0] csr_rdata; - logic [31:0] data_rdata; - logic [31:0] mem_wdata; - - typedef enum bit [0:0] { - S_IDLE, - S_WAIT - } e_state; - - typedef enum bit [0:0] { - T_N64, - T_CPU - } e_source_request; - - e_state state; - e_source_request source_request; - - always_ff @(posedge sys.clk) begin - csr_ack <= 1'b0; - write_ack <= 1'b0; - - if (sys.reset) begin - state <= S_IDLE; - mem_request <= 1'b0; - end else begin - case (state) - S_IDLE: begin - if (bus.request || flash.request) begin - state <= S_WAIT; - mem_request <= 1'b1; - if (bus.request) begin - mem_write <= 1'b0; - mem_address <= bus.address; - mem_wdata <= bus.wdata; - source_request <= T_N64; - end else if (flash.request) begin - mem_write <= flash.write; - mem_address <= flash.address; - mem_wdata <= flash.wdata; - source_request <= T_CPU; - end - end - end - - S_WAIT: begin - if (mem_address[27] && source_request != T_N64 && !csr_ack) begin - mem_request <= 1'b0; - csr_ack <= 1'b1; - end - if ((!mem_address[27] || source_request == T_N64) && !data_busy) begin - mem_request <= 1'b0; - end - if (!mem_address[27] && mem_write && !data_busy && !write_ack) begin - write_ack <= 1'b1; - end - if (csr_ack || data_ack || write_ack) begin - state <= S_IDLE; - end - end - endcase - end - end - - logic csr_or_data; - logic csr_read; - logic csr_write; - logic data_read; - logic data_write; - - always_comb begin - csr_or_data = mem_address[27] && source_request == T_CPU; - csr_read = csr_or_data && mem_request && !mem_write; - csr_write = csr_or_data && mem_request && mem_write; - data_read = !csr_or_data && mem_request && !mem_write; - data_write = !csr_or_data && mem_request && mem_write; - - bus.ack = source_request == T_N64 && data_ack; - bus.rdata = 16'd0; - if (bus.ack && bus.address >= 32'h10000000 && bus.address < 32'h10016800) begin - if (bus.address[1]) bus.rdata = {data_rdata[23:16], data_rdata[31:24]}; - else bus.rdata = {data_rdata[7:0], data_rdata[15:8]}; - end - - flash.ack = source_request == T_CPU && (csr_ack || data_ack || write_ack); - flash.rdata = 32'd0; - if (flash.ack) begin - flash.rdata = csr_or_data ? csr_rdata : data_rdata; - end - end - - intel_flash intel_flash_inst ( - .clock(sys.clk), - .reset_n(~sys.reset), - - .avmm_csr_addr(mem_address[2]), - .avmm_csr_read(csr_read), - .avmm_csr_writedata(mem_wdata), - .avmm_csr_write(csr_write), - .avmm_csr_readdata(csr_rdata), - - .avmm_data_addr(mem_address[31:2]), - .avmm_data_read(data_read), - .avmm_data_writedata(mem_wdata), - .avmm_data_write(data_write), - .avmm_data_readdata(data_rdata), - .avmm_data_waitrequest(data_busy), - .avmm_data_readdatavalid(data_ack), - .avmm_data_burstcount(2'd1) - ); - -endmodule diff --git a/fw/rtl/n64/n64_bus.sv b/fw/rtl/n64/n64_bus.sv deleted file mode 100644 index e3c90aa..0000000 --- a/fw/rtl/n64/n64_bus.sv +++ /dev/null @@ -1,67 +0,0 @@ -interface if_n64_bus (); - - localparam sc64::e_n64_id NUM_DEVICES = sc64::__ID_N64_END; - - sc64::e_n64_id id; - logic request; - logic ack; - logic write; - logic [31:0] address; - logic [15:0] wdata; - logic [15:0] rdata; - logic [31:0] real_address; - logic read_op; - logic write_op; - - logic device_ack [(NUM_DEVICES - 1):0]; - logic [15:0] device_rdata [(NUM_DEVICES - 1):0]; - - always_comb begin - ack = 1'b0; - rdata = 16'd0; - - for (integer i = 0; i < NUM_DEVICES; i++) begin - ack = ack | device_ack[i]; - rdata = rdata | device_rdata[i]; - end - end - - modport n64 ( - output id, - output request, - input ack, - output write, - output address, - output wdata, - input rdata, - - output real_address, - output read_op, - output write_op - ); - - genvar n; - generate - for (n = 0; n < NUM_DEVICES; n++) begin : at - logic device_request; - - always_comb begin - device_request = request && id == sc64::e_n64_id'(n); - end - - modport device ( - input .request(device_request), - output .ack(device_ack[n]), - input .write(write), - input .address(address), - input .wdata(wdata), - output .rdata(device_rdata[n]), - - input .real_address(real_address), - input .read_op(read_op), - input .write_op(write_op) - ); - end - endgenerate - -endinterface diff --git a/fw/rtl/n64/n64_cfg.sv b/fw/rtl/n64/n64_cfg.sv index 486d343..e5b4212 100644 --- a/fw/rtl/n64/n64_cfg.sv +++ b/fw/rtl/n64/n64_cfg.sv @@ -1,83 +1,137 @@ module n64_cfg ( - if_system sys, - if_n64_bus bus, - if_config.n64 cfg + input clk, + input reset, + + n64_reg_bus.cfg reg_bus, + + n64_scb.cfg n64_scb, + + output logic irq ); typedef enum bit [3:0] { - R_SR, - R_COMMAND, - R_DATA_0_H, - R_DATA_0_L, - R_DATA_1_H, - R_DATA_1_L, - R_VERSION_H, - R_VERSION_L - } e_reg_id; + REG_STATUS, + REG_COMMAND, + REG_DATA_0_H, + REG_DATA_0_L, + REG_DATA_1_H, + REG_DATA_1_L, + REG_VERSION_H, + REG_VERSION_L, + REG_KEY_H, + REG_KEY_L + } e_reg; - typedef enum bit [0:0] { - S_IDLE, - S_WAIT - } e_state; - - e_state state; + logic cfg_error; always_comb begin - bus.rdata = 16'd0; - if (bus.ack) begin - case (bus.address[3:1]) - R_SR: bus.rdata = { - cfg.cpu_ready, - cfg.cpu_busy, - 1'b0, - cfg.cmd_error, - 12'd0 + reg_bus.rdata = 16'd0; + if (reg_bus.address[16] && (reg_bus.address[15:5] == 11'd0)) begin + case (reg_bus.address[4:1]) + REG_STATUS: reg_bus.rdata = { + n64_scb.cfg_pending, + cfg_error, + irq, + 13'd0 }; - R_COMMAND: bus.rdata = {8'd0, cfg.cmd}; - R_DATA_0_H: bus.rdata = cfg.data[0][31:16]; - R_DATA_0_L: bus.rdata = cfg.data[0][15:0]; - R_DATA_1_H: bus.rdata = cfg.data[1][31:16]; - R_DATA_1_L: bus.rdata = cfg.data[1][15:0]; - R_VERSION_H: bus.rdata = sc64::SC64_VER[31:16]; - R_VERSION_L: bus.rdata = sc64::SC64_VER[15:0]; + REG_COMMAND: reg_bus.rdata = {8'd0, n64_scb.cfg_cmd}; + REG_DATA_0_H: reg_bus.rdata = n64_scb.cfg_wdata[0][31:16]; + REG_DATA_0_L: reg_bus.rdata = n64_scb.cfg_wdata[0][15:0]; + REG_DATA_1_H: reg_bus.rdata = n64_scb.cfg_wdata[1][31:16]; + REG_DATA_1_L: reg_bus.rdata = n64_scb.cfg_wdata[1][15:0]; + REG_VERSION_H: reg_bus.rdata = n64_scb.cfg_version[31:16]; + REG_VERSION_L: reg_bus.rdata = n64_scb.cfg_version[15:0]; + REG_KEY_H: reg_bus.rdata = 16'd0; + REG_KEY_L: reg_bus.rdata = 16'd0; endcase end end - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - cfg.cmd_request <= 1'b0; + logic unlock_flag; + logic lock_sequence_counter; - if (cfg.data_write[0]) cfg.data[0] <= cfg.wdata; - if (cfg.data_write[1]) cfg.data[1] <= cfg.wdata; + always_ff @(posedge clk) begin + if (n64_scb.cfg_done) begin + n64_scb.cfg_pending <= 1'b0; + cfg_error <= n64_scb.cfg_error; + end - if (sys.reset) begin - state <= S_IDLE; - end else begin - case (state) - S_IDLE: begin - if (bus.request) begin - state <= S_WAIT; - bus.ack <= 1'b1; - if (bus.write) begin - case (bus.address[3:1]) - R_COMMAND: begin - cfg.cmd <= bus.wdata[7:0]; - cfg.cmd_request <= 1'b1; - end - R_DATA_0_H: cfg.data[0][31:16] <= bus.wdata; - R_DATA_0_L: cfg.data[0][15:0] <= bus.wdata; - R_DATA_1_H: cfg.data[1][31:16] <= bus.wdata; - R_DATA_1_L: cfg.data[1][15:0] <= bus.wdata; - endcase + if (n64_scb.cfg_irq) begin + irq <= 1'b1; + end + + if (unlock_flag) begin + n64_scb.cfg_unlock <= 1'b1; + end + + if (reset || n64_scb.n64_reset || n64_scb.n64_nmi) begin + n64_scb.cfg_unlock <= 1'b0; + n64_scb.cfg_pending <= 1'b0; + n64_scb.cfg_cmd <= 8'h00; + irq <= 1'b0; + cfg_error <= 1'b0; + lock_sequence_counter <= 1'd0; + end else if (n64_scb.cfg_unlock) begin + if (reg_bus.write && reg_bus.address[16] && (reg_bus.address[15:5] == 11'd0)) begin + case (reg_bus.address[4:1]) + REG_COMMAND: begin + n64_scb.cfg_pending <= 1'b1; + n64_scb.cfg_cmd <= reg_bus.wdata[7:0]; + cfg_error <= 1'b0; + end + REG_DATA_0_H: n64_scb.cfg_rdata[0][31:16] <= reg_bus.wdata; + REG_DATA_0_L: n64_scb.cfg_rdata[0][15:0] <= reg_bus.wdata; + REG_DATA_1_H: n64_scb.cfg_rdata[1][31:16] <= reg_bus.wdata; + REG_DATA_1_L: n64_scb.cfg_rdata[1][15:0] <= reg_bus.wdata; + REG_VERSION_H: irq <= 1'b0; + REG_KEY_H, REG_KEY_L: begin + lock_sequence_counter <= lock_sequence_counter + 1'd1; + if (reg_bus.wdata != 16'hFFFF) begin + lock_sequence_counter <= 1'd0; + end + if (lock_sequence_counter == 1'd1) begin + n64_scb.cfg_unlock <= (reg_bus.wdata != 16'hFFFF); end end - end + endcase + end + end + end - S_WAIT: begin - state <= S_IDLE; - end - endcase + const bit [15:0] UNLOCK_SEQUENCE [4] = { + 16'h5F55, + 16'h4E4C, + 16'h4F43, + 16'h4B5F + }; + + logic [1:0] unlock_sequence_counter; + + always_ff @(posedge clk) begin + unlock_flag <= 1'b0; + + if (reset || n64_scb.n64_reset || n64_scb.n64_nmi) begin + unlock_sequence_counter <= 2'd0; + end else if (!n64_scb.cfg_unlock) begin + if (reg_bus.write && reg_bus.address[16] && (reg_bus.address[15:5] == 11'd0)) begin + case (reg_bus.address[4:1]) + REG_KEY_H, REG_KEY_L: begin + for (int index = 0; index < $size(UNLOCK_SEQUENCE); index++) begin + if (index == unlock_sequence_counter) begin + if (reg_bus.wdata == UNLOCK_SEQUENCE[index]) begin + unlock_sequence_counter <= unlock_sequence_counter + 1'd1; + if (index == ($size(UNLOCK_SEQUENCE) - 1'd1)) begin + unlock_flag <= 1'b1; + unlock_sequence_counter <= 2'd0; + end + end else begin + unlock_sequence_counter <= 2'd0; + end + end + end + end + endcase + end end end diff --git a/fw/rtl/n64/n64_dd.sv b/fw/rtl/n64/n64_dd.sv index 2c36d48..4716c2e 100644 --- a/fw/rtl/n64/n64_dd.sv +++ b/fw/rtl/n64/n64_dd.sv @@ -1,21 +1,4 @@ -interface if_dd ( - output dd_interrupt -); - - // Sector buffer regs - - logic [6:0] n64_sector_address; - logic n64_sector_address_valid; - logic n64_sector_write; - logic [15:0] n64_sector_wdata; - - logic [5:0] cpu_sector_address; - logic cpu_sector_address_valid; - logic cpu_sector_write; - logic [31:0] cpu_sector_wdata; - - logic [31:0] sector_rdata; - +interface dd_scb (); // N64 controlled regs @@ -55,11 +38,38 @@ interface if_dd ( logic [12:0] head_track; logic [15:0] drive_id; + modport controller ( + input hard_reset, + input data, + input cmd, + input cmd_pending, + input bm_start_pending, + input bm_stop_pending, + input bm_transfer_mode, + input bm_transfer_blocks, + input bm_pending, + input bm_interrupt_ack, + input sector_num, + input sector_size, + input sector_size_full, + input sectors_in_block, - always_comb begin - dd_interrupt = cmd_interrupt || bm_interrupt; - end - + output hard_reset_clear, + output cmd_data, + output cmd_ready, + output bm_start_clear, + output bm_stop_clear, + output bm_transfer_c2, + output bm_transfer_data, + output bm_micro_error, + output bm_ready, + output bm_clear, + output disk_inserted, + output disk_changed, + output index_lock, + output head_track, + output drive_id + ); modport dd ( output hard_reset, @@ -93,90 +103,36 @@ interface if_dd ( input disk_changed, input index_lock, input head_track, - input drive_id, - - output .sector_address(n64_sector_address), - output .sector_address_valid(n64_sector_address_valid), - output .sector_write(n64_sector_write), - output .sector_wdata(n64_sector_wdata), - input sector_rdata - ); - - modport cpu ( - input hard_reset, - input data, - input cmd, - input cmd_pending, - input bm_start_pending, - input bm_stop_pending, - input bm_transfer_mode, - input bm_transfer_blocks, - input bm_pending, - input bm_interrupt_ack, - input sector_num, - input sector_size, - input sector_size_full, - input sectors_in_block, - - output hard_reset_clear, - output cmd_data, - output cmd_ready, - output bm_start_clear, - output bm_stop_clear, - output bm_transfer_c2, - output bm_transfer_data, - output bm_micro_error, - output bm_ready, - output bm_clear, - output disk_inserted, - output disk_changed, - output index_lock, - output head_track, - output drive_id, - - output .sector_address(cpu_sector_address), - output .sector_address_valid(cpu_sector_address_valid), - output .sector_write(cpu_sector_write), - output .sector_wdata(cpu_sector_wdata), - input sector_rdata - ); - - modport sector_buffer ( - input n64_sector_address, - input n64_sector_address_valid, - input n64_sector_write, - input n64_sector_wdata, - - input cpu_sector_address, - input cpu_sector_address_valid, - input cpu_sector_write, - input cpu_sector_wdata, - - output sector_rdata + input drive_id ); endinterface module n64_dd ( - if_system.sys sys, - if_n64_bus bus, - if_dd.dd dd + input clk, + input reset, + + n64_reg_bus.dd reg_bus, + + n64_scb.dd n64_scb, + dd_scb.dd dd_scb, + + output logic irq ); - const bit [31:0] M_BASE = 32'h0500_0000; - const bit [31:0] M_C2_BUFFER = M_BASE + 11'h000; - const bit [31:0] M_SECTOR_BUFFER = M_BASE + 11'h400; + const bit [10:0] MEM_C2_BUFFER = 11'h000; + const bit [10:0] MEM_SECTOR_BUFFER = 11'h400; typedef enum bit [10:0] { - R_DATA = 11'h500, - R_CMD_SR = 11'h508, - R_TRK_CUR = 11'h50C, - R_BM_SCR = 11'h510, - R_RESET = 11'h520, - R_SEC_SIZ = 11'h528, - R_SEC_INFO = 11'h530, - R_ID = 11'h540 + REG_DATA = 11'h500, + REG_CMD_SR = 11'h508, + REG_TRK_CUR = 11'h50C, + REG_BM_SCR = 11'h510, + REG_RESET = 11'h520, + REG_SEC_SIZ = 11'h528, + REG_SEC_INFO = 11'h530, + REG_ID = 11'h540 } e_reg_id; typedef enum bit [3:0] { @@ -187,218 +143,144 @@ module n64_dd ( BM_CONTROL_MECHANIC_INTERRUPT_RESET = 4'd8 } e_bm_control_id; - typedef enum bit [0:0] { - S_IDLE, - S_WAIT - } e_state; - - e_state state; - always_comb begin - dd.sector_address = bus.address[7:1]; - dd.sector_address_valid = bus.request && bus.address[11:8] == M_SECTOR_BUFFER[11:8]; - dd.sector_write = bus.write && dd.sector_address_valid; - dd.sector_wdata = bus.wdata; - end - - always_comb begin - bus.rdata = 16'd0; - if (bus.ack) begin - if (bus.address[10:8] == M_SECTOR_BUFFER[10:8]) begin - if (bus.address[1]) begin - bus.rdata = dd.sector_rdata[15:0]; - end else begin - bus.rdata = dd.sector_rdata[31:16]; - end - end else begin - case (bus.address[10:0]) - R_DATA: bus.rdata = dd.data; - R_CMD_SR: bus.rdata = { - 1'b0, - dd.bm_transfer_data, - 1'b0, - dd.bm_transfer_c2, - 1'b0, - dd.bm_interrupt, - dd.cmd_interrupt, - dd.disk_inserted, - dd.cmd_pending, - dd.hard_reset, - 1'b0, - 1'b0, - 1'b0, - 1'b0, - 1'b0, - dd.disk_changed - }; - R_TRK_CUR: bus.rdata = {1'd0, {2{dd.index_lock}}, dd.head_track}; - R_BM_SCR: bus.rdata = {6'd0, dd.bm_micro_error, 9'd0}; - R_ID: bus.rdata = {dd.drive_id}; - default: bus.rdata = 16'd0; - endcase - end - end - end - - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - dd.bm_interrupt_ack <= 1'b0; - - if (dd.hard_reset_clear) begin - dd.hard_reset <= 1'b0; - end - if (dd.cmd_ready) begin - dd.data <= dd.cmd_data; - dd.cmd_pending <= 1'b0; - dd.cmd_interrupt <= 1'b1; - end - if (dd.bm_start_clear) begin - dd.bm_start_pending <= 1'b0; - end - if (dd.bm_stop_clear) begin - dd.bm_stop_pending <= 1'b0; - end - if (dd.bm_clear) begin - dd.bm_pending <= 1'b0; - end - if (dd.bm_ready) begin - dd.bm_interrupt <= 1'b1; - end - if (bus.real_address == (M_C2_BUFFER + ({dd.sector_size[7:1], 1'b0} * 3'd4)) && bus.read_op) begin - dd.bm_pending <= 1'b1; - end - if (bus.real_address == (M_SECTOR_BUFFER + {dd.sector_size[7:1], 1'b0}) && (bus.read_op || bus.write_op)) begin - dd.bm_pending <= 1'b1; - end - if (bus.real_address == (M_BASE + R_CMD_SR) && bus.read_op) begin - dd.bm_interrupt <= 1'b0; - dd.bm_interrupt_ack <= 1'b1; - end - - if (sys.reset || sys.n64_hard_reset) begin - dd.hard_reset <= 1'b1; - dd.cmd_pending <= 1'b0; - dd.cmd_interrupt <= 1'b0; - dd.bm_start_pending <= 1'b0; - dd.bm_stop_pending <= 1'b0; - dd.bm_pending <= 1'b0; - dd.bm_interrupt <= 1'b0; - state <= S_IDLE; + reg_bus.rdata = 16'd0; + if (reg_bus.address[10:8] == MEM_SECTOR_BUFFER[10:8]) begin + reg_bus.rdata = n64_scb.dd_rdata; end else begin - case (state) - S_IDLE: begin - if (bus.request) begin - state <= S_WAIT; - bus.ack <= 1'b1; - if (bus.write) begin - case (bus.address[10:0]) - R_DATA: begin - dd.data <= bus.wdata; - end + case (reg_bus.address[10:0]) + REG_DATA: reg_bus.rdata = dd_scb.data; + REG_CMD_SR: reg_bus.rdata = { + 1'b0, + dd_scb.bm_transfer_data, + 1'b0, + dd_scb.bm_transfer_c2, + 1'b0, + dd_scb.bm_interrupt, + dd_scb.cmd_interrupt, + dd_scb.disk_inserted, + dd_scb.cmd_pending, + dd_scb.hard_reset, + 1'b0, + 1'b0, + 1'b0, + 1'b0, + 1'b0, + dd_scb.disk_changed + }; + REG_TRK_CUR: reg_bus.rdata = {1'd0, {2{dd_scb.index_lock}}, dd_scb.head_track}; + REG_BM_SCR: reg_bus.rdata = {6'd0, dd_scb.bm_micro_error, 9'd0}; + REG_ID: reg_bus.rdata = dd_scb.drive_id; + endcase + end + end - R_CMD_SR: begin - dd.cmd <= bus.wdata[7:0]; - dd.cmd_pending <= 1'b1; - end + always_ff @(posedge clk) begin + dd_scb.bm_interrupt_ack <= 1'b0; - R_BM_SCR: begin - dd.sector_num <= bus.wdata[7:0]; - if (bus.wdata[BM_CONTROL_START_BUFFER_MANAGER]) begin - dd.bm_start_pending <= 1'b1; - dd.bm_stop_pending <= 1'b0; - dd.bm_transfer_mode <= bus.wdata[BM_CONTROL_BUFFER_MANAGER_MODE]; - dd.bm_transfer_blocks <= bus.wdata[BM_CONTROL_BLOCK_TRANSFER]; - end - if (bus.wdata[BM_CONTROL_BUFFER_MANAGER_RESET]) begin - dd.bm_start_pending <= 1'b0; - dd.bm_stop_pending <= 1'b1; - dd.bm_transfer_mode <= 1'b0; - dd.bm_transfer_blocks <= 1'b0; - dd.bm_pending <= 1'b0; - dd.bm_interrupt <= 1'b0; - end - if (bus.wdata[BM_CONTROL_MECHANIC_INTERRUPT_RESET]) begin - dd.cmd_interrupt <= 1'b0; - end - end + if (dd_scb.hard_reset_clear) begin + dd_scb.hard_reset <= 1'b0; + end + if (dd_scb.cmd_ready) begin + dd_scb.data <= dd_scb.cmd_data; + dd_scb.cmd_pending <= 1'b0; + dd_scb.cmd_interrupt <= 1'b1; + end + if (dd_scb.bm_start_clear) begin + dd_scb.bm_start_pending <= 1'b0; + end + if (dd_scb.bm_stop_clear) begin + dd_scb.bm_stop_pending <= 1'b0; + end + if (dd_scb.bm_clear) begin + dd_scb.bm_pending <= 1'b0; + end + if (dd_scb.bm_ready) begin + dd_scb.bm_interrupt <= 1'b1; + end + if (reg_bus.address[10:0] == (MEM_C2_BUFFER + ({dd_scb.sector_size[7:1], 1'b0} * 3'd4)) && reg_bus.read) begin + dd_scb.bm_pending <= 1'b1; + end + if (reg_bus.address[10:0] == (MEM_SECTOR_BUFFER + {dd_scb.sector_size[7:1], 1'b0}) && (reg_bus.read || reg_bus.write)) begin + dd_scb.bm_pending <= 1'b1; + end + if (reg_bus.address[10:0] == REG_CMD_SR && reg_bus.read) begin + dd_scb.bm_interrupt <= 1'b0; + dd_scb.bm_interrupt_ack <= 1'b1; + end - R_RESET: begin - if (bus.wdata == 16'hAAAA) begin - dd.hard_reset <= 1'b1; - dd.cmd_pending <= 1'b0; - dd.cmd_interrupt <= 1'b0; - dd.bm_start_pending <= 1'b0; - dd.bm_stop_pending <= 1'b0; - dd.bm_pending <= 1'b0; - dd.bm_interrupt <= 1'b0; - end - end + if (reset || n64_scb.n64_reset) begin + dd_scb.hard_reset <= 1'b1; + dd_scb.cmd_pending <= 1'b0; + dd_scb.cmd_interrupt <= 1'b0; + dd_scb.bm_start_pending <= 1'b0; + dd_scb.bm_stop_pending <= 1'b0; + dd_scb.bm_pending <= 1'b0; + dd_scb.bm_interrupt <= 1'b0; + end else if (reg_bus.write) begin + case (reg_bus.address[10:0]) + REG_DATA: begin + dd_scb.data <= reg_bus.wdata; + end - R_SEC_SIZ: begin - dd.sector_size <= bus.wdata[7:0]; - end + REG_CMD_SR: begin + dd_scb.cmd <= reg_bus.wdata[7:0]; + dd_scb.cmd_pending <= 1'b1; + end - R_SEC_INFO: begin - dd.sectors_in_block <= bus.wdata[15:8]; - dd.sector_size_full <= bus.wdata[7:0]; - end - endcase - end + REG_BM_SCR: begin + dd_scb.sector_num <= reg_bus.wdata[7:0]; + if (reg_bus.wdata[BM_CONTROL_START_BUFFER_MANAGER]) begin + dd_scb.bm_start_pending <= 1'b1; + dd_scb.bm_stop_pending <= 1'b0; + dd_scb.bm_transfer_mode <= reg_bus.wdata[BM_CONTROL_BUFFER_MANAGER_MODE]; + dd_scb.bm_transfer_blocks <= reg_bus.wdata[BM_CONTROL_BLOCK_TRANSFER]; + end + if (reg_bus.wdata[BM_CONTROL_BUFFER_MANAGER_RESET]) begin + dd_scb.bm_start_pending <= 1'b0; + dd_scb.bm_stop_pending <= 1'b1; + dd_scb.bm_transfer_mode <= 1'b0; + dd_scb.bm_transfer_blocks <= 1'b0; + dd_scb.bm_pending <= 1'b0; + dd_scb.bm_interrupt <= 1'b0; + end + if (reg_bus.wdata[BM_CONTROL_MECHANIC_INTERRUPT_RESET]) begin + dd_scb.cmd_interrupt <= 1'b0; end end - S_WAIT: begin - state <= S_IDLE; + REG_RESET: begin + if (reg_bus.wdata == 16'hAAAA) begin + dd_scb.hard_reset <= 1'b1; + dd_scb.cmd_pending <= 1'b0; + dd_scb.cmd_interrupt <= 1'b0; + dd_scb.bm_start_pending <= 1'b0; + dd_scb.bm_stop_pending <= 1'b0; + dd_scb.bm_pending <= 1'b0; + dd_scb.bm_interrupt <= 1'b0; + end + end + + REG_SEC_SIZ: begin + dd_scb.sector_size <= reg_bus.wdata[7:0]; + end + + REG_SEC_INFO: begin + dd_scb.sectors_in_block <= reg_bus.wdata[15:8]; + dd_scb.sector_size_full <= reg_bus.wdata[7:0]; end endcase end end -endmodule - - -module n64_dd_sector_buffer ( - if_system.sys sys, - if_dd.sector_buffer dd -); - - logic [5:0] sector_address; - logic [31:0] sector_buffer [0:63]; - logic [15:0] sector_high_buffer; - logic sector_write; - logic [31:0] sector_wdata; + always_comb begin + irq = dd_scb.cmd_interrupt || dd_scb.bm_interrupt; + end always_comb begin - sector_address = 6'd0; - sector_write = 1'b0; - sector_wdata = 32'd0; - - if (dd.n64_sector_address_valid) begin - sector_address = dd.n64_sector_address[6:1]; - end else if (dd.cpu_sector_address_valid) begin - sector_address = dd.cpu_sector_address; - end - - if (dd.n64_sector_write && dd.n64_sector_address[0]) begin - sector_write = 1'b1; - sector_wdata = {sector_high_buffer, dd.n64_sector_wdata}; - end else if (dd.cpu_sector_write) begin - sector_write = 1'b1; - sector_wdata = dd.cpu_sector_wdata; - end - end - - always_ff @(posedge sys.clk) begin - if (dd.n64_sector_write && !dd.n64_sector_address[0]) begin - sector_high_buffer <= dd.n64_sector_wdata; - end - end - - always_ff @(posedge sys.clk) begin - dd.sector_rdata <= sector_buffer[sector_address]; - if (sector_write) begin - sector_buffer[sector_address] <= sector_wdata; - end + n64_scb.dd_write = reg_bus.write && reg_bus.address[10:8] == MEM_SECTOR_BUFFER[10:8]; + n64_scb.dd_address = reg_bus.address[7:1]; + n64_scb.dd_wdata = reg_bus.wdata; end endmodule diff --git a/fw/rtl/n64/n64_flashram.sv b/fw/rtl/n64/n64_flashram.sv index 8ca686f..bbc9464 100644 --- a/fw/rtl/n64/n64_flashram.sv +++ b/fw/rtl/n64/n64_flashram.sv @@ -1,189 +1,152 @@ module n64_flashram ( - if_system.sys sys, - if_n64_bus bus, - if_config.flashram cfg, - if_flashram.flashram flashram + input clk, + input reset, + + n64_reg_bus.flashram reg_bus, + + n64_scb.flashram n64_scb ); localparam [31:0] FLASH_TYPE_ID = 32'h1111_8001; localparam [31:0] FLASH_MODEL_ID = 32'h00C2_001D; typedef enum bit [7:0] { - CMD_STATUS_MODE = 8'hD2, - CMD_READID_MODE = 8'hE1, - CMD_READ_MODE = 8'hF0, - CMD_ERASE_SECTOR = 8'h4B, - CMD_ERASE_CHIP = 8'h3C, - CMD_BUFFER_MODE = 8'hB4, - CMD_ERASE_START = 8'h78, - CMD_WRITE_START = 8'hA5 + CMD_STATUS_MODE = 8'hD2, + CMD_READID_MODE = 8'hE1, + CMD_READ_MODE = 8'hF0, + CMD_ERASE_SECTOR = 8'h4B, + CMD_ERASE_CHIP = 8'h3C, + CMD_BUFFER_MODE = 8'hB4, + CMD_ERASE_START = 8'h78, + CMD_WRITE_START = 8'hA5 } e_cmd; - typedef enum bit [0:0] { - S_IDLE, - S_WAIT - } e_bus_state; + typedef enum bit [1:0] { + STATE_STATUS, + STATE_ID, + STATE_READ, + STATE_BUFFER + } e_state; typedef enum bit [1:0] { - FS_STATUS, - FS_ID, - FS_READ, - FS_BUFFER - } e_flashram_state; + WRITE_BUSY, + ERASE_BUSY, + WRITE_DONE, + ERASE_DONE + } e_status_bits; - typedef enum bit [1:0] { - B_WRITE_BUSY, - B_ERASE_BUSY, - B_WRITE_DONE, - B_ERASE_DONE - } e_flashram_status; - - e_bus_state bus_state; - e_flashram_state flashram_state; - logic [3:0] flashram_status; - logic [7:0] flashram_command; - logic flashram_erase_enabled; - - logic [31:0] write_buffer [0:31]; - logic [1:0] write_buffer_wmask; - logic [15:0] high_buffer; + e_state state; + logic [3:0] status; + logic [7:0] cmd; + logic erase_enabled; always_comb begin - write_buffer_wmask = 2'b00; - if (bus.request && bus.write && !bus.address[16] && flashram_state == FS_BUFFER) begin - write_buffer_wmask[0] = !bus.address[1]; - write_buffer_wmask[1] = bus.address[1]; + n64_scb.flashram_read_mode = (state == STATE_READ); + + reg_bus.rdata = 16'd0; + if (state == STATE_ID) begin + case (reg_bus.address[2:1]) + 0: reg_bus.rdata = FLASH_TYPE_ID[31:16]; + 1: reg_bus.rdata = FLASH_TYPE_ID[15:0]; + 2: reg_bus.rdata = FLASH_MODEL_ID[31:16]; + 3: reg_bus.rdata = FLASH_MODEL_ID[15:0]; + endcase + end else if (reg_bus.address[1]) begin + reg_bus.rdata = {12'd0, status}; end end - always_ff @(posedge sys.clk) begin - if (write_buffer_wmask[0]) high_buffer <= bus.wdata; - end - - always_ff @(posedge sys.clk) begin - flashram.rdata <= write_buffer[flashram.address]; - if (write_buffer_wmask[1]) write_buffer[bus.address[6:2]] <= {high_buffer, bus.wdata}; - end - - always_comb begin - bus.rdata = 16'd0; - if (bus.ack) begin - if (bus.address[1]) begin - bus.rdata = {12'd0, flashram_status}; - end - if (flashram_state == FS_ID) begin - case (bus.address[2:1]) - 0: bus.rdata = FLASH_TYPE_ID[31:16]; - 1: bus.rdata = FLASH_TYPE_ID[15:0]; - 2: bus.rdata = FLASH_MODEL_ID[31:16]; - 3: bus.rdata = FLASH_MODEL_ID[15:0]; - endcase - end - end - - cfg.flashram_read_mode = flashram_state == FS_READ; - end - - always_ff @(posedge sys.clk) begin - bus.ack <= 1'b0; - - if (sys.reset) begin - bus_state <= S_IDLE; - flashram_state <= FS_STATUS; - flashram_status <= 4'b0000; - flashram_erase_enabled <= 1'b0; - flashram.operation_pending <= 1'b0; + always_ff @(posedge clk) begin + if (reset) begin + state <= STATE_STATUS; + status <= 4'b0000; + erase_enabled <= 1'b0; + n64_scb.flashram_pending <= 1'b0; end else begin - if (flashram.operation_done) begin - flashram.operation_pending <= 1'b0; - if (flashram.write_or_erase) begin - flashram_status[B_ERASE_BUSY] <= 1'b0; - flashram_status[B_ERASE_DONE] <= 1'b1; + if (n64_scb.flashram_done) begin + n64_scb.flashram_pending <= 1'b0; + if (n64_scb.flashram_write_or_erase) begin + status[ERASE_BUSY] <= 1'b0; + status[ERASE_DONE] <= 1'b1; end else begin - flashram_status[B_WRITE_BUSY] <= 1'b0; - flashram_status[B_WRITE_DONE] <= 1'b1; + status[WRITE_BUSY] <= 1'b0; + status[WRITE_DONE] <= 1'b1; end end - case (bus_state) - S_IDLE: begin - if (bus.request) begin - bus_state <= S_WAIT; - bus.ack <= 1'b1; - if (bus.write && !flashram.operation_pending) begin - if (bus.address[16]) begin - if (!bus.address[1]) begin - flashram_command <= bus.wdata[15:8]; - end else begin - flashram_erase_enabled <= 1'b0; + if (reg_bus.write && !n64_scb.flashram_pending) begin + if (reg_bus.address[16]) begin + if (!reg_bus.address[1]) begin + cmd <= reg_bus.wdata[15:8]; + end else begin + erase_enabled <= 1'b0; - case (flashram_command) - CMD_STATUS_MODE: begin - flashram_state <= FS_STATUS; - end + case (cmd) + CMD_STATUS_MODE: begin + state <= STATE_STATUS; + end - CMD_READID_MODE: begin - flashram_state <= FS_ID; - end + CMD_READID_MODE: begin + state <= STATE_ID; + end - CMD_READ_MODE: begin - flashram_state <= FS_READ; - end + CMD_READ_MODE: begin + state <= STATE_READ; + end - CMD_ERASE_SECTOR: begin - flashram_state <= FS_STATUS; - flashram_erase_enabled <= 1'b1; - flashram.sector <= bus.wdata[9:0]; - flashram.sector_or_all <= 1'b0; - end + CMD_ERASE_SECTOR: begin + state <= STATE_STATUS; + erase_enabled <= 1'b1; + n64_scb.flashram_sector <= reg_bus.wdata[9:0]; + n64_scb.flashram_sector_or_all <= 1'b0; + end - CMD_ERASE_CHIP: begin - flashram_state <= FS_STATUS; - flashram_erase_enabled <= 1'b1; - flashram.sector <= 10'd0; - flashram.sector_or_all <= 1'b1; - end + CMD_ERASE_CHIP: begin + state <= STATE_STATUS; + erase_enabled <= 1'b1; + n64_scb.flashram_sector <= 10'd0; + n64_scb.flashram_sector_or_all <= 1'b1; + end - CMD_BUFFER_MODE: begin - flashram_state <= FS_BUFFER; - end + CMD_BUFFER_MODE: begin + state <= STATE_BUFFER; + end - CMD_ERASE_START: begin - flashram_state <= FS_STATUS; - if (flashram_erase_enabled) begin - flashram_status[B_ERASE_BUSY] <= 1'b1; - flashram_status[B_ERASE_DONE] <= 1'b0; - flashram.operation_pending <= 1'b1; - flashram.write_or_erase <= 1'b1; - end - end - - CMD_WRITE_START: begin - flashram_state <= FS_STATUS; - flashram_status[B_WRITE_BUSY] <= 1'b1; - flashram_status[B_WRITE_DONE] <= 1'b0; - flashram.sector <= bus.wdata[9:0]; - flashram.operation_pending <= 1'b1; - flashram.write_or_erase <= 1'b0; - flashram.sector_or_all <= 1'b0; - end - endcase - end - end else begin - if (bus.address[1] && flashram_state == FS_STATUS) begin - flashram_status[B_ERASE_BUSY] <= bus.wdata[B_ERASE_BUSY]; - flashram_status[B_WRITE_BUSY] <= bus.wdata[B_WRITE_BUSY]; + CMD_ERASE_START: begin + state <= STATE_STATUS; + if (erase_enabled) begin + status[ERASE_BUSY] <= 1'b1; + status[ERASE_DONE] <= 1'b0; + n64_scb.flashram_pending <= 1'b1; + n64_scb.flashram_write_or_erase <= 1'b1; end end - end + + CMD_WRITE_START: begin + state <= STATE_STATUS; + status[WRITE_BUSY] <= 1'b1; + status[WRITE_DONE] <= 1'b0; + n64_scb.flashram_sector <= reg_bus.wdata[9:0]; + n64_scb.flashram_pending <= 1'b1; + n64_scb.flashram_write_or_erase <= 1'b0; + n64_scb.flashram_sector_or_all <= 1'b0; + end + endcase + end + end else begin + if (reg_bus.address[1] && state != STATE_BUFFER) begin + status[ERASE_BUSY] <= reg_bus.wdata[ERASE_BUSY]; + status[WRITE_BUSY] <= reg_bus.wdata[WRITE_BUSY]; end end - - S_WAIT: begin - bus_state <= S_IDLE; - end - endcase + end end end + always_comb begin + n64_scb.flashram_write = reg_bus.write && !reg_bus.address[16] && state == STATE_BUFFER; + n64_scb.flashram_address = reg_bus.address[6:1]; + n64_scb.flashram_wdata = reg_bus.wdata; + end + endmodule diff --git a/fw/rtl/n64/n64_pi.sv b/fw/rtl/n64/n64_pi.sv index 8d012c8..e15da47 100644 --- a/fw/rtl/n64/n64_pi.sv +++ b/fw/rtl/n64/n64_pi.sv @@ -1,8 +1,14 @@ module n64_pi ( - if_system.sys sys, - if_config.pi cfg, - if_n64_bus.n64 bus, + input clk, + input reset, + mem_bus.controller mem_bus, + n64_reg_bus.controller reg_bus, + + n64_scb.pi n64_scb, + + input n64_reset, + input n64_nmi, input n64_pi_alel, input n64_pi_aleh, input n64_pi_read, @@ -10,81 +16,36 @@ module n64_pi ( inout [15:0] n64_pi_ad ); - // FIFOs - - logic read_fifo_flush; - - logic read_fifo_full; - logic read_fifo_write; - logic [15:0] read_fifo_wdata; - - logic read_fifo_empty; - logic read_fifo_read; - logic [15:0] read_fifo_rdata; - - n64_pi_fifo read_fifo_inst ( - .sys(sys), - - .flush(read_fifo_flush), - - .full(read_fifo_full), - .write(read_fifo_write), - .wdata(read_fifo_wdata), - - .empty(read_fifo_empty), - .read(read_fifo_read), - .rdata(read_fifo_rdata) - ); - - logic write_fifo_flush; - - logic write_fifo_full; - logic write_fifo_write; - logic [15:0] write_fifo_wdata; - - logic write_fifo_empty; - logic write_fifo_read; - logic [15:0] write_fifo_rdata; - - n64_pi_fifo write_fifo_inst ( - .sys(sys), - - .flush(write_fifo_flush), - - .full(write_fifo_full), - .write(write_fifo_write), - .wdata(write_fifo_wdata), - - .empty(write_fifo_empty), - .read(write_fifo_read), - .rdata(write_fifo_rdata) - ); - - // Control signals and input synchronization - logic [2:0] n64_pi_alel_ff; - logic [2:0] n64_pi_aleh_ff; - logic [2:0] n64_pi_read_ff; + logic [1:0] n64_reset_ff; + logic [1:0] n64_nmi_ff; + logic [3:0] n64_pi_alel_ff; + logic [3:0] n64_pi_aleh_ff; + logic [1:0] n64_pi_read_ff; logic [2:0] n64_pi_write_ff; - always_ff @(posedge sys.clk) begin - n64_pi_aleh_ff <= {n64_pi_aleh_ff[1:0], n64_pi_aleh}; - n64_pi_alel_ff <= {n64_pi_alel_ff[1:0], n64_pi_alel}; - n64_pi_read_ff <= {n64_pi_read_ff[1:0], n64_pi_read}; + always_ff @(posedge clk) begin + n64_reset_ff <= {n64_reset_ff[0], n64_reset}; + n64_nmi_ff <= {n64_nmi_ff[0], n64_nmi}; + n64_pi_aleh_ff <= {n64_pi_aleh_ff[2:0], n64_pi_aleh}; + n64_pi_alel_ff <= {n64_pi_alel_ff[2:0], n64_pi_alel}; + n64_pi_read_ff <= {n64_pi_read_ff[0], n64_pi_read}; n64_pi_write_ff <= {n64_pi_write_ff[1:0], n64_pi_write}; end logic pi_reset; + logic pi_nmi; logic pi_aleh; logic pi_alel; logic pi_read; logic pi_write; always_comb begin - pi_reset = sys.n64_hard_reset; - pi_aleh = n64_pi_aleh_ff[2]; - pi_alel = n64_pi_alel_ff[2]; + pi_reset = n64_reset_ff[1]; + pi_nmi = n64_nmi_ff[1]; + pi_aleh = n64_pi_aleh_ff[3]; + pi_alel = n64_pi_alel_ff[3]; pi_read = n64_pi_read_ff[1]; pi_write = n64_pi_write_ff[2]; end @@ -99,16 +60,30 @@ module n64_pi ( PI_MODE_VALID = 2'b00 } e_pi_mode; + typedef enum bit [1:0] { + PORT_NONE, + PORT_MEM, + PORT_REG + } e_port; + e_pi_mode pi_mode; - e_pi_mode last_pi_mode; - logic last_read; - logic last_write; + + e_port read_port; + e_port write_port; always_comb begin pi_mode = e_pi_mode'({pi_aleh, pi_alel}); end - always_ff @(posedge sys.clk) begin + logic last_reset; + logic last_nmi; + e_pi_mode last_pi_mode; + logic last_read; + logic last_write; + + always_ff @(posedge clk) begin + last_reset <= pi_reset; + last_nmi <= pi_nmi; last_pi_mode <= pi_mode; last_read <= pi_read; last_write <= pi_write; @@ -121,250 +96,394 @@ module n64_pi ( logic end_op; always_comb begin - aleh_op = !pi_reset && last_pi_mode != PI_MODE_HIGH && pi_mode == PI_MODE_HIGH; - alel_op = !pi_reset && last_pi_mode == PI_MODE_HIGH && pi_mode == PI_MODE_LOW; - read_op = !pi_reset && pi_mode == PI_MODE_VALID && last_read && !pi_read; - write_op = !pi_reset && pi_mode == PI_MODE_VALID && last_write && !pi_write; - end_op = !pi_reset && last_pi_mode == PI_MODE_VALID && pi_mode != PI_MODE_VALID; + n64_scb.n64_reset = !last_reset && pi_reset; + n64_scb.n64_nmi = !last_nmi && pi_nmi; + aleh_op = pi_reset && (last_pi_mode != PI_MODE_HIGH) && (pi_mode == PI_MODE_HIGH); + alel_op = pi_reset && (last_pi_mode == PI_MODE_HIGH) && (pi_mode == PI_MODE_LOW); + read_op = pi_reset && (pi_mode == PI_MODE_VALID) && (read_port != PORT_NONE) && (last_read && !pi_read); + write_op = pi_reset && (pi_mode == PI_MODE_VALID) && (write_port != PORT_NONE) && (last_write && !pi_write); + end_op = pi_reset && (last_pi_mode == PI_MODE_VALID) && (pi_mode != PI_MODE_VALID); end // Input and output data sampling - logic [15:0] n64_pi_ad_input; - logic [15:0] n64_pi_ad_output; - logic [15:0] n64_pi_ad_output_data; - logic n64_pi_ad_output_enable; - logic n64_pi_ad_output_enable_data; - - logic n64_pi_address_valid; - logic pending_operation; - logic pending_write; + logic n64_pi_ad_oe; + logic [15:0] n64_pi_ad_out; + logic [15:0] n64_pi_dq_in; + logic [15:0] n64_pi_dq_out; - always_comb begin - n64_pi_ad = n64_pi_ad_output_enable ? n64_pi_ad_output : 16'hZZZZ; - n64_pi_ad_output_enable_data = !pi_reset && pi_mode == PI_MODE_VALID && n64_pi_address_valid && !n64_pi_read_ff[2]; + assign n64_pi_ad = n64_pi_ad_oe ? n64_pi_ad_out : 16'hZZZZ; + + always_ff @(posedge clk) begin + n64_pi_ad_oe <= pi_reset && (pi_mode == PI_MODE_VALID) && !last_read && (read_port != PORT_NONE); + n64_pi_ad_out <= n64_pi_dq_out; + n64_pi_dq_in <= n64_pi_ad; end - always_ff @(posedge sys.clk) begin - n64_pi_ad_input <= n64_pi_ad; - n64_pi_ad_output <= n64_pi_ad_output_data; - n64_pi_ad_output_enable <= n64_pi_ad_output_enable_data; - end - - logic wait_for_read_fifo; - logic wait_for_write_fifo; - always_comb begin - read_fifo_write = bus.ack && !bus.write; - read_fifo_wdata = bus.rdata; - - write_fifo_wdata = n64_pi_ad_input; - end + // Debug: last accessed PI address - always_ff @(posedge sys.clk) begin - read_fifo_read <= 1'b0; - write_fifo_write <= 1'b0; - - if (sys.reset || sys.n64_hard_reset) begin - wait_for_read_fifo <= 1'b0; - wait_for_write_fifo <= 1'b0; - end else if (n64_pi_address_valid) begin - if (read_op || wait_for_read_fifo) begin - if (read_fifo_empty) begin - wait_for_read_fifo <= 1'b1; - end else begin - n64_pi_ad_output_data <= read_fifo_rdata; - read_fifo_read <= 1'b1; - wait_for_read_fifo <= 1'b0; - end - end - if (write_op || wait_for_write_fifo) begin - if (write_fifo_full) begin - wait_for_write_fifo <= 1'b1; - end else begin - write_fifo_write <= 1'b1; - wait_for_write_fifo <= 1'b0; - end - end - end - end - - always_comb begin - bus.read_op = read_op; - bus.write_op = write_op; - end - - always_ff @(posedge sys.clk) begin + always_ff @(posedge clk) begin if (aleh_op) begin - bus.real_address[31:16] <= n64_pi_ad_input; + n64_scb.pi_debug[31:16] <= n64_pi_dq_in; end if (alel_op) begin - bus.real_address[15:0] <= {n64_pi_ad_input[15:1], 1'b0}; - end - if (read_op || write_op) begin - bus.real_address <= bus.real_address + 2'd2; + n64_scb.pi_debug[15:0] <= n64_pi_dq_in; end end // Address decoding - sc64::e_n64_id next_id; - logic [31:0] next_offset; - logic sram_selected; - logic cfg_selected; + const bit [31:0] DDIPL_OFFSET = 32'h03BC_0000; + const bit [31:0] SAVE_OFFSET = 32'h03FE_0000; + const bit [31:0] FLASH_OFFSET = 32'h0400_0000; + const bit [31:0] BOOTLOADER_OFFSET = 32'h04E0_0000; + const bit [31:0] SHADOW_OFFSET = 32'h04FE_0000; + const bit [31:0] BUFFER_OFFSET = 32'h0500_0000; - always_ff @(posedge sys.clk) begin - if (aleh_op) begin - n64_pi_address_valid <= 1'b0; - next_offset <= 32'd0; - sram_selected <= 1'b0; - cfg_selected <= 1'b0; - if (cfg.dd_enabled) begin - if (n64_pi_ad_input == 16'h0500) begin - n64_pi_address_valid <= 1'b1; - next_id <= sc64::ID_N64_DD; - end - if (n64_pi_ad_input >= 16'h0600 && n64_pi_ad_input < 16'h0640) begin - n64_pi_address_valid <= 1'b1; - next_id <= sc64::ID_N64_SDRAM; - next_offset <= cfg.ddipl_offset + 32'h0A00_0000; + logic [31:0] mem_offset; + + always_ff @(posedge clk) begin + if (reset || !pi_reset || end_op) begin + n64_scb.pi_sdram_active <= 1'b0; + n64_scb.pi_flash_active <= 1'b0; + end + + if (reset) begin + read_port <= PORT_NONE; + write_port <= PORT_NONE; + reg_bus.dd_select <= 1'b0; + reg_bus.flashram_select <= 1'b0; + reg_bus.cfg_select <= 1'b0; + end else if (aleh_op) begin + read_port <= PORT_NONE; + write_port <= PORT_NONE; + mem_offset <= 32'd0; + reg_bus.dd_select <= 1'b0; + reg_bus.flashram_select <= 1'b0; + reg_bus.cfg_select <= 1'b0; + + if (n64_scb.dd_enabled) begin + if (n64_pi_dq_in == 16'h0500) begin + read_port <= PORT_REG; + write_port <= PORT_REG; + reg_bus.dd_select <= 1'b1; end end - if (cfg.flashram_enabled) begin - if (n64_pi_ad_input >= 16'h0800 && n64_pi_ad_input < 16'h0802) begin - n64_pi_address_valid <= 1'b1; - next_id <= sc64::ID_N64_FLASHRAM; - if (cfg.flashram_read_mode) begin - next_offset <= cfg.save_offset + 32'h0800_0000; + + if (n64_scb.ddipl_enabled) begin + if (n64_pi_dq_in >= 16'h0600 && n64_pi_dq_in < 16'h0640) begin + read_port <= PORT_MEM; + write_port <= PORT_NONE; + mem_offset <= (-32'h0600_0000) + DDIPL_OFFSET; + n64_scb.pi_sdram_active <= 1'b1; + end + end + + if (n64_scb.flashram_enabled) begin + if (n64_pi_dq_in >= 16'h0800 && n64_pi_dq_in < 16'h0802) begin + read_port <= PORT_REG; + write_port <= PORT_REG; + mem_offset <= (-32'h0800_0000) + SAVE_OFFSET; + reg_bus.flashram_select <= 1'b1; + if (n64_scb.flashram_read_mode) begin + read_port <= PORT_MEM; + n64_scb.pi_sdram_active <= 1'b1; end end - end else if (cfg.sram_enabled) begin - if (cfg.sram_banked) begin - if (n64_pi_ad_input >= 16'h0800 && n64_pi_ad_input < 16'h0810) begin - if (n64_pi_ad_input[3:2] != 2'b11 && n64_pi_ad_input[1:0] == 2'b00) begin - n64_pi_address_valid <= 1'b1; - next_id <= sc64::ID_N64_SDRAM; - next_offset <= cfg.save_offset - {n64_pi_ad_input[3:2], 18'd0} + {n64_pi_ad_input[3:2], 15'd0} + 32'h0800_0000; - sram_selected <= 1'b1; + end else if (n64_scb.sram_enabled) begin + if (n64_scb.sram_banked) begin + if (n64_pi_dq_in >= 16'h0800 && n64_pi_dq_in < 16'h0810) begin + if (n64_pi_dq_in[3:2] != 2'b11 && n64_pi_dq_in[1:0] == 2'b00) begin + read_port <= PORT_MEM; + write_port <= PORT_MEM; + mem_offset <= (-32'h0800_0000) - {n64_pi_dq_in[3:2], 18'd0} + {n64_pi_dq_in[3:2], 15'd0} + SAVE_OFFSET; + n64_scb.pi_sdram_active <= 1'b1; end end end else begin - if (n64_pi_ad_input == 16'h0800) begin - n64_pi_address_valid <= 1'b1; - next_id <= sc64::ID_N64_SDRAM; - next_offset <= cfg.save_offset + 32'h0800_0000; - sram_selected <= 1'b1; + if (n64_pi_dq_in >= 16'h0800 && n64_pi_dq_in < 16'h0802) begin + read_port <= PORT_MEM; + write_port <= PORT_MEM; + mem_offset <= (-32'h0800_0000) + SAVE_OFFSET; + n64_scb.pi_sdram_active <= 1'b1; end end end - if (n64_pi_ad_input >= 16'h1000 && n64_pi_ad_input < 16'h1400) begin - n64_pi_address_valid <= 1'b1; - next_id <= cfg.sdram_switch ? sc64::ID_N64_SDRAM : sc64::ID_N64_BOOTLOADER; - end - if (n64_pi_ad_input == 16'h1FFF) begin - n64_pi_address_valid <= 1'b1; - next_id <= sc64::ID_N64_CFG; - cfg_selected <= 1'b1; - end - end - if (alel_op) begin - if (next_id == sc64::ID_N64_DD) begin - if (|n64_pi_ad_input[15:11]) begin - n64_pi_address_valid <= 1'b0; + + if (n64_scb.bootloader_enabled) begin + if (n64_pi_dq_in >= 16'h1000 && n64_pi_dq_in < 16'h101C) begin + read_port <= PORT_MEM; + write_port <= PORT_NONE; + mem_offset <= (-32'h1000_0000) + BOOTLOADER_OFFSET; + n64_scb.pi_flash_active <= 1'b1; + end + end else begin + if (n64_pi_dq_in >= 16'h1000 && n64_pi_dq_in < 16'h1400) begin + read_port <= PORT_MEM; + write_port <= n64_scb.rom_write_enabled ? PORT_MEM : PORT_NONE; + mem_offset <= (-32'h1000_0000); + n64_scb.pi_sdram_active <= 1'b1; end end - if (sram_selected) begin - if (n64_pi_ad_input[15]) begin - n64_pi_address_valid <= 1'b0; + + if (n64_scb.rom_shadow_enabled) begin + if (n64_pi_dq_in >= 16'h13FE && n64_pi_dq_in < 16'h1400) begin + read_port <= PORT_MEM; + write_port <= PORT_NONE; + mem_offset <= (-32'h13FE_0000) + SHADOW_OFFSET; + n64_scb.pi_flash_active <= 1'b1; end end - if (cfg_selected) begin - if (|n64_pi_ad_input[15:4]) begin - n64_pi_address_valid <= 1'b0; + + if (n64_scb.rom_extended_enabled) begin + if (n64_pi_dq_in >= 16'h1400 && n64_pi_dq_in < 16'h14E0) begin + read_port <= PORT_MEM; + write_port <= PORT_NONE; + mem_offset <= (-32'h1400_0000) + FLASH_OFFSET; + n64_scb.pi_flash_active <= 1'b1; end end + + if (n64_scb.cfg_unlock) begin + if (n64_pi_dq_in >= 16'h1FFC && n64_pi_dq_in < 16'h1FFE) begin + read_port <= PORT_MEM; + write_port <= PORT_NONE; + mem_offset <= (-32'h1FFC_0000) + SHADOW_OFFSET; + n64_scb.pi_flash_active <= 1'b1; + end + + if (n64_pi_dq_in >= 16'h1FFE && n64_pi_dq_in < 16'h1FFF) begin + read_port <= PORT_MEM; + write_port <= PORT_MEM; + mem_offset <= (-32'h1FFE_0000) + BUFFER_OFFSET; + end + end + + if (n64_pi_dq_in >= 16'h1FFF && n64_pi_dq_in < 16'h2000) begin + read_port <= n64_scb.cfg_unlock ? PORT_REG : PORT_NONE; + write_port <= PORT_REG; + reg_bus.cfg_select <= 1'b1; + end end end - // Bus controller + // Mem bus read FIFO controller + + logic read_fifo_full; + logic read_fifo_write; + logic [15:0] read_fifo_wdata; + + logic read_fifo_empty; + logic read_fifo_read; + logic [15:0] read_fifo_rdata; + + logic read_fifo_wait; + + n64_pi_fifo read_fifo_inst ( + .clk(clk), + .reset(reset), + + .flush(reset || !pi_reset || alel_op), + + .full(read_fifo_full), + .write(read_fifo_write), + .wdata(read_fifo_wdata), + + .empty(read_fifo_empty), + .read(read_fifo_read), + .rdata(read_fifo_rdata) + ); + + always_ff @(posedge clk) begin + read_fifo_read <= 1'b0; + + if (!pi_reset) begin + n64_scb.pi_debug[33:32] <= 2'b00; + end + + if (reset || !pi_reset || alel_op) begin + read_fifo_wait <= 1'b0; + end + + if (read_port == PORT_MEM) begin + if (read_op) begin + if (read_fifo_empty) begin + read_fifo_wait <= 1'b1; + n64_scb.pi_debug[32] <= 1'b1; + if (read_fifo_wait) begin + n64_scb.pi_debug[33] <= 1'b1; + end + end else begin + read_fifo_read <= 1'b1; + n64_pi_dq_out <= read_fifo_rdata; + end + end + + if (!read_fifo_empty && read_fifo_wait) begin + read_fifo_read <= 1'b1; + read_fifo_wait <= 1'b0; + n64_pi_dq_out <= read_fifo_rdata; + end + end + + if (read_port == PORT_REG) begin + if (read_op) begin + n64_pi_dq_out <= reg_bus.rdata; + end + end + end + + + // Mem bus write FIFO controller + + logic write_fifo_full; + logic write_fifo_write; + logic [15:0] write_fifo_wdata; + + logic write_fifo_empty; + logic write_fifo_read; + logic [15:0] write_fifo_rdata; + + logic write_fifo_wait; + + n64_pi_fifo write_fifo_inst ( + .clk(clk), + .reset(reset), + + .flush(reset), + + .full(write_fifo_full), + .write(write_fifo_write), + .wdata(write_fifo_wdata), + + .empty(write_fifo_empty), + .read(write_fifo_read), + .rdata(write_fifo_rdata) + ); + + always_ff @(posedge clk) begin + write_fifo_write <= 1'b0; + + if (!pi_reset) begin + n64_scb.pi_debug[35:34] <= 2'b00; + end + + if (reset) begin + write_fifo_wait <= 1'b0; + end + + if (write_port == PORT_MEM) begin + if (write_op) begin + if (write_fifo_full) begin + write_fifo_wait <= 1'b1; + n64_scb.pi_debug[34] <= 1'b1; + if (write_fifo_wait) begin + n64_scb.pi_debug[35] <= 1'b1; + end + end else begin + write_fifo_write <= 1'b1; + write_fifo_wdata <= n64_pi_dq_in; + end + end + + if (!write_fifo_full && write_fifo_wait) begin + write_fifo_write <= 1'b1; + write_fifo_wait <= 1'b0; + write_fifo_wdata <= n64_pi_dq_in; + end + end + end + + + // Mem bus controller - logic can_read; - logic first_write_op; - logic load_starting_address; - sc64::e_n64_id starting_id; logic [31:0] starting_address; + logic load_starting_address; + logic read_enabled; + logic first_write_op; - always_ff @(posedge sys.clk) begin - read_fifo_flush <= 1'b0; - + always_ff @(posedge clk) begin write_fifo_read <= 1'b0; + load_starting_address <= 1'b0; - if (sys.reset || sys.n64_hard_reset) begin - bus.request <= 1'b0; - read_fifo_flush <= 1'b1; - write_fifo_flush <= 1'b1; + if (reset || !pi_reset) begin + mem_bus.request <= 1'b0; + read_enabled <= 1'b0; end else begin - write_fifo_flush <= starting_id == sc64::ID_N64_SDRAM && !cfg.sdram_writable && !sram_selected; - if (aleh_op) begin - starting_address[31:16] <= n64_pi_ad_input; + starting_address[31:16] <= n64_pi_dq_in; end if (alel_op) begin - read_fifo_flush <= 1'b1; - can_read <= 1'b1; - first_write_op <= 1'b1; + starting_address <= {starting_address[31:16], n64_pi_dq_in} + mem_offset; load_starting_address <= 1'b1; - starting_id <= next_id; - starting_address <= {starting_address[31:16], n64_pi_ad_input[15:1], 1'b0}; + read_enabled <= 1'b1; + first_write_op <= 1'b1; end - if (write_op) begin - can_read <= 1'b0; - if (first_write_op) begin - first_write_op <= 1'b0; - load_starting_address <= 1'b1; - end + if (load_starting_address) begin + mem_bus.address <= starting_address; end - if (!bus.request) begin - if (!write_fifo_empty) begin - bus.request <= 1'b1; - bus.write <= 1'b1; - if (load_starting_address) begin - bus.id <= starting_id; - bus.address <= starting_address + next_offset; - if (starting_id == sc64::ID_N64_FLASHRAM) begin - bus.address <= starting_address; - end - load_starting_address <= 1'b0; - end - bus.wdata <= write_fifo_rdata; + if (!mem_bus.request) begin + if ((write_port == PORT_MEM) && !write_fifo_empty) begin + mem_bus.request <= 1'b1; + mem_bus.write <= 1'b1; + mem_bus.wdata <= write_fifo_rdata; write_fifo_read <= 1'b1; - end else if (!read_fifo_full && can_read) begin - bus.request <= 1'b1; - bus.write <= 1'b0; - if (load_starting_address) begin - bus.id <= starting_id; - bus.address <= starting_address + next_offset; - if (starting_id == sc64::ID_N64_FLASHRAM && cfg.flashram_read_mode) begin - bus.id <= sc64::ID_N64_SDRAM; - end - load_starting_address <= 1'b0; + read_enabled <= 1'b0; + if (first_write_op) begin + mem_bus.address <= starting_address; + first_write_op <= 1'b0; end + end else if ((read_port == PORT_MEM) && !read_fifo_full && read_enabled) begin + mem_bus.request <= 1'b1; + mem_bus.write <= 1'b0; end - end else if (bus.ack) begin - bus.request <= 1'b0; - bus.address <= bus.address + 2'd2; + end + + if (mem_bus.ack) begin + mem_bus.request <= 1'b0; + mem_bus.address[16:0] <= mem_bus.address[16:0] + 2'd2; end if (end_op) begin - can_read <= 1'b0; + read_enabled <= 1'b0; end end end + always_comb begin + read_fifo_write = !mem_bus.write && mem_bus.ack; + read_fifo_wdata = mem_bus.rdata; + mem_bus.wmask = 2'b11; + end + + + // Reg bus controller + + always_ff @(posedge clk) begin + if (aleh_op) begin + reg_bus.address[16] <= n64_pi_dq_in[0]; + end + + if (alel_op) begin + reg_bus.address[15:0] <= n64_pi_dq_in; + end + + if (read_op || write_op) begin + reg_bus.address <= reg_bus.address + 2'd2; + end + end + + always_comb begin + reg_bus.read = read_op && (read_port == PORT_REG); + reg_bus.write = write_op && (write_port == PORT_REG); + reg_bus.wdata = n64_pi_dq_in; + end + endmodule diff --git a/fw/rtl/n64/n64_pi_fifo.sv b/fw/rtl/n64/n64_pi_fifo.sv index 63dde9e..80c27bd 100644 --- a/fw/rtl/n64/n64_pi_fifo.sv +++ b/fw/rtl/n64/n64_pi_fifo.sv @@ -1,5 +1,6 @@ module n64_pi_fifo ( - if_system.sys sys, + input clk, + input reset, input flush, @@ -18,15 +19,13 @@ module n64_pi_fifo ( logic empty_or_full; - always_comb begin - rdata = fifo_mem[fifo_rd_ptr[1:0]]; - empty_or_full = fifo_wr_ptr[1:0] == fifo_rd_ptr[1:0]; - empty = empty_or_full && fifo_wr_ptr[2] == fifo_rd_ptr[2]; - full = empty_or_full && fifo_wr_ptr[2] != fifo_rd_ptr[2]; - end + assign rdata = fifo_mem[fifo_rd_ptr[1:0]]; + assign empty_or_full = fifo_wr_ptr[1:0] == fifo_rd_ptr[1:0]; + assign empty = empty_or_full && fifo_wr_ptr[2] == fifo_rd_ptr[2]; + assign full = empty_or_full && fifo_wr_ptr[2] != fifo_rd_ptr[2]; - always_ff @(posedge sys.clk) begin - if (sys.reset || flush) begin + always_ff @(posedge clk) begin + if (reset || flush) begin fifo_wr_ptr <= 3'd0; fifo_rd_ptr <= 3'd0; end else begin diff --git a/fw/rtl/n64/n64_reg_bus.sv b/fw/rtl/n64/n64_reg_bus.sv new file mode 100644 index 0000000..07573b7 --- /dev/null +++ b/fw/rtl/n64/n64_reg_bus.sv @@ -0,0 +1,66 @@ +interface n64_reg_bus (); + + logic flashram_select; + logic dd_select; + logic cfg_select; + + logic read; + logic write; + logic [16:0] address; + logic [15:0] rdata; + logic [15:0] wdata; + + logic [15:0] flashram_rdata; + logic [15:0] dd_rdata; + logic [15:0] cfg_rdata; + + modport controller ( + output flashram_select, + output dd_select, + output cfg_select, + + output read, + output write, + output address, + input rdata, + output wdata + ); + + always_comb begin + rdata = 16'd0; + if (flashram_select) begin + rdata = flashram_rdata; + end + if (dd_select) begin + rdata = dd_rdata; + end + if (cfg_select) begin + rdata = cfg_rdata; + end + end + + modport flashram ( + input .read(read && flashram_select), + input .write(write && flashram_select), + input address, + output .rdata(flashram_rdata), + input wdata + ); + + modport dd ( + input .read(read && dd_select), + input .write(write && dd_select), + input address, + output .rdata(dd_rdata), + input wdata + ); + + modport cfg ( + input .read(read && cfg_select), + input .write(write && cfg_select), + input address, + output .rdata(cfg_rdata), + input wdata + ); + +endinterface diff --git a/fw/rtl/n64/n64_scb.sv b/fw/rtl/n64/n64_scb.sv new file mode 100644 index 0000000..c61f103 --- /dev/null +++ b/fw/rtl/n64/n64_scb.sv @@ -0,0 +1,197 @@ +interface n64_scb (); + + logic n64_reset; + logic n64_nmi; + + logic bootloader_enabled; + logic rom_write_enabled; + logic rom_shadow_enabled; + logic rom_extended_enabled; + logic sram_enabled; + logic sram_banked; + logic flashram_enabled; + logic dd_enabled; + logic ddipl_enabled; + logic eeprom_enabled; + logic eeprom_16k_mode; + + logic dd_write; + logic [6:0] dd_address; + logic [15:0] dd_rdata; + logic [15:0] dd_wdata; + + logic flashram_pending; + logic flashram_done; + logic [9:0] flashram_sector; + logic flashram_sector_or_all; + logic flashram_write_or_erase; + logic flashram_read_mode; + logic flashram_write; + logic [5:0] flashram_address; + logic [15:0] flashram_wdata; + + logic eeprom_write; + logic [10:0] eeprom_address; + logic [7:0] eeprom_rdata; + logic [7:0] eeprom_wdata; + + logic rtc_pending; + logic rtc_done; + logic rtc_wdata_valid; + logic [41:0] rtc_rdata; + logic [41:0] rtc_wdata; + + logic cfg_unlock; + logic cfg_pending; + logic cfg_done; + logic cfg_error; + logic cfg_irq; + logic [7:0] cfg_cmd; + logic [31:0] cfg_rdata [0:1]; + logic [31:0] cfg_wdata [0:1]; + logic [31:0] cfg_version; + + logic pi_sdram_active; + logic pi_flash_active; + logic [35:0] pi_debug; + + modport controller ( + input n64_reset, + input n64_nmi, + + output bootloader_enabled, + output rom_write_enabled, + output rom_shadow_enabled, + output rom_extended_enabled, + output sram_enabled, + output sram_banked, + output flashram_enabled, + output dd_enabled, + output ddipl_enabled, + output eeprom_enabled, + output eeprom_16k_mode, + + input flashram_pending, + output flashram_done, + input flashram_sector, + input flashram_sector_or_all, + input flashram_write_or_erase, + + input rtc_pending, + output rtc_done, + output rtc_wdata_valid, + input rtc_rdata, + output rtc_wdata, + + input cfg_pending, + output cfg_done, + output cfg_error, + output cfg_irq, + input cfg_cmd, + input cfg_rdata, + output cfg_wdata, + output cfg_version, + + input pi_debug + ); + + modport pi ( + output n64_reset, + output n64_nmi, + + input bootloader_enabled, + input rom_write_enabled, + input rom_shadow_enabled, + input rom_extended_enabled, + input sram_enabled, + input sram_banked, + input flashram_enabled, + input dd_enabled, + input ddipl_enabled, + + input flashram_read_mode, + + input cfg_unlock, + + output pi_sdram_active, + output pi_flash_active, + output pi_debug + ); + + modport flashram ( + output flashram_pending, + input flashram_done, + output flashram_sector, + output flashram_sector_or_all, + output flashram_write_or_erase, + + output flashram_read_mode, + + output flashram_write, + output flashram_address, + output flashram_wdata + ); + + modport si ( + input eeprom_enabled, + input eeprom_16k_mode, + + output eeprom_write, + output eeprom_address, + input eeprom_rdata, + output eeprom_wdata, + + output rtc_pending, + input rtc_done, + input rtc_wdata_valid, + output rtc_rdata, + input rtc_wdata + ); + + modport dd ( + input n64_reset, + input n64_nmi, + + output dd_write, + output dd_address, + input dd_rdata, + output dd_wdata + ); + + modport bram ( + input flashram_write, + input flashram_address, + input flashram_wdata, + + input eeprom_write, + input eeprom_address, + output eeprom_rdata, + input eeprom_wdata, + + input dd_write, + input dd_address, + output dd_rdata, + input dd_wdata + ); + + modport cfg ( + input n64_reset, + input n64_nmi, + + output cfg_unlock, + output cfg_pending, + input cfg_done, + input cfg_error, + input cfg_irq, + output cfg_cmd, + output cfg_rdata, + input cfg_wdata, + input cfg_version + ); + + modport arbiter ( + input pi_sdram_active, + input pi_flash_active + ); + +endinterface diff --git a/fw/rtl/n64/n64_sdram.sv b/fw/rtl/n64/n64_sdram.sv deleted file mode 100644 index cc0e6fc..0000000 --- a/fw/rtl/n64/n64_sdram.sv +++ /dev/null @@ -1,106 +0,0 @@ -module n64_sdram ( - if_system sys, - if_n64_bus bus, - if_dma.memory dma, - if_sdram.memory sdram, - - output sdram_cs, - output sdram_ras, - output sdram_cas, - output sdram_we, - output [1:0] sdram_ba, - output [12:0] sdram_a, - inout [15:0] sdram_dq -); - - logic mem_request; - logic mem_ack; - logic mem_write; - logic [31:0] mem_address; - logic [15:0] mem_rdata; - logic [15:0] mem_wdata; - - typedef enum bit [0:0] { - S_IDLE, - S_WAIT - } e_state; - - typedef enum bit [1:0] { - T_BUS, - T_DMA, - T_SDRAM - } e_source_request; - - e_state state; - e_source_request source_request; - - always_ff @(posedge sys.clk) begin - if (sys.reset) begin - state <= S_IDLE; - mem_request <= 1'b0; - end else begin - case (state) - S_IDLE: begin - if (bus.request || sdram.request || dma.request) begin - state <= S_WAIT; - mem_request <= 1'b1; - if (bus.request) begin - mem_write <= bus.write; - mem_address <= bus.address; - mem_wdata <= bus.wdata; - source_request <= T_BUS; - end else if (sdram.request) begin - mem_write <= sdram.write; - mem_address <= sdram.address; - mem_wdata <= sdram.wdata; - source_request <= T_SDRAM; - end else if (dma.request) begin - mem_write <= dma.write; - mem_address <= dma.address; - mem_wdata <= dma.wdata; - source_request <= T_DMA; - end - end - end - - S_WAIT: begin - if (mem_ack) begin - state <= S_IDLE; - mem_request <= 1'b0; - end - end - endcase - end - end - - always_comb begin - bus.ack = source_request == T_BUS && mem_ack; - bus.rdata = bus.ack ? mem_rdata : 16'd0; - - dma.ack = source_request == T_DMA && mem_ack; - dma.rdata = mem_rdata; - - sdram.ack = source_request == T_SDRAM && mem_ack; - sdram.rdata = mem_rdata; - end - - memory_sdram memory_sdram_inst ( - .sys(sys), - - .request(mem_request), - .ack(mem_ack), - .write(mem_write), - .address(mem_address[25:0]), - .rdata(mem_rdata), - .wdata(mem_wdata), - - .sdram_cs(sdram_cs), - .sdram_ras(sdram_ras), - .sdram_cas(sdram_cas), - .sdram_we(sdram_we), - .sdram_ba(sdram_ba), - .sdram_a(sdram_a), - .sdram_dq(sdram_dq) - ); - -endmodule diff --git a/fw/rtl/n64/n64_si.sv b/fw/rtl/n64/n64_si.sv index 6ecac5d..cbc7482 100644 --- a/fw/rtl/n64/n64_si.sv +++ b/fw/rtl/n64/n64_si.sv @@ -1,164 +1,253 @@ -interface if_si (); - - logic rx_reset; - logic rx_ready; - logic [6:0] rx_length; - logic [80:0] rx_data; - - logic tx_reset; - logic tx_start; - logic tx_busy; - logic [2:0] tx_wmask; - logic [6:0] tx_length; - logic [31:0] tx_data; - - modport si ( - input rx_reset, - output rx_ready, - output rx_length, - output rx_data, - input tx_reset, - input tx_start, - output tx_busy, - input tx_wmask, - input tx_length, - input tx_data - ); - - modport cpu ( - output rx_reset, - input rx_ready, - input rx_length, - input rx_data, - output tx_reset, - output tx_start, - input tx_busy, - output tx_wmask, - output tx_length, - output tx_data - ); - -endinterface - module n64_si ( - if_system.sys sys, - if_si.si si, + input clk, + input reset, + n64_scb.si n64_scb, + + input n64_reset, input n64_si_clk, inout n64_si_dq ); - // Control signals and input synchronization + // Input/output synchronization + logic [1:0] n64_reset_ff; logic [1:0] n64_si_clk_ff; - always_ff @(posedge sys.clk) begin + always_ff @(posedge clk) begin + n64_reset_ff <= {n64_reset_ff[0], n64_reset}; n64_si_clk_ff <= {n64_si_clk_ff[0], n64_si_clk}; end logic si_reset; logic si_clk; - logic si_dq; always_comb begin - si_reset = sys.n64_hard_reset; + si_reset = n64_reset_ff[1]; si_clk = n64_si_clk_ff[1]; - si_dq = n64_si_dq; end + logic si_dq_oe; + logic si_dq_out; + logic si_dq_in; + + assign n64_si_dq = si_dq_oe ? 1'b0 : 1'bZ; + + always_ff @(posedge clk) begin + si_dq_oe <= ~si_dq_out; + si_dq_in <= n64_si_dq; + end + + + // Clock falling/rising event generator + logic last_si_clk; - always_ff @(posedge sys.clk) begin + always_ff @(posedge clk) begin last_si_clk <= si_clk; end - logic si_clk_rising_edge; logic si_clk_falling_edge; + logic si_clk_rising_edge; always_comb begin - si_clk_rising_edge = !si_reset && !last_si_clk && si_clk; - si_clk_falling_edge = !si_reset && last_si_clk && !si_clk; - end - - logic si_dq_output_enable; - logic si_dq_output_enable_data; - - always_ff @(posedge sys.clk) begin - si_dq_output_enable <= si_dq_output_enable_data; - end - - always_comb begin - n64_si_dq = si_dq_output_enable ? 1'b0 : 1'bZ; + si_clk_falling_edge = si_reset && last_si_clk && !si_clk; + si_clk_rising_edge = si_reset && !last_si_clk && si_clk; end - // Data register and shifter + // Data falling/rising event generator - logic [80:0] trx_data; - logic rx_shift; - logic tx_shift; + logic last_si_dq_in; - always_comb begin - si.rx_data = trx_data; - end - - always_ff @(posedge sys.clk) begin - if (si.tx_wmask[0]) trx_data[80:49] <= si.tx_data; - if (si.tx_wmask[1]) trx_data[48:17] <= si.tx_data; - if (si.tx_wmask[2]) trx_data[16:0] <= si.tx_data[16:0]; - - if (rx_shift || tx_shift) begin - trx_data <= {trx_data[79:0], rx_sub_bit_counter < 2'd2}; + always_ff @(posedge clk) begin + if (si_clk_rising_edge) begin + last_si_dq_in <= si_dq_in; end end + logic si_dq_falling_edge; + logic si_dq_rising_edge; + + always_comb begin + si_dq_falling_edge = si_clk_rising_edge && last_si_dq_in && !si_dq_in; + si_dq_rising_edge = si_clk_rising_edge && !last_si_dq_in && si_dq_in; + end + + + // RX bit generator + + logic [3:0] rx_sub_bit_counter; + logic rx_timeout; + logic rx_bit_valid; + logic rx_bit_data; + + always_ff @(posedge clk) begin + if (si_clk_rising_edge && !(&rx_sub_bit_counter)) begin + rx_sub_bit_counter <= rx_sub_bit_counter + 1'd1; + end + if (si_dq_falling_edge) begin + rx_sub_bit_counter <= 4'd0; + end + end + + always_comb begin + rx_timeout = si_clk_rising_edge && si_dq_in && (&rx_sub_bit_counter); + rx_bit_valid = si_dq_rising_edge; + rx_bit_data = (rx_sub_bit_counter >= 4'd3) ? 1'b0 : 1'b1; + end + + + // RX byte generator + + logic [2:0] rx_bit_counter; + logic rx_byte_valid; + logic [7:0] rx_byte_data; + + always_ff @(posedge clk) begin + rx_byte_valid <= 1'b0; + if (rx_timeout) begin + rx_bit_counter <= 3'd0; + end + if (rx_bit_valid) begin + rx_bit_counter <= rx_bit_counter + 1'd1; + rx_byte_data <= {rx_byte_data[6:0], rx_bit_data}; + if (&rx_bit_counter) begin + rx_byte_valid <= 1'b1; + end + end + end + + + // RX stop generator + + logic rx_stop; + + always_comb begin + rx_stop = si_clk_rising_edge && si_dq_in && (rx_sub_bit_counter == 4'd7) && (rx_bit_counter == 3'd1); + end + + + // TX byte/stop generator + + logic tx_busy; + logic [2:0] tx_sub_bit_counter; + logic [2:0] tx_bit_counter; + logic [7:0] tx_shift; + logic tx_start; + logic tx_stop; + logic tx_byte_valid; + logic [7:0] tx_byte_data; + + always_ff @(posedge clk) begin + if (reset) begin + si_dq_out <= 1'b1; + tx_busy <= 1'b0; + end else begin + if (tx_busy) begin + if (si_clk_falling_edge) begin + tx_sub_bit_counter <= tx_sub_bit_counter + 1'd1; + if (&tx_sub_bit_counter) begin + tx_bit_counter <= tx_bit_counter + 1'd1; + tx_shift <= {tx_shift[6:0], 1'bX}; + if (&tx_bit_counter) begin + tx_busy <= 1'b0; + end + end + if (tx_shift[7]) begin + si_dq_out <= !(tx_sub_bit_counter < 3'd2); + end else begin + si_dq_out <= !(tx_sub_bit_counter < 3'd6); + end + end + end else begin + if (tx_byte_valid) begin + tx_busy <= 1'b1; + tx_sub_bit_counter <= 3'd0; + tx_bit_counter <= 3'd0; + tx_shift <= tx_byte_data; + end else if (tx_stop) begin + tx_busy <= 1'b1; + tx_sub_bit_counter <= 3'd0; + tx_bit_counter <= 3'd7; + tx_shift <= 8'hFF; + end + end + end + end + + + // Joybus CMDs + + typedef enum bit [7:0] { + CMD_EEPROM_STATUS = 8'h00, + CMD_EEPROM_READ = 8'h04, + CMD_EEPROM_WRITE = 8'h05, + CMD_RTC_STATUS = 8'h06, + CMD_RTC_READ = 8'h07, + CMD_RTC_WRITE = 8'h08 + } e_cmd; + + e_cmd cmd; + // RX path - typedef enum bit [0:0] { - S_RX_IDLE, - S_RX_WAITING + typedef enum bit [1:0] { + RX_STATE_IDLE, + RX_STATE_DATA, + RX_STATE_IGNORE } e_rx_state; e_rx_state rx_state; + logic [3:0] rx_byte_counter; + logic rx_data_valid; - logic [1:0] rx_sub_bit_counter; - logic [3:0] rx_timeout_counter; + always_comb begin + rx_data_valid = rx_byte_valid && (rx_state == RX_STATE_DATA); + end - always_ff @(posedge sys.clk) begin - rx_shift <= 1'b0; + always_ff @(posedge clk) begin + tx_start <= 1'b0; - if (si_clk_rising_edge) begin - if (rx_timeout_counter < 4'd8) begin - rx_timeout_counter <= rx_timeout_counter + 1'd1; - end else if (si.rx_length > 7'd0) begin - si.rx_ready <= 1'b1; - end + if (rx_byte_valid) begin + rx_byte_counter <= rx_byte_counter + 1'd1; end - if (sys.reset || si.rx_reset) begin - rx_state <= S_RX_IDLE; - si.rx_ready <= 1'b0; - si.rx_length <= 7'd0; - end else if (!si.tx_busy) begin + if (reset || rx_timeout) begin + rx_state <= RX_STATE_IDLE; + end else begin case (rx_state) - S_RX_IDLE: begin - if (si_clk_rising_edge && !si_dq) begin - rx_state <= S_RX_WAITING; - rx_sub_bit_counter <= 2'd0; - rx_timeout_counter <= 3'd0; + RX_STATE_IDLE: begin + if (rx_byte_valid) begin + cmd <= e_cmd'(rx_byte_data); + rx_byte_counter <= 4'd0; + rx_state <= RX_STATE_IGNORE; + case (rx_byte_data) + CMD_EEPROM_STATUS, + CMD_EEPROM_READ, + CMD_EEPROM_WRITE: begin + rx_state <= n64_scb.eeprom_enabled ? RX_STATE_DATA : RX_STATE_IGNORE; + end + CMD_RTC_STATUS, + CMD_RTC_READ, + CMD_RTC_WRITE: begin + rx_state <= RX_STATE_DATA; + end + endcase end end - S_RX_WAITING: begin - if (si_clk_rising_edge) begin - if (si_dq) begin - rx_state <= S_RX_IDLE; - rx_shift <= 1'b1; - si.rx_length <= si.rx_length + 1'd1; - end else if (rx_sub_bit_counter < 2'd3) begin - rx_sub_bit_counter <= rx_sub_bit_counter + 1'd1; - end + RX_STATE_DATA: begin + if (rx_stop) begin + tx_start <= 1'b1; + rx_state <= RX_STATE_IGNORE; + end + end + + RX_STATE_IGNORE: begin + if (rx_stop) begin + rx_state <= RX_STATE_IDLE; end end endcase @@ -168,57 +257,217 @@ module n64_si ( // TX path - typedef enum bit [0:0] { - S_TX_IDLE, - S_TX_SENDING + typedef enum bit [1:0] { + TX_STATE_IDLE, + TX_STATE_DATA, + TX_STATE_STOP } e_tx_state; e_tx_state tx_state; - logic [2:0] tx_sub_bit_counter; - logic [6:0] tx_bit_counter; + logic [3:0] tx_byte_counter; + logic [3:0] tx_length; - always_ff @(posedge sys.clk) begin - tx_shift <= 1'b0; + always_ff @(posedge clk) begin + tx_byte_valid <= 1'b0; + tx_stop <= 1'b0; - if (sys.reset || si.tx_reset) begin - tx_state <= S_TX_IDLE; - si_dq_output_enable_data <= 1'b0; - si.tx_busy <= 1'b0; + if (!tx_busy && tx_byte_valid) begin + tx_byte_counter <= tx_byte_counter + 1'd1; + end + + if (reset) begin + tx_state <= TX_STATE_IDLE; end else begin case (tx_state) - S_TX_IDLE: begin - if (si.tx_start) begin - tx_state <= S_TX_SENDING; - tx_sub_bit_counter <= 3'd0; - tx_bit_counter <= si.tx_length; - si.tx_busy <= 1'b1; + TX_STATE_IDLE: begin + if (tx_start) begin + tx_byte_counter <= 4'd0; + tx_state <= TX_STATE_DATA; end end - S_TX_SENDING: begin - if (si_clk_falling_edge) begin - tx_sub_bit_counter <= tx_sub_bit_counter + 1'd1; - if (tx_sub_bit_counter == 3'd7) begin - tx_shift <= 1'b1; - if (tx_bit_counter >= 7'd1) begin - tx_bit_counter <= tx_bit_counter - 1'd1; - end else begin - tx_state <= S_TX_IDLE; - si.tx_busy <= 1'b0; - end - end - if (tx_bit_counter == 7'd0) begin - si_dq_output_enable_data <= tx_sub_bit_counter < 3'd4; - end else if (trx_data[80]) begin - si_dq_output_enable_data <= tx_sub_bit_counter < 3'd2; - end else begin - si_dq_output_enable_data <= tx_sub_bit_counter < 3'd6; + TX_STATE_DATA: begin + tx_byte_valid <= 1'b1; + if (!tx_busy && tx_byte_valid) begin + if (tx_byte_counter == tx_length) begin + tx_state <= TX_STATE_STOP; end end end + + TX_STATE_STOP: begin + tx_stop <= 1'b1; + if (!tx_busy && tx_stop) begin + tx_state <= TX_STATE_IDLE; + end + end endcase end end + + // Joybus address latching + + logic [7:0] joybus_address; + logic [2:0] joybus_subaddress; + logic [10:0] joybus_full_address; + + always_comb begin + joybus_full_address = {joybus_address, joybus_subaddress}; + end + + always_ff @(posedge clk) begin + if (rx_data_valid || (!tx_busy && tx_byte_valid)) begin + joybus_subaddress <= joybus_subaddress + 1'd1; + end + if (rx_data_valid) begin + if (rx_byte_counter == 4'd0) begin + joybus_address <= rx_byte_data; + joybus_subaddress <= 3'd0; + end + end + end + + + // EEPROM controller + + always_comb begin + n64_scb.eeprom_write = rx_data_valid && (cmd == CMD_EEPROM_WRITE) && rx_byte_counter > 4'd0; + n64_scb.eeprom_address = joybus_full_address; + n64_scb.eeprom_wdata = rx_byte_data; + end + + + // RTC controller + + logic rtc_backup_wp; + logic rtc_time_wp; + logic [1:0] rtc_stopped; + logic [6:0] rtc_time_second; + logic [6:0] rtc_time_minute; + logic [5:0] rtc_time_hour; + logic [5:0] rtc_time_day; + logic [2:0] rtc_time_weekday; + logic [4:0] rtc_time_month; + logic [7:0] rtc_time_year; + + always_ff @(posedge clk) begin + if (reset) begin + rtc_backup_wp <= 1'b1; + rtc_time_wp <= 1'b1; + rtc_stopped <= 2'b00; + n64_scb.rtc_pending <= 1'b0; + end + + if (n64_scb.rtc_done) begin + n64_scb.rtc_pending <= 1'b0; + end + + if (!(|rtc_stopped) && !n64_scb.rtc_pending && n64_scb.rtc_wdata_valid && (tx_state != TX_STATE_DATA)) begin + { + rtc_time_year, + rtc_time_month, + rtc_time_weekday, + rtc_time_day, + rtc_time_hour, + rtc_time_minute, + rtc_time_second + } <= n64_scb.rtc_wdata; + end + + if (rx_data_valid && (cmd == CMD_RTC_WRITE)) begin + if (joybus_address[1:0] == 2'd0) begin + case (rx_byte_counter) + 4'd1: {rtc_time_wp, rtc_backup_wp} <= rx_byte_data[1:0]; + 4'd2: begin + rtc_stopped <= rx_byte_data[2:1]; + if (rx_byte_data[2:1] == 2'b00) begin + n64_scb.rtc_pending <= 1'b1; + end + end + endcase + end + if ((joybus_address[1:0] == 2'd2) && !rtc_time_wp) begin + case (rx_byte_counter) + 4'd1: rtc_time_second <= rx_byte_data[6:0]; + 4'd2: rtc_time_minute <= rx_byte_data[6:0]; + 4'd3: rtc_time_hour <= rx_byte_data[5:0]; + 4'd4: rtc_time_day <= rx_byte_data[5:0]; + 4'd5: rtc_time_weekday <= rx_byte_data[2:0]; + 4'd6: rtc_time_month <= rx_byte_data[4:0]; + 4'd7: rtc_time_year <= rx_byte_data; + endcase + end + end + end + + always_comb begin + n64_scb.rtc_rdata = { + rtc_time_year, + rtc_time_month, + rtc_time_weekday, + rtc_time_day, + rtc_time_hour, + rtc_time_minute, + rtc_time_second + }; + end + + + // TX data multiplexer + + always_comb begin + tx_length = 4'd0; + tx_byte_data = 8'h00; + case (cmd) + CMD_EEPROM_STATUS: begin + tx_length = 4'd2; + case (tx_byte_counter) + 4'd1: tx_byte_data = {1'b1, n64_scb.eeprom_16k_mode, 6'd0}; + endcase + end + CMD_EEPROM_READ: begin + tx_length = 4'd7; + tx_byte_data = n64_scb.eeprom_rdata; + end + CMD_EEPROM_WRITE: begin + tx_length = 4'd0; + end + CMD_RTC_STATUS: begin + tx_length = 4'd2; + case (tx_byte_counter) + 4'd1: tx_byte_data = 8'h10; + 4'd2: tx_byte_data = {(|rtc_stopped), 7'd0}; + endcase + end + CMD_RTC_READ: begin + tx_length = 4'd8; + if (joybus_address[1:0] == 2'd0) begin + case (tx_byte_counter) + 4'd0: tx_byte_data = {6'd0, rtc_time_wp, rtc_backup_wp}; + 4'd1: tx_byte_data = {5'd0, rtc_stopped, 1'b0}; + 4'd8: tx_byte_data = {(|rtc_stopped), 7'd0}; + endcase + end else if (joybus_address[1:0] == 2'd2) begin + case (tx_byte_counter) + 4'd0: tx_byte_data = {1'd0, rtc_time_second}; + 4'd1: tx_byte_data = {1'd0, rtc_time_minute}; + 4'd2: tx_byte_data = {2'b10, rtc_time_hour}; + 4'd3: tx_byte_data = {2'd0, rtc_time_day}; + 4'd4: tx_byte_data = {5'd0, rtc_time_weekday}; + 4'd5: tx_byte_data = {3'd0, rtc_time_month}; + 4'd6: tx_byte_data = rtc_time_year; + 4'd7: tx_byte_data = 8'h01; + 4'd8: tx_byte_data = {(|rtc_stopped), 7'd0}; + endcase + end + end + CMD_RTC_WRITE: begin + tx_length = 4'd0; + tx_byte_data = {(|rtc_stopped), 7'd0}; + end + endcase + end + endmodule diff --git a/fw/rtl/n64/n64_soc.sv b/fw/rtl/n64/n64_soc.sv deleted file mode 100644 index 2f1a1a4..0000000 --- a/fw/rtl/n64/n64_soc.sv +++ /dev/null @@ -1,96 +0,0 @@ -module n64_soc ( - if_system sys, - if_config cfg, - if_dma.memory dma, - if_sdram.memory sdram, - if_flashram.flashram flashram, - if_si.si si, - if_flash.memory flash, - if_dd dd, - - input n64_pi_alel, - input n64_pi_aleh, - input n64_pi_read, - input n64_pi_write, - inout [15:0] n64_pi_ad, - - input n64_si_clk, - inout n64_si_dq, - - output sdram_cs, - output sdram_ras, - output sdram_cas, - output sdram_we, - output [1:0] sdram_ba, - output [12:0] sdram_a, - inout [15:0] sdram_dq -); - - if_n64_bus bus (); - - n64_pi n64_pi_inst ( - .sys(sys), - .cfg(cfg), - .bus(bus), - - .n64_pi_alel(n64_pi_alel), - .n64_pi_aleh(n64_pi_aleh), - .n64_pi_read(n64_pi_read), - .n64_pi_write(n64_pi_write), - .n64_pi_ad(n64_pi_ad) - ); - - n64_si n64_si_inst ( - .sys(sys), - .si(si), - - .n64_si_clk(n64_si_clk), - .n64_si_dq(n64_si_dq) - ); - - n64_sdram n64_sdram_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_N64_SDRAM].device), - .dma(dma), - .sdram(sdram), - - .sdram_cs(sdram_cs), - .sdram_ras(sdram_ras), - .sdram_cas(sdram_cas), - .sdram_we(sdram_we), - .sdram_ba(sdram_ba), - .sdram_a(sdram_a), - .sdram_dq(sdram_dq) - ); - - n64_bootloader n64_bootloader_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_N64_BOOTLOADER].device), - .flash(flash) - ); - - n64_flashram n64_flashram_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_N64_FLASHRAM].device), - .cfg(cfg), - .flashram(flashram) - ); - - n64_dd n64_dd_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_N64_DD].device), - .dd(dd) - ); - - n64_dd_sector_buffer n64_dd_sector_buffer_inst ( - .sys(sys), - .dd(dd) - ); - - n64_cfg n64_cfg_inst ( - .sys(sys), - .bus(bus.at[sc64::ID_N64_CFG].device), - .cfg(cfg) - ); - -endmodule diff --git a/fw/rtl/n64/n64_top.sv b/fw/rtl/n64/n64_top.sv new file mode 100644 index 0000000..0191115 --- /dev/null +++ b/fw/rtl/n64/n64_top.sv @@ -0,0 +1,97 @@ +module n64_top ( + input clk, + input reset, + + n64_scb n64_scb, + dd_scb.dd dd_scb, + + mem_bus.controller mem_bus, + + input n64_reset, + input n64_nmi, + output n64_irq, + + input n64_pi_alel, + input n64_pi_aleh, + input n64_pi_read, + input n64_pi_write, + inout [15:0] n64_pi_ad, + + input n64_si_clk, + inout n64_si_dq +); + + logic n64_dd_irq; + logic n64_cfg_irq; + logic n64_irq_oe; + + always @(posedge clk) begin + n64_irq_oe <= (n64_dd_irq || n64_cfg_irq); + end + + assign n64_irq = n64_irq_oe ? 1'b0 : 1'bZ; + + n64_reg_bus reg_bus (); + + n64_pi n64_pi_inst ( + .clk(clk), + .reset(reset), + + .mem_bus(mem_bus), + .reg_bus(reg_bus), + + .n64_scb(n64_scb), + + .n64_reset(n64_reset), + .n64_nmi(n64_nmi), + .n64_pi_alel(n64_pi_alel), + .n64_pi_aleh(n64_pi_aleh), + .n64_pi_read(n64_pi_read), + .n64_pi_write(n64_pi_write), + .n64_pi_ad(n64_pi_ad) + ); + + n64_dd n64_dd_inst ( + .clk(clk), + .reset(reset), + + .reg_bus(reg_bus), + + .n64_scb(n64_scb), + .dd_scb(dd_scb), + + .irq(n64_dd_irq) + ); + + n64_flashram n64_flashram_inst ( + .clk(clk), + .reset(reset), + + .reg_bus(reg_bus), + + .n64_scb(n64_scb) + ); + + n64_cfg n64_cfg_inst ( + .clk(clk), + .reset(reset), + + .reg_bus(reg_bus), + + .n64_scb(n64_scb), + + .irq(n64_cfg_irq) + ); + + n64_si n64_si_inst ( + .clk(clk), + .reset(reset), + + .n64_scb(n64_scb), + + .n64_reset(n64_reset), + .n64_si_clk(n64_si_clk), + .n64_si_dq(n64_si_dq) + ); + +endmodule diff --git a/fw/rtl/sd/sd_clk.sv b/fw/rtl/sd/sd_clk.sv new file mode 100644 index 0000000..7ceceef --- /dev/null +++ b/fw/rtl/sd/sd_clk.sv @@ -0,0 +1,48 @@ +module sd_clk ( + input clk, + input reset, + + sd_scb.clk sd_scb, + + output logic sd_clk_rising, + output logic sd_clk_falling, + + output logic sd_clk +); + + logic [7:0] clock_divider; + + always_ff @(posedge clk) begin + if (!sd_scb.clock_stop) begin + clock_divider <= clock_divider + 1'd1; + end + end + + logic selected_clock; + + always_comb begin + selected_clock = 1'b0; + case (sd_scb.clock_mode) + 2'd0: selected_clock = 1'b0; + 2'd1: selected_clock = clock_divider[7]; + 2'd2: selected_clock = clock_divider[1]; + 2'd3: selected_clock = clock_divider[0]; + endcase + end + + logic last_selected_clock; + + always_ff @(posedge clk) begin + last_selected_clock <= selected_clock; + end + + always_comb begin + sd_clk_rising = !last_selected_clock && selected_clock; + sd_clk_falling = last_selected_clock && !selected_clock; + end + + always_ff @(posedge clk) begin + sd_clk <= last_selected_clock; + end + +endmodule diff --git a/fw/rtl/sd/sd_cmd.sv b/fw/rtl/sd/sd_cmd.sv new file mode 100644 index 0000000..e668c5c --- /dev/null +++ b/fw/rtl/sd/sd_cmd.sv @@ -0,0 +1,231 @@ +module sd_cmd ( + input clk, + input reset, + + sd_scb.cmd sd_scb, + + input sd_clk_rising, + input sd_clk_falling, + + inout sd_cmd +); + + // Input and output data sampling + + logic sd_cmd_oe; + logic sd_cmd_out; + logic sd_cmd_in; + logic sd_cmd_oe_data; + logic sd_cmd_data; + + assign sd_cmd = sd_cmd_oe ? sd_cmd_out : 1'bZ; + + always_ff @(posedge clk) begin + sd_cmd_oe <= sd_cmd_oe_data; + sd_cmd_out <= sd_cmd_data; + sd_cmd_in <= sd_cmd; + end + + + // CMD state + + typedef enum bit [1:0] { + STATE_IDLE, + STATE_TX, + STATE_WAIT, + STATE_RX + } e_state; + + e_state state; + e_state next_state; + + always_ff @(posedge clk) begin + if (reset) begin + state <= STATE_IDLE; + end else begin + state <= next_state; + end + end + + assign sd_scb.cmd_busy = (state != STATE_IDLE); + + logic [7:0] counter; + + always_comb begin + next_state = state; + + case (state) + STATE_IDLE: begin + if (sd_scb.cmd_start) begin + next_state = STATE_TX; + end + end + + STATE_TX: begin + if (sd_clk_falling) begin + if (counter == 8'd48) begin + if (sd_scb.cmd_skip_response) begin + next_state = STATE_IDLE; + end else begin + next_state = STATE_WAIT; + end + end + end + end + + STATE_WAIT: begin + if (sd_clk_rising) begin + if (counter == 8'd64) begin + next_state = STATE_IDLE; + end + if (!sd_cmd_in) begin + next_state = STATE_RX; + end + end + end + + STATE_RX: begin + if (sd_clk_rising) begin + if (sd_scb.cmd_long_response) begin + if (counter == 8'd136) begin + next_state = STATE_IDLE; + end + end else begin + if (counter == 8'd48) begin + next_state = STATE_IDLE; + end + end + end + end + + default: begin + next_state = STATE_IDLE; + end + endcase + end + + + // CRC7 unit + + logic crc_reset; + logic crc_enable; + logic crc_data; + logic [6:0] crc_result; + + sd_crc_7 sd_crc_7_inst ( + .clk(clk), + .reset(crc_reset), + .enable(crc_enable), + .data(crc_data), + .result(crc_result) + ); + + + // Data shifting + + logic [7:0] data_shift; + + assign crc_data = (state == STATE_RX) ? data_shift[0] : data_shift[7]; + + always_ff @(posedge clk) begin + crc_reset <= 1'b0; + crc_enable <= 1'b0; + + if (reset) begin + sd_cmd_oe_data <= 1'b0; + sd_cmd_data <= 1'b1; + end else begin + case (state) + STATE_IDLE: begin + if (sd_scb.cmd_start) begin + sd_scb.cmd_error <= 1'b0; + crc_reset <= 1'b1; + data_shift <= {2'b01, sd_scb.cmd_index}; + counter <= 8'd0; + end + end + + STATE_TX: begin + if (sd_clk_falling) begin + sd_cmd_oe_data <= 1'b1; + sd_cmd_data <= data_shift[7]; + counter <= counter + 1'd1; + crc_enable <= 1'b1; + data_shift <= {data_shift[6:0], 1'bX}; + if (counter == 8'd7) begin + data_shift <= sd_scb.cmd_arg[31:24]; + end + if (counter == 8'd15) begin + data_shift <= sd_scb.cmd_arg[23:16]; + end + if (counter == 8'd23) begin + data_shift <= sd_scb.cmd_arg[15:8]; + end + if (counter == 8'd31) begin + data_shift <= sd_scb.cmd_arg[7:0]; + end + if (counter == 8'd39) begin + data_shift <= {crc_result, 1'b1}; + end + if (counter == 8'd48) begin + sd_cmd_oe_data <= 1'b0; + counter <= 8'd0; + end + end + end + + STATE_WAIT: begin + if (sd_clk_rising) begin + counter <= counter + 1'd1; + if (counter == 8'd64) begin + sd_scb.cmd_error <= 1'b1; + end + if (!sd_cmd_in) begin + counter <= 8'd1; + crc_reset <= 1'b1; + data_shift <= 8'h00; + end + end + end + + STATE_RX: begin + if (sd_clk_rising) begin + counter <= counter + 1'd1; + data_shift <= {data_shift[6:0], sd_cmd_in}; + if (counter == 8'd8) begin + if (data_shift[6:0] != (sd_scb.cmd_reserved_response ? 7'h3F : {1'b0, sd_scb.cmd_index})) begin + sd_scb.cmd_error <= 1'b1; + end + end + if (sd_scb.cmd_long_response) begin + if (counter >= 8'd8 && counter < 8'd128) begin + crc_enable <= 1'b1; + end + if (counter[2:0] == 3'd0) begin + sd_scb.cmd_rsp <= {sd_scb.cmd_rsp[119:0], data_shift}; + end + if (!sd_scb.cmd_ignore_crc && counter == 8'd136) begin + if (data_shift[7:1] != crc_result) begin + sd_scb.cmd_error <= 1'b1; + end + end + end else begin + if (counter < 8'd40) begin + crc_enable <= 1'b1; + end + if (counter <= 8'd40 && counter[2:0] == 3'd0) begin + sd_scb.cmd_rsp <= {sd_scb.cmd_rsp[119:0], data_shift}; + end + if (!sd_scb.cmd_ignore_crc && counter == 8'd48) begin + if (data_shift[7:1] != crc_result) begin + sd_scb.cmd_error <= 1'b1; + end + end + end + end + end + endcase + end + end + +endmodule diff --git a/fw/rtl/sd/sd_crc_16.sv b/fw/rtl/sd/sd_crc_16.sv new file mode 100644 index 0000000..77fe8be --- /dev/null +++ b/fw/rtl/sd/sd_crc_16.sv @@ -0,0 +1,33 @@ +module sd_crc_16 ( + input clk, + input reset, + + input enable, + input shift, + input data, + + output logic [15:0] result +); + + logic crc_inv; + + assign crc_inv = result[15] ^ data; + + always_ff @(posedge clk) begin + if (reset) begin + result <= 16'd0; + end else if (enable) begin + result <= { + result[14:12], + result[11] ^ crc_inv, + result[10:5], + result[4] ^ crc_inv, + result[3:0], + crc_inv + }; + end else if (shift) begin + result <= {result[14:0], 1'b1}; + end + end + +endmodule diff --git a/fw/rtl/sd/sd_crc_7.sv b/fw/rtl/sd/sd_crc_7.sv new file mode 100644 index 0000000..bfee1a8 --- /dev/null +++ b/fw/rtl/sd/sd_crc_7.sv @@ -0,0 +1,28 @@ +module sd_crc_7 ( + input clk, + input reset, + + input enable, + input data, + + output logic [6:0] result +); + + logic crc_inv; + + assign crc_inv = result[6] ^ data; + + always_ff @(posedge clk) begin + if (reset) begin + result <= 7'd0; + end else if (enable) begin + result <= { + result[5:3], + result[2] ^ crc_inv, + result[1:0], + crc_inv + }; + end + end + +endmodule diff --git a/fw/rtl/sd/sd_dat.sv b/fw/rtl/sd/sd_dat.sv new file mode 100644 index 0000000..419efa8 --- /dev/null +++ b/fw/rtl/sd/sd_dat.sv @@ -0,0 +1,373 @@ +module sd_dat ( + input clk, + input reset, + + sd_scb.dat sd_scb, + + fifo_bus.fifo fifo_bus, + + input sd_clk_rising, + input sd_clk_falling, + + inout [3:0] sd_dat +); + + // Input and output data sampling + + logic sd_dat_oe; + logic [3:0] sd_dat_out; + logic [3:0] sd_dat_in; + logic sd_dat_oe_data; + logic [3:0] sd_dat_data; + + assign sd_dat = sd_dat_oe ? sd_dat_out : 4'hZ; + + always_ff @(posedge clk) begin + sd_dat_oe <= sd_dat_oe_data; + sd_dat_out <= sd_dat_data; + sd_dat_in <= sd_dat; + end + + always_ff @(posedge clk) begin + sd_scb.card_busy <= !sd_dat_in[0]; + end + + + // FIFO + + logic rx_full; + logic rx_almost_full; + logic rx_write; + logic [7:0] rx_wdata; + + logic tx_empty; + logic tx_almost_empty; + logic tx_read; + logic [7:0] tx_rdata; + + fifo_8kb fifo_8kb_rx_inst ( + .clk(clk), + .reset(reset || sd_scb.dat_fifo_flush), + + .empty(fifo_bus.rx_empty), + .almost_empty(fifo_bus.rx_almost_empty), + .read(fifo_bus.rx_read), + .rdata(fifo_bus.rx_rdata), + + .full(rx_full), + .almost_full(rx_almost_full), + .write(rx_write), + .wdata(rx_wdata), + + .count(sd_scb.rx_count) + ); + + fifo_8kb fifo_8kb_tx_inst ( + .clk(clk), + .reset(reset || sd_scb.dat_fifo_flush), + + .empty(tx_empty), + .almost_empty(tx_almost_empty), + .read(tx_read), + .rdata(tx_rdata), + + .full(fifo_bus.tx_full), + .almost_full(fifo_bus.tx_almost_full), + .write(fifo_bus.tx_write), + .wdata(fifo_bus.tx_wdata), + + .count(sd_scb.tx_count) + ); + + + // DAT state + + typedef enum bit [2:0] { + STATE_IDLE, + STATE_RX_WAIT, + STATE_RX, + STATE_TX_WAIT, + STATE_TX, + STATE_TX_STATUS_WAIT, + STATE_TX_STATUS + } e_state; + + e_state state; + e_state next_state; + + always_ff @(posedge clk) begin + if (reset || sd_scb.dat_stop) begin + state <= STATE_IDLE; + end else begin + state <= next_state; + end + end + + assign sd_scb.dat_busy = (state != STATE_IDLE); + + logic [10:0] counter; + logic [7:0] blocks_remaining; + + always_comb begin + next_state = state; + + case (state) + STATE_IDLE: begin + if (sd_scb.dat_start_read) begin + next_state = STATE_RX_WAIT; + end + if (sd_scb.dat_start_write) begin + next_state = STATE_TX_WAIT; + end + end + + STATE_RX_WAIT: begin + if (sd_clk_rising) begin + if (!sd_dat_in[0]) begin + next_state = STATE_RX; + end + end + end + + STATE_RX: begin + if (sd_clk_rising) begin + if (counter == 11'd1041) begin + if (blocks_remaining == 8'd0) begin + next_state = STATE_IDLE; + end else begin + next_state = STATE_RX_WAIT; + end + end + end + end + + STATE_TX_WAIT: begin + if (sd_clk_falling) begin + if (sd_scb.tx_count >= 11'd512) begin + next_state = STATE_TX; + end + end + end + + STATE_TX: begin + if (sd_clk_falling) begin + if (counter == 11'd1042) begin + next_state = STATE_TX_STATUS_WAIT; + end + end + end + + STATE_TX_STATUS_WAIT: begin + if (sd_clk_rising) begin + if (counter == 11'd8) begin + next_state = STATE_IDLE; + end else if (!sd_dat_in[0]) begin + next_state = STATE_TX_STATUS; + end + end + end + + STATE_TX_STATUS: begin + if (sd_clk_rising) begin + if (counter == 11'd5) begin + if (sd_dat_in[0]) begin + if (blocks_remaining == 8'd0) begin + next_state = STATE_IDLE; + end else begin + next_state = STATE_TX_WAIT; + end + end + end + end + end + endcase + end + + + // CRC16 units + + logic crc_reset; + logic crc_enable; + logic crc_shift; + logic [3:0] crc_data; + logic [15:0] crc_result [0:3]; + + sd_crc_16 sd_crc_16_inst_0 ( + .clk(clk), + .reset(crc_reset), + .enable(crc_enable), + .shift(crc_shift), + .data(crc_data[0]), + .result(crc_result[0]) + ); + + sd_crc_16 sd_crc_16_inst_1 ( + .clk(clk), + .reset(crc_reset), + .enable(crc_enable), + .shift(crc_shift), + .data(crc_data[1]), + .result(crc_result[1]) + ); + + sd_crc_16 sd_crc_16_inst_2 ( + .clk(clk), + .reset(crc_reset), + .enable(crc_enable), + .shift(crc_shift), + .data(crc_data[2]), + .result(crc_result[2]) + ); + + sd_crc_16 sd_crc_16_inst_3 ( + .clk(clk), + .reset(crc_reset), + .enable(crc_enable), + .shift(crc_shift), + .data(crc_data[3]), + .result(crc_result[3]) + ); + + + // Data shifting + + logic [7:0] data_shift; + logic tx_rdata_valid; + + assign crc_data = (state == STATE_RX) ? rx_wdata[3:0] : sd_dat_data; + + always_comb begin + tx_read = (state == STATE_TX) && sd_clk_falling && (counter < 11'd1024) && (!counter[0]); + end + + always_ff @(posedge clk) begin + rx_write <= 1'b0; + tx_rdata_valid <= tx_read; + crc_reset <= 1'b0; + crc_enable <= 1'b0; + crc_shift <= 1'b0; + + if (reset || sd_scb.dat_stop) begin + sd_scb.clock_stop <= 1'b0; + sd_dat_oe_data <= 1'b0; + sd_dat_data <= 4'hF; + end else begin + case (state) + STATE_IDLE: begin + if (sd_scb.dat_start_read || sd_scb.dat_start_write) begin + sd_scb.dat_error <= 1'b0; + blocks_remaining <= sd_scb.dat_blocks; + end + end + + STATE_RX_WAIT: begin + if (sd_scb.rx_count <= 11'd512) begin + sd_scb.clock_stop <= 1'b0; + end + if (sd_clk_rising) begin + if (!sd_dat_in[0]) begin + counter <= 11'd1; + crc_reset <= 1'b1; + end + end + end + + STATE_RX: begin + if (sd_clk_rising) begin + counter <= counter + 1'd1; + rx_wdata <= {rx_wdata[3:0], sd_dat_in}; + if (counter <= 11'd1024) begin + crc_enable <= 1'b1; + if (!counter[0]) begin + if (rx_full) begin + sd_scb.dat_error <= 1'b1; + end else begin + rx_write <= 1'b1; + end + end + end else begin + crc_shift <= 1'b1; + if ({crc_result[3][15], crc_result[2][15], crc_result[1][15], crc_result[0][15]} != sd_dat_in) begin + sd_scb.dat_error <= 1'b1; + end + end + if (counter == 11'd1041) begin + if ((blocks_remaining > 8'd0) && (sd_scb.rx_count > 11'd512)) begin + sd_scb.clock_stop <= 1'b1; + end + blocks_remaining <= blocks_remaining - 1'd1; + end + end + end + + STATE_TX_WAIT: begin + if (sd_clk_falling) begin + if (sd_scb.tx_count >= 11'd512) begin + counter <= 11'd0; + end + end + end + + STATE_TX: begin + if (sd_clk_falling) begin + counter <= counter + 1'd1; + if (counter == 11'd0) begin + crc_reset <= 1'b1; + sd_dat_oe_data <= 1'b1; + sd_dat_data <= 4'h0; + end else if (counter <= 11'd1024) begin + crc_enable <= 1'b1; + {sd_dat_data, data_shift} <= {data_shift, 4'h0}; + end else begin + crc_shift <= 1'b1; + sd_dat_data <= {crc_result[3][15], crc_result[2][15], crc_result[1][15], crc_result[0][15]}; + end + if (counter == 11'd1042) begin + sd_dat_oe_data <= 1'b0; + counter <= 11'd0; + end + end + end + + STATE_TX_STATUS_WAIT: begin + if (sd_clk_rising) begin + counter <= counter + 1'd1; + if (counter == 11'd8) begin + sd_scb.dat_error <= 1'b1; + end else if (!sd_dat_in[0]) begin + counter <= 11'd1; + end + end + end + + STATE_TX_STATUS: begin + if (sd_clk_rising) begin + if (counter < 11'd5) begin + counter <= counter + 1'd1; + end + if ((counter == 11'd1) && (sd_dat_in[0] != 1'b0)) begin + sd_scb.dat_error <= 1'b1; + end + if ((counter == 11'd2) && (sd_dat_in[0] != 1'b1)) begin + sd_scb.dat_error <= 1'b1; + end + if ((counter == 11'd3) && (sd_dat_in[0] != 1'b0)) begin + sd_scb.dat_error <= 1'b1; + end + if ((counter == 11'd4) && (sd_dat_in[0] != 1'b1)) begin + sd_scb.dat_error <= 1'b1; + end + if ((counter == 11'd5) && (sd_dat_in[0] == 1'b1)) begin + blocks_remaining <= blocks_remaining - 1'd1; + end + end + end + endcase + end + + if (tx_rdata_valid) begin + data_shift <= tx_rdata; + end + end + +endmodule diff --git a/fw/rtl/sd/sd_scb.sv b/fw/rtl/sd/sd_scb.sv new file mode 100644 index 0000000..369bf71 --- /dev/null +++ b/fw/rtl/sd/sd_scb.sv @@ -0,0 +1,93 @@ +interface sd_scb (); + + logic [1:0] clock_mode; + logic clock_stop; + + logic card_busy; + + logic [10:0] rx_count; + logic [10:0] tx_count; + + logic [5:0] cmd_index; + logic [31:0] cmd_arg; + logic [127:0] cmd_rsp; + logic cmd_start; + logic cmd_skip_response; + logic cmd_reserved_response; + logic cmd_long_response; + logic cmd_ignore_crc; + logic cmd_busy; + logic cmd_error; + + logic dat_fifo_flush; + logic dat_start_write; + logic dat_start_read; + logic dat_stop; + logic [7:0] dat_blocks; + logic dat_busy; + logic dat_error; + + modport controller ( + output clock_mode, + + input card_busy, + + input rx_count, + input tx_count, + + output cmd_index, + output cmd_arg, + input cmd_rsp, + output cmd_start, + output cmd_skip_response, + output cmd_reserved_response, + output cmd_long_response, + output cmd_ignore_crc, + input cmd_busy, + input cmd_error, + + output dat_fifo_flush, + output dat_start_write, + output dat_start_read, + output dat_stop, + output dat_blocks, + input dat_busy, + input dat_error + ); + + modport clk ( + input clock_mode, + input clock_stop + ); + + modport cmd ( + input cmd_index, + input cmd_arg, + output cmd_rsp, + input cmd_start, + input cmd_skip_response, + input cmd_reserved_response, + input cmd_long_response, + input cmd_ignore_crc, + output cmd_busy, + output cmd_error + ); + + modport dat ( + output clock_stop, + + output card_busy, + + output rx_count, + output tx_count, + + input dat_fifo_flush, + input dat_start_write, + input dat_start_read, + input dat_stop, + input dat_blocks, + output dat_busy, + output dat_error + ); + +endinterface diff --git a/fw/rtl/sd/sd_top.sv b/fw/rtl/sd/sd_top.sv new file mode 100644 index 0000000..a5bccde --- /dev/null +++ b/fw/rtl/sd/sd_top.sv @@ -0,0 +1,55 @@ +module sd_top ( + input clk, + input reset, + + sd_scb sd_scb, + + fifo_bus.fifo fifo_bus, + + output sd_clk, + inout sd_cmd, + inout [3:0] sd_dat +); + + logic sd_clk_rising; + logic sd_clk_falling; + + sd_clk sd_clk_inst ( + .clk(clk), + .reset(reset), + + .sd_scb(sd_scb), + + .sd_clk_rising(sd_clk_rising), + .sd_clk_falling(sd_clk_falling), + + .sd_clk(sd_clk) + ); + + sd_cmd sd_cmd_inst ( + .clk(clk), + .reset(reset), + + .sd_scb(sd_scb), + + .sd_clk_rising(sd_clk_rising), + .sd_clk_falling(sd_clk_falling), + + .sd_cmd(sd_cmd) + ); + + sd_dat sd_dat_inst ( + .clk(clk), + .reset(reset), + + .sd_scb(sd_scb), + + .fifo_bus(fifo_bus), + + .sd_clk_rising(sd_clk_rising), + .sd_clk_falling(sd_clk_falling), + + .sd_dat(sd_dat) + ); + +endmodule diff --git a/fw/rtl/system/config.sv b/fw/rtl/system/config.sv deleted file mode 100644 index 4d5ddd0..0000000 --- a/fw/rtl/system/config.sv +++ /dev/null @@ -1,67 +0,0 @@ -interface if_config (); - - logic cpu_ready; - logic cpu_busy; - logic cmd_error; - logic cmd_request; - logic [7:0] cmd; - logic [31:0] data [0:1]; - logic [1:0] data_write; - logic [31:0] wdata; - logic sdram_switch; - logic sdram_writable; - logic dd_enabled; - logic sram_enabled; - logic sram_banked; - logic flashram_enabled; - logic flashram_read_mode; - logic [25:0] ddipl_offset; - logic [25:0] save_offset; - - modport pi ( - input sdram_switch, - input sdram_writable, - input dd_enabled, - input sram_enabled, - input sram_banked, - input flashram_enabled, - input flashram_read_mode, - input ddipl_offset, - input save_offset - ); - - modport flashram ( - output flashram_read_mode - ); - - modport n64 ( - input cpu_ready, - input cpu_busy, - input cmd_error, - output cmd_request, - output cmd, - output data, - input data_write, - input wdata - ); - - modport cpu ( - output cpu_ready, - output cpu_busy, - output cmd_error, - input cmd_request, - input cmd, - input data, - output data_write, - output wdata, - output sdram_switch, - output sdram_writable, - output dd_enabled, - output sram_enabled, - output sram_banked, - output flashram_enabled, - output ddipl_offset, - output save_offset - ); - -endinterface diff --git a/fw/rtl/system/sc64.sv b/fw/rtl/system/sc64.sv deleted file mode 100644 index 9facdb1..0000000 --- a/fw/rtl/system/sc64.sv +++ /dev/null @@ -1,45 +0,0 @@ -package sc64; - - typedef enum bit [2:0] { - ID_N64_SDRAM, - ID_N64_BOOTLOADER, - ID_N64_FLASHRAM, - ID_N64_DD, - ID_N64_CFG, - __ID_N64_END - } e_n64_id; - - typedef enum bit [3:0] { - ID_CPU_RAM, - ID_CPU_FLASH, - ID_CPU_GPIO, - ID_CPU_I2C, - ID_CPU_USB, - ID_CPU_UART, - ID_CPU_DMA, - ID_CPU_CFG, - ID_CPU_SDRAM, - ID_CPU_FLASHRAM, - ID_CPU_SI, - ID_CPU_DD, - __ID_CPU_END - } e_cpu_id; - - typedef enum bit [1:0] { - ID_DMA_USB, - ID_DMA_SD, - __ID_DMA_END - } e_dma_id; - - parameter bit [31:0] SC64_VER = 32'h53437632; - parameter int CLOCK_FREQUENCY = 32'd100_000_000; - parameter bit [31:0] CPU_RESET_VECTOR = {4'(ID_CPU_FLASH), 28'h0035800}; - parameter int UART_BAUD_RATE = 32'd1_000_000; - -`ifdef DEBUG - parameter bit CPU_HAS_UART = 1'b1; -`else - parameter bit CPU_HAS_UART = 1'b0; -`endif - -endpackage diff --git a/fw/rtl/system/system.sv b/fw/rtl/system/system.sv deleted file mode 100644 index a439629..0000000 --- a/fw/rtl/system/system.sv +++ /dev/null @@ -1,62 +0,0 @@ -interface if_system ( - input in_clk, - input n64_reset, - input n64_nmi -); - - logic clk; - logic sdram_clk; - logic reset; - logic n64_soft_reset; - logic n64_hard_reset; - - modport internal ( - input in_clk, - input n64_reset, - input n64_nmi, - output clk, - output sdram_clk, - output reset, - output n64_soft_reset, - output n64_hard_reset - ); - - modport sys ( - input clk, - input reset, - input n64_soft_reset, - input n64_hard_reset - ); - - modport sdram ( - input sdram_clk - ); - -endinterface - - -module system (if_system.internal sys); - - logic locked; - logic [1:0] n64_reset_ff; - logic [1:0] n64_nmi_ff; - - intel_pll intel_pll_inst ( - .inclk0(sys.in_clk), - .c0(sys.clk), - .c1(sys.sdram_clk), - .locked(locked) - ); - - always_ff @(posedge sys.clk) begin - n64_reset_ff <= {n64_reset_ff[0], sys.n64_reset}; - n64_nmi_ff <= {n64_nmi_ff[0], sys.n64_nmi}; - end - - always_comb begin - sys.reset = ~locked; - sys.n64_hard_reset = ~n64_reset_ff[1]; - sys.n64_soft_reset = ~n64_nmi_ff[1]; - end - -endmodule diff --git a/fw/rtl/top.sv b/fw/rtl/top.sv new file mode 100644 index 0000000..293dd9b --- /dev/null +++ b/fw/rtl/top.sv @@ -0,0 +1,267 @@ +module top ( + input inclk, + + input n64_reset, + input n64_nmi, + output n64_irq, + + input n64_pi_alel, + input n64_pi_aleh, + input n64_pi_read, + input n64_pi_write, + inout [15:0] n64_pi_ad, + + input n64_si_clk, + inout n64_si_dq, + + input usb_pwrsav, + output usb_clk, + output usb_cs, + input usb_miso, + inout [7:0] usb_miosi, + + input sd_det, + output sd_clk, + inout sd_cmd, + inout [3:0] sd_dat, + + output sdram_clk, + output sdram_cs, + output sdram_ras, + output sdram_cas, + output sdram_we, + output [1:0] sdram_ba, + output [12:0] sdram_a, + output [1:0] sdram_dqm, + inout [15:0] sdram_dq, + + output flash_clk, + output flash_cs, + inout [3:0] flash_dq, + + input button, + + output mcu_int, + input mcu_clk, + input mcu_cs, + input mcu_mosi, + output mcu_miso +); + + logic clk; + logic reset; + + n64_scb n64_scb (); + dd_scb dd_scb (); + usb_scb usb_scb (); + dma_scb usb_dma_scb (); + sd_scb sd_scb (); + dma_scb sd_dma_scb (); + flash_scb flash_scb (); + vendor_scb vendor_scb (); + + fifo_bus usb_cfg_fifo_bus (); + fifo_bus usb_dma_fifo_bus (); + fifo_bus usb_fifo_bus (); + fifo_bus sd_fifo_bus (); + + mem_bus n64_mem_bus (); + mem_bus cfg_mem_bus (); + mem_bus usb_dma_mem_bus (); + mem_bus sd_dma_mem_bus (); + mem_bus sdram_mem_bus (); + mem_bus flash_mem_bus (); + mem_bus bram_mem_bus (); + + pll pll_inst ( + .inclk(inclk), + .clk(clk), + .sdram_clk(sdram_clk), + .reset(reset) + ); + + + // MCU controller + + mcu_top mcu_top_inst ( + .clk(clk), + .reset(reset), + + .n64_scb(n64_scb), + .dd_scb(dd_scb), + .usb_scb(usb_scb), + .usb_dma_scb(usb_dma_scb), + .sd_scb(sd_scb), + .sd_dma_scb(sd_dma_scb), + .flash_scb(flash_scb), + .vendor_scb(vendor_scb), + + .fifo_bus(usb_cfg_fifo_bus), + .mem_bus(cfg_mem_bus), + + .sd_det(sd_det), + .button(button), + + .mcu_int(mcu_int), + .mcu_clk(mcu_clk), + .mcu_cs(mcu_cs), + .mcu_mosi(mcu_mosi), + .mcu_miso(mcu_miso) + ); + + + // N64 controller + + n64_top n64_top_inst ( + .clk(clk), + .reset(reset), + + .n64_scb(n64_scb), + .dd_scb(dd_scb), + + .mem_bus(n64_mem_bus), + + .n64_reset(n64_reset), + .n64_nmi(n64_nmi), + .n64_irq(n64_irq), + + .n64_pi_alel(n64_pi_alel), + .n64_pi_aleh(n64_pi_aleh), + .n64_pi_read(n64_pi_read), + .n64_pi_write(n64_pi_write), + .n64_pi_ad(n64_pi_ad), + + .n64_si_clk(n64_si_clk), + .n64_si_dq(n64_si_dq) + ); + + + // USB + + usb_ft1248 usb_ft1248_inst ( + .clk(clk), + .reset(reset), + + .usb_scb(usb_scb), + + .fifo_bus(usb_fifo_bus), + + .usb_pwrsav(usb_pwrsav), + .usb_clk(usb_clk), + .usb_cs(usb_cs), + .usb_miso(usb_miso), + .usb_miosi(usb_miosi) + ); + + memory_dma memory_usb_dma_inst ( + .clk(clk), + .reset(reset), + + .dma_scb(usb_dma_scb), + + .fifo_bus(usb_dma_fifo_bus), + .mem_bus(usb_dma_mem_bus) + ); + + fifo_junction usb_fifo_junction_inst ( + .cfg_bus(usb_cfg_fifo_bus), + .dma_bus(usb_dma_fifo_bus), + .dev_bus(usb_fifo_bus) + ); + + + // SD card + + sd_top sd_top_inst ( + .clk(clk), + .reset(reset), + + .sd_scb(sd_scb), + + .fifo_bus(sd_fifo_bus), + + .sd_clk(sd_clk), + .sd_cmd(sd_cmd), + .sd_dat(sd_dat) + ); + + memory_dma memory_sd_dma_inst ( + .clk(clk), + .reset(reset), + + .dma_scb(sd_dma_scb), + + .fifo_bus(sd_fifo_bus), + .mem_bus(sd_dma_mem_bus) + ); + + + // Memory bus arbiter + + memory_arbiter memory_arbiter_inst ( + .clk(clk), + .reset(reset), + + .n64_scb(n64_scb), + + .n64_bus(n64_mem_bus), + .cfg_bus(cfg_mem_bus), + .usb_dma_bus(usb_dma_mem_bus), + .sd_dma_bus(sd_dma_mem_bus), + + .sdram_mem_bus(sdram_mem_bus), + .flash_mem_bus(flash_mem_bus), + .bram_mem_bus(bram_mem_bus) + ); + + + // Memory controllers + + memory_sdram memory_sdram_inst ( + .clk(clk), + .reset(reset), + + .mem_bus(sdram_mem_bus), + + .sdram_cs(sdram_cs), + .sdram_ras(sdram_ras), + .sdram_cas(sdram_cas), + .sdram_we(sdram_we), + .sdram_ba(sdram_ba), + .sdram_a(sdram_a), + .sdram_dqm(sdram_dqm), + .sdram_dq(sdram_dq) + ); + + memory_flash memory_flash_inst ( + .clk(clk), + .reset(reset), + + .flash_scb(flash_scb), + + .mem_bus(flash_mem_bus), + + .flash_clk(flash_clk), + .flash_cs(flash_cs), + .flash_dq(flash_dq) + ); + + memory_bram memory_bram_inst ( + .clk(clk), + + .n64_scb(n64_scb), + + .mem_bus(bram_mem_bus) + ); + + + // Vendor specific control + + vendor vendor_inst ( + .clk(clk), + .reset(reset), + + .vendor_scb(vendor_scb) + ); + +endmodule diff --git a/fw/rtl/usb/usb_ft1248.sv b/fw/rtl/usb/usb_ft1248.sv index 325991e..9b2153b 100644 --- a/fw/rtl/usb/usb_ft1248.sv +++ b/fw/rtl/usb/usb_ft1248.sv @@ -1,261 +1,356 @@ +interface usb_scb (); + + logic fifo_flush; + logic reset_pending; + logic reset_ack; + logic write_buffer_flush; + logic [10:0] rx_count; + logic [10:0] tx_count; + logic pwrsav; + logic reset_state; + + modport controller ( + output fifo_flush, + input reset_pending, + output reset_ack, + output write_buffer_flush, + input rx_count, + input tx_count, + input pwrsav, + input reset_state + ); + + modport usb ( + input fifo_flush, + output reset_pending, + input reset_ack, + input write_buffer_flush, + output rx_count, + output tx_count, + output pwrsav, + output reset_state + ); + +endinterface + + module usb_ft1248 ( - if_system.sys sys, + input clk, + input reset, - input usb_enabled, + usb_scb.usb usb_scb, - output usb_clk, - output usb_cs, + fifo_bus.fifo fifo_bus, + + input usb_pwrsav, + output logic usb_clk, + output logic usb_cs, input usb_miso, - inout [3:0] usb_miosi, - - input rx_flush, - output rx_empty, - input rx_read, - output [7:0] rx_rdata, - - input tx_flush, - output tx_full, - input tx_write, - input [7:0] tx_wdata, - - output rx_escape_valid, - input rx_escape_ack, - output [7:0] rx_escape + inout [7:0] usb_miosi ); - parameter bit [7:0] ESCAPE_CHARACTER = 8'h1B; - - // FIFOs - logic rx_full; + logic rx_almost_full; logic rx_write; logic [7:0] rx_wdata; logic tx_empty; + logic tx_almost_empty; logic tx_read; logic [7:0] tx_rdata; - logic rx_wdata_valid; - logic rx_escape_active; + fifo_8kb fifo_8kb_rx_inst ( + .clk(clk), + .reset(reset || usb_scb.fifo_flush), - intel_fifo_8 fifo_8_rx_inst ( - .clock(sys.clk), - .sclr(rx_flush || !usb_enabled), - - .empty(rx_empty), - .rdreq(rx_read), - .q(rx_rdata), + .empty(fifo_bus.rx_empty), + .almost_empty(fifo_bus.rx_almost_empty), + .read(fifo_bus.rx_read), + .rdata(fifo_bus.rx_rdata), .full(rx_full), - .wrreq(rx_write), - .data(rx_wdata) + .almost_full(rx_almost_full), + .write(rx_write), + .wdata(rx_wdata), + + .count(usb_scb.rx_count) ); - intel_fifo_8 fifo_8_tx_inst ( - .clock(sys.clk), - .sclr(tx_flush || !usb_enabled), + fifo_8kb fifo_8kb_tx_inst ( + .clk(clk), + .reset(reset || usb_scb.fifo_flush), .empty(tx_empty), - .rdreq(tx_read), - .q(tx_rdata), + .almost_empty(tx_almost_empty), + .read(tx_read), + .rdata(tx_rdata), - .full(tx_full), - .wrreq(tx_write), - .data(tx_wdata) + .full(fifo_bus.tx_full), + .almost_full(fifo_bus.tx_almost_full), + .write(fifo_bus.tx_write), + .wdata(fifo_bus.tx_wdata), + + .count(usb_scb.tx_count) ); + logic [1:0] usb_pwrsav_ff; + logic [7:0] usb_miosi_out; + logic usb_oe; - // Escape character detection + logic ft_pwrsav; + logic ft_clk; + logic ft_cs; + logic ft_miso; + logic [7:0] ft_miosi_in; + logic [7:0] ft_miosi_out; + logic ft_oe; - always_comb begin - rx_write = 1'b0; - if (rx_wdata_valid) begin - rx_write = rx_escape_active ? rx_wdata == ESCAPE_CHARACTER : rx_wdata != ESCAPE_CHARACTER; - end + always_ff @(posedge clk) begin + usb_pwrsav_ff <= {usb_pwrsav_ff[0], usb_pwrsav}; + ft_pwrsav <= usb_pwrsav_ff[1]; + usb_clk <= ft_clk; + usb_cs <= ft_cs; + ft_miso <= usb_miso; + ft_miosi_in <= usb_miosi; + usb_miosi_out <= ft_miosi_out; + usb_oe <= ft_oe; end - always_ff @(posedge sys.clk) begin - if (sys.reset || !usb_enabled) begin - rx_escape_valid <= 1'b0; - rx_escape_active <= 1'b0; - end else begin - if (rx_escape_ack) begin - rx_escape_valid <= 1'b0; - end + assign usb_miosi = usb_oe ? usb_miosi_out : 8'hZZ; - if (rx_wdata_valid) begin - if (!rx_escape_active) begin - if (rx_wdata == ESCAPE_CHARACTER) begin - rx_escape_active <= 1'b1; - end - end else begin - rx_escape_active <= 1'b0; - rx_escape <= rx_wdata; - if (rx_wdata != ESCAPE_CHARACTER) begin - rx_escape_valid <= 1'b1; - end - end - end - end - end - - - // FT1248 interface controller - - typedef enum bit [1:0] { - S_TRY_RX, - S_TRY_TX, - S_COMMAND, - S_DATA + typedef enum bit [2:0] { + STATE_IDLE, + STATE_SELECT, + STATE_COMMAND, + STATE_STATUS, + STATE_DATA, + STATE_DESELECT } e_state; typedef enum bit [7:0] { - C_WRITE = 8'h00, - C_READ = 8'h04 - } e_command; - - typedef enum bit [1:0] { - P_PRE_RISING, - P_RISING, - P_PRE_FALLING, - P_FALLING - } e_clock_phase; + CMD_WRITE = 8'h00, + CMD_READ = 8'h40, + CMD_READ_MODEM_STATUS = 8'h20, + CMD_WRITE_MODEM_STATUS = 8'h60, + CMD_WRITE_BUFFER_FLUSH = 8'h08 + } e_cmd; e_state state; + e_state next_state; + e_cmd cmd; + e_cmd next_cmd; + logic [3:0] phase; + logic last_tx_failed; + logic reset_reply; + logic last_reset_status; + logic [4:0] modem_status_counter; + logic write_modem_status_pending; + logic write_buffer_flush_pending; - logic [3:0] clock_phase; + always_ff @(posedge clk) begin + state <= next_state; + cmd <= next_cmd; - logic usb_clk_output; - logic usb_cs_output; - logic [3:0] usb_miosi_input; - logic [3:0] usb_miosi_output; - logic [3:0] usb_miosi_output_data; - logic usb_miosi_output_enable; - logic usb_miosi_output_enable_data; - logic usb_miso_input; + usb_scb.pwrsav <= !ft_pwrsav; + usb_scb.reset_state <= last_reset_status; - logic is_cmd_write; - logic [1:0] nibble_counter; - logic [7:0] tx_buffer; + phase <= {phase[2:0], phase[3]}; + if (state == STATE_IDLE) begin + phase <= 4'b0100; + end - always_ff @(posedge sys.clk) begin - if (sys.reset || state == S_TRY_RX || state == S_TRY_TX) begin - clock_phase <= 4'b0001; + if (reset) begin + last_tx_failed <= 1'b0; + usb_scb.reset_pending <= 1'b0; + last_reset_status <= 1'b0; + modem_status_counter <= 5'd0; + write_modem_status_pending <= 1'b0; + write_buffer_flush_pending <= 1'b0; end else begin - clock_phase <= {clock_phase[2:0], clock_phase[3]}; - end - end + if (usb_scb.reset_ack) begin + usb_scb.reset_pending <= 1'b0; + reset_reply <= 1'b1; + write_modem_status_pending <= 1'b1; + end - always_ff @(posedge sys.clk) begin - usb_clk <= usb_clk_output; - usb_cs <= usb_cs_output; + if (usb_scb.write_buffer_flush) begin + write_buffer_flush_pending <= 1'b1; + end - usb_miosi_input <= usb_miosi; - usb_miosi_output <= usb_miosi_output_data; - usb_miosi_output_enable <= usb_miosi_output_enable_data; - - usb_miso_input <= usb_miso; + if (state == STATE_IDLE) begin + modem_status_counter <= modem_status_counter + 1'd1; + end - tx_buffer <= tx_rdata; - end + if ((state == STATE_DATA) && (cmd == CMD_WRITE) && phase[3]) begin + last_tx_failed <= ft_miso; + end - always_comb begin - usb_miosi = usb_miosi_output_enable ? usb_miosi_output : 4'bZZZZ; - end - - always_comb begin - case (state) - S_COMMAND: begin - usb_clk_output = clock_phase[P_PRE_FALLING] || clock_phase[P_FALLING]; - usb_cs_output = 1'b0; - if (is_cmd_write) begin - usb_miosi_output_data = nibble_counter[0] ? C_WRITE[3:0] : C_WRITE[7:4]; - end else begin - usb_miosi_output_data = nibble_counter[0] ? C_READ[3:0] : C_READ[7:4]; + if (!ft_miso && (state == STATE_DATA) && phase[3]) begin + if (cmd == CMD_READ_MODEM_STATUS) begin + last_reset_status <= ft_miosi_in[0]; + if (!last_reset_status && ft_miosi_in[0]) begin + usb_scb.reset_pending <= 1'b1; + end + if (last_reset_status && !ft_miosi_in[0]) begin + reset_reply <= 1'b0; + write_modem_status_pending <= 1'b1; + end + end + if (cmd == CMD_WRITE_MODEM_STATUS) begin + write_modem_status_pending <= 1'b0; + end + if (cmd == CMD_WRITE_BUFFER_FLUSH) begin + write_buffer_flush_pending <= 1'b0; end - usb_miosi_output_enable_data = nibble_counter < 2'd2; end - - S_DATA: begin - usb_clk_output = clock_phase[P_PRE_FALLING] || clock_phase[P_FALLING]; - usb_cs_output = 1'b0; - usb_miosi_output_data = nibble_counter[0] ? tx_buffer[7:4] : tx_buffer[3:0]; - usb_miosi_output_enable_data = is_cmd_write; - end - - default: begin - usb_clk_output = 1'b0; - usb_cs_output = 1'b1; - usb_miosi_output_data = 4'hF; - usb_miosi_output_enable_data = 1'b0; - end - endcase + end end - always_ff @(posedge sys.clk) begin - rx_wdata_valid <= 1'b0; - tx_read <= 1'b0; + always_comb begin + ft_clk = 1'b0; + ft_cs = 1'b1; + ft_miosi_out = 8'hFF; + ft_oe = 1'b0; - if (clock_phase[P_RISING]) begin - nibble_counter <= nibble_counter + 1'd1; + if (state == STATE_SELECT) begin + ft_cs = 1'b0; end - if (sys.reset || !usb_enabled) begin - state <= S_TRY_RX; + if (state == STATE_COMMAND) begin + if (phase[0] || phase[1]) begin + ft_clk = 1'b1; + end + ft_cs = 1'b0; + ft_miosi_out = cmd; + ft_oe = 1'b1; + end + + if (state == STATE_STATUS) begin + if (phase[0] || phase[1]) begin + ft_clk = 1'b1; + end + ft_cs = 1'b0; + end + + if (state == STATE_DATA) begin + if (phase[0] || phase[1]) begin + ft_clk = 1'b1; + end + ft_cs = 1'b0; + if (cmd == CMD_WRITE) begin + ft_miosi_out = tx_rdata; + ft_oe = 1'b1; + end + if (cmd == CMD_WRITE_MODEM_STATUS) begin + ft_miosi_out = {2'b00, reset_reply, 5'b00000}; + ft_oe = 1'b1; + end + end + end + + always_comb begin + rx_write = 1'b0; + tx_read = 1'b0; + + rx_wdata = ft_miosi_in; + + if (!ft_miso && phase[3]) begin + case (state) + STATE_STATUS: begin + if (cmd == CMD_WRITE && !last_tx_failed) begin + tx_read = 1'b1; + end + end + + STATE_DATA: begin + if (cmd == CMD_READ) begin + rx_write = 1'b1; + end + if (cmd == CMD_WRITE && !tx_empty) begin + tx_read = 1'b1; + end + end + endcase + end + end + + always_comb begin + next_state = state; + next_cmd = cmd; + + if (reset) begin + next_state = STATE_IDLE; end else begin case (state) - S_TRY_RX: begin - if (!rx_full && !rx_escape_valid) begin - state <= S_COMMAND; - is_cmd_write <= 1'b0; - nibble_counter <= 2'b11; - end else begin - state <= S_TRY_TX; + STATE_IDLE: begin + if (ft_pwrsav) begin + if (write_modem_status_pending) begin + next_state = STATE_SELECT; + next_cmd = CMD_WRITE_MODEM_STATUS; + end else if (&modem_status_counter) begin + next_state = STATE_SELECT; + next_cmd = CMD_READ_MODEM_STATUS; + end else if (!tx_empty || last_tx_failed) begin + next_state = STATE_SELECT; + next_cmd = CMD_WRITE; + end else if (write_buffer_flush_pending) begin + next_state = STATE_SELECT; + next_cmd = CMD_WRITE_BUFFER_FLUSH; + end else if (!rx_full) begin + next_state = STATE_SELECT; + next_cmd = CMD_READ; + end end end - S_TRY_TX: begin - if (!tx_empty) begin - state <= S_COMMAND; - is_cmd_write <= 1'b1; - nibble_counter <= 2'b11; - end else begin - state <= S_TRY_RX; + STATE_SELECT: begin + if (phase[3]) begin + next_state = STATE_COMMAND; end end - S_COMMAND: begin - if (clock_phase[P_RISING]) begin - if (nibble_counter == 2'd2) begin - if (usb_miso_input) begin - state <= is_cmd_write ? S_TRY_RX : S_TRY_TX; - end else begin - state <= S_DATA; - nibble_counter <= 2'd0; + STATE_COMMAND: begin + if (phase[3]) begin + next_state = STATE_STATUS; + end + end + + STATE_STATUS: begin + if (phase[3]) begin + if (ft_miso) begin + next_state = STATE_DESELECT; + end else begin + next_state = STATE_DATA; + end + end + end + + STATE_DATA: begin + if (phase[3]) begin + if (ft_miso) begin + next_state = STATE_DESELECT; + end else if (cmd == CMD_READ) begin + if (rx_almost_full) begin + next_state = STATE_DESELECT; end + end else if (cmd == CMD_WRITE) begin + if (tx_empty) begin + next_state = STATE_DESELECT; + end + end else begin + next_state = STATE_DESELECT; end end end - S_DATA: begin - if (clock_phase[P_FALLING]) begin - if (nibble_counter[0]) begin - tx_read <= is_cmd_write; - end - end - if (clock_phase[P_RISING]) begin - rx_wdata <= {usb_miosi_input, rx_wdata[7:4]}; - if (nibble_counter[0]) begin - rx_wdata_valid <= !is_cmd_write; - end - if (usb_miso_input || (!is_cmd_write && (rx_full || rx_escape_valid)) || (is_cmd_write && tx_empty)) begin - state <= is_cmd_write ? S_TRY_RX : S_TRY_TX; - end + STATE_DESELECT: begin + if (phase[1]) begin + next_state = STATE_IDLE; end end default: begin - state <= S_TRY_RX; + next_state = STATE_IDLE; end endcase end diff --git a/fw/rtl/vendor/lcmxo2/fifo_8kb.sv b/fw/rtl/vendor/lcmxo2/fifo_8kb.sv new file mode 100644 index 0000000..db02ad2 --- /dev/null +++ b/fw/rtl/vendor/lcmxo2/fifo_8kb.sv @@ -0,0 +1,47 @@ +module fifo_8kb ( + input clk, + input reset, + + output empty, + output almost_empty, + input read, + output [7:0] rdata, + + output full, + output almost_full, + input write, + input [7:0] wdata, + + output logic [10:0] count +); + + fifo_8kb_lattice_generated fifo_8kb_lattice_generated_inst ( + .Data(wdata), + .WrClock(clk), + .RdClock(clk), + .WrEn(write), + .RdEn(read), + .Reset(reset), + .RPReset(reset), + .Q(rdata), + .Empty(empty), + .Full(full), + .AlmostEmpty(almost_empty), + .AlmostFull(almost_full) + ); + + always_ff @(posedge clk) begin + if (reset) begin + count <= 11'd0; + end else begin + if (write && read) begin + count <= count; + end else if (write) begin + count <= count + 1'd1; + end else if (read) begin + count <= count - 1'd1; + end + end + end + +endmodule diff --git a/fw/rtl/vendor/lcmxo2/generated/efb_lattice_generated.v b/fw/rtl/vendor/lcmxo2/generated/efb_lattice_generated.v new file mode 100644 index 0000000..17d16e8 --- /dev/null +++ b/fw/rtl/vendor/lcmxo2/generated/efb_lattice_generated.v @@ -0,0 +1,113 @@ +/* Verilog netlist generated by SCUBA Diamond (64-bit) 3.12.1.454 */ +/* Module Version: 1.2 */ +/* C:\lscc\diamond\3.12\ispfpga\bin\nt64\scuba.exe -w -n efb_lattice_generated -lang verilog -synth synplify -bus_exp 7 -bb -type efb -arch xo2c00 -freq 100 -ufm -ufm_ebr 2038 -mem_size 8 -ufm_0 -wb -dev 7000 */ +/* Sun Jul 31 17:59:17 2022 */ + + +`timescale 1 ns / 1 ps +module efb_lattice_generated (wb_clk_i, wb_rst_i, wb_cyc_i, wb_stb_i, + wb_we_i, wb_adr_i, wb_dat_i, wb_dat_o, wb_ack_o, wbc_ufm_irq)/* synthesis NGD_DRC_MASK=1 */; + input wire wb_clk_i; + input wire wb_rst_i; + input wire wb_cyc_i; + input wire wb_stb_i; + input wire wb_we_i; + input wire [7:0] wb_adr_i; + input wire [7:0] wb_dat_i; + output wire [7:0] wb_dat_o; + output wire wb_ack_o; + output wire wbc_ufm_irq; + + wire scuba_vhi; + wire scuba_vlo; + + VHI scuba_vhi_inst (.Z(scuba_vhi)); + + VLO scuba_vlo_inst (.Z(scuba_vlo)); + + defparam EFBInst_0.UFM_INIT_FILE_FORMAT = "HEX" ; + defparam EFBInst_0.UFM_INIT_FILE_NAME = "NONE" ; + defparam EFBInst_0.UFM_INIT_ALL_ZEROS = "ENABLED" ; + defparam EFBInst_0.UFM_INIT_START_PAGE = 2038 ; + defparam EFBInst_0.UFM_INIT_PAGES = 8 ; + defparam EFBInst_0.DEV_DENSITY = "7000L" ; + defparam EFBInst_0.EFB_UFM = "ENABLED" ; + defparam EFBInst_0.TC_ICAPTURE = "DISABLED" ; + defparam EFBInst_0.TC_OVERFLOW = "DISABLED" ; + defparam EFBInst_0.TC_ICR_INT = "OFF" ; + defparam EFBInst_0.TC_OCR_INT = "OFF" ; + defparam EFBInst_0.TC_OV_INT = "OFF" ; + defparam EFBInst_0.TC_TOP_SEL = "OFF" ; + defparam EFBInst_0.TC_RESETN = "ENABLED" ; + defparam EFBInst_0.TC_OC_MODE = "TOGGLE" ; + defparam EFBInst_0.TC_OCR_SET = 32767 ; + defparam EFBInst_0.TC_TOP_SET = 65535 ; + defparam EFBInst_0.GSR = "ENABLED" ; + defparam EFBInst_0.TC_CCLK_SEL = 1 ; + defparam EFBInst_0.TC_MODE = "CTCM" ; + defparam EFBInst_0.TC_SCLK_SEL = "PCLOCK" ; + defparam EFBInst_0.EFB_TC_PORTMODE = "WB" ; + defparam EFBInst_0.EFB_TC = "DISABLED" ; + defparam EFBInst_0.SPI_WAKEUP = "DISABLED" ; + defparam EFBInst_0.SPI_INTR_RXOVR = "DISABLED" ; + defparam EFBInst_0.SPI_INTR_TXOVR = "DISABLED" ; + defparam EFBInst_0.SPI_INTR_RXRDY = "DISABLED" ; + defparam EFBInst_0.SPI_INTR_TXRDY = "DISABLED" ; + defparam EFBInst_0.SPI_SLAVE_HANDSHAKE = "DISABLED" ; + defparam EFBInst_0.SPI_PHASE_ADJ = "DISABLED" ; + defparam EFBInst_0.SPI_CLK_INV = "DISABLED" ; + defparam EFBInst_0.SPI_LSB_FIRST = "DISABLED" ; + defparam EFBInst_0.SPI_CLK_DIVIDER = 2 ; + defparam EFBInst_0.SPI_MODE = "MASTER" ; + defparam EFBInst_0.EFB_SPI = "DISABLED" ; + defparam EFBInst_0.I2C2_WAKEUP = "DISABLED" ; + defparam EFBInst_0.I2C2_GEN_CALL = "DISABLED" ; + defparam EFBInst_0.I2C2_CLK_DIVIDER = 1 ; + defparam EFBInst_0.I2C2_BUS_PERF = "100kHz" ; + defparam EFBInst_0.I2C2_SLAVE_ADDR = "0b1000010" ; + defparam EFBInst_0.I2C2_ADDRESSING = "7BIT" ; + defparam EFBInst_0.EFB_I2C2 = "DISABLED" ; + defparam EFBInst_0.I2C1_WAKEUP = "DISABLED" ; + defparam EFBInst_0.I2C1_GEN_CALL = "DISABLED" ; + defparam EFBInst_0.I2C1_CLK_DIVIDER = 1 ; + defparam EFBInst_0.I2C1_BUS_PERF = "100kHz" ; + defparam EFBInst_0.I2C1_SLAVE_ADDR = "0b1000001" ; + defparam EFBInst_0.I2C1_ADDRESSING = "7BIT" ; + defparam EFBInst_0.EFB_I2C1 = "DISABLED" ; + defparam EFBInst_0.EFB_WB_CLK_FREQ = "100.0" ; + EFB EFBInst_0 (.WBCLKI(wb_clk_i), .WBRSTI(wb_rst_i), .WBCYCI(wb_cyc_i), + .WBSTBI(wb_stb_i), .WBWEI(wb_we_i), .WBADRI7(wb_adr_i[7]), .WBADRI6(wb_adr_i[6]), + .WBADRI5(wb_adr_i[5]), .WBADRI4(wb_adr_i[4]), .WBADRI3(wb_adr_i[3]), + .WBADRI2(wb_adr_i[2]), .WBADRI1(wb_adr_i[1]), .WBADRI0(wb_adr_i[0]), + .WBDATI7(wb_dat_i[7]), .WBDATI6(wb_dat_i[6]), .WBDATI5(wb_dat_i[5]), + .WBDATI4(wb_dat_i[4]), .WBDATI3(wb_dat_i[3]), .WBDATI2(wb_dat_i[2]), + .WBDATI1(wb_dat_i[1]), .WBDATI0(wb_dat_i[0]), .PLL0DATI7(scuba_vlo), + .PLL0DATI6(scuba_vlo), .PLL0DATI5(scuba_vlo), .PLL0DATI4(scuba_vlo), + .PLL0DATI3(scuba_vlo), .PLL0DATI2(scuba_vlo), .PLL0DATI1(scuba_vlo), + .PLL0DATI0(scuba_vlo), .PLL0ACKI(scuba_vlo), .PLL1DATI7(scuba_vlo), + .PLL1DATI6(scuba_vlo), .PLL1DATI5(scuba_vlo), .PLL1DATI4(scuba_vlo), + .PLL1DATI3(scuba_vlo), .PLL1DATI2(scuba_vlo), .PLL1DATI1(scuba_vlo), + .PLL1DATI0(scuba_vlo), .PLL1ACKI(scuba_vlo), .I2C1SCLI(scuba_vlo), + .I2C1SDAI(scuba_vlo), .I2C2SCLI(scuba_vlo), .I2C2SDAI(scuba_vlo), + .SPISCKI(scuba_vlo), .SPIMISOI(scuba_vlo), .SPIMOSII(scuba_vlo), + .SPISCSN(scuba_vlo), .TCCLKI(scuba_vlo), .TCRSTN(scuba_vlo), .TCIC(scuba_vlo), + .UFMSN(scuba_vhi), .WBDATO7(wb_dat_o[7]), .WBDATO6(wb_dat_o[6]), + .WBDATO5(wb_dat_o[5]), .WBDATO4(wb_dat_o[4]), .WBDATO3(wb_dat_o[3]), + .WBDATO2(wb_dat_o[2]), .WBDATO1(wb_dat_o[1]), .WBDATO0(wb_dat_o[0]), + .WBACKO(wb_ack_o), .PLLCLKO(), .PLLRSTO(), .PLL0STBO(), .PLL1STBO(), + .PLLWEO(), .PLLADRO4(), .PLLADRO3(), .PLLADRO2(), .PLLADRO1(), .PLLADRO0(), + .PLLDATO7(), .PLLDATO6(), .PLLDATO5(), .PLLDATO4(), .PLLDATO3(), + .PLLDATO2(), .PLLDATO1(), .PLLDATO0(), .I2C1SCLO(), .I2C1SCLOEN(), + .I2C1SDAO(), .I2C1SDAOEN(), .I2C2SCLO(), .I2C2SCLOEN(), .I2C2SDAO(), + .I2C2SDAOEN(), .I2C1IRQO(), .I2C2IRQO(), .SPISCKO(), .SPISCKEN(), + .SPIMISOO(), .SPIMISOEN(), .SPIMOSIO(), .SPIMOSIEN(), .SPIMCSN7(), + .SPIMCSN6(), .SPIMCSN5(), .SPIMCSN4(), .SPIMCSN3(), .SPIMCSN2(), + .SPIMCSN1(), .SPIMCSN0(), .SPICSNEN(), .SPIIRQO(), .TCINT(), .TCOC(), + .WBCUFMIRQ(wbc_ufm_irq), .CFGWAKE(), .CFGSTDBY()); + + + + // exemplar begin + // exemplar end + +endmodule diff --git a/fw/rtl/vendor/lcmxo2/generated/fifo_8kb_lattice_generated.v b/fw/rtl/vendor/lcmxo2/generated/fifo_8kb_lattice_generated.v new file mode 100644 index 0000000..dcf16bd --- /dev/null +++ b/fw/rtl/vendor/lcmxo2/generated/fifo_8kb_lattice_generated.v @@ -0,0 +1,66 @@ +/* Verilog netlist generated by SCUBA Diamond (64-bit) 3.12.1.454 */ +/* Module Version: 5.8 */ +/* C:\lscc\diamond\3.12\ispfpga\bin\nt64\scuba.exe -w -n fifo_8kb_lattice_generated -lang verilog -synth synplify -bus_exp 7 -bb -arch xo2c00 -type ebfifo -depth 1024 -width 8 -rwidth 8 -no_enable -pe 1 -pf 1023 */ +/* Sat Mar 19 13:53:20 2022 */ + + +`timescale 1 ns / 1 ps +module fifo_8kb_lattice_generated (Data, WrClock, RdClock, WrEn, RdEn, + Reset, RPReset, Q, Empty, Full, AlmostEmpty, AlmostFull)/* synthesis NGD_DRC_MASK=1 */; + input wire [7:0] Data; + input wire WrClock; + input wire RdClock; + input wire WrEn; + input wire RdEn; + input wire Reset; + input wire RPReset; + output wire [7:0] Q; + output wire Empty; + output wire Full; + output wire AlmostEmpty; + output wire AlmostFull; + + wire scuba_vhi; + wire Empty_int; + wire Full_int; + wire scuba_vlo; + + VHI scuba_vhi_inst (.Z(scuba_vhi)); + + VLO scuba_vlo_inst (.Z(scuba_vlo)); + + defparam fifo_8kb_lattice_generated_0_0.FULLPOINTER1 = "0b01111111111000" ; + defparam fifo_8kb_lattice_generated_0_0.FULLPOINTER = "0b10000000000000" ; + defparam fifo_8kb_lattice_generated_0_0.AFPOINTER1 = "0b01111111110000" ; + defparam fifo_8kb_lattice_generated_0_0.AFPOINTER = "0b01111111111000" ; + defparam fifo_8kb_lattice_generated_0_0.AEPOINTER1 = "0b00000000010000" ; + defparam fifo_8kb_lattice_generated_0_0.AEPOINTER = "0b00000000001000" ; + defparam fifo_8kb_lattice_generated_0_0.ASYNC_RESET_RELEASE = "SYNC" ; + defparam fifo_8kb_lattice_generated_0_0.GSR = "DISABLED" ; + defparam fifo_8kb_lattice_generated_0_0.RESETMODE = "ASYNC" ; + defparam fifo_8kb_lattice_generated_0_0.REGMODE = "NOREG" ; + defparam fifo_8kb_lattice_generated_0_0.CSDECODE_R = "0b11" ; + defparam fifo_8kb_lattice_generated_0_0.CSDECODE_W = "0b11" ; + defparam fifo_8kb_lattice_generated_0_0.DATA_WIDTH_R = 9 ; + defparam fifo_8kb_lattice_generated_0_0.DATA_WIDTH_W = 9 ; + FIFO8KB fifo_8kb_lattice_generated_0_0 (.DI0(Data[0]), .DI1(Data[1]), + .DI2(Data[2]), .DI3(Data[3]), .DI4(Data[4]), .DI5(Data[5]), .DI6(Data[6]), + .DI7(Data[7]), .DI8(scuba_vlo), .DI9(scuba_vlo), .DI10(scuba_vlo), + .DI11(scuba_vlo), .DI12(scuba_vlo), .DI13(scuba_vlo), .DI14(scuba_vlo), + .DI15(scuba_vlo), .DI16(scuba_vlo), .DI17(scuba_vlo), .CSW0(scuba_vhi), + .CSW1(scuba_vhi), .CSR0(scuba_vhi), .CSR1(scuba_vhi), .FULLI(Full_int), + .EMPTYI(Empty_int), .WE(WrEn), .RE(RdEn), .ORE(RdEn), .CLKW(WrClock), + .CLKR(RdClock), .RST(Reset), .RPRST(RPReset), .DO0(Q[0]), .DO1(Q[1]), + .DO2(Q[2]), .DO3(Q[3]), .DO4(Q[4]), .DO5(Q[5]), .DO6(Q[6]), .DO7(Q[7]), + .DO8(), .DO9(), .DO10(), .DO11(), .DO12(), .DO13(), .DO14(), .DO15(), + .DO16(), .DO17(), .EF(Empty_int), .AEF(AlmostEmpty), .AFF(AlmostFull), + .FF(Full_int)); + + assign Empty = Empty_int; + assign Full = Full_int; + + + // exemplar begin + // exemplar end + +endmodule diff --git a/fw/rtl/vendor/lcmxo2/generated/pll_lattice_generated.v b/fw/rtl/vendor/lcmxo2/generated/pll_lattice_generated.v new file mode 100644 index 0000000..5f3ad98 --- /dev/null +++ b/fw/rtl/vendor/lcmxo2/generated/pll_lattice_generated.v @@ -0,0 +1,98 @@ +/* Verilog netlist generated by SCUBA Diamond (64-bit) 3.12.1.454 */ +/* Module Version: 5.7 */ +/* C:\lscc\diamond\3.12\ispfpga\bin\nt64\scuba.exe -w -n pll_lattice_generated -lang verilog -synth synplify -arch xo2c00 -type pll -fin 50 -fclkop 100 -fclkop_tol 0.0 -fclkos 100 -fclkos_tol 0.0 -trimp 0 -phasep 0 -trimp_r -trims 0 -phases 90 -trims_r -phase_cntl STATIC -fb_mode 1 -lock */ +/* Sat Mar 19 17:10:12 2022 */ + + +`timescale 1 ns / 1 ps +module pll_lattice_generated (CLKI, CLKOP, CLKOS, LOCK)/* synthesis NGD_DRC_MASK=1 */; + input wire CLKI; + output wire CLKOP; + output wire CLKOS; + output wire LOCK; + + wire CLKOS_t; + wire CLKOP_t; + wire scuba_vlo; + + VLO scuba_vlo_inst (.Z(scuba_vlo)); + + defparam PLLInst_0.DDRST_ENA = "DISABLED" ; + defparam PLLInst_0.DCRST_ENA = "DISABLED" ; + defparam PLLInst_0.MRST_ENA = "DISABLED" ; + defparam PLLInst_0.PLLRST_ENA = "DISABLED" ; + defparam PLLInst_0.INTFB_WAKE = "DISABLED" ; + defparam PLLInst_0.STDBY_ENABLE = "DISABLED" ; + defparam PLLInst_0.DPHASE_SOURCE = "DISABLED" ; + defparam PLLInst_0.PLL_USE_WB = "DISABLED" ; + defparam PLLInst_0.CLKOS3_FPHASE = 0 ; + defparam PLLInst_0.CLKOS3_CPHASE = 0 ; + defparam PLLInst_0.CLKOS2_FPHASE = 0 ; + defparam PLLInst_0.CLKOS2_CPHASE = 0 ; + defparam PLLInst_0.CLKOS_FPHASE = 2 ; + defparam PLLInst_0.CLKOS_CPHASE = 5 ; + defparam PLLInst_0.CLKOP_FPHASE = 0 ; + defparam PLLInst_0.CLKOP_CPHASE = 4 ; + defparam PLLInst_0.PLL_LOCK_MODE = 0 ; + defparam PLLInst_0.CLKOS_TRIM_DELAY = 0 ; + defparam PLLInst_0.CLKOS_TRIM_POL = "RISING" ; + defparam PLLInst_0.CLKOP_TRIM_DELAY = 0 ; + defparam PLLInst_0.CLKOP_TRIM_POL = "RISING" ; + defparam PLLInst_0.FRACN_DIV = 0 ; + defparam PLLInst_0.FRACN_ENABLE = "DISABLED" ; + defparam PLLInst_0.OUTDIVIDER_MUXD2 = "DIVD" ; + defparam PLLInst_0.PREDIVIDER_MUXD1 = 0 ; + defparam PLLInst_0.VCO_BYPASS_D0 = "DISABLED" ; + defparam PLLInst_0.CLKOS3_ENABLE = "DISABLED" ; + defparam PLLInst_0.OUTDIVIDER_MUXC2 = "DIVC" ; + defparam PLLInst_0.PREDIVIDER_MUXC1 = 0 ; + defparam PLLInst_0.VCO_BYPASS_C0 = "DISABLED" ; + defparam PLLInst_0.CLKOS2_ENABLE = "DISABLED" ; + defparam PLLInst_0.OUTDIVIDER_MUXB2 = "DIVB" ; + defparam PLLInst_0.PREDIVIDER_MUXB1 = 0 ; + defparam PLLInst_0.VCO_BYPASS_B0 = "DISABLED" ; + defparam PLLInst_0.CLKOS_ENABLE = "ENABLED" ; + defparam PLLInst_0.OUTDIVIDER_MUXA2 = "DIVA" ; + defparam PLLInst_0.PREDIVIDER_MUXA1 = 0 ; + defparam PLLInst_0.VCO_BYPASS_A0 = "DISABLED" ; + defparam PLLInst_0.CLKOP_ENABLE = "ENABLED" ; + defparam PLLInst_0.CLKOS3_DIV = 1 ; + defparam PLLInst_0.CLKOS2_DIV = 1 ; + defparam PLLInst_0.CLKOS_DIV = 5 ; + defparam PLLInst_0.CLKOP_DIV = 5 ; + defparam PLLInst_0.CLKFB_DIV = 2 ; + defparam PLLInst_0.CLKI_DIV = 1 ; + defparam PLLInst_0.FEEDBK_PATH = "CLKOP" ; + EHXPLLJ PLLInst_0 (.CLKI(CLKI), .CLKFB(CLKOP_t), .PHASESEL1(scuba_vlo), + .PHASESEL0(scuba_vlo), .PHASEDIR(scuba_vlo), .PHASESTEP(scuba_vlo), + .LOADREG(scuba_vlo), .STDBY(scuba_vlo), .PLLWAKESYNC(scuba_vlo), + .RST(scuba_vlo), .RESETM(scuba_vlo), .RESETC(scuba_vlo), .RESETD(scuba_vlo), + .ENCLKOP(scuba_vlo), .ENCLKOS(scuba_vlo), .ENCLKOS2(scuba_vlo), + .ENCLKOS3(scuba_vlo), .PLLCLK(scuba_vlo), .PLLRST(scuba_vlo), .PLLSTB(scuba_vlo), + .PLLWE(scuba_vlo), .PLLADDR4(scuba_vlo), .PLLADDR3(scuba_vlo), .PLLADDR2(scuba_vlo), + .PLLADDR1(scuba_vlo), .PLLADDR0(scuba_vlo), .PLLDATI7(scuba_vlo), + .PLLDATI6(scuba_vlo), .PLLDATI5(scuba_vlo), .PLLDATI4(scuba_vlo), + .PLLDATI3(scuba_vlo), .PLLDATI2(scuba_vlo), .PLLDATI1(scuba_vlo), + .PLLDATI0(scuba_vlo), .CLKOP(CLKOP_t), .CLKOS(CLKOS_t), .CLKOS2(), + .CLKOS3(), .LOCK(LOCK), .INTLOCK(), .REFCLK(), .CLKINTFB(), .DPHSRC(), + .PLLACK(), .PLLDATO7(), .PLLDATO6(), .PLLDATO5(), .PLLDATO4(), .PLLDATO3(), + .PLLDATO2(), .PLLDATO1(), .PLLDATO0()) + /* synthesis FREQUENCY_PIN_CLKOS="100.000000" */ + /* synthesis FREQUENCY_PIN_CLKOP="100.000000" */ + /* synthesis FREQUENCY_PIN_CLKI="50.000000" */ + /* synthesis ICP_CURRENT="9" */ + /* synthesis LPF_RESISTOR="72" */; + + assign CLKOS = CLKOS_t; + assign CLKOP = CLKOP_t; + + + // exemplar begin + // exemplar attribute PLLInst_0 FREQUENCY_PIN_CLKOS 100.000000 + // exemplar attribute PLLInst_0 FREQUENCY_PIN_CLKOP 100.000000 + // exemplar attribute PLLInst_0 FREQUENCY_PIN_CLKI 50.000000 + // exemplar attribute PLLInst_0 ICP_CURRENT 9 + // exemplar attribute PLLInst_0 LPF_RESISTOR 72 + // exemplar end + +endmodule diff --git a/fw/rtl/vendor/lcmxo2/pll.sv b/fw/rtl/vendor/lcmxo2/pll.sv new file mode 100644 index 0000000..30c63d4 --- /dev/null +++ b/fw/rtl/vendor/lcmxo2/pll.sv @@ -0,0 +1,36 @@ +module pll ( + input inclk, + output logic reset, + output clk, + output sdram_clk +); + + logic pll_sdram_clk; + logic buf_sdram_clk; + logic pll_lock; + + pll_lattice_generated pll_lattice_generated_inst ( + .CLKI(inclk), + .CLKOP(clk), + .CLKOS(pll_sdram_clk), + .LOCK(pll_lock) + ); + + ODDRXE oddrxe_sdram_clk_inst ( + .D0(1'b0), + .D1(1'b1), + .SCLK(pll_sdram_clk), + .RST(1'b0), + .Q(buf_sdram_clk) + ); + + OB ob_sdram_clk_inst ( + .I(buf_sdram_clk), + .O(sdram_clk) + ) /* synthesis IO_TYPE="LVCMOS33" */; + + always_ff @(posedge clk) begin + reset <= ~pll_lock; + end + +endmodule diff --git a/fw/rtl/vendor/lcmxo2/vendor.sv b/fw/rtl/vendor/lcmxo2/vendor.sv new file mode 100644 index 0000000..bf2ec4b --- /dev/null +++ b/fw/rtl/vendor/lcmxo2/vendor.sv @@ -0,0 +1,127 @@ +module vendor ( + input clk, + input reset, + + vendor_scb.vendor vendor_scb +); + + logic start; + logic busy; + logic [1:0] length; + logic [5:0] delay; + + logic request; + logic write; + logic ack; + logic [7:0] address; + logic [7:0] rdata; + logic [7:0] wdata; + + logic [23:0] wdata_buffer; + + logic ufm_irq; + + always_comb begin + start = vendor_scb.control_valid && vendor_scb.control_wdata[0] && !busy; + vendor_scb.control_rdata = { + 16'd0, + address, + 4'b0000, + length, + write, + busy + }; + end + + always_ff @(posedge clk) begin + if (reset) begin + busy <= 1'b0; + end else begin + if (start) begin + busy <= 1'b1; + end + if (length == 2'd0 && ack) begin + busy <= 1'b0; + end + end + end + + always_ff @(posedge clk) begin + if (start) begin + length <= vendor_scb.control_wdata[3:2]; + end + if (ack && length > 2'd0) begin + length <= length - 1'd1; + end + end + + always_ff @(posedge clk) begin + if (reset) begin + delay <= 6'd0; + end else begin + if (start && vendor_scb.control_wdata[4]) begin + delay <= 6'd35; + end + if (delay > 6'd0) begin + delay <= delay - 1'd1; + end + end + end + + always_ff @(posedge clk) begin + if (reset) begin + request <= 1'b0; + end else begin + if (start) begin + request <= 1'b1; + end + if (busy && !request && delay == 6'd0) begin + request <= 1'b1; + end + if (ack) begin + request <= 1'b0; + end + end + end + + always_ff @(posedge clk) begin + if (start) begin + write <= vendor_scb.control_wdata[1]; + end + end + + always_ff @(posedge clk) begin + if (start) begin + address <= vendor_scb.control_wdata[15:8]; + end + end + + always_ff @(posedge clk) begin + if (ack) begin + vendor_scb.data_rdata <= {vendor_scb.data_rdata[23:0], rdata}; + end + end + + always_ff @(posedge clk) begin + if (start) begin + {wdata, wdata_buffer} <= vendor_scb.data_wdata; + end + if (ack) begin + {wdata, wdata_buffer} <= {wdata_buffer, 8'h00}; + end + end + + efb_lattice_generated efb_lattice_generated_inst ( + .wb_clk_i(clk), + .wb_rst_i(reset), + .wb_cyc_i(request), + .wb_stb_i(request), + .wb_we_i(write), + .wb_adr_i(address), + .wb_dat_i(wdata), + .wb_dat_o(rdata), + .wb_ack_o(ack), + .wbc_ufm_irq(ufm_irq) + ); + +endmodule diff --git a/fw/rtl/vendor/vendor_scb.sv b/fw/rtl/vendor/vendor_scb.sv new file mode 100644 index 0000000..9c25b83 --- /dev/null +++ b/fw/rtl/vendor/vendor_scb.sv @@ -0,0 +1,25 @@ +interface vendor_scb (); + + logic control_valid; + logic [31:0] control_rdata; + logic [31:0] control_wdata; + logic [31:0] data_rdata; + logic [31:0] data_wdata; + + modport controller ( + output control_valid, + input control_rdata, + output control_wdata, + input data_rdata, + output data_wdata + ); + + modport vendor ( + input control_valid, + output control_rdata, + input control_wdata, + output data_rdata, + input data_wdata + ); + +endinterface diff --git a/fw/scripts/post_module.tcl b/fw/scripts/post_module.tcl deleted file mode 100644 index ed19714..0000000 --- a/fw/scripts/post_module.tcl +++ /dev/null @@ -1,6 +0,0 @@ -set flow [lindex $quartus(args) 0] - -if [string match "quartus_asm" $flow] { - post_message "Generating final programming file" - qexec "quartus_cpf -c SummerCart64.cof" -} diff --git a/hw/.gitignore b/hw/.gitignore deleted file mode 100644 index 110ec6d..0000000 --- a/hw/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -/CAMOutputs -*.b#* -*.l#* -*.s#* -*.pdf -*.zip -eagle.epf diff --git a/hw/README.md b/hw/README.md deleted file mode 100644 index 4960309..0000000 --- a/hw/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# SummerCart64 Hardware - -Schematics and PCB design for SummerCart64 done in Autodesk Eagle software. - -## TODO - -- Expand documentation diff --git a/hw/SummerCart64.brd b/hw/SummerCart64.brd deleted file mode 100644 index 9366456..0000000 --- a/hw/SummerCart64.brd +++ /dev/null @@ -1,5643 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SummerCart64 -N64 FlashCart/DevKit -SummerCart64 -N64 FlashCart/DevKit -HW version: 1.0a -Designed by Polprzewodnikowy - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - -Footprint for Nintendo 64 cartridge edge connector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -26 -30 -35 -40 -45 -50 -1 -5 -10 -15 -20 -25 -BACK -FRONT - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>MICRON Flash Memory</b><p> -www.micron.com<br> -<author>Created by librarian@cadsoft.de</author><p> - - -<b>54-Pin Plastic TSOP</b> (400 mil)<p> -Source: http://download.micron.com/pdf/datasheets/dram/sdram/256MSDRAM.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -54-Pin Plastic TSOP (400 mil) -Source: http://download.micron.com/pdf/datasheets/dram/sdram/256MSDRAM.pdf - - - - - - - -<b>Resistors in DIL Packages</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>BOURNS</b> Chip Resistor Array<p> -Source: RS Component / BUORNS - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -BOURNS Chip Resistor Array -Source: RS Component / BUORNS - - - - - - - -<b>Resistors, Capacitors, Inductors</b><p> -Based on the previous libraries: -<ul> -<li>r.lbr -<li>cap.lbr -<li>cap-fe.lbr -<li>captant.lbr -<li>polcap.lbr -<li>ipc-smd.lbr -</ul> -All SMD packages are defined according to the IPC specifications and CECC<p> -<author>Created by librarian@cadsoft.de</author><p> -<p> -for Electrolyt Capacitors see also :<p> -www.bccomponents.com <p> -www.panasonic.com<p> -www.kemet.com<p> -http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b> -<p> -for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p> - -<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0> -<tr valign="top"> - -<! <td width="10">&nbsp;</td> -<td width="90%"> - -<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b> -<P> -<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2> - <TR> - <TD COLSPAN=8> - <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT> - </TD> - </TR> - <TR> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI&nbsp;TECH</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT> - </B> - </TD><TD>&nbsp;</TD> - </TR> - <TR> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 > - 3005P<BR> - 3006P<BR> - 3006W<BR> - 3006Y<BR> - 3009P<BR> - 3009W<BR> - 3009Y<BR> - 3057J<BR> - 3057L<BR> - 3057P<BR> - 3057Y<BR> - 3059J<BR> - 3059L<BR> - 3059P<BR> - 3059Y<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - 89P<BR> - 89W<BR> - 89X<BR> - 89PH<BR> - 76P<BR> - 89XH<BR> - 78SLT<BR> - 78L&nbsp;ALT<BR> - 56P&nbsp;ALT<BR> - 78P&nbsp;ALT<BR> - T8S<BR> - 78L<BR> - 56P<BR> - 78P<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - T18/784<BR> - 783<BR> - 781<BR> - -<BR> - -<BR> - -<BR> - 2199<BR> - 1697/1897<BR> - 1680/1880<BR> - 2187<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - 8035EKP/CT20/RJ-20P<BR> - -<BR> - RJ-20X<BR> - -<BR> - -<BR> - -<BR> - 1211L<BR> - 8012EKQ&nbsp;ALT<BR> - 8012EKR&nbsp;ALT<BR> - 1211P<BR> - 8012EKJ<BR> - 8012EKL<BR> - 8012EKQ<BR> - 8012EKR<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - 2101P<BR> - 2101W<BR> - 2101Y<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 2102L<BR> - 2102S<BR> - 2102Y<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - EVMCOG<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - 43P<BR> - 43W<BR> - 43Y<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 40L<BR> - 40P<BR> - 40Y<BR> - 70Y-T602<BR> - 70L<BR> - 70P<BR> - 70Y<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - RT/RTR12<BR> - RT/RTR12<BR> - RT/RTR12<BR> - -<BR> - RJ/RJR12<BR> - RJ/RJR12<BR> - RJ/RJR12<BR></FONT> - </TD> - </TR> - <TR> - <TD COLSPAN=8>&nbsp; - </TD> - </TR> - <TR> - <TD COLSPAN=8> - <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT> - </TD> - </TR> - <TR> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> - </TD> - </TR> - <TR> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 3250L<BR> - 3250P<BR> - 3250W<BR> - 3250X<BR> - 3252P<BR> - 3252W<BR> - 3252X<BR> - 3260P<BR> - 3260W<BR> - 3260X<BR> - 3262P<BR> - 3262W<BR> - 3262X<BR> - 3266P<BR> - 3266W<BR> - 3266X<BR> - 3290H<BR> - 3290P<BR> - 3290W<BR> - 3292P<BR> - 3292W<BR> - 3292X<BR> - 3296P<BR> - 3296W<BR> - 3296X<BR> - 3296Y<BR> - 3296Z<BR> - 3299P<BR> - 3299W<BR> - 3299X<BR> - 3299Y<BR> - 3299Z<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - 66P&nbsp;ALT<BR> - 66W&nbsp;ALT<BR> - 66X&nbsp;ALT<BR> - 66P&nbsp;ALT<BR> - 66W&nbsp;ALT<BR> - 66X&nbsp;ALT<BR> - -<BR> - 64W&nbsp;ALT<BR> - -<BR> - 64P&nbsp;ALT<BR> - 64W&nbsp;ALT<BR> - 64X&nbsp;ALT<BR> - 64P<BR> - 64W<BR> - 64X<BR> - 66X&nbsp;ALT<BR> - 66P&nbsp;ALT<BR> - 66W&nbsp;ALT<BR> - 66P<BR> - 66W<BR> - 66X<BR> - 67P<BR> - 67W<BR> - 67X<BR> - 67Y<BR> - 67Z<BR> - 68P<BR> - 68W<BR> - 68X<BR> - 67Y&nbsp;ALT<BR> - 67Z&nbsp;ALT<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 5050<BR> - 5091<BR> - 5080<BR> - 5087<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - T63YB<BR> - T63XB<BR> - -<BR> - -<BR> - -<BR> - 5887<BR> - 5891<BR> - 5880<BR> - -<BR> - -<BR> - -<BR> - T93Z<BR> - T93YA<BR> - T93XA<BR> - T93YB<BR> - T93XB<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 8026EKP<BR> - 8026EKW<BR> - 8026EKM<BR> - 8026EKP<BR> - 8026EKB<BR> - 8026EKM<BR> - 1309X<BR> - 1309P<BR> - 1309W<BR> - 8024EKP<BR> - 8024EKW<BR> - 8024EKN<BR> - RJ-9P/CT9P<BR> - RJ-9W<BR> - RJ-9X<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 3103P<BR> - 3103Y<BR> - 3103Z<BR> - 3103P<BR> - 3103Y<BR> - 3103Z<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 3105P/3106P<BR> - 3105W/3106W<BR> - 3105X/3106X<BR> - 3105Y/3106Y<BR> - 3105Z/3105Z<BR> - 3102P<BR> - 3102W<BR> - 3102X<BR> - 3102Y<BR> - 3102Z<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - EVMCBG<BR> - EVMCCG<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 55-1-X<BR> - 55-4-X<BR> - 55-3-X<BR> - 55-2-X<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 50-2-X<BR> - 50-4-X<BR> - 50-3-X<BR> - -<BR> - -<BR> - -<BR> - 64P<BR> - 64W<BR> - 64X<BR> - 64Y<BR> - 64Z<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - RT/RTR22<BR> - RT/RTR22<BR> - RT/RTR22<BR> - RT/RTR22<BR> - RJ/RJR22<BR> - RJ/RJR22<BR> - RJ/RJR22<BR> - RT/RTR26<BR> - RT/RTR26<BR> - RT/RTR26<BR> - RJ/RJR26<BR> - RJ/RJR26<BR> - RJ/RJR26<BR> - RJ/RJR26<BR> - RJ/RJR26<BR> - RJ/RJR26<BR> - RT/RTR24<BR> - RT/RTR24<BR> - RT/RTR24<BR> - RJ/RJR24<BR> - RJ/RJR24<BR> - RJ/RJR24<BR> - RJ/RJR24<BR> - RJ/RJR24<BR> - RJ/RJR24<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - </TR> - <TR> - <TD COLSPAN=8>&nbsp; - </TD> - </TR> - <TR> - <TD COLSPAN=8> - <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> - </TD> - </TR> - <TR> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> - </TD> - </TR> - <TR> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 3323P<BR> - 3323S<BR> - 3323W<BR> - 3329H<BR> - 3329P<BR> - 3329W<BR> - 3339H<BR> - 3339P<BR> - 3339W<BR> - 3352E<BR> - 3352H<BR> - 3352K<BR> - 3352P<BR> - 3352T<BR> - 3352V<BR> - 3352W<BR> - 3362H<BR> - 3362M<BR> - 3362P<BR> - 3362R<BR> - 3362S<BR> - 3362U<BR> - 3362W<BR> - 3362X<BR> - 3386B<BR> - 3386C<BR> - 3386F<BR> - 3386H<BR> - 3386K<BR> - 3386M<BR> - 3386P<BR> - 3386S<BR> - 3386W<BR> - 3386X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 25P<BR> - 25S<BR> - 25RX<BR> - 82P<BR> - 82M<BR> - 82PA<BR> - -<BR> - -<BR> - -<BR> - 91E<BR> - 91X<BR> - 91T<BR> - 91B<BR> - 91A<BR> - 91V<BR> - 91W<BR> - 25W<BR> - 25V<BR> - 25P<BR> - -<BR> - 25S<BR> - 25U<BR> - 25RX<BR> - 25X<BR> - 72XW<BR> - 72XL<BR> - 72PM<BR> - 72RX<BR> - -<BR> - 72PX<BR> - 72P<BR> - 72RXW<BR> - 72RXL<BR> - 72X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - T7YB<BR> - T7YA<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - TXD<BR> - TYA<BR> - TYP<BR> - -<BR> - TYD<BR> - TX<BR> - -<BR> - 150SX<BR> - 100SX<BR> - 102T<BR> - 101S<BR> - 190T<BR> - 150TX<BR> - 101<BR> - -<BR> - -<BR> - 101SX<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - ET6P<BR> - ET6S<BR> - ET6X<BR> - RJ-6W/8014EMW<BR> - RJ-6P/8014EMP<BR> - RJ-6X/8014EMX<BR> - TM7W<BR> - TM7P<BR> - TM7X<BR> - -<BR> - 8017SMS<BR> - -<BR> - 8017SMB<BR> - 8017SMA<BR> - -<BR> - -<BR> - CT-6W<BR> - CT-6H<BR> - CT-6P<BR> - CT-6R<BR> - -<BR> - CT-6V<BR> - CT-6X<BR> - -<BR> - -<BR> - 8038EKV<BR> - -<BR> - 8038EKX<BR> - -<BR> - -<BR> - 8038EKP<BR> - 8038EKZ<BR> - 8038EKW<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - 3321H<BR> - 3321P<BR> - 3321N<BR> - 1102H<BR> - 1102P<BR> - 1102T<BR> - RVA0911V304A<BR> - -<BR> - RVA0911H413A<BR> - RVG0707V100A<BR> - RVA0607V(H)306A<BR> - RVA1214H213A<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 3104B<BR> - 3104C<BR> - 3104F<BR> - 3104H<BR> - -<BR> - 3104M<BR> - 3104P<BR> - 3104S<BR> - 3104W<BR> - 3104X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - EVMQ0G<BR> - EVMQIG<BR> - EVMQ3G<BR> - EVMS0G<BR> - EVMQ0G<BR> - EVMG0G<BR> - -<BR> - -<BR> - -<BR> - EVMK4GA00B<BR> - EVM30GA00B<BR> - EVMK0GA00B<BR> - EVM38GA00B<BR> - EVMB6<BR> - EVLQ0<BR> - -<BR> - EVMMSG<BR> - EVMMBG<BR> - EVMMAG<BR> - -<BR> - -<BR> - EVMMCS<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - EVMM1<BR> - -<BR> - -<BR> - EVMM0<BR> - -<BR> - -<BR> - EVMM3<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - 62-3-1<BR> - 62-1-2<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 67R<BR> - -<BR> - 67P<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 67X<BR> - 63V<BR> - 63S<BR> - 63M<BR> - -<BR> - -<BR> - 63H<BR> - 63P<BR> - -<BR> - -<BR> - 63X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - RJ/RJR50<BR> - RJ/RJR50<BR> - RJ/RJR50<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - </TR> -</TABLE> -<P>&nbsp;<P> -<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3> - <TR> - <TD COLSPAN=7> - <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT> - <P> - <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT> - </TD> - </TR> - <TR> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> - </TD> - </TR> - <TR> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 3224G<BR> - 3224J<BR> - 3224W<BR> - 3269P<BR> - 3269W<BR> - 3269X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 44G<BR> - 44J<BR> - 44W<BR> - 84P<BR> - 84W<BR> - 84X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - ST63Z<BR> - ST63Y<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - ST5P<BR> - ST5W<BR> - ST5X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - </TR> - <TR> - <TD COLSPAN=7>&nbsp; - </TD> - </TR> - <TR> - <TD COLSPAN=7> - <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> - </TD> - </TR> - <TR> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> - </TD> - </TR> - <TR> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 3314G<BR> - 3314J<BR> - 3364A/B<BR> - 3364C/D<BR> - 3364W/X<BR> - 3313G<BR> - 3313J<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 23B<BR> - 23A<BR> - 21X<BR> - 21W<BR> - -<BR> - 22B<BR> - 22A<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - ST5YL/ST53YL<BR> - ST5YJ/5T53YJ<BR> - ST-23A<BR> - ST-22B<BR> - ST-22<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - ST-4B<BR> - ST-4A<BR> - -<BR> - -<BR> - -<BR> - ST-3B<BR> - ST-3A<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - EVM-6YS<BR> - EVM-1E<BR> - EVM-1G<BR> - EVM-1D<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - G4B<BR> - G4A<BR> - TR04-3S1<BR> - TRG04-2S1<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - DVR-43A<BR> - CVR-42C<BR> - CVR-42A/C<BR> - -<BR> - -<BR></FONT> - </TD> - </TR> -</TABLE> -<P> -<FONT SIZE=4 FACE=ARIAL><B>ALT =&nbsp;ALTERNATE</B></FONT> -<P> - -&nbsp; -<P> -</td> -</tr> -</table> - - -<b>RESISTOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b><p> - - - - - - - - ->NAME ->VALUE - - - - - - - -RESISTOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - - - -<b>TTL Devices, 74xx Series with European Symbols</b><p> -Based on the following sources: -<ul> -<li>Texas Instruments <i>TTL Data Book</i>&nbsp;&nbsp;&nbsp;Volume 1, 1996. -<li>TTL Data Book, Volume 2 , 1993 -<li>National Seminconductor Databook 1990, ALS/LS Logic -<li>ttl 74er digital data dictionary, ECA Electronic + Acustic GmbH, ISBN 3-88109-032-0 -<li>http://icmaster.com/ViewCompare.asp -</ul> -<author>Created by librarian@cadsoft.de</author> - - -<b>plastic thin shrink small outline package; 14 leads; body width 4.4 mm</b><p> -SOT402-1<br> -Source: http://www.nxp.com/documents/data_sheet/74ABT125.pdf - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -plastic thin shrink small outline package; 14 leads; body width 4.4 mm -SOT402-1 -Source: http://www.nxp.com/documents/data_sheet/74ABT125.pdf - - - - - - - -<b>Crystals and Crystal Resonators</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>kHz RANGE CRYSTAL UNIT</b><p> -LOW PROFILE SMD<b> -Source: Epson Toyocom FC-12M.pdf - - - - - - - ->NAME ->VALUE - - - - -kHz RANGE CRYSTAL UNIT -LOW PROFILE SMD -Source: Epson Toyocom FC-12M.pdf - - - - - - - -<b>Lithium Batteries and NC Accus</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>Battery Holder, SMT, 12mm</b><p> -multicomp PART NO. CH291-1220LF<br> -Source: <a href="http://www.farnell.com/datasheets/1505860.pdf"> Data sheet </a> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - -Battery Holder, SMT, 12mm -multicomp PART NO. CH291-1220LF -Source: Data sheet - - - - - - - -<b>Diodes</b><p> -Based on the following sources: -<ul> -<li>Motorola : www.onsemi.com -<li>Fairchild : www.fairchildsemi.com -<li>Philips : www.semiconductors.com -<li>Vishay : www.vishay.de -</ul> -<author>Created by librarian@cadsoft.de</author> - - -<b>SOD-323</b><p> -Source: www.st.com, BAT60J.pdf - - - - - - ->NAME ->VALUE - - - - - - - - -SOD-323 -Source: www.st.com, BAT60J.pdf - - - - - - - -<b>Samtec Connectors</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>THROUGH-HOLE .025" SQ POST SOCKET</b><p> -Source: Samtec SSW.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 -2 ->NAME ->VALUE - - - - -<b>LEDs</b><p> -<author>Created by librarian@cadsoft.de</author><br> -Extended by Federico Battaglin <author>&lt;federico.rd@fdpinternational.com&gt;</author> with DUOLED - - -<b>SML0603-XXX (HIGH INTENSITY) LED</b><p> -<table> -<tr><td>AG3K</td><td>AQUA GREEN</td></tr> -<tr><td>B1K</td><td>SUPER BLUE</td></tr> -<tr><td>R1K</td><td>SUPER RED</td></tr> -<tr><td>R3K</td><td>ULTRA RED</td></tr> -<tr><td>O3K</td><td>SUPER ORANGE</td></tr> -<tr><td>O3KH</td><td>SOFT ORANGE</td></tr> -<tr><td>Y3KH</td><td>SUPER YELLOW</td></tr> -<tr><td>Y3K</td><td>SUPER YELLOW</td></tr> -<tr><td>2CW</td><td>WHITE</td></tr> -</table> -Source: http://www.ledtronics.com/ds/smd-0603/Dstr0092.pdf - - - - - - - - - - ->NAME ->VALUE - - - - - - -SML0603-XXX (HIGH INTENSITY) LED - -AG3KAQUA GREEN -B1KSUPER BLUE -R1KSUPER RED -R3KULTRA RED -O3KSUPER ORANGE -O3KHSOFT ORANGE -Y3KHSUPER YELLOW -Y3KSUPER YELLOW -2CWWHITE - -Source: http://www.ledtronics.com/ds/smd-0603/Dstr0092.pdf - - - - - - - -<b>Voltage Regulators</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>Small Outline Transistor 223</b><p> -PLASTIC PACKAGE CASE 318E-04<br> -Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - - - - - - ->NAME ->VALUE -direction of pcb -transportation for -wavesoldering - - - - - - - - - - - - -Small Outline Transistor 223 -PLASTIC PACKAGE CASE 318E-04 -Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - - - - - - - -<b>EAGLE Design Rules</b> -<p> -Die Standard-Design-Rules sind so gewählt, dass sie für -die meisten Anwendungen passen. Sollte ihre Platine -besondere Anforderungen haben, treffen Sie die erforderlichen -Einstellungen hier und speichern die Design Rules unter -einem neuen Namen ab. -<b>EAGLE Design Rules</b> -<p> -The default Design Rules have been set to cover -a wide range of applications. Your particular design -may have different requirements, so please make the -necessary adjustments and save your customized -design rules under a new name. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Since Version 6.2.2 text objects can contain more than one line, -which will not be processed correctly with this version. - - -Since Version 8.2, EAGLE supports online libraries. The ids -of those online libraries will not be understood (or retained) -with this version. - - -Since Version 8.3, EAGLE supports URNs for individual library -assets (packages, symbols, and devices). The URNs of those assets -will not be understood (or retained) with this version. - - -Since Version 8.3, EAGLE supports the association of 3D packages -with devices in libraries, schematics, and board files. Those 3D -packages will not be understood (or retained) with this version. - - - diff --git a/hw/SummerCart64.cam b/hw/SummerCart64.cam deleted file mode 100644 index 3c5f3aa..0000000 --- a/hw/SummerCart64.cam +++ /dev/null @@ -1,276 +0,0 @@ -{ - "author": { - "email": "sc@mateuszfaderewski.pl", - "name": "Polprzewodnikowy" - }, - "description": { - "EN": "SummerCart64 CAM job." - }, - "output_type": "zip", - "outputs": [ - { - "filename_prefix": "CAMOutputs/GerberFiles", - "format_specifier": { - "decimal": 4, - "integer": 3 - }, - "generate_job_file": true, - "output_type": "gerber", - "outputs": [ - { - "advanced_options": { - "mirror": false, - "offset_x": 0, - "offset_y": 0, - "rotate": false, - "upside_down": false - }, - "board_outline": false, - "config": { - "file_function": "Copper", - "layer": 1, - "layer_details": "mixed", - "layer_type": "top" - }, - "filename_format": "%PREFIX/copper_top.gbr", - "layers": [ - 1, - 17, - 18 - ], - "name": "Top Copper", - "polarity": "positive", - "type": "gerber_layer" - }, - { - "advanced_options": { - "mirror": false, - "offset_x": 0, - "offset_y": 0, - "rotate": false, - "upside_down": false - }, - "board_outline": false, - "config": { - "file_function": "Copper", - "layer": 2, - "layer_details": "mixed", - "layer_type": "bottom" - }, - "filename_format": "%PREFIX/copper_bottom.gbr", - "layers": [ - 16, - 17, - 18 - ], - "name": "Bottom Copper", - "polarity": "positive", - "type": "gerber_layer" - }, - { - "advanced_options": { - "mirror": false, - "offset_x": 0, - "offset_y": 0, - "rotate": false, - "upside_down": false - }, - "board_outline": true, - "config": { - "file_function": "Profile", - "plating": "non-plated" - }, - "filename_format": "%PREFIX/profile.gbr", - "layers": [ - ], - "milling": true, - "polarity": "positive", - "type": "gerber_layer" - }, - { - "advanced_options": { - "mirror": false, - "offset_x": 0, - "offset_y": 0, - "rotate": false, - "upside_down": false - }, - "board_outline": false, - "config": { - "file_function": "Soldermask", - "index": 1, - "layer_type": "top" - }, - "filename_format": "%PREFIX/soldermask_top.gbr", - "layers": [ - 29 - ], - "name": "Soldermask Top", - "polarity": "positive", - "type": "gerber_layer" - }, - { - "advanced_options": { - "mirror": false, - "offset_x": 0, - "offset_y": 0, - "rotate": false, - "upside_down": false - }, - "board_outline": false, - "config": { - "file_function": "Soldermask", - "index": 1, - "layer_type": "bottom" - }, - "filename_format": "%PREFIX/soldermask_bottom.gbr", - "layers": [ - 30 - ], - "name": "Soldermask Bottom", - "polarity": "positive", - "type": "gerber_layer" - }, - { - "advanced_options": { - "mirror": false, - "offset_x": 0, - "offset_y": 0, - "rotate": false, - "upside_down": false - }, - "board_outline": false, - "config": { - "file_function": "Paste", - "layer_type": "top" - }, - "filename_format": "%PREFIX/solderpaste_top.gbr", - "layers": [ - 31 - ], - "milling": false, - "name": "Solderpaste Top", - "polarity": "positive", - "type": "gerber_layer" - }, - { - "advanced_options": { - "mirror": false, - "offset_x": 0, - "offset_y": 0, - "rotate": false, - "upside_down": false - }, - "board_outline": false, - "config": { - "file_function": "Paste", - "layer_type": "bottom" - }, - "filename_format": "%PREFIX/solderpaste_bottom.gbr", - "layers": [ - 32 - ], - "milling": false, - "name": "Solderpaste Bottom", - "polarity": "positive", - "type": "gerber_layer" - }, - { - "advanced_options": { - "mirror": false, - "offset_x": 0, - "offset_y": 0, - "rotate": false, - "upside_down": false - }, - "board_outline": false, - "config": { - "file_function": "Legend", - "index": 1, - "layer_type": "top" - }, - "filename_format": "%PREFIX/silkscreen_top.gbr", - "layers": [ - 21, - 25 - ], - "milling": false, - "name": "Silkscreen Top", - "polarity": "positive", - "type": "gerber_layer" - }, - { - "advanced_options": { - "mirror": false, - "offset_x": 0, - "offset_y": 0, - "rotate": false, - "upside_down": false - }, - "board_outline": false, - "config": { - "file_function": "Legend", - "index": 1, - "layer_type": "bottom" - }, - "filename_format": "%PREFIX/silkscreen_bottom.gbr", - "layers": [ - 22, - 26 - ], - "milling": false, - "name": "Silkscreen Bottom", - "polarity": "positive", - "type": "gerber_layer" - } - ], - "version": "RS274X" - }, - { - "filename_prefix": "CAMOutputs/DrillFiles", - "format_specifier": { - "decimal": 3, - "integer": 3 - }, - "output_type": "drill", - "outputs": [ - { - "advanced_options": { - "mirror": false, - "offset_x": 0, - "offset_y": 0, - "rotate": false, - "upside_down": false - }, - "filename_format": "%DRILLPREFIX/drill_%FROM_%TO.xln", - "name": "Auto Drill", - "type": "autodrills" - } - ] - }, - { - "filename_prefix": "CAMOutputs/Assembly", - "output_type": "assembly", - "outputs": [ - { - "filename_format": "%ASSEMBLYPREFIX/%N", - "list_attribute": true, - "list_type": "values", - "name": "Bill of Material", - "output_format": "txt", - "type": "bom" - } - ] - }, - { - "filename_prefix": "CAMOutputs/DrawingFiles", - "output_type": "drawing", - "outputs": [ - ] - } - ], - "timestamp": "2020-10-25T01:41:35", - "type": "EAGLE CAM job", - "units": "metric", - "version": "9.2.0" -} diff --git a/hw/SummerCart64.lbr b/hw/SummerCart64.lbr deleted file mode 100644 index f2284ad..0000000 --- a/hw/SummerCart64.lbr +++ /dev/null @@ -1,1532 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Collection of parts used in SummerCart64 design - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - -Footprint for Nintendo 64 cartridge edge connector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -26 -30 -35 -40 -45 -50 -1 -5 -10 -15 -20 -25 -BACK -FRONT - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - -Symbol for Nintendo 64 cartridge edge connector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Nintendo 64 cartridge edge connector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/hw/SummerCart64.sch b/hw/SummerCart64.sch deleted file mode 100644 index ccde1f7..0000000 --- a/hw/SummerCart64.sch +++ /dev/null @@ -1,17889 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - -Footprint for Nintendo 64 cartridge edge connector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -26 -30 -35 -40 -45 -50 -1 -5 -10 -15 -20 -25 -BACK -FRONT - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - -Symbol for Nintendo 64 cartridge edge connector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Nintendo 64 cartridge edge connector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>Supply Symbols</b><p> - GND, VCC, 0V, +5V, -5V, etc.<p> - Please keep in mind, that these devices are necessary for the - automatic wiring of the supply signals.<p> - The pin name defined in the symbol is identical to the net which is to be wired automatically.<p> - In this library the device names are the same as the pin names of the symbols, therefore the correct signal names appear next to the supply symbols in the schematic.<p> - <author>Created by librarian@cadsoft.de</author> - - - - - ->VALUE - - - - - ->VALUE - - - - - -<b>SUPPLY SYMBOL</b> - - - - - - - - - - - - -<b>SUPPLY SYMBOL</b> - - - - - - - - - - - - - - -<b>MICRON Flash Memory</b><p> -www.micron.com<br> -<author>Created by librarian@cadsoft.de</author><p> - - -<b>54-Pin Plastic TSOP</b> (400 mil)<p> -Source: http://download.micron.com/pdf/datasheets/dram/sdram/256MSDRAM.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -54-Pin Plastic TSOP (400 mil) -Source: http://download.micron.com/pdf/datasheets/dram/sdram/256MSDRAM.pdf - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>256Mb: x16 SDRAM</b> MT48LC16M16A2 - 4 Meg x 16 x 4 banks<p> -Source: http://download.micron.com/pdf/datasheets/dram/sdram/256MSDRAM.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>Resistors in DIL Packages</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>Chip Resistor Array</b> size 4 × 0603<p> -concave termination - Phycomp Components<br> -Source: RS Components - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>Chip Resistor Array</b> size 4 × 0603<p> -convex termination - Phycomp Components<br> -Source: RS Components - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - -<b>BOURNS</b> Chip Resistor Array<p> -Source: RS Component / BUORNS - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>BOURNS</b> Chip Resistor Array<p> -Source: RS Component / BUORNS - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>ARRAY CHIP RESISTOR</b> Size 4 x 0402<p> -Source: www.yageo.com .. Pu-YC124_51_PbFree_L_1.pdf - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - -<b>Array chip resistor</b> size 4 × 0402<p> -Source: http://docs-europe.electrocomponents.com/webdocs/0114/0900766b80114d99.pdf - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - -<b>Chip Resistor Array 0201x4</b> 4 resistors in 1.4 mm x 0.6 mm size<p> -Source: PANASONIC .. aoc0000ce1.pdf - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>Chip Resistor Array 0402x4</b> 4 resistors in 2.0 mm x 1.0 mm size<p> -Source: PANASONIC .. aoc0000ce1.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>Chip Resistor Array 0603x4</b> 4 resistors in 3.2 mm x 1.6 mm size (EXB38V, V8V)<p> -Source: PANASONIC .. aoc0000ce1.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>Chip Resistor Array 0402x4</b> 4 resistors in 2.0 mm x 1.0 mm size<p> -Source: PANASONIC .. aoc0000ce1.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>Chip Resistor Array 0805x4</b> 4 resistors in 5.08 mm x 2.20 mm size<p> -Source: PANASONIC .. aoc0000ce1.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>Chip Resistor Array 0603x4</b> 4 resistors in 3.20 mm x 1.60 mm size<p> -Source: PANASONIC .. aoc0000ce1.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -Chip Resistor Array size 4 × 0603 -concave termination - Phycomp Components -Source: RS Components - - - - - -Chip Resistor Array size 4 × 0603 -convex termination - Phycomp Components -Source: RS Components - - - - - -BOURNS Chip Resistor Array -Source: RS Component / BUORNS - - - - - -BOURNS Chip Resistor Array -Source: RS Component / BUORNS - - - - - -ARRAY CHIP RESISTOR Size 4 x 0402 -Source: www.yageo.com .. Pu-YC124_51_PbFree_L_1.pdf - - - - - -Array chip resistor size 4 × 0402 -Source: http://docs-europe.electrocomponents.com/webdocs/0114/0900766b80114d99.pdf - - - - - -Chip Resistor Array 0201x4 4 resistors in 1.4 mm x 0.6 mm size -Source: PANASONIC .. aoc0000ce1.pdf - - - - - -Chip Resistor Array 0402x4 4 resistors in 2.0 mm x 1.0 mm size -Source: PANASONIC .. aoc0000ce1.pdf - - - - - -Chip Resistor Array 0603x4 4 resistors in 3.2 mm x 1.6 mm size (EXB38V, V8V) -Source: PANASONIC .. aoc0000ce1.pdf - - - - - -Chip Resistor Array 0402x4 4 resistors in 2.0 mm x 1.0 mm size -Source: PANASONIC .. aoc0000ce1.pdf - - - - - -Chip Resistor Array 0805x4 4 resistors in 5.08 mm x 2.20 mm size -Source: PANASONIC .. aoc0000ce1.pdf - - - - - -Chip Resistor Array 0603x4 4 resistors in 3.20 mm x 1.60 mm size -Source: PANASONIC .. aoc0000ce1.pdf - - - - - - - - - - - ->VALUE ->NAME - - - - - - -<b>Array Chip Resistor</b><p> -Source: RS Component / Phycomp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>Resistors, Capacitors, Inductors</b><p> -Based on the previous libraries: -<ul> -<li>r.lbr -<li>cap.lbr -<li>cap-fe.lbr -<li>captant.lbr -<li>polcap.lbr -<li>ipc-smd.lbr -</ul> -All SMD packages are defined according to the IPC specifications and CECC<p> -<author>Created by librarian@cadsoft.de</author><p> -<p> -for Electrolyt Capacitors see also :<p> -www.bccomponents.com <p> -www.panasonic.com<p> -www.kemet.com<p> -http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b> -<p> -for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p> - -<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0> -<tr valign="top"> - -<! <td width="10">&nbsp;</td> -<td width="90%"> - -<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b> -<P> -<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2> - <TR> - <TD COLSPAN=8> - <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT> - </TD> - </TR> - <TR> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI&nbsp;TECH</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT> - </B> - </TD> - <TD ALIGN=CENTER> - <B> - <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT> - </B> - </TD><TD>&nbsp;</TD> - </TR> - <TR> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 > - 3005P<BR> - 3006P<BR> - 3006W<BR> - 3006Y<BR> - 3009P<BR> - 3009W<BR> - 3009Y<BR> - 3057J<BR> - 3057L<BR> - 3057P<BR> - 3057Y<BR> - 3059J<BR> - 3059L<BR> - 3059P<BR> - 3059Y<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - 89P<BR> - 89W<BR> - 89X<BR> - 89PH<BR> - 76P<BR> - 89XH<BR> - 78SLT<BR> - 78L&nbsp;ALT<BR> - 56P&nbsp;ALT<BR> - 78P&nbsp;ALT<BR> - T8S<BR> - 78L<BR> - 56P<BR> - 78P<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - T18/784<BR> - 783<BR> - 781<BR> - -<BR> - -<BR> - -<BR> - 2199<BR> - 1697/1897<BR> - 1680/1880<BR> - 2187<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - 8035EKP/CT20/RJ-20P<BR> - -<BR> - RJ-20X<BR> - -<BR> - -<BR> - -<BR> - 1211L<BR> - 8012EKQ&nbsp;ALT<BR> - 8012EKR&nbsp;ALT<BR> - 1211P<BR> - 8012EKJ<BR> - 8012EKL<BR> - 8012EKQ<BR> - 8012EKR<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - 2101P<BR> - 2101W<BR> - 2101Y<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 2102L<BR> - 2102S<BR> - 2102Y<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - EVMCOG<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - 43P<BR> - 43W<BR> - 43Y<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 40L<BR> - 40P<BR> - 40Y<BR> - 70Y-T602<BR> - 70L<BR> - 70P<BR> - 70Y<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - RT/RTR12<BR> - RT/RTR12<BR> - RT/RTR12<BR> - -<BR> - RJ/RJR12<BR> - RJ/RJR12<BR> - RJ/RJR12<BR></FONT> - </TD> - </TR> - <TR> - <TD COLSPAN=8>&nbsp; - </TD> - </TR> - <TR> - <TD COLSPAN=8> - <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT> - </TD> - </TR> - <TR> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> - </TD> - </TR> - <TR> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 3250L<BR> - 3250P<BR> - 3250W<BR> - 3250X<BR> - 3252P<BR> - 3252W<BR> - 3252X<BR> - 3260P<BR> - 3260W<BR> - 3260X<BR> - 3262P<BR> - 3262W<BR> - 3262X<BR> - 3266P<BR> - 3266W<BR> - 3266X<BR> - 3290H<BR> - 3290P<BR> - 3290W<BR> - 3292P<BR> - 3292W<BR> - 3292X<BR> - 3296P<BR> - 3296W<BR> - 3296X<BR> - 3296Y<BR> - 3296Z<BR> - 3299P<BR> - 3299W<BR> - 3299X<BR> - 3299Y<BR> - 3299Z<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - 66P&nbsp;ALT<BR> - 66W&nbsp;ALT<BR> - 66X&nbsp;ALT<BR> - 66P&nbsp;ALT<BR> - 66W&nbsp;ALT<BR> - 66X&nbsp;ALT<BR> - -<BR> - 64W&nbsp;ALT<BR> - -<BR> - 64P&nbsp;ALT<BR> - 64W&nbsp;ALT<BR> - 64X&nbsp;ALT<BR> - 64P<BR> - 64W<BR> - 64X<BR> - 66X&nbsp;ALT<BR> - 66P&nbsp;ALT<BR> - 66W&nbsp;ALT<BR> - 66P<BR> - 66W<BR> - 66X<BR> - 67P<BR> - 67W<BR> - 67X<BR> - 67Y<BR> - 67Z<BR> - 68P<BR> - 68W<BR> - 68X<BR> - 67Y&nbsp;ALT<BR> - 67Z&nbsp;ALT<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 5050<BR> - 5091<BR> - 5080<BR> - 5087<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - T63YB<BR> - T63XB<BR> - -<BR> - -<BR> - -<BR> - 5887<BR> - 5891<BR> - 5880<BR> - -<BR> - -<BR> - -<BR> - T93Z<BR> - T93YA<BR> - T93XA<BR> - T93YB<BR> - T93XB<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 8026EKP<BR> - 8026EKW<BR> - 8026EKM<BR> - 8026EKP<BR> - 8026EKB<BR> - 8026EKM<BR> - 1309X<BR> - 1309P<BR> - 1309W<BR> - 8024EKP<BR> - 8024EKW<BR> - 8024EKN<BR> - RJ-9P/CT9P<BR> - RJ-9W<BR> - RJ-9X<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 3103P<BR> - 3103Y<BR> - 3103Z<BR> - 3103P<BR> - 3103Y<BR> - 3103Z<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 3105P/3106P<BR> - 3105W/3106W<BR> - 3105X/3106X<BR> - 3105Y/3106Y<BR> - 3105Z/3105Z<BR> - 3102P<BR> - 3102W<BR> - 3102X<BR> - 3102Y<BR> - 3102Z<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - EVMCBG<BR> - EVMCCG<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 55-1-X<BR> - 55-4-X<BR> - 55-3-X<BR> - 55-2-X<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 50-2-X<BR> - 50-4-X<BR> - 50-3-X<BR> - -<BR> - -<BR> - -<BR> - 64P<BR> - 64W<BR> - 64X<BR> - 64Y<BR> - 64Z<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - RT/RTR22<BR> - RT/RTR22<BR> - RT/RTR22<BR> - RT/RTR22<BR> - RJ/RJR22<BR> - RJ/RJR22<BR> - RJ/RJR22<BR> - RT/RTR26<BR> - RT/RTR26<BR> - RT/RTR26<BR> - RJ/RJR26<BR> - RJ/RJR26<BR> - RJ/RJR26<BR> - RJ/RJR26<BR> - RJ/RJR26<BR> - RJ/RJR26<BR> - RT/RTR24<BR> - RT/RTR24<BR> - RT/RTR24<BR> - RJ/RJR24<BR> - RJ/RJR24<BR> - RJ/RJR24<BR> - RJ/RJR24<BR> - RJ/RJR24<BR> - RJ/RJR24<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - </TR> - <TR> - <TD COLSPAN=8>&nbsp; - </TD> - </TR> - <TR> - <TD COLSPAN=8> - <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> - </TD> - </TR> - <TR> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> - </TD> - <TD ALIGN=CENTER> - <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> - </TD> - </TR> - <TR> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 3323P<BR> - 3323S<BR> - 3323W<BR> - 3329H<BR> - 3329P<BR> - 3329W<BR> - 3339H<BR> - 3339P<BR> - 3339W<BR> - 3352E<BR> - 3352H<BR> - 3352K<BR> - 3352P<BR> - 3352T<BR> - 3352V<BR> - 3352W<BR> - 3362H<BR> - 3362M<BR> - 3362P<BR> - 3362R<BR> - 3362S<BR> - 3362U<BR> - 3362W<BR> - 3362X<BR> - 3386B<BR> - 3386C<BR> - 3386F<BR> - 3386H<BR> - 3386K<BR> - 3386M<BR> - 3386P<BR> - 3386S<BR> - 3386W<BR> - 3386X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 25P<BR> - 25S<BR> - 25RX<BR> - 82P<BR> - 82M<BR> - 82PA<BR> - -<BR> - -<BR> - -<BR> - 91E<BR> - 91X<BR> - 91T<BR> - 91B<BR> - 91A<BR> - 91V<BR> - 91W<BR> - 25W<BR> - 25V<BR> - 25P<BR> - -<BR> - 25S<BR> - 25U<BR> - 25RX<BR> - 25X<BR> - 72XW<BR> - 72XL<BR> - 72PM<BR> - 72RX<BR> - -<BR> - 72PX<BR> - 72P<BR> - 72RXW<BR> - 72RXL<BR> - 72X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - T7YB<BR> - T7YA<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - TXD<BR> - TYA<BR> - TYP<BR> - -<BR> - TYD<BR> - TX<BR> - -<BR> - 150SX<BR> - 100SX<BR> - 102T<BR> - 101S<BR> - 190T<BR> - 150TX<BR> - 101<BR> - -<BR> - -<BR> - 101SX<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - ET6P<BR> - ET6S<BR> - ET6X<BR> - RJ-6W/8014EMW<BR> - RJ-6P/8014EMP<BR> - RJ-6X/8014EMX<BR> - TM7W<BR> - TM7P<BR> - TM7X<BR> - -<BR> - 8017SMS<BR> - -<BR> - 8017SMB<BR> - 8017SMA<BR> - -<BR> - -<BR> - CT-6W<BR> - CT-6H<BR> - CT-6P<BR> - CT-6R<BR> - -<BR> - CT-6V<BR> - CT-6X<BR> - -<BR> - -<BR> - 8038EKV<BR> - -<BR> - 8038EKX<BR> - -<BR> - -<BR> - 8038EKP<BR> - 8038EKZ<BR> - 8038EKW<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - 3321H<BR> - 3321P<BR> - 3321N<BR> - 1102H<BR> - 1102P<BR> - 1102T<BR> - RVA0911V304A<BR> - -<BR> - RVA0911H413A<BR> - RVG0707V100A<BR> - RVA0607V(H)306A<BR> - RVA1214H213A<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 3104B<BR> - 3104C<BR> - 3104F<BR> - 3104H<BR> - -<BR> - 3104M<BR> - 3104P<BR> - 3104S<BR> - 3104W<BR> - 3104X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - EVMQ0G<BR> - EVMQIG<BR> - EVMQ3G<BR> - EVMS0G<BR> - EVMQ0G<BR> - EVMG0G<BR> - -<BR> - -<BR> - -<BR> - EVMK4GA00B<BR> - EVM30GA00B<BR> - EVMK0GA00B<BR> - EVM38GA00B<BR> - EVMB6<BR> - EVLQ0<BR> - -<BR> - EVMMSG<BR> - EVMMBG<BR> - EVMMAG<BR> - -<BR> - -<BR> - EVMMCS<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - EVMM1<BR> - -<BR> - -<BR> - EVMM0<BR> - -<BR> - -<BR> - EVMM3<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - 62-3-1<BR> - 62-1-2<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 67R<BR> - -<BR> - 67P<BR> - -<BR> - -<BR> - -<BR> - -<BR> - 67X<BR> - 63V<BR> - 63S<BR> - 63M<BR> - -<BR> - -<BR> - 63H<BR> - 63P<BR> - -<BR> - -<BR> - 63X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - RJ/RJR50<BR> - RJ/RJR50<BR> - RJ/RJR50<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - </TR> -</TABLE> -<P>&nbsp;<P> -<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3> - <TR> - <TD COLSPAN=7> - <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT> - <P> - <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT> - </TD> - </TR> - <TR> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> - </TD> - </TR> - <TR> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 3224G<BR> - 3224J<BR> - 3224W<BR> - 3269P<BR> - 3269W<BR> - 3269X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 44G<BR> - 44J<BR> - 44W<BR> - 84P<BR> - 84W<BR> - 84X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - ST63Z<BR> - ST63Y<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - ST5P<BR> - ST5W<BR> - ST5X<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - </TR> - <TR> - <TD COLSPAN=7>&nbsp; - </TD> - </TR> - <TR> - <TD COLSPAN=7> - <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> - </TD> - </TR> - <TR> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> - </TD> - <TD> - <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> - </TD> - </TR> - <TR> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 3314G<BR> - 3314J<BR> - 3364A/B<BR> - 3364C/D<BR> - 3364W/X<BR> - 3313G<BR> - 3313J<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - 23B<BR> - 23A<BR> - 21X<BR> - 21W<BR> - -<BR> - 22B<BR> - 22A<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - ST5YL/ST53YL<BR> - ST5YJ/5T53YJ<BR> - ST-23A<BR> - ST-22B<BR> - ST-22<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - ST-4B<BR> - ST-4A<BR> - -<BR> - -<BR> - -<BR> - ST-3B<BR> - ST-3A<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - EVM-6YS<BR> - EVM-1E<BR> - EVM-1G<BR> - EVM-1D<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - G4B<BR> - G4A<BR> - TR04-3S1<BR> - TRG04-2S1<BR> - -<BR> - -<BR> - -<BR></FONT> - </TD> - <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> - -<BR> - -<BR> - DVR-43A<BR> - CVR-42C<BR> - CVR-42A/C<BR> - -<BR> - -<BR></FONT> - </TD> - </TR> -</TABLE> -<P> -<FONT SIZE=4 FACE=ARIAL><B>ALT =&nbsp;ALTERNATE</B></FONT> -<P> - -&nbsp; -<P> -</td> -</tr> -</table> - - -<b>Chip RESISTOR 0402 EIA (1005 Metric)</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b> wave soldering<p> - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -wave soldering - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -wave soldering - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b> - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -wave soldering - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -wave soldering - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -wave soldering - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -wave soldering - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -wave soldering - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -wave soldering - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b> wave soldering<p> -Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -MELF 0.10 W - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -MELF 0.25 W - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -MELF 0.12 W - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -MELF 0.10 W - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -MELF 0.25 W - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -MELF 0.25 W - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -MELF 0.12 W - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -MELF 0.25 W - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -type 0204, grid 5 mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type 0204, grid 7.5 mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type 0204, grid 2.5 mm - - - - - - ->NAME ->VALUE - - -<b>RESISTOR</b><p> -type 0207, grid 10 mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type 0207, grid 12 mm - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - -<b>RESISTOR</b><p> -type 0207, grid 15mm - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - -<b>RESISTOR</b><p> -type 0207, grid 2.5 mm - - - - - - - ->NAME ->VALUE - - -<b>RESISTOR</b><p> -type 0207, grid 5 mm - - - - - - - ->NAME ->VALUE - - -<b>RESISTOR</b><p> -type 0207, grid 7.5 mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type 0309, grid 10mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type 0309, grid 12.5 mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type 0309, grid 2.5 mm - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b><p> -type 0411, grid 12.5 mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type 0411, grid 15 mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type 0411, grid 3.81 mm - - - - - - ->NAME ->VALUE - - - -<b>RESISTOR</b><p> -type 0414, grid 15 mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type 0414, grid 5 mm - - - - - - ->NAME ->VALUE - - - -<b>RESISTOR</b><p> -type 0617, grid 17.5 mm - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type 0617, grid 22.5 mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type 0617, grid 5 mm - - - - - - ->NAME ->VALUE - - - -<b>RESISTOR</b><p> -type 0922, grid 22.5 mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - -<b>RESISTOR</b><p> -type 0613, grid 5 mm - - - - - - ->NAME ->VALUE - - - -<b>RESISTOR</b><p> -type 0613, grid 15 mm - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type 0817, grid 22.5 mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE -0817 - - - - -<b>RESISTOR</b><p> -type 0817, grid 6.35 mm - - - - - - ->NAME ->VALUE -0817 - - - -<b>RESISTOR</b><p> -type V234, grid 12.5 mm - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type V235, grid 17.78 mm - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>RESISTOR</b><p> -type V526-0, grid 2.5 mm - - - - - - - - - - ->NAME ->VALUE - - -<b>CECC Size RC2211</b> Reflow Soldering<p> -source Beyschlag - - - - - - ->NAME ->VALUE - - -<b>CECC Size RC2211</b> Wave Soldering<p> -source Beyschlag - - - - - - ->NAME ->VALUE - - -<b>CECC Size RC3715</b> Reflow Soldering<p> -source Beyschlag - - - - - - - - ->NAME ->VALUE - - -<b>CECC Size RC3715</b> Wave Soldering<p> -source Beyschlag - - - - - - - - ->NAME ->VALUE - - -<b>CECC Size RC6123</b> Reflow Soldering<p> -source Beyschlag - - - - - - - - ->NAME ->VALUE - - -<b>CECC Size RC6123</b> Wave Soldering<p> -source Beyschlag - - - - - - - - ->NAME ->VALUE - - -<b>RESISTOR</b><p> -type 0922, grid 7.5 mm - - - - - - ->NAME ->VALUE -0922 - - - -<b>RESISTOR</b><p> -type RDH, grid 15 mm - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE -RDH - - - - -<b>Mini MELF 0102 Axial</b> - - - - ->NAME ->VALUE - - - -<b>RESISTOR</b> chip<p> -Source: http://www.vishay.com/docs/20008/dcrcw.pdf - - ->NAME ->VALUE - - - - - -<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> -MIL SIZE RBR52<br> -Source: VISHAY .. vta56.pdf - - - - - - - - - - ->NAME ->VALUE - - - - -<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> -MIL SIZE RBR53<br> -Source: VISHAY .. vta56.pdf - - - - - - - - - - ->NAME ->VALUE - - - - -<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> -MIL SIZE RBR54<br> -Source: VISHAY .. vta56.pdf - - - - - - - - - - ->NAME ->VALUE - - - - -<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> -MIL SIZE RBR55<br> -Source: VISHAY .. vta56.pdf - - - - - - - - - - ->NAME ->VALUE - - - - -<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> -MIL SIZE RBR56<br> -Source: VISHAY .. vta56.pdf - - - - - - - - - - ->NAME ->VALUE - - - - -<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> -MIL SIZE RNC55<br> -Source: VISHAY .. vta56.pdf - - - - - - - - ->NAME ->VALUE - - - - -<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> -MIL SIZE RNC60<br> -Source: VISHAY .. vta56.pdf - - - - - - - - ->NAME ->VALUE - - - - -<b>Package 4527</b><p> -Source: http://www.vishay.com/docs/31059/wsrhigh.pdf - - - - - - ->NAME ->VALUE - - -<b>Wirewound Resistors, Precision Power</b><p> -Source: VISHAY wscwsn.pdf - - - - - - - - - - ->NAME ->VALUE - - -<b>Wirewound Resistors, Precision Power</b><p> -Source: VISHAY wscwsn.pdf - - - - - - ->NAME ->VALUE - - -<b>Wirewound Resistors, Precision Power</b><p> -Source: VISHAY wscwsn.pdf - - - - - - - - - - ->NAME ->VALUE - - -<b>Wirewound Resistors, Precision Power</b><p> -Source: VISHAY wscwsn.pdf - - - - - - - - - - ->NAME ->VALUE - - -<b>Wirewound Resistors, Precision Power</b><p> -Source: VISHAY wscwsn.pdf - - - - - - ->NAME ->VALUE - - -<b>Wirewound Resistors, Precision Power</b><p> -Source: VISHAY wscwsn.pdf - - - - - - ->NAME ->VALUE - - -<b>CRCW1218 Thick Film, Rectangular Chip Resistors</b><p> -Source: http://www.vishay.com .. dcrcw.pdf - - - - ->NAME ->VALUE - - - - -<b>Chip Monolithic Ceramic Capacitors</b> Medium Voltage High Capacitance for General Use<p> -Source: http://www.murata.com .. GRM43DR72E224KW01.pdf - - - - - - ->NAME ->VALUE - - - - -<b>PRL1632 are realized as 1W for 3.2 × 1.6mm(1206)</b><p> -Source: http://www.mouser.com/ds/2/392/products_18-2245.pdf - - - - ->NAME ->VALUE - - - - - - ->NAME ->VALUE - - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b><p> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b> - - - - - - - - ->NAME ->VALUE - - - - - -<b>CAPACITOR</b><p> -grid 2.5 mm, outline 2.4 x 4.4 mm - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 2.5 mm, outline 2.5 x 5 mm - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 2.5 mm, outline 3 x 5 mm - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 2.5 mm, outline 4 x 5 mm - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 2.5 mm, outline 5 x 5 mm - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 2.5 mm, outline 6 x 5 mm - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 2.5 mm + 5 mm, outline 2.4 x 7 mm - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 2.5 + 5 mm, outline 2.5 x 7.5 mm - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 2.5 + 5 mm, outline 3.5 x 7.5 mm - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 2.5 + 5 mm, outline 4.5 x 7.5 mm - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 2.5 + 5 mm, outline 5.5 x 7.5 mm - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 5 mm, outline 2.4 x 4.4 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>CAPACITOR</b><p> -grid 5 mm, outline 2.5 x 7.5 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 5 mm, outline 4.5 x 7.5 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 5 mm, outline 3 x 7.5 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 5 mm, outline 5 x 7.5 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 5 mm, outline 5.5 x 7.5 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 5 mm, outline 7.5 x 7.5 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -Horizontal, grid 5 mm, outline 7.5 x 7.5 mm - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>CAPACITOR</b><p> -grid 7.5 mm, outline 3.2 x 10.3 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 7.5 mm, outline 4.2 x 10.3 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 7.5 mm, outline 5.2 x 10.6 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 10.2 mm, outline 4.3 x 13.3 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 10.2 mm, outline 5.4 x 13.3 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 10.2 mm, outline 6.4 x 13.3 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 10.2 mm + 15.2 mm, outline 6.2 x 18.4 mm - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 15 mm, outline 5.4 x 18.3 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 15 mm, outline 6.4 x 18.3 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 15 mm, outline 7.2 x 18.3 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 15 mm, outline 8.4 x 18.3 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 15 mm, outline 9.1 x 18.2 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 22.5 mm, outline 6.2 x 26.8 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 22.5 mm, outline 7.4 x 26.8 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 22.5 mm, outline 8.7 x 26.8 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 22.5 mm, outline 10.8 x 26.8 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 22.5 mm, outline 11.3 x 26.8 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 27.5 mm, outline 9.3 x 31.6 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 27.5 mm, outline 11.3 x 31.6 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 27.5 mm, outline 13.4 x 31.6 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 27.5 mm, outline 20.5 x 31.6 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 32.5 mm, outline 13.7 x 37.4 mm - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 32.5 mm, outline 16.2 x 37.4 mm - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 32.5 mm, outline 18.2 x 37.4 mm - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 37.5 mm, outline 19.2 x 41.8 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 37.5 mm, outline 20.3 x 41.8 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 5 mm, outline 3.5 x 7.5 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 37.5 mm, outline 15.5 x 41.8 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 7.5 mm, outline 6.3 x 10.6 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 27.5 mm, outline 15.4 x 31.6 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>CAPACITOR</b><p> -grid 27.5 mm, outline 17.3 x 31.6 mm - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>Ceramic Chip Capacitor KEMET 0204 reflow solder</b><p> -Metric Code Size 1005 - - - - ->NAME ->VALUE - - - - -<b>Ceramic Chip Capacitor KEMET 0603 reflow solder</b><p> -Metric Code Size 1608 - - - - ->NAME ->VALUE - - - - -<b>Ceramic Chip Capacitor KEMET 0805 reflow solder</b><p> -Metric Code Size 2012 - - - - ->NAME ->VALUE - - - - -<b>Ceramic Chip Capacitor KEMET 1206 reflow solder</b><p> -Metric Code Size 3216 - - - - ->NAME ->VALUE - - - - -<b>Ceramic Chip Capacitor KEMET 1210 reflow solder</b><p> -Metric Code Size 3225 - - - - ->NAME ->VALUE - - - - -<b>Ceramic Chip Capacitor KEMET 1812 reflow solder</b><p> -Metric Code Size 4532 - - - - ->NAME ->VALUE - - - - -<b>Ceramic Chip Capacitor KEMET 1825 reflow solder</b><p> -Metric Code Size 4564 - - - - ->NAME ->VALUE - - - - -<b>Ceramic Chip Capacitor KEMET 2220 reflow solder</b><p>Metric Code Size 5650 - - - - ->NAME ->VALUE - - - - -<b>Ceramic Chip Capacitor KEMET 2225 reflow solder</b><p>Metric Code Size 5664 - - - - ->NAME ->VALUE - - - - -<b> </b><p> -Source: http://www.vishay.com/docs/10129/hpc0201a.pdf - - ->NAME ->VALUE - - - -Source: http://www.avxcorp.com/docs/catalogs/cx5r.pdf - - ->NAME ->VALUE - - - - - - -<b>CAPACITOR</b><p> -Source: AVX .. aphvc.pdf - - - - ->NAME ->VALUE - - - - -<b>CAPACITOR</b><p> -Source: AVX .. aphvc.pdf - - - - ->NAME ->VALUE - - - - -<b>CAPACITOR</b> - - - - - - - ->NAME ->VALUE - - - - -Chip RESISTOR 0402 EIA (1005 Metric) - - - - - -RESISTOR - - - - - -RESISTOR - - - - - -RESISTOR wave soldering - - - - - -RESISTOR - - - - - -RESISTOR -wave soldering - - - - - -RESISTOR - - - - - -RESISTOR -wave soldering - - - - - -RESISTOR - - - - - -RESISTOR -wave soldering - - - - - -RESISTOR - - - - - -RESISTOR -wave soldering - - - - - -RESISTOR - - - - - -RESISTOR -wave soldering - - - - - -RESISTOR - - - - - -RESISTOR -wave soldering - - - - - -RESISTOR - - - - - -RESISTOR -wave soldering - - - - - -RESISTOR - - - - - -RESISTOR -wave soldering - - - - - -RESISTOR -Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf - - - - - -RESISTOR wave soldering -Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf - - - - - -RESISTOR -MELF 0.10 W - - - - - -RESISTOR -MELF 0.25 W - - - - - -RESISTOR -MELF 0.12 W - - - - - -RESISTOR -MELF 0.10 W - - - - - -RESISTOR -MELF 0.25 W - - - - - -RESISTOR -MELF 0.25 W - - - - - -RESISTOR -MELF 0.12 W - - - - - -RESISTOR -MELF 0.25 W - - - - - -RESISTOR -type 0204, grid 5 mm - - - - - -RESISTOR -type 0204, grid 7.5 mm - - - - - -RESISTOR -type 0204, grid 2.5 mm - - - - - -RESISTOR -type 0207, grid 10 mm - - - - - -RESISTOR -type 0207, grid 12 mm - - - - - -RESISTOR -type 0207, grid 15mm - - - - - -RESISTOR -type 0207, grid 2.5 mm - - - - - -RESISTOR -type 0207, grid 5 mm - - - - - -RESISTOR -type 0207, grid 7.5 mm - - - - - -RESISTOR -type 0309, grid 10mm - - - - - -RESISTOR -type 0309, grid 12.5 mm - - - - - -RESISTOR -type 0309, grid 2.5 mm - - - - - -RESISTOR -type 0411, grid 12.5 mm - - - - - -RESISTOR -type 0411, grid 15 mm - - - - - -RESISTOR -type 0411, grid 3.81 mm - - - - - -RESISTOR -type 0414, grid 15 mm - - - - - -RESISTOR -type 0414, grid 5 mm - - - - - -RESISTOR -type 0617, grid 17.5 mm - - - - - -RESISTOR -type 0617, grid 22.5 mm - - - - - -RESISTOR -type 0617, grid 5 mm - - - - - -RESISTOR -type 0922, grid 22.5 mm - - - - - -RESISTOR -type 0613, grid 5 mm - - - - - -RESISTOR -type 0613, grid 15 mm - - - - - -RESISTOR -type 0817, grid 22.5 mm - - - - - -RESISTOR -type 0817, grid 6.35 mm - - - - - -RESISTOR -type V234, grid 12.5 mm - - - - - -RESISTOR -type V235, grid 17.78 mm - - - - - -RESISTOR -type V526-0, grid 2.5 mm - - - - - -CECC Size RC2211 Reflow Soldering -source Beyschlag - - - - - -CECC Size RC2211 Wave Soldering -source Beyschlag - - - - - -CECC Size RC3715 Reflow Soldering -source Beyschlag - - - - - -CECC Size RC3715 Wave Soldering -source Beyschlag - - - - - -CECC Size RC6123 Reflow Soldering -source Beyschlag - - - - - -CECC Size RC6123 Wave Soldering -source Beyschlag - - - - - -RESISTOR -type 0922, grid 7.5 mm - - - - - -RESISTOR -type RDH, grid 15 mm - - - - - -Mini MELF 0102 Axial - - - - - -RESISTOR chip -Source: http://www.vishay.com/docs/20008/dcrcw.pdf - - - - - -Bulk Metal® Foil Technology, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements -MIL SIZE RBR52 -Source: VISHAY .. vta56.pdf - - - - - -Bulk Metal® Foil Technology, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements -MIL SIZE RBR53 -Source: VISHAY .. vta56.pdf - - - - - -Bulk Metal® Foil Technology, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements -MIL SIZE RBR54 -Source: VISHAY .. vta56.pdf - - - - - -Bulk Metal® Foil Technology, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements -MIL SIZE RBR55 -Source: VISHAY .. vta56.pdf - - - - - -Bulk Metal® Foil Technology, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements -MIL SIZE RBR56 -Source: VISHAY .. vta56.pdf - - - - - -Bulk Metal® Foil Technology, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements -MIL SIZE RNC55 -Source: VISHAY .. vta56.pdf - - - - - -Bulk Metal® Foil Technology, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements -MIL SIZE RNC60 -Source: VISHAY .. vta56.pdf - - - - - -Package 4527 -Source: http://www.vishay.com/docs/31059/wsrhigh.pdf - - - - - -Wirewound Resistors, Precision Power -Source: VISHAY wscwsn.pdf - - - - - -Wirewound Resistors, Precision Power -Source: VISHAY wscwsn.pdf - - - - - -Wirewound Resistors, Precision Power -Source: VISHAY wscwsn.pdf - - - - - -Wirewound Resistors, Precision Power -Source: VISHAY wscwsn.pdf - - - - - -Wirewound Resistors, Precision Power -Source: VISHAY wscwsn.pdf - - - - - -Wirewound Resistors, Precision Power -Source: VISHAY wscwsn.pdf - - - - - -CRCW1218 Thick Film, Rectangular Chip Resistors -Source: http://www.vishay.com .. dcrcw.pdf - - - - - -Chip Monolithic Ceramic Capacitors Medium Voltage High Capacitance for General Use -Source: http://www.murata.com .. GRM43DR72E224KW01.pdf - - - - - -PRL1632 are realized as 1W for 3.2 × 1.6mm(1206) -Source: http://www.mouser.com/ds/2/392/products_18-2245.pdf - - - - - -Chip, 0.40 X 0.20 X 0.16 mm body -<p>Chip package with body size 0.40 X 0.20 X 0.16 mm</p> - - - - - -Chip, 1.00 X 0.50 X 0.60 mm body -<p>Chip package with body size 1.00 X 0.50 X 0.60 mm</p> - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR - - - - - -CAPACITOR -grid 2.5 mm, outline 2.4 x 4.4 mm - - - - - -CAPACITOR -grid 2.5 mm, outline 2.5 x 5 mm - - - - - -CAPACITOR -grid 2.5 mm, outline 3 x 5 mm - - - - - -CAPACITOR -grid 2.5 mm, outline 4 x 5 mm - - - - - -CAPACITOR -grid 2.5 mm, outline 5 x 5 mm - - - - - -CAPACITOR -grid 2.5 mm, outline 6 x 5 mm - - - - - -CAPACITOR -grid 2.5 mm + 5 mm, outline 2.4 x 7 mm - - - - - -CAPACITOR -grid 2.5 + 5 mm, outline 2.5 x 7.5 mm - - - - - -CAPACITOR -grid 2.5 + 5 mm, outline 3.5 x 7.5 mm - - - - - -CAPACITOR -grid 2.5 + 5 mm, outline 4.5 x 7.5 mm - - - - - -CAPACITOR -grid 2.5 + 5 mm, outline 5.5 x 7.5 mm - - - - - -CAPACITOR -grid 5 mm, outline 2.4 x 4.4 mm - - - - - -CAPACITOR -grid 5 mm, outline 2.5 x 7.5 mm - - - - - -CAPACITOR -grid 5 mm, outline 4.5 x 7.5 mm - - - - - -CAPACITOR -grid 5 mm, outline 3 x 7.5 mm - - - - - -CAPACITOR -grid 5 mm, outline 5 x 7.5 mm - - - - - -CAPACITOR -grid 5 mm, outline 5.5 x 7.5 mm - - - - - -CAPACITOR -grid 5 mm, outline 7.5 x 7.5 mm - - - - - -CAPACITOR -Horizontal, grid 5 mm, outline 7.5 x 7.5 mm - - - - - -CAPACITOR -grid 7.5 mm, outline 3.2 x 10.3 mm - - - - - -CAPACITOR -grid 7.5 mm, outline 4.2 x 10.3 mm - - - - - -CAPACITOR -grid 7.5 mm, outline 5.2 x 10.6 mm - - - - - -CAPACITOR -grid 10.2 mm, outline 4.3 x 13.3 mm - - - - - -CAPACITOR -grid 10.2 mm, outline 5.4 x 13.3 mm - - - - - -CAPACITOR -grid 10.2 mm, outline 6.4 x 13.3 mm - - - - - -CAPACITOR -grid 10.2 mm + 15.2 mm, outline 6.2 x 18.4 mm - - - - - -CAPACITOR -grid 15 mm, outline 5.4 x 18.3 mm - - - - - -CAPACITOR -grid 15 mm, outline 6.4 x 18.3 mm - - - - - -CAPACITOR -grid 15 mm, outline 7.2 x 18.3 mm - - - - - -CAPACITOR -grid 15 mm, outline 8.4 x 18.3 mm - - - - - -CAPACITOR -grid 15 mm, outline 9.1 x 18.2 mm - - - - - -CAPACITOR -grid 22.5 mm, outline 6.2 x 26.8 mm - - - - - -CAPACITOR -grid 22.5 mm, outline 7.4 x 26.8 mm - - - - - -CAPACITOR -grid 22.5 mm, outline 8.7 x 26.8 mm - - - - - -CAPACITOR -grid 22.5 mm, outline 10.8 x 26.8 mm - - - - - -CAPACITOR -grid 22.5 mm, outline 11.3 x 26.8 mm - - - - - -CAPACITOR -grid 27.5 mm, outline 9.3 x 31.6 mm - - - - - -CAPACITOR -grid 27.5 mm, outline 11.3 x 31.6 mm - - - - - -CAPACITOR -grid 27.5 mm, outline 13.4 x 31.6 mm - - - - - -CAPACITOR -grid 27.5 mm, outline 20.5 x 31.6 mm - - - - - -CAPACITOR -grid 32.5 mm, outline 13.7 x 37.4 mm - - - - - -CAPACITOR -grid 32.5 mm, outline 16.2 x 37.4 mm - - - - - -CAPACITOR -grid 32.5 mm, outline 18.2 x 37.4 mm - - - - - -CAPACITOR -grid 37.5 mm, outline 19.2 x 41.8 mm - - - - - -CAPACITOR -grid 37.5 mm, outline 20.3 x 41.8 mm - - - - - -CAPACITOR -grid 5 mm, outline 3.5 x 7.5 mm - - - - - -CAPACITOR -grid 37.5 mm, outline 15.5 x 41.8 mm - - - - - -CAPACITOR -grid 7.5 mm, outline 6.3 x 10.6 mm - - - - - -CAPACITOR -grid 27.5 mm, outline 15.4 x 31.6 mm - - - - - -CAPACITOR -grid 27.5 mm, outline 17.3 x 31.6 mm - - - - - -Ceramic Chip Capacitor KEMET 0204 reflow solder -Metric Code Size 1005 - - - - - -Ceramic Chip Capacitor KEMET 0603 reflow solder -Metric Code Size 1608 - - - - - -Ceramic Chip Capacitor KEMET 0805 reflow solder -Metric Code Size 2012 - - - - - -Ceramic Chip Capacitor KEMET 1206 reflow solder -Metric Code Size 3216 - - - - - -Ceramic Chip Capacitor KEMET 1210 reflow solder -Metric Code Size 3225 - - - - - -Ceramic Chip Capacitor KEMET 1812 reflow solder -Metric Code Size 4532 - - - - - -Ceramic Chip Capacitor KEMET 1825 reflow solder -Metric Code Size 4564 - - - - - -Ceramic Chip Capacitor KEMET 2220 reflow solderMetric Code Size 5650 - - - - - -Ceramic Chip Capacitor KEMET 2225 reflow solderMetric Code Size 5664 - - - - - - -Source: http://www.vishay.com/docs/10129/hpc0201a.pdf - - - - - -Source: http://www.avxcorp.com/docs/catalogs/cx5r.pdf - - - - - -CAPACITOR -Source: AVX .. aphvc.pdf - - - - - -CAPACITOR -Source: AVX .. aphvc.pdf - - - - - -CAPACITOR - - - - - - - - - - - ->NAME ->VALUE - - - - - - ->NAME ->VALUE - - - - - - - - -<B>RESISTOR</B>, European symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<B>CAPACITOR</B>, European symbol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>TTL Devices, 74xx Series with European Symbols</b><p> -Based on the following sources: -<ul> -<li>Texas Instruments <i>TTL Data Book</i>&nbsp;&nbsp;&nbsp;Volume 1, 1996. -<li>TTL Data Book, Volume 2 , 1993 -<li>National Seminconductor Databook 1990, ALS/LS Logic -<li>ttl 74er digital data dictionary, ECA Electronic + Acustic GmbH, ISBN 3-88109-032-0 -<li>http://icmaster.com/ViewCompare.asp -</ul> -<author>Created by librarian@cadsoft.de</author> - - -<b>Dual In Line Package</b> - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>Small Outline package</b> 150 mil - - - - - - - - - - - - - - - - - - - - - - - - - - ->VALUE ->NAME - - - - - - - - - - - - - - - - -<b>plastic shrink small outline package; 14 leads; body width 5.3 mm</b><p> -SOT337-1<br> -Source: http://www.nxp.com/documents/data_sheet/74ABT125.pdf - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>plastic thin shrink small outline package; 14 leads; body width 4.4 mm</b><p> -SOT402-1<br> -Source: http://www.nxp.com/documents/data_sheet/74ABT125.pdf - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>plastic dual in-line compatible thermal enhanced very thin quad flat package; no leads; 14 terminals; body 2.5 x 3 x 0.85 mm</b><p> -Source: http://www.nxp.com/documents/data_sheet/74ABT125.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - -Dual In Line Package - - - - - -Small Outline package 150 mil - - - - - -plastic shrink small outline package; 14 leads; body width 5.3 mm -SOT337-1 -Source: http://www.nxp.com/documents/data_sheet/74ABT125.pdf - - - - - -plastic thin shrink small outline package; 14 leads; body width 4.4 mm -SOT402-1 -Source: http://www.nxp.com/documents/data_sheet/74ABT125.pdf - - - - - -plastic dual in-line compatible thermal enhanced very thin quad flat package; no leads; 14 terminals; body 2.5 x 3 x 0.85 mm -Source: http://www.nxp.com/documents/data_sheet/74ABT125.pdf - - - - - - - - - - - - ->NAME ->VALUE - - - - - ->NAME -GND -VCC - - - - - - -Quad bus <b>BUFFER</b>, 3-state - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>Crystals and Crystal Resonators</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>kHz RANGE CRYSTAL UNIT</b><p> -LOW PROFILE SMD<b> -Source: Epson Toyocom FC-12M.pdf - - - - - - - ->NAME ->VALUE - - - - -kHz RANGE CRYSTAL UNIT -LOW PROFILE SMD -Source: Epson Toyocom FC-12M.pdf - - - - - - - - - - - - - - - ->NAME ->VALUE -1 -2 - - - - - - -<b>kHz RANGE CRYSTAL UNIT</b><p> -LOW PROFILE SMD<b> -Source: Epson Toyocom FC-12M.pdf - - - - - - - - - - - - - - - - - - - - - - - -<b>Lithium Batteries and NC Accus</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>Battery Holder, SMT, 12mm</b><p> -multicomp PART NO. CH291-1220LF<br> -Source: <a href="http://www.farnell.com/datasheets/1505860.pdf"> Data sheet </a> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - -Battery Holder, SMT, 12mm -multicomp PART NO. CH291-1220LF -Source: Data sheet - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - -<b>Battery Holder, SMT, 12mm</b><p> -multicomp PART NO. CH291-1220LF<br> -Source: <a href="http://www.farnell.com/datasheets/1505860.pdf"> Data sheet </a> - - - - - - - - - - - - - - - - - - - - - - - -<b>Diodes</b><p> -Based on the following sources: -<ul> -<li>Motorola : www.onsemi.com -<li>Fairchild : www.fairchildsemi.com -<li>Philips : www.semiconductors.com -<li>Vishay : www.vishay.de -</ul> -<author>Created by librarian@cadsoft.de</author> - - -<b>SOD-323</b><p> -Source: www.st.com, BAT60J.pdf - - - - - - ->NAME ->VALUE - - - - - - - - -SOD-323 -Source: www.st.com, BAT60J.pdf - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - -<b>Schottky barrier diode</b><p> -Source: www.st.com, BAT60J.pdf - - - - - - - - - - - - - - - - - - - - - - - -<b>Samtec Connectors</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>THROUGH-HOLE .025" SQ POST SOCKET</b><p> -Source: Samtec SSW.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 -2 ->NAME ->VALUE - - -<b>THROUGH-HOLE .025" SQ POST SOCKET</b><p> -Source: Samtec SSW.pdf - - - - - - - - - - - - - - - - -1 -2 ->NAME ->VALUE - - - - - - - - -<b>THROUGH-HOLE .025" SQ POST SOCKET</b><p> -Source: Samtec SSW.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 -2 ->NAME ->VALUE - - -<b>THROUGH-HOLE .025" SQ POST SOCKET</b><p> -Source: Samtec SSW.pdf - - - - - - - - - - - - - - - - -1 -2 ->NAME ->VALUE - - - - - - - - - - - - - ->VALUE ->NAME - - - - - - ->NAME - - - - - -<b>THROUGH-HOLE .025" SQ POST SOCKET</b><p> -Source: Samtec SSW.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>LEDs</b><p> -<author>Created by librarian@cadsoft.de</author><br> -Extended by Federico Battaglin <author>&lt;federico.rd@fdpinternational.com&gt;</author> with DUOLED - - -<b>CHICAGO MINIATURE LAMP, INC.</b><p> -7022X Series SMT LEDs 1206 Package Size - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - -<B>LED</B><p> -5 mm, square, Siemens - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<B>LED</B><p> -2 x 5 mm, rectangle - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - -<B>LED</B><p> -3 mm, round - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<B>LED</B><p> -5 mm, round - - - - - - - - - - - ->NAME ->VALUE - - -<B>LED</B><p> -1 mm, round, Siemens - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<B>LED BLOCK</B><p> -1 LED, Siemens - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>LED HOLDER</b><p> -Siemens - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>LED HOLDER</b><p> -Siemens - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>LED HOLDER</b><p> -Siemens - - - - - - - - - - - - - - - - - -A+ -K- ->NAME ->VALUE - - - - - -<b>LED HOLDER</b><p> -Siemens - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE -+ -- - - -<B>IR LED</B><p> -infrared emitting diode, Infineon -TO-18, lead spacing 2.54 mm, cathode marking<p> -Inifineon - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<B>IR LED</B><p> -infrared emitting diode, Infineon -TO-18, lead spacing 2.54 mm, cathode marking<p> -Inifineon - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<B>LED</B><p> -rectangle, 5.7 x 3.2 mm - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<B>IR LED</B><p> -IR transmitter Siemens - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>TOPLED® High-optical Power LED (HOP)</b><p> -Source: http://www.osram.convergy.de/ ... ls_t675.pdf - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE -A -C - - - - - - - -<b>BLUE LINETM Hyper Mini TOPLED® Hyper-Bright LED</b><p> -Source: http://www.osram.convergy.de/ ... LB M676.pdf - - - - - - - - - - - - - - -A -C ->NAME ->VALUE - - - - - - - -<b>Super SIDELED® High-Current LED</b><p> -LG A672, LP A672 <br> -Source: http://www.osram.convergy.de/ ... LG_LP_A672.pdf (2004.05.13) - - - - - - - - - - - - - - - - - - - -C -A ->NAME ->VALUE - - - - - - - -<b>SmartLEDTM Hyper-Bright LED</b><p> -Source: http://www.osram.convergy.de/ ... LA_LO_LS_LY L896.pdf - - - - - - - - ->NAME ->VALUE - - - - - -<b>Hyper TOPLED® RG Hyper-Bright LED</b><p> -Source: http://www.osram.convergy.de/ ... LA_LO_LS_LY T776.pdf - - - - - - - - - - - - - - - - - - ->NAME ->VALUE -A -C - - - - - - - - - - -<b>Hyper Micro SIDELED®</b><p> -Source: http://www.osram.convergy.de/ ... LA_LO_LS_LY Y876.pdf - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - -<b>Power TOPLED®</b><p> -Source: http://www.osram.convergy.de/ ... LA_LO_LA_LY E67B.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE -C -A -C -C - - - - - - - - - - - -<b>Hyper CHIPLED Hyper-Bright LED</b><p> -LB Q993<br> -Source: http://www.osram.convergy.de/ ... Lb_q993.pdf - - - - ->NAME ->VALUE - - - - - - - -<b>Hyper CHIPLED Hyper-Bright LED</b><p> -LB R99A<br> -Source: http://www.osram.convergy.de/ ... lb_r99a.pdf - - - - ->NAME ->VALUE - - - - - - - -<b>Mini TOPLED Santana®</b><p> -Source: http://www.osram.convergy.de/ ... LG M470.pdf - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - -<b>CHIPLED</b><p> -Source: http://www.osram.convergy.de/ ... LG_R971.pdf - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - -<b>CHIPLED</b><p> -Source: http://www.osram.convergy.de/ ... LG_LY N971.pdf - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - -<b>CHIPLED</b><p> -Source: http://www.osram.convergy.de/ ... LG_LY Q971.pdf - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - -<b>CHIPLED-0603</b><p> -Recommended Solder Pad useable for SmartLEDTM and Chipled - Package 0603<br> -Package able to withstand TTW-soldering heat<br> -Package suitable for TTW-soldering<br> -Source: http://www.osram.convergy.de/ ... LO_LS_LY L89K.pdf - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - -<b>SmartLED TTW</b><p> -Recommended Solder Pad useable for SmartLEDTM and Chipled - Package 0603<br> -Package able to withstand TTW-soldering heat<br> -Package suitable for TTW-soldering<br> -Source: http://www.osram.convergy.de/ ... LO_LS_LY L89K.pdf - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - -<b>Lumileds Lighting. LUXEON®</b> with cool pad<p> -Source: K2.pdf - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>Lumileds Lighting. LUXEON®</b> without cool pad<p> -Source: K2.pdf - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - -<B>LED</B><p> -10 mm, round - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>SURFACE MOUNT LED LAMP</b> 3.5x2.8mm<p> -Source: http://www.kingbright.com/manager/upload/pdf/KA-3528ASYC(Ver1189474662.1) - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - -<b>SML0805-2CW-TR (0805 PROFILE)</b> COOL WHITE<p> -Source: http://www.ledtronics.com/ds/smd-0603/Dstr0093.pdf - - - - - - - - - - - ->NAME ->VALUE - - -<b>SML10XXKH-TR (HIGH INTENSITY) LED</b><p> -<table> -<tr><td>SML10R3KH-TR</td><td>ULTRA RED</td></tr> -<tr><td>SML10E3KH-TR</td><td>SUPER REDSUPER BLUE</td></tr> -<tr><td>SML10O3KH-TR</td><td>SUPER ORANGE</td></tr> -<tr><td>SML10PY3KH-TR</td><td>PURE YELLOW</td></tr> -<tr><td>SML10OY3KH-TR</td><td>ULTRA YELLOW</td></tr> -<tr><td>SML10AG3KH-TR</td><td>AQUA GREEN</td></tr> -<tr><td>SML10BG3KH-TR</td><td>BLUE GREEN</td></tr> -<tr><td>SML10PB1KH-TR</td><td>SUPER BLUE</td></tr> -<tr><td>SML10CW1KH-TR</td><td>WHITE</td></tr> -</table> - -Source: http://www.ledtronics.com/ds/smd-1206/dstr0094.PDF - - - - - - - ->NAME ->VALUE - - - - - - - - - -<b>SML0603-XXX (HIGH INTENSITY) LED</b><p> -<table> -<tr><td>AG3K</td><td>AQUA GREEN</td></tr> -<tr><td>B1K</td><td>SUPER BLUE</td></tr> -<tr><td>R1K</td><td>SUPER RED</td></tr> -<tr><td>R3K</td><td>ULTRA RED</td></tr> -<tr><td>O3K</td><td>SUPER ORANGE</td></tr> -<tr><td>O3KH</td><td>SOFT ORANGE</td></tr> -<tr><td>Y3KH</td><td>SUPER YELLOW</td></tr> -<tr><td>Y3K</td><td>SUPER YELLOW</td></tr> -<tr><td>2CW</td><td>WHITE</td></tr> -</table> -Source: http://www.ledtronics.com/ds/smd-0603/Dstr0092.pdf - - - - - - - - - - ->NAME ->VALUE - - - - - - -CHICAGO MINIATURE LAMP, INC. -7022X Series SMT LEDs 1206 Package Size - - - - - -LED -5 mm, square, Siemens - - - - - -LED -2 x 5 mm, rectangle - - - - - -LED -3 mm, round - - - - - -LED -5 mm, round - - - - - -LED -1 mm, round, Siemens - - - - - -LED BLOCK -1 LED, Siemens - - - - - -LED HOLDER -Siemens - - - - - -LED HOLDER -Siemens - - - - - -LED HOLDER -Siemens - - - - - -LED HOLDER -Siemens - - - - - -IR LED -infrared emitting diode, Infineon -TO-18, lead spacing 2.54 mm, cathode marking -Inifineon - - - - - -IR LED -infrared emitting diode, Infineon -TO-18, lead spacing 2.54 mm, cathode marking -Inifineon - - - - - -LED -rectangle, 5.7 x 3.2 mm - - - - - -IR LED -IR transmitter Siemens - - - - - -TOPLED® High-optical Power LED (HOP) -Source: http://www.osram.convergy.de/ ... ls_t675.pdf - - - - - -BLUE LINETM Hyper Mini TOPLED® Hyper-Bright LED -Source: http://www.osram.convergy.de/ ... LB M676.pdf - - - - - -Super SIDELED® High-Current LED -LG A672, LP A672 -Source: http://www.osram.convergy.de/ ... LG_LP_A672.pdf (2004.05.13) - - - - - -SmartLEDTM Hyper-Bright LED -Source: http://www.osram.convergy.de/ ... LA_LO_LS_LY L896.pdf - - - - - -Hyper TOPLED® RG Hyper-Bright LED -Source: http://www.osram.convergy.de/ ... LA_LO_LS_LY T776.pdf - - - - - -Hyper Micro SIDELED® -Source: http://www.osram.convergy.de/ ... LA_LO_LS_LY Y876.pdf - - - - - -Power TOPLED® -Source: http://www.osram.convergy.de/ ... LA_LO_LA_LY E67B.pdf - - - - - -Hyper CHIPLED Hyper-Bright LED -LB Q993 -Source: http://www.osram.convergy.de/ ... Lb_q993.pdf - - - - - -Hyper CHIPLED Hyper-Bright LED -LB R99A -Source: http://www.osram.convergy.de/ ... lb_r99a.pdf - - - - - -Mini TOPLED Santana® -Source: http://www.osram.convergy.de/ ... LG M470.pdf - - - - - -CHIPLED -Source: http://www.osram.convergy.de/ ... LG_R971.pdf - - - - - -CHIPLED -Source: http://www.osram.convergy.de/ ... LG_LY N971.pdf - - - - - -CHIPLED -Source: http://www.osram.convergy.de/ ... LG_LY Q971.pdf - - - - - -CHIPLED-0603 -Recommended Solder Pad useable for SmartLEDTM and Chipled - Package 0603 -Package able to withstand TTW-soldering heat -Package suitable for TTW-soldering -Source: http://www.osram.convergy.de/ ... LO_LS_LY L89K.pdf - - - - - -SmartLED TTW -Recommended Solder Pad useable for SmartLEDTM and Chipled - Package 0603 -Package able to withstand TTW-soldering heat -Package suitable for TTW-soldering -Source: http://www.osram.convergy.de/ ... LO_LS_LY L89K.pdf - - - - - -Lumileds Lighting. LUXEON® with cool pad -Source: K2.pdf - - - - - -Lumileds Lighting. LUXEON® without cool pad -Source: K2.pdf - - - - - -LED -10 mm, round - - - - - -SURFACE MOUNT LED LAMP 3.5x2.8mm -Source: http://www.kingbright.com/manager/upload/pdf/KA-3528ASYC(Ver1189474662.1) - - - - - -SML0805-2CW-TR (0805 PROFILE) COOL WHITE -Source: http://www.ledtronics.com/ds/smd-0603/Dstr0093.pdf - - - - - -SML10XXKH-TR (HIGH INTENSITY) LED - -SML10R3KH-TRULTRA RED -SML10E3KH-TRSUPER REDSUPER BLUE -SML10O3KH-TRSUPER ORANGE -SML10PY3KH-TRPURE YELLOW -SML10OY3KH-TRULTRA YELLOW -SML10AG3KH-TRAQUA GREEN -SML10BG3KH-TRBLUE GREEN -SML10PB1KH-TRSUPER BLUE -SML10CW1KH-TRWHITE - - -Source: http://www.ledtronics.com/ds/smd-1206/dstr0094.PDF - - - - - -SML0603-XXX (HIGH INTENSITY) LED - -AG3KAQUA GREEN -B1KSUPER BLUE -R1KSUPER RED -R3KULTRA RED -O3KSUPER ORANGE -O3KHSOFT ORANGE -Y3KHSUPER YELLOW -Y3KSUPER YELLOW -2CWWHITE - -Source: http://www.ledtronics.com/ds/smd-0603/Dstr0092.pdf - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - -<b>LED</b><p> -<u>OSRAM</u>:<br> - -- <u>CHIPLED</u><br> -LG R971, LG N971, LY N971, LG Q971, LY Q971, LO R971, LY R971 -LH N974, LH R974<br> -LS Q976, LO Q976, LY Q976<br> -LO Q996<br> - -- <u>Hyper CHIPLED</u><br> -LW Q18S<br> -LB Q993, LB Q99A, LB R99A<br> - -- <u>SideLED</u><br> -LS A670, LO A670, LY A670, LG A670, LP A670<br> -LB A673, LV A673, LT A673, LW A673<br> -LH A674<br> -LY A675<br> -LS A676, LA A676, LO A676, LY A676, LW A676<br> -LS A679, LY A679, LG A679<br> - -- <u>Hyper Micro SIDELED®</u><br> -LS Y876, LA Y876, LO Y876, LY Y876<br> -LT Y87S<br> - -- <u>SmartLED</u><br> -LW L88C, LW L88S<br> -LB L89C, LB L89S, LG L890<br> -LS L89K, LO L89K, LY L89K<br> -LS L896, LA L896, LO L896, LY L896<br> - -- <u>TOPLED</u><br> -LS T670, LO T670, LY T670, LG T670, LP T670<br> -LSG T670, LSP T670, LSY T670, LOP T670, LYG T670<br> -LG T671, LOG T671, LSG T671<br> -LB T673, LV T673, LT T673, LW T673<br> -LH T674<br> -LS T676, LA T676, LO T676, LY T676, LB T676, LH T676, LSB T676, LW T676<br> -LB T67C, LV T67C, LT T67C, LS T67K, LO T67K, LY T67K, LW E67C<br> -LS E67B, LA E67B, LO E67B, LY E67B, LB E67C, LV E67C, LT E67C<br> -LW T67C<br> -LS T679, LY T679, LG T679<br> -LS T770, LO T770, LY T770, LG T770, LP T770<br> -LB T773, LV T773, LT T773, LW T773<br> -LH T774<br> -LS E675, LA E675, LY E675, LS T675<br> -LS T776, LA T776, LO T776, LY T776, LB T776<br> -LHGB T686<br> -LT T68C, LB T68C<br> - -- <u>Hyper Mini TOPLED®</u><br> -LB M676<br> - -- <u>Mini TOPLED Santana®</u><br> -LG M470<br> -LS M47K, LO M47K, LY M47K -<p> -Source: http://www.osram.convergy.de<p> - -<u>LUXEON:</u><br> -- <u>LUMILED®</u><br> -LXK2-PW12-R00, LXK2-PW12-S00, LXK2-PW14-U00, LXK2-PW14-V00<br> -LXK2-PM12-R00, LXK2-PM12-S00, LXK2-PM14-U00<br> -LXK2-PE12-Q00, LXK2-PE12-R00, LXK2-PE12-S00, LXK2-PE14-T00, LXK2-PE14-U00<br> -LXK2-PB12-K00, LXK2-PB12-L00, LXK2-PB12-M00, LXK2-PB14-N00, LXK2-PB14-P00, LXK2-PB14-Q00<br> -LXK2-PR12-L00, LXK2-PR12-M00, LXK2-PR14-Q00, LXK2-PR14-R00<br> -LXK2-PD12-Q00, LXK2-PD12-R00, LXK2-PD12-S00<br> -LXK2-PH12-R00, LXK2-PH12-S00<br> -LXK2-PL12-P00, LXK2-PL12-Q00, LXK2-PL12-R00 -<p> -Source: www.luxeon.com<p> - -<u>KINGBRIGHT:</U><p> -KA-3528ASYC<br> -Source: www.kingbright.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>Voltage Regulators</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>DPAK</b><p> -PLASTIC PACKAGE CASE 369C-01<br> -Source: http://www.onsemi.co.jp .. LM317M-D.PDF - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - -<b>VOLTAGE REGULATOR</b> - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE -A15,2mm -1 -2 -3 - - - - - - - - - -<b>Small Outline Transistor 223</b><p> -PLASTIC PACKAGE CASE 318E-04<br> -Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - - - - - - ->NAME ->VALUE -direction of pcb -transportation for -wavesoldering - - - - - - - - - - -<b>D2PACK</b><p> -INTERNATIONAL RECTIFIER, irg4bc15ud-s.pdf - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - -DPAK -PLASTIC PACKAGE CASE 369C-01 -Source: http://www.onsemi.co.jp .. LM317M-D.PDF - - - - - -VOLTAGE REGULATOR - - - - - -Small Outline Transistor 223 -PLASTIC PACKAGE CASE 318E-04 -Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - -D2PACK -INTERNATIONAL RECTIFIER, irg4bc15ud-s.pdf - - - - - - - - - - - ->NAME ->VALUE -ADJ -IN -OUT - - - - - - - -<b>Low drop fixed and adjustable positive voltage regulators</b> 1 A<p> -Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -RTC -LED -CIC - - - - -PMOD - - - - - - - - -FLASH -SRAM - - - - -FTDI EEPROM - - - - -N64 <-> FPGA Resistors - - - - -N64 Edge Connector - - - - -Crystal Oscillators - - - - -SDRAM - - - - -FTDI <-> CIC Buffer - - - - -FPGA - - - - -Pull-up Resistors - - - - -SD Card - - - - -FTDI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Since Version 8.2, EAGLE supports online libraries. The ids -of those online libraries will not be understood (or retained) -with this version. - - -Since Version 8.3, EAGLE supports URNs for individual library -assets (packages, symbols, and devices). The URNs of those assets -will not be understood (or retained) with this version. - - -Since Version 8.3, EAGLE supports the association of 3D packages -with devices in libraries, schematics, and board files. Those 3D -packages will not be understood (or retained) with this version. - - -Since Version 8.4, EAGLE supports properties for SPICE simulation. -Probes in schematics and SPICE mapping objects found in parts and library devices -will not be understood with this version. Update EAGLE to the latest version -for full support of SPICE simulation. - - - diff --git a/hw/pcb/.gitignore b/hw/pcb/.gitignore new file mode 100644 index 0000000..0e773db --- /dev/null +++ b/hw/pcb/.gitignore @@ -0,0 +1,7 @@ +**/*-backups +**/*-bak +**/*.csv +**/*.gerbers +**/*.kicad_prl +**/*.zip +**/fp-info-cache diff --git a/hw/pcb/sc64v2.kicad_pcb b/hw/pcb/sc64v2.kicad_pcb new file mode 100644 index 0000000..00367d9 --- /dev/null +++ b/hw/pcb/sc64v2.kicad_pcb @@ -0,0 +1,62349 @@ +(kicad_pcb (version 20211014) (generator pcbnew) + + (general + (thickness 1.2) + ) + + (paper "A4") + (title_block + (title "SC64") + (date "2022-05-15") + (rev "2.0") + (company "Polprzewodnikowy") + ) + + (layers + (0 "F.Cu" signal) + (31 "B.Cu" signal) + (32 "B.Adhes" user "B.Adhesive") + (33 "F.Adhes" user "F.Adhesive") + (34 "B.Paste" user) + (35 "F.Paste" user) + (36 "B.SilkS" user "B.Silkscreen") + (37 "F.SilkS" user "F.Silkscreen") + (38 "B.Mask" user) + (39 "F.Mask" user) + (40 "Dwgs.User" user "User.Drawings") + (41 "Cmts.User" user "User.Comments") + (42 "Eco1.User" user "User.Eco1") + (43 "Eco2.User" user "User.Eco2") + (44 "Edge.Cuts" user) + (45 "Margin" user) + (46 "B.CrtYd" user "B.Courtyard") + (47 "F.CrtYd" user "F.Courtyard") + (48 "B.Fab" user) + (49 "F.Fab" user) + (50 "User.1" user) + (51 "User.2" user) + (52 "User.3" user) + (53 "User.4" user) + (54 "User.5" user) + (55 "User.6" user) + (56 "User.7" user) + (57 "User.8" user) + (58 "User.9" user) + ) + + (setup + (stackup + (layer "F.SilkS" (type "Top Silk Screen") (color "White")) + (layer "F.Paste" (type "Top Solder Paste")) + (layer "F.Mask" (type "Top Solder Mask") (color "Green") (thickness 0.01)) + (layer "F.Cu" (type "copper") (thickness 0.035)) + (layer "dielectric 1" (type "core") (thickness 1.11) (material "FR4") (epsilon_r 4.5) (loss_tangent 0.02)) + (layer "B.Cu" (type "copper") (thickness 0.035)) + (layer "B.Mask" (type "Bottom Solder Mask") (color "Green") (thickness 0.01)) + (layer "B.Paste" (type "Bottom Solder Paste")) + (layer "B.SilkS" (type "Bottom Silk Screen") (color "White")) + (copper_finish "ENIG") + (dielectric_constraints no) + (edge_connector bevelled) + ) + (pad_to_mask_clearance 0) + (pcbplotparams + (layerselection 0x00010fc_ffffffff) + (disableapertmacros false) + (usegerberextensions true) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (svguseinch false) + (svgprecision 6) + (excludeedgelayer true) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (dxfpolygonmode true) + (dxfimperialunits true) + (dxfusepcbnewfont true) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue false) + (plotinvisibletext false) + (sketchpadsonfab false) + (subtractmaskfromsilk true) + (outputformat 1) + (mirror false) + (drillshape 0) + (scaleselection 1) + (outputdirectory "sc64v2.gerbers/") + ) + ) + + (net 0 "") + (net 1 "unconnected-(X1-Pad1)") + (net 2 "unconnected-(X2-Pad1)") + (net 3 "unconnected-(J_N1-Pad39)") + (net 4 "unconnected-(J_N1-Pad38)") + (net 5 "unconnected-(J_N1-Pad14)") + (net 6 "unconnected-(J_N1-Pad13)") + (net 7 "N64_AD15") + (net 8 "N64_AD14") + (net 9 "N64_AD13") + (net 10 "N64_AD12") + (net 11 "N64_AD11") + (net 12 "N64_AD10") + (net 13 "N64_AD9") + (net 14 "N64_AD8") + (net 15 "N64_CIC_DATA") + (net 16 "N64_PIF_CLK") + (net 17 "N64_JOYBUS") + (net 18 "N64_AD0") + (net 19 "N64_AD1") + (net 20 "N64_AD2") + (net 21 "N64_AD3") + (net 22 "N64_ALEL") + (net 23 "N64_ALEH") + (net 24 "N64_AD4") + (net 25 "N64_AD5") + (net 26 "N64_AD6") + (net 27 "N64_AD7") + (net 28 "N64_CIC_CLK") + (net 29 "N64_VIDEO_SYNC") + (net 30 "SD_DAT2") + (net 31 "SD_DAT3") + (net 32 "SD_CMD") + (net 33 "SD_CLK") + (net 34 "SD_DAT0") + (net 35 "SD_DAT1") + (net 36 "SD_DET") + (net 37 "SWDIO") + (net 38 "SWCLK") + (net 39 "UART_TX") + (net 40 "UART_RX") + (net 41 "JTAG_TDO") + (net 42 "JTAG_TDI") + (net 43 "JTAG_TCK") + (net 44 "JTAG_TMS") + (net 45 "Net-(BT1-Pad1)") + (net 46 "GND") + (net 47 "I2C_SDA") + (net 48 "I2C_SCL") + (net 49 "RTC_MFP") + (net 50 "+3V3") + (net 51 "N64_3V3") + (net 52 "+5V") + (net 53 "FLASH_CS") + (net 54 "FLASH_IO1") + (net 55 "FLASH_IO2") + (net 56 "FLASH_IO0") + (net 57 "FLASH_CLK") + (net 58 "FLASH_IO3") + (net 59 "FTDI_D0") + (net 60 "FTDI_D1") + (net 61 "FTDI_D2") + (net 62 "FTDI_D3") + (net 63 "FTDI_D4") + (net 64 "FTDI_D5") + (net 65 "FTDI_D6") + (net 66 "FTDI_D7") + (net 67 "FTDI_C0") + (net 68 "FTDI_C1") + (net 69 "FTDI_C2") + (net 70 "~{N64_WRITE}") + (net 71 "~{N64_READ}") + (net 72 "~{N64_RESET}") + (net 73 "~{N64_INT}") + (net 74 "~{N64_NMI}") + (net 75 "SDRAM_DQ0") + (net 76 "SDRAM_DQ1") + (net 77 "SDRAM_DQ2") + (net 78 "SDRAM_DQ3") + (net 79 "SDRAM_DQ4") + (net 80 "SDRAM_DQ5") + (net 81 "SDRAM_DQ6") + (net 82 "SDRAM_DQ7") + (net 83 "SDRAM_DQ8") + (net 84 "SDRAM_DQ9") + (net 85 "SDRAM_DQ10") + (net 86 "SDRAM_DQ11") + (net 87 "SDRAM_DQ12") + (net 88 "SDRAM_DQ13") + (net 89 "SDRAM_DQ14") + (net 90 "SDRAM_DQ15") + (net 91 "FPGA_CLK") + (net 92 "MCU_CS") + (net 93 "MCU_MOSI") + (net 94 "MCU_MISO") + (net 95 "MCU_INT") + (net 96 "SDRAM_DQML") + (net 97 "~{SDRAM_WE}") + (net 98 "~{SDRAM_CAS}") + (net 99 "~{SDRAM_RAS}") + (net 100 "~{SDRAM_CS}") + (net 101 "SDRAM_BA0") + (net 102 "SDRAM_BA1") + (net 103 "SDRAM_A10") + (net 104 "SDRAM_A0") + (net 105 "SDRAM_A1") + (net 106 "SDRAM_A2") + (net 107 "SDRAM_A3") + (net 108 "SDRAM_A4") + (net 109 "SDRAM_A5") + (net 110 "SDRAM_A6") + (net 111 "SDRAM_A7") + (net 112 "SDRAM_A8") + (net 113 "SDRAM_A9") + (net 114 "SDRAM_A11") + (net 115 "SDRAM_A12") + (net 116 "SDRAM_CLK") + (net 117 "SDRAM_DQMH") + (net 118 "FTDI_C3") + (net 119 "FTDI_C4") + (net 120 "FTDI_C5") + (net 121 "FTDI_C6") + (net 122 "LED") + (net 123 "TEST1") + (net 124 "TEST2") + (net 125 "FTDI_C7") + (net 126 "USB_D+") + (net 127 "USB_D-") + (net 128 "Net-(D1-Pad2)") + (net 129 "BUTTON") + (net 130 "unconnected-(SW1-Pad4)") + (net 131 "unconnected-(J_N1-Pad24)") + (net 132 "unconnected-(J_N1-Pad49)") + (net 133 "TEST3") + (net 134 "MCU_SCLK") + (net 135 "unconnected-(U2-Pad1)") + (net 136 "Net-(C3-Pad1)") + (net 137 "Net-(J1-PadA5)") + (net 138 "unconnected-(J1-PadA8)") + (net 139 "Net-(J1-PadB5)") + (net 140 "unconnected-(J1-PadB8)") + (net 141 "Net-(R1-Pad2)") + (net 142 "Net-(R3-Pad1)") + (net 143 "Net-(R10-Pad1)") + (net 144 "USB_EEDATA") + (net 145 "USB_CLK") + (net 146 "unconnected-(U3-Pad2)") + (net 147 "unconnected-(U3-Pad32)") + (net 148 "unconnected-(U3-Pad33)") + (net 149 "USB_EECLK") + (net 150 "USB_EECS") + (net 151 "unconnected-(U6-Pad3)") + (net 152 "unconnected-(U8-Pad129)") + (net 153 "unconnected-(U9-Pad40)") + (net 154 "Net-(C7-Pad2)") + (net 155 "Net-(C8-Pad1)") + (net 156 "Net-(C14-Pad2)") + (net 157 "Net-(R13-Pad1)") + (net 158 "Net-(C21-Pad1)") + (net 159 "Net-(C22-Pad2)") + (net 160 "Net-(C13-Pad2)") + (net 161 "Net-(R6-Pad2)") + (net 162 "Net-(R7-Pad2)") + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 0f7c3f4f-27a9-4c81-8f37-7dcf0241c04c) + (at 107.825 117 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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/8225742a-f816-4b22-8618-1e188dae72ec") + (attr smd) + (fp_text reference "R1" (at -2.675 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp b0554a85-99be-4a6f-880d-e1cbcf17beaf) + ) + (fp_text value "1k" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7661c2cb-ebab-477a-b6fc-c68a9c995993) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp f033f08e-a070-43dd-87f5-d75ca8d58c43) + ) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp 20821350-bc01-4b93-9f5c-f4d7bb2d30c9)) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "F.SilkS") (width 0.12) (tstamp a9d7ac0f-81f3-4d62-bc76-a149dfe15225)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 1613c98a-3b2a-437d-b44a-5e83c6399e33)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 38ac0e9f-7a85-494f-a54f-13564a0dc2be)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 7732f142-ec53-4070-b0a5-963df9255a81)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp a0ff102f-fd96-4765-8058-29ab2bd67cb1)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 0cad109b-7dc4-4996-9c5d-ca91e965de32)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 2732e926-f7c3-48de-8851-17a1d24ff6fd)) + (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 2efafc52-b5dc-4117-9d45-058209700122)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 5cab3ca7-2559-436c-97c7-0899b7018f86)) + (pad "1" smd roundrect (at -0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 136 "Net-(C3-Pad1)") (pintype "passive") (tstamp b259ee29-ba29-4f09-99c5-82c9cbe3ee80)) + (pad "2" smd roundrect (at 0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 141 "Net-(R1-Pad2)") (pintype "passive") (tstamp 07485bf4-b6a8-4498-b0e2-a778cfab7c94)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_QFP:LQFP-48_7x7mm_P0.5mm" (layer "F.Cu") + (tedit 5D9F72AF) (tstamp 1865821f-f182-4fc3-a9b1-276cdef4665c) + (at 132.5 104 90) + (descr "LQFP, 48 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/ltc2358-16.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py") + (tags "LQFP QFP") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/6e901f8d-de31-4712-9607-3a9979e49550") + (attr smd) + (fp_text reference "U3" (at 0 -6.5 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7f9c41b1-49a3-4434-be3f-42221a164867) + ) + (fp_text value "FT232HL" (at 0 1 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 84684dd0-00ad-472d-a60f-437f4b81abb9) + ) + (fp_text user "${REFERENCE}" (at 0 -6 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp f885d360-6fd5-427f-a6f6-393304067f88) + ) + (fp_line (start 3.61 3.61) (end 3.61 3.16) (layer "F.SilkS") (width 0.12) (tstamp 2215fcc9-7ccb-46f1-8531-62382023d38d)) + (fp_line (start 3.16 -3.61) (end 3.61 -3.61) (layer "F.SilkS") (width 0.12) (tstamp 27d5e3f6-cb1e-4a50-94d1-bf225fa088ce)) + (fp_line (start 3.61 -3.61) (end 3.61 -3.16) (layer "F.SilkS") (width 0.12) (tstamp 2c720334-0ed4-4a92-a8d9-45635bfac9e1)) + (fp_line (start -3.61 3.61) (end -3.61 3.16) (layer "F.SilkS") (width 0.12) (tstamp 33c94337-42cc-416a-b1f6-4f4608063e9f)) + (fp_line (start -3.61 -3.61) (end -3.61 -3.16) (layer "F.SilkS") (width 0.12) (tstamp 51a5f053-03cf-4358-aef5-c1272c9e965b)) + (fp_line (start -3.16 3.61) (end -3.61 3.61) (layer "F.SilkS") (width 0.12) (tstamp 84986e21-6f1e-4934-92f1-0f8ebb1b3237)) + (fp_line (start 3.16 3.61) (end 3.61 3.61) (layer "F.SilkS") (width 0.12) (tstamp a1a7e157-3038-431f-9ea4-8cf4c715b338)) + (fp_line (start -3.16 -3.61) (end -3.61 -3.61) (layer "F.SilkS") (width 0.12) (tstamp b41a4a18-8c88-4389-bae2-cf1e72440f66)) + (fp_line (start -3.61 -3.16) (end -4.9 -3.16) (layer "F.SilkS") (width 0.12) (tstamp d95cc77c-d13b-426f-add6-0aa5a80a2e08)) + (fp_line (start -5.15 3.15) (end -5.15 0) (layer "F.CrtYd") (width 0.05) (tstamp 0f11d161-6009-49d5-9f67-fa144152dd24)) + (fp_line (start 5.15 3.15) (end 5.15 0) (layer "F.CrtYd") (width 0.05) (tstamp 1c8ae99f-12d0-42b7-bbb6-61107f9703fd)) + (fp_line (start -3.15 -5.15) (end -3.15 -3.75) (layer "F.CrtYd") (width 0.05) (tstamp 392bdc17-7e37-4f50-a6fe-7cc35d6a349c)) + (fp_line (start -3.75 3.75) (end -3.75 3.15) (layer "F.CrtYd") (width 0.05) (tstamp 481d9097-a4bb-411c-ae8e-25fcf442a126)) + (fp_line (start 3.15 -3.75) (end 3.75 -3.75) (layer "F.CrtYd") (width 0.05) (tstamp 4bb7a4e0-0b1f-451f-93d1-f40cc293a941)) + (fp_line (start 0 5.15) (end -3.15 5.15) (layer "F.CrtYd") (width 0.05) (tstamp 51f08fb5-060f-4398-a561-7a9f8085fbc8)) + (fp_line (start 3.15 3.75) (end 3.75 3.75) (layer "F.CrtYd") (width 0.05) (tstamp 5269b85b-e09c-4027-bdef-fceda3f8d929)) + (fp_line (start 0 -5.15) (end 3.15 -5.15) (layer "F.CrtYd") (width 0.05) (tstamp 6cbfc47f-2094-4835-9285-75a4bb848eb0)) + (fp_line (start 3.15 -5.15) (end 3.15 -3.75) (layer "F.CrtYd") (width 0.05) (tstamp 741d1394-f86f-43d3-b8e0-cd81d3bab3b2)) + (fp_line (start -3.75 -3.15) (end -5.15 -3.15) (layer "F.CrtYd") (width 0.05) (tstamp 8bdb2016-1792-4061-b4dc-8b0080c61242)) + (fp_line (start -3.15 -3.75) (end -3.75 -3.75) (layer "F.CrtYd") (width 0.05) (tstamp 94a20dbb-af9f-4900-9c0e-24c7714e7763)) + (fp_line (start 0 -5.15) (end -3.15 -5.15) (layer "F.CrtYd") (width 0.05) (tstamp 9b1577ad-4d15-4a4b-83d6-2dac1a2ca4eb)) + (fp_line (start 0 5.15) (end 3.15 5.15) (layer "F.CrtYd") (width 0.05) (tstamp a601d059-4b5b-43ac-a216-266e8852e0d6)) + (fp_line (start -3.75 -3.75) (end -3.75 -3.15) (layer "F.CrtYd") (width 0.05) (tstamp b4e0ef31-4e80-4866-bed3-36026dae8b9f)) + (fp_line (start 3.75 3.15) (end 5.15 3.15) (layer "F.CrtYd") (width 0.05) (tstamp b691234e-2580-4dfe-abc2-d7cb9475f9f7)) + (fp_line (start -3.75 3.15) (end -5.15 3.15) (layer "F.CrtYd") (width 0.05) (tstamp c35f4759-c2f5-43c6-ae28-23df694a80a3)) + (fp_line (start -3.15 5.15) (end -3.15 3.75) (layer "F.CrtYd") (width 0.05) (tstamp ca46fdfd-86e4-45f5-a6f4-8e18b6a2b9a5)) + (fp_line (start 3.75 -3.75) (end 3.75 -3.15) (layer "F.CrtYd") (width 0.05) (tstamp db255cd4-6a45-4496-83db-d75c3914fcb7)) + (fp_line (start 5.15 -3.15) (end 5.15 0) (layer "F.CrtYd") (width 0.05) (tstamp dd79bc1c-7ef5-46de-ade8-e12028c29aea)) + (fp_line (start -5.15 -3.15) (end -5.15 0) (layer "F.CrtYd") (width 0.05) (tstamp ded2c3a4-8a82-4d35-8049-13eaee7b9837)) + (fp_line (start 3.75 3.75) (end 3.75 3.15) (layer "F.CrtYd") (width 0.05) (tstamp eca171f7-8100-4b90-8bba-6ffc4d0744fc)) + (fp_line (start 3.15 5.15) (end 3.15 3.75) (layer "F.CrtYd") (width 0.05) (tstamp f033a152-e99b-4823-9343-fe6361e3a038)) + (fp_line (start -3.15 3.75) (end -3.75 3.75) (layer "F.CrtYd") (width 0.05) (tstamp f38e95ce-6354-45e6-b792-e0e7568eb4d5)) + (fp_line (start 3.75 -3.15) (end 5.15 -3.15) (layer "F.CrtYd") (width 0.05) (tstamp fe32c1eb-ebd7-429d-84a2-d0d6db01526e)) + (fp_line (start -2.5 -3.5) (end 3.5 -3.5) (layer "F.Fab") (width 0.1) (tstamp 11dcc065-452e-4f21-b09e-b805f6e2065b)) + (fp_line (start 3.5 -3.5) (end 3.5 3.5) (layer "F.Fab") (width 0.1) (tstamp 1c099c36-1e0f-410c-a0db-8ab50669a795)) + (fp_line (start -3.5 -2.5) (end -2.5 -3.5) (layer "F.Fab") (width 0.1) (tstamp 6fe86e23-c0b2-4b38-9422-5f46efa42752)) + (fp_line (start -3.5 3.5) (end -3.5 -2.5) (layer "F.Fab") (width 0.1) (tstamp c88c987d-56e5-4b0d-bd06-dcaaeec1a778)) + (fp_line (start 3.5 3.5) (end -3.5 3.5) (layer "F.Fab") (width 0.1) (tstamp fea70ae0-da1c-4f3c-b4fe-cf20c4cb88ac)) + (pad "1" smd roundrect locked (at -4.1625 -2.75 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 145 "USB_CLK") (pinfunction "XCSI") (pintype "input") (tstamp 86572abb-c8fc-40d4-8352-92036aa8f932)) + (pad "2" smd roundrect locked (at -4.1625 -2.25 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 146 "unconnected-(U3-Pad2)") (pinfunction "XCSO") (pintype "output+no_connect") (tstamp 3909838d-168c-4b62-949d-f4f2b250a845)) + (pad "3" smd roundrect locked (at -4.1625 -1.75 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 154 "Net-(C7-Pad2)") (pinfunction "VPHY") (pintype "power_in") (tstamp c469de13-ecc6-4461-85f4-8efaad94a053)) + (pad "4" smd roundrect locked (at -4.1625 -1.25 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "AGND") (pintype "power_in") (tstamp 1f4c1922-4f33-42c6-bfe1-fcecd03b59f0)) + (pad "5" smd roundrect locked (at -4.1625 -0.75 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 161 "Net-(R6-Pad2)") (pinfunction "REF") (pintype "input") (tstamp add3421a-0adf-4642-82cb-d5936875ac2e)) + (pad "6" smd roundrect locked (at -4.1625 -0.25 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 127 "USB_D-") (pinfunction "DM") (pintype "bidirectional") (tstamp c164a018-2d92-4c94-b25e-8ae7395c62b1)) + (pad "7" smd roundrect locked (at -4.1625 0.25 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 126 "USB_D+") (pinfunction "DP") (pintype "bidirectional") (tstamp 2dcd8add-6b53-4e9e-a562-3a717c9bea6b)) + (pad "8" smd roundrect locked (at -4.1625 0.75 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 155 "Net-(C8-Pad1)") (pinfunction "VPLL") (pintype "power_in") (tstamp 6b92a0e2-cb11-4f76-b39e-aa0248d472c9)) + (pad "9" smd roundrect locked (at -4.1625 1.25 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "AGND") (pintype "power_in") (tstamp 71d6eafb-c399-4e6f-b86c-94b287bc86b8)) + (pad "10" smd roundrect locked (at -4.1625 1.75 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 0693bd9c-9eb0-4a56-b652-5cb0a3e37935)) + (pad "11" smd roundrect locked (at -4.1625 2.25 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 4eb844ee-367d-47a8-a3a5-4b9fff98f7ce)) + (pad "12" smd roundrect locked (at -4.1625 2.75 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO") (pintype "power_in") (tstamp e882b963-8ee6-43b0-becf-f98738e561f9)) + (pad "13" smd roundrect locked (at -2.75 4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 59 "FTDI_D0") (pinfunction "ADBUS0") (pintype "bidirectional") (tstamp c5938cc0-4786-4906-b720-9b74fcb079c8)) + (pad "14" smd roundrect locked (at -2.25 4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 60 "FTDI_D1") (pinfunction "ADBUS1") (pintype "bidirectional") (tstamp 3a5d0e7f-af94-4799-b532-1070a4ccb1d0)) + (pad "15" smd roundrect locked (at -1.75 4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 61 "FTDI_D2") (pinfunction "ADBUS2") (pintype "bidirectional") (tstamp 795aa95c-d684-428b-b0ff-6bb32ee39be4)) + (pad "16" smd roundrect locked (at -1.25 4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 62 "FTDI_D3") (pinfunction "ADBUS3") (pintype "bidirectional") (tstamp 1b157d32-a9b0-4d9e-ac4b-6ce6da722bd1)) + (pad "17" smd roundrect locked (at -0.75 4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 63 "FTDI_D4") (pinfunction "ADBUS4") (pintype "bidirectional") (tstamp d386a4ed-6f5f-41e0-bd59-e257d591d691)) + (pad "18" smd roundrect locked (at -0.25 4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 64 "FTDI_D5") (pinfunction "ADBUS5") (pintype "bidirectional") (tstamp ab12feaf-8542-480a-a170-96d7881ec345)) + (pad "19" smd roundrect locked (at 0.25 4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 65 "FTDI_D6") (pinfunction "ADBUS6") (pintype "bidirectional") (tstamp e5cd6a81-7b88-40fa-819c-47f20b424490)) + (pad "20" smd roundrect locked (at 0.75 4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 66 "FTDI_D7") (pinfunction "ADBUS7") (pintype "bidirectional") (tstamp 1ff48404-1c1d-4211-a3d7-f4ee408ef2b2)) + (pad "21" smd roundrect locked (at 1.25 4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 67 "FTDI_C0") (pinfunction "ACBUS0") (pintype "bidirectional") (tstamp fba264a6-eb0f-4971-b16a-871807b01300)) + (pad "22" smd roundrect locked (at 1.75 4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 1ba02c2a-f405-40c1-8e6b-2a70b3810414)) + (pad "23" smd roundrect locked (at 2.25 4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 66d1ccbe-29fa-4862-8647-35d6fe17eb99)) + (pad "24" smd roundrect locked (at 2.75 4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO") (pintype "power_in") (tstamp 2fd646b2-a3a2-4abf-a3d6-a07101a1745c)) + (pad "25" smd roundrect locked (at 4.1625 2.75 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 68 "FTDI_C1") (pinfunction "ACBUS1") (pintype "bidirectional") (tstamp a31b2c35-c9d4-43af-a0f1-7b5872154b0b)) + (pad "26" smd roundrect locked (at 4.1625 2.25 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 69 "FTDI_C2") (pinfunction "ACBUS2") (pintype "bidirectional") (tstamp 4186deb5-f42e-46c4-929b-63ac480182c7)) + (pad "27" smd roundrect locked (at 4.1625 1.75 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 118 "FTDI_C3") (pinfunction "ACBUS3") (pintype "bidirectional") (tstamp f06d7b32-b50b-4636-b600-c2c819d50f54)) + (pad "28" smd roundrect locked (at 4.1625 1.25 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 119 "FTDI_C4") (pinfunction "ACBUS4") (pintype "bidirectional") (tstamp 056af92e-903b-4ba5-a722-83284b92b06f)) + (pad "29" smd roundrect locked (at 4.1625 0.75 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 120 "FTDI_C5") (pinfunction "ACBUS5") (pintype "bidirectional") (tstamp 4a4c42d8-fd99-480c-858d-1ee0e1ef717d)) + (pad "30" smd roundrect locked (at 4.1625 0.25 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 121 "FTDI_C6") (pinfunction "ACBUS6") (pintype "bidirectional") (tstamp 93951b16-e73e-4037-97b5-0ed1dbfefa7b)) + (pad "31" smd roundrect locked (at 4.1625 -0.25 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 125 "FTDI_C7") (pinfunction "ACBUS7") (pintype "bidirectional") (tstamp 3f5fe1b9-c63a-4911-998b-e94c73303f90)) + (pad "32" smd roundrect locked (at 4.1625 -0.75 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 147 "unconnected-(U3-Pad32)") (pinfunction "ACBUS8") (pintype "bidirectional+no_connect") (tstamp d119f8e4-171c-45f9-91a4-704b123ed594)) + (pad "33" smd roundrect locked (at 4.1625 -1.25 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 148 "unconnected-(U3-Pad33)") (pinfunction "ACBUS9") (pintype "bidirectional+no_connect") (tstamp deb345cf-f571-437d-983d-113d94ecd449)) + (pad "34" smd roundrect locked (at 4.1625 -1.75 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 162 "Net-(R7-Pad2)") (pinfunction "~{RESET}") (pintype "input") (tstamp 9af5f886-e684-4cab-a943-e087e184afeb)) + (pad "35" smd roundrect locked (at 4.1625 -2.25 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 18e3a9bb-3bab-4ad3-b7b0-ccfce51d9ccc)) + (pad "36" smd roundrect locked (at 4.1625 -2.75 90) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp d166d4f0-ed8e-40d9-a340-5aa76cd8c2b9)) + (pad "37" smd roundrect locked (at 2.75 -4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 160 "Net-(C13-Pad2)") (pinfunction "VCCA") (pintype "power_out") (tstamp a4573555-64eb-4dc2-9e15-fe01c1156d04)) + (pad "38" smd roundrect locked (at 2.25 -4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 156 "Net-(C14-Pad2)") (pinfunction "VCCCORE") (pintype "power_out") (tstamp f360214b-4b1f-4ed5-bd00-b7707417905d)) + (pad "39" smd roundrect locked (at 1.75 -4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCD") (pintype "power_in") (tstamp a4175a31-0ce2-4237-9fa9-fce6ddd25436)) + (pad "40" smd roundrect locked (at 1.25 -4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VREGIN") (pintype "power_in") (tstamp 6899991d-6621-4a3c-8c89-04f8fa2b0153)) + (pad "41" smd roundrect locked (at 0.75 -4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "AGND") (pintype "power_in") (tstamp 034f4333-c29b-4b1b-9a5f-6d73c4f36655)) + (pad "42" smd roundrect locked (at 0.25 -4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "TEST") (pintype "input") (tstamp b8e3c596-1728-4f91-afdb-f41a71a2a3de)) + (pad "43" smd roundrect locked (at -0.25 -4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 144 "USB_EEDATA") (pinfunction "EEDATA") (pintype "bidirectional") (tstamp e4aa4052-11da-42b4-9efa-217b65d3efc1)) + (pad "44" smd roundrect locked (at -0.75 -4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 149 "USB_EECLK") (pinfunction "EECLK") (pintype "input") (tstamp 4d8c848a-27ba-4b8a-b4ad-cbbedde21686)) + (pad "45" smd roundrect locked (at -1.25 -4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 150 "USB_EECS") (pinfunction "EECS") (pintype "input") (tstamp a496e463-3b7c-4890-a440-3587b8f041df)) + (pad "46" smd roundrect locked (at -1.75 -4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO") (pintype "power_in") (tstamp 51eaaa12-6157-4775-b10a-bbdbdc3bcac7)) + (pad "47" smd roundrect locked (at -2.25 -4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp b446a25a-df1e-45ba-8ed7-a10bef1a8e33)) + (pad "48" smd roundrect locked (at -2.75 -4.1625 90) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 8ffcac87-ecc0-41e0-a1cd-1733a63f6cc6)) + (model "${KICAD6_3DMODEL_DIR}/Package_QFP.3dshapes/LQFP-48_7x7mm_P0.5mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 18db2538-d0d9-4bf6-93fb-a94a46eeab69) + (at 118.75 110.75 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/13d2b351-5091-4e28-9a5e-2a00667fbc07") + (attr smd) + (fp_text reference "C5" (at -2.75 0 90) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 18aee322-41b0-4e56-93f7-19defbb439a7) + ) + (fp_text value "100nF" (at 0 1.43 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8bada17d-edd7-44da-8eab-ceb6b1683bc9) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 0466b662-e46a-4a4f-afa2-5ff8a396b87e) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "F.SilkS") (width 0.12) (tstamp 6051de95-a95d-481f-bb37-5e10390bfab1)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "F.SilkS") (width 0.12) (tstamp da53a4cd-a863-4173-ad59-a2b0983b7be9)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 31d82e15-3e5d-46d5-bf1f-655bedacd410)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 7c6e15e2-c355-4ad4-b460-b5197d0e0da7)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp ef499872-3e28-4db1-b9f8-9dea8e8d6c7e)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp fd1e4907-24d2-4a4f-b477-a90ddd5169f1)) + (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 6b0934b2-e670-44d0-bfcf-768eeb68b607)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp b6c590f1-12da-43ad-9689-79328b6bf410)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp c1e29368-11ba-4aa7-b9ed-4163f67d226b)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp c848963a-b240-43bd-b5b6-5f8619f37ffd)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 6614fe2b-1a8c-4b25-b51a-8990ebb8eb2d)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp bb951acb-2913-4d0e-9ca4-8f3da5b340e7)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Button_Switch_SMD:SW_SPST_Omron_B3FS-101xP" (layer "F.Cu") + (tedit 5E6E8E39) (tstamp 1e69b87c-f173-49da-bff1-546087adb070) + (at 117.5 84.75 90) + (descr "Surface Mount Tactile Switch for High-Density Mounting, 4.3mm height, https://omronfs.omron.com/en_US/ecb/products/pdf/en-b3fs.pdf") + (tags "Tactile Switch") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/95782e76-cb4b-4009-9945-08a041720df8") + (attr smd) + (fp_text reference "SW1" (at -6.25 0 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp bb7b3b76-c0b3-49b8-94ac-350367796da6) + ) + (fp_text value "TS07-667-37-BK-160-SMT" (at 0 4.2 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 5f75e050-d0d6-44c2-808d-45cf2b8a878d) + ) + (fp_text user "${REFERENCE}" (at 0 -2.2 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 37f41bec-542d-4b9c-8e33-703fe84e266f) + ) + (fp_line (start -3.1 -1.3) (end -3.1 1.3) (layer "F.SilkS") (width 0.12) (tstamp 2a0f7a33-eb64-4ca9-8952-0926364051ae)) + (fp_line (start -5.1 -3.3) (end -4.1 -3.3) (layer "F.SilkS") (width 0.12) (tstamp 39b67556-2971-41ae-92ed-4d853f221879)) + (fp_line (start 3 3.25) (end -3 3.25) (layer "F.SilkS") (width 0.12) (tstamp 8e314ac8-a1f1-4a93-af7c-373d7c9ffcbf)) + (fp_line (start -5.1 -2.3) (end -5.1 -3.3) (layer "F.SilkS") (width 0.12) (tstamp a86a2c6d-07e6-4d0a-8ac1-0d90fad9bc37)) + (fp_line (start 3.1 -1.3) (end 3.1 1.3) (layer "F.SilkS") (width 0.12) (tstamp ad861382-5472-483a-bfe4-53af9168c0cd)) + (fp_line (start 2.9 -3.25) (end -2.9 -3.25) (layer "F.SilkS") (width 0.12) (tstamp caaf81c3-7c7c-434d-9038-23bc3b53fa11)) + (fp_line (start 5.05 1.3) (end 5.05 3.4) (layer "F.CrtYd") (width 0.05) (tstamp 1489530b-e8b0-4fa3-bcee-61c7e4e4d6b3)) + (fp_line (start 3.25 -1.3) (end 3.25 1.3) (layer "F.CrtYd") (width 0.05) (tstamp 50a7ca56-802b-4482-abb6-4388027376c0)) + (fp_line (start -3.25 1.3) (end -3.25 -1.3) (layer "F.CrtYd") (width 0.05) (tstamp 6d0b871e-3571-4e19-a8d0-09d4b2318256)) + (fp_line (start 3.25 1.3) (end 5.05 1.3) (layer "F.CrtYd") (width 0.05) (tstamp 8be5beb2-aa80-4a7e-9ea7-a47196b0d7b2)) + (fp_line (start -5.05 1.3) (end -3.25 1.3) (layer "F.CrtYd") (width 0.05) (tstamp a15bf32a-8c95-4ec5-a1d3-4facbe8732b4)) + (fp_line (start -3.25 -1.3) (end -5.05 -1.3) (layer "F.CrtYd") (width 0.05) (tstamp a7f368fb-3d55-479f-9cb2-9b1407be0358)) + (fp_line (start -5.05 -1.3) (end -5.05 -3.4) (layer "F.CrtYd") (width 0.05) (tstamp b853bd88-4f43-4694-9397-1b9b1bb770b6)) + (fp_line (start 5.05 -1.3) (end 3.25 -1.3) (layer "F.CrtYd") (width 0.05) (tstamp c14e7b63-e738-41f1-bc66-ddf7ded906ca)) + (fp_line (start 5.05 -3.4) (end 5.05 -1.3) (layer "F.CrtYd") (width 0.05) (tstamp c8ba772f-a43b-417d-80e0-fca6cdc81332)) + (fp_line (start -5.05 -3.4) (end 5.05 -3.4) (layer "F.CrtYd") (width 0.05) (tstamp cca19167-6318-4e4f-b1d9-83aa84d89abe)) + (fp_line (start -5.05 3.4) (end -5.05 1.3) (layer "F.CrtYd") (width 0.05) (tstamp d8d5e802-83e2-4d9a-8201-cf8e2b341030)) + (fp_line (start 5.05 3.4) (end -5.05 3.4) (layer "F.CrtYd") (width 0.05) (tstamp fc7f1aaf-824d-4693-9d7f-7c286d1836e4)) + (fp_line (start -3 3.15) (end -3 -3.15) (layer "F.Fab") (width 0.1) (tstamp a0f1e442-dddb-4b51-8304-c5c58e07e795)) + (fp_line (start 3 -3.15) (end 3 3.15) (layer "F.Fab") (width 0.1) (tstamp ba8952c8-e8c1-46b3-b3ff-7799a05f19fe)) + (fp_line (start -3 -3.15) (end 3 -3.15) (layer "F.Fab") (width 0.1) (tstamp ce08e9ea-9b7d-4a1e-a11c-c93cd408dc25)) + (fp_line (start 3 3.15) (end -3 3.15) (layer "F.Fab") (width 0.1) (tstamp f92e73fc-27a9-4f0d-8930-e878d9537ab1)) + (fp_circle (center 0 0) (end 1.5 0) (layer "F.Fab") (width 0.1) (fill none) (tstamp e4f66aca-0f92-4a6f-aa5e-81106081bf10)) + (pad "1" smd rect (at -4 -2.25 270) (size 1.6 1.4) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "1") (pintype "passive") (tstamp 64f41b47-121d-499c-a8e8-6ed07b7bbb89)) + (pad "2" smd rect (at 4 -2.25 270) (size 1.6 1.4) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "2") (pintype "passive") (tstamp 055bd271-ae94-43f0-a2ed-fd4a4bda98ae)) + (pad "3" smd rect (at -4 2.25 270) (size 1.6 1.4) (layers "F.Cu" "F.Paste" "F.Mask") + (net 129 "BUTTON") (pinfunction "3") (pintype "passive") (tstamp ef46d044-a3e9-44dd-99e9-520341a53402)) + (pad "4" smd rect (at 4 2.25 270) (size 1.6 1.4) (layers "F.Cu" "F.Paste" "F.Mask") + (net 130 "unconnected-(SW1-Pad4)") (pinfunction "4") (pintype "passive+no_connect") (tstamp ad6b9773-9efc-4530-9a27-333300bb7322)) + (model "${KICAD6_3DMODEL_DIR}/Button_Switch_SMD.3dshapes/SW_SPST_Omron_B3FS-101xP.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + (model "${KICAD6_3DMODEL_DIR}/Button_Switch_SMD.3dshapes/SW_SPST_Omron_B3FS-105xP.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "TestPoint:TestPoint_Pad_D1.5mm" (layer "F.Cu") + (tedit 5A0F774F) (tstamp 20067d5c-cfee-433d-89f7-d50c65e42020) + (at 138 113) + (descr "SMD pad as test Point, diameter 1.5mm") + (tags "test point SMD pad") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (property "exclude_from_bom" "") + (path "/e5375fae-8d12-42aa-b7f4-67a68780c27e") + (attr exclude_from_pos_files exclude_from_bom) + (fp_text reference "GND1" (at -3 0) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp deaede8b-5dc0-4a58-92d3-ba6807d4770b) + ) + (fp_text value "TestPoint" (at 0 1.75) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8f794f43-c972-46c9-bef9-7125cef63dd1) + ) + (fp_text user "${REFERENCE}" (at 0 -1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 3797395e-1330-4fb9-9222-15a859937a32) + ) + (fp_circle (center 0 0) (end 0 0.95) (layer "F.SilkS") (width 0.12) (fill none) (tstamp 61a88951-d9cf-4e26-9231-2fa583a8e1a9)) + (fp_circle (center 0 0) (end 1.25 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp f3264fb3-f2b1-4507-bd2c-91ea884bdb94)) + (pad "1" smd circle (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") + (net 46 "GND") (pinfunction "1") (pintype "passive") (tstamp 6bf4a85f-abdd-4285-ae1b-b514ee273f88)) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 253e5a77-1fde-4879-af24-f15108f22937) + (at 122.5 110.25 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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/9f9dfac6-0c0d-4ee0-924b-e95250d2b98f") + (attr smd) + (fp_text reference "R11" (at -3.25 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8242e158-86a8-4e70-8f1d-21caf5b2fa85) + ) + (fp_text value "10k" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 978198ae-b66d-4893-8bf5-3905366cbef1) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 74c374ab-4094-4c7b-a457-86ee7cb5fd20) + ) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "F.SilkS") (width 0.12) (tstamp 030ba434-ad25-42f5-9f7a-16b10ed05daa)) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp b57ada2a-ba18-45db-97ba-3c309b8a0eef)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 0c5a6646-30c3-4864-8f31-734d2a14bad4)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 6b2f98c0-b9fd-4a99-8384-e136d9488203)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp d442008c-64bd-44aa-a5a2-6676bf9c2f59)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp ff7d19ce-e4d6-46aa-94e4-7e29fadd3dc2)) + (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 5996d212-7ca2-445f-8a44-9c5c3c1a6ee1)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 7c80e304-821e-426e-8673-a64dbb55ffce)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp ccf84deb-329c-49c5-a608-2d116d0d935b)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp eea35f4e-0b00-457f-8c15-290929c2115b)) + (pad "1" smd roundrect (at -0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 74a03672-0ca5-4fd0-910e-67f8baa1c1e6)) + (pad "2" smd roundrect (at 0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 143 "Net-(R10-Pad1)") (pintype "passive") (tstamp b20a96a6-621a-4a3f-89ef-98b90bc210da)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 2bd3bb65-2d17-4b66-9143-8ca18ed4bcc7) + (at 166.75 81.35 180) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/994dc62b-2a7b-4bff-8f5a-68d36773f4c8") + (attr smd) + (fp_text reference "C21" (at 0 -1.43) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 016482e7-43d8-4111-9a3d-eeb3ce820f8d) + ) + (fp_text value "7pF" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 86cb94d4-d840-4036-860e-6b6d599578f0) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 7439a873-a278-446f-b5f5-ea895b199c47) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "F.SilkS") (width 0.12) (tstamp 750d1465-2d20-4807-985c-60574fae5a04)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "F.SilkS") (width 0.12) (tstamp b114d796-542c-4bd9-9e31-006620918176)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 05791ee2-37c3-46da-96dc-c864cbc46c0f)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 0fd6d412-7a76-4660-b47e-aed038d28b79)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 63711803-52ba-48b8-8630-be519ee190b8)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 68e65e87-f575-43ee-840d-df59474d7df0)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 3b415046-c0f3-46bd-858f-63e0064bd46f)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp 6ea7dff4-d3d0-41bf-94e5-fe4806a2d742)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp 74f0df38-4c65-4d19-9b73-5f44691c8134)) + (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 85ef3cf0-8001-46d8-baee-83fb26852d60)) + (pad "1" smd roundrect (at -0.775 0 180) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 158 "Net-(C21-Pad1)") (pintype "passive") (tstamp a01a8abb-dc3f-4d2d-9374-9325d3682fcd)) + (pad "2" smd roundrect (at 0.775 0 180) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 7af57c8a-007c-4f64-968a-0a941405c964)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 2db667be-e20a-48d3-855e-efdd0936348c) + (at 110 97.5) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/2263c8e5-5551-4045-b466-779e9e5fd361") + (attr smd) + (fp_text reference "C1" (at 2.75 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp c699eb93-8284-41eb-bee9-337c5bc456e4) + ) + (fp_text value "4.7uF" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 04531938-60a8-48c7-9b17-ba4a7c15e92e) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp fe17f606-8b4b-41ef-9d38-85c4424ef695) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "F.SilkS") (width 0.12) (tstamp 4b446314-0f83-41e6-b8e4-d5c918a0a8e6)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "F.SilkS") (width 0.12) (tstamp ae4de68f-e091-4be8-8e78-6cb942542c2d)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 3a790c34-16d6-433b-b8a9-e9556f0d1a51)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 57e8eb14-ac18-43ef-9cf6-64dd279debf6)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 6ef3dbc9-4c08-46ca-8407-c4b86064a592)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp ea4a4c05-70f4-416f-8c06-4dda3047049f)) + (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 22470747-a8ab-408d-b789-38cbbc44623c)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp 43a3f159-4fa3-44aa-8cd2-05283c03483f)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp be1c86a7-a200-44ce-a711-48697830bde6)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp c04e2dac-91f9-480b-9134-9e0f30cff800)) + (pad "1" smd roundrect (at -0.775 0) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 52 "+5V") (pintype "passive") (tstamp 38e2763c-1700-4732-aeac-4051e1ea2867)) + (pad "2" smd roundrect (at 0.775 0) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 25675c76-50c3-4988-ad6b-8360a11f9ea1)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_SO:TSSOP-8_4.4x3mm_P0.65mm" (layer "F.Cu") + (tedit 5E476F32) (tstamp 2e0c41c0-c32d-4a24-a454-2e6622425e45) + (at 177 84.75) + (descr "TSSOP, 8 Pin (JEDEC MO-153 Var AA https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py") + (tags "TSSOP SO") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/766e0844-4cc7-4fee-800a-7bdf93675837") + (attr smd) + (fp_text reference "U7" (at 0 -2.45) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp cd3c470b-8b04-46be-869f-294e818f1bf1) + ) + (fp_text value "MCP7940N-x/ST" (at 0 2.45) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 16a5f374-df2f-496c-8d16-ad31cd04db2b) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 0bb59dfc-3427-42c1-8618-937fa4e0c26a) + ) + (fp_line (start 0 -1.61) (end 2.2 -1.61) (layer "F.SilkS") (width 0.12) (tstamp 4e4c6608-10cf-45e6-8dbd-bf57165bb39b)) + (fp_line (start 0 1.61) (end -2.2 1.61) (layer "F.SilkS") (width 0.12) (tstamp 4fc7f522-d347-4d52-9bd7-11d1c16cbc06)) + (fp_line (start 0 -1.61) (end -3.6 -1.61) (layer "F.SilkS") (width 0.12) (tstamp 70469545-8112-4478-a644-abc634bfeef8)) + (fp_line (start 0 1.61) (end 2.2 1.61) (layer "F.SilkS") (width 0.12) (tstamp b67237b3-0f5e-43b6-a8c6-fbb7b90ac94e)) + (fp_line (start 3.85 1.75) (end 3.85 -1.75) (layer "F.CrtYd") (width 0.05) (tstamp 302c7119-7315-4d7c-a395-2ae0c3ec90b9)) + (fp_line (start -3.85 -1.75) (end -3.85 1.75) (layer "F.CrtYd") (width 0.05) (tstamp 615892d4-82ed-4e34-b9b6-1866e1a78a72)) + (fp_line (start 3.85 -1.75) (end -3.85 -1.75) (layer "F.CrtYd") (width 0.05) (tstamp 93e03f85-d4a0-40ba-a365-730b3748670a)) + (fp_line (start -3.85 1.75) (end 3.85 1.75) (layer "F.CrtYd") (width 0.05) (tstamp e30bf9ba-1dcf-42ea-b745-d0d4dbd03388)) + (fp_line (start 2.2 -1.5) (end 2.2 1.5) (layer "F.Fab") (width 0.1) (tstamp 32e960e3-4a74-4909-baa3-c9bef798ade6)) + (fp_line (start -2.2 1.5) (end -2.2 -0.75) (layer "F.Fab") (width 0.1) (tstamp 4c86212a-3ec3-41d9-b47e-fe5b1669cc0a)) + (fp_line (start -2.2 -0.75) (end -1.45 -1.5) (layer "F.Fab") (width 0.1) (tstamp 6e807474-b61a-4e4f-853d-431189625d53)) + (fp_line (start -1.45 -1.5) (end 2.2 -1.5) (layer "F.Fab") (width 0.1) (tstamp 9f241ad0-f38c-45bb-9126-60a89e3f87e3)) + (fp_line (start 2.2 1.5) (end -2.2 1.5) (layer "F.Fab") (width 0.1) (tstamp c229e20d-b82c-446a-a845-9afa0f83c311)) + (pad "1" smd roundrect (at -2.8625 -0.975) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 158 "Net-(C21-Pad1)") (pinfunction "X1") (pintype "input") (tstamp a6f43467-6ae5-41a2-87f0-454e64140cc7)) + (pad "2" smd roundrect (at -2.8625 -0.325) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 159 "Net-(C22-Pad2)") (pinfunction "X2") (pintype "output") (tstamp c332b337-d424-4233-82d1-a6f6aa4dffbd)) + (pad "3" smd roundrect (at -2.8625 0.325) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 45 "Net-(BT1-Pad1)") (pinfunction "VBAT") (pintype "power_in") (tstamp 86cff988-9d17-4363-b784-5ecafbf4eb17)) + (pad "4" smd roundrect (at -2.8625 0.975) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "VSS") (pintype "power_in") (tstamp 392e23ea-ae0e-419d-9cb4-65d4d7172efd)) + (pad "5" smd roundrect (at 2.8625 0.975) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 47 "I2C_SDA") (pinfunction "SDA") (pintype "bidirectional") (tstamp 3d16dd57-651e-4bc2-8ea2-607b85dd2883)) + (pad "6" smd roundrect (at 2.8625 0.325) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 48 "I2C_SCL") (pinfunction "SCL") (pintype "input") (tstamp ca638f11-d777-4ca6-9001-90bd96853c14)) + (pad "7" smd roundrect (at 2.8625 -0.325) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 49 "RTC_MFP") (pinfunction "MFP") (pintype "open_collector") (tstamp aa797ce2-b1ce-435e-87e7-c868ec929490)) + (pad "8" smd roundrect (at 2.8625 -0.975) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCC") (pintype "power_in") (tstamp 45532546-4580-480d-adad-b4e40385c195)) + (model "${KICAD6_3DMODEL_DIR}/Package_SO.3dshapes/TSSOP-8_4.4x3mm_P0.65mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_TO_SOT_SMD:SOT-23-6" (layer "F.Cu") + (tedit 5F6F9B37) (tstamp 308ac6bc-ea1f-4bc4-9538-b1bb946a9eff) + (at 122.5 105.75 180) + (descr "SOT, 6 Pin (https://www.jedec.org/sites/default/files/docs/Mo-178c.PDF variant AB), generated with kicad-footprint-generator ipc_gullwing_generator.py") + (tags "SOT TO_SOT_SMD") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/a669f65a-ba28-488f-8876-920a059fc027") + (attr smd) + (fp_text reference "U4" (at 3.25 0 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 1eb40491-425e-4be3-bfdf-372a0cbf2b20) + ) + (fp_text value "93AA56Bx-x/OT" (at -1.5 -5 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 3d7c2466-a9b7-43e3-bb22-db2b9cdd705a) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 0a871477-f782-4db6-a5f2-8a3e981c1610) + ) + (fp_line (start 0 -1.56) (end 0.8 -1.56) (layer "F.SilkS") (width 0.12) (tstamp 07fce900-70c0-4966-963c-a70fd6a91f03)) + (fp_line (start 0 1.56) (end 0.8 1.56) (layer "F.SilkS") (width 0.12) (tstamp 891b05a2-3fd4-4a49-8c13-ff29b909eb91)) + (fp_line (start 0 1.56) (end -0.8 1.56) (layer "F.SilkS") (width 0.12) (tstamp d6e2b454-3c29-4d1f-bd25-5660f85c9538)) + (fp_line (start 0 -1.56) (end -1.8 -1.56) (layer "F.SilkS") (width 0.12) (tstamp f402340f-559f-42ba-be69-4ee8418759e1)) + (fp_line (start -2.05 1.7) (end 2.05 1.7) (layer "F.CrtYd") (width 0.05) (tstamp 150d5ff5-918b-47d5-819d-683341c0e5b0)) + (fp_line (start -2.05 -1.7) (end -2.05 1.7) (layer "F.CrtYd") (width 0.05) (tstamp 48919c43-e40e-45c6-8a5c-fa9199732aa6)) + (fp_line (start 2.05 1.7) (end 2.05 -1.7) (layer "F.CrtYd") (width 0.05) (tstamp b225c01c-746c-413f-9af6-aceacee71d79)) + (fp_line (start 2.05 -1.7) (end -2.05 -1.7) (layer "F.CrtYd") (width 0.05) (tstamp d79b1ee3-aa58-44c2-a411-a126eb8adb8d)) + (fp_line (start -0.8 -1.05) (end -0.4 -1.45) (layer "F.Fab") (width 0.1) (tstamp 23b47c0d-ba40-40f8-893c-6ffff7ac9a24)) + (fp_line (start 0.8 -1.45) (end 0.8 1.45) (layer "F.Fab") (width 0.1) (tstamp 8dccee60-0e43-4d99-8b32-7f3d5d8ce312)) + (fp_line (start -0.8 1.45) (end -0.8 -1.05) (layer "F.Fab") (width 0.1) (tstamp ca532738-28a6-4436-91ba-6bdf83da6c3a)) + (fp_line (start 0.8 1.45) (end -0.8 1.45) (layer "F.Fab") (width 0.1) (tstamp d86a478f-dc0b-44b7-aebb-dac71033f3da)) + (fp_line (start -0.4 -1.45) (end 0.8 -1.45) (layer "F.Fab") (width 0.1) (tstamp eff8a273-9564-4b94-b491-0d12d4e99595)) + (pad "1" smd roundrect locked (at -1.1375 -0.95 180) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 143 "Net-(R10-Pad1)") (pinfunction "DO") (pintype "tri_state") (tstamp 4d8961af-d807-48cf-9e11-b5d4257e5b23)) + (pad "2" smd roundrect locked (at -1.1375 0 180) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "Vss") (pintype "power_in") (tstamp 333b39a2-2fb4-447a-93f3-c18b716af047)) + (pad "3" smd roundrect locked (at -1.1375 0.95 180) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 144 "USB_EEDATA") (pinfunction "DI") (pintype "input") (tstamp 9c595bb2-ce45-4f4a-9b14-af23b79fac5d)) + (pad "4" smd roundrect locked (at 1.1375 0.95 180) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 149 "USB_EECLK") (pinfunction "CLK") (pintype "input") (tstamp f408125e-e732-49cb-8447-5c458511e05b)) + (pad "5" smd roundrect locked (at 1.1375 0 180) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 150 "USB_EECS") (pinfunction "CS") (pintype "input") (tstamp dbabe311-e7c6-411d-a6ba-cb5ea0a275b3)) + (pad "6" smd roundrect locked (at 1.1375 -0.95 180) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "Vсс") (pintype "power_in") (tstamp 62a665b1-5af9-4aba-828a-91440bb045ba)) + (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23-6.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 32aca65b-d8ca-4e4b-bcf0-0e78956e2776) + (at 122.5 99.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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/d1984805-4314-4f1c-9ab1-479802945b94") + (attr smd) + (fp_text reference "R8" (at -2.75 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 14a13283-4e54-4226-a07c-af565889337c) + ) + (fp_text value "10k" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 818ee031-0985-4f05-ac35-c39f534af651) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp bf11d016-c083-4e16-bcf1-61482cbcbe53) + ) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp c6e901fe-0094-4cd4-8b03-1fc2ac1eecec)) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "F.SilkS") (width 0.12) (tstamp faaebcca-2b2a-4c2b-af2f-01cae2d22b93)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 0633649e-22b6-40a8-a50d-6f5737e461c5)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 4b5f3757-f455-4c31-b0b8-7ace2574513a)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 61f64205-b3a6-4061-b24e-1d465e0010f0)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp d2e14294-4456-492a-b7f9-68674db611aa)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 0accb859-cc2b-4e67-9847-70fbc3ee4175)) + (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 0c704186-4b67-45be-9b17-ba4f82cb305c)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 824ead4e-5d8e-4301-a049-2dc263251a15)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp d83fa8dc-7081-43a1-982d-b6a9c1fa53e1)) + (pad "1" smd roundrect (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp ab1b50d1-6475-4a97-933d-a922a7fc1312)) + (pad "2" smd roundrect (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 125 "FTDI_C7") (pintype "passive") (tstamp cbd8d9d1-61f0-4806-8f38-aef544991495)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_SO:TSOP-II-54_22.2x10.16mm_P0.8mm" (layer "F.Cu") + (tedit 5B589EC7) (tstamp 3569a675-b0cb-4be0-a0db-392f9a99c47b) + (at 185.25 108 -90) + (descr "54-lead TSOP typ II package") + (tags "TSOPII TSOP2") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/1dbbd042-b212-4933-895e-d1a10aa96c60") + (attr smd) + (fp_text reference "U9" (at 0 -12.5 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 0943844e-e9db-4bb4-9759-6355fae23bd3) + ) + (fp_text value "IS42S16320F-7TL" (at -1 0) (layer "F.Fab") + (effects (font (size 0.85 0.85) (thickness 0.15))) + (tstamp 4d3d7c21-d72d-4283-81e3-fbcbc13a77e4) + ) + (fp_text user "${REFERENCE}" (at 0 -12.5 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 5f709f6f-12c4-453d-bf75-0f5fffea6197) + ) + (fp_line (start -6.5 -10.9) (end -5.3 -10.9) (layer "F.SilkS") (width 0.12) (tstamp 2db8b3b4-dbae-4a17-a6c4-9453c11df1de)) + (fp_line (start 5.3 -11.3) (end 5.3 -10.9) (layer "F.SilkS") (width 0.12) (tstamp 3f938632-c70f-4d5d-bb12-35f99a973aba)) + (fp_line (start -5.3 -10.9) (end -5.3 -11.3) (layer "F.SilkS") (width 0.12) (tstamp 48dda84e-4a3e-495c-b7e1-5e05cef36ad4)) + (fp_line (start 5.3 10.9) (end 5.3 11.3) (layer "F.SilkS") (width 0.12) (tstamp 4b048f73-b14e-4436-afdc-7f211b0c8c88)) + (fp_line (start -5.3 11.3) (end 5.3 11.3) (layer "F.SilkS") (width 0.12) (tstamp 579acaf3-2159-4633-b2d4-d103be15d222)) + (fp_line (start -5.3 -11.3) (end 5.3 -11.3) (layer "F.SilkS") (width 0.12) (tstamp 6130b543-1809-43f5-ab62-b5597ee90e46)) + (fp_line (start -5.3 10.9) (end -5.3 11.3) (layer "F.SilkS") (width 0.12) (tstamp 77ea1956-d0f3-4551-9d06-ff4933665a9a)) + (fp_line (start 6.76 11.36) (end -6.76 11.36) (layer "F.CrtYd") (width 0.05) (tstamp 2a35fe98-eb7b-470a-b222-876b51f2c1db)) + (fp_line (start -6.76 -11.36) (end -6.76 11.36) (layer "F.CrtYd") (width 0.05) (tstamp 3f3aa41c-f266-4dff-b19a-90816b6b5473)) + (fp_line (start 6.76 -11.36) (end 6.76 11.36) (layer "F.CrtYd") (width 0.05) (tstamp 8b2b2b7c-24ef-4381-bcfb-9feae079ed02)) + (fp_line (start -6.76 -11.36) (end 6.76 -11.36) (layer "F.CrtYd") (width 0.05) (tstamp d992e988-08a3-4962-b4f8-4bbd4336db05)) + (fp_line (start 5.08 11.11) (end -5.08 11.11) (layer "F.Fab") (width 0.1) (tstamp 1c818187-7f0b-4564-a345-e558cdf3377a)) + (fp_line (start -5.08 11.11) (end -5.08 -10.11) (layer "F.Fab") (width 0.1) (tstamp 1f603d8f-2877-4b5a-a5d0-647e862f384d)) + (fp_line (start -4.08 -11.11) (end -5.08 -10.11) (layer "F.Fab") (width 0.1) (tstamp 37f8450c-f32c-4b28-b1bf-6ec9a1fab37b)) + (fp_line (start 5.08 -11.11) (end 5.08 11.11) (layer "F.Fab") (width 0.1) (tstamp 3acc931e-9895-4229-b2ed-5352a1613984)) + (fp_line (start -4.08 -11.11) (end 5.08 -11.11) (layer "F.Fab") (width 0.1) (tstamp 3e88e2f5-4c17-4d6e-908c-c044bd75030d)) + (pad "1" smd rect locked (at -5.75 -10.4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 50 "+3V3") (pinfunction "VDD") (pintype "power_in") (tstamp 5f015615-363e-454d-a7f8-70ea69096699)) + (pad "2" smd rect locked (at -5.75 -9.6 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 75 "SDRAM_DQ0") (pinfunction "DQ0") (pintype "bidirectional") (tstamp b12b3287-6a56-4e01-b8e0-8658ad7ffd1c)) + (pad "3" smd rect locked (at -5.75 -8.8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 50 "+3V3") (pinfunction "VDDQ") (pintype "power_in") (tstamp 28bd18a5-9b33-4038-a0af-da36e24824e6)) + (pad "4" smd rect locked (at -5.75 -8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 76 "SDRAM_DQ1") (pinfunction "DQ1") (pintype "bidirectional") (tstamp 38ef79d4-9866-46b3-9f04-bfffd82940d3)) + (pad "5" smd rect locked (at -5.75 -7.2 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 77 "SDRAM_DQ2") (pinfunction "DQ2") (pintype "bidirectional") (tstamp dd40add6-9921-4d50-ae26-70210e041720)) + (pad "6" smd rect locked (at -5.75 -6.4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "VSSQ") (pintype "power_in") (tstamp 852de616-25ab-411e-856a-4d6351337f69)) + (pad "7" smd rect locked (at -5.75 -5.6 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 78 "SDRAM_DQ3") (pinfunction "DQ3") (pintype "bidirectional") (tstamp cbd3c3ed-aa7c-4f78-b739-bf35baeef29c)) + (pad "8" smd rect locked (at -5.75 -4.8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 79 "SDRAM_DQ4") (pinfunction "DQ4") (pintype "bidirectional") (tstamp b2a37688-0956-428a-adb8-5c91c5bd24f0)) + (pad "9" smd rect locked (at -5.75 -4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 50 "+3V3") (pinfunction "VDDQ") (pintype "passive") (tstamp 7ee33faf-b3a3-4974-9657-ed78284004c3)) + (pad "10" smd rect locked (at -5.75 -3.2 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 80 "SDRAM_DQ5") (pinfunction "DQ5") (pintype "bidirectional") (tstamp fcc50d0c-3ff1-4afd-9f35-00e4c654f1bc)) + (pad "11" smd rect locked (at -5.75 -2.4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 81 "SDRAM_DQ6") (pinfunction "DQ6") (pintype "bidirectional") (tstamp bdf1eca6-c38c-41d6-80c0-4569e3766526)) + (pad "12" smd rect locked (at -5.75 -1.6 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "VSSQ") (pintype "passive") (tstamp ae65bf24-6650-4bbb-95e9-c25e3a273e9a)) + (pad "13" smd rect locked (at -5.75 -0.8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 82 "SDRAM_DQ7") (pinfunction "DQ7") (pintype "bidirectional") (tstamp a5c2e956-a68d-429f-948a-1a628aedac57)) + (pad "14" smd rect locked (at -5.75 0 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 50 "+3V3") (pinfunction "VDD") (pintype "passive") (tstamp 88345bc2-0f1b-491a-ae2c-924fa843196c)) + (pad "15" smd rect locked (at -5.75 0.8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 96 "SDRAM_DQML") (pinfunction "DQML") (pintype "input") (tstamp 5824266a-a369-422a-9600-a3eb92279604)) + (pad "16" smd rect locked (at -5.75 1.6 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 97 "~{SDRAM_WE}") (pinfunction "~{WE}") (pintype "input") (tstamp 3fdf0484-f459-41a3-a05e-c884763dc620)) + (pad "17" smd rect locked (at -5.75 2.4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 98 "~{SDRAM_CAS}") (pinfunction "~{CAS}") (pintype "input") (tstamp 78df79b4-e93f-4281-b3a2-344bef6d509b)) + (pad "18" smd rect locked (at -5.75 3.2 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 99 "~{SDRAM_RAS}") (pinfunction "~{RAS}") (pintype "input") (tstamp 6c005def-503e-4249-9bba-4e7c525d0715)) + (pad "19" smd rect locked (at -5.75 4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 100 "~{SDRAM_CS}") (pinfunction "~{CS}") (pintype "input") (tstamp 6fb4a2bb-3f87-4f4d-a22f-69444b9efa95)) + (pad "20" smd rect locked (at -5.75 4.8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 101 "SDRAM_BA0") (pinfunction "BA0") (pintype "input") (tstamp e0181fbb-44cb-42ec-a95c-9432a2d28b6b)) + (pad "21" smd rect locked (at -5.75 5.6 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 102 "SDRAM_BA1") (pinfunction "BA1") (pintype "input") (tstamp db1aca0d-af6c-4048-b5ec-8fabb7176bd9)) + (pad "22" smd rect locked (at -5.75 6.4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 103 "SDRAM_A10") (pinfunction "A10") (pintype "input") (tstamp 70b7cf44-f5c8-4973-bf33-fc29c7f5f099)) + (pad "23" smd rect locked (at -5.75 7.2 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 104 "SDRAM_A0") (pinfunction "A0") (pintype "input") (tstamp b13b5cd9-92ec-43c9-8de0-4a5b1bb62d12)) + (pad "24" smd rect locked (at -5.75 8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 105 "SDRAM_A1") (pinfunction "A1") (pintype "input") (tstamp c48ebe35-977f-41f5-885c-19b5c23b981e)) + (pad "25" smd rect locked (at -5.75 8.8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 106 "SDRAM_A2") (pinfunction "A2") (pintype "input") (tstamp 5966ccb5-6091-41ee-a777-a309a7c7c4aa)) + (pad "26" smd rect locked (at -5.75 9.6 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 107 "SDRAM_A3") (pinfunction "A3") (pintype "input") (tstamp 97d25595-1fae-41a3-a3d1-372cfd2cba35)) + (pad "27" smd rect locked (at -5.75 10.4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 50 "+3V3") (pinfunction "VDD") (pintype "passive") (tstamp 997d6987-ff56-424c-ad1a-d5da1499917b)) + (pad "28" smd rect locked (at 5.75 10.4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "VSS") (pintype "power_in") (tstamp 0e585cfd-6ec6-4f6b-b84d-42aa0fccca26)) + (pad "29" smd rect locked (at 5.75 9.6 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 108 "SDRAM_A4") (pinfunction "A4") (pintype "input") (tstamp 3112f0be-6e7e-498a-bb91-eaa0b6c644ee)) + (pad "30" smd rect locked (at 5.75 8.8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 109 "SDRAM_A5") (pinfunction "A5") (pintype "input") (tstamp 0b9bc5d7-cd1c-4720-8969-3e474ddf6ad1)) + (pad "31" smd rect locked (at 5.75 8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 110 "SDRAM_A6") (pinfunction "A6") (pintype "input") (tstamp b73d56ba-cea6-4c53-9ab2-933f39d3b2fb)) + (pad "32" smd rect locked (at 5.75 7.2 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 111 "SDRAM_A7") (pinfunction "A7") (pintype "input") (tstamp ad2c5621-3ea4-491f-a412-53ef716ccc21)) + (pad "33" smd rect locked (at 5.75 6.4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 112 "SDRAM_A8") (pinfunction "A8") (pintype "input") (tstamp 8d7fb390-3777-4a85-a08a-4a1a530596c5)) + (pad "34" smd rect locked (at 5.75 5.6 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 113 "SDRAM_A9") (pinfunction "A9") (pintype "input") (tstamp 67706e84-ca67-44c1-a3e8-e49b6f7b0c39)) + (pad "35" smd rect locked (at 5.75 4.8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 114 "SDRAM_A11") (pinfunction "A11") (pintype "input") (tstamp 98a1a906-646d-4422-80dd-67ac4ce8faae)) + (pad "36" smd rect locked (at 5.75 4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 115 "SDRAM_A12") (pinfunction "A12") (pintype "input") (tstamp 1bd8cbac-3967-4159-8ebd-88505dae720d)) + (pad "37" smd rect locked (at 5.75 3.2 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 50 "+3V3") (pinfunction "CKE") (pintype "input") (tstamp 9a9f33ed-dd08-4663-bd57-2053666f5701)) + (pad "38" smd rect locked (at 5.75 2.4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 116 "SDRAM_CLK") (pinfunction "CLK") (pintype "input") (tstamp f6a5bb01-c22e-4666-87ce-57350a78a41f)) + (pad "39" smd rect locked (at 5.75 1.6 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 117 "SDRAM_DQMH") (pinfunction "DQMH") (pintype "input") (tstamp 22cd7458-fd06-4a69-bb2c-16d9c2720130)) + (pad "40" smd rect locked (at 5.75 0.8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 153 "unconnected-(U9-Pad40)") (pinfunction "NC") (pintype "no_connect") (tstamp 885eda4c-6927-4676-8b39-bf9f49342299)) + (pad "41" smd rect locked (at 5.75 0 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "VSS") (pintype "passive") (tstamp f63f2163-682a-42ca-a04b-00168ad5bb67)) + (pad "42" smd rect locked (at 5.75 -0.8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 83 "SDRAM_DQ8") (pinfunction "DQ8") (pintype "bidirectional") (tstamp c156b17a-a161-4968-9ba0-2accbc802849)) + (pad "43" smd rect locked (at 5.75 -1.6 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 50 "+3V3") (pinfunction "VDDQ") (pintype "passive") (tstamp d8afa97c-380b-43f8-ab44-690c6dd1ba1d)) + (pad "44" smd rect locked (at 5.75 -2.4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 84 "SDRAM_DQ9") (pinfunction "DQ9") (pintype "bidirectional") (tstamp ebf84d39-2a52-473a-bd21-5a2b656be129)) + (pad "45" smd rect locked (at 5.75 -3.2 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 85 "SDRAM_DQ10") (pinfunction "DQ10") (pintype "bidirectional") (tstamp e568cd52-0af2-41cd-a7b4-039c4253edf7)) + (pad "46" smd rect locked (at 5.75 -4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "VSSQ") (pintype "passive") (tstamp ddebaeeb-3022-4081-a9a0-f277a2c3f1db)) + (pad "47" smd rect locked (at 5.75 -4.8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 86 "SDRAM_DQ11") (pinfunction "DQ11") (pintype "bidirectional") (tstamp 6acac58c-5251-4041-82ce-094ed7c2e520)) + (pad "48" smd rect locked (at 5.75 -5.6 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 87 "SDRAM_DQ12") (pinfunction "DQ12") (pintype "bidirectional") (tstamp aa7fb882-7cd9-4d66-9922-925e6ca28194)) + (pad "49" smd rect locked (at 5.75 -6.4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 50 "+3V3") (pinfunction "VDDQ") (pintype "passive") (tstamp 6dd71dcc-61f6-4b1d-88b4-668417bce2af)) + (pad "50" smd rect locked (at 5.75 -7.2 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 88 "SDRAM_DQ13") (pinfunction "DQ13") (pintype "bidirectional") (tstamp 3b5599a8-c0df-44a9-9315-a4311cf567e2)) + (pad "51" smd rect locked (at 5.75 -8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 89 "SDRAM_DQ14") (pinfunction "DQ14") (pintype "bidirectional") (tstamp cbcd59c0-ac96-448b-b3d5-73ab0319cd0e)) + (pad "52" smd rect locked (at 5.75 -8.8 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "VSSQ") (pintype "passive") (tstamp 666f29c3-79ae-4c20-bc17-9624861233cc)) + (pad "53" smd rect locked (at 5.75 -9.6 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 90 "SDRAM_DQ15") (pinfunction "DQ15") (pintype "bidirectional") (tstamp a5a044e2-4f50-4d3a-b2b2-85c3272736d0)) + (pad "54" smd rect locked (at 5.75 -10.4 270) (size 1.51 0.458) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "VSS") (pintype "passive") (tstamp ac2b0e6d-7bdc-448e-b106-8b192d48ce75)) + (model "${KICAD6_3DMODEL_DIR}/Package_SO.3dshapes/TSOP-II-54_22.2x10.16mm_P0.8mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_SO:SOIC-8_5.23x5.23mm_P1.27mm" (layer "F.Cu") + (tedit 5D9F72B1) (tstamp 3d87b7d0-0327-4a61-b85c-7794ea82c7dd) + (at 146.5 84.75 -90) + (descr "SOIC, 8 Pin (http://www.winbond.com/resource-files/w25q32jv%20revg%2003272018%20plus.pdf#page=68), generated with kicad-footprint-generator ipc_gullwing_generator.py") + (tags "SOIC SO") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/0fc6d60f-b51b-46bd-9f02-cc292d56b643") + (attr smd) + (fp_text reference "U5" (at 0 -4 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 67ee4554-f5f1-48be-bd4c-52c87eff5c0b) + ) + (fp_text value "W25Q128JVSIQ" (at 0 3.56 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 9e81a833-85a4-4e52-bfe8-8add28a24381) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp dbc23591-a27c-4594-80fa-27289fc43c4a) + ) + (fp_line (start 0 2.725) (end 2.725 2.725) (layer "F.SilkS") (width 0.12) (tstamp 154b8215-2356-43f6-8ca3-42c6b0db63d0)) + (fp_line (start -2.725 -2.465) (end -4.4 -2.465) (layer "F.SilkS") (width 0.12) (tstamp 1eac5711-3d08-4bd2-b36d-1f40e1383058)) + (fp_line (start 0 2.725) (end -2.725 2.725) (layer "F.SilkS") (width 0.12) (tstamp 54799084-9552-470e-8da7-d76949504506)) + (fp_line (start 2.725 -2.725) (end 2.725 -2.465) (layer "F.SilkS") (width 0.12) (tstamp 62dbf120-3c54-410c-9b7b-d0deec624e4a)) + (fp_line (start -2.725 -2.725) (end -2.725 -2.465) (layer "F.SilkS") (width 0.12) (tstamp 7706c3c4-5447-4429-a506-3603d13075b6)) + (fp_line (start 0 -2.725) (end 2.725 -2.725) (layer "F.SilkS") (width 0.12) (tstamp 78b01543-a73d-43e1-8f18-4132aaef32a5)) + (fp_line (start 2.725 2.725) (end 2.725 2.465) (layer "F.SilkS") (width 0.12) (tstamp 85092c6a-c7a0-421a-970c-72b028a197f7)) + (fp_line (start -2.725 2.725) (end -2.725 2.465) (layer "F.SilkS") (width 0.12) (tstamp c0911561-f597-436b-ba64-8b9fe00d794c)) + (fp_line (start 0 -2.725) (end -2.725 -2.725) (layer "F.SilkS") (width 0.12) (tstamp e7ec9e14-86f3-4bf2-bbb6-ebdff59f9af2)) + (fp_line (start -4.65 2.86) (end 4.65 2.86) (layer "F.CrtYd") (width 0.05) (tstamp 5f34bded-d6bf-4d97-aade-f88f5a7b125d)) + (fp_line (start -4.65 -2.86) (end -4.65 2.86) (layer "F.CrtYd") (width 0.05) (tstamp 76155f09-d563-4279-9cf5-a22a1af4d3a9)) + (fp_line (start 4.65 2.86) (end 4.65 -2.86) (layer "F.CrtYd") (width 0.05) (tstamp c46c33f5-fbcf-4d09-8c71-c15f50cf62b9)) + (fp_line (start 4.65 -2.86) (end -4.65 -2.86) (layer "F.CrtYd") (width 0.05) (tstamp db88fbf2-8858-4a10-b108-f47f2823dae6)) + (fp_line (start -1.615 -2.615) (end 2.615 -2.615) (layer "F.Fab") (width 0.1) (tstamp 7c322a3d-3b2e-48b6-864e-2f0bc734f369)) + (fp_line (start -2.615 2.615) (end -2.615 -1.615) (layer "F.Fab") (width 0.1) (tstamp 8e541640-7e47-4c0f-936c-01914650c8f3)) + (fp_line (start -2.615 -1.615) (end -1.615 -2.615) (layer "F.Fab") (width 0.1) (tstamp c1cf6237-365e-4a5b-9b32-5c3586e05d3b)) + (fp_line (start 2.615 2.615) (end -2.615 2.615) (layer "F.Fab") (width 0.1) (tstamp e1313779-0bc0-42aa-882e-a64dab59cde1)) + (fp_line (start 2.615 -2.615) (end 2.615 2.615) (layer "F.Fab") (width 0.1) (tstamp e744ec21-3d1c-4727-89bd-be2bbdd60fab)) + (pad "1" smd roundrect (at -3.6 -1.905 270) (size 1.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 53 "FLASH_CS") (pinfunction "~{CS}") (pintype "input") (tstamp 4229f0c5-982b-45a4-9865-79adcf01baa0)) + (pad "2" smd roundrect (at -3.6 -0.635 270) (size 1.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 54 "FLASH_IO1") (pinfunction "DO(IO1)") (pintype "bidirectional") (tstamp b52003f2-1fc1-448b-87ef-8f69b8ecc342)) + (pad "3" smd roundrect (at -3.6 0.635 270) (size 1.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 55 "FLASH_IO2") (pinfunction "IO2") (pintype "bidirectional") (tstamp c4a21fd3-a6ae-44a9-bc78-0e41f084f553)) + (pad "4" smd roundrect (at -3.6 1.905 270) (size 1.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 1552cb74-e6ef-475b-be3a-ac1973bcee7d)) + (pad "5" smd roundrect (at 3.6 1.905 270) (size 1.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 56 "FLASH_IO0") (pinfunction "DI(IO0)") (pintype "bidirectional") (tstamp b0d88b62-d36e-4c30-ae05-19c227bab69d)) + (pad "6" smd roundrect (at 3.6 0.635 270) (size 1.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 57 "FLASH_CLK") (pinfunction "CLK") (pintype "input") (tstamp a73ff104-0c6d-45d0-bae7-11c93ea99539)) + (pad "7" smd roundrect (at 3.6 -0.635 270) (size 1.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 58 "FLASH_IO3") (pinfunction "IO3") (pintype "bidirectional") (tstamp 681a9760-4754-4abd-8a6a-2f3a3629407e)) + (pad "8" smd roundrect (at 3.6 -1.905 270) (size 1.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCC") (pintype "power_in") (tstamp c8568d2f-e1ae-470b-b325-7b36a73728f4)) + (model "${KICAD6_3DMODEL_DIR}/Package_SO.3dshapes/SOIC-8_5.23x5.23mm_P1.27mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + (model "${KICAD6_3DMODEL_DIR}/Package_SO.3dshapes/SOIC-8_5.275x5.275mm_P1.27mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 46ab32b8-1032-44d9-820c-b6bc88476aea) + (at 114.75 110.75 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/3994f405-55be-4a04-8c8b-3ed658926389") + (attr smd) + (fp_text reference "C3" (at -2.75 0 90) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 699aa7ff-8e59-4953-ae79-ec90b7824a00) + ) + (fp_text value "100nF" (at 0 1.43 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 82755e4f-322a-441a-97fd-9aceb494e216) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 0075295a-0965-4bc5-baf8-bff90524fab4) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "F.SilkS") (width 0.12) (tstamp 40ca54ea-c3e2-4923-9639-62102b235e3a)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "F.SilkS") (width 0.12) (tstamp 7298b1f3-e942-4639-a58d-d926c5e7bd50)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 51228ea8-d525-4e8e-a9ba-4129c3cbd2e6)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp c524fd11-b781-45ac-a170-fb94f60ecb7b)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp e5db09fe-e696-44c2-bbe0-81bdccbc2e79)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp efafef28-ad36-40f5-b1dc-55510bdfaf7f)) + (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 523d7903-cf1f-4180-9747-3272a4e9af9f)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 552db494-dcf1-44a5-947e-c7babf8a5e96)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp a9b190da-abd3-4b10-b548-f710a4cdd0fe)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp b8b9ee20-71d0-4b45-bd87-e0f103e248fb)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 136 "Net-(C3-Pad1)") (pintype "passive") (tstamp 4da46d09-ed13-4feb-a661-59020f706bb9)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 0feaac64-2f39-43f5-bbbd-92045438f9df)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "TestPoint:TestPoint_Pad_D1.5mm" (layer "F.Cu") + (tedit 5A0F774F) (tstamp 471d4a15-e09c-4258-a0f0-9f08c41daa6d) + (at 138 116) + (descr "SMD pad as test Point, diameter 1.5mm") + (tags "test point SMD pad") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (property "exclude_from_bom" "") + (path "/a0e5adb5-40f9-4fc8-a069-cb599973b556") + (attr exclude_from_pos_files exclude_from_bom) + (fp_text reference "3V1" (at -3 0) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp a7d6abd0-7721-495b-8cc3-8ff938566682) + ) + (fp_text value "TestPoint" (at 0 1.75) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp ef0accae-22ab-4ca9-840e-b46e8f82536a) + ) + (fp_text user "${REFERENCE}" (at 0 -1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp c49a13e4-2a12-4535-88b9-5f13482d297e) + ) + (fp_circle (center 0 0) (end 0 0.95) (layer "F.SilkS") (width 0.12) (fill none) (tstamp dc9b0507-4e8e-4e6a-a15b-39da285d8819)) + (fp_circle (center 0 0) (end 1.25 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp 00c8e1d8-0f7f-4f85-8815-66f877ff50cd)) + (pad "1" smd circle (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") + (net 50 "+3V3") (pinfunction "1") (pintype "passive") (tstamp 8196fd0a-29fc-4ff7-824c-fe8afbf83e05)) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 54629ca9-acfd-4bad-b43d-04f3f31f4c01) + (at 107.825 118.75) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/38d3e0bc-e7f3-4fcf-b28b-1dd2ebbed152") + (attr smd) + (fp_text reference "R2" (at 2.675 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp c06e6313-c1b4-49de-9793-a5336700f67f) + ) + (fp_text value "330R" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 864eabb9-ab90-4061-8bcd-fa1fd48180d1) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 4615c542-22e5-459c-a5f2-3eabae50c61b) + ) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp d93d89b0-746e-4b5e-a2ea-6758bd3f7f18)) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "F.SilkS") (width 0.12) (tstamp f6598baa-00f6-444e-a2fa-0bbbeb8c4120)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp a077295b-18d4-462e-865d-538c806591de)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp be8e6e49-3bb6-408e-9ad6-d864e3a3b49e)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp d5c36b9a-8d01-472f-95b9-c79e08ece539)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp df4be10f-e2ac-450e-a8a4-31da50cc4c12)) + (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 77a0c620-6862-49f5-a29c-d04df66baf07)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp a42c4a8a-e618-4405-82cb-10c94794ebba)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp c718b352-4903-4a34-b01d-33110fff350e)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp ed3bfc3a-2eda-4e0d-86c4-cc6be50375e5)) + (pad "1" smd roundrect (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 141 "Net-(R1-Pad2)") (pintype "passive") (tstamp 32474200-8d4b-4b94-8591-e0a18b46a15d)) + (pad "2" smd roundrect (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 34207fe7-a60a-40bf-b69f-4d6f617f6d87)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_Card:microSD_HC_Molex_104031-0811" (layer "F.Cu") + (tedit 5D235007) (tstamp 667fee13-a73e-466d-9065-50dae901870f) + (at 194.25 89.75 -90) + (descr "1.10mm Pitch microSD Memory Card Connector, Surface Mount, Push-Pull Type, 1.42mm Height, with Detect Switch (https://www.molex.com/pdm_docs/sd/1040310811_sd.pdf)") + (tags "microSD SD molex") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/09e47e41-fce2-4be6-a894-63ccba0f1215") + (attr smd) + (fp_text reference "J4" (at 0 7.5) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 5b5064d7-9897-4b07-affc-9b47f951376b) + ) + (fp_text value "104031-0811" (at -8 0.0125 180) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 6e3e3ca5-5581-4472-ae72-6380a85ce46e) + ) + (fp_text user "${REFERENCE}" (at 0.02 7.4125 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp a890345e-35f2-4047-b120-b5b53682383f) + ) + (fp_line (start 6.11 5.82) (end 6.11 -4) (layer "F.SilkS") (width 0.12) (tstamp 2ae4d102-0a25-4f3d-8c64-6fd64eac129c)) + (fp_line (start -6.07 1.4) (end -6.07 3.7) (layer "F.SilkS") (width 0.12) (tstamp 2fdb9d50-be10-4637-8b92-410c098ddccb)) + (fp_line (start -4.59 -5.82) (end -3.73 -5.82) (layer "F.SilkS") (width 0.12) (tstamp 4da3e9dc-4718-4d42-a2a0-46f799c8dd45)) + (fp_line (start -6.07 -4.45) (end -6.07 0) (layer "F.SilkS") (width 0.12) (tstamp 7f514ac8-a803-4257-b075-40189106dd67)) + (fp_line (start -6.07 5.1) (end -6.07 5.82) (layer "F.SilkS") (width 0.12) (tstamp c500672c-ac70-4637-bf13-297c9e0922e8)) + (fp_line (start -6.07 5.82) (end -3.39 5.82) (layer "F.SilkS") (width 0.12) (tstamp c7e5d860-c237-41a7-8b59-18f12766170a)) + (fp_line (start -1.09 5.82) (end 2.58 5.82) (layer "F.SilkS") (width 0.12) (tstamp ccac5b5e-4b18-4a79-a8ce-1b5ceb4334d9)) + (fp_line (start 4.88 5.82) (end 6.11 5.82) (layer "F.SilkS") (width 0.12) (tstamp ff1aff7d-0795-4702-945c-9516f4d1a7a9)) + (fp_line (start -6.84 -6.5) (end 6.84 -6.5) (layer "F.CrtYd") (width 0.05) (tstamp 5adee326-d5cc-4f8d-836c-4e36240914ea)) + (fp_line (start 6.84 6.55) (end -6.84 6.55) (layer "F.CrtYd") (width 0.05) (tstamp 93eb9814-a014-49e6-bb3e-65916b82bedb)) + (fp_line (start -6.84 6.55) (end -6.84 -6.5) (layer "F.CrtYd") (width 0.05) (tstamp a1a218b6-28f7-4b36-a492-dea597f3b104)) + (fp_line (start 6.84 -6.5) (end 6.84 6.55) (layer "F.CrtYd") (width 0.05) (tstamp f5e91cc7-d5d1-4f08-8fd6-fef590ba102c)) + (fp_line (start -5.955 -5.7) (end -5.955 5.7) (layer "F.Fab") (width 0.1) (tstamp 11a20e0f-5338-4474-bbdf-d90f28ae3b46)) + (fp_line (start 4.4 -4.3) (end -3.26 -4.3) (layer "F.Fab") (width 0.1) (tstamp 26f90e57-f21a-4c2c-86b8-a88b59b68fd7)) + (fp_line (start 5.995 5.7) (end -5.955 5.7) (layer "F.Fab") (width 0.1) (tstamp 34c4488d-6a86-4292-b7a5-847359a5be37)) + (fp_line (start 5.995 -5.7) (end 5.21 -5.7) (layer "F.Fab") (width 0.1) (tstamp 3aea3007-db39-48fc-9ee6-388a35ba3a46)) + (fp_line (start -5.955 -5.7) (end -4.26 -5.7) (layer "F.Fab") (width 0.1) (tstamp 434dbc5c-cb52-4ce8-adea-2b5e940bdbb1)) + (fp_line (start -5.405 -9.2) (end -5.405 -5.7) (layer "F.Fab") (width 0.1) (tstamp 6700379e-7eeb-493e-854d-62d435501012)) + (fp_line (start 4.9 -5.4) (end 4.9 -4.8) (layer "F.Fab") (width 0.1) (tstamp 83091e02-f687-4c79-a3c1-22a3f97370a6)) + (fp_line (start -3.76 -4.8) (end -3.76 -5.2) (layer "F.Fab") (width 0.1) (tstamp d87658c3-d1d8-4658-82af-bd3017952c04)) + (fp_line (start 5.995 5.7) (end 5.995 -5.7) (layer "F.Fab") (width 0.1) (tstamp e16282b1-c59e-42a3-a572-a445e5203454)) + (fp_line (start 5.595 -5.7) (end 5.595 -9.2) (layer "F.Fab") (width 0.1) (tstamp e248f1d0-67cd-469e-b2b9-d29bdd517b5d)) + (fp_line (start -4.905 -9.7) (end 5.095 -9.7) (layer "F.Fab") (width 0.1) (tstamp f35fe5ca-f3f4-4c3e-a802-c0fdd39fc2a8)) + (fp_arc (start 5.095 -9.7) (mid 5.448553 -9.553553) (end 5.595 -9.2) (layer "F.Fab") (width 0.1) (tstamp 09c780eb-cd6d-4d2f-a3b4-5e253f2ea9d5)) + (fp_arc (start -4.26 -5.7) (mid -3.906447 -5.553553) (end -3.76 -5.2) (layer "F.Fab") (width 0.1) (tstamp 384874da-0e76-4c32-8847-1771499c5cc2)) + (fp_arc (start 4.9 -4.8) (mid 4.753553 -4.446447) (end 4.4 -4.3) (layer "F.Fab") (width 0.1) (tstamp 7101c69b-dd19-4bf1-bb0a-108aa3dc9beb)) + (fp_arc (start 4.9 -5.4) (mid 4.987868 -5.612132) (end 5.2 -5.7) (layer "F.Fab") (width 0.1) (tstamp c7aabc47-5d6e-4b79-9f53-9d0172d5560f)) + (fp_arc (start -5.405 -9.2) (mid -5.258553 -9.553553) (end -4.905 -9.7) (layer "F.Fab") (width 0.1) (tstamp df0f7989-7bed-44ea-8d5c-dccdbb87ab2f)) + (fp_arc (start -3.26 -4.3) (mid -3.613553 -4.446447) (end -3.76 -4.8) (layer "F.Fab") (width 0.1) (tstamp fe7c43cf-d085-4d04-815e-e11c2e1ebf1a)) + (pad "1" smd rect locked (at -3.105 -5.45 270) (size 0.85 1.1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 30 "SD_DAT2") (pinfunction "DAT2") (pintype "bidirectional") (tstamp a8001b0a-90f4-41c0-9e90-7de61cb33a20)) + (pad "2" smd rect locked (at -2.005 -5.45 270) (size 0.85 1.1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 31 "SD_DAT3") (pinfunction "DAT3/CD") (pintype "bidirectional") (tstamp 01d4e3ad-61fc-4426-affa-e230f9fb216f)) + (pad "3" smd rect locked (at -0.905 -5.45 270) (size 0.85 1.1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 32 "SD_CMD") (pinfunction "CMD") (pintype "input") (tstamp 2f6ac8f8-0dac-4b3a-ac6c-ea098d585e18)) + (pad "4" smd rect locked (at 0.195 -5.45 270) (size 0.85 1.1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 50 "+3V3") (pinfunction "VDD") (pintype "power_in") (tstamp abf3028d-7209-432b-b7bb-a0b7eaa79757)) + (pad "5" smd rect locked (at 1.295 -5.45 270) (size 0.85 1.1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 33 "SD_CLK") (pinfunction "CLK") (pintype "input") (tstamp 0f7a212b-a487-46e3-8a9a-73aa78b3787f)) + (pad "6" smd rect locked (at 2.395 -5.45 270) (size 0.85 1.1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "VSS") (pintype "power_in") (tstamp 79bc4e25-69ec-493f-bdf4-592f01af9f21)) + (pad "7" smd rect locked (at 3.495 -5.45 270) (size 0.85 1.1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 34 "SD_DAT0") (pinfunction "DAT0") (pintype "bidirectional") (tstamp e421fba9-c9c2-4df7-90fc-dd86a3cd1504)) + (pad "8" smd rect locked (at 4.545 -5.45 270) (size 0.75 1.1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 35 "SD_DAT1") (pinfunction "DAT1") (pintype "bidirectional") (tstamp 2027144f-771f-46c3-b6ca-52c6c8df2d36)) + (pad "9" smd rect locked (at -5.74 0.7 270) (size 1.2 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 36 "SD_DET") (pinfunction "DET_B") (pintype "passive") (tstamp ae329257-37d5-43c3-9759-ce77b26ddd44)) + (pad "10" smd rect locked (at -5.74 4.4 270) (size 1.2 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "DET_A") (pintype "passive") (tstamp 109a4694-154b-4660-b557-a9872a22bcf1)) + (pad "11" smd rect locked (at -5.565 -5.325 270) (size 1.55 1.35) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp 0c6fec6c-34dd-47ec-a6bd-46a2bbbf10aa)) + (pad "11" smd rect locked (at 5.755 -5.1 270) (size 1.17 1.8) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp 0d251e07-71ac-4ae3-a0f7-94ec4accabe1)) + (pad "11" smd rect locked (at 3.73 5.375 270) (size 1.9 1.35) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp 64eba968-9d48-4557-a188-a228a6458787)) + (pad "11" smd rect locked (at -2.24 5.375 270) (size 1.9 1.35) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp 97fd7d31-678b-44f7-94b3-a6dbc8e2f182)) + (model "${KICAD6_3DMODEL_DIR}/Connector_Card.3dshapes/microSD_HC_Molex_104031-0811.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + (model "${KIPRJMOD}/sc64v2.3dshapes/1040310811.stp" + (offset (xyz 44.485 -1.7 0.61)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 180)) + ) + ) + + (footprint "Package_QFP:TQFP-144_20x20mm_P0.5mm" (layer "F.Cu") + (tedit 5D9F72B1) (tstamp 66a6c512-7433-4466-b35a-68e49d351a5e) + (at 158.25 105) + (descr "TQFP, 144 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py") + (tags "TQFP QFP") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/7adce0b2-9540-4d77-8cf1-4df964c29563") + (attr smd) + (fp_text reference "U8" (at 0 -12.35) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 5446b27e-a028-47da-9660-5b63165e967a) + ) + (fp_text value "LCMXO2-7000Hx-xTG144x" (at 0 12.35) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp c2037d43-7f25-42d0-b395-5b43175f9944) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp b341dfd3-46d2-4fd8-b31c-966da7e6faf5) + ) + (fp_line (start 10.11 -10.11) (end 10.11 -9.16) (layer "F.SilkS") (width 0.12) (tstamp 1437ba0b-0053-41eb-bc61-cbccf6279fc9)) + (fp_line (start -9.16 -10.11) (end -10.11 -10.11) (layer "F.SilkS") (width 0.12) (tstamp 2b886276-dd55-4b24-9805-ffa937415d2c)) + (fp_line (start 9.16 -10.11) (end 10.11 -10.11) (layer "F.SilkS") (width 0.12) (tstamp 4888375b-5458-4871-a1fa-505252626301)) + (fp_line (start -9.16 10.11) (end -10.11 10.11) (layer "F.SilkS") (width 0.12) (tstamp 573709ba-970a-43b6-bdd2-b76923af50ff)) + (fp_line (start -10.11 -10.11) (end -10.11 -9.16) (layer "F.SilkS") (width 0.12) (tstamp 712360a5-aaf8-4267-800c-0958b8a0ea4d)) + (fp_line (start 9.16 10.11) (end 10.11 10.11) (layer "F.SilkS") (width 0.12) (tstamp a15b1a81-421d-431c-975d-5ca2fb5503b1)) + (fp_line (start -10.11 10.11) (end -10.11 9.16) (layer "F.SilkS") (width 0.12) (tstamp c8928d2d-8cea-43ac-afea-ea4baec6d359)) + (fp_line (start -10.11 -9.16) (end -11.4 -9.16) (layer "F.SilkS") (width 0.12) (tstamp e2e6cccb-54a1-4e96-9738-4d65179c25dd)) + (fp_line (start 10.11 10.11) (end 10.11 9.16) (layer "F.SilkS") (width 0.12) (tstamp fcd0e196-8d7e-4c4c-a99c-c0d8a5f57856)) + (fp_line (start -9.15 11.65) (end -9.15 10.25) (layer "F.CrtYd") (width 0.05) (tstamp 03c52c21-9f81-4a19-9890-eb9cfb396402)) + (fp_line (start 0 11.65) (end 9.15 11.65) (layer "F.CrtYd") (width 0.05) (tstamp 0a7ad466-7b8b-4d6b-93ef-3281d9e54a91)) + (fp_line (start -10.25 10.25) (end -10.25 9.15) (layer "F.CrtYd") (width 0.05) (tstamp 30e6da1a-ec42-41f7-ae0a-ea640aeea44d)) + (fp_line (start -9.15 -10.25) (end -10.25 -10.25) (layer "F.CrtYd") (width 0.05) (tstamp 3292aeac-3252-4f8c-bd26-e21f54d3d5b1)) + (fp_line (start 10.25 10.25) (end 10.25 9.15) (layer "F.CrtYd") (width 0.05) (tstamp 3d91e159-b28f-4016-b781-d485dbd0a7a5)) + (fp_line (start -10.25 -9.15) (end -11.65 -9.15) (layer "F.CrtYd") (width 0.05) (tstamp 43ab088d-55f8-46b8-986c-bb03b3caee8e)) + (fp_line (start 10.25 9.15) (end 11.65 9.15) (layer "F.CrtYd") (width 0.05) (tstamp 49cb8972-6f22-4d13-a568-a1f0fbf7c0c8)) + (fp_line (start 9.15 11.65) (end 9.15 10.25) (layer "F.CrtYd") (width 0.05) (tstamp 6c3934dd-f810-43cc-8ae1-96240df64d43)) + (fp_line (start 10.25 -10.25) (end 10.25 -9.15) (layer "F.CrtYd") (width 0.05) (tstamp 6f2d24f7-ad92-48c4-acf3-fa47d8165bf8)) + (fp_line (start 11.65 -9.15) (end 11.65 0) (layer "F.CrtYd") (width 0.05) (tstamp 6f33e751-5043-4b65-8e41-ecfd62467ed0)) + (fp_line (start 0 -11.65) (end -9.15 -11.65) (layer "F.CrtYd") (width 0.05) (tstamp 71517e18-659e-4b8b-96d1-04596acf7ee1)) + (fp_line (start 0 -11.65) (end 9.15 -11.65) (layer "F.CrtYd") (width 0.05) (tstamp 74bfcd55-5e85-4660-be65-06062a0c760e)) + (fp_line (start -11.65 -9.15) (end -11.65 0) (layer "F.CrtYd") (width 0.05) (tstamp 7ad70d78-f911-4e78-bfa3-eb4384fdc5b5)) + (fp_line (start 9.15 -11.65) (end 9.15 -10.25) (layer "F.CrtYd") (width 0.05) (tstamp 7f6fba64-d703-43eb-b7f6-258edb7c6c13)) + (fp_line (start -9.15 -11.65) (end -9.15 -10.25) (layer "F.CrtYd") (width 0.05) (tstamp 850aa5f6-5bb1-4c2a-99c5-f3161b79c2ed)) + (fp_line (start 0 11.65) (end -9.15 11.65) (layer "F.CrtYd") (width 0.05) (tstamp 8fca82dc-76fc-4c97-bdbc-ecc655347bdd)) + (fp_line (start -10.25 9.15) (end -11.65 9.15) (layer "F.CrtYd") (width 0.05) (tstamp 933bdaf9-bdfa-49e6-9976-af82252c335b)) + (fp_line (start 9.15 -10.25) (end 10.25 -10.25) (layer "F.CrtYd") (width 0.05) (tstamp 985bbd29-6d41-4ae3-9f3e-e089452a70cf)) + (fp_line (start -11.65 9.15) (end -11.65 0) (layer "F.CrtYd") (width 0.05) (tstamp 9fb77340-8959-4e08-80d3-d396d0f40578)) + (fp_line (start 9.15 10.25) (end 10.25 10.25) (layer "F.CrtYd") (width 0.05) (tstamp a57a044f-1e0a-4f57-b98f-7a871f824575)) + (fp_line (start 11.65 9.15) (end 11.65 0) (layer "F.CrtYd") (width 0.05) (tstamp ba02f3db-57f7-4799-9ce3-03986dd885d6)) + (fp_line (start -10.25 -10.25) (end -10.25 -9.15) (layer "F.CrtYd") (width 0.05) (tstamp cd2bb6f9-575e-4667-9ed7-a872f550651d)) + (fp_line (start 10.25 -9.15) (end 11.65 -9.15) (layer "F.CrtYd") (width 0.05) (tstamp e9c78314-8654-4ecf-a53f-5325fdab5e45)) + (fp_line (start -9.15 10.25) (end -10.25 10.25) (layer "F.CrtYd") (width 0.05) (tstamp fce99f12-458b-4b11-8764-608b1da370db)) + (fp_line (start 10 10) (end -10 10) (layer "F.Fab") (width 0.1) (tstamp 064b9ab8-0beb-4dbf-ade3-e5bc4486b94b)) + (fp_line (start 10 -10) (end 10 10) (layer "F.Fab") (width 0.1) (tstamp 29e940a4-5585-4ada-9128-8f5117fdfd22)) + (fp_line (start -9 -10) (end 10 -10) (layer "F.Fab") (width 0.1) (tstamp 53279ea3-2f0b-40ec-b25e-0a09cafac841)) + (fp_line (start -10 10) (end -10 -9) (layer "F.Fab") (width 0.1) (tstamp 80fff2e6-73a5-4e2a-9349-b3401445275e)) + (fp_line (start -10 -9) (end -9 -10) (layer "F.Fab") (width 0.1) (tstamp c1cde119-1828-42e3-ba3f-bb14b24a1fe9)) + (pad "1" smd roundrect (at -10.6625 -8.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 129 "BUTTON") (pinfunction "PL3A/L_GPLLT_FB") (pintype "bidirectional") (tstamp 42431c3c-d404-476a-ab39-67c4ebc4b409)) + (pad "2" smd roundrect (at -10.6625 -8.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 125 "FTDI_C7") (pinfunction "PL3B/L_GPLLC_FB") (pintype "bidirectional") (tstamp a610b07c-7f3b-4c0e-9bb1-e2cb93d86394)) + (pad "3" smd roundrect (at -10.6625 -7.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 91 "FPGA_CLK") (pinfunction "PL4A/L_GPLLT_IN") (pintype "bidirectional") (tstamp 5ab6004f-4465-4571-8b2d-3382439f4946)) + (pad "4" smd roundrect (at -10.6625 -7.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 121 "FTDI_C6") (pinfunction "PL4B/L_GPLLC_IN") (pintype "bidirectional") (tstamp 6e949fce-de9f-4bf3-9185-14c0698c4776)) + (pad "5" smd roundrect (at -10.6625 -6.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 120 "FTDI_C5") (pinfunction "PL6A/PCLKT5_0") (pintype "bidirectional") (tstamp dfb29bdc-6736-44f8-89c0-a48dc27b37d0)) + (pad "6" smd roundrect (at -10.6625 -6.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 119 "FTDI_C4") (pinfunction "PL6B/PCLKC5_0") (pintype "bidirectional") (tstamp 633aafcb-e7f5-4f49-b90e-2af365a07e52)) + (pad "7" smd roundrect (at -10.6625 -5.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO5") (pintype "power_in") (tstamp c834efbe-45e0-42bb-931e-de0f2ded443b)) + (pad "8" smd roundrect (at -10.6625 -5.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp b0e1ba30-3d47-4cfc-b463-17bf7eb4384b)) + (pad "9" smd roundrect (at -10.6625 -4.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 118 "FTDI_C3") (pinfunction "PL8A") (pintype "bidirectional") (tstamp e526f61b-e3b2-4d3e-9288-0bfaf281b2d3)) + (pad "10" smd roundrect (at -10.6625 -4.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 69 "FTDI_C2") (pinfunction "PL8B") (pintype "bidirectional") (tstamp aaa9f8c5-595e-4132-8261-8afe673c2e15)) + (pad "11" smd roundrect (at -10.6625 -3.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 68 "FTDI_C1") (pinfunction "PL9A") (pintype "bidirectional") (tstamp 1fbc3851-58ff-483f-a7ba-e5bb11c0ff82)) + (pad "12" smd roundrect (at -10.6625 -3.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 67 "FTDI_C0") (pinfunction "PL9B") (pintype "bidirectional") (tstamp 88f2c5d0-ef3f-49a8-aa6f-586a595bc1a1)) + (pad "13" smd roundrect (at -10.6625 -2.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 66 "FTDI_D7") (pinfunction "PL10A") (pintype "bidirectional") (tstamp 0a8e5772-4e87-4c0e-ac55-8093e1186174)) + (pad "14" smd roundrect (at -10.6625 -2.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 65 "FTDI_D6") (pinfunction "PL10B") (pintype "bidirectional") (tstamp 52b33ec3-16e7-45be-84d8-729e484832c4)) + (pad "15" smd roundrect (at -10.6625 -1.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 64 "FTDI_D5") (pinfunction "PL11A") (pintype "bidirectional") (tstamp 89999550-331b-456c-b849-35cde1161a86)) + (pad "16" smd roundrect (at -10.6625 -1.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO4") (pintype "power_in") (tstamp 35db62c3-5d93-4309-9d77-e83edad225b9)) + (pad "17" smd roundrect (at -10.6625 -0.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 63 "FTDI_D4") (pinfunction "PL11B") (pintype "bidirectional") (tstamp 94c7e981-d805-45c6-8d0e-a325204dc389)) + (pad "18" smd roundrect (at -10.6625 -0.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 84ee3321-ec06-4133-b3a9-20a94c446fab)) + (pad "19" smd roundrect (at -10.6625 0.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 62 "FTDI_D3") (pinfunction "PL12A/PCLKT4_0") (pintype "bidirectional") (tstamp b947bf12-b4f5-4bd3-98b5-9933de05b6df)) + (pad "20" smd roundrect (at -10.6625 0.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 61 "FTDI_D2") (pinfunction "PL12B/PCLKC4_0") (pintype "bidirectional") (tstamp 6b92cad9-6d2f-47bc-840d-86983f23dbd1)) + (pad "21" smd roundrect (at -10.6625 1.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 60 "FTDI_D1") (pinfunction "PL15A") (pintype "bidirectional") (tstamp e95464ad-5115-4da7-9d42-07f7afedab43)) + (pad "22" smd roundrect (at -10.6625 1.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 59 "FTDI_D0") (pinfunction "PL15B") (pintype "bidirectional") (tstamp 5a7031ce-a2cb-49c2-9f46-45c089956e0d)) + (pad "23" smd roundrect (at -10.6625 2.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 123 "TEST1") (pinfunction "PL17A") (pintype "bidirectional") (tstamp d68a66cc-6d36-4a6e-808f-1c460e627892)) + (pad "24" smd roundrect (at -10.6625 2.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 124 "TEST2") (pinfunction "PL17B") (pintype "bidirectional") (tstamp e61ab269-9ed2-4997-9d04-ff45179c9616)) + (pad "25" smd roundrect (at -10.6625 3.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 133 "TEST3") (pinfunction "PL19A") (pintype "bidirectional") (tstamp a7b10037-0242-494d-a441-dc48bef50b50)) + (pad "26" smd roundrect (at -10.6625 3.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 29 "N64_VIDEO_SYNC") (pinfunction "PL19B") (pintype "bidirectional") (tstamp 43b23daf-d608-4350-bf79-4c6f2f9112a0)) + (pad "27" smd roundrect (at -10.6625 4.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 17 "N64_JOYBUS") (pinfunction "PL22A/PCLKT3_0") (pintype "bidirectional") (tstamp 39914c8f-a638-4a5b-b724-6333c70faf11)) + (pad "28" smd roundrect (at -10.6625 4.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 74 "~{N64_NMI}") (pinfunction "PL22B/PCLKC3_0") (pintype "bidirectional") (tstamp cac9229c-7b32-4b01-95ef-e7c9af14b791)) + (pad "29" smd roundrect (at -10.6625 5.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp d2d8b90f-1cc3-46b8-ae12-2efddeab106a)) + (pad "30" smd roundrect (at -10.6625 5.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO3") (pintype "power_in") (tstamp 4fd71c9f-fda7-44dc-a730-71f9a293687a)) + (pad "31" smd roundrect (at -10.6625 6.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 72 "~{N64_RESET}") (pinfunction "PL23D") (pintype "bidirectional") (tstamp f049ccda-80da-4a79-bdbd-120ab1cbdd64)) + (pad "32" smd roundrect (at -10.6625 6.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 73 "~{N64_INT}") (pinfunction "PL24A") (pintype "bidirectional") (tstamp 85b30a72-2286-4f4b-9644-be52d496f960)) + (pad "33" smd roundrect (at -10.6625 7.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 16 "N64_PIF_CLK") (pinfunction "PL24B") (pintype "bidirectional") (tstamp ce6fab27-0c0a-45c5-b304-bedf2a2363ca)) + (pad "34" smd roundrect (at -10.6625 7.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 28 "N64_CIC_CLK") (pinfunction "PL25A") (pintype "bidirectional") (tstamp 7491255a-1f2f-444b-a433-59664b45004d)) + (pad "35" smd roundrect (at -10.6625 8.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 15 "N64_CIC_DATA") (pinfunction "PL25B") (pintype "bidirectional") (tstamp dd833fe9-3e27-4443-b300-ef655e704311)) + (pad "36" smd roundrect (at -10.6625 8.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCC") (pintype "power_in") (tstamp 8f379579-e294-46e7-ab1c-e5e4b2ef7d0c)) + (pad "37" smd roundrect (at -8.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO2") (pintype "power_in") (tstamp f7af00b0-76c3-459f-8c46-f5a83dd3bee8)) + (pad "38" smd roundrect (at -8.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 27 "N64_AD7") (pinfunction "PB4A") (pintype "bidirectional") (tstamp da8c55c6-63df-473c-9e1e-fdce7c38b264)) + (pad "39" smd roundrect (at -7.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 14 "N64_AD8") (pinfunction "PB4B") (pintype "bidirectional") (tstamp 7d646651-5aef-453f-ad93-710225b27da3)) + (pad "40" smd roundrect (at -7.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 26 "N64_AD6") (pinfunction "PB6A/CSSPIN") (pintype "bidirectional") (tstamp cada0bea-1c13-43de-8c76-f71887adf217)) + (pad "41" smd roundrect (at -6.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 13 "N64_AD9") (pinfunction "PB6B") (pintype "bidirectional") (tstamp 08f043dd-bcf7-4acd-8635-32f5deb1da95)) + (pad "42" smd roundrect (at -6.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 12 "N64_AD10") (pinfunction "PB9A") (pintype "bidirectional") (tstamp a98f71dd-c354-4853-808a-84ac5a6fd5b8)) + (pad "43" smd roundrect (at -5.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 25 "N64_AD5") (pinfunction "PB9B") (pintype "bidirectional") (tstamp 77c3608e-7555-4ea2-9cf6-8b737d2fa1ab)) + (pad "44" smd roundrect (at -5.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 11 "N64_AD11") (pinfunction "PB12A/MCLK/CCLK") (pintype "bidirectional") (tstamp 24217754-65f8-4058-9ca8-8216e58d0e1a)) + (pad "45" smd roundrect (at -4.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 24 "N64_AD4") (pinfunction "PB12B/SO/SPISO") (pintype "bidirectional") (tstamp 8a32e254-34b1-4b9c-b7a4-13d903135be2)) + (pad "46" smd roundrect (at -4.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 1c29e414-397e-4fe3-9282-d1236b08d101)) + (pad "47" smd roundrect (at -3.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 71 "~{N64_READ}") (pinfunction "PB13A") (pintype "bidirectional") (tstamp 27208b49-19e9-4d2b-ae5f-f9d3f61dd96a)) + (pad "48" smd roundrect (at -3.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 23 "N64_ALEH") (pinfunction "PB13B") (pintype "bidirectional") (tstamp e1db068e-8ed8-4edf-a7f4-035239f5ddee)) + (pad "49" smd roundrect (at -2.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 70 "~{N64_WRITE}") (pinfunction "PB16A/PCLKT2_0") (pintype "bidirectional") (tstamp 80e098c7-ff0f-40d9-839f-9ee0ada137c7)) + (pad "50" smd roundrect (at -2.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 22 "N64_ALEL") (pinfunction "PB16B/PCLKC2_0") (pintype "bidirectional") (tstamp 931b2192-b16b-4ebe-b929-3a8ff8451b32)) + (pad "51" smd roundrect (at -1.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO2") (pintype "power_in") (tstamp 52a0f0b5-ecc7-4927-b13c-0655c9a7b663)) + (pad "52" smd roundrect (at -1.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 10 "N64_AD12") (pinfunction "PB18A") (pintype "bidirectional") (tstamp 6c900bf0-cac7-4987-a689-121ebc5161e1)) + (pad "53" smd roundrect (at -0.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 5de151cb-70ef-4de6-8791-7554d8803ed7)) + (pad "54" smd roundrect (at -0.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 21 "N64_AD3") (pinfunction "PB18B") (pintype "bidirectional") (tstamp adeb541d-0e55-423b-b1a5-ac8cec777f8d)) + (pad "55" smd roundrect (at 0.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 9 "N64_AD13") (pinfunction "PB23A/PCLKT2_1") (pintype "bidirectional") (tstamp ae2697a6-5b6c-4144-a80c-f59c20cf01e1)) + (pad "56" smd roundrect (at 0.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 20 "N64_AD2") (pinfunction "PB23B/PCLKC2_1") (pintype "bidirectional") (tstamp 7c047bc0-9e6e-464e-8bc2-a129de6017bb)) + (pad "57" smd roundrect (at 1.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 8 "N64_AD14") (pinfunction "PB26A") (pintype "bidirectional") (tstamp e417e4c5-b508-4e5a-afd1-7dc505f57056)) + (pad "58" smd roundrect (at 1.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 19 "N64_AD1") (pinfunction "PB26B") (pintype "bidirectional") (tstamp f535cada-7757-4632-8f16-ee8a06da7cc6)) + (pad "59" smd roundrect (at 2.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 7 "N64_AD15") (pinfunction "PB29A") (pintype "bidirectional") (tstamp 67522698-b563-4886-bdbf-5c433326fba2)) + (pad "60" smd roundrect (at 2.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 18 "N64_AD0") (pinfunction "PB29B") (pintype "bidirectional") (tstamp 9f3fe97e-1e9e-485d-9bc4-cdfd2b3b791e)) + (pad "61" smd roundrect (at 3.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 116 "SDRAM_CLK") (pinfunction "PB31A") (pintype "bidirectional") (tstamp 94e07222-a37e-40c1-9001-a754ffe8b148)) + (pad "62" smd roundrect (at 3.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 115 "SDRAM_A12") (pinfunction "PB31B") (pintype "bidirectional") (tstamp 6ab0df03-3bba-4c66-ae19-73cf336e8ecc)) + (pad "63" smd roundrect (at 4.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 114 "SDRAM_A11") (pinfunction "PB31D") (pintype "bidirectional") (tstamp 511544ba-bbf8-4f33-a977-0fcd63e86ccc)) + (pad "64" smd roundrect (at 4.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp dbac7066-2fdd-4dac-b00e-c1d1e9a2ff24)) + (pad "65" smd roundrect (at 5.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 113 "SDRAM_A9") (pinfunction "PB35A") (pintype "bidirectional") (tstamp 896232b1-e057-4484-b9cd-53ea18de7753)) + (pad "66" smd roundrect (at 5.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO2") (pintype "power_in") (tstamp 1fa53ba4-9572-4824-9c7a-49a94b999a8e)) + (pad "67" smd roundrect (at 6.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 112 "SDRAM_A8") (pinfunction "PB35B") (pintype "bidirectional") (tstamp 8e1c7203-9931-4994-8c3c-15dd9e303d95)) + (pad "68" smd roundrect (at 6.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 111 "SDRAM_A7") (pinfunction "PB37A") (pintype "bidirectional") (tstamp 08732a30-5b7f-491c-9f7e-c143a39ece72)) + (pad "69" smd roundrect (at 7.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 110 "SDRAM_A6") (pinfunction "PB37B") (pintype "bidirectional") (tstamp 8797612e-14ed-44eb-a090-2a8aad427753)) + (pad "70" smd roundrect (at 7.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 109 "SDRAM_A5") (pinfunction "PB38A/SN") (pintype "bidirectional") (tstamp a63bc584-eeb6-40c6-8804-6cb35a542b24)) + (pad "71" smd roundrect (at 8.25 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 108 "SDRAM_A4") (pinfunction "PB38B/SI/SISPI") (pintype "bidirectional") (tstamp 89e5d9c8-0bb3-4443-b8fd-6941fecb950e)) + (pad "72" smd roundrect (at 8.75 10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCC") (pintype "power_in") (tstamp 0b7445ea-e103-4e5b-9a00-dd53e991655e)) + (pad "73" smd roundrect (at 10.6625 8.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 117 "SDRAM_DQMH") (pinfunction "PR24B") (pintype "bidirectional") (tstamp 0f5e332d-aeaa-4ead-958c-993a39728c19)) + (pad "74" smd roundrect (at 10.6625 8.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 83 "SDRAM_DQ8") (pinfunction "PR24A") (pintype "bidirectional") (tstamp e9ceb823-c334-4f2e-8d99-229361de873b)) + (pad "75" smd roundrect (at 10.6625 7.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 84 "SDRAM_DQ9") (pinfunction "PR23B") (pintype "bidirectional") (tstamp 323166a4-910a-417b-8c7d-c03feb7ffad4)) + (pad "76" smd roundrect (at 10.6625 7.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 85 "SDRAM_DQ10") (pinfunction "PR23A") (pintype "bidirectional") (tstamp eaa51897-930a-4f8d-a8ef-555c39f2a2a9)) + (pad "77" smd roundrect (at 10.6625 6.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 86 "SDRAM_DQ11") (pinfunction "PR21B") (pintype "bidirectional") (tstamp c98d36b8-9034-4cc3-842e-e855c4c8d2d2)) + (pad "78" smd roundrect (at 10.6625 6.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 87 "SDRAM_DQ12") (pinfunction "PR21A") (pintype "bidirectional") (tstamp 906b5f7a-936d-45b9-9540-4d3934a93429)) + (pad "79" smd roundrect (at 10.6625 5.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO1") (pintype "power_in") (tstamp c6e0a66c-1a0d-4a98-bcfd-2d9fcc773fcc)) + (pad "80" smd roundrect (at 10.6625 5.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 5b945d17-5db9-4f27-954f-2f26254feeb9)) + (pad "81" smd roundrect (at 10.6625 4.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 88 "SDRAM_DQ13") (pinfunction "PR18B") (pintype "bidirectional") (tstamp b59c4726-b377-4e6b-88de-b9168b63598e)) + (pad "82" smd roundrect (at 10.6625 4.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 89 "SDRAM_DQ14") (pinfunction "PR18A") (pintype "bidirectional") (tstamp 9b5d8fad-a9d5-4261-94ae-888d349a7fb4)) + (pad "83" smd roundrect (at 10.6625 3.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 90 "SDRAM_DQ15") (pinfunction "PR17B") (pintype "bidirectional") (tstamp a2634fce-63a7-464e-949e-676604bb3aff)) + (pad "84" smd roundrect (at 10.6625 3.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 103 "SDRAM_A10") (pinfunction "PR17A") (pintype "bidirectional") (tstamp 251dee92-c362-41db-a1bd-8b45e6177357)) + (pad "85" smd roundrect (at 10.6625 2.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 104 "SDRAM_A0") (pinfunction "PR16B") (pintype "bidirectional") (tstamp f5a2439b-06cb-41f4-a35c-c0e90d1afb13)) + (pad "86" smd roundrect (at 10.6625 2.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 105 "SDRAM_A1") (pinfunction "PR16A") (pintype "bidirectional") (tstamp 076e6292-e03c-4264-8e1a-38fc388ff7ba)) + (pad "87" smd roundrect (at 10.6625 1.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 106 "SDRAM_A2") (pinfunction "PR15B") (pintype "bidirectional") (tstamp 0ccea004-159c-4140-b5bd-f9753bf6d9f0)) + (pad "88" smd roundrect (at 10.6625 1.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO1") (pintype "power_in") (tstamp 3e23ff80-976e-481f-b649-d3b6afc29a05)) + (pad "89" smd roundrect (at 10.6625 0.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 107 "SDRAM_A3") (pinfunction "PR15A") (pintype "bidirectional") (tstamp 4afbcab0-8772-4bb7-8c18-21fe06bf2973)) + (pad "90" smd roundrect (at 10.6625 0.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 1f52d044-35a1-4971-a033-158db0c09f89)) + (pad "91" smd roundrect (at 10.6625 -0.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 102 "SDRAM_BA1") (pinfunction "PR12B/PCLKC1_0") (pintype "bidirectional") (tstamp 2cd4200f-d3e2-47d7-9e04-6340e4870ffc)) + (pad "92" smd roundrect (at 10.6625 -0.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 101 "SDRAM_BA0") (pinfunction "PR12A/PCLKT1_0") (pintype "bidirectional") (tstamp 696fc689-c13d-4a9e-abe6-d97c1df0b026)) + (pad "93" smd roundrect (at 10.6625 -1.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 100 "~{SDRAM_CS}") (pinfunction "PR11B") (pintype "bidirectional") (tstamp 44ceed4d-02f1-4589-87bb-12242eec59cf)) + (pad "94" smd roundrect (at 10.6625 -1.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 99 "~{SDRAM_RAS}") (pinfunction "PR11A") (pintype "bidirectional") (tstamp fd359357-19b0-4f4e-8f3e-cbd63c2c758b)) + (pad "95" smd roundrect (at 10.6625 -2.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 98 "~{SDRAM_CAS}") (pinfunction "PR9B") (pintype "bidirectional") (tstamp 058f45a1-dd8e-4168-b397-fb3e1bc2348f)) + (pad "96" smd roundrect (at 10.6625 -2.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 97 "~{SDRAM_WE}") (pinfunction "PR9A") (pintype "bidirectional") (tstamp 60e57f7a-b7c2-462d-8ea4-3cfe65fa213f)) + (pad "97" smd roundrect (at 10.6625 -3.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 96 "SDRAM_DQML") (pinfunction "PR7B") (pintype "bidirectional") (tstamp f9a301ba-8e22-467c-a4bf-770701a350e1)) + (pad "98" smd roundrect (at 10.6625 -3.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 82 "SDRAM_DQ7") (pinfunction "PR7A") (pintype "bidirectional") (tstamp 87107e8d-4714-46d3-85da-82a3135d91f4)) + (pad "99" smd roundrect (at 10.6625 -4.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 81 "SDRAM_DQ6") (pinfunction "PR5B") (pintype "bidirectional") (tstamp ac7bce60-1c51-4a11-8e7a-4d41cdbafddb)) + (pad "100" smd roundrect (at 10.6625 -4.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 80 "SDRAM_DQ5") (pinfunction "PR5A") (pintype "bidirectional") (tstamp d0ddeb8e-759f-4e61-939c-35c1d55a0f23)) + (pad "101" smd roundrect (at 10.6625 -5.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp a28caf18-fdd6-4a0c-871f-ca6a401f0fb2)) + (pad "102" smd roundrect (at 10.6625 -5.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO1") (pintype "power_in") (tstamp c3ff307f-501b-4398-bfbe-c3dbcec3c80e)) + (pad "103" smd roundrect (at 10.6625 -6.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 79 "SDRAM_DQ4") (pinfunction "PR4C") (pintype "bidirectional") (tstamp df586398-15bb-43ad-9ce4-b6a3c8d718d7)) + (pad "104" smd roundrect (at 10.6625 -6.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 78 "SDRAM_DQ3") (pinfunction "PR3B/R_GPLLC_IN") (pintype "bidirectional") (tstamp e9a7f20e-5d66-4602-9dea-2e7c86ca5af1)) + (pad "105" smd roundrect (at 10.6625 -7.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 77 "SDRAM_DQ2") (pinfunction "PR3A/R_GPLLT_IN") (pintype "bidirectional") (tstamp 04d40121-7041-4649-b08c-38ac599b43db)) + (pad "106" smd roundrect (at 10.6625 -7.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 76 "SDRAM_DQ1") (pinfunction "PR2B/R_GPLLC_FB") (pintype "bidirectional") (tstamp 8a425bc4-2b70-4b54-b386-801fdff7394d)) + (pad "107" smd roundrect (at 10.6625 -8.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 75 "SDRAM_DQ0") (pinfunction "PR2A/R_GPLLT_FB") (pintype "bidirectional") (tstamp 64d8d7b7-14ab-4042-9ee8-f1aec24a139c)) + (pad "108" smd roundrect (at 10.6625 -8.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCC") (pintype "power_in") (tstamp 57349e08-abba-4d14-877b-12ee057b548b)) + (pad "109" smd roundrect (at 8.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 35 "SD_DAT1") (pinfunction "PT36D/DONE") (pintype "bidirectional") (tstamp e31b0488-ce9c-49e1-a4b9-0f34915571dc)) + (pad "110" smd roundrect (at 8.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 34 "SD_DAT0") (pinfunction "PT36C/INITN") (pintype "bidirectional") (tstamp d86cf991-97ae-4fd2-a241-76b0dfd1e5f8)) + (pad "111" smd roundrect (at 7.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 33 "SD_CLK") (pinfunction "PT35B") (pintype "bidirectional") (tstamp 1290b743-65ab-4980-b135-236ff3e100b0)) + (pad "112" smd roundrect (at 7.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 32 "SD_CMD") (pinfunction "PT35A") (pintype "bidirectional") (tstamp 5d3209c8-1fa2-42e1-89a8-60ec6ab2682a)) + (pad "113" smd roundrect (at 6.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 31 "SD_DAT3") (pinfunction "PT33B") (pintype "bidirectional") (tstamp 4ccddf64-8097-4c49-bf42-d86353b5f7b0)) + (pad "114" smd roundrect (at 6.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 30 "SD_DAT2") (pinfunction "PT33A") (pintype "bidirectional") (tstamp 567a84aa-faec-4f5e-b4f6-63f428439809)) + (pad "115" smd roundrect (at 5.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 36 "SD_DET") (pinfunction "PT28B") (pintype "bidirectional") (tstamp aefc27eb-12fe-4b03-82b8-4f5ea1b48fef)) + (pad "116" smd roundrect (at 5.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp c3571a90-f3db-4d0f-b074-e6cc898f7921)) + (pad "117" smd roundrect (at 4.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 95 "MCU_INT") (pinfunction "PT28A") (pintype "bidirectional") (tstamp e420f8e5-ffc8-42a9-9342-9eec085f7288)) + (pad "118" smd roundrect (at 4.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO0") (pintype "power_in") (tstamp f03fc069-cba6-471f-842b-09342e567306)) + (pad "119" smd roundrect (at 3.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 94 "MCU_MISO") (pinfunction "PT27D/PROGRAMN") (pintype "bidirectional") (tstamp e3433533-3c75-4c09-9fd7-b400a02b8643)) + (pad "120" smd roundrect (at 3.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 93 "MCU_MOSI") (pinfunction "PT27C/JTAGENB") (pintype "bidirectional") (tstamp 08fac9fb-bd01-4e29-bb0a-a4ebc41404d7)) + (pad "121" smd roundrect (at 2.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 134 "MCU_SCLK") (pinfunction "PT25B") (pintype "bidirectional") (tstamp c7afafc6-d548-4bba-b86b-59cb1615caf9)) + (pad "122" smd roundrect (at 2.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 92 "MCU_CS") (pinfunction "PT25A") (pintype "bidirectional") (tstamp a2eb388d-0b35-4968-b572-1fb6a3e2fda5)) + (pad "123" smd roundrect (at 1.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO0") (pintype "power_in") (tstamp 27650710-7c55-4cb4-bd34-c80fcc619774)) + (pad "124" smd roundrect (at 1.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 85ab3b9b-c1e5-4710-9414-2f3fc15e90a8)) + (pad "125" smd roundrect (at 0.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 47 "I2C_SDA") (pinfunction "PT22D/SDA/PCLKC0_0") (pintype "bidirectional") (tstamp 70587800-7a81-4d85-8f29-25c4513540ec)) + (pad "126" smd roundrect (at 0.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 48 "I2C_SCL") (pinfunction "PT22C/SCL/PCLKT0_0") (pintype "bidirectional") (tstamp 3a0ae96c-df09-4372-b20d-54fddebbdf39)) + (pad "127" smd roundrect (at -0.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 40 "UART_RX") (pinfunction "PT18B/PCLKC0_1") (pintype "bidirectional") (tstamp 0311fc11-2032-440f-a4be-df1fd105e702)) + (pad "128" smd roundrect (at -0.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 39 "UART_TX") (pinfunction "PT18A/PCLKT0_1") (pintype "bidirectional") (tstamp 9e08eaf7-a538-49e1-acb3-91e047bc3fd7)) + (pad "129" smd roundrect (at -1.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 152 "unconnected-(U8-Pad129)") (pinfunction "NC") (pintype "no_connect") (tstamp 5ecc883d-1aa9-4578-8b5c-1384fffb9705)) + (pad "130" smd roundrect (at -1.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 44 "JTAG_TMS") (pinfunction "PT17D/TMS") (pintype "bidirectional") (tstamp 31722a14-7c0c-48ed-a9ba-b6a2e0a2f3ad)) + (pad "131" smd roundrect (at -2.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 43 "JTAG_TCK") (pinfunction "PT17C/TCK") (pintype "bidirectional") (tstamp 23b3bf9d-8854-4004-98d8-f0ad17c5a13a)) + (pad "132" smd roundrect (at -2.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 49 "RTC_MFP") (pinfunction "PT15B") (pintype "bidirectional") (tstamp ae32f0d6-28f3-4cba-a889-c8c4f4e4b03b)) + (pad "133" smd roundrect (at -3.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 122 "LED") (pinfunction "PT15A") (pintype "bidirectional") (tstamp 4beafc0d-b0ab-4186-951b-fd14bb9f83b5)) + (pad "134" smd roundrect (at -3.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 5d2c038b-6646-4fcb-986f-765218b65ea0)) + (pad "135" smd roundrect (at -4.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCCIO0") (pintype "power_in") (tstamp 0be98f3e-b1de-48aa-bf2f-b705e6291adc)) + (pad "136" smd roundrect (at -4.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 42 "JTAG_TDI") (pinfunction "PT14D/TDI") (pintype "bidirectional") (tstamp 3f36ae2b-271c-4042-baa2-71f36dd4a92c)) + (pad "137" smd roundrect (at -5.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 41 "JTAG_TDO") (pinfunction "PT14C/TDO") (pintype "bidirectional") (tstamp 0737a056-888e-4abf-8e90-747fcb02ac5b)) + (pad "138" smd roundrect (at -5.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 53 "FLASH_CS") (pinfunction "PT11B") (pintype "bidirectional") (tstamp 5a81c55e-ac9f-41e3-b747-46a9bd8d0814)) + (pad "139" smd roundrect (at -6.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 54 "FLASH_IO1") (pinfunction "PT11A") (pintype "bidirectional") (tstamp 82393777-34e1-4bbb-88d1-89e4aa816583)) + (pad "140" smd roundrect (at -6.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 55 "FLASH_IO2") (pinfunction "PT10B") (pintype "bidirectional") (tstamp 8af47142-29dc-40d4-aa7a-27ae26471a34)) + (pad "141" smd roundrect (at -7.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 56 "FLASH_IO0") (pinfunction "PT10A") (pintype "bidirectional") (tstamp 024aec87-418d-43e2-982b-d40b3ec576b4)) + (pad "142" smd roundrect (at -7.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 57 "FLASH_CLK") (pinfunction "PT9B") (pintype "bidirectional") (tstamp 82379ead-3508-4425-94ba-5e4ce4df8beb)) + (pad "143" smd roundrect (at -8.25 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 58 "FLASH_IO3") (pinfunction "PT9A") (pintype "bidirectional") (tstamp d6a7f71a-4da6-4997-9a3d-af77c0308253)) + (pad "144" smd roundrect (at -8.75 -10.6625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VCC") (pintype "power_in") (tstamp c1dbaaae-23f6-44fb-bee9-acc7bb52b326)) + (model "${KICAD6_3DMODEL_DIR}/Package_QFP.3dshapes/TQFP-144_20x20mm_P0.5mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "MountingHole:MountingHole_2mm" (layer "F.Cu") + (tedit 5B924920) (tstamp 6cd7230b-6aa4-494f-9e03-693973367cf3) + (at 197.5 128.25) + (descr "Mounting Hole 2mm, no annular") + (tags "mounting hole 2mm no annular") + (attr board_only exclude_from_pos_files exclude_from_bom) + (fp_text reference "REF**" (at 0 -3.2) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 61c538ce-5749-4db0-a518-f60c5cd03cbc) + ) + (fp_text value "MountingHole_2mm" (at 0 3.1) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 65737210-ed42-4840-8807-1cd452e30c86) + ) + (fp_text user "${REFERENCE}" (at 0.3 0) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 09ee5f74-4e72-4f06-9b8e-4b6a989a0a48) + ) + (fp_circle (center 0 0) (end 2 0) (layer "Cmts.User") (width 0.15) (fill none) (tstamp 6ada18a1-cda2-4660-90f3-3f4f75f9908c)) + (fp_circle (center 0 0) (end 2.25 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp c591474d-238d-4c84-a612-ee496f305afe)) + (pad "" np_thru_hole circle locked (at 0 0) (size 2 2) (drill 2) (layers *.Cu *.Mask) (tstamp c7193e35-dceb-447c-ad59-0ec8e4b4e718)) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 6d6fb611-3435-4118-8e61-8c83f482fcbd) + (at 110 94.75 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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/7ed06213-5fec-4fc2-a07b-97a7e844b4e4") + (attr smd) + (fp_text reference "R5" (at -2.75 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d9c7062b-0043-42cf-b719-182da019b215) + ) + (fp_text value "5.1k" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 891a7310-b287-43d4-b3fa-a428a1085e23) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp cccfbf96-16fd-4c63-b468-a5cf6a148237) + ) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp 355a5374-52bb-4516-97c9-35efdb011768)) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "F.SilkS") (width 0.12) (tstamp 6537a54e-695b-4a10-bd14-465a9c474eee)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 1be62a73-5d71-4fce-b7dd-6b3adf438bf3)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 278bc3ba-8365-4b6d-9d6f-cabc924203d9)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp b07ccf35-7dda-4206-8bfc-81ec1a501de5)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp b419fccd-2d72-48c6-898b-54ef55e9a1b8)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 45819d4e-81e5-4bc4-80b9-41dd79211dd3)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 65e881c9-cff5-4351-bedc-d2443c06b38b)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 8e96603a-cd07-4880-a559-f6b33bd58ecb)) + (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp e5fcf9b9-52b1-424d-8b08-6bd97f8b50cd)) + (pad "1" smd roundrect (at -0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp f189c077-879c-4cf8-a29d-e909505d5303)) + (pad "2" smd roundrect (at 0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 139 "Net-(J1-PadB5)") (pintype "passive") (tstamp 14393f11-bb47-450f-afe5-51f357cf8f67)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 7737bf4d-b704-4040-93a0-f5c7a4e38617) + (at 110 89.75 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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/9676acb4-ecdb-4bb9-8697-bbf28b479ff0") + (attr smd) + (fp_text reference "R4" (at -2.75 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 6af7bb84-edbe-486e-a3f6-0eb8ed9bea83) + ) + (fp_text value "5.1k" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp fa6060fd-bd14-4094-a2ef-6a12bd7cb07b) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp d89288cc-d1e5-48cd-98ad-c4d1f6512a96) + ) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp 03b70f01-821b-4f61-b0e2-d07a9945b4c8)) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "F.SilkS") (width 0.12) (tstamp 5515244b-010d-4643-b4a2-f2a0dc79c334)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 0a019d10-e2ed-48d3-8649-0881d6410b8d)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 7794a03d-12f8-4efd-aeeb-68a31ff2323c)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 967f5702-0d3c-45e8-ba2c-93d72f8ee708)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp fa920425-f0e9-4f5b-8f68-a8f0aee503f6)) + (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 8d080573-9194-4f86-821a-334c5616686d)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp b8b8401a-5d48-4e70-a6b0-c159cd669d3c)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp d86eac90-738d-494b-b6f4-c6dc6ee093c9)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp f577d95f-9608-49a9-a54e-86772ec751b5)) + (pad "1" smd roundrect (at -0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp f78b1322-cb57-4987-b36f-93e82026a55e)) + (pad "2" smd roundrect (at 0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 137 "Net-(J1-PadA5)") (pintype "passive") (tstamp 5698405e-1abc-4ae4-93b1-53b67db3448c)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 782db0de-547e-4ce8-a130-fa3400f8a1f7) + (at 131.5 114.25 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/0c635b0d-75d2-43fe-aa37-07274a83e016") + (attr smd) + (fp_text reference "R6" (at -2.75 0 90) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp aeeea69e-6e13-441b-8bc4-c00b8dc62384) + ) + (fp_text value "12k" (at 0 1.43 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 0d523222-55a6-4afc-a937-aca3c55637d0) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 79a49fd9-88bc-42bd-bb86-8c531635598d) + ) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "F.SilkS") (width 0.12) (tstamp 01874b97-ee3d-4c41-995e-692c2310d8c3)) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp 56d80a1c-49fc-45e1-a416-5b348e52ae8c)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 06de90f2-8ae7-4cc2-81e2-cf0806d709ef)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 0bad396c-6d3d-45a6-8b97-0b118cc79baa)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 3bd3db14-873d-400d-acc0-0eaa85a000dd)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 6a228bde-3b50-41b5-8e32-6b095aa0566e)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 0ecc180a-df35-4367-aa73-dd3a180bbc60)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 3e5e0b3e-a0b2-4657-a554-f4a9e820e4de)) + (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 8e814dbb-2a41-4e84-adbf-aaaa4878e26b)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 9ca7102d-95b1-424f-bf6b-9a45e0121eb3)) + (pad "1" smd roundrect (at -0.825 0 90) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 0b095846-5cf8-4882-aeab-836190192693)) + (pad "2" smd roundrect (at 0.825 0 90) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 161 "Net-(R6-Pad2)") (pintype "passive") (tstamp 0115bbe8-68cc-4a01-9f90-ca5980bff65f)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 7a2e6d83-1798-4363-b04b-61b376b0debb) + (at 122.5 103 180) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/9b5d4a16-c0ac-4bd5-96ac-9f9edadfcd60") + (attr smd) + (fp_text reference "C16" (at 3.25 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 001e33d8-d2fc-4694-9594-8c48104b147c) + ) + (fp_text value "100nF" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 730ac5a0-0d8d-497c-983e-e171e3203265) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 838027ed-7964-4749-a7d7-2e277531af40) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "F.SilkS") (width 0.12) (tstamp e8631461-9815-42c8-80b1-a1670950eb29)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "F.SilkS") (width 0.12) (tstamp ebbfdaf0-f25c-456b-b619-671351faa3ae)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 10ee5bf3-ce56-4cc5-9fb1-b67362edb676)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 5bf74d77-739e-487a-b613-85e0d77c4079)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp aa2b9cb1-1478-47a5-a391-d5f47050c973)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp bdd1bd3b-cbb0-4d45-9370-fcb95028c774)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp 0f557cfb-60db-405e-85c1-509fb73c9222)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp 6b38bd00-399f-473f-a9d5-946214912026)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp c2685ab2-dbd3-4e73-bf16-e8f0a5546e34)) + (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp ec8f11ea-8197-4689-9ca9-942188fcc389)) + (pad "1" smd roundrect (at -0.775 0 180) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 042fac6a-1863-41b4-be68-0891667ad065)) + (pad "2" smd roundrect (at 0.775 0 180) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 4811d090-9de1-4a5d-9f2c-c5640f7c0422)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_SO:TSSOP-8_4.4x3mm_P0.65mm" (layer "F.Cu") + (tedit 5E476F32) (tstamp 7a80a7ec-90a6-448d-a238-3adf9e4be823) + (at 110 114) + (descr "TSSOP, 8 Pin (JEDEC MO-153 Var AA https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py") + (tags "TSSOP SO") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/11199015-56cf-4f32-a080-c15518c28d0f") + (attr smd) + (fp_text reference "U2" (at 0 -2.45) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp a21a8665-6645-4322-8830-ca35db372d6f) + ) + (fp_text value "TPS2111A" (at 0 2.45) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 81bab02b-4554-4d9e-bdf1-97e1a5108af7) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 3cbeafde-ede4-4686-8198-e2fee94ad726) + ) + (fp_line (start 0 1.61) (end -2.2 1.61) (layer "F.SilkS") (width 0.12) (tstamp 22d6ef43-f327-4cb4-9a52-41ddf75a39fb)) + (fp_line (start 0 1.61) (end 2.2 1.61) (layer "F.SilkS") (width 0.12) (tstamp 683c9e05-7c74-43f2-acd1-e03e47711e44)) + (fp_line (start 0 -1.61) (end 2.2 -1.61) (layer "F.SilkS") (width 0.12) (tstamp 8fea208a-c95b-4af1-8cfb-fa9fd7a4ea41)) + (fp_line (start 0 -1.61) (end -3.6 -1.61) (layer "F.SilkS") (width 0.12) (tstamp c612b3d0-befe-47cc-b9f6-44e8f7ff8ddf)) + (fp_line (start -3.85 -1.75) (end -3.85 1.75) (layer "F.CrtYd") (width 0.05) (tstamp 233c8737-295a-45a4-9db1-8efbb83b714d)) + (fp_line (start 3.85 -1.75) (end -3.85 -1.75) (layer "F.CrtYd") (width 0.05) (tstamp 9856cb61-ec19-4b27-a135-f0af4bf8da27)) + (fp_line (start -3.85 1.75) (end 3.85 1.75) (layer "F.CrtYd") (width 0.05) (tstamp e1cf6308-1e4e-4f1f-b65d-f72bf092e122)) + (fp_line (start 3.85 1.75) (end 3.85 -1.75) (layer "F.CrtYd") (width 0.05) (tstamp fff0627a-c2d0-4872-88fd-fc7d41e69170)) + (fp_line (start 2.2 -1.5) (end 2.2 1.5) (layer "F.Fab") (width 0.1) (tstamp 145450f2-0abe-4f2d-996e-9bd843cf8fcb)) + (fp_line (start 2.2 1.5) (end -2.2 1.5) (layer "F.Fab") (width 0.1) (tstamp 6a9f09f6-cb3e-49fa-9acf-6c48e7f16f0e)) + (fp_line (start -2.2 1.5) (end -2.2 -0.75) (layer "F.Fab") (width 0.1) (tstamp 866ec4c9-be51-4a69-bb9b-6d22adc0b61a)) + (fp_line (start -2.2 -0.75) (end -1.45 -1.5) (layer "F.Fab") (width 0.1) (tstamp d8613945-2287-4e6d-9f3d-acb979232158)) + (fp_line (start -1.45 -1.5) (end 2.2 -1.5) (layer "F.Fab") (width 0.1) (tstamp df26e782-be0c-417d-a40c-86daee561c39)) + (pad "1" smd roundrect (at -2.8625 -0.975) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 135 "unconnected-(U2-Pad1)") (pinfunction "D0") (pintype "input+no_connect") (tstamp 488a18d9-635d-48b8-9b42-d70edcb6a05e)) + (pad "2" smd roundrect (at -2.8625 -0.325) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "D1") (pintype "input") (tstamp 7b383491-f576-4799-b6f2-d4cefc837494)) + (pad "3" smd roundrect (at -2.8625 0.325) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 141 "Net-(R1-Pad2)") (pinfunction "VSNS") (pintype "input") (tstamp 6874eca7-c91d-456c-a3df-793eaf422b0b)) + (pad "4" smd roundrect (at -2.8625 0.975) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 142 "Net-(R3-Pad1)") (pinfunction "ILM") (pintype "input") (tstamp 6fdcaf87-8338-4b72-82a4-2b3943f7eb40)) + (pad "5" smd roundrect (at 2.8625 0.975) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 2caec8e2-d35d-4e35-973b-467fb5c8d8a5)) + (pad "6" smd roundrect (at 2.8625 0.325) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 51 "N64_3V3") (pinfunction "IN2") (pintype "power_in") (tstamp 9ff22c74-dbfe-4d98-abfa-1f5db5f8eaf9)) + (pad "7" smd roundrect (at 2.8625 -0.325) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "OUT") (pintype "power_out") (tstamp 0621ad71-3b44-4af2-b215-f732d38285ef)) + (pad "8" smd roundrect (at 2.8625 -0.975) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 136 "Net-(C3-Pad1)") (pinfunction "IN1") (pintype "power_in") (tstamp b0ac79b8-a7cb-4eb8-bce2-3ba8be9136e3)) + (model "${KICAD6_3DMODEL_DIR}/Package_SO.3dshapes/TSSOP-8_4.4x3mm_P0.65mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "TestPoint:TestPoint_Pad_D1.5mm" (layer "F.Cu") + (tedit 5A0F774F) (tstamp 8079120a-6a0b-4692-9252-2a72c6e5d144) + (at 141 110) + (descr "SMD pad as test Point, diameter 1.5mm") + (tags "test point SMD pad") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (property "exclude_from_bom" "") + (path "/fd9f5719-35a0-432f-9a74-8007f2818ce9") + (attr exclude_from_pos_files exclude_from_bom) + (fp_text reference "TP1" (at 3 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 09a9be5c-e70c-48a2-85e3-f415320a9ec4) + ) + (fp_text value "TestPoint" (at 0 1.75) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp dce1b0f7-f3ce-42a3-aa34-f5418ea16911) + ) + (fp_text user "${REFERENCE}" (at 0 -1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp beca083b-6c14-4b1e-877d-bb541cd1ea3d) + ) + (fp_circle (center 0 0) (end 0 0.95) (layer "F.SilkS") (width 0.12) (fill none) (tstamp 9a10553f-259c-4fdd-9a37-6477312d1262)) + (fp_circle (center 0 0) (end 1.25 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp cb92eb2b-a215-4d2f-8fbd-67f2c77e876d)) + (pad "1" smd circle (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") + (net 123 "TEST1") (pinfunction "1") (pintype "passive") (tstamp 498fa3fc-1a58-4235-b701-b903c311e3f6)) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 8873c50a-2ec1-41d5-85b7-3206b0a14f01) + (at 122.5 97.75) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/53a3914e-49ab-47c6-9e8c-471b61f99f60") + (attr smd) + (fp_text reference "R7" (at -2.75 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d36cf853-6bef-470e-8f16-9aa688984ba5) + ) + (fp_text value "12k" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 703e5405-7f14-4cae-9f49-2fbd65ca9287) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 102cd2cd-6974-42bd-afb7-2081d62c282e) + ) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "F.SilkS") (width 0.12) (tstamp 3c315f69-cfdc-4e80-8a04-d95d72c2359d)) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp 635fa66e-b8c2-4f67-bf1b-2f0bddd968ea)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 0b261f0a-6a62-48b0-b8b7-465fce8d7d08)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 7c1d02ba-7d8f-4ee5-8f86-683087780e8e)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp ba74709d-e7cb-4d5d-9a5d-9935a2bb51d2)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp f0be5c83-b5a8-4cc9-ab4a-2a7f9edb301e)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 0c043ff0-461c-4fbb-a8d4-0ac0a8ef9022)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 13b37f92-e902-43d6-8912-be6f8aadc8f1)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 3d38c5b7-8077-457d-8a7e-ad38e035ce34)) + (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp d9691803-77e0-40d5-b8e2-1db2c95e9c29)) + (pad "1" smd roundrect (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp f4828636-41c1-4f0a-91e5-b2494f0986eb)) + (pad "2" smd roundrect (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 162 "Net-(R7-Pad2)") (pintype "passive") (tstamp 262ecef5-292b-4a37-9a31-8e4cffaec9dd)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" (layer "F.Cu") + (tedit 59FED5CC) (tstamp 88ff81f2-a37c-4904-acad-09c6ccb6e0cc) + (at 125 82.225) + (descr "Through hole straight pin header, 1x03, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x03 2.54mm single row") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/18505a27-e048-4c99-939f-13bbdf43eb7b") + (attr through_hole) + (fp_text reference "J2" (at 0 7.525) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 5bbc58b1-1ec8-497e-b99a-0db817e3d77c) + ) + (fp_text value "Conn_01x03_Male" (at 0 7.41) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7811af3b-9c94-470a-8757-e28d2b3bc1b3) + ) + (fp_text user "${REFERENCE}" (at 0 2.54 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 9bc5e88e-5aa7-4e35-a352-e15be3044ca1) + ) + (fp_line (start 1.33 1.27) (end 1.33 6.41) (layer "F.SilkS") (width 0.12) (tstamp 01108b60-a0b4-4105-ae2b-f44252c02da0)) + (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer "F.SilkS") (width 0.12) (tstamp 10b6f5b8-7e42-4eae-9b53-a1b0b06dcd09)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 21347f51-7012-456d-9bc6-f659cad3f18a)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer "F.SilkS") (width 0.12) (tstamp 35065e2b-13a2-4e5d-aa4b-f93bcbcd3b52)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 9a2e71b9-50d8-4a3f-83a2-82b92d051411)) + (fp_line (start -1.33 1.27) (end -1.33 6.41) (layer "F.SilkS") (width 0.12) (tstamp e4c94ef7-86c0-4266-8ab6-05561456477c)) + (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer "F.CrtYd") (width 0.05) (tstamp 1d3e0d85-2a8c-4623-bd14-c479925562dd)) + (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 8277ce76-30d4-4f98-8298-e2851a9260f3)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp e75389cb-6756-4938-b448-4ebe31017553)) + (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer "F.CrtYd") (width 0.05) (tstamp f0266147-e83b-4bd3-9dc3-5cc1d6f1e989)) + (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer "F.Fab") (width 0.1) (tstamp 2793c26d-5f32-48db-b6f4-582dd5eaf125)) + (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer "F.Fab") (width 0.1) (tstamp 9af16145-61fd-4aa8-a6bc-be6258aee7a1)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp a0a5bf8b-b134-4f0b-afda-ef8ff32767f1)) + (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer "F.Fab") (width 0.1) (tstamp b28790b3-13e9-4274-9cf9-1f8884ffd7a8)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer "F.Fab") (width 0.1) (tstamp d3856a83-3796-47b0-b3bf-1ec48e0d98c5)) + (pad "1" thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 46 "GND") (pinfunction "Pin_1") (pintype "passive") (tstamp 531a98d1-805f-4101-a58f-ab271bb4eaea)) + (pad "2" thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 40 "UART_RX") (pinfunction "Pin_2") (pintype "passive") (tstamp c612628c-42a7-4955-9826-0a5276868d11)) + (pad "3" thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 39 "UART_TX") (pinfunction "Pin_3") (pintype "passive") (tstamp 362a131d-87bc-414b-8ad1-7ab39f833e8c)) + (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x03_P2.54mm_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Crystal:Crystal_SMD_3215-2Pin_3.2x1.5mm" (layer "F.Cu") + (tedit 5A0FD1B2) (tstamp 8a80658e-7443-4405-bf8e-41ad9202c0ab) + (at 169.5 84.1 90) + (descr "SMD Crystal FC-135 https://support.epson.biz/td/api/doc_check.php?dl=brief_FC-135R_en.pdf") + (tags "SMD SMT Crystal") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/c229caf9-bd8e-4df4-8266-2d39e81a3f5d") + (attr smd) + (fp_text reference "Y1" (at 0 2.25 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 91125ed1-04ac-414b-89bd-9ef46367e239) + ) + (fp_text value "FC-135" (at 0.05 2 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 6e2f7fa6-1ee9-4775-917f-ada02dc13bcd) + ) + (fp_text user "${REFERENCE}" (at 0 -2 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 1108f7d7-1300-4e64-9d0c-b460edb02c0e) + ) + (fp_line (start -0.675 0.875) (end 0.675 0.875) (layer "F.SilkS") (width 0.12) (tstamp 045e2b02-bbb9-4128-b50f-816a961b17ef)) + (fp_line (start -0.675 -0.875) (end 0.675 -0.875) (layer "F.SilkS") (width 0.12) (tstamp fd0c6a70-4754-40da-b8db-cbc81b3ceeb4)) + (fp_line (start -2 -1.15) (end -2 1.15) (layer "F.CrtYd") (width 0.05) (tstamp 694a41fe-e775-441c-bcd9-127b58faffa2)) + (fp_line (start -2 -1.15) (end 2 -1.15) (layer "F.CrtYd") (width 0.05) (tstamp b80aa845-c1c7-4a36-86eb-13202c5b8807)) + (fp_line (start -2 1.15) (end 2 1.15) (layer "F.CrtYd") (width 0.05) (tstamp d577f635-837f-4cd5-b539-f043f68e5a8d)) + (fp_line (start 2 -1.15) (end 2 1.15) (layer "F.CrtYd") (width 0.05) (tstamp d86ee7d3-b7d0-400c-a7d2-6d9a947e3d7b)) + (fp_line (start 1.6 -0.75) (end 1.6 0.75) (layer "F.Fab") (width 0.1) (tstamp 39b77ad4-840a-4880-8672-f09699d06495)) + (fp_line (start -1.6 0.75) (end 1.6 0.75) (layer "F.Fab") (width 0.1) (tstamp 61c5e7b9-ec75-459b-8f55-aa6dcdc47663)) + (fp_line (start -1.6 -0.75) (end 1.6 -0.75) (layer "F.Fab") (width 0.1) (tstamp ccf65e24-b980-469f-8862-e397985c8f5a)) + (fp_line (start -1.6 -0.75) (end -1.6 0.75) (layer "F.Fab") (width 0.1) (tstamp e17afcb0-49dd-4f12-a913-1d8e2e4c5b94)) + (pad "1" smd rect locked (at 1.25 0 90) (size 1 1.8) (layers "F.Cu" "F.Paste" "F.Mask") + (net 158 "Net-(C21-Pad1)") (pinfunction "1") (pintype "passive") (tstamp ffed2abe-19c1-484a-85f6-c11ad414bcd4)) + (pad "2" smd rect locked (at -1.25 0 90) (size 1 1.8) (layers "F.Cu" "F.Paste" "F.Mask") + (net 159 "Net-(C22-Pad2)") (pinfunction "2") (pintype "passive") (tstamp c50e5885-8a58-4ee4-a5e7-bcd8f4b418f2)) + (model "${KICAD6_3DMODEL_DIR}/Crystal.3dshapes/Crystal_SMD_3215-2Pin_3.2x1.5mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + (model "${KICAD6_3DMODEL_DIR}/Crystal.3dshapes/Crystal_SMD_MicroCrystal_CC7V-T1A-2Pin_3.2x1.5mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "TestPoint:TestPoint_Pad_D1.5mm" (layer "F.Cu") + (tedit 5A0F774F) (tstamp 90298e9e-3b06-4854-a2c7-5bea10b3fa68) + (at 141 113) + (descr "SMD pad as test Point, diameter 1.5mm") + (tags "test point SMD pad") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (property "exclude_from_bom" "") + (path "/dc408f8d-04af-4d73-a1d2-90b29f263566") + (attr exclude_from_pos_files exclude_from_bom) + (fp_text reference "TP2" (at 3 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp a289a3b7-705d-4002-bb91-8d9212e90da7) + ) + (fp_text value "TestPoint" (at 0 1.75) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 85af37ce-5b9e-4687-a77c-7c91f57e8633) + ) + (fp_text user "${REFERENCE}" (at 0 -1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp cdeb183d-03ed-4334-82ba-8b5ca29564c5) + ) + (fp_circle (center 0 0) (end 0 0.95) (layer "F.SilkS") (width 0.12) (fill none) (tstamp bcee6173-22b2-4630-9f74-a9e3887b8ff2)) + (fp_circle (center 0 0) (end 1.25 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp 3703ee47-8549-4047-ae54-f351dd7ce1b3)) + (pad "1" smd circle (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") + (net 124 "TEST2") (pinfunction "1") (pintype "passive") (tstamp b5ea958d-0cfd-4df9-ac20-3edbdc47b6ee)) + ) + + (footprint "sc64v2:N64_Edge" locked (layer "F.Cu") + (tedit 6213F4C6) (tstamp 961e37cd-505c-40aa-baef-0a680d665d8f) + (at 150 125) + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (property "exclude_from_bom" "") + (path "/0ccace5b-45a7-46eb-82b5-c5e6d2488545") + (attr exclude_from_bom) + (fp_text reference "J_N1" (at -30 -1.75 unlocked) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp f0efa3ea-26e1-4220-ae1d-41709ae949ef) + ) + (fp_text value "N64_Cartridge" (at -30 14 unlocked) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7dfa6a3a-4e9d-4576-ba16-f19bf4781a79) + ) + (fp_text user "10" (at 7.5 1.25 unlocked) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 02a96c24-0d82-47eb-873e-8d40348f697a) + ) + (fp_text user "FRONT" (at 13.75 1.25 unlocked) (layer "B.SilkS") + (effects (font (size 2 2) (thickness 0.15)) (justify mirror)) + (tstamp 1c391ca7-e610-404c-bdff-cd84da814875) + ) + (fp_text user "5" (at 20 1.25 unlocked) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 29d37ced-1693-4fce-a991-b508060f0dfc) + ) + (fp_text user "1" (at 30 1.25 unlocked) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 3804fc39-2d72-4f7a-9dd6-f57f608400a5) + ) + (fp_text user "20" (at -17.5 1.25 unlocked) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp df917ce8-76f2-4592-b9d9-a6899cc26e5e) + ) + (fp_text user "15" (at -5 1.25 unlocked) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp e2b3c6db-26a0-4a0f-91e3-f3850153add5) + ) + (fp_text user "25" (at -30 1.25 unlocked) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp e9ea92b8-5fc3-45d6-8060-cc143ae0add8) + ) + (fp_text user "50" (at -30 1.25 unlocked) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 0d03cc43-b3c0-44e3-b277-ab5798119472) + ) + (fp_text user "45" (at -17.5 1.25 unlocked) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 6483a61d-b10a-47a8-8abb-aca573d14ee8) + ) + (fp_text user "30" (at 20 1.25 unlocked) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 666b891b-b018-4831-bf52-1949ea9940bc) + ) + (fp_text user "26" (at 30 1.25 unlocked) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 82a93119-2d30-45bb-a052-4a4952078f0b) + ) + (fp_text user "40" (at -5 1.25 unlocked) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 85b192e9-1296-47df-8a8b-8a83605903f9) + ) + (fp_text user "BACK" (at -11.25 1.25 unlocked) (layer "F.SilkS") + (effects (font (size 2 2) (thickness 0.15))) + (tstamp 87b77cd9-8a80-463a-8114-083d84bc0705) + ) + (fp_text user "35" (at 7.5 1.25 unlocked) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp c066cd7d-8290-4a60-bad8-b6ca2a3e6034) + ) + (fp_text user "${REFERENCE}" (at -30 12 unlocked) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp e29fbd41-23d7-49ea-bb95-609e3ee10525) + ) + (fp_poly (pts + (xy 32.25 9.5) + (xy 31.25 10.5) + (xy -31.25 10.5) + (xy -32.25 9.5) + (xy -32.25 3.5) + (xy 32.25 3.5) + ) (layer "B.Mask") (width 0.12) (fill solid) (tstamp f71ffbfe-7487-46f7-9787-7603011b3ed0)) + (fp_poly (pts + (xy 32.25 9.5) + (xy 31.25 10.5) + (xy -31.25 10.5) + (xy -32.25 9.5) + (xy -32.25 3.5) + (xy 32.25 3.5) + ) (layer "F.Mask") (width 0.12) (fill solid) (tstamp 1f797175-97b5-4fed-b82b-5985f9063700)) + (fp_line (start -32.25 9.5) (end -31.25 10.5) (layer "Edge.Cuts") (width 0.1) (tstamp 0bb2bec8-60b9-4621-862e-dd28e83eac02)) + (fp_line (start 31.25 10.5) (end 32.25 9.5) (layer "Edge.Cuts") (width 0.1) (tstamp 2ab0cdef-3157-4105-946f-bd107ad3a90b)) + (fp_line (start 0 10.5) (end 31.25 10.5) (layer "Edge.Cuts") (width 0.1) (tstamp 6ec197e0-b2d8-430a-861c-b9262679c80a)) + (fp_line (start 32.25 9.5) (end 32.25 0) (layer "Edge.Cuts") (width 0.1) (tstamp 86f9672f-2972-4389-8803-0beec1f46b13)) + (fp_line (start -32.25 9.5) (end -32.25 0) (layer "Edge.Cuts") (width 0.1) (tstamp a6c62207-e47b-4cb7-87a4-29e345d3d7b5)) + (fp_line (start 0 10.5) (end -31.25 10.5) (layer "Edge.Cuts") (width 0.1) (tstamp ae8b6961-8107-40d3-955d-29b1e559f30e)) + (pad "1" connect roundrect locked (at 30 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp 5d4cd7a9-9d01-410d-9083-4554f6297a52)) + (pad "2" connect roundrect locked (at 27.5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp d3531ad3-ea7d-429d-956e-ff3da633d95c)) + (pad "3" connect roundrect locked (at 25 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 7 "N64_AD15") (pinfunction "AD15") (pintype "bidirectional") (tstamp 886549e8-81c2-4c47-8464-9e4afcaa7ca4)) + (pad "4" connect roundrect locked (at 22.5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 8 "N64_AD14") (pinfunction "AD14") (pintype "bidirectional") (tstamp 3de3899f-ecd3-4a2a-a1ab-87cef4e94650)) + (pad "5" connect roundrect locked (at 20 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 9 "N64_AD13") (pinfunction "AD13") (pintype "bidirectional") (tstamp c8433008-0d24-4e18-80ed-1ae1b5db5976)) + (pad "6" connect roundrect locked (at 17.5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp 023011fd-8c6b-4c59-927b-38a6b78ac7d1)) + (pad "7" connect roundrect locked (at 15 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 10 "N64_AD12") (pinfunction "AD12") (pintype "bidirectional") (tstamp 0a75f060-9ad0-4ebe-ae07-34bbdb9c610f)) + (pad "8" connect roundrect locked (at 12.5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 70 "~{N64_WRITE}") (pinfunction "~{WRITE}") (pintype "output") (tstamp 826883eb-791a-4f94-b3a6-d07e9c71fba1)) + (pad "9" connect roundrect locked (at 10 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 51 "N64_3V3") (pinfunction "3V3") (pintype "power_out") (tstamp c46a482e-bfa4-4ed5-a49f-3179709c39a1)) + (pad "10" connect roundrect locked (at 7.5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 71 "~{N64_READ}") (pinfunction "~{READ}") (pintype "output") (tstamp a5424812-224a-4644-80cd-92ea92f4e925)) + (pad "11" connect roundrect locked (at 5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 11 "N64_AD11") (pinfunction "AD11") (pintype "bidirectional") (tstamp 03470583-2232-4b86-bf64-2b41cf6830fa)) + (pad "12" connect roundrect locked (at 2.5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 12 "N64_AD10") (pinfunction "AD10") (pintype "bidirectional") (tstamp c0b69167-0a59-4444-b4cb-8bf56c302e75)) + (pad "13" connect roundrect locked (at 0 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 6 "unconnected-(J_N1-Pad13)") (pinfunction "12V") (pintype "power_out+no_connect") (tstamp 54b537a8-62a1-4be1-9498-f1c4ca3d7436)) + (pad "14" connect roundrect locked (at -2.5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 5 "unconnected-(J_N1-Pad14)") (pinfunction "KEY") (pintype "no_connect") (tstamp 39dd521d-c0d3-4dc3-9f04-954364f19b5c)) + (pad "15" connect roundrect locked (at -5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 13 "N64_AD9") (pinfunction "AD9") (pintype "bidirectional") (tstamp bc2aaecf-ae79-4198-ab1e-39c2988be733)) + (pad "16" connect roundrect locked (at -7.5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 14 "N64_AD8") (pinfunction "AD8") (pintype "bidirectional") (tstamp f1f7556c-fcf2-4b20-867c-8cb0f74b0683)) + (pad "17" connect roundrect locked (at -10 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 51 "N64_3V3") (pinfunction "3V3") (pintype "power_out") (tstamp 19e307b0-9d00-403a-8bb3-c92eee75b593)) + (pad "18" connect roundrect locked (at -12.5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 15 "N64_CIC_DATA") (pinfunction "CIC_DATA") (pintype "bidirectional") (tstamp 35a12103-805d-4405-8e54-4107a0ca3f53)) + (pad "19" connect roundrect locked (at -15 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 16 "N64_PIF_CLK") (pinfunction "PIF_CLK") (pintype "output") (tstamp 53c0fa19-4857-45ef-a0b0-d2d75f95cdd8)) + (pad "20" connect roundrect locked (at -17.5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 72 "~{N64_RESET}") (pinfunction "~{RESET}") (pintype "output") (tstamp 49e9801a-ca64-4887-acaa-1852b72c90b0)) + (pad "21" connect roundrect locked (at -20 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 17 "N64_JOYBUS") (pinfunction "JOYBUS") (pintype "bidirectional") (tstamp ed7edbba-6232-4633-a3d9-aa5db534a6f7)) + (pad "22" connect roundrect locked (at -22.5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp f1a29b82-192c-4de7-a23b-43420d01f97d)) + (pad "23" connect roundrect locked (at -25 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp 7f8fbb93-4f2a-4425-aea4-b1770dc59032)) + (pad "24" connect roundrect locked (at -27.5 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 131 "unconnected-(J_N1-Pad24)") (pinfunction "AUDIO_L") (pintype "input+no_connect") (tstamp d9e327bb-1596-4eec-a37e-dc1a060a7642)) + (pad "25" connect roundrect locked (at -30 6) (size 1.5 7) (layers "B.Cu") (roundrect_rratio 0.03333333333) + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp c3d1cefa-d91a-4950-b899-566ac1f71848)) + (pad "26" connect roundrect locked (at 30 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp abc47acb-1014-4dc0-b4ea-4c6ec1f014cb)) + (pad "27" connect roundrect locked (at 27.5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp ea3686cf-49e2-4eee-bcb5-157cb4912daa)) + (pad "28" connect roundrect locked (at 25 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 18 "N64_AD0") (pinfunction "AD0") (pintype "bidirectional") (tstamp 378cfa89-f09c-4c8c-af77-cd02a8552a7a)) + (pad "29" connect roundrect locked (at 22.5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 19 "N64_AD1") (pinfunction "AD1") (pintype "bidirectional") (tstamp a7acf19a-b646-4516-930d-cc3a712cfb93)) + (pad "30" connect roundrect locked (at 20 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 20 "N64_AD2") (pinfunction "AD2") (pintype "bidirectional") (tstamp 74afa8b0-4911-4ea3-a426-5a8473b668c7)) + (pad "31" connect roundrect locked (at 17.5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp 61d94332-0639-4424-8336-c9d6898c23db)) + (pad "32" connect roundrect locked (at 15 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 21 "N64_AD3") (pinfunction "AD3") (pintype "bidirectional") (tstamp 70a0f318-f409-4702-b87e-5a45304f2899)) + (pad "33" connect roundrect locked (at 12.5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 22 "N64_ALEL") (pinfunction "ALEL") (pintype "output") (tstamp 15050c72-4761-4f45-adda-e792a17aff6e)) + (pad "34" connect roundrect locked (at 10 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 51 "N64_3V3") (pinfunction "3V3") (pintype "power_out") (tstamp facc7a1b-48f7-432d-8c99-461c31468767)) + (pad "35" connect roundrect locked (at 7.5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 23 "N64_ALEH") (pinfunction "ALEH") (pintype "output") (tstamp 46fd1604-52c4-4275-97de-e76c2fafee1c)) + (pad "36" connect roundrect locked (at 5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 24 "N64_AD4") (pinfunction "AD4") (pintype "bidirectional") (tstamp 9d88ec4c-16ba-42ca-8cb0-a045e547e117)) + (pad "37" connect roundrect locked (at 2.5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 25 "N64_AD5") (pinfunction "AD5") (pintype "bidirectional") (tstamp a53fdea7-3617-4e29-ba39-1fc4cced14bc)) + (pad "38" connect roundrect locked (at 0 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 4 "unconnected-(J_N1-Pad38)") (pinfunction "12V") (pintype "power_out+no_connect") (tstamp df6a19e9-6359-4874-b780-a07aa80e9e7b)) + (pad "39" connect roundrect locked (at -2.5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 3 "unconnected-(J_N1-Pad39)") (pinfunction "KEY") (pintype "no_connect") (tstamp 85fabedf-a691-4822-be4c-4415cd1d4dcf)) + (pad "40" connect roundrect locked (at -5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 26 "N64_AD6") (pinfunction "AD6") (pintype "bidirectional") (tstamp a3f793ac-c8f8-4b6b-a1a0-68bdc0e9870a)) + (pad "41" connect roundrect locked (at -7.5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 27 "N64_AD7") (pinfunction "AD7") (pintype "bidirectional") (tstamp e5588e62-caec-4581-8753-afa8055836e7)) + (pad "42" connect roundrect locked (at -10 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 51 "N64_3V3") (pinfunction "3V3") (pintype "power_out") (tstamp 0684fa04-c65a-4231-8382-299958b436ea)) + (pad "43" connect roundrect locked (at -12.5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 28 "N64_CIC_CLK") (pinfunction "CIC_CLK") (pintype "output") (tstamp f14c9d55-3fd6-454b-8099-321d8e7884dd)) + (pad "44" connect roundrect locked (at -15 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 73 "~{N64_INT}") (pinfunction "~{INT}") (pintype "output") (tstamp 8e0100ab-5bec-42c9-88a7-058bf79e923b)) + (pad "45" connect roundrect locked (at -17.5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 74 "~{N64_NMI}") (pinfunction "~{NMI}") (pintype "output") (tstamp c17a692d-d9c3-4fb6-bb86-5b6537026a30)) + (pad "46" connect roundrect locked (at -20 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 29 "N64_VIDEO_SYNC") (pinfunction "VIDEO_SYNC") (pintype "output") (tstamp 3c79fe7d-3551-4b1d-b325-197084f4b84b)) + (pad "47" connect roundrect locked (at -22.5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp fd65a7a2-1ecb-46f9-946f-192774b5bf17)) + (pad "48" connect roundrect locked (at -25 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp a529e7ed-8f49-4463-ab2a-c3de3fcceb55)) + (pad "49" connect roundrect locked (at -27.5 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 132 "unconnected-(J_N1-Pad49)") (pinfunction "AUDIO_R") (pintype "input+no_connect") (tstamp 16a6fd43-9f0e-44ac-9133-5182c45db8d2)) + (pad "50" connect roundrect locked (at -30 6) (size 1.5 7) (layers "F.Cu") (roundrect_rratio 0.03333333333) + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp 36d58d7d-a4b8-4f86-acfc-a10a897dba24)) + (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 87a79767-538e-4d08-8134-e360e8713c22) (hatch edge 0.508) + (connect_pads (clearance 0)) + (min_thickness 0.254) + (keepout (tracks allowed) (vias allowed) (pads allowed ) (copperpour allowed) (footprints not_allowed)) + (fill (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 182.25 134.5) + (xy 181.25 135.5) + (xy 118.75 135.5) + (xy 117.75 134.5) + (xy 117.75 124) + (xy 182.25 124) + ) + ) + ) + (zone (net 0) (net_name "") (layer "B.Cu") (tstamp b425b92a-180f-40c3-80f1-78d9319641fc) (hatch edge 0.508) + (connect_pads (clearance 0)) + (min_thickness 0.254) + (keepout (tracks allowed) (vias allowed) (pads allowed ) (copperpour allowed) (footprints not_allowed)) + (fill (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 182.25 134.5) + (xy 181.25 135.5) + (xy 118.75 135.5) + (xy 117.75 134.5) + (xy 117.75 124) + (xy 182.25 124) + ) + ) + ) + ) + + (footprint "sc64v2:TC2050-FP" (layer "F.Cu") + (tedit 61F716F2) (tstamp 97208e50-b896-4df8-8da4-ea2fc6b46da5) + (at 132 80.94 -90) + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (property "exclude_from_bom" "") + (path "/51744168-bfea-4a8e-8692-c99342c4a1b3") + (attr smd exclude_from_bom) + (fp_text reference "J3" (at 3 2.75 unlocked) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 18382497-0224-492a-b35f-f90361f34b68) + ) + (fp_text value "TC2050-FP" (at 3 -4.5 -270 unlocked) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 2e6c0123-06e0-4da5-8471-6a21e382f348) + ) + (fp_text user "${REFERENCE}" (at 9 0 -180 unlocked) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp ad5f95c7-66c0-42fc-b897-3dd71ae9e72d) + ) + (pad "" np_thru_hole circle (at 0 -2.54 270) (size 2.3749 2.3749) (drill 2.3749) (layers F&B.Cu *.Mask) (tstamp 21a67ce2-1d06-4d27-88f6-2f14f00f87d4)) + (pad "" np_thru_hole circle (at 7.62 1.016 270) (size 0.9906 0.9906) (drill 0.9906) (layers F&B.Cu *.Mask) (tstamp 25d0b121-6b40-48f6-a45b-eda610bd7ba4)) + (pad "" np_thru_hole circle (at 5.715 2.54 270) (size 2.3749 2.3749) (drill 2.3749) (layers F&B.Cu *.Mask) (tstamp 2f665c04-b8d3-4200-aea6-f7dfbd45dad5)) + (pad "" np_thru_hole circle (at 5.715 -2.54 270) (size 2.3749 2.3749) (drill 2.3749) (layers F&B.Cu *.Mask) (tstamp 35546445-b28a-4214-b61d-c3f329600a4d)) + (pad "" np_thru_hole circle (at 0 2.54 270) (size 2.3749 2.3749) (drill 2.3749) (layers F&B.Cu *.Mask) (tstamp 3ceba409-ec88-4d3c-b38e-79282c1b320f)) + (pad "" np_thru_hole circle (at 0 0 270) (size 0.9906 0.9906) (drill 0.9906) (layers F&B.Cu *.Mask) (tstamp 456a0b0b-f929-4685-9cbb-f29029921bd6)) + (pad "" np_thru_hole circle (at 7.62 -1.016 270) (size 0.9906 0.9906) (drill 0.9906) (layers F&B.Cu *.Mask) (tstamp 8e43cb05-e61e-44ec-9945-441dd2c1b289)) + (pad "1" smd circle (at 1.27 0.635 270) (size 0.7874 0.7874) (property pad_prop_testpoint) (layers "F.Cu" "F.Mask") + (net 38 "SWCLK") (pinfunction "SWCLK") (pintype "output") (tstamp 8f2aa97c-5272-486d-8068-f5b5adf2014f)) + (pad "2" smd circle (at 2.54 0.635 270) (size 0.7874 0.7874) (property pad_prop_testpoint) (layers "F.Cu" "F.Mask") + (net 37 "SWDIO") (pinfunction "SWDIO") (pintype "bidirectional") (tstamp fa158836-1c16-4475-ac49-a879d6934105)) + (pad "3" smd circle (at 3.81 0.635 270) (size 0.7874 0.7874) (property pad_prop_testpoint) (layers "F.Cu" "F.Mask") + (net 40 "UART_RX") (pinfunction "RX") (pintype "input") (tstamp ce7811b1-0aa4-4f3f-b567-b86827cd4704)) + (pad "4" smd circle (at 5.08 0.635 270) (size 0.7874 0.7874) (property pad_prop_testpoint) (layers "F.Cu" "F.Mask") + (net 39 "UART_TX") (pinfunction "TX") (pintype "output") (tstamp 34d69b8e-5243-453a-9992-25785fb1126e)) + (pad "5" smd circle (at 6.35 0.635 270) (size 0.7874 0.7874) (property pad_prop_testpoint) (layers "F.Cu" "F.Mask") + (net 46 "GND") (pinfunction "GND") (pintype "power_out") (tstamp 99a885b5-8b03-4078-bbb2-f9a5ced4eced)) + (pad "6" smd circle (at 6.35 -0.635 270) (size 0.7874 0.7874) (property pad_prop_testpoint) (layers "F.Cu" "F.Mask") + (net 50 "+3V3") (pinfunction "VCC") (pintype "power_out") (tstamp 6f6be05c-6643-48d2-9120-ce868f8018f9)) + (pad "7" smd circle (at 5.08 -0.635 270) (size 0.7874 0.7874) (property pad_prop_testpoint) (layers "F.Cu" "F.Mask") + (net 41 "JTAG_TDO") (pinfunction "TDO") (pintype "output") (tstamp 1f7a9c9a-0b0c-4eb9-a515-b14f2e96c69d)) + (pad "8" smd circle (at 3.81 -0.635 270) (size 0.7874 0.7874) (property pad_prop_testpoint) (layers "F.Cu" "F.Mask") + (net 42 "JTAG_TDI") (pinfunction "TDI") (pintype "input") (tstamp 79a19541-1c76-4c83-8a47-1770f48127e3)) + (pad "9" smd circle (at 2.54 -0.635 270) (size 0.7874 0.7874) (property pad_prop_testpoint) (layers "F.Cu" "F.Mask") + (net 43 "JTAG_TCK") (pinfunction "TCK") (pintype "output") (tstamp ce49b81f-7e9c-47f7-8587-daed1d8b14e9)) + (pad "10" smd circle (at 1.27 -0.635 270) (size 0.7874 0.7874) (property pad_prop_testpoint) (layers "F.Cu" "F.Mask") + (net 44 "JTAG_TMS") (pinfunction "TMS") (pintype "output") (tstamp 65b5559d-a027-46ec-9f9a-e3b73214fae4)) + (zone (net 0) (net_name "") (layer "F.Cu") (tstamp d447e5cb-6b7b-44f7-b105-615c656a2052) (hatch edge 0.508) + (connect_pads (clearance 0)) + (min_thickness 0.254) + (keepout (tracks allowed) (vias allowed) (pads allowed ) (copperpour not_allowed) (footprints allowed)) + (fill (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 131.365 87.29) + (xy 131.365 82.21) + (xy 132.635 82.21) + (xy 132.635 87.29) + ) + ) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 9c39837b-e9ba-4d66-bd86-6117c5138f51) + (at 122.5 101.25 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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/38f041d3-336d-4c45-9e25-efeece1e2340") + (attr smd) + (fp_text reference "R9" (at 2.75 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 24e3454d-163b-45a9-9a1d-ef72708283f1) + ) + (fp_text value "5.1k" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d20ebd14-f580-4afc-bd76-d42fc9ff7fd5) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 3e397f2a-adcb-4f41-8588-8968c3e0458f) + ) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp 5a2b832f-a115-4ea5-9e49-fced8c465331)) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "F.SilkS") (width 0.12) (tstamp 6811b311-024a-4f0d-b3c6-c2720b862f56)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 024f077a-d9c7-4fff-8b6a-6d35592ce8cc)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 2813d2b1-f2d5-43e3-93b9-78f5fde71fa8)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 5a3286ef-e21b-4281-9b00-f53b66c8c516)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp becdfdff-a39d-4c59-9c6c-c669cb8b040c)) + (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 45d4b33c-1b96-488b-aea8-432eb6983b17)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 45f754e9-ddab-4988-97ff-174b9ceb1c87)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 61101d92-a4de-459b-94c8-23733da11f51)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp a4c548e6-fa84-405d-ba9c-8f38da9ecdca)) + (pad "1" smd roundrect (at -0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 125 "FTDI_C7") (pintype "passive") (tstamp 3a14da04-fc1a-44ad-a1b5-fff5a6d576db)) + (pad "2" smd roundrect (at 0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 52 "+5V") (pintype "passive") (tstamp c2610aeb-6217-41c4-9da7-e64d2684e841)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0805_2012Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 9d01f6c8-93d0-4db8-a08f-09eb826bd5f6) + (at 116.75 110.75 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/4d57f96b-3724-40e6-ab93-f23413cb8642") + (attr smd) + (fp_text reference "C4" (at -2.75 0 90) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 48dbf7f8-ccee-4a07-a0b9-da592e8c0bf9) + ) + (fp_text value "47uF" (at 0 1.68 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 7c24740a-e2dd-488f-9544-a4692ce03ba4) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp cf28c211-86b4-424b-95de-7501e16f7a2d) + ) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer "F.SilkS") (width 0.12) (tstamp 27065e09-a48c-4abc-8f82-cd8f967ea7d9)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer "F.SilkS") (width 0.12) (tstamp b1777de2-bbf1-4265-b4a2-1f9444d5a152)) + (fp_line (start 1.7 0.98) (end -1.7 0.98) (layer "F.CrtYd") (width 0.05) (tstamp 14865317-3ce1-4d4d-a55a-29169330f4e8)) + (fp_line (start -1.7 -0.98) (end 1.7 -0.98) (layer "F.CrtYd") (width 0.05) (tstamp 291534b4-07db-44a3-8b53-3aeecf28e652)) + (fp_line (start -1.7 0.98) (end -1.7 -0.98) (layer "F.CrtYd") (width 0.05) (tstamp d82b3c17-7c41-4e46-9fb9-4486c206368b)) + (fp_line (start 1.7 -0.98) (end 1.7 0.98) (layer "F.CrtYd") (width 0.05) (tstamp f1f5f508-e392-4bd3-be76-e96e89e0a973)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 059864fc-b7ed-48e6-b5a4-0398b0206348)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 31ff4587-96a5-47f8-9613-6122b8611c87)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 620f1b14-32b4-437b-acd7-7ddf6c3a9291)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp e268d06e-c156-4c6b-b211-24feefa5470d)) + (pad "1" smd roundrect (at -0.95 0 90) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp fcbc0219-c9d2-4b03-a838-71fb2940a22d)) + (pad "2" smd roundrect (at 0.95 0 90) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 816969a7-3552-4174-83d1-1a9e19b02d7f)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp b62b630a-2ad0-40fd-91aa-cc3ce5f1da57) + (at 118.75 117.25 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/8875e69d-d89e-41ba-bde2-45767e9df445") + (attr smd) + (fp_text reference "C6" (at 2.75 0 90) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 3017a899-d6a7-4854-8ce5-01f8810b6e3d) + ) + (fp_text value "100nF" (at 0 1.43 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 75e31b99-395b-4524-833e-b7192a4cce54) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 0c1bd035-a2b7-4b56-aab1-c4de8a853547) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "F.SilkS") (width 0.12) (tstamp 33744e0c-6340-4847-b155-5a1fc06298c9)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "F.SilkS") (width 0.12) (tstamp 9148d1da-7d68-4cd5-9dd4-6731174a4355)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 1a004572-bf4e-4b55-ae27-9bd1cc6aadd1)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 2c0e1d21-88bd-4ea8-9f33-8970367277ea)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp bbcd4749-0e0a-4953-8fba-2e3faa1ead8b)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp d54e3ebf-9446-448a-bb00-2c93229f6771)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp 80780af0-6d8b-4697-b5c7-c1abea18584f)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 917d057a-bb35-40a6-8203-a8380bffc477)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp 96e904cc-4257-4557-9e3c-3458e42b885d)) + (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp c2092e07-5458-4baf-be07-b5066fb8a7b5)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 51 "N64_3V3") (pintype "passive") (tstamp 5c97f08b-dd59-4ab1-bc9d-ba519653b7cb)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 71929d14-3717-4b37-85c8-d8d73e9c17f5)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp b73ca8cb-72bb-4b0f-96cb-baddcfbe81e4) + (at 122.5 108.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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/f47d1b56-1473-4960-b027-88c1d1af2f5a") + (attr smd) + (fp_text reference "R10" (at 3.25 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 6df89c7b-7121-4f18-b8f0-9e8be87ebcaa) + ) + (fp_text value "2.2k" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 6a70286d-e197-40fa-b074-c66226a4a085) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp cd5a7e97-0dab-49c1-8d9c-78347484c0a6) + ) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "F.SilkS") (width 0.12) (tstamp 53baa137-7981-47dc-8c7f-66bece97e52b)) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp 91735ea5-853d-4dbd-8704-ba57d73075b0)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 903798cf-bce6-4942-873a-9294370987a1)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp a5fb5044-dd92-4baf-877d-3197fd06bb79)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp b92b97db-bcb8-4d62-a86c-cd845471d7bb)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp e0f46275-3950-4ae7-8f48-f8266e8ac5f3)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 398732b2-ef19-43ab-b5d7-4260c06e0078)) + (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 538c8d1c-ae5f-420d-8195-2fe0d10d0799)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 5640c9e1-a7fc-4089-8482-037c5aa21fdd)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp ed75817f-bee3-4a50-b2e5-13b51c6166a5)) + (pad "1" smd roundrect (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 143 "Net-(R10-Pad1)") (pintype "passive") (tstamp b661a003-258b-4b1a-a94d-314c012750f4)) + (pad "2" smd roundrect (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 144 "USB_EEDATA") (pintype "passive") (tstamp f4f6c50a-1a43-4084-aac4-65443fd3ccc4)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_TO_SOT_SMD:SOT-223-3_TabPin2" (layer "F.Cu") + (tedit 5A02FF57) (tstamp b8eca2b9-5fdd-486b-99c7-ea2929826016) + (at 111 105.5) + (descr "module CMS SOT223 4 pins") + (tags "CMS SOT") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/2d0fed17-815d-432f-a7eb-ae8520ef2c33") + (zone_connect 2) + (attr smd) + (fp_text reference "U1" (at 0 -4.25) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp ba027193-a0a8-4a4b-a5a4-87184e4a3561) + ) + (fp_text value "TC1264-3.3VDB" (at -5 0 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp adaee13f-562e-4da0-8885-e0caceed26ff) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 0.8 0.8) (thickness 0.12))) + (tstamp 3bdf0db5-95fa-40cc-b340-ff31b9761a6f) + ) + (fp_line (start 1.91 -3.41) (end 1.91 -2.15) (layer "F.SilkS") (width 0.12) (tstamp 00c921d2-37c1-4153-beff-ba96ae5ab1bf)) + (fp_line (start -1.85 3.41) (end 1.91 3.41) (layer "F.SilkS") (width 0.12) (tstamp b1dc0135-6766-43e8-a2ab-282dda6670a5)) + (fp_line (start 1.91 3.41) (end 1.91 2.15) (layer "F.SilkS") (width 0.12) (tstamp b920d34b-6658-4c8c-9982-36cb5b4da1bd)) + (fp_line (start -4.1 -3.41) (end 1.91 -3.41) (layer "F.SilkS") (width 0.12) (tstamp e20c1003-6f8a-4159-a10b-d8684e8602d2)) + (fp_line (start 4.4 3.6) (end 4.4 -3.6) (layer "F.CrtYd") (width 0.05) (tstamp 27446558-7788-4f7c-b16e-3d9d0f2eff8e)) + (fp_line (start -4.4 -3.6) (end -4.4 3.6) (layer "F.CrtYd") (width 0.05) (tstamp 3dd825c1-406d-4bf9-98b1-759302ff2ecc)) + (fp_line (start -4.4 3.6) (end 4.4 3.6) (layer "F.CrtYd") (width 0.05) (tstamp adea7937-94ae-4a25-a416-6214a86d5848)) + (fp_line (start 4.4 -3.6) (end -4.4 -3.6) (layer "F.CrtYd") (width 0.05) (tstamp faa6f73e-98f5-4973-8a4d-08d85f5fef86)) + (fp_line (start -0.85 -3.35) (end 1.85 -3.35) (layer "F.Fab") (width 0.1) (tstamp 25cf6537-642d-49e7-89ca-890d4b1e81cd)) + (fp_line (start 1.85 -3.35) (end 1.85 3.35) (layer "F.Fab") (width 0.1) (tstamp a441fca0-92ad-486a-a70d-7e9cc4d7faec)) + (fp_line (start -1.85 -2.35) (end -0.85 -3.35) (layer "F.Fab") (width 0.1) (tstamp ae6b7e20-53ba-45a7-af97-a6611cebda7b)) + (fp_line (start -1.85 -2.35) (end -1.85 3.35) (layer "F.Fab") (width 0.1) (tstamp c159ac8b-7ba9-4657-9e20-1388037b4e72)) + (fp_line (start -1.85 3.35) (end 1.85 3.35) (layer "F.Fab") (width 0.1) (tstamp d8201216-8798-430e-a5fd-6984f54fdfc0)) + (pad "1" smd rect locked (at -3.15 -2.3) (size 2 1.5) (layers "F.Cu" "F.Paste" "F.Mask") + (net 52 "+5V") (pinfunction "VI") (pintype "power_in") (tstamp b305e328-b839-487f-bbe4-25b5e340425d)) + (pad "2" smd rect locked (at 3.15 0) (size 2 3.8) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 264978ea-23af-4d8b-b83c-9843d7076f6a)) + (pad "2" smd rect locked (at -3.15 0) (size 2 1.5) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp b049bbf8-521b-4e4a-a54f-ff317142ab96)) + (pad "3" smd rect locked (at -3.15 2.3) (size 2 1.5) (layers "F.Cu" "F.Paste" "F.Mask") + (net 136 "Net-(C3-Pad1)") (pinfunction "VO") (pintype "power_out") (tstamp 0e0b3902-c476-4a75-95a7-168d2374cd7d)) + (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-223.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Oscillator:Oscillator_SMD_SeikoEpson_SG8002CE-4Pin_3.2x2.5mm" (layer "F.Cu") + (tedit 58CD3345) (tstamp bfcb654e-4ad7-4a0f-a144-17954a18fef7) + (at 140 93.75) + (descr "SMD Crystal Oscillator Seiko Epson SG-8002CE https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-8002DC, 3.2x2.5mm^2 package") + (tags "SMD SMT crystal oscillator") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/fd95e6e1-2b37-4604-8f85-981efac5e15c") + (attr smd) + (fp_text reference "X2" (at -3.5 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 2400e8d9-88fb-499d-90ff-9426f2f33639) + ) + (fp_text value "ECS-3225MV-500-BN" (at 0 2.55) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp bd00a43f-0d7d-4792-966a-8fbd4465035a) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.7 0.7) (thickness 0.105))) + (tstamp 858b530f-5695-4201-adb4-62e744cfbc34) + ) + (fp_circle (center 0 0) (end 0.133333 0) (layer "F.Adhes") (width 0.083333) (fill none) (tstamp 11110978-d822-4ca0-925c-510be691ffb1)) + (fp_circle (center 0 0) (end 0.208333 0) (layer "F.Adhes") (width 0.083333) (fill none) (tstamp 8e5ae4de-ddb1-4d83-8dea-7a43dd4d204d)) + (fp_circle (center 0 0) (end 0.058333 0) (layer "F.Adhes") (width 0.116667) (fill none) (tstamp 999bf80e-3d98-4ae7-bb44-0af7b4ebd53f)) + (fp_circle (center 0 0) (end 0.25 0) (layer "F.Adhes") (width 0.1) (fill none) (tstamp d7f434f4-d2f5-4ce9-94cb-67fc883bafe2)) + (fp_line (start -2.1 1.75) (end 2.1 1.75) (layer "F.SilkS") (width 0.12) (tstamp 87e1ac8f-2d27-4ece-948e-eeb04d232307)) + (fp_line (start -2.1 -1.75) (end -2.1 1.75) (layer "F.SilkS") (width 0.12) (tstamp af97f458-9b18-4e0a-9c28-c054428c4654)) + (fp_line (start 2.2 -1.8) (end -2.2 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 221a45a0-5e83-443d-b3f3-50b1f35eee69)) + (fp_line (start -2.2 1.8) (end 2.2 1.8) (layer "F.CrtYd") (width 0.05) (tstamp 3ea7494f-78a7-4ed9-9654-ee0e6caec508)) + (fp_line (start -2.2 -1.8) (end -2.2 1.8) (layer "F.CrtYd") (width 0.05) (tstamp 45f7b609-cc0d-4831-982c-d26c574d92a6)) + (fp_line (start 2.2 1.8) (end 2.2 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp d3a9967c-8ccb-45db-8fa0-33fecf12c639)) + (fp_line (start -1.5 1.25) (end -1.6 1.15) (layer "F.Fab") (width 0.1) (tstamp 0742a9e5-7586-4255-8261-d833940b3e92)) + (fp_line (start 1.5 1.25) (end -1.5 1.25) (layer "F.Fab") (width 0.1) (tstamp 0e71e918-2d0e-4ab0-838f-2e3fe16e1a06)) + (fp_line (start -1.6 -1.15) (end -1.5 -1.25) (layer "F.Fab") (width 0.1) (tstamp 0f50bba4-5852-4888-af72-fc27f258d45a)) + (fp_line (start -1.6 0.25) (end -0.6 1.25) (layer "F.Fab") (width 0.1) (tstamp 64fb210f-1eee-4332-b0c1-5ba56d1a4fea)) + (fp_line (start 1.5 -1.25) (end 1.6 -1.15) (layer "F.Fab") (width 0.1) (tstamp 932d2bec-5e70-491f-83e0-aa3019ce2286)) + (fp_line (start 1.6 -1.15) (end 1.6 1.15) (layer "F.Fab") (width 0.1) (tstamp c330a2e9-7579-48f1-a297-becab4bd4fc5)) + (fp_line (start -1.6 1.15) (end -1.6 -1.15) (layer "F.Fab") (width 0.1) (tstamp ef22aac6-318e-428d-b1c0-a4eed1860bf2)) + (fp_line (start -1.5 -1.25) (end 1.5 -1.25) (layer "F.Fab") (width 0.1) (tstamp f129adbd-76c8-4c55-9b74-139d50f715bb)) + (fp_line (start 1.6 1.15) (end 1.5 1.25) (layer "F.Fab") (width 0.1) (tstamp fe8da216-7ab2-46f6-b849-16fd35a1c9d5)) + (pad "1" smd rect (at -1.2 0.95) (size 1.4 1.2) (layers "F.Cu" "F.Paste" "F.Mask") + (net 2 "unconnected-(X2-Pad1)") (pinfunction "EN") (pintype "input+no_connect") (tstamp 04fd6d55-2bc4-4421-858c-4b6b50f9e66c)) + (pad "2" smd rect (at 1.2 0.95) (size 1.4 1.2) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp b02db1a5-bb3f-46b4-b59a-60d886a78d9d)) + (pad "3" smd rect (at 1.2 -0.95) (size 1.4 1.2) (layers "F.Cu" "F.Paste" "F.Mask") + (net 91 "FPGA_CLK") (pinfunction "OUT") (pintype "output") (tstamp 74ffcbad-d628-4b16-ab39-550457caeca0)) + (pad "4" smd rect (at -1.2 -0.95) (size 1.4 1.2) (layers "F.Cu" "F.Paste" "F.Mask") + (net 50 "+3V3") (pinfunction "V+") (pintype "power_in") (tstamp 979ab94f-5abb-49d2-8914-3c090cbd6724)) + (model "${KICAD6_3DMODEL_DIR}/Oscillator.3dshapes/Oscillator_SMD_SeikoEpson_SG8002CE-4Pin_3.2x2.5mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + (model "${KICAD6_3DMODEL_DIR}/Crystal.3dshapes/Crystal_SMD_SeikoEpson_TSX3225-4Pin_3.2x2.5mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp bffccaf5-5117-4e0d-9369-6db98e9ab9ac) + (at 110 99.25) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/23f0bb46-eb5d-4798-b7ac-fd1aad5c7d6a") + (attr smd) + (fp_text reference "C2" (at 2.75 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp bd517d11-5cf6-4e78-9c07-b60661078220) + ) + (fp_text value "100nF" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp ef309c72-c931-44bb-9f9f-007084e06234) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 6a8e01b0-db99-4b46-b4aa-2a9fb1e3be5b) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "F.SilkS") (width 0.12) (tstamp 454d83bf-fab3-4e47-9f84-ac32d9bc075a)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "F.SilkS") (width 0.12) (tstamp b97243b7-fc3f-4bc3-b4dc-efdb170642cf)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 2a0044f7-26f9-44eb-9d2b-8bdfee35b952)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 5350dd23-887f-4074-bbcb-22fc75f677ba)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 6e37345c-829f-4db8-b459-ca93a1797df5)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp bea8e616-c7cc-4998-8d40-0f932cdf52ff)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp 44bace34-020e-4e63-80d6-63490d3ad599)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp 4bd14e0a-6199-4983-b511-33c720882a75)) + (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 8bfaf516-874a-42b3-bab2-7567ab59b39d)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp d351b1a7-fb3b-46b8-9e6e-d5225d086e07)) + (pad "1" smd roundrect (at -0.775 0) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 52 "+5V") (pintype "passive") (tstamp 9457164b-eee1-4d3c-b2fb-d1f46e5fad05)) + (pad "2" smd roundrect (at 0.775 0) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp b4b82ef4-c5df-46d4-9c0b-b40b2fc5e691)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Oscillator:Oscillator_SMD_SeikoEpson_SG8002CE-4Pin_3.2x2.5mm" (layer "F.Cu") + (tedit 58CD3345) (tstamp c1c99cdf-2c23-4940-af9f-b1a7497acbc8) + (at 127 114.25) + (descr "SMD Crystal Oscillator Seiko Epson SG-8002CE https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-8002DC, 3.2x2.5mm^2 package") + (tags "SMD SMT crystal oscillator") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/a73f4f5a-6e4d-472e-9b51-954e3d116bd7") + (attr smd) + (fp_text reference "X1" (at -3.5 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp dfc34f46-4996-4095-b590-1195563e1ac7) + ) + (fp_text value "ECS-3225MV-120-CN" (at 0 2.55) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 739a0ce1-5bca-466c-8a05-d7fc790eaded) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.7 0.7) (thickness 0.105))) + (tstamp 175549c7-bd7f-428a-90e1-6c01457690f2) + ) + (fp_circle (center 0 0) (end 0.133333 0) (layer "F.Adhes") (width 0.083333) (fill none) (tstamp 0107a097-3e56-4feb-86aa-b00a4419b74d)) + (fp_circle (center 0 0) (end 0.208333 0) (layer "F.Adhes") (width 0.083333) (fill none) (tstamp 3a6aec1b-2781-44b0-949e-2cd972f4ab48)) + (fp_circle (center 0 0) (end 0.25 0) (layer "F.Adhes") (width 0.1) (fill none) (tstamp a8bd8d25-d868-4711-b98d-68b7c80e1dbf)) + (fp_circle (center 0 0) (end 0.058333 0) (layer "F.Adhes") (width 0.116667) (fill none) (tstamp b77fcc32-460c-4f2b-83cb-3ec681142ce6)) + (fp_line (start -2.1 1.75) (end 2.1 1.75) (layer "F.SilkS") (width 0.12) (tstamp 81ed5e72-6abc-4a01-9e4c-a4ed3eb1cecc)) + (fp_line (start -2.1 -1.75) (end -2.1 1.75) (layer "F.SilkS") (width 0.12) (tstamp 94a7f8e5-9a31-437f-99e6-45b0d72eba83)) + (fp_line (start -2.2 -1.8) (end -2.2 1.8) (layer "F.CrtYd") (width 0.05) (tstamp 1483cdbb-96c0-4440-a03f-d5c256f3559f)) + (fp_line (start -2.2 1.8) (end 2.2 1.8) (layer "F.CrtYd") (width 0.05) (tstamp 1a489ad7-20ef-4130-b7a2-7214996b0498)) + (fp_line (start 2.2 1.8) (end 2.2 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 9de43a43-3a3c-48cf-9d67-42ab71b99d99)) + (fp_line (start 2.2 -1.8) (end -2.2 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp bac7c6af-8146-4662-a942-28e0172bdaad)) + (fp_line (start -1.6 1.15) (end -1.6 -1.15) (layer "F.Fab") (width 0.1) (tstamp 18dd9e01-fc69-4980-8984-c0c1495e8e78)) + (fp_line (start 1.6 -1.15) (end 1.6 1.15) (layer "F.Fab") (width 0.1) (tstamp 3977c122-0d76-4359-9073-1b73a3b9171a)) + (fp_line (start -1.6 -1.15) (end -1.5 -1.25) (layer "F.Fab") (width 0.1) (tstamp 536fa033-b489-4d93-bcfb-a41136b29c21)) + (fp_line (start -1.5 1.25) (end -1.6 1.15) (layer "F.Fab") (width 0.1) (tstamp 68e77337-8500-4502-bc75-38eec64058bc)) + (fp_line (start 1.5 1.25) (end -1.5 1.25) (layer "F.Fab") (width 0.1) (tstamp 821cdc8b-cc6d-40f7-b00b-0340c5eeab5b)) + (fp_line (start -1.6 0.25) (end -0.6 1.25) (layer "F.Fab") (width 0.1) (tstamp 9640393f-683d-4793-a0d4-7ad128569025)) + (fp_line (start 1.5 -1.25) (end 1.6 -1.15) (layer "F.Fab") (width 0.1) (tstamp 9b99f0ee-7634-4be5-905a-24631a7e4fdb)) + (fp_line (start -1.5 -1.25) (end 1.5 -1.25) (layer "F.Fab") (width 0.1) (tstamp a4556954-a0e5-46a3-856d-333455062ed9)) + (fp_line (start 1.6 1.15) (end 1.5 1.25) (layer "F.Fab") (width 0.1) (tstamp e35e4bb3-7082-4416-8b26-19d2a115c3dd)) + (pad "1" smd rect (at -1.2 0.95) (size 1.4 1.2) (layers "F.Cu" "F.Paste" "F.Mask") + (net 1 "unconnected-(X1-Pad1)") (pinfunction "EN") (pintype "input+no_connect") (tstamp 3dd7ab25-c7b2-42fe-870e-d2b9bb83f3d8)) + (pad "2" smd rect (at 1.2 0.95) (size 1.4 1.2) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 92b50eac-e787-47fc-84a1-d88e1884ddfc)) + (pad "3" smd rect (at 1.2 -0.95) (size 1.4 1.2) (layers "F.Cu" "F.Paste" "F.Mask") + (net 145 "USB_CLK") (pinfunction "OUT") (pintype "output") (tstamp 84b42302-301d-407b-be46-72e51b64cfc3)) + (pad "4" smd rect (at -1.2 -0.95) (size 1.4 1.2) (layers "F.Cu" "F.Paste" "F.Mask") + (net 50 "+3V3") (pinfunction "V+") (pintype "power_in") (tstamp f315edd5-9b0e-4bac-96a2-1ec6c0307b57)) + (model "${KICAD6_3DMODEL_DIR}/Oscillator.3dshapes/Oscillator_SMD_SeikoEpson_SG8002CE-4Pin_3.2x2.5mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + (model "${KICAD6_3DMODEL_DIR}/Crystal.3dshapes/Crystal_SMD_SeikoEpson_TSX3225-4Pin_3.2x2.5mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm" (layer "F.Cu") + (tedit 5E476F32) (tstamp c9098210-56d2-47de-9119-39fa6c06c27d) + (at 158 84.75) + (descr "TSSOP, 20 Pin (JEDEC MO-153 Var AC https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py") + (tags "TSSOP SO") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/8a46818f-80b6-48c6-9d8f-04eb3e3ccdb1") + (attr smd) + (fp_text reference "U6" (at 0 -4.2) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 22a87442-825f-470c-832d-92354598fa07) + ) + (fp_text value "STM32G030F6P6" (at 0 4.2) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 181df7f3-7bd5-4953-8aa0-52e70b4cdda9) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 41808856-4e18-41ee-9195-b99dd2cf2bb8) + ) + (fp_line (start 0 -3.385) (end 2.2 -3.385) (layer "F.SilkS") (width 0.12) (tstamp 032e55f6-e466-482d-a6c7-1b653691f5c3)) + (fp_line (start 0 -3.385) (end -3.6 -3.385) (layer "F.SilkS") (width 0.12) (tstamp 067a9840-9e86-478d-bd31-a4ee2d96544b)) + (fp_line (start 0 3.385) (end 2.2 3.385) (layer "F.SilkS") (width 0.12) (tstamp 675f100e-e701-4262-86ec-3c0a1f0dcb43)) + (fp_line (start 0 3.385) (end -2.2 3.385) (layer "F.SilkS") (width 0.12) (tstamp 8004e0ba-3dd4-4bf9-9f62-e1a7788f10f5)) + (fp_line (start -3.85 -3.5) (end -3.85 3.5) (layer "F.CrtYd") (width 0.05) (tstamp 45b9cb40-dfaf-444c-8962-7408b5da52ce)) + (fp_line (start 3.85 -3.5) (end -3.85 -3.5) (layer "F.CrtYd") (width 0.05) (tstamp c8577024-d645-4cf9-b69e-d83703db82d4)) + (fp_line (start 3.85 3.5) (end 3.85 -3.5) (layer "F.CrtYd") (width 0.05) (tstamp d4f2cfb6-524d-422b-b1f1-cd6683ae92ab)) + (fp_line (start -3.85 3.5) (end 3.85 3.5) (layer "F.CrtYd") (width 0.05) (tstamp de913da6-f5b2-4208-b922-30025eba791c)) + (fp_line (start 2.2 -3.25) (end 2.2 3.25) (layer "F.Fab") (width 0.1) (tstamp 12318a57-1be9-400d-b439-d21008059281)) + (fp_line (start -2.2 3.25) (end -2.2 -2.25) (layer "F.Fab") (width 0.1) (tstamp 430e95c9-4229-4c3a-8b68-c4db22ebbdd8)) + (fp_line (start -1.2 -3.25) (end 2.2 -3.25) (layer "F.Fab") (width 0.1) (tstamp 912a927e-ffea-4e0d-9df8-b2c238b7cf4f)) + (fp_line (start 2.2 3.25) (end -2.2 3.25) (layer "F.Fab") (width 0.1) (tstamp b90cbad1-5060-4d97-87df-dc1ef9ea6335)) + (fp_line (start -2.2 -2.25) (end -1.2 -3.25) (layer "F.Fab") (width 0.1) (tstamp c99f9c19-70ff-4cff-9876-0e333fb4345f)) + (pad "1" smd roundrect (at -2.8625 -2.925) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 47 "I2C_SDA") (pinfunction "PB7/PB8") (pintype "bidirectional") (tstamp 82e01682-fbb1-427d-ad00-e4ee267e8876)) + (pad "2" smd roundrect (at -2.8625 -2.275) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 49 "RTC_MFP") (pinfunction "PB9/PC14-OSC32_IN") (pintype "bidirectional") (tstamp d90e3549-41e5-4bf7-afd7-049e4d1b0fe8)) + (pad "3" smd roundrect (at -2.8625 -1.625) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 151 "unconnected-(U6-Pad3)") (pinfunction "PC15-OSC32_OUT") (pintype "bidirectional+no_connect") (tstamp fbe9efea-fa8c-4de0-9d49-6a96c47a5978)) + (pad "4" smd roundrect (at -2.8625 -0.975) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "VDD/VDDA") (pintype "power_in") (tstamp 185596a0-f601-41b9-9300-235f3f38763f)) + (pad "5" smd roundrect (at -2.8625 -0.325) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "VSS/VSSA") (pintype "power_in") (tstamp 322d2042-8cef-4887-99a6-19a63a44e0d0)) + (pad "6" smd roundrect (at -2.8625 0.325) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 157 "Net-(R13-Pad1)") (pinfunction "NRST") (pintype "input") (tstamp 8fff959a-e307-4969-b2f6-4169b2c44326)) + (pad "7" smd roundrect (at -2.8625 0.975) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 72 "~{N64_RESET}") (pinfunction "PA0") (pintype "bidirectional") (tstamp 9869fac5-317d-466c-af8e-82444fe44ed6)) + (pad "8" smd roundrect (at -2.8625 1.625) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 28 "N64_CIC_CLK") (pinfunction "PA1") (pintype "bidirectional") (tstamp ae0839c6-a525-4874-8eae-9ac946a29701)) + (pad "9" smd roundrect (at -2.8625 2.275) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 15 "N64_CIC_DATA") (pinfunction "PA2") (pintype "bidirectional") (tstamp 3969a464-7ee0-4c38-b2e6-2ea21b9b1dcf)) + (pad "10" smd roundrect (at -2.8625 2.925) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 122 "LED") (pinfunction "PA3") (pintype "bidirectional") (tstamp 5bd83b29-62ca-44eb-8f31-8e8daf31e9a1)) + (pad "11" smd roundrect (at 2.8625 2.925) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 92 "MCU_CS") (pinfunction "PA4") (pintype "bidirectional") (tstamp 8749dd7f-9f91-49df-9b62-446ec4fea0d5)) + (pad "12" smd roundrect (at 2.8625 2.275) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 134 "MCU_SCLK") (pinfunction "PA5") (pintype "bidirectional") (tstamp 36bd1f3b-03c7-4a26-9361-26cea99c50f5)) + (pad "13" smd roundrect (at 2.8625 1.625) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 94 "MCU_MISO") (pinfunction "PA6") (pintype "bidirectional") (tstamp 5b757afb-009d-494f-b81d-5d7499ec4246)) + (pad "14" smd roundrect (at 2.8625 0.975) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 93 "MCU_MOSI") (pinfunction "PA7") (pintype "bidirectional") (tstamp 1a9cba95-a3b8-4932-9221-d5b0bd593b13)) + (pad "15" smd roundrect (at 2.8625 0.325) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 95 "MCU_INT") (pinfunction "PB0/PB1/PB2/PA8") (pintype "bidirectional") (tstamp 0d45ef55-1936-4b97-929a-c3efc35bb4ab)) + (pad "16" smd roundrect (at 2.8625 -0.325) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 39 "UART_TX") (pinfunction "PA11[PA9]") (pintype "bidirectional") (tstamp 815b243b-ab49-48a5-8c6b-2da396e03504)) + (pad "17" smd roundrect (at 2.8625 -0.975) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 40 "UART_RX") (pinfunction "PA12[PA10]") (pintype "bidirectional") (tstamp 4a70c3a0-c5f9-494d-8e3f-004a241b3cbf)) + (pad "18" smd roundrect (at 2.8625 -1.625) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 37 "SWDIO") (pinfunction "PA13") (pintype "bidirectional") (tstamp f065770f-73a1-47b0-96df-492c13f6655f)) + (pad "19" smd roundrect (at 2.8625 -2.275) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 38 "SWCLK") (pinfunction "PA15/PA14-BOOT0") (pintype "bidirectional") (tstamp 16552311-a4f5-43ea-9320-58453e63ef4d)) + (pad "20" smd roundrect (at 2.8625 -2.925) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 48 "I2C_SCL") (pinfunction "PB3/PB4/PB5/PB6") (pintype "bidirectional") (tstamp 01958f24-8f90-47f6-a931-a560e2111a2e)) + (model "${KICAD6_3DMODEL_DIR}/Package_SO.3dshapes/TSSOP-20_4.4x6.5mm_P0.65mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp e2915d5d-cb0e-43f9-b878-16340bc0edc3) + (at 107.825 120.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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/f29baa2d-b8f7-45f8-96ad-5b304188d80b") + (attr smd) + (fp_text reference "R3" (at 2.675 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 98e75b74-3dc9-4a2c-999c-e9e6cb1448ad) + ) + (fp_text value "470R" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 2f417a7e-add7-4fb4-b9e4-8eaa9cad3994) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp c9c99d14-fbd2-41a1-aafc-eefdbc3e219a) + ) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp 129ad2a7-160f-4e37-90aa-bc0cd30b2e90)) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "F.SilkS") (width 0.12) (tstamp 9fd7fa2f-1d74-49e0-8e72-c2ad02b88d74)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 6af0104c-8bc6-45e3-919f-e1d40cf470be)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 86fcd482-1de5-4d13-a4a5-ff025ffb0d27)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp fba7ebc8-f542-42b0-b30f-209523365f00)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp fc00c967-487d-431b-b758-78c92f44c68a)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 04101976-aa6f-492e-aaa2-281dff642db6)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 18a5d58a-32be-4a61-958e-b8bbd264006d)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp e255a493-2708-4f43-be75-ca4b7d3ce91f)) + (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp efe79cd2-696c-43f1-92bf-cab31ead8397)) + (pad "1" smd roundrect (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 142 "Net-(R3-Pad1)") (pintype "passive") (tstamp 893b3462-a53a-48e9-801d-50d34e881255)) + (pad "2" smd roundrect (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp c5c6026e-2ca9-42e7-b14c-bd386a62ab2d)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "TestPoint:TestPoint_Pad_D1.5mm" (layer "F.Cu") + (tedit 5A0F774F) (tstamp e322e877-fa4b-40a1-b9eb-04bd2db5ed6c) + (at 141 116) + (descr "SMD pad as test Point, diameter 1.5mm") + (tags "test point SMD pad") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (property "exclude_from_bom" "") + (path "/e3a53687-1d2c-4f55-a6dc-3cb068c0e853") + (attr exclude_from_pos_files exclude_from_bom) + (fp_text reference "TP3" (at 3 0) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d3b90378-8614-4c96-a4f4-d65cbd7c44b7) + ) + (fp_text value "TestPoint" (at 0 1.75) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 9f9b037b-a248-426c-ae3e-f105bd37f00a) + ) + (fp_text user "${REFERENCE}" (at 0 -1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp e82b805d-1c2f-4bd1-ae25-66f0bd1c394e) + ) + (fp_circle (center 0 0) (end 0 0.95) (layer "F.SilkS") (width 0.12) (fill none) (tstamp 346ffbad-d7c0-4cda-a689-f10f685fb94c)) + (fp_circle (center 0 0) (end 1.25 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp 499449eb-e511-416f-8570-302fcdc7b9d6)) + (pad "1" smd circle (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") + (net 133 "TEST3") (pinfunction "1") (pintype "passive") (tstamp 81867adc-5032-40cc-a9f7-86bcb8dbe1d0)) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp e47d2193-a1d7-4860-874a-3755838f3545) + (at 166.75 86.85) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/13265650-3af2-4401-adaf-15efd42a756b") + (attr smd) + (fp_text reference "C22" (at 0 -1.43) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 4ae7954e-f72e-49a5-b4d8-fc719978c90b) + ) + (fp_text value "7pF" (at 0 1.43) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp dc4f236f-046b-4bf4-ac2b-f6f417326432) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06))) + (tstamp 46a2922f-08f3-47e2-8dd5-09de40d5392e) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "F.SilkS") (width 0.12) (tstamp 3d06a2c9-5d25-487f-b9ec-fce78696d633)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "F.SilkS") (width 0.12) (tstamp 6e51fc0c-c3cc-4b82-aa3e-59c8d709368a)) + (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 26b95fc0-d87a-40cd-bbf0-4ebb09bc8224)) + (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 27d69d55-61e0-4c14-a7fd-a240db44eb12)) + (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 694dde34-27de-4b59-82fe-aca39c237f71)) + (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp d8f4f6db-fca7-4ea5-8e7b-bd2288272804)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp 39c589aa-d14d-403e-a809-46e00df8f5a9)) + (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 4ead47ff-9f6f-4a86-addb-20403c5bbf7a)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 86598e33-a7b7-4334-a002-d0b348c2efb4)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp a037cd1d-ebcc-4fc2-98c7-1e580be12c66)) + (pad "1" smd roundrect (at -0.775 0) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 5942ae05-7dfa-4b72-916d-6676e72d0ed7)) + (pad "2" smd roundrect (at 0.775 0) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 159 "Net-(C22-Pad2)") (pintype "passive") (tstamp 5bc84d89-655b-4ce6-b615-e38ca9faa6ef)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_USB:USB_C_Receptacle_JAE_DX07S016JA1R1500" (layer "F.Cu") + (tedit 6213F845) (tstamp e8cb6cb3-dd2b-4328-8592-132e369ebb71) + (at 102.2 92.5 -90) + (descr "USB TYPE C, USB 2.0, SMT, https://www.jae.com/en/connectors/series/detail/product/id=91780") + (tags "USB C Type-C Receptacle SMD USB 2.0") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/defdcc3f-5dd1-462d-9a3c-629711ed4f38") + (attr smd) + (fp_text reference "J1" (at 0 -5.3 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp a6460cc6-b11c-4dff-a0ea-9de680e68ca8) + ) + (fp_text value "DX07S016JA3R1500" (at 0 5 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 3aec5e23-e675-4bcf-9a9e-48cb59d51927) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 3c5840eb-164e-426c-ab78-faa89624b9dc) + ) + (fp_line (start -4.58 -1.215) (end -4.58 -0.36) (layer "F.SilkS") (width 0.12) (tstamp 43b7aab0-ec9b-4c58-bfa1-8dda8fccb53f)) + (fp_line (start 4.58 -1.215) (end 4.58 -0.36) (layer "F.SilkS") (width 0.12) (tstamp a26bc030-7d8a-4b19-aa84-9206cc0de2b0)) + (fp_line (start 5.47 -4.33) (end 5.47 4.1) (layer "F.CrtYd") (width 0.05) (tstamp 054f8e07-0141-451f-a3c4-ea786b83b680)) + (fp_line (start -5.47 4.1) (end 5.47 4.1) (layer "F.CrtYd") (width 0.05) (tstamp 3d19e22b-2666-4e7d-825d-37a04ed07fa1)) + (fp_line (start -5.47 -4.33) (end -5.47 4.1) (layer "F.CrtYd") (width 0.05) (tstamp 62af6e3c-7d06-438a-b62f-014ae3262ea1)) + (fp_line (start -5.47 -4.33) (end 5.47 -4.33) (layer "F.CrtYd") (width 0.05) (tstamp ed6caead-58a0-4a37-97cf-621d3ffb0ca4)) + (fp_line (start -4.47 3.6) (end 4.47 3.6) (layer "F.Fab") (width 0.1) (tstamp 248d15cd-dd0c-425d-94cb-b44ccf865457)) + (fp_line (start 4.47 -3.3) (end 4.47 3.6) (layer "F.Fab") (width 0.1) (tstamp 42688fc6-3e24-4a56-9963-828da46dcdfb)) + (fp_line (start -4.47 -3.3) (end 4.47 -3.3) (layer "F.Fab") (width 0.1) (tstamp afc1392c-4488-4251-8167-de520abba754)) + (fp_line (start -4.47 -3.3) (end -4.47 3.6) (layer "F.Fab") (width 0.1) (tstamp c546008e-7661-419e-94b3-0bbb9fd14ec8)) + (pad "" np_thru_hole circle (at -3 -1.95 270) (size 0.6 0.6) (drill 0.6) (layers F&B.Cu *.Mask) (tstamp 08d1dac8-0d6e-4029-9a06-c8863d7fbd51)) + (pad "" np_thru_hole oval (at 3 -1.95 270) (size 0.85 0.6) (drill oval 0.85 0.6) (layers F&B.Cu *.Mask) (tstamp 40962e92-90b6-487d-b0dc-0a6c42b5ebc2)) + (pad "" smd rect (at 1.4 1.15 270) (size 1 2) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c374668c-56af-42dd-a650-35352e96de63)) + (pad "" smd rect (at -1.4 1.15 270) (size 1 2) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp f630bdcd-b048-45d2-91a0-928349b89dad)) + (pad "A1" smd rect (at -3.1 -3.05 270) (size 0.52 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "GND") (pintype "passive") (tstamp 25b39db8-8576-4473-b331-b912323e85f4)) + (pad "A4" smd rect (at -2.35 -3.05 270) (size 0.52 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 52 "+5V") (pinfunction "VBUS") (pintype "passive") (tstamp ffde4898-4c0e-4c24-bd8c-aadcd7279172)) + (pad "A5" smd rect (at -1.75 -3.05 270) (size 0.27 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 137 "Net-(J1-PadA5)") (pinfunction "CC1") (pintype "bidirectional") (tstamp 5aa0e472-160b-49ac-864f-0fa7cd9cf9b0)) + (pad "A6" smd rect (at -0.25 -3.05 270) (size 0.27 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 126 "USB_D+") (pinfunction "D+") (pintype "bidirectional") (tstamp 086ab04d-4086-427c-992f-819b91a9021d)) + (pad "A7" smd rect (at 0.75 -3.05 270) (size 0.27 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 127 "USB_D-") (pinfunction "D-") (pintype "bidirectional") (tstamp 59246647-4e57-4b5f-9f1e-b0cc1fb90bb2)) + (pad "A8" smd rect (at 1.75 -3.05 270) (size 0.27 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 138 "unconnected-(J1-PadA8)") (pinfunction "SBU1") (pintype "bidirectional+no_connect") (tstamp 51bdd1cb-8a01-4b1c-940a-3ff4dd1de87c)) + (pad "A9" smd rect (at 2.35 -3.05 270) (size 0.52 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 52 "+5V") (pinfunction "VBUS") (pintype "passive") (tstamp 6025c071-1487-4c03-a645-f67437519813)) + (pad "A12" smd rect (at 3.1 -3.05 270) (size 0.52 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "GND") (pintype "passive") (tstamp b79d8d99-88b5-4d84-a010-b6d768d67ec8)) + (pad "B1" smd rect (at 3.1 -3.05 270) (size 0.52 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "GND") (pintype "passive") (tstamp a2c0fc07-9ed2-42e8-8fef-f02fce3412ee)) + (pad "B4" smd rect (at 2.35 -3.05 270) (size 0.52 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 52 "+5V") (pinfunction "VBUS") (pintype "passive") (tstamp 0d678ff1-21aa-4e6f-ae06-abf24406f3c8)) + (pad "B5" smd rect (at 1.25 -3.05 270) (size 0.27 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 139 "Net-(J1-PadB5)") (pinfunction "CC2") (pintype "bidirectional") (tstamp e7c8f673-e523-47ce-91b8-92cf1c7605ce)) + (pad "B6" smd rect (at 0.25 -3.05 270) (size 0.27 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 126 "USB_D+") (pinfunction "D+") (pintype "bidirectional") (tstamp eb06cbed-9a37-40e7-bc33-37acd0ee650a)) + (pad "B7" smd rect (at -0.75 -3.05 270) (size 0.27 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 127 "USB_D-") (pinfunction "D-") (pintype "bidirectional") (tstamp 172b515f-13aa-42a2-b6ac-db67c2e524e7)) + (pad "B8" smd rect (at -1.25 -3.05 270) (size 0.27 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 140 "unconnected-(J1-PadB8)") (pinfunction "SBU2") (pintype "bidirectional+no_connect") (tstamp a5c35670-98af-44c6-a3f4-bbad7ffecfd3)) + (pad "B9" smd rect (at -2.35 -3.05 270) (size 0.52 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 52 "+5V") (pinfunction "VBUS") (pintype "passive") (tstamp 5bd90e77-727e-49e2-881e-09f4ce3768d4)) + (pad "B12" smd rect (at -3.1 -3.05 270) (size 0.52 1) (layers "F.Cu" "F.Paste" "F.Mask") + (net 46 "GND") (pinfunction "GND") (pintype "passive") (tstamp af7ccd5a-4c05-4a49-a412-ca568e4c81d2)) + (pad "S1" thru_hole oval (at 4.32 -2.675 270) (size 1.3 2.3) (drill oval 0.6 1.6) (layers *.Cu *.Mask) + (net 46 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp 67320774-1745-4c89-bec7-2213f7bb7ecc)) + (pad "S1" thru_hole oval (at -4.32 -2.675 270) (size 1.3 2.3) (drill oval 0.6 1.6) (layers *.Cu *.Mask) + (net 46 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp 911557e5-adec-4d13-9794-a18b325eb4ea)) + (pad "S1" thru_hole oval (at -4.32 1.15 270) (size 1.3 2.6) (drill oval 0.6 1.9) (layers *.Cu *.Mask) + (net 46 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp cab0d0a9-e089-4f0b-8483-22b4e0addcae)) + (pad "S1" thru_hole oval (at 4.32 1.15 270) (size 1.3 2.6) (drill oval 0.6 1.9) (layers *.Cu *.Mask) + (net 46 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp d40ed1bf-6a69-492a-acf3-f71f1c7a81f2)) + (model "${KICAD6_3DMODEL_DIR}/Connector_USB.3dshapes/USB_C_Receptacle_JAE_DX07S016JA1R1500.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + (model "${KIPRJMOD}/sc64v2.3dshapes/K3D-DX07S016JA3-V1_JAE_Proprietary.STEP" + (offset (xyz 0 1.1 1.6)) + (scale (xyz 1 1 1)) + (rotate (xyz -90 0 0)) + ) + ) + + (footprint "MountingHole:MountingHole_2mm" (layer "F.Cu") + (tedit 5B924920) (tstamp ea8156d5-694a-4447-ab3e-6346cc03f8ef) + (at 102.5 128.25) + (descr "Mounting Hole 2mm, no annular") + (tags "mounting hole 2mm no annular") + (attr board_only exclude_from_pos_files exclude_from_bom) + (fp_text reference "REF**" (at 0 -3.2) (layer "F.SilkS") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp b2abe3e2-bea4-41af-b320-b8d376a311a6) + ) + (fp_text value "MountingHole_2mm" (at 0 3.1) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp bd41e015-e1b9-4e71-9917-b4fc7b51ba97) + ) + (fp_text user "${REFERENCE}" (at 0.3 0) (layer "F.Fab") hide + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 91398f11-237b-430e-b2bb-c6f4aea2e538) + ) + (fp_circle (center 0 0) (end 2 0) (layer "Cmts.User") (width 0.15) (fill none) (tstamp 9eecae69-62ca-4572-aee0-fa0e5463ad89)) + (fp_circle (center 0 0) (end 2.25 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp e6a2c566-ab8e-4468-9856-def92a6b2f2f)) + (pad "" np_thru_hole circle locked (at 0 0) (size 2 2) (drill 2) (layers *.Cu *.Mask) (tstamp df924fac-cbe5-4c6e-ad8b-c486578cd2ca)) + ) + + (footprint "LED_SMD:LED_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEF1) (tstamp 003ea756-553c-44af-959e-01183db13dbd) + (at 198.75 84.25) + (descr "LED SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "LED") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/45c5d7eb-fb02-4045-bae4-ce53aa49b4f2") + (attr smd) + (fp_text reference "D1" (at -2.75 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 9ffe88bf-99db-4742-83ff-cac30af8f3f0) + ) + (fp_text value "150060RS75000" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp f6da1765-37b9-464b-a3e1-4027b149f798) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp ed586bdf-e6ce-472a-958b-3e245475d04c) + ) + (fp_line (start 0.8 0.735) (end -1.485 0.735) (layer "B.SilkS") (width 0.12) (tstamp a15d8bf6-7670-49d5-a459-f65266d1fda5)) + (fp_line (start -1.485 0.735) (end -1.485 -0.735) (layer "B.SilkS") (width 0.12) (tstamp aa8c8ca3-a6c5-4ac0-8459-c0d01e8108b4)) + (fp_line (start -1.485 -0.735) (end 0.8 -0.735) (layer "B.SilkS") (width 0.12) (tstamp cdc9b361-8ab8-4ab7-a39d-35256d175d92)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 5e472551-e34b-47f9-8d2d-d48ab129b9c6)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 69f2083f-e925-4d3e-9401-aa3000e04b8e)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 8590a7db-0c18-431a-9a93-569e8ec2f020)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 8dfb9f3a-f923-4c27-bd45-0b32af7742ad)) + (fp_line (start -0.8 0.1) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 00c69372-5e13-45b6-bde0-8b49fef1ae13)) + (fp_line (start 0.8 0.4) (end -0.5 0.4) (layer "B.Fab") (width 0.1) (tstamp 5909ab77-d323-497b-9864-351c8334b0f1)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp b5d70107-5b5b-43e9-b911-ee259e099919)) + (fp_line (start -0.5 0.4) (end -0.8 0.1) (layer "B.Fab") (width 0.1) (tstamp b9838915-8ed4-401c-bf47-24a925f18929)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp ed223383-bd7a-497d-acd3-8627163f4156)) + (pad "1" smd roundrect (at -0.7875 0) (size 0.875 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pinfunction "K") (pintype "passive") (tstamp 011a2c87-db9f-4cb5-9e2a-7580ffdf0937)) + (pad "2" smd roundrect (at 0.7875 0) (size 0.875 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 128 "Net-(D1-Pad2)") (pinfunction "A") (pintype "passive") (tstamp a222f360-9fdf-4db6-84d2-661528e11c40)) + (model "${KICAD6_3DMODEL_DIR}/LED_SMD.3dshapes/LED_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 05361618-ae16-448a-beea-cdc67ad2df33) + (at 129.5 110.25 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/2fe178e5-f305-4d73-9f34-5dc926fbad07") + (attr smd) + (fp_text reference "C9" (at 0 1.5 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 6f2ba881-4faa-476a-bacf-3633910d4276) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 7d009ac7-8755-4787-a9c9-cb7f3646b97c) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 5dad5629-4391-4518-8ed4-8db58e13586f) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 6fd5b44d-5fdc-4235-87a2-abe6837f3fcf)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 7c437d3f-8d24-46a2-96f9-02ac3044fbe3)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 1c207263-f41d-4a2c-afc1-0508f960015c)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 5b79cb44-7d2e-4e89-9313-da2199204bff)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 637eeb72-1a56-454a-b9c8-343ea0014612)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp f52b4037-9fff-42a9-a975-bf6c458a24ba)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 06777725-b7d9-4475-b7d1-35aff005d3b8)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 63c1c3ef-23dd-4a2a-b0f6-1c1fafbf8215)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 78d504a4-22b7-4d0e-a497-da4dc40beea9)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp eb7ba403-04a1-47c4-9424-37971adb3f66)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 6938bbed-d949-4057-9cd2-378b4c2fe88c)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 800af155-b039-40d5-9b6a-ae2811f8624d)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 251d49be-1e46-4e1b-a503-035a36b84a12) + (at 138.75 87.75 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/f9c93d04-ae88-4458-aada-7c0f1c1f482b") + (attr smd) + (fp_text reference "R12" (at 0 -1.5 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 2a40328c-6ab6-45b3-a0ad-27d0fc64e033) + ) + (fp_text value "10k" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 10ab8e79-b69d-41c5-8896-213178a41441) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp ee949f12-1707-47b4-9f64-63bce4f0ed5b) + ) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "B.SilkS") (width 0.12) (tstamp 326b16aa-142b-4d94-910b-8c4d8d58192e)) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "B.SilkS") (width 0.12) (tstamp 59d86311-ef56-425e-8a3a-8cb9a484848f)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 1345fe6c-df84-4a0d-a25f-4df35d8c3944)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 17523888-0c94-4f78-9301-e081a7c0654e)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp bd604ff5-35e3-4ba7-8648-177453be4324)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp dc2fa600-5b36-4eee-8f9b-5ebb2e1397ee)) + (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp 428e319c-ae9f-496e-b5ce-43e9294eb6be)) + (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp 71853353-d626-4ad0-b514-7b110e993725)) + (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp ae783bc4-3203-4a37-bb01-722d598bf249)) + (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp bab6d7d7-d406-4beb-85b0-0129b20844c0)) + (pad "1" smd roundrect (at -0.825 0 90) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 129 "BUTTON") (pintype "passive") (tstamp 05f2b594-652a-4856-b3af-0e6623a24bba)) + (pad "2" smd roundrect (at 0.825 0 90) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 1c0b3d7f-c91f-41c3-877b-164614190bcc)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 29ead8f7-9a32-4a87-8a65-25bffbd5fc25) + (at 146.75 110.75 180) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/e1f00983-a235-4d69-9d9e-906d079c4b90") + (attr smd) + (fp_text reference "C25" (at 3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 98bc9df5-b9dc-436a-a7e6-26e42a2d657b) + ) + (fp_text value "100nF" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 7744cd9a-880e-4175-a255-8f2b8c66188c) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp f551c4d4-3cfd-4c27-a73a-e70bb322feba) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 3ed4bc7d-697b-48bf-9d15-f267e170eb2d)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp d493c4ea-b460-4361-9213-21786f3f85c0)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 00338c06-6298-411e-a1b3-17937f0ad40a)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 045ba246-783e-475e-a540-980433ab0757)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 5474886e-af41-4518-8a9c-100c1b3cd30f)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp e1178854-3502-4cad-ba0a-1116550ef976)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 70488a8b-41c9-493a-960d-3325a749bb54)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 8bce378c-2637-4c15-b509-68e10b237b90)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp cd7fdd43-abbd-4f16-baa8-2f922ebae9dd)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp f152746a-f665-4da2-ad90-82b1c0ccc1be)) + (pad "1" smd roundrect (at -0.775 0 180) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 1bf4a695-7813-4267-921a-68f0f7efa67c)) + (pad "2" smd roundrect (at 0.775 0 180) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp ffd0dec2-332e-45ef-ac1a-1fb0e8f920d5)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 2a6a8865-f869-4252-9b55-cc9dec767869) + (at 156.25 116.5 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/84b8b021-1eac-40ec-9d18-9bb490fec58a") + (attr smd) + (fp_text reference "C38" (at -3.25 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp fdabd807-346f-4318-b43a-01c21f10f254) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 20aec792-6fa9-47c5-a6f7-8aa9e098f9e5) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp e426ad62-4408-4356-ad3e-0ce707a173c2) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 11703537-9c44-4dfe-9ce5-873e40bb06c0)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp b64b9bd2-a120-4cbc-9027-52e0e97ba188)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 07df67ae-e9cd-4388-b56b-202a2240aa8d)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 5bc49ce6-c0d4-4b8a-91bf-5467ab225ebc)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp b0c21bb7-9bf3-4b0f-a7e0-7d55f802d7d8)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp e320dace-2d07-498d-898e-bd9ba97bc73b)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 1d023e34-8f3f-486b-86dd-d3e4ccf3f6ec)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 3021ba53-23b3-45c7-9e2b-11ac4172fa61)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 562c92af-4159-4153-98d5-810088d08d4b)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp dd933d3c-ce9c-4922-9197-eca8fb8d36ca)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp e6097060-5b38-4544-96b9-c4f9020c5ffa)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp ad127880-562e-4217-bdc9-fe432aa3c3ad)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 2a6b9008-1420-44eb-a60b-2a1f0ee361fb) + (at 169.75 110.75) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/5a894943-2e60-4640-96a2-a55eb4cfef14") + (attr smd) + (fp_text reference "C35" (at 3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp bc1fc674-9cd1-4501-9142-da44a4c88317) + ) + (fp_text value "100nF" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 986edde4-a6e3-47d6-95ba-fd4619ced1f7) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp c278978f-c1ad-4d2f-8e2d-5366b1729024) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 04b8eb05-76c2-40fb-8a12-7ebea08e8904)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp d636effd-6368-480c-9174-ac2e7420af13)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 2cb09f1d-268b-4f7b-9a95-2abe02a576a6)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 4b449423-e5aa-4285-9e3e-e896888a113c)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 7b5d3f8c-6114-42e1-b50c-579811e9188f)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp d719ae76-2b48-4812-b83c-ba456baf05e1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 137886ba-9f86-412b-b1bf-1b56f5961a6f)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 53f536bf-5719-4ec0-a130-c2086d89c258)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 6298c7d7-3b8a-4216-8a23-cc1ce39f5874)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp e382dbd3-c8b9-42de-a972-3b0ec2bc60e6)) + (pad "1" smd roundrect (at -0.775 0) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 4abe2e0c-a85d-4af0-9d8a-67a415509f9c)) + (pad "2" smd roundrect (at 0.775 0) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 2dcead03-e068-4192-bcec-6a922f93bb1c)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 3418355a-2e70-4b8e-a09c-7ef9732851f5) + (at 153.25 93.5 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/2bbbf7e2-fec0-4e0e-af5e-d1d876305dd1") + (attr smd) + (fp_text reference "C29" (at -3.25 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 110e63af-bb20-4149-b004-9f65d6ecae1d) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 4b5c67d7-2ec1-4df6-9eb8-31e32b0e9d0b) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp e6988291-ce5b-4f30-9f64-5190e18a0138) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 4de0a77a-9059-40d8-bcc1-7dc3504394e1)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 6e997c33-60fc-4cd6-9519-45de5f584de7)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 4ab51dda-3098-47ac-a770-3e4691b7fb98)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp a6323535-3664-48b3-a77d-2fc1f6426324)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp c68e8aeb-b5e2-4dee-8218-e2bc2ee0a75f)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp f4a9846d-8df7-4255-99c8-bd83d0d44b88)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 41108e13-c7f5-4d27-af9d-9c1769b069dc)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 4a4d326b-7933-4a9f-aa0c-d01bf8304477)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 4fdde9b9-bbf8-4278-a813-c5b4067c95c4)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 7ec78c58-9241-4b12-83e8-9a38030acc25)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 4c5d6ff5-1267-46d7-b831-2dd908a6631c)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 456ce071-69d4-4c36-81b0-2fc50ca72cb7)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 399c2030-e1cb-4e3a-983e-135ba9181773) + (at 131.25 104.5 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/81faf8c0-1827-4289-ab03-9e47b8583766") + (attr smd) + (fp_text reference "C11" (at 0 -1.5 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp e99397c2-a8b8-4cfd-8d16-022a9e6eb9df) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp cd6ffc92-c966-424b-a68c-28a122f0d65d) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 6e2fb201-3f9e-49a4-8094-5a233ad7aad4) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 4a0284be-5976-4931-9fc2-f6760c7aeaa4)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 9cbf8a0c-15e7-4b2b-842c-abdfb2435920)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 32c3c50d-a73f-4c10-b7bc-d50f91caa82c)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 4f12ca69-b323-4bf3-af6e-05cd1e2b73c8)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 8e2acbdb-9e9d-428e-8781-26e6d9da5903)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp ce959f25-ee17-455a-ac9e-36f4e224fbaf)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 3ab1e458-594a-4b59-9dcd-03841aab0122)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 65be2138-819f-4440-ac39-3ad0bf9372a8)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 7c17fb64-5ca1-4021-923f-dc295e2531b5)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 81c710ec-0800-4368-8e5c-d7efb3a5950c)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 42b87f20-a1d6-4278-946b-b93947e3c36d)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp a15130a0-88b1-44cd-b75e-c7b512318c58)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 3b64249a-93a4-4cc2-8c86-f80cfd0188f2) + (at 198.75 89.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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/57757361-0691-4a91-bc3d-0dc7562fcbe2") + (attr smd) + (fp_text reference "R19" (at -3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 801d565e-1ba1-4c9b-a717-fa50001782d1) + ) + (fp_text value "10k" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp bdf44d3b-b8b9-4bac-916d-8281b1336f25) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp e22b7200-fd48-4ff3-a3d5-56264cc8f7a9) + ) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "B.SilkS") (width 0.12) (tstamp 10d45985-cb9e-40f3-88ce-c5fb48b59efa)) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "B.SilkS") (width 0.12) (tstamp 42878619-7b8d-4f92-b591-19e6e34c39a7)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 3a83afd9-c751-4aec-82bb-6cc8947efa66)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 68871408-78c4-4c9d-bc45-88222a3673e1)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 6af87bd1-c643-4de4-a92f-3f0ff9a7fad8)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 7da80533-bd8b-4bc3-8ad6-3d93e85b4e83)) + (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp 04a4cb43-3430-4099-8cd6-124df4ba20be)) + (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp 754767d8-077f-4888-9a34-f38dc8ac384f)) + (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp 862ce772-62d1-4035-b1d5-1d1f366683ca)) + (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp 9beb5608-9856-4c24-ad27-4b048b8f3ab6)) + (pad "1" smd roundrect (at -0.825 0) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 36 "SD_DET") (pintype "passive") (tstamp 1dddf885-f5a4-4aef-a856-19a48090d217)) + (pad "2" smd roundrect (at 0.825 0) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 99f1ccda-3e5d-4e90-8e7c-95762602317f)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 434c9733-b213-4ee0-ab6b-4653f063d2b6) + (at 169.75 88) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/83ac819d-dfbc-422a-a76f-f95cac775ba2") + (attr smd) + (fp_text reference "R17" (at -3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 5df8d0e6-429f-49cd-88db-aac9f9fc0df1) + ) + (fp_text value "10k" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp b18caaa4-5306-4bcb-bba9-faa77bc0cb38) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp c8d4b3a2-2d05-48c8-87f2-d4d23f0efbc2) + ) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "B.SilkS") (width 0.12) (tstamp a4aa0925-70ec-4eaf-85ee-e2bb06520950)) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "B.SilkS") (width 0.12) (tstamp c82b790c-1c00-448e-8419-fe8e2aa2a913)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 16123273-8946-41ad-b7a5-f87eb444a483)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 54125536-2728-4658-bbcb-40d364061155)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 577a4a8e-666e-4e9d-8c92-06de2e36a7dd)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp ea164ffc-92a5-4e79-a285-2c6ed8158bf7)) + (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp 1cb823a2-5c19-48eb-8576-f80827b5012f)) + (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp 706ff0c8-ed95-42a1-9192-ec9ac88942ea)) + (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp 71d34fb7-ed61-4ca5-a250-1b282c9db10e)) + (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp a93aa41e-663e-4952-ba77-da03bbc49545)) + (pad "1" smd roundrect (at -0.825 0) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 94 "MCU_MISO") (pintype "passive") (tstamp d5b73198-9a6c-4687-82e9-0b137e1e57fa)) + (pad "2" smd roundrect (at 0.825 0) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp f94f4b2d-3ec6-48f3-ab32-51ba0715585a)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 4aa6895c-ef38-4503-bcd1-9b6d7c401014) + (at 162.25 93.5 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/e1080d6b-d7da-48f7-b6bc-20790315d00d") + (attr smd) + (fp_text reference "C31" (at -3 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 1d5b8984-7c40-44c5-8e42-bc98824fb8e5) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp c32ac298-4b17-46a8-9f88-ab0041f7585b) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 0504e9a9-6bd9-4b41-b7eb-91fc59929fbe) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 31f0e5f7-631c-4e12-9cf4-a1173ec3db77)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 85e984aa-5daa-42e6-9ed3-04cfd4a6b095)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 018e4e62-fb51-4fae-9eb6-b3c70a859c23)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 14e6953f-b356-4956-8664-c231a7ab7b70)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 65ecf67c-4986-487e-bc70-3aa88a8e1e08)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp a774eaa8-a01c-4a32-bd81-12f23a4ba944)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp b74aecc3-d72c-4c56-bcaa-7686141534a5)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp dcb9b0c9-0664-465b-9576-ca57d9c8c463)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp e7413b0e-64cc-49cc-a4ef-b5e35d1d76c0)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp e868908f-1bdd-4c0d-8be8-1da574813724)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp e17d5463-5a38-41d7-b590-90417a711bc0)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 6acdf2bd-3477-4471-96ad-c9234ed19442)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 54494038-de3e-431b-9441-3811d7c9d070) + (at 146.75 103.75 180) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/acd48532-9df4-4213-8073-4ea5ab05ba2a") + (attr smd) + (fp_text reference "C26" (at 3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 4cd4477e-f6a5-4e29-a64c-503588836690) + ) + (fp_text value "100nF" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp f53ce64f-284d-42c1-9241-af6d69769eed) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp ff9c4b2c-700f-49d2-b164-5e224b34fac1) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp bec1a620-55de-4110-9159-0137ce4e2899)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp dd8366e5-1c54-45b2-a402-98db0b37bde5)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 226d1db4-f5cf-4812-964a-9be1e733cc59)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 2821a3bc-d71f-49d9-abc3-7e58af179110)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 5bec9cf2-786a-40b1-bd7d-a057ba718120)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 7a96b32e-9582-4b36-8b32-6c9a7e044de8)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 548e4525-cc7a-430b-95b2-3367c200d4ed)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 7e7f42a9-8e7d-4d10-a4dd-52b9bb6f3630)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 96577a1c-b313-40ca-9478-7fa941395b8b)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 9aa65cce-9997-4d96-afc7-7fb779b8a083)) + (pad "1" smd roundrect (at -0.775 0 180) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp f02200ab-dbc3-4c10-a516-b807663aa44f)) + (pad "2" smd roundrect (at 0.775 0 180) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 1f70cc50-a584-492e-a9d5-942e422e44d9)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 54de79df-44a7-43eb-8ad4-fdb7d5a48de0) + (at 194.05 101.75 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/4a8503ee-5770-4f04-9dfc-cfd261659fa9") + (attr smd) + (fp_text reference "C43" (at 0 -1.35 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 241d7685-b718-40ba-82d7-874106324d0b) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 4ff688f4-2542-4be1-9bba-9a728361516e) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 121e47f3-a841-4fde-bdf3-587c2f79c7ac) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 1605cfe6-a5e6-4073-90c3-76d21eca9614)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp c486cc5b-c6c5-4b50-a27d-95016f8cd3b8)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 32d88a5e-3db9-46df-8d82-7197df81a180)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 3c74b5a0-4213-4430-a667-111a08c0456d)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 794d5be7-2a82-4d54-8424-f41146bc4058)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp edd50ced-7f19-4d09-a13a-6dc29edd9dc7)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 55741eb9-8913-4eec-baa4-aa2d015b4d8f)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 97d60488-f596-4be5-bfbb-d567f8c76ec3)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp c112261f-e01c-4784-bee7-7ece7e36d49b)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp df871243-3824-48db-a919-a49c1b49e395)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 1d110fbc-bcfa-4b40-8d0c-0715449bb279)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp e4a4d135-15c8-4c8d-8a35-19cbe798d859)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 58fc9acf-5d3d-412f-87df-7f4aea6b6e85) + (at 189.25 101.75 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/807f06fd-69e9-4462-bc69-40d576fe8720") + (attr smd) + (fp_text reference "C42" (at 0 -1.35 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 00d0ea72-d21e-4cbb-902f-3ee3d13ab43c) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 0fdfef40-974a-40b5-8b06-02367930f0dd) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp d95ff2e0-c1cb-4b6f-8bdf-d4f3f594e413) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 0e0eb641-0d86-4280-957e-27966797d337)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 6a5c690d-19b1-4c87-9688-0829e092d0b7)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 0ad0d108-36fc-4a7b-b20b-0c424726e006)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 60295596-46cd-44f3-90e6-02f71d11d356)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 7bd1a6be-576e-4ace-9411-a56e968b9bec)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 82a75ff8-7910-436f-a893-3e3aca65a44c)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 16336186-a514-42fd-b1f6-d90331b3a102)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 3f366a7b-72df-4393-9fba-1f9de79a8dad)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 820a6945-c754-41a1-a4f1-3f3a4ed6b6ac)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp f40a845c-f69d-4b3c-b454-8c54b5e09dbb)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp a0a2cd2b-db34-4589-87a7-f31712c88e54)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 6307eef4-7f0a-4480-b513-477d485cb8fc)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 5ad35f6e-ff4c-4614-8289-c5651468e0ed) + (at 186.85 113.25 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/65dd3f32-98df-4103-ac72-9d5146d33dfe") + (attr smd) + (fp_text reference "C45" (at 0 -1.35 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 6779910a-e822-4fd6-a4fa-208d3094c162) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 9077f81a-96d8-4f37-b483-ab81d99484db) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 19a32799-09fc-472b-8d1b-f9619743e294) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 7f17f2bf-509b-49c2-b5e9-66a1451f6b22)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 82758f03-17c7-4615-8c7a-43b658a0c562)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 1b9c14c0-bf45-4ff7-afa5-0cd77fdcdb98)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 812a4ebb-0b90-4a1c-bc2a-f57cf0896c77)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp c0d41c38-4ded-4e50-8559-5a2a805ccf93)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp c13f65a0-e1b6-4ada-be54-24dc46efb4e1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 0fe87e5f-a1c6-4bd4-8185-34a24217cbbf)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 933e1592-7af8-4e03-b60d-99171b7bab58)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp b717b7f2-f4c9-4923-8140-af417e4a6bdc)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp d13c247e-d36a-4758-a93c-66abadbc8927)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 62d703ff-be9a-4ae4-9276-7bba13add308)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 6911d5dd-70a7-43f6-aea8-d702af040597)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 5b169b0a-a3d9-4a40-9c65-bd8be3b0d28c) + (at 138.75 93.75 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/49f3385c-4a1a-4ed1-a308-2c37f51240ba") + (attr smd) + (fp_text reference "C23" (at 0 1.43 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 835273cf-8b97-4839-ab1a-652af71be8d8) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 7e591f27-bbfc-404e-8921-e95d7107ced6) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 0e61da84-4c44-4ae5-8144-beb5b5c58a9b) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 27321710-5c3b-4144-9444-9987d0df8737)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp dcb9a9da-3632-4e88-b7e2-19eae805a929)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 80b6e55e-1f28-4b93-9e9a-606ef0e4dc4f)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp bd635f52-5d0d-48e1-810b-ad02d858e60a)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp e1796790-5a41-416d-9823-2362b24a8d8f)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp fbd0f063-c5a6-437f-8c7a-8a5247f3a147)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 722d17d6-b966-4607-ba5d-67865649a707)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 874acf39-6dee-4f70-9cb4-d1189273667c)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp b2804934-dedf-458f-854b-3d75fb664886)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp b891cb77-719c-4f93-bb43-d4b8dbfd000a)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 85849a7a-1d7b-4993-b7ad-be0f550e503c)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp bf9e2632-13b8-4ecc-a824-d6439e286c0a)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 659621d3-cd47-4890-8de6-37ceefb574da) + (at 129.5 100.25 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/0f368328-b928-4c36-bde8-df1e5494dab0") + (attr smd) + (fp_text reference "C13" (at 0 1.43 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp aa1da506-8d40-4c75-b78e-b636a37af319) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 5680421d-f7b1-4135-8c11-8d280a2fa7e6) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 8f5b9142-a3f3-468c-a6d3-b74fb024d85d) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 65c8ac3e-8d70-47c6-8403-f130af6b41ad)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp bea93652-670f-43de-aa3d-e3a4907fe2a4)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 985b0446-58f5-427b-b9b3-64e1992987ce)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp e0a5d4ca-8775-4931-bde6-08c1f42f00ec)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp e9f178a9-6e46-4020-a47f-77ff64463723)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp ee225219-e4c5-46ca-ab70-dead839202e2)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 0ee2144c-54e2-4705-9886-ef8af5ab2e05)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 94c686c4-e7ed-4d08-9d92-7801b5c9ccf7)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp a5ed5987-d2b6-4014-a916-edc7d243b919)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp ef19402c-72a9-42f3-81d2-b208a14d349d)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 5c33422b-1c00-4d6a-ac71-6e8004e773e8)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 160 "Net-(C13-Pad2)") (pintype "passive") (tstamp 2794fe1c-6561-49b4-b2be-42cf68f27509)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 6baac206-6f9e-4b08-806d-05d390d49a8d) + (at 174.85 101.75 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/bc7d6f8c-6dfc-49b5-ab62-ccadd92d55cc") + (attr smd) + (fp_text reference "C40" (at 0 1.55 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp f823a200-98c1-4b14-98a8-9e3604f63c28) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp b219de4d-4964-4909-8e0d-dc552bd5db8f) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 37a1caad-ed6f-4ee5-bb4b-e64cb7c7b0ce) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 1ff7b80b-0a1e-4399-b6e5-687ff0b342ab)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 4189fa2e-6c49-4115-8e91-cb7e79391fe0)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 01b35dce-9e84-4308-aefc-0edfee7f66c0)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp b6d4397c-bde9-41c3-83f0-1dba43ec9d2a)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp e5cee7b6-3ee9-4a18-b2b8-4085f011e7f5)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp fca7f8ae-d9bb-439c-b9ea-2efc103a94f1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 3fcb1df2-a6d9-4ab8-8237-c2859d91f12b)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 52d5f47b-242d-4870-9551-462b5c1045bb)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp aa7b99ab-92cc-4835-9a53-bc6a2e671285)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp e48434cb-b3d6-4c65-a933-211742df2318)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 5e1e6b37-d194-4c5c-813d-a06fcb50c9fd)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp afa4eae6-84f6-4b3b-b80a-0d726d7c705a)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 73111f4b-15d4-4ab4-b97b-4aa509ba3d68) + (at 150.25 87.75 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/218503c2-8dbd-4619-ac7b-4c01fe0226fe") + (attr smd) + (fp_text reference "R13" (at 0 -1.5 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp b622b0e9-bbb8-4d0d-82a7-488bdc63a070) + ) + (fp_text value "10k" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 06e80294-fab6-42a5-b075-7e66f54a1b00) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 5442bb09-df9a-43bc-a2f3-77df1359fa92) + ) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "B.SilkS") (width 0.12) (tstamp 028e05cd-7581-47da-8f88-dd59cf6d2173)) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "B.SilkS") (width 0.12) (tstamp 82ca41fb-328c-4878-ab76-6b9813701b06)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 11d9514e-7a0d-497b-9a3c-ae92943685b6)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 74460851-9daf-4df4-a7cc-d4e627b959ac)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 8bcf9104-ab56-45e8-80d4-ca2346148564)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 933e9ee2-8cf4-4653-9ee4-91f1f04508b6)) + (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp 2f7faf57-7c9c-47b3-bf0d-60c8f85c2ba8)) + (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp 7033e550-ac05-4205-a45d-3969e8489c0f)) + (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp 7d72b95a-f392-4522-bd90-d2f0f9acc32a)) + (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp e47ade78-362f-4e56-9932-29e4ad596639)) + (pad "1" smd roundrect (at -0.825 0 270) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 157 "Net-(R13-Pad1)") (pintype "passive") (tstamp 52f5224d-5963-4787-8fca-d1919ad6c1a4)) + (pad "2" smd roundrect (at 0.825 0 270) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 7204d54d-ca69-4daf-81c0-20e60aba73f3)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 73889da6-ed88-482b-b08d-87871c1c23c2) + (at 169.75 82.75) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/aab80820-43a0-4879-aa62-70e3b13add9d") + (attr smd) + (fp_text reference "R15" (at -3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 863d2061-484e-4eb9-bb74-50bdc0b444a7) + ) + (fp_text value "2.2k" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 308da90b-a185-4257-8cd6-aeadfdd39d6d) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 8257bf08-e782-44f9-ad8c-72107914bba9) + ) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "B.SilkS") (width 0.12) (tstamp 20639b9d-464f-4691-935f-cc62d7656992)) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "B.SilkS") (width 0.12) (tstamp d942a2b9-3b40-4931-b952-f10eb268d4bc)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 5cefb8cb-6f2a-40ff-a062-1440eb2f7388)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 945664d0-69d7-4087-b0dd-a365cf6ec06f)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp c0cffad9-df62-4b0c-8ad0-3909e38fc309)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp f52a82b0-36f8-45a5-ad4a-1a4bbe6fdda1)) + (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp 2680b0e3-366a-48bf-b21a-c5cf5af0a43e)) + (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp 3c5c329f-86f1-4dec-922d-23e6b15e79cc)) + (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp d745f72c-2bba-4976-82b3-f1283578ba0c)) + (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp d7de32c2-1f84-44b5-9a36-608d5bba389a)) + (pad "1" smd roundrect (at -0.825 0) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 48 "I2C_SCL") (pintype "passive") (tstamp 236d25d7-3700-4464-b838-0c922ed97744)) + (pad "2" smd roundrect (at 0.825 0) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 8b8e855b-1aa1-4d40-9a7c-e1bc1257a119)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 7909af69-45eb-481d-bf31-9e2c922e4048) + (at 149.5 116.5 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/109c53cf-c8a3-456a-9546-7c3328fa259a") + (attr smd) + (fp_text reference "C39" (at -3.25 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp a0d175ec-14f8-4de3-88d0-9f1b35a2f297) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp dcff373c-0443-472e-904d-230bd717a0a6) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 8270d2fe-e6ce-426a-ac61-0d4c1080d255) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 2b294e27-bf13-4428-917e-bb1f54c0c7e4)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp e5875edb-bc7a-49ba-915d-a122d9dff2b6)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 02dee339-394d-443a-9c5e-b5507b69e5c7)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 0a64ea5e-6235-4a38-a731-60d652934dfd)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 951d0996-e37c-4403-95a9-ec176632d370)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp e7ad06a8-4718-49f4-89c1-34c159db2589)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 46f8e71c-f72c-493c-8588-34f53d96b6ed)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp a83db6f2-4374-43cb-855b-255e807d5ea3)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp bb6fd1b3-e431-4fd5-8e29-55d62f3f934f)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp d9c03e8a-5046-4f4c-bead-f8fd0acac375)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp cd4b2be5-9fc9-4c71-847b-63e5fbb2b3b0)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 4103626e-ee81-4455-8efd-b18b3557acae)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 7a159225-9062-484b-8132-9f8c8e8f9ad5) + (at 131.25 100.25 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/fe7d11ce-921f-4c35-a390-452b3002c6eb") + (attr smd) + (fp_text reference "C14" (at 0 -1.5 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp c10f5614-824e-4139-86a9-9f45e62578b4) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 555ef4c9-f8e2-4547-b6c7-bbcc91b1bb25) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 4265fcc8-6f2d-4f1e-930c-a7d9cc994589) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 2c81aca6-491b-4e9c-9d2a-5813d0ede215)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 40baccfb-afeb-461f-a81c-bec56657c149)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 2fccc865-b754-4b8b-8865-98f67212dbe4)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 30384668-5f8a-46be-9e43-dfc5d52827c7)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 87e52922-60df-4a5c-b1e3-798fda721824)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp d7062960-c48c-4a27-b03a-cf0241d4349d)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 0fd0a4a1-c42e-41ef-8023-5696099360ad)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 32c57709-b956-432b-a21c-0f7a3e963ae0)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 378c65bb-a6c4-47dd-8a7b-899ce2ac6376)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp edd804c3-e4c5-4a52-9db9-dc7f0ef65d24)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp f7d4fa53-7266-44bb-ab2f-748542fc6654)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 156 "Net-(C14-Pad2)") (pintype "passive") (tstamp f9618e71-cc19-49fb-94ec-eb159af002c6)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Battery:BatteryHolder_Keystone_1060_1x2032" (layer "B.Cu") + (tedit 5B98EF5E) (tstamp 7ca7ae4d-e1eb-4db9-b84b-7ad12cfe7c64) + (at 115 100 -90) + (descr "http://www.keyelco.com/product-pdf.cfm?p=726") + (tags "CR2032 BR2032 BatteryHolder Battery") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/29bdd9c1-a511-41a4-81ee-696b6cbdf543") + (attr smd) + (fp_text reference "BT1" (at 10.2 9.5 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 8c138403-e22c-4ea7-a9a1-dff853ccab9c) + ) + (fp_text value "1060" (at 0 1 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp b4b8736c-9367-4a00-a1b8-68b1269fb1d7) + ) + (fp_text user "${REFERENCE}" (at 0 -1 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp ef8d1851-9e71-4978-b0bd-13b3286e7ac3) + ) + (fp_line (start -11.35 -3.85) (end -14.55 -3.85) (layer "B.SilkS") (width 0.12) (tstamp 1bcc8d44-e661-4c69-a037-afe0643e9d07)) + (fp_line (start -14.55 3.85) (end -14.55 2.3) (layer "B.SilkS") (width 0.12) (tstamp 207c0cf1-7438-4d77-95a9-49c47a7d2e60)) + (fp_line (start -11.35 8.35) (end -11.35 3.85) (layer "B.SilkS") (width 0.12) (tstamp 20bf7222-78ec-4b47-885b-4f6293f4ab12)) + (fp_line (start -14.55 -3.85) (end -14.55 -2.3) (layer "B.SilkS") (width 0.12) (tstamp 26141879-2388-4c89-87cf-9d2ed34cd1ab)) + (fp_line (start -9.55 -8.35) (end -11.35 -6.55) (layer "B.SilkS") (width 0.12) (tstamp 2c7ce49e-429e-417c-9da0-4274c00e5058)) + (fp_line (start 11.35 -8.35) (end -9.55 -8.35) (layer "B.SilkS") (width 0.12) (tstamp 318e7ca0-bc76-4f86-8b55-855dc8de9da1)) + (fp_line (start 11.35 -3.85) (end 14.55 -3.85) (layer "B.SilkS") (width 0.12) (tstamp 3b07811b-d4e4-44c0-8284-4b65112ce40a)) + (fp_line (start -12 -6) (end -14 -6) (layer "B.SilkS") (width 0.12) (tstamp 6438d48d-ba1c-43b7-a7fe-2fc2976aa1c9)) + (fp_line (start 11.35 8.35) (end 11.35 3.85) (layer "B.SilkS") (width 0.12) (tstamp 6cae9a05-4357-4bdf-8388-c8b768ebb501)) + (fp_line (start 11.35 3.85) (end 14.55 3.85) (layer "B.SilkS") (width 0.12) (tstamp 70afd946-4e66-48a3-b3a1-94f7b6c5ed9b)) + (fp_line (start -11.35 8.35) (end 11.35 8.35) (layer "B.SilkS") (width 0.12) (tstamp 8e98d142-8c88-4d5f-bef3-b5547b559648)) + (fp_line (start 11.35 -8.35) (end 11.35 -3.85) (layer "B.SilkS") (width 0.12) (tstamp 9581d001-bb27-410b-ba4d-0eed6be0d4e2)) + (fp_line (start -11.35 -6.55) (end -11.35 -3.85) (layer "B.SilkS") (width 0.12) (tstamp 98263d76-e27d-4e15-a995-b49916ef3bc7)) + (fp_line (start -11.35 3.85) (end -14.55 3.85) (layer "B.SilkS") (width 0.12) (tstamp a7e27450-fd7b-40b6-9505-8ab57cb8a15e)) + (fp_line (start 14.55 3.85) (end 14.55 2.3) (layer "B.SilkS") (width 0.12) (tstamp c2216d80-5534-4314-9a55-9fb2e80cb27c)) + (fp_line (start 14.55 -3.85) (end 14.55 -2.3) (layer "B.SilkS") (width 0.12) (tstamp d8a63b6d-ff75-4cc3-a547-920b92a86c1f)) + (fp_line (start -13 -5) (end -13 -7) (layer "B.SilkS") (width 0.12) (tstamp f5cfe675-11d3-4aae-901e-a45642a0bec5)) + (fp_circle (center 0 0) (end -10.2 0) (layer "Dwgs.User") (width 0.3) (fill none) (tstamp 69900227-5e8b-43cb-93c0-ae423ab9d598)) + (fp_line (start 11.5 8.5) (end 6.5 8.5) (layer "B.CrtYd") (width 0.05) (tstamp 0593948d-9a41-491a-95df-b8b7645eec85)) + (fp_line (start 16.45 2.3) (end 16.45 -2.3) (layer "B.CrtYd") (width 0.05) (tstamp 08354601-beae-460b-8844-263f17467403)) + (fp_line (start -14.7 4) (end -11.5 4) (layer "B.CrtYd") (width 0.05) (tstamp 10d3218c-8f69-453d-a8e0-1dba77de99d9)) + (fp_line (start -11.5 8.5) (end -6.5 8.5) (layer "B.CrtYd") (width 0.05) (tstamp 11173cde-3d82-4526-9630-84c2146ee58a)) + (fp_line (start -11.5 -4) (end -11.5 -8.5) (layer "B.CrtYd") (width 0.05) (tstamp 15351178-2e05-4afc-9e91-0b18f81e4f14)) + (fp_line (start -14.7 2.3) (end -16.45 2.3) (layer "B.CrtYd") (width 0.05) (tstamp 185a8d98-6702-4808-ab39-b896696561a5)) + (fp_line (start -14.7 -4) (end -14.7 -2.3) (layer "B.CrtYd") (width 0.05) (tstamp 27a3b362-3a05-4448-a9c0-56ccb0e6df10)) + (fp_line (start -14.7 -4) (end -11.5 -4) (layer "B.CrtYd") (width 0.05) (tstamp 4082a8b4-ab0e-4358-bcde-9b8c9d29f6e9)) + (fp_line (start -16.45 -2.3) (end -16.45 2.3) (layer "B.CrtYd") (width 0.05) (tstamp 48ed6d94-ef8b-427f-963c-5895e6a0fa1b)) + (fp_line (start 14.7 4) (end 14.7 2.3) (layer "B.CrtYd") (width 0.05) (tstamp 4fda1720-f35c-4ba6-b874-714184905b73)) + (fp_line (start 14.7 -2.3) (end 14.7 -4) (layer "B.CrtYd") (width 0.05) (tstamp 50bdb251-98bd-4959-bf89-788ba2dcc76f)) + (fp_line (start -14.7 2.3) (end -14.7 4) (layer "B.CrtYd") (width 0.05) (tstamp 577eb16b-bd42-441c-b905-b8d08d02c600)) + (fp_line (start 11.5 -8.5) (end 6.5 -8.5) (layer "B.CrtYd") (width 0.05) (tstamp 603abc8f-8069-469e-a62c-5a0bda763298)) + (fp_line (start -14.7 -2.3) (end -16.45 -2.3) (layer "B.CrtYd") (width 0.05) (tstamp 66f8f748-923a-42f5-88f6-41a28d1c3602)) + (fp_line (start 16.45 -2.3) (end 14.7 -2.3) (layer "B.CrtYd") (width 0.05) (tstamp 7aae6f15-f2d1-41d4-98e3-e12d1c66c48e)) + (fp_line (start 11.5 -4) (end 11.5 -8.5) (layer "B.CrtYd") (width 0.05) (tstamp 7ee14215-544f-44f4-84f5-eb28da30f6e9)) + (fp_line (start 14.7 2.3) (end 16.45 2.3) (layer "B.CrtYd") (width 0.05) (tstamp 85e91b46-4509-483b-95c9-d2d8d3bd3365)) + (fp_line (start -11.5 4) (end -11.5 8.5) (layer "B.CrtYd") (width 0.05) (tstamp 8f719246-a263-4c80-9641-0471f874176a)) + (fp_line (start -6.5 -8.5) (end -11.5 -8.5) (layer "B.CrtYd") (width 0.05) (tstamp 946744b6-7e98-4f33-a1bc-bebe76c4e816)) + (fp_line (start 11.5 4) (end 14.7 4) (layer "B.CrtYd") (width 0.05) (tstamp a17e794b-ab12-4576-aaa5-d5edba73a1b7)) + (fp_line (start 11.5 8.5) (end 11.5 4) (layer "B.CrtYd") (width 0.05) (tstamp bb704cfe-fafe-4bc3-b193-c9ef529b98df)) + (fp_line (start 14.7 -4) (end 11.5 -4) (layer "B.CrtYd") (width 0.05) (tstamp f33bf832-c709-4503-8034-cf16bc39c227)) + (fp_arc (start 6.5 8.5) (mid 0 10.700467) (end -6.499999 8.5) (layer "B.CrtYd") (width 0.05) (tstamp 87295646-39df-4420-9a97-9d6cdf8c3ad3)) + (fp_arc (start -6.5 -8.5) (mid 0 -10.700467) (end 6.499999 -8.5) (layer "B.CrtYd") (width 0.05) (tstamp e9678580-9d7d-4f1b-893c-abab443a686e)) + (fp_line (start -11 -6.4) (end -11 -3.5) (layer "B.Fab") (width 0.1) (tstamp 0f338d8e-7bf1-4364-9268-a4de7e4f3e07)) + (fp_line (start 11 -3.5) (end 14.2 -3.5) (layer "B.Fab") (width 0.1) (tstamp 1385dd93-0a9c-4268-83b3-60f04722355e)) + (fp_line (start 11 -8) (end -9.4 -8) (layer "B.Fab") (width 0.1) (tstamp 1a79e718-ab5e-4b0f-9800-f1daf5eb62ab)) + (fp_line (start -11 -3.5) (end -14.2 -3.5) (layer "B.Fab") (width 0.1) (tstamp 1d44025d-4340-4752-ba63-648e54e53c1b)) + (fp_line (start -14.2 3.5) (end -11 3.5) (layer "B.Fab") (width 0.1) (tstamp 22478861-316a-4629-a278-bb7f093c30bb)) + (fp_line (start 14.2 3.5) (end 11 3.5) (layer "B.Fab") (width 0.1) (tstamp 32b2b32f-cf53-430b-86a3-48ff32f9a264)) + (fp_line (start -11 8) (end -11 3.5) (layer "B.Fab") (width 0.1) (tstamp 493336d0-6a28-490f-b976-d194bd545c52)) + (fp_line (start 14.2 -3.5) (end 14.2 3.5) (layer "B.Fab") (width 0.1) (tstamp 614a4531-15bf-407d-b9c0-ad6ef3648193)) + (fp_line (start 11 -8) (end 11 -3.5) (layer "B.Fab") (width 0.1) (tstamp 76690e6b-2bc6-451a-afe6-94b74b842f1f)) + (fp_line (start 11 8) (end -11 8) (layer "B.Fab") (width 0.1) (tstamp aa47d0e4-c64c-430d-a982-cedce715a60a)) + (fp_line (start -14.2 -3.5) (end -14.2 3.5) (layer "B.Fab") (width 0.1) (tstamp d9c686e1-da11-4971-8192-4bf3653d7060)) + (fp_line (start -9.4 -8) (end -11 -6.4) (layer "B.Fab") (width 0.1) (tstamp e93853ac-73d0-42c2-836f-493788ccab1a)) + (fp_line (start 11 8) (end 11 3.5) (layer "B.Fab") (width 0.1) (tstamp f32adb60-c05e-481e-bf99-a841cb28aed2)) + (pad "1" smd rect locked (at -14.65 0 90) (size 2.6 3.6) (layers "B.Cu" "B.Paste" "B.Mask") + (net 45 "Net-(BT1-Pad1)") (pinfunction "+") (pintype "passive") (tstamp 6e8fc5a4-0cf5-4ef7-81af-49d3d24e7d42)) + (pad "2" smd rect locked (at 14.65 0 90) (size 2.6 3.6) (layers "B.Cu" "B.Paste" "B.Mask") + (net 46 "GND") (pinfunction "-") (pintype "passive") (tstamp bfa8dfba-ca58-4f82-a2fc-ba5a56a6b61b)) + (model "${KICAD6_3DMODEL_DIR}/Battery.3dshapes/BatteryHolder_Keystone_1060_1x2032.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 857f9461-8b1e-4ff0-84f2-369849c05782) + (at 134.75 104.5 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/5f5a5875-6a56-4582-a73d-ebf515c445e5") + (attr smd) + (fp_text reference "C12" (at 0 1.5 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 00ea2558-4ad3-43f0-ae36-0a464f2e589f) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 75373835-230d-4166-a341-4bb00cb117c9) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 2e7e2e7d-9751-4b3c-9350-5c6e14de1b2b) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 5863b792-6c0e-43ed-8b89-ca95c43fbc52)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp c4d16fb3-7dbf-4224-a7a1-564797dcc944)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 25ab6a1a-9154-44e8-8fa1-858da83bfedd)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 2f2e0347-e812-4aad-8833-87c028db554b)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp facc2845-74c1-4e1b-bec7-2ab2546d8668)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp ff77009a-fa72-4dc1-81ab-bb6d817fa35d)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 34ec618e-3bba-48d4-b069-f296d658cf91)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp a86925e1-5a46-4b0c-8fdb-34e0d51b1abd)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp ad9c7d99-1fc6-48a0-a898-1004227987ea)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp e9fd72b5-35fe-4359-b9bd-25afc10d326b)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 140e9908-91b1-4ce6-9fd4-fe7810f98a39)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 2ef4dc30-a28d-4925-ad98-7471aed48b75)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 8d9cf9c0-5231-4af2-84f2-440679c0fe95) + (at 160.75 93.5 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/5641d56b-9829-49e8-b5b5-4c281f49578e") + (attr smd) + (fp_text reference "C30" (at -3 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 96c45afc-b0a6-4143-a890-31aa930944ef) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp b3d9a7ca-6cf2-4182-b3d1-6e4e718b5266) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 2a8339d6-4e3d-4a28-803a-e5d5e2c9b6cc) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 1bf2b951-a688-4740-a104-06c626ed6131)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 4dca4afd-8b88-4b5f-bb65-2a45fcc8defb)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 220995ab-8317-4f5f-a07f-ddb53b94359e)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 3e870fdb-503d-4015-9cc2-d80c43536cac)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 716bf133-287c-406e-a96c-34701beb4c19)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 8e560349-adc5-4deb-b111-40679bc64d16)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 65936575-d788-4930-b44a-653bcd40e220)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 75f2b13f-086f-4f3b-a384-d5c2c81bb0ac)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 81b92b6e-17a4-4cdd-8012-1c720f2f43f7)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp b740a94e-0465-4595-a840-636a2f62d64c)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 7b8e36bb-565d-4552-b2e4-2d294984076a)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 7c48d84e-ba59-4e31-b1e9-cb131b01815a)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 8eb848c8-f201-478d-8b6e-49e248348322) + (at 179.25 83.75 180) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/d21e5415-679a-40f4-b9d3-0f558c2e3abf") + (attr smd) + (fp_text reference "C20" (at 3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 7c1a1e2f-09ab-4fa9-bebc-eeb65f0bb9b7) + ) + (fp_text value "100nF" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 695fb231-e9ce-48d3-bbb4-3bd4a09e56a5) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 095779be-69a7-441a-bcd0-119f12492c20) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp e06c585e-7a05-426a-b42e-d545bc8e790b)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp ed99dc4f-8ce6-40e3-9cbc-46782d5ccea9)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 75d38934-f2cd-467c-ab5d-a0340df8357a)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp b7b40143-8b09-427d-80a3-e36d3048ff9b)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp b8bcde2a-af5b-402e-9d38-04ff37161a3f)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp fa302220-e99a-456e-812f-e92f6778433c)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 1117ebb2-eee4-4e3e-8489-d50c94135e9c)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 57bf11cb-18ec-4ae8-ae77-5e2ebce78f38)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 73d6f83c-07bd-44f8-807d-1e86f5248319)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 89d67379-da60-419c-a14d-3032fbae78ec)) + (pad "1" smd roundrect (at -0.775 0 180) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp e3bc27de-342b-4c91-9ccc-021740e53976)) + (pad "2" smd roundrect (at 0.775 0 180) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp d0a4b709-82d2-4931-a860-fc29743444ff)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Inductor_SMD:L_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEF0) (tstamp 8fe6335c-6ef4-4f90-bd23-e22dd8eeb1b0) + (at 135.5 114.25 -90) + (descr "Inductor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "inductor") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/45ec13fe-5f93-4814-b0a9-2ef724502115") + (attr smd) + (fp_text reference "L2" (at 2.75 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 5f05dd44-8b92-4b23-9f9f-e51112b2994b) + ) + (fp_text value "470R" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp c8da5eda-b775-4e70-8a14-47fc22f0bb78) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp a28df6ae-941a-4d07-889b-58fe0bd0d27e) + ) + (fp_line (start -0.162779 -0.51) (end 0.162779 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 316f72ef-241f-44c2-8e3d-bffd24039e35)) + (fp_line (start -0.162779 0.51) (end 0.162779 0.51) (layer "B.SilkS") (width 0.12) (tstamp 5b7282a4-47f0-4248-a1df-8c8a5ecb94b7)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 2c0915df-afbf-4912-8de2-91b83869b9da)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 386ff0c5-124e-499e-a45f-28336ea5af28)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 87c29868-a29a-49f0-9df1-3a8df82a7050)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 94949aa3-da43-4ccf-ae22-bf0d3f893a6b)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 3df33561-bcc1-4f29-979d-f20561ddcb4d)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp b8b61681-8da2-4443-a2cf-aabbb306a5cd)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp e1f2cc33-7ec0-49e8-8cdf-6de17f8ea923)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp e9897491-5131-4a7f-8b88-03e156163b7e)) + (pad "1" smd roundrect (at -0.7875 0 270) (size 0.875 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "1") (pintype "passive") (tstamp 8f4b765d-4abb-4850-b6d6-d6b5768de045)) + (pad "2" smd roundrect (at 0.7875 0 270) (size 0.875 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 155 "Net-(C8-Pad1)") (pinfunction "2") (pintype "passive") (tstamp ab34ad5c-193c-4837-8002-aa3e314be835)) + (model "${KICAD6_3DMODEL_DIR}/Inductor_SMD.3dshapes/L_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 90edf9d8-e992-4ea0-aafd-5d26923d797a) + (at 185.25 101.75 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/a61e6e2e-0cef-4616-939d-fadea790ce4f") + (attr smd) + (fp_text reference "C41" (at 0 -1.35 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 906d95da-6fb2-42d1-9a3c-17ba9521b7e7) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 4f29ffae-9574-406c-80f1-5441fe1ae372) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp e5252a0e-1057-46b1-8da4-3148f108cfdb) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 4700e0d2-fdd2-45c1-9915-5db20950332d)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp f6c325fb-dc2d-4753-8384-f70809664667)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp b38a5886-1df2-4ceb-b8fa-1cf3f5f76dfc)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp c0f55775-d328-437d-8457-7b3a0179c855)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp ebb8a4b2-5292-4f50-bc44-acfe223c5b76)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp f2b8e7d8-732a-4914-be26-61ad944ede14)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 33f0e28a-aab3-4fb0-a05f-a4339c2aa1c9)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 5b9f4e59-5bae-4be0-9917-6165143c44b5)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 7825bf05-dd97-4eeb-917b-85d43d27459c)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 8b5f09a6-8066-4f51-869e-fccdf6b31de1)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 6a245e4f-f14e-4a8a-aa64-76b78cf49603)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp e8ae2e54-e6d4-446e-854a-e129d34f1dc8)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 954421bc-64b3-4841-a752-5be2b216804b) + (at 133.5 114.25 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/03085d81-2734-4969-bd47-0eafbab0f38e") + (attr smd) + (fp_text reference "C8" (at -2.75 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp f20caa5e-21a5-4e1b-837b-58c3276a7842) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp e6baeb91-c0f2-47dd-aec8-4cff3d571c29) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 42c7a4b1-41b3-434a-a7b3-9a78e25d0088) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 37bcc571-195d-490e-9952-e8b59fa4abdf)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp f8e87ce5-979d-4980-8107-db11dc2d1815)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 11254ad0-8978-4762-b388-6f614e64d83c)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 7179c306-be51-4e79-9918-cd63ff010e7b)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp afe367b0-58c0-47b0-a318-cd6f5c0a8ad2)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp d133a11f-df35-4858-a917-7a4ce9b25115)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 95ec5df0-e0e9-470a-9e8f-eb026a67b8ac)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp bb3b4738-1e2d-45f0-bd76-163d4c8986ff)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp ce4f1ff8-01b8-47e1-a1d9-94fa6a99b57a)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp e0ff0b91-9d58-4e5a-ab64-6aeac85e8a54)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 155 "Net-(C8-Pad1)") (pintype "passive") (tstamp 19c79f87-f64f-4bc0-8c6f-eef146ce3056)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 1adce753-2245-4530-908b-ffd024c9db5d)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 9a45c697-123c-480e-91fb-b700cf7896ae) + (at 146.75 99.25 180) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/c3135751-427f-42d2-9a94-3179d7de2153") + (attr smd) + (fp_text reference "C27" (at 3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 0429cfc5-41f4-4a8b-aab9-393a8684f010) + ) + (fp_text value "100nF" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 42507272-803d-467a-befb-240d140673ef) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp eddac8a6-b167-44c6-b8dc-65e6c3abb24b) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp cb1923a5-2fb6-4503-ac58-81afaa563cda)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp e983b720-5f16-48d1-ba99-547155a958d9)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 0328f1f9-e816-4124-923f-04466dfc196e)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 9e8c1d0b-56cf-4a04-af4e-0ebfc32df213)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp a67a21de-e5e3-4bf0-983b-a12e4287f62b)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp f0a7df9c-ae11-452d-b3d0-8d1965d5f3fd)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 4592437c-25be-45d6-aad4-1491fb6b4e95)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 61fb1069-0b7f-462d-a372-217092c62ebc)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 8249c119-40d5-4380-9a6d-16621a67ed7a)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp ae8d13e0-4963-42e5-8fd2-03a38994031e)) + (pad "1" smd roundrect (at -0.775 0 180) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp bd01e6e6-df44-4ae8-abbb-a43f91199a45)) + (pad "2" smd roundrect (at 0.775 0 180) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 6ec68b81-6673-4215-bd3f-7c4815ea3aa6)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp a0535359-2e7e-4964-90e4-52e3d06f7435) + (at 169.75 96.25) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/e505a7b3-3ba0-4037-b4e7-40457055df66") + (attr smd) + (fp_text reference "C32" (at 3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 2c51d0e4-f8b3-43be-87c7-15fe4bd2cd92) + ) + (fp_text value "100nF" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 46e358d6-00a4-4fb6-abfb-d62f95b6324e) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp be91e3d3-c1be-4478-987d-aea69870ffa6) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 5831a4e5-494c-47bb-ab9c-79cf45e1f37b)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp a2c7a886-8fa0-4f3e-91e3-45d5934a102a)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 3a321af6-7d0f-4a0a-8c91-4fa7d11cbd91)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp d587e9f4-13ff-4854-8936-f431781f18ff)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp e45a7589-3a8d-4923-b9f1-ecff8ec9a6ee)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp f7feea7c-09fd-4ece-9f5a-90a9e59f9464)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 27278c97-d19b-4421-8ffc-cebbb0943712)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 406fc092-3874-4e0b-8131-1b85f5a0e8f4)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 536b6cf6-4d1f-435e-af3a-a88bc0ab5276)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp ba579cdd-c39d-4815-9d2b-0c19559f8945)) + (pad "1" smd roundrect (at -0.775 0) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 1ab11fb3-b602-4397-831d-cee007db0874)) + (pad "2" smd roundrect (at 0.775 0) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp e730b61a-1084-409c-8802-c3ababd932f2)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp a07589d0-b90d-4be8-9546-4f72ddecf3a7) + (at 169.75 81) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/303e7d15-a601-4397-8721-b9f3cf051807") + (attr smd) + (fp_text reference "R14" (at -3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 5f775e2d-9bd0-4be6-9937-8b653ae07606) + ) + (fp_text value "2.2k" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 178d4e91-1f70-4419-bc93-030001faa1cf) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp c095ff03-c55b-4b8a-9e25-3cc0343293d0) + ) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "B.SilkS") (width 0.12) (tstamp 05b05221-59eb-45d7-87ee-402dddb4b3f4)) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "B.SilkS") (width 0.12) (tstamp 225adef8-31cb-45b0-a1a0-128c41c44c84)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 11248a09-1e43-421d-a60f-299594f40674)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 301eeecc-21fc-4a52-9828-13bd1767c5b7)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp a080eb6f-10ac-45f1-ae20-81acb9401f83)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp d5d37dfa-bd35-443b-9f0d-81088b4f675e)) + (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp 25cf6fed-a08a-4dea-943e-666b67922b2c)) + (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp 2dca6e52-90aa-4f36-99fe-e797820d8446)) + (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp 3deebff0-bb4f-40c6-a7e6-0d2d2473877d)) + (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp 47f35655-2090-4c59-874f-d0603ef77ed5)) + (pad "1" smd roundrect (at -0.825 0) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 47 "I2C_SDA") (pintype "passive") (tstamp cfb8a5c6-5757-4d08-b445-5529a7a770cd)) + (pad "2" smd roundrect (at 0.825 0) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp c38a4fd4-d84e-4ab5-bd39-ce0537d909b8)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp a2f695dd-2517-4419-ae1e-4502c2d79cfc) + (at 169.75 99.25) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/6f6c2377-8039-497e-9b10-e130c951f0c3") + (attr smd) + (fp_text reference "C33" (at 3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 91be4c9b-7fcd-4e87-86d9-31d6e7715892) + ) + (fp_text value "100nF" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 1f807afb-b2b1-47ba-962d-0d8fd0308777) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 989928f2-2466-4889-81fe-56a8f27d5abf) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 97e4530d-6f7e-467d-aa4b-f07aaecf582b)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp a26f3f99-0bd8-4208-be2f-1e2ae2766ba3)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 0e85dd11-4eb3-40aa-9496-e5f297d85785)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 1bc474aa-afff-4bb2-9080-aa273d02e76d)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 4138be80-2229-496e-a03c-0ea50dd0e55c)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp c81da0cc-f3af-4fcc-ad46-3e2c26a8ab77)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 10c434d1-6884-4a8f-928e-8076b878c6cb)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 635beacc-484c-4674-b3de-83398845e617)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp be3288f5-503a-4008-b9cb-a33580127d4c)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp e8a1a07f-f25b-4577-9297-ead23fa5db84)) + (pad "1" smd roundrect (at -0.775 0) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp ef826abd-bcaf-4a1f-ae08-20e20700505c)) + (pad "2" smd roundrect (at 0.775 0) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 720c525e-e505-47cf-9cf1-857547f36f4e)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp a8a0d954-980d-4eec-86fb-51695144c42e) + (at 191.65 113.25 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/aeb0d0cf-6d04-4e89-836d-342f2e598d6b") + (attr smd) + (fp_text reference "C46" (at 0 -1.35 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp d5aeb44e-b68b-4763-b427-599b7075f629) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 3cc3c4ac-4717-4442-92d2-6613b1562317) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp a956e548-8499-4325-8fba-61057a62ad79) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 751d5b53-346e-4511-ae9c-e34f9a1d93bb)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp cf4ce0a7-2c93-4e68-bd5b-deebee19921e)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 4a276704-3c92-4fed-9da7-518cb38e38c8)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp a7caee4f-4642-4e2b-ac3f-2e241ff62ddd)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp d1472056-ef47-4cd3-ad5b-61eaa5dcfc8f)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp d589ec1c-c249-4a20-b19e-f593b1770650)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 487a289f-3b0b-44ce-966b-c1eaf6268edc)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 88e3fe4e-6c62-4239-a290-a6dddcff3080)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp af5acb22-a2c2-4996-8df9-3d68e476e59c)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp fb388f96-922b-43ac-88b4-5de4b21c95c6)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 08d11128-d877-4ae2-850a-a4c672d4c524)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp b4d42ec4-a767-463c-bb7a-3cbfeffdba8d)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp ab4e63b9-1fa5-4803-b7fb-d4780c0c4b85) + (at 131.5 114.25 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/5eb8655d-026d-48b3-9313-87b558b7f693") + (attr smd) + (fp_text reference "C7" (at 2.75 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 109fd62e-ba82-4b2e-954f-aa1a6df1b573) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp fb55f502-f536-43ae-9764-79bbc249fba9) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 72d5e03c-fa76-46f4-9fdc-0dc07fbe3822) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 1cfa19a9-89b1-4f1a-9471-cfbb6a49f5b7)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp af9a59ec-d7ef-4917-a83f-fc8cee55a3f7)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 067e2774-6658-469a-8d6b-a42f6b4e34b6)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 1b0432b2-b928-4169-8cfb-237620edc665)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 2884f877-264e-4733-a14a-90ec2579c0a5)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp f58f6aab-6597-44f2-be82-7545abdf02eb)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 35cbdeca-46b2-4fb4-8e7b-eb87b3b0063b)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 4617c535-4e6e-4099-90d9-3373a0e7f46f)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp b429a89d-5b93-490d-b9d9-087049816e1f)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp b8f819e4-aabf-45dd-84a8-f5e2b6269a8f)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 3ae72c3a-20ea-4a04-8645-ec60313a3648)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 154 "Net-(C7-Pad2)") (pintype "passive") (tstamp 93659eb0-5cea-424b-9e21-7d6b54bb93f3)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp ad3bd776-d722-458d-8b1a-bc27b25471fa) + (at 167 116.5 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/8b893dd0-e97f-4683-8d2e-b0e1c10c6051") + (attr smd) + (fp_text reference "C36" (at -3.25 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp f5528f33-456a-4d5e-af9d-ef1b674bf1de) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 7956c229-5595-4d9f-b108-126d1ffcd044) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 6bfdd339-7457-4f68-a801-be5da055ca66) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 1781ea95-8e47-4218-8051-9707976d678e)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 3b76065e-2adf-40ac-87e4-e1e13a8b3559)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 48c34a43-d365-4b46-bbb2-6b2b8e9f7adb)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 505cb431-c5ec-4679-b956-4756d2afc1fb)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp aca75556-be3d-48b3-91a5-0d97501e37ff)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp bf51c71c-96e8-42c7-b7aa-8f6c2503323d)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp b6ae2a85-8f50-4ad2-b2db-00b8e7823c14)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp cad9f464-4547-42f0-a878-450355e077d9)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp ce1247ed-5412-473b-94be-16f7dc599e15)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp d0d983ea-5c75-4358-ba8c-110cdb4694e3)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 243b478b-cdc2-423b-831f-f628db57bc07)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 5bc24095-6395-4d8e-8234-51e139eeb9d4)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp ae2254bd-b63c-4024-8c79-4ff88c3b0e4f) + (at 146.75 113.75 180) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/fd1e1286-95a1-43a4-bd11-65aa433249c2") + (attr smd) + (fp_text reference "C24" (at 3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp cb362edf-2b2d-4ded-8123-5fb9f6228770) + ) + (fp_text value "100nF" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 184ec870-d2ad-446f-87ee-149639f55f9d) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 592b300a-ca12-49c1-a77a-50232057a526) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 2c0b3649-493b-4b5b-b053-74be9409e9d1)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp e37099f8-c6c6-4761-b774-c50cc563cf46)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 035daa74-b250-4e08-b996-c6fc11ad3653)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 534dcd12-aac6-4bb0-8c93-540766d2ffed)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 7ab1e865-8c04-4669-abb7-8b8d1eb1bf9b)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp f42dfb0e-cbaa-48b9-8c90-9054d4f2eefa)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 674d44ec-126e-4e29-86e4-127fe1918576)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 69a6b9fe-f618-4538-add5-06deda83e8c1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 8d0759f9-37d3-4b11-9109-985592eb6d80)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp d8d4fc89-f5a7-4169-834c-16bdf5cafcf2)) + (pad "1" smd roundrect (at -0.775 0 180) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 9d79dff0-7a35-4feb-95ea-98a57745bd4d)) + (pad "2" smd roundrect (at 0.775 0 180) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp d093c876-8a7c-4eec-9faf-e3c6349b1c3d)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp af05610d-6f5d-4f47-adbf-bbeaa19c4104) + (at 169.75 86.25 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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/7295e019-ebb9-424a-ad6e-06fdc7f816d8") + (attr smd) + (fp_text reference "R16" (at 3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp b61746d0-1440-4220-87ff-4ff1de40c619) + ) + (fp_text value "10k" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp b6d29a61-a196-4a02-8807-60bd5497f3b5) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp a9552fd7-d35e-4da7-ad81-1b11a97c9449) + ) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "B.SilkS") (width 0.12) (tstamp 6c6cb8cf-c548-4e4e-871d-d83fb10613c7)) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "B.SilkS") (width 0.12) (tstamp 9883eae0-586b-465b-9b60-85c37b8a219d)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 4af0e295-3c13-46e8-9f6d-845b11ce2b13)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 973a3d39-2af0-417b-b007-691499e66006)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 9a3a96ce-aa34-4bf9-a61c-6c632d5554a7)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp dcee5d47-4cbb-493a-bbd2-f3bde79efdae)) + (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp 21443168-9ad6-4e56-a092-b6198fbe26b9)) + (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp 9d1c83cc-7556-436a-9cd3-365b964d76dc)) + (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp e55a10be-7df4-4145-be87-c5946eedf708)) + (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp efb45715-9f05-460d-b89c-38ea26fb6cf6)) + (pad "1" smd roundrect (at -0.825 0 180) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 433b7fa3-5a66-4da3-8a32-088388832243)) + (pad "2" smd roundrect (at 0.825 0 180) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 38 "SWCLK") (pintype "passive") (tstamp 4562d8d5-c359-4a02-bed4-1fe4b7b23a01)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp b6f2610f-298b-4013-8d06-6431be017805) + (at 194.75 92.5) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/25b1fb90-87c1-483e-8933-09b55f4fd3ab") + (attr smd) + (fp_text reference "C47" (at -3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 29e2f0f6-76b2-45ae-bc84-42d64ecd817e) + ) + (fp_text value "100nF" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 58b57014-cf42-4391-bd8e-018fd97e3fd6) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 53f692cf-2c5c-4699-8e36-19535cd9e6eb) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp aead56d8-c489-4a48-af1d-3630a638970b)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp e39f3d14-8c80-44f0-a96c-8f631d0393c5)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 1e269a36-81be-40a3-b8c5-6b11cbc484f4)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp d9bf875d-74e2-4fb1-a785-e3469bd6dc11)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp e65edc8f-a79c-4dea-bbe6-25ea668c7624)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp fac01f68-9dd7-45e2-a807-37d056a65110)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 1bb92876-1784-4ad1-9cce-085b9bc9abd5)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 8801d3c8-98b2-44c0-934e-e1b895c72774)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp ac0bebfd-526f-4579-91a9-67b4a1584634)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp de53cb68-0ebc-4a32-8337-e4082f6d883b)) + (pad "1" smd roundrect (at -0.775 0) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp df73ec42-e353-43f4-89c7-57ccb50751e1)) + (pad "2" smd roundrect (at 0.775 0) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp f24be517-e17d-4df5-865a-f3bcbb79e9b9)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp b9e8ccd4-0b4f-43d0-807f-4a6c2dcf2526) + (at 148.5 87.75 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/614914c2-3abd-4f26-90db-4b83af4389e9") + (attr smd) + (fp_text reference "C18" (at 0 -1.5 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 7acb8f98-cae2-426d-826d-c77ef68204bf) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp d04d1769-c1e4-4a88-a0b5-4e66cd5c43b8) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 40bae1bd-fa20-46d7-9887-a37c2407cc18) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 4e06b4e6-4771-4a07-94b4-93855558cd2e)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp ba228429-cf66-49e5-8467-36f5187311a4)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 7a528b0e-febe-4f3f-9d99-fb811b5cd66d)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp a60390e2-bb5f-4562-a63c-50f494d4df4d)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp a85d9d08-c5c9-41a0-b830-469e7eeac257)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp c1a9f1da-d902-4313-b0db-8d9f5691f777)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 0051670b-de4d-49b4-9014-5b41833df631)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 1c69a486-1cc3-4338-9b84-0da8844e0c5e)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 3cc56f55-2bed-433b-8e27-4be5eb5d07b3)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp f6533532-78f0-4de4-9b9a-3e0d4214d25e)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp c37fbe22-d93e-4973-bcb9-2a723ff7a6bf)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 2b5094c2-604e-4318-8777-92ba3f1849d9)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0805_2012Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp c662bce3-9fe2-4e5f-b794-a2668c48a031) + (at 195 94.75) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/94dcb139-2876-4a88-9afc-5a91f644dff1") + (attr smd) + (fp_text reference "C48" (at -3.5 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 744dcb2d-5a52-4e12-becd-2f36e89b5b21) + ) + (fp_text value "47uF" (at 0 -1.68) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 5951ed65-ad12-4bbc-8021-f78a22ea4ab0) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + (tstamp 77773063-0324-4463-8de5-c685f4c700d0) + ) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer "B.SilkS") (width 0.12) (tstamp d3b79cb8-dc6e-4c18-8982-108c5ae94180)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer "B.SilkS") (width 0.12) (tstamp e6c1dcff-f2b3-4c39-842f-584f0c3120ed)) + (fp_line (start 1.7 -0.98) (end -1.7 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp 086b6954-669a-40db-ad3d-79f0bff72849)) + (fp_line (start 1.7 0.98) (end 1.7 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp 0cf7538c-7335-438c-8fb7-647275d3eb72)) + (fp_line (start -1.7 0.98) (end 1.7 0.98) (layer "B.CrtYd") (width 0.05) (tstamp 8f3d04b4-c106-4a4a-b6d1-5c2569b0ac59)) + (fp_line (start -1.7 -0.98) (end -1.7 0.98) (layer "B.CrtYd") (width 0.05) (tstamp ab175561-0bff-4394-bbd3-90130c4a7d60)) + (fp_line (start -1 0.625) (end 1 0.625) (layer "B.Fab") (width 0.1) (tstamp 04db895b-c5aa-4bc6-8a33-4dce15e1377f)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 0b214450-c0b6-4691-8f7c-b8c5bc2417a1)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer "B.Fab") (width 0.1) (tstamp 3103bd41-6e35-48ae-9c26-f17ac1c998e3)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 64ef3902-5e11-45be-8780-40274785f680)) + (pad "1" smd roundrect (at -0.95 0) (size 1 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 4212222c-95b3-4035-916c-ba85e9f64ac0)) + (pad "2" smd roundrect (at 0.95 0) (size 1 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 197f6120-7676-4685-bff1-da9db78045dd)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp cc4059df-7991-45a4-8003-7818f2823a78) + (at 125.75 114.25 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/0a51cd04-5336-4bfb-ac7b-21533c8d00bb") + (attr smd) + (fp_text reference "C17" (at 3.25 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 4f0ccae3-51de-4505-aa6d-02995ca07b14) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp cf2405a4-aca2-44ef-8dbf-eb444978086c) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 3ba66590-f19e-40bc-9333-a215f2edb867) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 161b2b80-ff14-4f93-8abe-85f8174d1aeb)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp b952cabd-c873-4cd1-85d3-3c21d2a92ad5)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 3dfa484e-357c-4a7b-9c7b-374285698d7d)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp a433b948-773d-463b-8f70-c4ea65bd4d22)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp ceae044d-8534-4e8b-a27e-ca8d0524a6f1)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp d68cd8e0-908c-4df6-9777-ccb5a25512ba)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp ab8ec07c-719d-4065-9d57-dff957575752)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp ae57fb79-a770-4b04-be42-c44c5f8a17c3)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp be5da963-b2e9-463a-8e02-2bea187a4e53)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp ef7062dc-bf40-4154-bafe-95a44415c235)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 9f2bc675-1b18-4d59-8097-b93913db13a8)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp d432840f-f0f6-4c30-be32-76536e760dd6)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp d3669c04-66b3-4564-95d1-48621456c6fa) + (at 164.25 116.5 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/368cbd0e-6260-44d9-af09-bc08be9667bd") + (attr smd) + (fp_text reference "C37" (at -3.25 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp e97b094f-7dff-4434-afc0-b6dbc3a48988) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 832dcbd4-3b82-4a39-85ec-de9943e834fa) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 037af84b-a3d8-4a5b-b567-1585cb11e6c0) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 1de7721b-584c-47f7-886b-4d85a19cf7bd)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 70f92ae2-70bc-4141-89a2-89acd9a76140)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 241113a9-2ebb-4080-955d-ff1be904c05c)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 9c420683-b66b-4917-ae0c-798c17f32ae7)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp b48e45d4-577c-41cc-b612-d3132a1ef3b8)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp e7e49167-26fd-44c9-b8d9-bc88787a54cd)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 3945c87d-5518-418e-a348-7e1e7690bb6b)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 612be549-0969-4e81-b06f-b8a06fa7b192)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp a05c27c9-4bb1-41df-929b-9baf72e65f65)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp adb11388-1a40-495c-81ab-fc8610c4d7ac)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 683c44ec-4d68-4fc5-b0fe-8da9806aea92)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 7251bff0-5f2e-416f-b6a2-640151094585)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Inductor_SMD:L_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEF0) (tstamp d3e9ce71-e322-42d7-a502-774cc0abe6f4) + (at 129.5 114.25 -90) + (descr "Inductor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "inductor") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/6a7f3f5f-7361-4bc7-aab9-0a665363dea2") + (attr smd) + (fp_text reference "L1" (at 2.75 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 403daa26-e088-4bf7-bbaf-6a6b4d1c04fa) + ) + (fp_text value "470R" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 3f6015d8-cf8b-4805-954b-191f5b71329e) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 220a91f1-941e-402d-8a2d-b76014980f17) + ) + (fp_line (start -0.162779 -0.51) (end 0.162779 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 45f2ee6e-a3b2-476d-bd3b-1c4f3886062f)) + (fp_line (start -0.162779 0.51) (end 0.162779 0.51) (layer "B.SilkS") (width 0.12) (tstamp 671bb614-2361-45a8-a13d-d00edea5ae8d)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 47c35201-1f56-4b24-aa02-e833a119eb69)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 8efef18f-afb8-4372-b2ac-cf20fca75c64)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 9e7807d6-d8a2-49fd-8f2c-c84842ea2de8)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp fc96761e-1b0a-47cf-ba64-b8bcfbd8029e)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 2e2b950c-b2aa-492f-b1b1-a61fef4e2326)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 53298a4b-ef3b-40d4-bb1d-ed221f110153)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 96ab2dc0-1f5d-48a7-997f-3b2f732e1766)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp b42c5677-7f59-4b63-92da-03e7722de512)) + (pad "1" smd roundrect (at -0.7875 0 270) (size 0.875 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pinfunction "1") (pintype "passive") (tstamp 3a8f5b93-ddc3-41a4-b8b5-0b13aefd4f07)) + (pad "2" smd roundrect (at 0.7875 0 270) (size 0.875 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 154 "Net-(C7-Pad2)") (pinfunction "2") (pintype "passive") (tstamp df09b0c2-3fa5-450f-9cf1-7f0a96c1bf59)) + (model "${KICAD6_3DMODEL_DIR}/Inductor_SMD.3dshapes/L_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp db2dbd32-ca3b-4315-9015-1d7e24957f30) + (at 129.5 104.5 -90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/b1eae589-88fc-49de-92a5-165aa1590642") + (attr smd) + (fp_text reference "C10" (at 0 1.43 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 5f9441b1-457c-47e1-b0b6-1d3ecd558ede) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 32d7ed43-14c7-44bf-b67a-aff42390c566) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 00e72a59-fb73-4ea7-a4c0-7306d53d2a0f) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp f9bbdb30-52ec-4b81-b42b-1bb98194b0e3)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp ff3d3713-f3cc-48b1-84cc-91cbfd9a25f3)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp a5cb5363-3a57-4d19-9910-68ca76bcad68)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp e7c79e4d-e902-4635-9022-9acce82446ea)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp f8569eb4-84b4-4e06-8a0c-2fb8c1d726b0)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp fe46ed34-60ef-4672-bc48-d30cb2819d45)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 4420a35f-a03b-4f1c-9e74-cda4fdf79df5)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 72750100-e421-44ef-b916-3c125bc3be20)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 7beac166-8e8f-45c3-ba83-dfb1f0c1aa5b)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp c612c58a-411c-4f6e-ae43-4e7b4297bfcc)) + (pad "1" smd roundrect (at -0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 4c7e1da8-ab65-48bc-8a73-ce6de5c080f3)) + (pad "2" smd roundrect (at 0.775 0 270) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 4c2fb2a8-c7b2-48af-bd69-0b2517efd15f)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp df0d9704-78cc-492d-9f8d-9291c71fdf22) + (at 169.75 106.25) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/79c68ec7-484d-45d8-b8ea-7b0a7306e7c6") + (attr smd) + (fp_text reference "C34" (at 3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 9ff36a8f-e3f9-4242-b1c1-fc73ebe8758b) + ) + (fp_text value "100nF" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp ca51f33b-b91c-441b-a47d-8c182fe95bd9) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 770f31ee-4f19-4398-9a76-b6994dc6b4b5) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 2e631aab-b792-49ea-a28e-eef7473eb092)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 48e5f89b-a182-4b33-8b72-28bfb71844e5)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 13a8b78a-2ef3-4e3c-97ac-1c30a306e69d)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 64b8f592-c4a8-46f7-bc33-68b9abb1f0e9)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 965fda98-91f4-4f16-bab4-efd358f4841f)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp ab9ee08d-290c-4524-8e1d-ef156e62bd14)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 25891f77-6bdc-4473-8b5e-a808ea8b6adb)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 2a3c4493-3cb8-47d5-8338-f73b66b99f09)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 6ae18134-2cb9-4325-b3f2-feaaa551ebd9)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp bccb3d76-475e-4d5e-bf08-78c4c8b39533)) + (pad "1" smd roundrect (at -0.775 0) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 33d336a4-b864-464a-bdd6-2893720f2b56)) + (pad "2" smd roundrect (at 0.775 0) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp bec6478a-fd02-48d9-9d26-960202b54a6b)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp e051bc19-beaa-40fb-8d51-750a83c26414) + (at 149.5 93.5 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/4f8814bc-1ddc-4d9d-8341-e717fa829f27") + (attr smd) + (fp_text reference "C28" (at -3.25 0 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 139dd4ec-11e3-4228-bc1c-4219fbc28288) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 415349a2-a7ce-4980-9796-5064617d40e0) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 29035100-23ae-44c2-9524-52f99f92593a) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 0862faa6-ecb4-4244-ba2f-d8680da4d068)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 62861ce6-a8ea-4484-8338-69545b3f4f6d)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 17b02936-134e-434a-9c47-29f0dfd2906c)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 45467050-7718-4534-8890-e34c45f14d63)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 651b0c22-3eff-4125-9631-2e47db11ad19)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 9d1c1fb7-4c23-47c2-b198-488589da3e8d)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 1d699049-d7fd-4fc6-8f16-825113d80ac3)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 66a4ce34-8f07-4a8c-bcc9-38a2723150db)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp cdd11432-988e-42e4-9cbc-09b713482c57)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp f8c50901-86d2-40f0-a076-d7c4c749fd84)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp 10c02247-fa6d-488f-851f-244b247f19aa)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 8b8d6655-b764-4e3c-a6bb-a797d887dea1)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp e6f2c5fe-9192-4a9f-bf6a-625c002edb69) + (at 195.65 101.75 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/1df87e80-2d07-4a8a-bb5b-e5faf9d9c905") + (attr smd) + (fp_text reference "C44" (at 0 1.43 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 9b141a10-3269-4421-9af7-43d26fa55380) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 1e858802-1980-45b0-a5a6-caf107d7e546) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp b8445bfa-94be-46c6-9a99-9d7191546632) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 5fc020c5-02ad-476a-8330-cfe5a73544fd)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 82d19ae8-98bd-495f-b9e9-eca9d1d42d37)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 5a01493c-6960-4373-bf0a-b7254feb09d1)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp d555be66-8b41-41f5-8c00-6148f39d75c5)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp e523e55e-45b7-42e5-813c-e4e4a63e504d)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp f04496e6-5316-4f4b-a7ec-122bf5d00738)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 1d746226-6132-4cc9-93e0-c6b0fbba61d4)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp c3d78f72-38e3-4cca-bfef-b9b8e8158c9e)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp d97c3a1f-fa0a-41ab-bd38-471a92807713)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp daa3df1a-40ed-49b7-b1af-d16fc5c94200)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp e551e59e-136d-42f4-8f46-5c47359d0e5d)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp e8d4f8a1-d6a4-4875-b270-07b4f208b44f)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp e71be039-8a27-45db-bc38-08366502fcaf) + (at 154.25 81) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/9a8905a3-5ca0-46a1-bee9-ca122e954a22") + (attr smd) + (fp_text reference "C19" (at -3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 0f581dfd-ee90-4c51-be56-3ca86feafd99) + ) + (fp_text value "100nF" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 164cce55-da7b-4561-9cf8-61fd1bb0fd02) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 315ab3a7-dbde-4350-8d27-2c159eea4a24) + ) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp 643e22b3-deeb-43ff-bc2c-07da27d97222)) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp e9d4ec7b-0faf-4c94-856e-fb5c85dae1c1)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 31b6764c-3b19-4aa1-b078-4334aebeea15)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 4f3fa24f-0098-4110-9d5e-f29c2494a63e)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 5b204535-0803-431c-9806-8a23bdbbdac0)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 5f5beabf-d907-4e6e-953e-7d60ec72d8cf)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 26c2f0f5-9343-4340-a578-3baad6887e45)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 5a61d23c-2107-4e74-9c4f-f84b4397b0d3)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 7624a519-93a9-40d6-bb5b-dd9a06683611)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp b1bf69b0-8e99-4086-b604-7c86b5ec3f83)) + (pad "1" smd roundrect (at -0.775 0) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp ce437d69-2ec1-46cd-a22e-1909788d788e)) + (pad "2" smd roundrect (at 0.775 0) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 11bb2753-e584-4def-8e88-1b52e5bb4a00)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp e7892975-c69a-403e-a207-7fd0b0fe74b6) + (at 198.75 87.75) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/351bd7d9-24e6-4a96-9b71-d9b4f5d9bd9a") + (attr smd) + (fp_text reference "R18" (at -3.25 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp d51e25c3-1163-466e-9ad7-e045b12bb6a3) + ) + (fp_text value "1k" (at 0 -1.43) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp a75b3a79-3a32-4870-a35d-5e944b8a449e) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 94dab548-8fc8-42f7-bad3-bcce2b127508) + ) + (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "B.SilkS") (width 0.12) (tstamp 0035c826-a072-473d-8555-545ff41cbe5c)) + (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "B.SilkS") (width 0.12) (tstamp 44a790d7-deef-406c-b05c-9abfc147dade)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 62343433-a6bd-4755-8845-e2c6098b5904)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 8546c3fb-f888-448b-abf5-6bc2ac6c466c)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp b829b870-a61b-4bda-81b3-2dee2730e6e0)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp f14afe03-2909-4bec-aa8f-b8fdbe114ff8)) + (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp 2ce61d31-f454-4e54-b222-2ccbbe79564e)) + (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer "B.Fab") (width 0.1) (tstamp 383d4f9e-4eeb-4b57-bea2-9a9ba57cd2a8)) + (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp 5f31ec5d-a545-46e9-8424-1fae3d852a16)) + (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer "B.Fab") (width 0.1) (tstamp 7d43f468-1f83-457c-bb0a-71dba77b1b0b)) + (pad "1" smd roundrect (at -0.825 0) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 122 "LED") (pintype "passive") (tstamp e41b8d53-90e2-47e8-a474-e97674c71a21)) + (pad "2" smd roundrect (at 0.825 0) (size 0.8 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 128 "Net-(D1-Pad2)") (pintype "passive") (tstamp 686532b4-0548-4e89-aabc-471123a08bf8)) + (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp e79d3eb5-970e-425b-ab13-bf46bc2ddcaa) + (at 134.75 100.25 90) + (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") + (property "Sheetfile" "sc64v2.kicad_sch") + (property "Sheetname" "") + (path "/04819b2b-cb43-4cae-baac-01caae26be72") + (attr smd) + (fp_text reference "C15" (at 0 1.5 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp e1a7c281-88c9-48b4-8a1b-647af11afa00) + ) + (fp_text value "100nF" (at 0 -1.43 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 05e235e0-5fa6-4e58-91e6-69133b06f056) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + (tstamp 5e91c75c-e9e2-46e8-81fa-07ef62e1bcd2) + ) + (fp_line (start -0.14058 0.51) (end 0.14058 0.51) (layer "B.SilkS") (width 0.12) (tstamp 8b558894-968e-4437-9c1f-0b32744ee8ed)) + (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) (layer "B.SilkS") (width 0.12) (tstamp ddb87181-f24b-45fd-9c97-776a3a7f6c9d)) + (fp_line (start -1.48 0.73) (end 1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp 0f40d5ff-3e59-4979-9eac-3fa9afd04b4e)) + (fp_line (start 1.48 -0.73) (end -1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp 55edf0a4-51a2-4fb8-b3f1-299c8730bd45)) + (fp_line (start -1.48 -0.73) (end -1.48 0.73) (layer "B.CrtYd") (width 0.05) (tstamp d891ac03-d6ed-4273-bbf4-e2fe2f29b368)) + (fp_line (start 1.48 0.73) (end 1.48 -0.73) (layer "B.CrtYd") (width 0.05) (tstamp fd77cc75-97d0-4f4d-aef5-0dcdc55756c2)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp 39cdfe9a-bb4c-4880-84eb-7ef9bb7c5e37)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp 6d4795e8-b7b8-41bf-8a6e-80f5c71c513f)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "B.Fab") (width 0.1) (tstamp b9b335de-4896-49e4-be94-793c5fb2ced3)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer "B.Fab") (width 0.1) (tstamp f4b27152-23eb-4d0a-a531-29c7f024ac0f)) + (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 50 "+3V3") (pintype "passive") (tstamp ae2df522-537c-4cb7-a417-4ba373ddb2e1)) + (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 46 "GND") (pintype "passive") (tstamp 06e3842c-e4ae-47ca-96be-ee51df8831a9)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (gr_rect locked (start 100.6 103.1) (end 99.1 125) (layer "B.Mask") (width 0) (fill solid) (tstamp 051c790f-2d9e-4f72-8acc-50f9e798df18)) + (gr_rect locked (start 199.4 104.7) (end 200.9 125) (layer "B.Mask") (width 0) (fill solid) (tstamp 2afdf684-251e-48cb-838d-ee4e7b0187ba)) + (gr_rect locked (start 105.9 125) (end 99.1 131.5) (layer "B.Mask") (width 0) (fill solid) (tstamp 4ba55d6f-ac94-4d74-ad6c-c1bd0b5bce0c)) + (gr_rect locked (start 200.9 125) (end 194.1 131.5) (layer "B.Mask") (width 0) (fill solid) (tstamp 81887191-7997-408d-991d-067bc9eabd93)) + (gr_rect locked (start 200.9 125) (end 194.1 131.5) (layer "F.Mask") (width 0) (fill solid) (tstamp 0fb7166d-41b9-44bb-b6a0-fa555d97b474)) + (gr_rect locked (start 100.6 103.1) (end 99.1 125) (layer "F.Mask") (width 0) (fill solid) (tstamp 2af6d951-eeb9-4d6d-89d3-b1a116bb54fe)) + (gr_rect locked (start 105.9 125) (end 99.1 131.5) (layer "F.Mask") (width 0) (fill solid) (tstamp 7616e056-cd60-4a83-9a71-d4a8faed5c45)) + (gr_rect locked (start 199.4 104.7) (end 200.9 125) (layer "F.Mask") (width 0) (fill solid) (tstamp b6401408-d93e-4af7-bcb6-3858d5eb7d4f)) + (gr_line locked (start 112.4 126.5) (end 112.4 125) (layer "Edge.Cuts") (width 0.1) (tstamp 051dc378-e92b-48a5-87e6-25fdf436851f)) + (gr_line locked (start 105.9 131.5) (end 105.9 125) (layer "Edge.Cuts") (width 0.1) (tstamp 0a5e7135-91e5-490f-9cd6-6c952660dae8)) + (gr_line locked (start 200.9 104.7) (end 199.4 104.7) (layer "Edge.Cuts") (width 0.1) (tstamp 18775207-2e19-4046-9652-0a609e0f1f5d)) + (gr_line locked (start 182.25 125) (end 187.6 125) (layer "Edge.Cuts") (width 0.1) (tstamp 2553436b-e9c9-464d-a06c-d950550e3da2)) + (gr_line locked (start 110.45 125) (end 110.45 126.5) (layer "Edge.Cuts") (width 0.1) (tstamp 2567e369-0760-4dd2-b05f-910315719521)) + (gr_line locked (start 199.4 98.7) (end 196.9 98.7) (layer "Edge.Cuts") (width 0.1) (tstamp 26774e4f-f93c-4f73-b9fd-ade697ebb321)) + (gr_line locked (start 189.55 126.5) (end 189.55 125) (layer "Edge.Cuts") (width 0.1) (tstamp 3ace0a35-1d54-4a98-863d-e4c9b0a582ed)) + (gr_line locked (start 103.1 100.1) (end 103.1 98.6) (layer "Edge.Cuts") (width 0.1) (tstamp 40017352-19c0-4fb1-ba6e-a250d8ac620e)) + (gr_line locked (start 194.1 125) (end 194.1 131.5) (layer "Edge.Cuts") (width 0.1) (tstamp 4ba9e55e-16a7-4d09-ba02-77625474432c)) + (gr_line locked (start 110.45 126.5) (end 112.4 126.5) (layer "Edge.Cuts") (width 0.1) (tstamp 5126f6f0-5f9a-4b93-97a0-09239d66586d)) + (gr_line locked (start 199.4 104.7) (end 199.4 98.7) (layer "Edge.Cuts") (width 0.1) (tstamp 51e70ecb-6473-472b-92e1-c45814a171c8)) + (gr_line locked (start 105.9 125) (end 110.45 125) (layer "Edge.Cuts") (width 0.1) (tstamp 5ffb7552-b486-4e9b-b04c-d3c56e8b8e0d)) + (gr_line locked (start 200.9 131.5) (end 200.9 104.7) (layer "Edge.Cuts") (width 0.1) (tstamp 6be9d213-3b5c-4d45-99b0-2fccacfd97f8)) + (gr_line locked (start 99.1 77.7) (end 200.9 77.7) (layer "Edge.Cuts") (width 0.1) (tstamp 71777638-6015-46ca-b332-71712a9354ab)) + (gr_line locked (start 99.1 98.6) (end 99.1 77.7) (layer "Edge.Cuts") (width 0.1) (tstamp 72aeb7c3-1b78-44b9-b85e-ad0c68a52824)) + (gr_line locked (start 194.1 131.5) (end 200.9 131.5) (layer "Edge.Cuts") (width 0.1) (tstamp 7960ca89-a54f-4c4f-8ff6-68fde4ed7f19)) + (gr_line locked (start 187.6 126.5) (end 189.55 126.5) (layer "Edge.Cuts") (width 0.1) (tstamp 7b98ef29-43ae-47e9-9801-dab1ae51395e)) + (gr_line locked (start 99.1 131.5) (end 105.9 131.5) (layer "Edge.Cuts") (width 0.1) (tstamp 7c42ec75-0fa8-4ef0-a6a3-b3777a4f3bdf)) + (gr_line locked (start 187.6 125) (end 187.6 126.5) (layer "Edge.Cuts") (width 0.1) (tstamp 84a7b1aa-b971-4994-beb1-7f62b5e8bd1b)) + (gr_line locked (start 99.1 131.5) (end 99.1 103.1) (layer "Edge.Cuts") (width 0.1) (tstamp 85afc30d-54cb-4b7d-88bc-254f80e0f85d)) + (gr_line locked (start 200.9 77.7) (end 200.9 97.2) (layer "Edge.Cuts") (width 0.1) (tstamp 8eb25749-9893-4dfa-91a0-f73f1c5353b8)) + (gr_line locked (start 100.6 103.1) (end 100.6 100.1) (layer "Edge.Cuts") (width 0.1) (tstamp a64c4b18-45ea-4519-ac7f-d65cf9d7cf65)) + (gr_line locked (start 103.1 98.6) (end 99.1 98.6) (layer "Edge.Cuts") (width 0.1) (tstamp a90674c8-6177-4f64-abeb-8c2c3874dc82)) + (gr_line locked (start 196.9 97.2) (end 200.9 97.2) (layer "Edge.Cuts") (width 0.1) (tstamp a9fff30d-af2c-453b-bbd1-f7c4d85b411c)) + (gr_line locked (start 112.4 125) (end 117.75 125) (layer "Edge.Cuts") (width 0.1) (tstamp ab4a8777-21ae-4a20-b57c-18ff0f83fc92)) + (gr_line locked (start 100.6 100.1) (end 103.1 100.1) (layer "Edge.Cuts") (width 0.1) (tstamp ba8b88eb-80e4-4fa1-9e77-db96a7193967)) + (gr_line locked (start 189.55 125) (end 194.1 125) (layer "Edge.Cuts") (width 0.1) (tstamp e42b96b0-ad98-4690-b427-cf8f46304c16)) + (gr_line locked (start 196.9 98.7) (end 196.9 97.2) (layer "Edge.Cuts") (width 0.1) (tstamp ef9924a6-a4a7-4f26-8270-732f50cd74d7)) + (gr_line locked (start 99.1 103.1) (end 100.6 103.1) (layer "Edge.Cuts") (width 0.1) (tstamp f6f2b1f0-04bc-424e-88ec-e8d8c399ee1a)) + (gr_text "RX" (at 123 84.75 90) (layer "F.SilkS") (tstamp 1aa5c840-409d-4816-b519-d42ebfd7dc1d) + (effects (font (size 0.75 0.75) (thickness 0.125))) + ) + (gr_text "TX" (at 123 87.25 90) (layer "F.SilkS") (tstamp 268af609-3276-4bff-b3aa-e74c57d849bb) + (effects (font (size 0.75 0.75) (thickness 0.125))) + ) + (gr_text "HW ver: 2.0" (at 100.25 83.5) (layer "F.SilkS") (tstamp 4ab65223-ff63-4a7c-853c-e7b8d8e12e76) + (effects (font (size 1 1) (thickness 0.15)) (justify left)) + ) + (gr_text "22.02.2022" (at 100.25 85.25) (layer "F.SilkS") (tstamp 4ebec920-49dd-4966-8b6b-a500a99cc601) + (effects (font (size 1 1) (thickness 0.15)) (justify left)) + ) + (gr_text "GND" (at 135 113) (layer "F.SilkS") (tstamp 613795a2-5dac-4dc9-b0f7-371c54ba440e) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text "https://github.com/Polprzewodnikowy/SummerCollection" (at 101.25 123.5) (layer "F.SilkS") (tstamp 77e7f556-c63c-46bb-bff0-b858da0827cb) + (effects (font (size 0.7 0.7) (thickness 0.1)) (justify left)) + ) + (gr_text "3V3" (at 135 116) (layer "F.SilkS") (tstamp 846fead5-1852-4fad-880d-b02ff05366e0) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text "GND" (at 123 82.25 90) (layer "F.SilkS") (tstamp 96212940-87fb-4c62-bc9a-e2048a0c0734) + (effects (font (size 0.75 0.75) (thickness 0.125))) + ) + (gr_text "SC64" (at 100 80.75) (layer "F.SilkS") (tstamp e68e2eab-07bf-4512-b201-db5285b9e63a) + (effects (font (size 2.5 2.5) (thickness 0.5)) (justify left)) + ) + + (segment (start 160.5 115.6625) (end 160.5 121.381744) (width 0.127) (layer "F.Cu") (net 7) (tstamp 05bc23c2-a792-4578-98ed-7e687258a962)) + (segment (start 160.5 121.381744) (end 161.593616 122.47536) (width 0.127) (layer "F.Cu") (net 7) (tstamp 79461cfc-ffe5-4547-98f5-bb12d4311d8f)) + (segment (start 161.593616 122.47536) (end 171.22536 122.47536) (width 0.127) (layer "F.Cu") (net 7) (tstamp 9c9cb4cc-c233-424c-834f-b9f7b52ba6d0)) + (segment (start 171.22536 122.47536) (end 173.75 125) (width 0.127) (layer "F.Cu") (net 7) (tstamp a05f7377-9a14-455e-bb39-26fe1aac9fb4)) + (via (at 173.75 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 7) (tstamp fc96d644-a5a9-4917-9c70-1f3642f7e407)) + (segment (start 175 131) (end 175 126.25) (width 0.127) (layer "B.Cu") (net 7) (tstamp 453d6be6-7849-434f-ac50-f704984cd55c)) + (segment (start 175 126.25) (end 173.75 125) (width 0.127) (layer "B.Cu") (net 7) (tstamp d20053c3-e360-499f-bbb9-c20697753cd1)) + (segment (start 161.383592 122.9824) (end 169.2324 122.9824) (width 0.127) (layer "F.Cu") (net 8) (tstamp 5d299e06-4c6a-4a5e-89dc-bf28b6bc1977)) + (segment (start 159.5 121.098808) (end 161.383592 122.9824) (width 0.127) (layer "F.Cu") (net 8) (tstamp 8fe916ac-f68a-472c-89df-6df517ebed6f)) + (segment (start 159.5 115.6625) (end 159.5 121.098808) (width 0.127) (layer "F.Cu") (net 8) (tstamp a8b19996-4677-4ad5-a327-44070bf84fa4)) + (segment (start 169.2324 122.9824) (end 171.25 125) (width 0.127) (layer "F.Cu") (net 8) (tstamp d3f54198-5283-45dc-be22-dbb9023e9f9a)) + (via (at 171.25 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 8) (tstamp 2df85155-cd10-40b7-b431-220261df4674)) + (segment (start 172.5 126.25) (end 171.25 125) (width 0.127) (layer "B.Cu") (net 8) (tstamp ccb82225-7ca6-45de-90e1-d566c8250144)) + (segment (start 172.5 131) (end 172.5 126.25) (width 0.127) (layer "B.Cu") (net 8) (tstamp df8160a1-0873-4303-9c83-066398a38205)) + (segment (start 158.5 120.815872) (end 161.173568 123.48944) (width 0.127) (layer "F.Cu") (net 9) (tstamp 0c4db4f0-a156-4ad1-b29a-39525d35a7a9)) + (segment (start 161.173568 123.48944) (end 167.23944 123.48944) (width 0.127) (layer "F.Cu") (net 9) (tstamp 2e5c7b44-ff04-4eba-bc5f-f7fa911a58ee)) + (segment (start 167.23944 123.48944) (end 168.75 125) (width 0.127) (layer "F.Cu") (net 9) (tstamp 3bab6e53-9298-45a1-b6e6-f1cc7e886b3e)) + (segment (start 158.5 115.6625) (end 158.5 120.815872) (width 0.127) (layer "F.Cu") (net 9) (tstamp 97065295-8a62-4700-91c9-cb24a68d0582)) + (via (at 168.75 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 9) (tstamp e49cb13b-6d74-497f-8f1f-8f0d6f6994b8)) + (segment (start 170 131) (end 170 126.25) (width 0.127) (layer "B.Cu") (net 9) (tstamp bd413378-663b-456b-86ea-9603f4db455e)) + (segment (start 170 126.25) (end 168.75 125) (width 0.127) (layer "B.Cu") (net 9) (tstamp cdce1cbd-2b7e-4f04-9d64-7981419b17e5)) + (segment (start 162.74648 123.99648) (end 163.75 125) (width 0.127) (layer "F.Cu") (net 10) (tstamp 00cdeccf-b600-4c97-a750-654f12c02704)) + (segment (start 157 120.032936) (end 160.963544 123.99648) (width 0.127) (layer "F.Cu") (net 10) (tstamp 59632989-26cf-4c66-80d7-9475f2ada5c8)) + (segment (start 160.963544 123.99648) (end 162.74648 123.99648) (width 0.127) (layer "F.Cu") (net 10) (tstamp 6930c77f-b067-42eb-ae27-5de18c69a1fa)) + (segment (start 157 115.6625) (end 157 120.032936) (width 0.127) (layer "F.Cu") (net 10) (tstamp bb7171ee-ea02-4d3c-96c0-dcef03d7772c)) + (via (at 163.75 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 10) (tstamp 64fb39c6-d128-4574-b563-ee1b6e0f1ce9)) + (segment (start 165 126.25) (end 163.75 125) (width 0.127) (layer "B.Cu") (net 10) (tstamp 24faaf37-ee25-42db-aed6-6a30870b25be)) + (segment (start 165 131) (end 165 126.25) (width 0.127) (layer "B.Cu") (net 10) (tstamp b31654c5-668e-4c76-a118-b31b1d5907b2)) + (segment (start 153.75 118.934128) (end 153.75 125) (width 0.127) (layer "F.Cu") (net 11) (tstamp 6f486746-3a24-4741-bf7c-ae51f0a037ee)) + (segment (start 153 115.6625) (end 153 118.184128) (width 0.127) (layer "F.Cu") (net 11) (tstamp d7e3806e-2852-4969-8b73-cfffbfab4dc6)) + (segment (start 153 118.184128) (end 153.75 118.934128) (width 0.127) (layer "F.Cu") (net 11) (tstamp e48fadb7-59a0-41f3-9e0e-e55280e15907)) + (via (at 153.75 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 11) (tstamp cb0d8cc1-02e7-4ff2-861e-b3d40c8ea03d)) + (segment (start 155 126.25) (end 153.75 125) (width 0.127) (layer "B.Cu") (net 11) (tstamp 29fdfca5-f2f1-4a33-8658-0ec3f0395efd)) + (segment (start 155 131) (end 155 126.25) (width 0.127) (layer "B.Cu") (net 11) (tstamp 5fcba4a5-ac48-48dd-9402-709fa4169e61)) + (segment (start 152 115.6625) (end 152 121.934125) (width 0.127) (layer "F.Cu") (net 12) (tstamp b6bed925-3da6-4240-8906-1bfd84715939)) + (segment (start 151.25 122.684126) (end 151.25 125) (width 0.127) (layer "F.Cu") (net 12) (tstamp c826a668-5887-4303-91ab-e6514b8cf2f4)) + (segment (start 152 121.934125) (end 151.25 122.684126) (width 0.127) (layer "F.Cu") (net 12) (tstamp ebe69734-662c-45b7-a28f-3f0423de1ffb)) + (via (at 151.25 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 12) (tstamp 96d25a41-d5a9-45e2-b516-dd8f8c4b6014)) + (segment (start 152.5 126.25) (end 151.25 125) (width 0.127) (layer "B.Cu") (net 12) (tstamp 654d938c-8866-4be2-9533-0572b3217776)) + (segment (start 152.5 131) (end 152.5 126.25) (width 0.127) (layer "B.Cu") (net 12) (tstamp 943ab3be-0b6d-4c1c-b866-24c79b5cd7ad)) + (segment (start 147.23944 124.01056) (end 146.25 125) (width 0.127) (layer "F.Cu") (net 13) (tstamp 042fc9fb-6d4f-428f-a8c7-5f0463493f13)) + (segment (start 149.565033 124.01056) (end 147.23944 124.01056) (width 0.127) (layer "F.Cu") (net 13) (tstamp 48c4b9b7-8786-4d2c-bb2f-146d50217ca7)) + (segment (start 151.5 115.6625) (end 151.5 122.075594) (width 0.127) (layer "F.Cu") (net 13) (tstamp 548a8555-e358-4f93-a640-63e48b2aa5a9)) + (segment (start 151.5 122.075594) (end 149.565033 124.01056) (width 0.127) (layer "F.Cu") (net 13) (tstamp 80489c70-ebdc-419b-a6bb-754932f32db9)) + (via (at 146.25 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 13) (tstamp bf1d9ee5-fafe-4768-a2af-34bb4d57ddb6)) + (segment (start 145 131) (end 145 126.25) (width 0.127) (layer "B.Cu") (net 13) (tstamp 1c677e1c-2ff4-4459-9c6e-3a6d28754cfa)) + (segment (start 145 126.25) (end 146.25 125) (width 0.127) (layer "B.Cu") (net 13) (tstamp a1081d9d-2734-4d9e-b16d-0fa146b3a8d5)) + (segment (start 150.5 115.6625) (end 150.5 122.358531) (width 0.127) (layer "F.Cu") (net 14) (tstamp 42188e15-eee8-4955-abb8-0ff4779946bf)) + (segment (start 150.5 122.358531) (end 149.355011 123.50352) (width 0.127) (layer "F.Cu") (net 14) (tstamp 6e52912d-e530-49f8-b291-4c15945b7ddb)) + (segment (start 145.24648 123.50352) (end 143.75 125) (width 0.127) (layer "F.Cu") (net 14) (tstamp 7f8f8d86-5a64-4bfa-8a7e-dea817bdd6df)) + (segment (start 149.355011 123.50352) (end 145.24648 123.50352) (width 0.127) (layer "F.Cu") (net 14) (tstamp cfa97b7c-b646-48ad-aeab-507f5a902de5)) + (via (at 143.75 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 14) (tstamp b31e0012-5b47-4dc7-b5b7-f0df6a72e174)) + (segment (start 142.5 131) (end 142.5 126.25) (width 0.127) (layer "B.Cu") (net 14) (tstamp a3b74b07-005d-4a58-b1c3-d4f9e92902d6)) + (segment (start 142.5 126.25) (end 143.75 125) (width 0.127) (layer "B.Cu") (net 14) (tstamp e9e1c37c-a23c-4309-be8e-c34db0f3d085)) + (segment (start 153.75 112) (end 153.49296 112.25704) (width 0.127) (layer "F.Cu") (net 15) (tstamp 16a75dde-1989-4917-b9d0-541394b35cc9)) + (segment (start 141.315033 124.01056) (end 139.73944 124.01056) (width 0.127) (layer "F.Cu") (net 15) (tstamp 210c70c1-ce60-48cf-8ab5-b67b78e9ebe8)) + (segment (start 145.5 119.825593) (end 141.315033 124.01056) (width 0.127) (layer "F.Cu") (net 15) (tstamp 363383f3-d5fb-4485-b2cb-195878710ff3)) + (segment (start 153.49296 112.25704) (end 149.75 112.25704) (width 0.127) (layer "F.Cu") (net 15) (tstamp 38edf341-14d0-4001-b629-fef72612c626)) + (segment (start 145.5 113.75) (end 145.5 119.825593) (width 0.127) (layer "F.Cu") (net 15) (tstamp 4ed65a61-fc2b-48b3-8ecb-77dd4e915cf7)) + (segment (start 148.75704 113.25) (end 147.5875 113.25) (width 0.127) (layer "F.Cu") (net 15) (tstamp 51b2163d-d6cf-444f-8dfc-8a8337ba44fb)) + (segment (start 156.275 87.025) (end 156.5 87.25) (width 0.127) (layer "F.Cu") (net 15) (tstamp 8abd9a02-e7f3-4312-9bf6-b3a27df8b02d)) + (segment (start 147.5875 113.25) (end 146 113.25) (width 0.127) (layer "F.Cu") (net 15) (tstamp 8c8e0255-1d18-4204-bbc7-a72708e0a0b0)) + (segment (start 139.73944 124.01056) (end 138.75 125) (width 0.127) (layer "F.Cu") (net 15) (tstamp 94c9446c-7b62-428f-ae5f-7fb1bf70aa9b)) + (segment (start 149.75 112.25704) (end 148.75704 113.25) (width 0.127) (layer "F.Cu") (net 15) (tstamp a1d46117-0053-4832-bc37-3b4ee0c1797d)) + (segment (start 146 113.25) (end 145.5 113.75) (width 0.127) (layer "F.Cu") (net 15) (tstamp bde25ed8-1c46-40eb-bc03-d02a78e1fc00)) + (segment (start 155.1375 87.025) (end 156.275 87.025) (width 0.127) (layer "F.Cu") (net 15) (tstamp fe1ee6c6-a358-4612-b58c-83e96372444c)) + (via (at 153.75 112) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 15) (tstamp 214f840d-cb08-4024-a408-d4c4ce06dc4a)) + (via (at 138.75 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 15) (tstamp 35c7a106-1ab1-4959-97ae-d518d3a2c3f8)) + (via (at 156.5 87.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 15) (tstamp 97bc673b-650e-42b5-97d8-3fdc12620cca)) + (segment (start 137.5 131) (end 137.5 126.25) (width 0.127) (layer "B.Cu") (net 15) (tstamp 2994d7c1-cf9f-461a-81d0-895db2c99f53)) + (segment (start 155.50704 110.24296) (end 155.50704 91.539977) (width 0.127) (layer "B.Cu") (net 15) (tstamp 4dfa7475-3877-4e56-903b-384aabf021e8)) + (segment (start 153.75 112) (end 155.50704 110.24296) (width 0.127) (layer "B.Cu") (net 15) (tstamp 5b3a0e9a-9ee8-454d-bad5-81b4095aee8d)) + (segment (start 154.5 90.532937) (end 154.5 89.25) (width 0.127) (layer "B.Cu") (net 15) (tstamp 8e233427-2dec-4e3f-b7e5-b51c16dd9b54)) + (segment (start 154.5 89.25) (end 156.5 87.25) (width 0.127) (layer "B.Cu") (net 15) (tstamp d00345c3-206f-4c01-8d2d-5ff35513271e)) + (segment (start 155.50704 91.539977) (end 154.5 90.532937) (width 0.127) (layer "B.Cu") (net 15) (tstamp dd9f1340-0305-48e5-a8e9-960f2e2253ef)) + (segment (start 137.5 126.25) (end 138.75 125) (width 0.127) (layer "B.Cu") (net 15) (tstamp e3605203-b6c4-4a27-a0cc-161b52e6b9d8)) + (segment (start 145.5 112.25) (end 144.99296 112.75704) (width 0.127) (layer "F.Cu") (net 16) (tstamp 0e45c04a-7ad1-4745-910c-14b4621ae849)) + (segment (start 144.99296 112.75704) (end 144.99296 119.615571) (width 0.127) (layer "F.Cu") (net 16) (tstamp 4bba64be-51fc-4aff-87c0-8a0a599f1f0b)) + (segment (start 144.99296 119.615571) (end 141.105011 123.50352) (width 0.127) (layer "F.Cu") (net 16) (tstamp 8844ec78-8915-492f-914f-07a19f830f77)) + (segment (start 147.5875 112.25) (end 145.5 112.25) (width 0.127) (layer "F.Cu") (net 16) (tstamp 8dcd7183-a089-4468-b1e4-0c7ad90493d6)) + (segment (start 141.105011 123.50352) (end 137.74648 123.50352) (width 0.127) (layer "F.Cu") (net 16) (tstamp bf3ddc02-1d37-483f-b3ae-faf7972ffee0)) + (segment (start 137.74648 123.50352) (end 136.25 125) (width 0.127) (layer "F.Cu") (net 16) (tstamp f8355bf8-fc3c-4489-b78f-2399de3886c2)) + (via (at 136.25 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 16) (tstamp d24e44cb-f571-40d9-820f-5f8e4ccdb825)) + (segment (start 135 131) (end 135 126.5) (width 0.127) (layer "B.Cu") (net 16) (tstamp 21272acd-502c-4024-b918-e8010e543f23)) + (segment (start 135 126.5) (end 135 126.25) (width 0.127) (layer "B.Cu") (net 16) (tstamp 7c73ae16-0c8c-4079-b686-0fa3b0454a4b)) + (segment (start 135 126.25) (end 136.25 125) (width 0.127) (layer "B.Cu") (net 16) (tstamp 9d8827ed-4c84-45cb-8986-8d50fcb5271e)) + (segment (start 140.684964 122.48944) (end 133.76056 122.48944) (width 0.127) (layer "F.Cu") (net 17) (tstamp 43b6d5a5-f59c-4bae-95ec-2a9f7921abdf)) + (segment (start 143.97888 119.195524) (end 140.684964 122.48944) (width 0.127) (layer "F.Cu") (net 17) (tstamp 8e545264-f77d-4ab8-9076-28da1c12b477)) + (segment (start 143.97888 110.77112) (end 143.97888 119.195524) (width 0.127) (layer "F.Cu") (net 17) (tstamp b1e8fc68-a20a-4c32-bfbc-fe9f7e82d6ab)) + (segment (start 133.76056 122.48944) (end 131.25 125) (width 0.127) (layer "F.Cu") (net 17) (tstamp bc501544-1bf0-43a3-8aa5-07405df41dae)) + (segment (start 147.5875 109.25) (end 145.5 109.25) (width 0.127) (layer "F.Cu") (net 17) (tstamp d3086e86-756c-40e6-b5d8-267e708aaeb7)) + (segment (start 145.5 109.25) (end 143.97888 110.77112) (width 0.127) (layer "F.Cu") (net 17) (tstamp e26630f7-6c9c-4064-8416-7fd5457e3453)) + (via (at 131.25 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 17) (tstamp 7da5a09e-3a4f-4731-a5e1-e79acd59ef3c)) + (segment (start 130 131) (end 130 126.25) (width 0.127) (layer "B.Cu") (net 17) (tstamp 2789f268-f532-43d5-9728-8571f11f5d32)) + (segment (start 130 126.25) (end 131.25 125) (width 0.127) (layer "B.Cu") (net 17) (tstamp d8c2d69c-7438-4480-81cc-ced85a9294b8)) + (segment (start 161 115.6625) (end 161 121.523212) (width 0.127) (layer "F.Cu") (net 18) (tstamp 22c7c118-e883-48b9-810a-a0623570c3ee)) + (segment (start 161 121.523212) (end 161.698628 122.22184) (width 0.127) (layer "F.Cu") (net 18) (tstamp 5d9e716f-b41e-4dd5-8906-9716019157d5)) + (segment (start 172.22184 122.22184) (end 175 125) (width 0.127) (layer "F.Cu") (net 18) (tstamp 63b9e1e0-f285-42f8-9384-079debd79029)) + (segment (start 175 125) (end 175 131) (width 0.127) (layer "F.Cu") (net 18) (tstamp 7cb84a3e-7ffc-4dc7-bc74-425d9d1167e6)) + (segment (start 161.698628 122.22184) (end 172.22184 122.22184) (width 0.127) (layer "F.Cu") (net 18) (tstamp a4e2c95c-82f2-4ac9-b9a1-c99b00f90cbc)) + (segment (start 161.488604 122.72888) (end 170.22888 122.72888) (width 0.127) (layer "F.Cu") (net 19) (tstamp 1a6e6d3b-9b3c-408b-8067-47a1ba98d7f8)) + (segment (start 172.5 125) (end 172.5 131) (width 0.127) (layer "F.Cu") (net 19) (tstamp 3717892f-bf8f-46d0-b404-29f05255bcf8)) + (segment (start 160 115.6625) (end 160 121.240276) (width 0.127) (layer "F.Cu") (net 19) (tstamp 60747620-6490-4064-bb08-17e14894fec2)) + (segment (start 170.22888 122.72888) (end 172.5 125) (width 0.127) (layer "F.Cu") (net 19) (tstamp ce810619-c4d1-4a2c-8e46-b5b3ae5e5a78)) + (segment (start 160 121.240276) (end 161.488604 122.72888) (width 0.127) (layer "F.Cu") (net 19) (tstamp eccd4054-970f-4a3f-8262-d5d948f187ce)) + (segment (start 170 125) (end 170 131) (width 0.127) (layer "F.Cu") (net 20) (tstamp 086b8409-b9af-4ac6-946a-b5598ffd076b)) + (segment (start 159 115.6625) (end 159 120.95734) (width 0.127) (layer "F.Cu") (net 20) (tstamp 2e2e3911-eeaf-4b69-9472-b7c95541d3e2)) + (segment (start 159 120.95734) (end 161.27858 123.23592) (width 0.127) (layer "F.Cu") (net 20) (tstamp 56a276f5-adf7-4314-bae7-3642a1dc1618)) + (segment (start 161.27858 123.23592) (end 168.23592 123.23592) (width 0.127) (layer "F.Cu") (net 20) (tstamp b24361ad-4adb-4683-bbf3-89ac26de1fac)) + (segment (start 168.23592 123.23592) (end 170 125) (width 0.127) (layer "F.Cu") (net 20) (tstamp b274d36d-d79b-435b-bf71-952d0615bea6)) + (segment (start 158 120.674404) (end 161.068556 123.74296) (width 0.127) (layer "F.Cu") (net 21) (tstamp 0873ab5b-a170-4e20-bbb6-2206783a6093)) + (segment (start 165 125) (end 165 131) (width 0.127) (layer "F.Cu") (net 21) (tstamp 2f2111c6-809d-4eb7-a8f6-36cc21c730e0)) + (segment (start 163.74296 123.74296) (end 165 125) (width 0.127) (layer "F.Cu") (net 21) (tstamp 326487a6-70c6-46d3-b4d0-170e420ecaf7)) + (segment (start 161.068556 123.74296) (end 163.74296 123.74296) (width 0.127) (layer "F.Cu") (net 21) (tstamp 3ba26470-25e6-44be-8c46-39c8ae685a9f)) + (segment (start 158 115.6625) (end 158 120.674404) (width 0.127) (layer "F.Cu") (net 21) (tstamp 971cf8a8-8522-47bf-be3b-87d6237707e4)) + (segment (start 162.5 125) (end 162.5 131) (width 0.127) (layer "F.Cu") (net 22) (tstamp 04fbb552-0410-468c-8246-f96df656f8c1)) + (segment (start 156 115.6625) (end 156 119.391468) (width 0.127) (layer "F.Cu") (net 22) (tstamp 09718e88-eb18-417a-8aa1-bacbab8f60c3)) + (segment (start 160.858532 124.25) (end 161.75 124.25) (width 0.127) (layer "F.Cu") (net 22) (tstamp 1c2f82ad-cb18-4119-baba-80cf876fdcf7)) + (segment (start 161.75 124.25) (end 162.5 125) (width 0.127) (layer "F.Cu") (net 22) (tstamp 4ee3d86a-a96b-49d6-925a-bf7457651414)) + (segment (start 156 119.391468) (end 160.858532 124.25) (width 0.127) (layer "F.Cu") (net 22) (tstamp baa61771-8fe5-4ec1-85d0-7fcb612d061f)) + (segment (start 155 119.108532) (end 157.5 121.608532) (width 0.127) (layer "F.Cu") (net 23) (tstamp 8c3f8c46-a496-4c2b-b112-02ce326b1d9c)) + (segment (start 155 115.6625) (end 155 119.108532) (width 0.127) (layer "F.Cu") (net 23) (tstamp a95817c6-8668-4505-88a4-57a0fd9f627b)) + (segment (start 157.5 121.608532) (end 157.5 131) (width 0.127) (layer "F.Cu") (net 23) (tstamp b1fe24ac-f025-4472-a115-bbf7b89395e7)) + (segment (start 155 119.825596) (end 155 131) (width 0.127) (layer "F.Cu") (net 24) (tstamp 0301dfe8-766e-4ec1-998a-50d0a6712506)) + (segment (start 153.5 115.6625) (end 153.5 118.325596) (width 0.127) (layer "F.Cu") (net 24) (tstamp 93b03e09-cd24-465e-9b44-3918e8c8dcbc)) + (segment (start 153.5 118.325596) (end 155 119.825596) (width 0.127) (layer "F.Cu") (net 24) (tstamp cb4ec8f9-a236-4b05-bcfd-11ec2dde1b59)) + (segment (start 152.5 115.6625) (end 152.5 131) (width 0.127) (layer "F.Cu") (net 25) (tstamp 5ca671c4-18c9-4b4b-85b5-84ab4ba28d0e)) + (segment (start 151 115.6625) (end 151 122.217062) (width 0.127) (layer "F.Cu") (net 26) (tstamp 261d883f-a50c-415e-9b6a-0f9fbaa60f53)) + (segment (start 146.24296 123.75704) (end 145 125) (width 0.127) (layer "F.Cu") (net 26) (tstamp 851a8142-0045-4e5a-b42a-9035d310e8a4)) + (segment (start 145 125) (end 145 131) (width 0.127) (layer "F.Cu") (net 26) (tstamp cdfd61b8-cdd5-4fa2-95a2-c6799c5656e4)) + (segment (start 149.460022 123.75704) (end 146.24296 123.75704) (width 0.127) (layer "F.Cu") (net 26) (tstamp d22baf75-db6c-4f94-83f9-3f6da4d67e70)) + (segment (start 151 122.217062) (end 149.460022 123.75704) (width 0.127) (layer "F.Cu") (net 26) (tstamp fa5399d8-8938-4bcd-88d1-fcb474fd7947)) + (segment (start 150 122.5) (end 149.25 123.25) (width 0.127) (layer "F.Cu") (net 27) (tstamp 6215912e-3e2c-49a2-a946-972e6925625d)) + (segment (start 150 115.6625) (end 150 122.5) (width 0.127) (layer "F.Cu") (net 27) (tstamp 8c83fae4-4bf5-443a-8d54-eadb23d156ef)) + (segment (start 149.25 123.25) (end 144.25 123.25) (width 0.127) (layer "F.Cu") (net 27) (tstamp 95515a8d-dfe2-4a9b-ba41-5a5322d15e96)) + (segment (start 144.25 123.25) (end 142.5 125) (width 0.127) (layer "F.Cu") (net 27) (tstamp d1f9abd5-ad6b-43fe-b366-52e393e4dbef)) + (segment (start 142.5 125) (end 142.5 131) (width 0.127) (layer "F.Cu") (net 27) (tstamp ef719abd-e683-4662-a8fc-4697a6bffecb)) + (segment (start 148.75352 112.75) (end 147.5875 112.75) (width 0.127) (layer "F.Cu") (net 28) (tstamp 1971bbc6-6d79-4504-9d59-3ca1e187ef27)) + (segment (start 141.210022 123.75704) (end 138.74296 123.75704) (width 0.127) (layer "F.Cu") (net 28) (tstamp 2175ed89-8f40-4c28-a61d-cf28ae6ae4a0)) + (segment (start 145.75 112.75) (end 145.24648 113.25352) (width 0.127) (layer "F.Cu") (net 28) (tstamp 24f6cdfa-d798-4d12-b6d8-d0505ba0b842)) + (segment (start 137.5 125) (end 137.5 131) (width 0.127) (layer "F.Cu") (net 28) (tstamp 8a0e73e6-fafa-4ed3-84b8-779003fe48f0)) + (segment (start 156.860931 86.375) (end 156.985931 86.5) (width 0.127) (layer "F.Cu") (net 28) (tstamp 98d82516-2d9d-4c75-9455-7c9d3013d39f)) + (segment (start 147.5875 112.75) (end 145.75 112.75) (width 0.127) (layer "F.Cu") (net 28) (tstamp a2c231f5-693a-47ba-9123-2c49f2240f01)) + (segment (start 149.5 112.00352) (end 148.75352 112.75) (width 0.127) (layer "F.Cu") (net 28) (tstamp b22a71e3-3618-430b-9442-18a657825cd1)) + (segment (start 138.74296 123.75704) (end 137.5 125) (width 0.127) (layer "F.Cu") (net 28) (tstamp b5fc01c3-43ab-446c-a461-aa171f08a511)) + (segment (start 145.24648 119.720582) (end 141.210022 123.75704) (width 0.127) (layer "F.Cu") (net 28) (tstamp b7936179-6ac1-42a9-990e-a3355d061316)) + (segment (start 152.99648 112.00352) (end 149.5 112.00352) (width 0.127) (layer "F.Cu") (net 28) (tstamp c7a5ec83-3af6-434e-bb42-132fe62849e3)) + (segment (start 154 111) (end 152.99648 112.00352) (width 0.127) (layer "F.Cu") (net 28) (tstamp cf68eb92-88b8-4716-88e8-b02f2e32e046)) + (segment (start 145.24648 113.25352) (end 145.24648 119.720582) (width 0.127) (layer "F.Cu") (net 28) (tstamp d2547ad2-dd5b-4e0e-822a-834c8b47adcd)) + (segment (start 155.1375 86.375) (end 156.860931 86.375) (width 0.127) (layer "F.Cu") (net 28) (tstamp e0b48d0a-0604-4396-ab75-07c864f6208f)) + (via (at 156.985931 86.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 28) (tstamp b7848b59-4be3-4a24-85f8-3999638435f6)) + (via (at 154 111) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 28) (tstamp f9039a56-d435-4b05-a5ab-2577e6d2f0bd)) + (segment (start 154 111) (end 155.25352 109.74648) (width 0.127) (layer "B.Cu") (net 28) (tstamp 1f8fce11-066a-408c-aaa3-68598e42f898)) + (segment (start 155.25352 109.74648) (end 155.25352 91.644989) (width 0.127) (layer "B.Cu") (net 28) (tstamp 2aec6a39-19b5-489a-a3c4-4717026ebe8c)) + (segment (start 155.25352 91.644989) (end 154.24648 90.637948) (width 0.127) (layer "B.Cu") (net 28) (tstamp 35d5c258-01c0-4a07-b41c-71450c837eed)) + (segment (start 154.24648 88.75352) (end 156.5 86.5) (width 0.127) (layer "B.Cu") (net 28) (tstamp 515609e2-2b12-486c-a447-9b77b082ecea)) + (segment (start 156.5 86.5) (end 156.985931 86.5) (width 0.127) (layer "B.Cu") (net 28) (tstamp b164805b-6aef-42ad-98ef-77032c6bbfe8)) + (segment (start 154.24648 90.637948) (end 154.24648 88.75352) (width 0.127) (layer "B.Cu") (net 28) (tstamp e4d20e4e-2017-4543-a3f5-57d0cdc98362)) + (segment (start 147.5875 108.75) (end 145.25 108.75) (width 0.127) (layer "F.Cu") (net 29) (tstamp 0cc8782e-ec83-4609-9398-2b133d49aa42)) + (segment (start 132.76408 122.23592) (end 130 125) (width 0.127) (layer "F.Cu") (net 29) (tstamp 1e215d88-26ea-4db4-8c3f-948283d60d7b)) + (segment (start 130 125) (end 130 131) (width 0.127) (layer "F.Cu") (net 29) (tstamp 2398ea00-2f05-44f5-8e34-b3cad8f7bd2c)) + (segment (start 143.72536 119.090512) (end 140.579952 122.23592) (width 0.127) (layer "F.Cu") (net 29) (tstamp 254f1b38-465c-4b2d-bd3e-a298564dc8d6)) + (segment (start 143.72536 110.27464) (end 143.72536 119.090512) (width 0.127) (layer "F.Cu") (net 29) (tstamp 38c4c48d-a1be-49cb-a95e-322b5b0f592e)) + (segment (start 140.579952 122.23592) (end 132.76408 122.23592) (width 0.127) (layer "F.Cu") (net 29) (tstamp 63ac2ad5-94b4-4209-a749-c351a15d0e8d)) + (segment (start 145.25 108.75) (end 143.72536 110.27464) (width 0.127) (layer "F.Cu") (net 29) (tstamp ab7996b1-b040-45e4-b7b5-490205ad88ce)) + (segment (start 164.5 94.3375) (end 164.5 93) (width 0.127) (layer "F.Cu") (net 30) (tstamp a4b01802-4f55-4261-8d1b-6ba29975df30)) + (segment (start 167.50704 89.99296) (end 193.3 89.99296) (width 0.127) (layer "F.Cu") (net 30) (tstamp afe247ad-657a-407a-82dc-d6f765499cd8)) + (segment (start 193.3 89.99296) (end 196.64796 86.645) (width 0.127) (layer "F.Cu") (net 30) (tstamp dc171efc-3cf5-4194-8c24-9d6dfff6b673)) + (segment (start 196.64796 86.645) (end 199.7 86.645) (width 0.127) (layer "F.Cu") (net 30) (tstamp f81deecb-88d5-4105-ad0f-3a4797c7ab0a)) + (segment (start 164.5 93) (end 167.50704 89.99296) (width 0.127) (layer "F.Cu") (net 30) (tstamp fd0fd8f6-6a12-4030-b64d-8d4b40eaf866)) + (segment (start 193.50352 90.24648) (end 196.005 87.745) (width 0.127) (layer "F.Cu") (net 31) (tstamp 75383d60-d6ab-478c-a1dc-d9330606cd85)) + (segment (start 167.75352 90.24648) (end 193.50352 90.24648) (width 0.127) (layer "F.Cu") (net 31) (tstamp 7585602e-a48b-4748-bf6b-2a932fbaf06f)) + (segment (start 165 94.3375) (end 165 93) (width 0.127) (layer "F.Cu") (net 31) (tstamp 7e985070-8fcb-44bb-bd1e-9c650fe9a26d)) + (segment (start 165 93) (end 167.75352 90.24648) (width 0.127) (layer "F.Cu") (net 31) (tstamp aaf523a1-25ae-4d80-8348-408effc82360)) + (segment (start 196.005 87.745) (end 199.7 87.745) (width 0.127) (layer "F.Cu") (net 31) (tstamp d3e1661a-9c44-4c82-a081-be670adccf7b)) + (segment (start 168 90.5) (end 193.681032 90.5) (width 0.127) (layer "F.Cu") (net 32) (tstamp 18d88cfe-7cb8-4ac7-8b98-fc26020d0d89)) + (segment (start 193.681032 90.5) (end 195.336032 88.845) (width 0.127) (layer "F.Cu") (net 32) (tstamp 29e50307-d505-4a9e-ad2a-dbd9b16f3796)) + (segment (start 165.5 93) (end 168 90.5) (width 0.127) (layer "F.Cu") (net 32) (tstamp 8bf1a7d5-0c1e-4e0d-9d34-17e0eedb18d0)) + (segment (start 165.5 94.3375) (end 165.5 93) (width 0.127) (layer "F.Cu") (net 32) (tstamp c2d5fe6d-16e7-461f-93a7-a14c58e1be98)) + (segment (start 195.336032 88.845) (end 199.7 88.845) (width 0.127) (layer "F.Cu") (net 32) (tstamp e0e27b50-0bea-4b4c-9657-a27fd42b3d1c)) + (segment (start 193.945 91.045) (end 193.65352 90.75352) (width 0.127) (layer "F.Cu") (net 33) (tstamp 3c659428-41be-4cf2-9f67-6dc7404762c9)) + (segment (start 168.24648 90.75352) (end 166 93) (width 0.127) (layer "F.Cu") (net 33) (tstamp 98b089da-904a-4c79-811e-4aa77409576a)) + (segment (start 166 93) (end 166 94.3375) (width 0.127) (layer "F.Cu") (net 33) (tstamp c2842bfb-a708-4bec-b94d-6bbe967f6496)) + (segment (start 199.7 91.045) (end 193.945 91.045) (width 0.127) (layer "F.Cu") (net 33) (tstamp d942c477-4fd5-4e56-9424-17978b1dd4c0)) + (segment (start 193.65352 90.75352) (end 168.24648 90.75352) (width 0.127) (layer "F.Cu") (net 33) (tstamp ecd4aaf1-1ef5-4f8b-bc44-3a8305150893)) + (segment (start 166.5 94.3375) (end 166.5 93) (width 0.127) (layer "F.Cu") (net 34) (tstamp 0d6a954e-26db-40e7-a5f2-cc096a033dd8)) + (segment (start 195.745 93.245) (end 199.7 93.245) (width 0.127) (layer "F.Cu") (net 34) (tstamp 1ee37ff3-fa0e-4dcf-bfde-d104d6dfc070)) + (segment (start 166.5 93) (end 168.49296 91.00704) (width 0.127) (layer "F.Cu") (net 34) (tstamp 32a0391b-0278-41f1-80c7-9e05b4bad57d)) + (segment (start 193.50704 91.00704) (end 195.745 93.245) (width 0.127) (layer "F.Cu") (net 34) (tstamp 33bd3bfc-9b41-40fe-8bc9-78453cae601c)) + (segment (start 168.49296 91.00704) (end 193.50704 91.00704) (width 0.127) (layer "F.Cu") (net 34) (tstamp bf574040-9982-4439-807a-116d72b0e51e)) + (segment (start 167 94.3375) (end 167 93) (width 0.127) (layer "F.Cu") (net 35) (tstamp 09304eec-1179-4495-a17c-e4f0807e7de1)) + (segment (start 196.33444 94.295) (end 199.7 94.295) (width 0.127) (layer "F.Cu") (net 35) (tstamp 2300a87e-e0ba-40f0-b7cb-750d7d8b4f7f)) + (segment (start 168.73944 91.26056) (end 193.3 91.26056) (width 0.127) (layer "F.Cu") (net 35) (tstamp 4f04ea72-6bc2-477b-a3f7-deaa13ab8cec)) + (segment (start 167 93) (end 168.73944 91.26056) (width 0.127) (layer "F.Cu") (net 35) (tstamp 5fb0eb81-e09e-4eec-89d3-a9a425d8bec6)) + (segment (start 193.3 91.26056) (end 196.33444 94.295) (width 0.127) (layer "F.Cu") (net 35) (tstamp 90324ad6-3e85-4947-bbda-5860c51f4e89)) + (segment (start 164 93) (end 167.26056 89.73944) (width 0.127) (layer "F.Cu") (net 36) (tstamp 07b960de-a52d-4e1a-8e0d-aed2f3a4e05a)) + (segment (start 193.55 89.2) (end 193.55 84.01) (width 0.127) (layer "F.Cu") (net 36) (tstamp 100398c3-c285-40e7-9207-ff74addac37d)) + (segment (start 193.01056 89.73944) (end 193.55 89.2) (width 0.127) (layer "F.Cu") (net 36) (tstamp 2ef332e9-9ae9-4cca-9b32-f2fcd2ea547a)) + (segment (start 167.26056 89.73944) (end 193.01056 89.73944) (width 0.127) (layer "F.Cu") (net 36) (tstamp 888be526-10d6-41b7-9463-e78d7a35f517)) + (segment (start 164 94.3375) (end 164 93) (width 0.127) (layer "F.Cu") (net 36) (tstamp c261e3fd-e368-4c02-bded-14b16cacdbd6)) + (via (at 193.55 88.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 36) (tstamp b8895f1b-ed9e-430a-b4ab-551d23d75332)) + (segment (start 196 88.5) (end 197 89.5) (width 0.127) (layer "B.Cu") (net 36) (tstamp d2221023-9239-4e14-a777-160fc61bc910)) + (segment (start 197 89.5) (end 197.925 89.5) (width 0.127) (layer "B.Cu") (net 36) (tstamp e3eb4263-e4b2-41d9-9d89-77c9ac8bfbe6)) + (segment (start 193.55 88.5) (end 196 88.5) (width 0.127) (layer "B.Cu") (net 36) (tstamp f41544d3-96be-4d8e-9fbd-62bb690e3d94)) + (segment (start 162.875 83.125) (end 160.8625 83.125) (width 0.127) (layer "F.Cu") (net 37) (tstamp 01504314-3a1a-461d-9468-a46c870eb5ea)) + (segment (start 163 83.25) (end 162.875 83.125) (width 0.127) (layer "F.Cu") (net 37) (tstamp 7439c9f9-131c-4797-891f-e9c2d8d425ce)) + (segment (start 131.365 83.48) (end 131.345 83.5) (width 0.127) (layer "F.Cu") (net 37) (tstamp 9ed63aaa-c4bb-4841-a208-42fe5e1c880b)) + (segment (start 131.345 83.5) (end 128 83.5) (width 0.127) (layer "F.Cu") (net 37) (tstamp bfecc199-e3f4-413b-994d-4889978dd697)) + (via (at 163 83.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 37) (tstamp 1d093280-16a4-401f-af1c-1ba4ce81c0a9)) + (via (at 128 83.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 37) (tstamp 44a441c2-6b97-4b8a-868d-5c8b478102fe)) + (segment (start 129.148508 83.24296) (end 128.891468 83.5) (width 0.127) (layer "B.Cu") (net 37) (tstamp 1cb0b360-4621-4396-a338-3710bf8899b2)) + (segment (start 136.289978 83.24296) (end 129.148508 83.24296) (width 0.127) (layer "B.Cu") (net 37) (tstamp 4ffb4bc1-814d-4db1-8f22-9a604c17f4fc)) + (segment (start 137.789978 81.74296) (end 136.289978 83.24296) (width 0.127) (layer "B.Cu") (net 37) (tstamp 852e611c-20d9-4a8d-a1a7-e27b14a59fbd)) + (segment (start 139.210023 81.74296) (end 137.789978 81.74296) (width 0.127) (layer "B.Cu") (net 37) (tstamp 900c8c1b-f287-4717-8466-3fd942dd286e)) + (segment (start 140.202984 82.73592) (end 139.210023 81.74296) (width 0.127) (layer "B.Cu") (net 37) (tstamp ade7c12b-9c05-4448-9d5d-760dc781f464)) + (segment (start 162.48592 82.73592) (end 140.202984 82.73592) (width 0.127) (layer "B.Cu") (net 37) (tstamp bb5cc870-77f9-4fe9-af5f-9473dffbeb69)) + (segment (start 128.891468 83.5) (end 128 83.5) (width 0.127) (layer "B.Cu") (net 37) (tstamp df0fe686-8bda-4716-8c69-fd9b6e5f859b)) + (segment (start 163 83.25) (end 162.48592 82.73592) (width 0.127) (layer "B.Cu") (net 37) (tstamp f736ee4a-68b2-49e8-8068-b4f65088eff5)) + (segment (start 127.45 82.75) (end 130.825 82.75) (width 0.127) (layer "F.Cu") (net 38) (tstamp 4a2bdb04-11f3-4675-8736-8b6d29b5959b)) + (segment (start 163.475 82.475) (end 160.8625 82.475) (width 0.127) (layer "F.Cu") (net 38) (tstamp 76ab7c8e-caaa-4ea3-9847-39e99fc6ee26)) + (segment (start 130.825 82.75) (end 131.365 82.21) (width 0.127) (layer "F.Cu") (net 38) (tstamp 7b591666-9ad7-49bf-a2e5-bfca0931771c)) + (segment (start 163.75 82.75) (end 163.475 82.475) (width 0.127) (layer "F.Cu") (net 38) (tstamp 8c0526f4-c374-476e-96f7-99e54eebddb6)) + (via (at 127.45 82.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 38) (tstamp 4f625f1c-bd1b-49d2-86b0-12c4b27e42de)) + (via (at 163.75 82.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 38) (tstamp fe22f0dd-1f4e-4780-aa0b-99836f1292b0)) + (segment (start 163.75 82.75) (end 167.25 86.25) (width 0.127) (layer "B.Cu") (net 38) (tstamp 2ceca5fd-bb6b-4344-9000-da16f4e97e28)) + (segment (start 136.184966 82.98944) (end 137.684967 81.48944) (width 0.127) (layer "B.Cu") (net 38) (tstamp 4cede614-f863-434b-a614-82cce2d82a79)) + (segment (start 163.4824 82.4824) (end 163.75 82.75) (width 0.127) (layer "B.Cu") (net 38) (tstamp 4e776fc9-cde0-40d4-aa6b-d1f8bf418fd3)) + (segment (start 128.655548 82.75) (end 128.894988 82.98944) (width 0.127) (layer "B.Cu") (net 38) (tstamp 50ea647a-461d-46d1-a68b-200b7b148900)) + (segment (start 137.684967 81.48944) (end 139.315035 81.48944) (width 0.127) (layer "B.Cu") (net 38) (tstamp 52496477-925f-42d9-a5f3-a0a98b37ad57)) + (segment (start 127.45 82.75) (end 128.655548 82.75) (width 0.127) (layer "B.Cu") (net 38) (tstamp 74486759-5b9d-4627-bc73-086587ddedb7)) + (segment (start 139.315035 81.48944) (end 140.307994 82.4824) (width 0.127) (layer "B.Cu") (net 38) (tstamp 80dbc0e2-3bf5-4816-ab7a-df2c2f52f81d)) + (segment (start 128.894988 82.98944) (end 136.184966 82.98944) (width 0.127) (layer "B.Cu") (net 38) (tstamp 9fa301b4-5f2d-4178-a11e-86ed4917803a)) + (segment (start 167.25 86.25) (end 168.925 86.25) (width 0.127) (layer "B.Cu") (net 38) (tstamp a6d6c9ab-b4ba-4033-bbbb-fb2e2d3ff394)) + (segment (start 140.307994 82.4824) (end 163.4824 82.4824) (width 0.127) (layer "B.Cu") (net 38) (tstamp d71ac2cc-4b55-4dd2-81f9-068e18ed3971)) + (segment (start 162.84 84.425) (end 163 84.265) (width 0.127) (layer "F.Cu") (net 39) (tstamp 119c4152-4c10-4944-8af9-b4beca71ec27)) + (segment (start 157.5 91) (end 157.5 94.3375) (width 0.127) (layer "F.Cu") (net 39) (tstamp bfc366b9-0497-43a8-b7b1-e6e67c6a142e)) + (segment (start 128 85) (end 130.345 85) (width 0.127) (layer "F.Cu") (net 39) (tstamp d40e8aff-b423-4d27-a6bd-b44897e05b41)) + (segment (start 130.345 85) (end 131.365 86.02) (width 0.127) (layer "F.Cu") (net 39) (tstamp eb1a9e7d-12a5-4149-bbf3-e57d7e281928)) + (segment (start 160.8625 84.425) (end 162.84 84.425) (width 0.127) (layer "F.Cu") (net 39) (tstamp ee9d14ed-2cb5-47dc-bc32-3bd69a809717)) + (via (at 157.5 91) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 39) (tstamp 0ea8981b-54b5-4e5a-b7c5-d270e724c50a)) + (via (at 163 84.265) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 39) (tstamp 51ffa9a8-ddd3-4a83-afbc-ccd350250639)) + (via (at 128 85) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 39) (tstamp d8449c10-98cc-431c-bd88-bcb37d07a7b3)) + (segment (start 136.5 83.75) (end 129.75 83.75) (width 0.127) (layer "B.Cu") (net 39) (tstamp 015aa4de-8128-446d-a004-db417331f0bc)) + (segment (start 158.50352 83.855012) (end 158.50352 90.439461) (width 0.127) (layer "B.Cu") (net 39) (tstamp 088890c0-97c4-453d-b196-d4ebf5abeae0)) + (segment (start 158 91) (end 157.5 91) (width 0.127) (layer "B.Cu") (net 39) (tstamp 148a2d35-316a-4556-8060-4cd8e6992378)) + (segment (start 157.982971 83.841503) (end 157.384428 83.24296) (width 0.127) (layer "B.Cu") (net 39) (tstamp 1ce4b6de-9ea9-413f-bfa8-e5bcd6013ab6)) + (segment (start 157.982971 89.574048) (end 157.982971 83.841503) (width 0.127) (layer "B.Cu") (net 39) (tstamp 1eca6771-ccdd-46f0-a496-206375dea928)) + (segment (start 158.5 90.442981) (end 158.5 90.5) (width 0.127) (layer "B.Cu") (net 39) (tstamp 226924a5-2165-4ab6-94f4-462686934905)) + (segment (start 125 87.305) (end 127.305 85) (width 0.127) (layer "B.Cu") (net 39) (tstamp 43784a59-f275-4430-9ac3-f086e249b0d5)) + (segment (start 127.305 85) (end 128 85) (width 0.127) (layer "B.Cu") (net 39) (tstamp 4425bc54-ebf8-44f9-89d7-c7ebfeb41a12)) + (segment (start 158.50352 90.439461) (end 158.5 90.442981) (width 0.127) (layer "B.Cu") (net 39) (tstamp 537ebce1-75f0-4c24-8476-2eefe6ad718c)) + (segment (start 157.509989 90.990011) (end 157.509989 90.04703) (width 0.127) (layer "B.Cu") (net 39) (tstamp 575b7771-4245-460d-97c7-d3eefcd04a6c)) + (segment (start 157.5 91) (end 157.509989 90.990011) (width 0.127) (layer "B.Cu") (net 39) (tstamp 61df371b-aed1-4763-a896-bd3451f7a520)) + (segment (start 159.108532 83.25) (end 158.50352 83.855012) (width 0.127) (layer "B.Cu") (net 39) (tstamp 638c8936-cc63-49d1-9002-a7012754e1a3)) + (segment (start 162.656468 84.265) (end 161.641469 83.25) (width 0.127) (layer "B.Cu") (net 39) (tstamp 693409a7-280d-4b02-b9db-249c564b9c44)) + (segment (start 139 82.25) (end 138 82.25) (width 0.127) (layer "B.Cu") (net 39) (tstamp 82d7114f-155d-4923-a3da-7436e04b1711)) + (segment (start 163 84.265) (end 162.656468 84.265) (width 0.127) (layer "B.Cu") (net 39) (tstamp 8d2c7384-851b-4fa1-9a70-2b7239fb25f6)) + (segment (start 158.5 90.5) (end 158 91) (width 0.127) (layer "B.Cu") (net 39) (tstamp 9048a098-82e9-4d88-ab86-ced04ffbf3ab)) + (segment (start 128.5 85) (end 128 85) (width 0.127) (layer "B.Cu") (net 39) (tstamp 971f4d23-5c47-41fe-85a3-9c1b21c33c44)) + (segment (start 157.509989 90.04703) (end 157.982971 89.574048) (width 0.127) (layer "B.Cu") (net 39) (tstamp b27eae97-84ab-4025-89db-9d6d67180728)) + (segment (start 161.641469 83.25) (end 159.108532 83.25) (width 0.127) (layer "B.Cu") (net 39) (tstamp b3b8b9eb-9b19-4ddd-9760-9accd3ba38c6)) + (segment (start 138 82.25) (end 136.5 83.75) (width 0.127) (layer "B.Cu") (net 39) (tstamp b8d209e6-c1c9-4933-a974-a11073377a44)) + (segment (start 129.75 83.75) (end 128.5 85) (width 0.127) (layer "B.Cu") (net 39) (tstamp bc074169-2200-40b4-ae7c-a0d18c8e71e3)) + (segment (start 139.992961 83.24296) (end 139 82.25) (width 0.127) (layer "B.Cu") (net 39) (tstamp c708f940-b082-4555-b185-cd61e8dc1519)) + (segment (start 157.384428 83.24296) (end 139.992961 83.24296) (width 0.127) (layer "B.Cu") (net 39) (tstamp eea9cba1-65c3-456b-9468-8b112e3ebf05)) + (segment (start 130.865 84.25) (end 131.365 84.75) (width 0.127) (layer "F.Cu") (net 40) (tstamp 1336d492-9a75-4063-aa60-065cfb17aa5b)) + (segment (start 160.8875 83.75) (end 160.8625 83.775) (width 0.127) (layer "F.Cu") (net 40) (tstamp 3ef40079-f4e0-42c7-be7a-81af9feaea7a)) + (segment (start 163.75 83.75) (end 160.8875 83.75) (width 0.127) (layer "F.Cu") (net 40) (tstamp 433c838e-72e2-4cb5-8e4c-142de71a3ad3)) + (segment (start 127.5 84.25) (end 130.865 84.25) (width 0.127) (layer "F.Cu") (net 40) (tstamp 8cd502e3-a78c-4b2f-8c7f-c0f8cafe4ad6)) + (segment (start 158 94.3375) (end 158 90.25) (width 0.127) (layer "F.Cu") (net 40) (tstamp a10cb7b3-727e-49df-95d4-28ae3ef3b355)) + (via (at 127.5 84.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 40) (tstamp 7a2dc8c7-5cfb-41e4-8d86-e60893f4f923)) + (via (at 158 90.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 40) (tstamp f2a980c5-1c96-4a8c-a851-dbba2a407871)) + (via (at 163.75 83.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 40) (tstamp f663e83f-e332-4da4-826f-0803c4108136)) + (segment (start 157.48944 82.98944) (end 158.25 83.75) (width 0.127) (layer "B.Cu") (net 40) (tstamp 1c955fbb-5e68-4933-a04e-d7b0255b3d11)) + (segment (start 127.5 84.25) (end 128.5 84.25) (width 0.127) (layer "B.Cu") (net 40) (tstamp 26b888a3-a054-4e6f-8999-225699a6fe51)) + (segment (start 127.5 84.25) (end 125.515 84.25) (width 0.127) (layer "B.Cu") (net 40) (tstamp 4e7d878d-73c2-4495-ab96-cfbe988cf114)) + (segment (start 125.515 84.25) (end 125 84.765) (width 0.127) (layer "B.Cu") (net 40) (tstamp 5bc17435-a011-4a44-ac53-af37e08d6522)) + (segment (start 158.25 90) (end 158 90.25) (width 0.127) (layer "B.Cu") (net 40) (tstamp 6f7a10d8-6fd7-4963-b01c-fa3f71d13e57)) + (segment (start 128.5 84.25) (end 129.25352 83.49648) (width 0.127) (layer "B.Cu") (net 40) (tstamp 78beec89-8c96-47d3-81f5-bcebaedbd1ee)) + (segment (start 161.73944 82.98944) (end 162.5 83.75) (width 0.127) (layer "B.Cu") (net 40) (tstamp 7a1b82cd-680e-477d-9da8-d09d720ab553)) + (segment (start 158.25 83.75) (end 159.01056 82.98944) (width 0.127) (layer "B.Cu") (net 40) (tstamp 89be0d18-a52d-43b5-b23b-241f1748e431)) + (segment (start 129.25352 83.49648) (end 136.394989 83.49648) (width 0.127) (layer "B.Cu") (net 40) (tstamp 9ab45f16-0806-43cf-8bca-97aa13886543)) + (segment (start 139.105012 81.99648) (end 140.097972 82.98944) (width 0.127) (layer "B.Cu") (net 40) (tstamp 9bd6a1e0-31c7-4ef5-a8b4-d56b921fb38c)) + (segment (start 140.097972 82.98944) (end 157.48944 82.98944) (width 0.127) (layer "B.Cu") (net 40) (tstamp b949183a-eaa2-425b-ac21-ca35ae2dc4f3)) + (segment (start 159.01056 82.98944) (end 161.73944 82.98944) (width 0.127) (layer "B.Cu") (net 40) (tstamp c3b64117-dec6-4c9c-947e-c922a3a31e7b)) + (segment (start 136.394989 83.49648) (end 137.894989 81.99648) (width 0.127) (layer "B.Cu") (net 40) (tstamp d6167b53-c9ce-43fa-8bbe-d85ce6d5f701)) + (segment (start 158.25 83.75) (end 158.25 90) (width 0.127) (layer "B.Cu") (net 40) (tstamp dec4bb51-f64e-43de-940b-d3837e34d7a4)) + (segment (start 162.5 83.75) (end 163.75 83.75) (width 0.127) (layer "B.Cu") (net 40) (tstamp e401ebbd-ce2d-469e-96a8-2cddc4e18afb)) + (segment (start 137.894989 81.99648) (end 139.105012 81.99648) (width 0.127) (layer "B.Cu") (net 40) (tstamp e594f9c9-4405-4b01-8709-604267150d8d)) + (segment (start 153 94.3375) (end 153 90.25) (width 0.127) (layer "F.Cu") (net 41) (tstamp 823f99e5-f636-44c1-a2ff-60897fb18c4a)) + (segment (start 138 85) (end 133.655 85) (width 0.127) (layer "F.Cu") (net 41) (tstamp ad556f78-a578-4aad-b857-bbf9274d349f)) + (segment (start 133.655 85) (end 132.635 86.02) (width 0.127) (layer "F.Cu") (net 41) (tstamp c24d6d0e-4952-4eb8-b91e-206f08dac811)) + (via (at 138 85) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 41) (tstamp 85ed88ef-a354-4ebb-87f0-c768860fc5af)) + (via (at 153 90.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 41) (tstamp 8ad31927-6ab5-45f0-891b-e716bc417be4)) + (segment (start 138.75 85) (end 139.49296 84.25704) (width 0.127) (layer "B.Cu") (net 41) (tstamp 1af29ad3-9247-45ad-9c99-2fa87b44255f)) + (segment (start 153.48592 89.76408) (end 153 90.25) (width 0.127) (layer "B.Cu") (net 41) (tstamp 242bd799-a1ab-46bb-8737-e6882c2f4b0c)) + (segment (start 155.49648 85.644989) (end 153.48592 87.655549) (width 0.127) (layer "B.Cu") (net 41) (tstamp 6fdce085-1560-4168-adef-66cf60603627)) + (segment (start 138 85) (end 138.75 85) (width 0.127) (layer "B.Cu") (net 41) (tstamp 76eec500-e190-43da-a52b-ade51cd6a63b)) + (segment (start 153.48592 87.655549) (end 153.48592 89.76408) (width 0.127) (layer "B.Cu") (net 41) (tstamp baa32cea-d3df-475f-a04a-bf44d18f926e)) + (segment (start 155.148508 84.25704) (end 155.49648 84.605012) (width 0.127) (layer "B.Cu") (net 41) (tstamp bf1bdcbf-3b63-4a0b-9878-6795b1a110d4)) + (segment (start 155.49648 84.605012) (end 155.49648 85.644989) (width 0.127) (layer "B.Cu") (net 41) (tstamp e7474d06-a426-429d-bfb2-81d218a7ed9b)) + (segment (start 139.49296 84.25704) (end 155.148508 84.25704) (width 0.127) (layer "B.Cu") (net 41) (tstamp fffde78e-232d-4d75-86b2-7cb8b2ab5c7c)) + (segment (start 138.5 84.25) (end 133.135 84.25) (width 0.127) (layer "F.Cu") (net 42) (tstamp 12027d9c-0f1e-4c18-a1b8-f862f8c90f0f)) + (segment (start 133.135 84.25) (end 132.635 84.75) (width 0.127) (layer "F.Cu") (net 42) (tstamp 25e32fa8-710f-43e4-b608-35e5725ff5ed)) + (segment (start 153.5 91) (end 153.5 94.3375) (width 0.127) (layer "F.Cu") (net 42) (tstamp a65de31f-18ae-4cce-bb25-824d6cdf312b)) + (via (at 138.5 84.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 42) (tstamp 1368eb75-062d-40c4-8da2-501f88d77ceb)) + (via (at 153.5 91) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 42) (tstamp d8ffe70e-8eff-4a86-a637-92abb181e3c9)) + (segment (start 153.73944 90.76056) (end 153.5 91) (width 0.127) (layer "B.Cu") (net 42) (tstamp 2317341b-3c97-4474-8f84-4e4f1d8573ba)) + (segment (start 155.25352 84.00352) (end 155.75 84.5) (width 0.127) (layer "B.Cu") (net 42) (tstamp 389a3cf9-3b83-4312-8f8f-f443f1a09c21)) + (segment (start 138.74648 84.00352) (end 155.25352 84.00352) (width 0.127) (layer "B.Cu") (net 42) (tstamp 8803e3ee-57c6-475d-9f05-2d1c459210fd)) + (segment (start 155.75 84.5) (end 155.75 85.75) (width 0.127) (layer "B.Cu") (net 42) (tstamp c310a55f-9d2b-454d-aa91-47583db19e60)) + (segment (start 155.75 85.75) (end 153.73944 87.76056) (width 0.127) (layer "B.Cu") (net 42) (tstamp d9b4af64-d370-42f2-a76a-d88ad87ea897)) + (segment (start 138.5 84.25) (end 138.74648 84.00352) (width 0.127) (layer "B.Cu") (net 42) (tstamp f3ed78a9-45f6-46af-ba73-9460456b54c7)) + (segment (start 153.73944 87.76056) (end 153.73944 90.76056) (width 0.127) (layer "B.Cu") (net 42) (tstamp fbde11c1-f188-4cf1-b841-e0a01d0c766c)) + (segment (start 156 90.25) (end 156 94.3375) (width 0.127) (layer "F.Cu") (net 43) (tstamp 5a615d43-c183-4845-84f5-abcb528154bb)) + (segment (start 132.655 83.5) (end 132.635 83.48) (width 0.127) (layer "F.Cu") (net 43) (tstamp 7a5b9106-39ab-4cfe-b7a5-46fbebb3357b)) + (segment (start 138 83.5) (end 132.655 83.5) (width 0.127) (layer "F.Cu") (net 43) (tstamp b321a081-2cca-4486-8e91-99e2d18fb3f8)) + (via (at 138 83.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 43) (tstamp 8e6a7916-4a37-4c38-91f2-885b9c3963d6)) + (via (at 156 90.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 43) (tstamp fcabe847-7c8a-4a25-9656-54c2da19d9b9)) + (segment (start 138.5 83.5) (end 138 83.5) (width 0.127) (layer "B.Cu") (net 43) (tstamp 01e93ef1-7ddf-49fc-9e50-c72b76d14ade)) + (segment (start 138.75 83.75) (end 155.358532 83.75) (width 0.127) (layer "B.Cu") (net 43) (tstamp 1bfe171a-98d9-46db-9492-855c2e95383e)) + (segment (start 138.5 83.5) (end 138.75 83.75) (width 0.127) (layer "B.Cu") (net 43) (tstamp 6e774ae2-5df4-49ea-8fdf-e96796a16997)) + (segment (start 157.475942 88.774058) (end 156 90.25) (width 0.127) (layer "B.Cu") (net 43) (tstamp 75ced224-a98f-4cef-a0d9-248dc443d21f)) + (segment (start 155.358532 83.75) (end 157.475942 85.86741) (width 0.127) (layer "B.Cu") (net 43) (tstamp 8ee850cb-1620-46c9-836f-3876a8accea4)) + (segment (start 157.475942 85.86741) (end 157.475942 88.774058) (width 0.127) (layer "B.Cu") (net 43) (tstamp d0ed2d7f-92bf-4105-9993-198f9dc73f75)) + (segment (start 133.175 82.75) (end 132.635 82.21) (width 0.127) (layer "F.Cu") (net 44) (tstamp 087c6658-8c31-4ae4-9ae0-36230125e3df)) + (segment (start 138.5 82.75) (end 133.175 82.75) (width 0.127) (layer "F.Cu") (net 44) (tstamp 13502ecc-33d8-4129-ae11-245925967286)) + (segment (start 156.5 91) (end 156.5 94.3375) (width 0.127) (layer "F.Cu") (net 44) (tstamp 1e7ebc84-cce0-4fee-9f04-9e2b2065861b)) + (via (at 156.5 91) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 44) (tstamp 607c34a6-4731-44c7-8f1a-5a3c1c551e91)) + (via (at 138.5 82.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 44) (tstamp b8c25335-0576-4afc-9079-b578bb16bda7)) + (segment (start 157.279416 83.49648) (end 139.24648 83.49648) (width 0.127) (layer "B.Cu") (net 44) (tstamp 07fac574-9573-47ce-815d-35a03bf0d2c2)) + (segment (start 157.729451 89.469036) (end 157.729451 83.946515) (width 0.127) (layer "B.Cu") (net 44) (tstamp 131845b4-1f0c-45e3-bdd7-e582dc77dc78)) + (segment (start 157.729451 83.946515) (end 157.279416 83.49648) (width 0.127) (layer "B.Cu") (net 44) (tstamp 1a837f73-4cf1-48f5-a266-84ae948ae637)) + (segment (start 156.5 91) (end 156.5 90.698487) (width 0.127) (layer "B.Cu") (net 44) (tstamp 38c876c8-fefa-4d4e-96c4-cd6163c83377)) + (segment (start 139.24648 83.49648) (end 138.5 82.75) (width 0.127) (layer "B.Cu") (net 44) (tstamp 520dc2ff-0527-44ae-a2f4-522fb36ec1a8)) + (segment (start 156.5 90.698487) (end 157.729451 89.469036) (width 0.127) (layer "B.Cu") (net 44) (tstamp 6ed96630-53a5-47f4-9b79-417525a7068c)) + (segment (start 172.325 85.075) (end 172.25 85) (width 0.127) (layer "F.Cu") (net 45) (tstamp 525cb6df-ef01-41ce-9c87-9936d7549287)) + (segment (start 174.1375 85.075) (end 172.325 85.075) (width 0.127) (layer "F.Cu") (net 45) (tstamp eb749eb8-b0ad-4bdc-92a0-051c1568a9e5)) + (via (at 172.25 85) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 45) (tstamp f9135c16-d113-4122-9b10-769497ffa941)) + (segment (start 129 82.73592) (end 136.079955 82.73592) (width 0.127) (layer "B.Cu") (net 45) (tstamp 1311e742-d9ee-42a2-8fa2-40bd24387e7a)) + (segment (start 164.47888 82.22888) (end 167.25 85) (width 0.127) (layer "B.Cu") (net 45) (tstamp 249b14c6-1e35-4177-ac77-dd3f7754df5c)) + (segment (start 137.579956 81.23592) (end 139.420046 81.23592) (width 0.127) (layer "B.Cu") (net 45) (tstamp 3287ef49-b33d-4013-ada3-83b8c68abec6)) + (segment (start 126.26408 80) (end 129 82.73592) (width 0.127) (layer "B.Cu") (net 45) (tstamp 4d0c0039-aa02-45e5-ae49-2b6c56c77841)) + (segment (start 167.25 85) (end 172.25 85) (width 0.127) (layer "B.Cu") (net 45) (tstamp ae662e10-f44a-48fc-916b-053ab44e405d)) + (segment (start 115 81.25) (end 116.25 80) (width 0.127) (layer "B.Cu") (net 45) (tstamp ae6fe998-cced-49fa-914e-ace4c2588a14)) + (segment (start 136.079955 82.73592) (end 137.579956 81.23592) (width 0.127) (layer "B.Cu") (net 45) (tstamp b2330b1f-f0a9-4412-b301-1011166d8d74)) + (segment (start 116.25 80) (end 126.26408 80) (width 0.127) (layer "B.Cu") (net 45) (tstamp c690e2b8-8b92-4893-82a2-75103d2e0462)) + (segment (start 139.420046 81.23592) (end 140.413006 82.22888) (width 0.127) (layer "B.Cu") (net 45) (tstamp cb7a4349-934a-4449-9b36-21e660efbc29)) + (segment (start 140.413006 82.22888) (end 164.47888 82.22888) (width 0.127) (layer "B.Cu") (net 45) (tstamp e5e86587-9252-4e03-a81d-c47eac730914)) + (segment (start 115 85.35) (end 115 81.25) (width 0.127) (layer "B.Cu") (net 45) (tstamp e6ba38df-0aa9-4d58-8029-ab13be77c35e)) + (segment (start 120 131) (end 120 126.5) (width 0.762) (layer "F.Cu") (net 46) (tstamp 0259b22f-bd21-4a1f-9679-c4e1d95e1b2f)) + (segment (start 149 110.25) (end 149.5 109.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp 061ac749-c68b-4889-8117-91f457f70800)) + (segment (start 128.3375 107.9125) (end 128.25 108) (width 0.127) (layer "F.Cu") (net 46) (tstamp 06f16132-6144-446c-bf56-ec80b2f3853c)) + (segment (start 130.25 99.8375) (end 129.75 99.8375) (width 0.127) (layer "F.Cu") (net 46) (tstamp 12d609ca-f2ca-4fcd-9e87-f3a825d6d5e8)) + (segment (start 125 131) (end 125 126.5) (width 0.762) (layer "F.Cu") (net 46) (tstamp 1345afed-8684-423e-a861-032d2a44d653)) + (segment (start 134.25 108.1625) (end 134.75 108.1625) (width 0.127) (layer "F.Cu") (net 46) (tstamp 154e572d-00c8-4bfc-858b-299a48bbff8f)) + (segment (start 163.5 94.3375) (end 163.5 92.5) (width 0.127) (layer "F.Cu") (net 46) (tstamp 1febc71a-f41b-45f8-8fed-67d4b8085af4)) + (segment (start 147.5875 104.75) (end 150.75 104.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp 287208a7-3450-404a-bf5e-931ed375d0e4)) + (segment (start 157.5 115.6625) (end 157.5 117.5) (width 0.127) (layer "F.Cu") (net 46) (tstamp 29159b91-1dcd-4e56-a24f-45f8f162c246)) + (segment (start 168.9125 99.75) (end 167.5 99.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp 2a7e7a2f-6408-4f8b-9966-2ef7cce318dc)) + (segment (start 143.5 95) (end 141.5 95) (width 0.127) (layer "F.Cu") (net 46) (tstamp 2dd03991-d188-4fc1-827d-8c78a02b1e33)) + (segment (start 128.3375 106.25) (end 128.3375 106.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp 3625b674-79e3-46a1-bf73-24bdc5aba2fb)) + (segment (start 167.5 110.25) (end 167 109.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp 388a2f16-6378-4246-884e-a6c9bea69640)) + (segment (start 159.5 94.3375) (end 159.5 92.5) (width 0.127) (layer "F.Cu") (net 46) (tstamp 44dcd791-2c5a-46a3-b890-1536eb20af9c)) + (segment (start 136.6625 102.25) (end 136.6625 101.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp 46591591-5063-45ed-b7f5-0708861375f3)) + (segment (start 105.25 95.6) (end 105.85 95.6) (width 0.508) (layer "F.Cu") (net 46) (tstamp 4b58a88a-dbb9-4991-b6bd-ab1929f681af)) + (segment (start 198.355 92.145) (end 198 92.5) (width 0.508) (layer "F.Cu") (net 46) (tstamp 4cf578a8-07ed-4f6c-80e5-6d8eff5843b1)) + (segment (start 149.5 100.25) (end 150.75 100.25) (width 0.127) (layer "F.Cu") (net 46) (tstamp 501a076a-555f-47b1-a361-2d65ca1c69fa)) + (segment (start 136.6625 101.75) (end 138.5 101.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp 50407a29-ab52-48cb-9fe4-cab5c31452f9)) + (segment (start 154.5 94.3375) (end 154.5 92.5) (width 0.127) (layer "F.Cu") (net 46) (tstamp 5494ac4f-473a-460a-8273-c848553da526)) + (segment (start 168.9125 105.25) (end 165.75 105.25) (width 0.127) (layer "F.Cu") (net 46) (tstamp 5ddd53e1-3646-4190-aa4a-91b04974ef77)) + (segment (start 105.85 95.6) (end 106 95.75) (width 0.508) (layer "F.Cu") (net 46) (tstamp 6ac25195-1e9d-4fc7-b67a-2cc24824956c)) + (segment (start 180 131) (end 180 126.5) (width 0.762) (layer "F.Cu") (net 46) (tstamp 7acfe591-b5a0-4e8b-8096-79abc754be1f)) + (segment (start 105.25 89.4) (end 107.4 89.4) (width 0.508) (layer "F.Cu") (net 46) (tstamp 7b1822e5-d17c-4ea7-a7e4-2c488ae2af53)) + (segment (start 133.75 108.1625) (end 134.25 108.1625) (width 0.127) (layer "F.Cu") (net 46) (tstamp 8315c404-1a67-4cf1-8661-ad88989fc963)) + (segment (start 199.7 92.145) (end 198.355 92.145) (width 0.508) (layer "F.Cu") (net 46) (tstamp 88bc7de2-13b7-4fef-ba67-bb9adad47bdc)) + (segment (start 134.25 108.1625) (end 134.25 109.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp 9049279c-3811-4b1c-adad-778e4e0533b7)) + (segment (start 167 109.75) (end 165.75 109.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp 951d2a6b-842e-4ed6-932b-49b07d12227a)) + (segment (start 129.75 99.8375) (end 129.75 98) (width 0.127) (layer "F.Cu") (net 46) (tstamp 981637e7-627e-48d0-977e-668d13561ddb)) + (segment (start 141.5 95) (end 141.2 94.7) (width 0.127) (layer "F.Cu") (net 46) (tstamp 99a17aa8-4fa2-48f4-a9e2-c5f4074e6746)) + (segment (start 107.4 89.4) (end 107.5 89.5) (width 0.508) (layer "F.Cu") (net 46) (tstamp a989f518-15e5-41d0-b17a-d063cea6f75b)) + (segment (start 149 99.75) (end 149.5 100.25) (width 0.127) (layer "F.Cu") (net 46) (tstamp ab530731-414a-41f2-947c-901cbe6d469c)) + (segment (start 154 115.6625) (end 154 117.5) (width 0.127) (layer "F.Cu") (net 46) (tstamp b9140842-8591-47fd-af49-f0fe54b8c306)) + (segment (start 153.075 84.425) (end 155.1375 84.425) (width 0.127) (layer "F.Cu") (net 46) (tstamp c0654087-7684-4454-8e20-67c3d36a53a9)) + (segment (start 108.65 120.5) (end 108.65 118.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp c9e1316e-c016-4e3a-ba88-76f714e8f7c7)) + (segment (start 128.3375 106.75) (end 128.3375 107.9125) (width 0.127) (layer "F.Cu") (net 46) (tstamp cac4d6d7-5ec8-430f-a5ba-141e10340473)) + (segment (start 152.5 85) (end 153.075 84.425) (width 0.127) (layer "F.Cu") (net 46) (tstamp cbc4e78f-29e4-41d8-bed8-bd2e17d0c9bb)) + (segment (start 147.5875 99.75) (end 149 99.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp cdb3a48e-2516-4093-9982-606a56b0607d)) + (segment (start 123.6375 105.75) (end 125.75 105.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp d29bc0e5-4ae8-4a1e-88c9-b6206264a46c)) + (segment (start 168.9125 110.25) (end 167.5 110.25) (width 0.127) (layer "F.Cu") (net 46) (tstamp dd60de71-f547-4d8a-b110-0adcfa492172)) + (segment (start 177.5 131) (end 177.5 126.5) (width 0.762) (layer "F.Cu") (net 46) (tstamp df20b12b-77e9-4e5f-a938-6185b2e880ea)) + (segment (start 167.5 131) (end 167.5 126.5) (width 0.762) (layer "F.Cu") (net 46) (tstamp e1eb7b87-55d5-4197-a57d-266d24e631be)) + (segment (start 127.5 131) (end 127.5 126.5) (width 0.762) (layer "F.Cu") (net 46) (tstamp e4fe6cc9-23e2-48a0-a4c4-570597da8fe3)) + (segment (start 147.5875 110.25) (end 149 110.25) (width 0.127) (layer "F.Cu") (net 46) (tstamp e524c05d-65c7-4159-9e89-3d34a081c1a1)) + (segment (start 167 100.25) (end 165.75 100.25) (width 0.127) (layer "F.Cu") (net 46) (tstamp ed06ea89-ff7c-406d-bc17-00466e4c427a)) + (segment (start 142.5 81.15) (end 144.595 81.15) (width 0.127) (layer "F.Cu") (net 46) (tstamp ee1bfcd7-b232-4e6b-8510-b73627f4bbcb)) + (segment (start 163 115.6625) (end 163 117.5) (width 0.127) (layer "F.Cu") (net 46) (tstamp f6641589-b453-45e7-a842-1228d41719c4)) + (segment (start 149.5 109.75) (end 150.75 109.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp f8804166-7166-4255-ba41-d3b9a9db8583)) + (segment (start 131.25 108.1625) (end 131.25 109.75) (width 0.127) (layer "F.Cu") (net 46) (tstamp fbc38b08-8828-4adb-b676-4978dab2a591)) + (segment (start 167.5 99.75) (end 167 100.25) (width 0.127) (layer "F.Cu") (net 46) (tstamp fd426fda-5ce4-4c08-8ad7-7a18b7ccc50c)) + (via (at 150.75 104.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 010e63dc-275b-4eec-a9b0-44f5036b7f87)) + (via (at 159.5 92.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 01f60d97-cf76-442f-8c05-da3538d31425)) + (via (at 198 102.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 0268b1c6-ae65-4056-872f-2e71f35cc80b)) + (via (at 127.5 93.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 055863f3-80d6-44e7-b7c7-9386d0cf0b0c)) + (via (at 198 107.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 07272b1e-47ef-464c-a61f-fc8009903e27)) + (via (at 115 108.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 07bc9bc0-5f11-48cf-8a6e-f40dedeb3695)) + (via (at 142 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 0c3ce780-d83d-4ed6-86b6-c89df729dbae)) + (via (at 158.25 105) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 0d1dc76f-2fbf-43c7-a961-9016223bca31)) + (via (at 198 122.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 0d66769d-b3c7-48a5-92b9-7d9d65d059ab)) + (via (at 183 82.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 0f0f8f44-6afd-4ecd-96e0-bde75dae6e75)) + (via (at 154.5 92.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 108766bd-ccaf-403e-836f-664cdf94634f)) + (via (at 113 108.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 1110beea-c1d7-4e83-8adc-dd508a07b66c)) + (via (at 158.25 100) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 1229a66f-016b-4126-85e1-df9bb3481be2)) + (via (at 146.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 1254c085-1089-44e3-a08f-9ec0347b6c41)) + (via (at 141.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 12dd9c3b-d2e6-470f-9606-a6ec73dbe80e)) + (via (at 153.25 110) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 137bbe4f-27c4-414e-bf49-6401e7a2f228)) + (via (at 102 107.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 14865f21-0ef3-4ca6-aca9-cca3d1b320b2)) + (via (at 129.75 98) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 1c7bb780-faa4-4fa7-a575-d77dc83ee34a)) + (via (at 178 107.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 1da80af8-f39b-4739-8f2a-6f45c2444b94)) + (via (at 198 112.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 1e625de9-1881-4b65-92ec-5eed342ea6eb)) + (via (at 188 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 1f3502ce-ddcf-4c4e-9b5c-7af636d7d4e1)) + (via (at 148.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 229e94fe-150e-4459-bbaa-0d272ef66721)) + (via (at 168 121) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 23039bb0-e8dd-4e6d-b560-0d24553a8df7)) + (via (at 126.5 102.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 2a6f0025-963b-42a0-aba5-4dc7aadbc56f)) + (via (at 122 82.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 2d7085b4-4b4a-4b77-82a2-a5aeaa8013bd)) + (via (at 165.75 100.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 2fe3399c-790b-4856-a6e1-98794c8e39e8)) + (via (at 143.5 95) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 33234bf0-03d8-43c4-9a40-3afffc97e43a)) + (via (at 163.25 100) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 35c5d577-16ff-48fa-925d-78d757ea592b)) + (via (at 133.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 364ba794-cb11-4140-a65d-2d0a444a262a)) + (via (at 171 115.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 3734d90b-f7d8-44ba-8b95-1c9a7c0f930e)) + (via (at 158.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 3750d4ae-c3ef-43ee-85c3-c73fa298df41)) + (via (at 112 106.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 3803c35f-9fa7-4f7d-b934-7cf466e83843)) + (via (at 198 82.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 3a17ce36-fef6-4c85-ac16-7079685da398)) + (via (at 127 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 3a88e524-6e3f-43b4-87dd-94b6247b9857)) + (via (at 117 97.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 3a990330-e956-4e30-9e68-7b47375d8815)) + (via (at 117.5 93.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 3ac4ca65-164a-40d2-9435-3bbd8c91bb48)) + (via (at 178.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 3cc415b2-8dea-46c7-875b-8e68cad487ea)) + (via (at 188 122.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 3cdedf12-9920-416d-b71f-8c7d01a12d71)) + (via (at 176.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 3f1669e3-9298-4cac-8121-30edfacb836e)) + (via (at 178 87.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 40a0c737-9e93-424b-8c1d-55517ce03c8d)) + (via (at 154 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 42f1f3b8-3b3e-4c11-8a67-c3a3f98e9cab)) + (via (at 173.5 105) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 443ee64c-5e8e-4583-a6af-616ec90fc668)) + (via (at 142.5 81.15) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 445d9b38-6ca5-45a4-a286-25054bacb32d)) + (via (at 178 122.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 465adab8-d7c0-41e8-afd0-2792b8546a23)) + (via (at 112 108.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 4b26633e-862b-4bfb-bd47-f4b288719016)) + (via (at 138.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 4c14e74f-ff06-4382-bd6c-f82e8c9a865e)) + (via (at 122 122.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 4d98d76d-e3db-4ff7-b7da-1623847fc8db)) + (via (at 116 105.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 50dff10d-7b78-405d-8442-9f6c137194ae)) + (via (at 112.5 92) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 519dc4c1-4ec7-444d-9c1c-29dae00175f7)) + (via (at 150.75 100.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 5341a8ab-b1ee-479f-ad9c-c3529dbe99fb)) + (via (at 112 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 538e8aba-6ff1-4b68-acd4-f3810109e296)) + (via (at 112 103.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 539f2dee-1981-4dfe-bd34-3dd169835a83)) + (via (at 123.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 53c8639e-44d6-457a-b85c-b749ebe92a4f)) + (via (at 133.5 95.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 550f3d67-2dd3-42ac-a489-5e3178278e18)) + (via (at 127.5 92) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 5567f0b8-bfe7-40e1-922c-163ef38d1e9f)) + (via (at 147 122.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 580d5963-1e7c-4b4b-92e8-b07e1f811283)) + (via (at 138 110) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 5ae98908-ec89-4891-ac37-c95c3859cf89)) + (via (at 153.25 105) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 5c23b3f9-df2e-4ae6-bd07-7c999dafd8d6)) + (via (at 183 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 5c87d560-8d1c-45a8-b690-e18686e01476)) + (via (at 188 107.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 5d10e305-2dea-4476-bb99-3bc2aaceb9a6)) + (via (at 158.25 110) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 5d70826d-2d2d-4577-8ba6-595748f502da)) + (via (at 198 92.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 5ebdbaad-97fd-42c9-b732-2efbb876e9f3)) + (via (at 183 107.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 60297466-921f-4cb1-b76e-dbcdf5bd3f78)) + (via (at 128.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 617cc8f3-798e-4faf-8693-2915c3c78d5d)) + (via (at 193 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 6a00fc99-036a-4d2e-a9ab-709dbe592c51)) + (via (at 102 82.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 6b00fc5a-06e6-4061-93f0-47adc770e042)) + (via (at 125.75 105.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 6b07e0d6-713a-45cc-aca4-8b940c2df50e)) + (via (at 193 107.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 6b556855-8ffc-464c-bad1-1bedc463b005)) + (via (at 128.25 108) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 6f01fec2-e816-4bd6-851d-6643ad4c1118)) + (via (at 142 87.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 6f3a998b-ddf3-4012-9bcb-517fafbf92e2)) + (via (at 112 97.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 6f83368c-6be0-4181-884a-7c7d39145b2e)) + (via (at 117 87.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 70f0289e-0f09-4cdc-a0ed-eeaf0c221210)) + (via (at 112 104.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 712f7d09-db20-46e2-ab62-08180e4ffbb3)) + (via (at 138.5 101.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 72ce2ad2-9442-41b1-813b-1cc68ca3ea9e)) + (via (at 122.5 92) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 762a2d71-ea6b-44db-8b12-611a7c77e250)) + (via (at 116 106.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 7698ee81-bfda-4748-bdf8-c0cefae87c49)) + (via (at 117 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 76aad24c-2cba-4775-b5e6-72e1443200f9)) + (via (at 107 82.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 7756b6d5-4ad0-434c-baf0-1a6af0e1eb6a)) + (via (at 126.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 77800e96-27e0-49cc-a4a0-90400b8dbf4c)) + (via (at 193 122.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 77e35801-3e44-4822-a93e-4940240bedb9)) + (via (at 112 122.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 7be1bd2f-011c-4986-9337-c43430bd8b60)) + (via (at 107 122.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 7c0ef743-fa27-4b5e-bd9b-8b3ec364dcf7)) + (via (at 183 122.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 7dad1287-172d-4260-8e8f-9efdb155f878)) + (via (at 116 108.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 7e97909e-759a-429f-bc5d-7b3c0c196c81)) + (via (at 117 107.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 7fed5d29-00e6-4c53-9e1b-f0fe93b5a4d1)) + (via (at 117 82.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 8790bfba-39b4-48f0-a440-71dc69fe93b5)) + (via (at 131.25 109.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 8943012a-29d4-4f77-ba31-acef59643dc7)) + (via (at 132.5 114.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp 8b451499-d657-49b1-bd1f-3f6662728159)) + (via (at 173.5 103) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 8d1d05a8-2199-4278-b453-5f87605fe09c)) + (via (at 127 122.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 8e32f6d3-7921-44a1-927c-bbd505300d94)) + (via (at 117 106.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 8e45250b-cd3b-4fe0-bf70-47c861b2114e)) + (via (at 193 82.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 8f226250-5af6-46fb-a8b4-022fa945da4f)) + (via (at 121.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 90e7f622-646e-461a-9e31-e2ff2cc7fab5)) + (via (at 171.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 924cac2a-75a2-4540-b85a-460c5150e4a7)) + (via (at 179 112) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 9250522f-8b4f-49ee-b263-f60cbd466f58)) + (via (at 163.25 110) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 93731629-15c5-4c8d-b08e-57d7152414d7)) + (via (at 168.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 9665cda2-762d-48fd-9dcf-42820a7c21e9)) + (via (at 143.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 96aa1d90-8e3f-425c-8122-a78edef6dc25)) + (via (at 102 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 9a344a2e-a57d-4938-95c3-b8198a6f9f6f)) + (via (at 117 104.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 9b02a4a9-70c7-4c5a-84a3-330712d8080c)) + (via (at 118.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 9f28a6bb-656b-4b0b-ab5f-5ea560ca87d3)) + (via (at 166.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp a198f1e9-bb08-48d6-829a-5084eaeeaf65)) + (via (at 153.25 100) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp a25b4589-0eb4-4136-9976-ed44134a8cac)) + (via (at 117 122.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp a5fe6af7-08ec-424d-bccb-a0fe0976ee13)) + (via (at 181.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp a64034db-60b0-4213-b559-697127e1cdc3)) + (via (at 183 87.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp a6668d4e-ff99-4d7c-889d-37bc5ce27f23)) + (via (at 188 82.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp aaa63537-89a2-4f74-a001-3a6fe8e68528)) + (via (at 150.75 109.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp ab4b0543-ff60-4038-bc30-ccfbd5c415aa)) + (via (at 113 102.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp ac1f63e0-1027-4cc2-b671-00670d7cbfe8)) + (via (at 163.5 92.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp ae236562-cf19-45e2-a80b-fba757da295f)) + (via (at 112 102.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp af20afbc-1c4e-4e22-8319-1c8875503e6a)) + (via (at 165.75 105.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp b0778ec1-493f-43e0-ac4f-b2eb3a0e4978)) + (via (at 117 108.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp b0a11e5c-6c68-47da-870d-52c66b64c112)) + (via (at 136.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp b358d0ec-f633-49c3-8a91-22c6cf4f0853)) + (via (at 165.75 109.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp b38a3228-3904-4ddb-a146-ae81cb236cc8)) + (via (at 102 92.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp b3e4b856-fa30-481c-b7fb-b2a33127c250)) + (via (at 116 102.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp b412f1b2-b69b-4254-b52c-4265e101b5f1)) + (via (at 102 112.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp b88fa89d-4324-490e-94c0-61d2e9a60be6)) + (via (at 107.5 89.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp ba2f78e3-79a4-455b-abf0-998a1a435aa2)) + (via (at 114 108.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp bc7be43c-8c29-4401-95b9-e15249e623b5)) + (via (at 112 105.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp bcafcddc-1c2b-4869-b916-dd528575e32a)) + (via (at 156.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp bd0e5c4e-a179-493d-bd6c-693d48ea3baa)) + (via (at 116 103.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp c25f22af-dbc4-4d3a-907d-6c4da4274693)) + (via (at 183 92.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp c68aa57b-75fc-490c-93bc-47dcf314d2ec)) + (via (at 147 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp c7ecca5f-07c0-41b1-92ed-15c6509e3391)) + (via (at 112 107.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp ccf280be-d78b-4bde-88c1-c5bbd786e780)) + (via (at 122.5 93.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp cfde02f3-0bf9-463e-ba92-e45d0cd85524)) + (via (at 153.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp d332e876-1e12-41cb-8804-3b3ade8b2aeb)) + (via (at 131.5 95.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp d623c773-0fe6-4e9e-951f-22be6cb35c8a)) + (via (at 152.5 85) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp d713f29d-33c8-406f-8a62-d351f2e9b540)) + (via (at 137 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp d76d7f3d-8132-4b4b-bf97-7a5a295d7f24)) + (via (at 173 92.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp d7d5346b-8b08-44e5-9718-8d59df075d42)) + (via (at 132 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp d86f1451-d10c-4eac-bddc-36cb3a5ecd1b)) + (via (at 163.25 105) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp daa25c74-9a2e-459e-8aa1-d506ee4c08c0)) + (via (at 117 105.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp dc1ae351-a37c-4875-8739-d3438d35bc58)) + (via (at 102 102.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp de7c3570-fe77-49f7-ae6e-69e7a68abf08)) + (via (at 178 92.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp dea23b3a-1a92-416c-9b38-cfb333a3e768)) + (via (at 134.25 109.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp dec5e058-92ba-4bb3-a66e-6c494b55b876)) + (via (at 161.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp dfca6bce-dd1d-481b-82d2-dad7982feff7)) + (via (at 163 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp dfdc9b5a-c43e-4fc9-b58d-827cc0e41dbe)) + (via (at 198 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp e08ed57e-e549-46ff-af44-b00f20f5958c)) + (via (at 117.5 92) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp e2cce1d2-9e92-40a5-b6cb-6f2a8718f360)) + (via (at 157.5 117.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 46) (tstamp e4f268c1-57c1-47fa-8c1d-a3780022ccb0)) + (via (at 114 102.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp e585a8d0-0179-4a08-830c-60f1c36e2c03)) + (via (at 112 82.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp e5de9802-fa65-4fb8-be85-af8983c1508f)) + (via (at 133.5 102.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp e724da20-f86c-435c-9cdb-87e14d4e8ffa)) + (via (at 102 122.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp e83d78a3-400d-47e0-b2da-bf01f1c3c3da)) + (via (at 117 102.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp e8f18a66-027c-4589-92f7-ad5722e16d34)) + (via (at 117 103.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp e95929dc-4638-4476-9a7e-fac0cc18efd3)) + (via (at 163 121) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp e96de0a6-33db-49c7-b2e4-37c983fd0cef)) + (via (at 112.5 93.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp ecea9fdb-7c2b-4daa-a84f-93f5c2d6eaf4)) + (via (at 173.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp ed3d2220-d735-4fad-ba10-d408d63b12ad)) + (via (at 163.75 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp f04a9299-ae77-412f-9155-cda6da5c1f63)) + (via (at 151.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp f1abaf82-fbac-4741-9e93-be5f027ca143)) + (via (at 173 121) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp fa20c44b-7e40-40a6-8df1-ecaa29b3c1eb)) + (via (at 116 104.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp faae393d-0f1b-4918-bd97-c09396b0b091)) + (via (at 131.25 126.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp fb5152b2-1a50-4ae2-853a-3bd4e25fd454)) + (via (at 115 102.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp fd2c9dd8-82e1-4024-8d70-e23d49e40eab)) + (via (at 116 107.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp feb20421-2555-46d4-a7d1-aaf140c7e3fe)) + (via (at 173 87.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp fed9cb31-e307-4127-9086-98c727a90f38)) + (segment (start 120 131) (end 120 126.5) (width 0.762) (layer "B.Cu") (net 46) (tstamp 3f0f7f4e-d653-4a04-b4a2-67f231ef7a76)) + (segment (start 177.5 131) (end 177.5 126.5) (width 0.762) (layer "B.Cu") (net 46) (tstamp 4c98c547-6c97-4235-8227-a94690d31269)) + (segment (start 180 131) (end 180 126.5) (width 0.762) (layer "B.Cu") (net 46) (tstamp a5c5ae49-2725-40ef-a1a1-a4d23c106a0a)) + (segment (start 125 131) (end 125 126.5) (width 0.762) (layer "B.Cu") (net 46) (tstamp aec3c2a7-8799-4201-9569-87dbc45f9fa0)) + (segment (start 167.5 131) (end 167.5 126.5) (width 0.762) (layer "B.Cu") (net 46) (tstamp cb8772dd-8afe-49a5-9bbd-240411412370)) + (segment (start 127.5 131) (end 127.5 126.5) (width 0.762) (layer "B.Cu") (net 46) (tstamp d9ea89c1-ea2a-476c-b3e3-72e140763c1a)) + (segment (start 159 80.75) (end 159 94.3375) (width 0.127) (layer "F.Cu") (net 47) (tstamp 172665d3-518b-4e23-ac82-a1ba674979e5)) + (segment (start 157 81.325) (end 156.5 81.825) (width 0.127) (layer "F.Cu") (net 47) (tstamp 2db52dc8-cf37-4008-a047-01ab01959aaa)) + (segment (start 159.25 80.5) (end 160 79.75) (width 0.127) (layer "F.Cu") (net 47) (tstamp 45b51079-4984-4e8d-b2c7-e8e832bf4a6e)) + (segment (start 160 79.75) (end 173.032937 79.75) (width 0.127) (layer "F.Cu") (net 47) (tstamp 5299da53-7ddc-495c-bbfe-736c61d529d5)) + (segment (start 179.007937 85.725) (end 179.8625 85.725) (width 0.127) (layer "F.Cu") (net 47) (tstamp 7279ace4-bf33-4567-865a-0dc5198fde91)) + (segment (start 159.25 80.5) (end 159 80.75) (width 0.127) (layer "F.Cu") (net 47) (tstamp a9802956-7169-46f0-a0b7-6714d2631a5e)) + (segment (start 157 80.5) (end 157 81.325) (width 0.127) (layer "F.Cu") (net 47) (tstamp b6214d16-a5e8-49d6-bcf1-871c2eb5296a)) + (segment (start 173.032937 79.75) (end 179.007937 85.725) (width 0.127) (layer "F.Cu") (net 47) (tstamp d96d6c82-5314-4836-8690-c16464a4b22c)) + (segment (start 156.5 81.825) (end 155.1375 81.825) (width 0.127) (layer "F.Cu") (net 47) (tstamp eccb0cc0-6ce6-4953-b09f-6a5dad65dfce)) + (via (at 157 80.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 47) (tstamp 78734587-868e-4daf-a6bd-476a5f3ae6bf)) + (via (at 159.25 80.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 47) (tstamp a47dbe30-4380-49c5-b558-3666e205208a)) + (segment (start 168 81) (end 168.925 81) (width 0.127) (layer "B.Cu") (net 47) (tstamp 11836043-efce-4635-a9af-761c62c3a343)) + (segment (start 159.5 80.25) (end 167.25 80.25) (width 0.127) (layer "B.Cu") (net 47) (tstamp 1654f7c4-aacc-4b84-bbb5-3fbcac111bcc)) + (segment (start 167.25 80.25) (end 168 81) (width 0.127) (layer "B.Cu") (net 47) (tstamp a9f7aa5f-2d19-4825-bba2-2d938bfaf7f5)) + (segment (start 159.25 80.5) (end 159.5 80.25) (width 0.127) (layer "B.Cu") (net 47) (tstamp dc6e888d-bd94-44ed-8947-f6242e7d5936)) + (segment (start 159.25 80.5) (end 157 80.5) (width 0.127) (layer "B.Cu") (net 47) (tstamp efe53b65-1f8c-404b-8a49-d64295a884c5)) + (segment (start 158.5 80.5) (end 159.50352 79.49648) (width 0.127) (layer "F.Cu") (net 48) (tstamp 0e84a16b-ded5-4cc4-b1e4-5953a546ae91)) + (segment (start 158.5 82.641469) (end 158.74648 82.887949) (width 0.127) (layer "F.Cu") (net 48) (tstamp 1dc1232d-286f-4511-bd9f-3f9ec61a4179)) + (segment (start 158.74648 82.887949) (end 158.74648 89.112052) (width 0.127) (layer "F.Cu") (net 48) (tstamp 52ea4d07-c92c-44a4-9d0a-8e6529da5041)) + (segment (start 158.5 89.358532) (end 158.5 94.3375) (width 0.127) (layer "F.Cu") (net 48) (tstamp 560e6a32-6249-4150-a058-d709ee1ca5ad)) + (segment (start 178.716469 85.075) (end 179.8625 85.075) (width 0.127) (layer "F.Cu") (net 48) (tstamp 5dc5de19-70c4-46f5-be46-6c6042c9165c)) + (segment (start 158.5 81) (end 158.5 82.641469) (width 0.127) (layer "F.Cu") (net 48) (tstamp 831bafa6-499b-4f72-a629-827ecc09f04d)) + (segment (start 159.50352 79.49648) (end 173.137949 79.49648) (width 0.127) (layer "F.Cu") (net 48) (tstamp 972eb55e-fab5-4fe3-bfd7-412575dd4bde)) + (segment (start 160.75 81.7125) (end 160.8625 81.825) (width 0.127) (layer "F.Cu") (net 48) (tstamp b0b5d76d-869e-4ac6-8ff7-1809d263352c)) + (segment (start 160.75 81) (end 160.75 81.7125) (width 0.127) (layer "F.Cu") (net 48) (tstamp b7b8df1d-5a2f-49d9-b405-247b34ee21fc)) + (segment (start 158.74648 89.112052) (end 158.5 89.358532) (width 0.127) (layer "F.Cu") (net 48) (tstamp c02228fd-84f2-44cb-8754-0163f5fb65e5)) + (segment (start 158.5 81) (end 158.5 80.5) (width 0.127) (layer "F.Cu") (net 48) (tstamp c407fe13-5b85-491b-a17d-d01f66ad52e8)) + (segment (start 173.137949 79.49648) (end 178.716469 85.075) (width 0.127) (layer "F.Cu") (net 48) (tstamp e62c7fbb-97d2-4019-a773-2608530f1493)) + (via (at 158.5 81) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 48) (tstamp 363d0aca-34ac-4948-952c-4691b2464396)) + (via (at 160.75 81) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 48) (tstamp 7e33f386-38e6-4496-8e26-9e647236a1e7)) + (segment (start 165.75352 80.50352) (end 168 82.75) (width 0.127) (layer "B.Cu") (net 48) (tstamp 31aa19a2-3c44-4f16-9419-1d72cf40c3f4)) + (segment (start 168 82.75) (end 168.925 82.75) (width 0.127) (layer "B.Cu") (net 48) (tstamp c7be14d6-bb75-4530-800c-c35e2bf23304)) + (segment (start 161.24648 80.50352) (end 165.75352 80.50352) (width 0.127) (layer "B.Cu") (net 48) (tstamp d5f0b73d-c8d8-4b3a-a0d0-3a6c49d51a75)) + (segment (start 160.75 81) (end 161.24648 80.50352) (width 0.127) (layer "B.Cu") (net 48) (tstamp e71b0dc9-97a6-4509-a16b-c442eb65a7ce)) + (segment (start 160.75 81) (end 158.5 81) (width 0.127) (layer "B.Cu") (net 48) (tstamp ff2d3185-f06f-4b30-8bff-3b3c1e42fe1a)) + (segment (start 158 82.5) (end 158.49296 82.99296) (width 0.127) (layer "F.Cu") (net 49) (tstamp 13b03349-7f6a-4d7e-8071-d0832af1493a)) + (segment (start 155.5 90) (end 155.5 94.3375) (width 0.127) (layer "F.Cu") (net 49) (tstamp 2d3298fe-a5e2-4c12-a070-1e11bf083688)) + (segment (start 158.49296 89.00704) (end 158 89.5) (width 0.127) (layer "F.Cu") (net 49) (tstamp 36032628-4acc-45ba-8f2c-a1d294fe3a9d)) + (segment (start 156 89.5) (end 155.5 90) (width 0.127) (layer "F.Cu") (net 49) (tstamp 4b8970c4-2268-4495-ad66-2cf84a485fe6)) + (segment (start 173.24296 79.24296) (end 159.398508 79.24296) (width 0.127) (layer "F.Cu") (net 49) (tstamp 5754402b-73c1-4658-b8a0-43568dac7186)) + (segment (start 178.425 84.425) (end 173.24296 79.24296) (width 0.127) (layer "F.Cu") (net 49) (tstamp 58bcc82b-a385-42a0-8097-bf89c72869dd)) + (segment (start 155.1375 82.475) (end 157.975 82.475) (width 0.127) (layer "F.Cu") (net 49) (tstamp 7361a17b-8559-457f-8e4c-9f55a23108da)) + (segment (start 157.975 82.475) (end 158 82.5) (width 0.127) (layer "F.Cu") (net 49) (tstamp 7d05f4f5-6ae1-4404-a62d-04a06a21fcdc)) + (segment (start 179.8625 84.425) (end 178.425 84.425) (width 0.127) (layer "F.Cu") (net 49) (tstamp b8e5e83c-2dbf-447b-8dca-f75d64925e5d)) + (segment (start 159.398508 79.24296) (end 158 80.641468) (width 0.127) (layer "F.Cu") (net 49) (tstamp c8429dbc-e1fb-44ef-ad86-0dde43068fba)) + (segment (start 158 80.641468) (end 158 82.5) (width 0.127) (layer "F.Cu") (net 49) (tstamp cc395f44-aa22-4253-a911-b32c8a445411)) + (segment (start 158 89.5) (end 156 89.5) (width 0.127) (layer "F.Cu") (net 49) (tstamp cce738eb-235f-4520-82f8-ae391d1ad69a)) + (segment (start 158.49296 82.99296) (end 158.49296 89.00704) (width 0.127) (layer "F.Cu") (net 49) (tstamp d3119fd4-303f-4753-8055-e099d810a395)) + (segment (start 123.25 112.25) (end 123.325 112.175) (width 0.127) (layer "F.Cu") (net 50) (tstamp 00520809-172f-452b-8202-fc5a773aa17c)) + (segment (start 154 94.3375) (end 154 96.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp 040aa7fa-1fd3-4351-8598-dd3101c05b1f)) + (segment (start 136.6625 101.25) (end 135.75 101.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp 05aa7228-edc7-4f17-8949-91646d5d0b2e)) + (segment (start 138.8 92.8) (end 137.05 92.8) (width 0.127) (layer "F.Cu") (net 50) (tstamp 093d8a0c-9eb8-42ea-9a62-1ed313c36978)) + (segment (start 123.25 112.25) (end 121 112.25) (width 0.508) (layer "F.Cu") (net 50) (tstamp 0c49515e-a55e-4516-9e47-0502649fb325)) + (segment (start 162.5 94.3375) (end 162.5 96.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp 0e9bf0fb-6fbc-4566-89b5-a1c775f30940)) + (segment (start 181.7 83.775) (end 181.75 83.825) (width 0.127) (layer "F.Cu") (net 50) (tstamp 1209ccc7-3951-4ca1-8212-d30fa64c3722)) + (segment (start 186.85 113.75) (end 186.85 115.5) (width 0.127) (layer "F.Cu") (net 50) (tstamp 163ec352-6d02-447e-8833-589bbcb548c5)) + (segment (start 137.05 92.8) (end 136.25 92) (width 0.127) (layer "F.Cu") (net 50) (tstamp 165d75cd-c6ac-4fbc-a3df-69ff53133ff0)) + (segment (start 152.25 83.25) (end 152.25 81) (width 0.127) (layer "F.Cu") (net 50) (tstamp 16896306-7bd3-487e-b6b4-99b414058efb)) + (segment (start 194.05 102.25) (end 194.05 104) (width 0.127) (layer "F.Cu") (net 50) (tstamp 19383f74-548a-4392-897b-faea6cd46c1a)) + (segment (start 128.3375 105.75) (end 130.25 105.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp 19aa4689-4749-47b4-9656-f16f7b9ac428)) + (segment (start 132.997398 87.29) (end 132.635 87.29) (width 0.127) (layer "F.Cu") (net 50) (tstamp 1ad10ede-56a4-451c-958d-48974b41ac21)) + (segment (start 128.3375 102.25) (end 130.25 102.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp 1c2440af-3a23-422c-8756-fef666b7d4b6)) + (segment (start 149.5 113.75) (end 156.5 113.75) (width 0.508) (layer "F.Cu") (net 50) (tstamp 1cc96e3a-a1f4-49b1-b0f6-6c5d97bca651)) + (segment (start 157.894988 89.24648) (end 158.23944 88.902028) (width 0.127) (layer "F.Cu") (net 50) (tstamp 1d6bd3e7-2295-43c3-895a-8ee76dbc426c)) + (segment (start 148.405 89.845) (end 148.405 88.35) (width 0.127) (layer "F.Cu") (net 50) (tstamp 1e89aea8-f9d0-4135-867d-9d7a65380799)) + (segment (start 168.9125 99.25) (end 167 99.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp 1f8d96c3-7594-4272-bb3a-b758dc96beaf)) + (segment (start 154 94.3375) (end 154 90) (width 0.127) (layer "F.Cu") (net 50) (tstamp 22acaa13-27ac-4a5b-816e-eea722fddfdc)) + (segment (start 195.25 90) (end 195.305 89.945) (width 0.508) (layer "F.Cu") (net 50) (tstamp 240e125f-7575-4db0-a38f-afe7cb4cb97a)) + (segment (start 152.775 83.775) (end 152.5 83.5) (width 0.127) (layer "F.Cu") (net 50) (tstamp 249090ac-cf48-42b2-93f4-8698b9f5bb4a)) + (segment (start 179.8625 83.775) (end 181.7 83.775) (width 0.127) (layer "F.Cu") (net 50) (tstamp 26aab602-1a13-433d-b0d6-b91c4df8cbb1)) + (segment (start 152.5 83.5) (end 152.25 83.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp 2a883cdb-3801-43c2-9bd1-698083b4f1f4)) + (segment (start 154 90) (end 154.75352 89.24648) (width 0.127) (layer "F.Cu") (net 50) (tstamp 2e2f4b79-f32c-4006-b3c0-93b2204490f4)) + (segment (start 195.65 102.25) (end 195.65 104) (width 0.127) (layer "F.Cu") (net 50) (tstamp 32cbf82c-b1b5-45ce-ba46-17b202f751d5)) + (segment (start 154.75352 89.24648) (end 157.894988 89.24648) (width 0.127) (layer "F.Cu") (net 50) (tstamp 3330b1e1-55e6-4c89-980d-6e9ef7e7f9bf)) + (segment (start 134.457398 88.75) (end 132.997398 87.29) (width 0.127) (layer "F.Cu") (net 50) (tstamp 3443799c-4825-4c70-9da5-b19244f39a47)) + (segment (start 182.05 113.75) (end 182.05 112) (width 0.127) (layer "F.Cu") (net 50) (tstamp 3888a8c9-86e2-4cc9-a2fa-cc33af542718)) + (segment (start 189.25 102.25) (end 189.25 104) (width 0.127) (layer "F.Cu") (net 50) (tstamp 3c2cd94d-ece2-4774-8aea-17fa4462b7cd)) + (segment (start 134.5 90.25) (end 134.5 88.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp 3db9bbd9-8cb7-4d26-8532-a363947923d0)) + (segment (start 118.75 113.6) (end 118.825 113.675) (width 0.508) (layer "F.Cu") (net 50) (tstamp 40d2e2e6-20c1-4e91-aafa-e4e528e6f86d)) + (segment (start 130.25 104) (end 130.25 102.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp 469068bb-c387-4876-8e88-665f1fcd5685)) + (segment (start 195.305 89.945) (end 199.7 89.945) (width 0.508) (layer "F.Cu") (net 50) (tstamp 523582db-66ee-4e82-ae15-a0c121ea0922)) + (segment (start 147.5875 113.75) (end 149.5 113.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp 53d8e29a-5780-4d34-ba27-8be1ec2a0f0b)) + (segment (start 130.25 105.75) (end 130.25 106.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp 5ab41bd0-fb42-4331-9b0b-8115b091eb0e)) + (segment (start 138 116) (end 135.25 113.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp 5cf947ab-2b21-426e-845f-7d3ed2b71194)) + (segment (start 121.3625 106.7) (end 119.55 106.7) (width 0.127) (layer "F.Cu") (net 50) (tstamp 6d2af8d0-3f72-4b1d-9eb3-a2fab18469c5)) + (segment (start 154.025 83.775) (end 155.1375 83.775) (width 0.127) (layer "F.Cu") (net 50) (tstamp 73586493-80cb-4479-996c-9b17554cb48b)) + (segment (start 123.25 112.25) (end 124.75 112.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp 73add63a-5d50-432a-8bac-47f103e9fa34)) + (segment (start 121.675 97.75) (end 119.5 97.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp 75b08c63-b0cc-45c9-a145-c0a621de4939)) + (segment (start 116.75 111.7) (end 116.75 113.6) (width 0.508) (layer "F.Cu") (net 50) (tstamp 7c4cc436-ed13-409f-81d9-8a175463a38b)) + (segment (start 130.25 104) (end 134.75 104) (width 0.127) (layer "F.Cu") (net 50) (tstamp 7cde545f-7329-4bdc-acbd-4722a0d431dd)) + (segment (start 119.55 106.7) (end 119.5 106.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp 7e3a1c1f-6471-4b06-bbbb-7461a6e0d4ec)) + (segment (start 119.575 113.675) (end 118.825 113.675) (width 0.508) (layer "F.Cu") (net 50) (tstamp 7e753979-7587-4f8e-9365-49890b7d0dff)) + (segment (start 174.85 102.25) (end 174.85 104) (width 0.127) (layer "F.Cu") (net 50) (tstamp 93d63252-6637-419c-8c8f-1983f5861c0c)) + (segment (start 157.775 83.775) (end 155.1375 83.775) (width 0.127) (layer "F.Cu") (net 50) (tstamp 97e9a9bb-5d19-432a-9de1-e582750358b6)) + (segment (start 134.75 104) (end 134.75 106.5) (width 0.127) (layer "F.Cu") (net 50) (tstamp 9ff821b8-65f1-44c3-a493-b0b2dcb464b9)) + (segment (start 167 115.6625) (end 167 113.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp a05c3aca-cbde-4c1b-8adc-80d2df02e4a9)) + (segment (start 118.75 111.525) (end 118.75 113.6) (width 0.508) (layer "F.Cu") (net 50) (tstamp a0810d59-d0e8-4f5e-98a4-a2149e471f58)) + (segment (start 112.8625 113.675) (end 116.675 113.675) (width 0.508) (layer "F.Cu") (net 50) (tstamp a0ba3cc1-2b1b-4e46-bb8d-9450893c51fd)) + (segment (start 135.75 101.25) (end 134.75 102.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp a10f0d3a-ea8f-46dc-94be-1e5f61328847)) + (segment (start 191.65 113.75) (end 191.65 115.5) (width 0.127) (layer "F.Cu") (net 50) (tstamp a400ccb7-53bb-491e-828d-b025cff3748b)) + (segment (start 123.325 112.175) (end 123.325 110.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp a73bb2dd-b09f-40fd-ba37-b31cdd104039)) + (segment (start 134.75 102.25) (end 134.75 104) (width 0.127) (layer "F.Cu") (net 50) (tstamp a9d1c042-569e-4a9f-bc9b-3744e5de8724)) + (segment (start 158.23944 88.902028) (end 158.23944 84.23944) (width 0.127) (layer "F.Cu") (net 50) (tstamp aa5abdc7-237f-4607-958e-34d68d15d664)) + (segment (start 147.5875 99.25) (end 149.5 99.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp ad65f3af-16a1-4169-8947-594831017dbc)) + (segment (start 168.9125 106.25) (end 167 106.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp ad96f5d2-5ce6-4cc9-9b18-1e6c03a03fb2)) + (segment (start 185.25 102.25) (end 185.25 104) (width 0.127) (layer "F.Cu") (net 50) (tstamp b0bba463-dc5a-43d5-8adf-2adaa3e2fe7a)) + (segment (start 149.5 94.3375) (end 149.5 96.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp b15b94cd-7d67-4bab-ac4a-eb099208a988)) + (segment (start 148.25 90) (end 148.405 89.845) (width 0.127) (layer "F.Cu") (net 50) (tstamp b238a6d8-a153-4440-9363-cbcbc66bb00c)) + (segment (start 135.25 108.1625) (end 135.25 112.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp b4bc2457-141a-41e6-b07b-31d61bbb40a9)) + (segment (start 160 94.3375) (end 160 96.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp b4cc122c-cfe6-4ac5-8a00-26a1a88e7c46)) + (segment (start 121.725 103) (end 119.5 103) (width 0.127) (layer "F.Cu") (net 50) (tstamp b89ded1b-1aed-492a-967c-1d8e873c033f)) + (segment (start 134.5 88.75) (end 134.457398 88.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp b8a339a6-f703-44f6-9f0b-9d412f8c5af9)) + (segment (start 154 96.25) (end 160 96.25) (width 0.508) (layer "F.Cu") (net 50) (tstamp bddea2a3-2f5a-467f-b28e-d055fc667605)) + (segment (start 169 96.1625) (end 168.9125 96.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp bf243659-4491-4865-ab79-91e36e01a749)) + (segment (start 128.3375 102.25) (end 128.3375 102.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp c30bade7-2e91-407f-a260-0a0544a77958)) + (segment (start 156.5 115.6625) (end 156.5 113.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp c37d01e4-4e74-4747-a45a-5ea3f7ed6b69)) + (segment (start 164 113.75) (end 167 113.75) (width 0.508) (layer "F.Cu") (net 50) (tstamp c7481177-0145-4b4a-9259-91826e58ec86)) + (segment (start 147.5875 103.75) (end 149.5 103.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp cab5a2ec-7f3d-4d91-bacb-0b4d2ae505a8)) + (segment (start 134.75 106.5) (end 135.25 107) (width 0.127) (layer "F.Cu") (net 50) (tstamp cdf6b0c5-5780-40b0-a165-347a5097bfff)) + (segment (start 147.5875 110.75) (end 149.5 110.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp d1e97fdc-fae3-447d-bd24-f641f4b0b63f)) + (segment (start 136.25 92) (end 134.5 90.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp d32a9694-0a13-479f-b16a-69bcaef7c288)) + (segment (start 135.25 107) (end 135.25 108.1625) (width 0.127) (layer "F.Cu") (net 50) (tstamp d4b3301c-8d10-48ba-a654-bec8de5226dd)) + (segment (start 169 93.25) (end 169 96.1625) (width 0.127) (layer "F.Cu") (net 50) (tstamp d5116e25-1b4e-4d10-b7fc-8e72d3e19ef6)) + (segment (start 168.9125 110.75) (end 167 110.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp d8f4ad78-2436-433e-8759-507bed013d64)) + (segment (start 168.9125 96.25) (end 167 96.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp daf00d4f-b706-4b40-8946-739bc4f9dc52)) + (segment (start 149.5 115.6625) (end 149.5 113.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp e20c1479-e982-44ac-8404-d08143fd8c97)) + (segment (start 160 96.25) (end 162.5 96.25) (width 0.508) (layer "F.Cu") (net 50) (tstamp e31f6c3c-caf0-4019-af26-6dfe55b81dc2)) + (segment (start 154.025 83.775) (end 152.775 83.775) (width 0.127) (layer "F.Cu") (net 50) (tstamp e3591012-ed33-4948-a9a2-9f562d5255f4)) + (segment (start 130.25 105.75) (end 130.25 104) (width 0.127) (layer "F.Cu") (net 50) (tstamp e54b624e-104c-4250-9696-7f197a6e347f)) + (segment (start 124.75 112.25) (end 125.8 113.3) (width 0.127) (layer "F.Cu") (net 50) (tstamp e64d9a47-adb0-4f23-af72-f607d764be0a)) + (segment (start 149.5 96.25) (end 154 96.25) (width 0.508) (layer "F.Cu") (net 50) (tstamp e6de164e-6797-4518-8ce8-417dc97a1f70)) + (segment (start 158.23944 84.23944) (end 157.775 83.775) (width 0.127) (layer "F.Cu") (net 50) (tstamp eb99690f-ef74-44e5-af17-c3409aba8361)) + (segment (start 156.5 113.75) (end 164 113.75) (width 0.508) (layer "F.Cu") (net 50) (tstamp ebd3d05d-ec95-47c0-b0af-db12457ff63a)) + (segment (start 116.675 113.675) (end 118.825 113.675) (width 0.508) (layer "F.Cu") (net 50) (tstamp ec222b9c-82d3-4fe2-937b-87a5430036d4)) + (segment (start 162.5 96.25) (end 167 96.25) (width 0.508) (layer "F.Cu") (net 50) (tstamp efe45fa8-0c3b-4bea-870f-f04d821f41c8)) + (segment (start 116.75 113.6) (end 116.675 113.675) (width 0.508) (layer "F.Cu") (net 50) (tstamp f18e337f-76f4-4a70-9278-07acf5791599)) + (segment (start 164 115.6625) (end 164 113.75) (width 0.127) (layer "F.Cu") (net 50) (tstamp f1ccf7f3-c212-44b0-88ce-3d350eb86494)) + (segment (start 135.25 113.25) (end 135.25 112.25) (width 0.127) (layer "F.Cu") (net 50) (tstamp f2aa03b8-61b8-4b09-80b8-e3c27469ae98)) + (segment (start 121 112.25) (end 119.575 113.675) (width 0.508) (layer "F.Cu") (net 50) (tstamp f4321209-6211-4dc7-883d-a67900fe25d9)) + (via (at 149.5 110.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 07d2724b-769b-45fa-abc9-8d3eca72d1ee)) + (via (at 185.25 104) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 08b0519e-e2e0-44de-8456-f0e1829128f6)) + (via (at 186.85 115.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 0fe94b8f-73a7-46bc-af96-efad4535b788)) + (via (at 167 113.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 50) (tstamp 1814ee64-6981-44a0-b518-acf68a9e2846)) + (via (at 136.25 92) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 20d91061-774d-4048-936a-3bd9530ee43a)) + (via (at 154 96.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 233e3d8f-ee9c-4ece-8713-7de61218499c)) + (via (at 152.25 81) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 32a958f4-f30c-4ea2-99d8-079909a64b6c)) + (via (at 182.05 112) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 3b568201-5c81-4c1a-984a-051d69aee314)) + (via (at 167 106.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 3fd37ba9-e1d8-4fdb-83d8-8182f4482a1c)) + (via (at 149.5 99.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 4533cd33-6444-49b9-aa63-07fec8b42dcc)) + (via (at 195.25 90) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 49c5e75c-19a3-44cc-b82e-ba9ae2c8c970)) + (via (at 195.65 104) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 5ebb0d92-f9c0-4451-9afe-c3a3d69d3dec)) + (via (at 167 99.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 6596c866-5e5d-453d-ad1c-194548d2594d)) + (via (at 181.75 83.825) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 667495bc-4010-4697-9f89-7255e5947c70)) + (via (at 119.5 97.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 71d7d898-0e83-4be8-b359-f620f7a922b0)) + (via (at 130.25 102.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 753a3293-da4f-495d-8100-e46d6f44ae3f)) + (via (at 134.75 106.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 7aec0ad7-5d55-48d7-9477-118575be97c3)) + (via (at 134.75 102.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 7f234e98-c0cf-45d0-99a0-33cde9f5c7ef)) + (via (at 149.5 96.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 50) (tstamp 7f3aedf6-2b5a-42f6-a01a-b2e987b69ad9)) + (via (at 135.25 112.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 8680aebc-5dad-478f-b981-d427a65b390d)) + (via (at 149.5 103.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 94976a35-8fc7-4091-be85-ce830192b652)) + (via (at 169 93.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp 9f092ee1-a496-4591-b550-4e7ed48402aa)) + (via (at 167 110.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp a27841df-dc44-478a-a7ec-9d85bf2d3c35)) + (via (at 148.25 90) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp a8ed30ca-e0a1-4e38-b9dc-671e766a1df4)) + (via (at 164 113.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp b175f779-ce2d-474c-bd4e-843ab59ce441)) + (via (at 191.65 115.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp c2c465bc-2e06-4143-969f-ddb74de7d3e6)) + (via (at 194.05 104) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp c2cf25ba-d9b1-433a-9902-a4121f2ace12)) + (via (at 119.5 106.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp c38cb136-505e-4947-8d7e-650fb0fb861c)) + (via (at 162.5 96.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp c6ad14ea-a362-4160-aca7-80a2513abb3a)) + (via (at 156.5 113.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp c7d979f2-ee33-4084-aee6-a9ab6002795a)) + (via (at 149.5 113.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 50) (tstamp d85f7422-60c7-40c3-8185-464b2a8e11fc)) + (via (at 119.5 103) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp d99773a6-9054-4791-b9f8-d7744efb850a)) + (via (at 167 96.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (free) (net 50) (tstamp dd2c0a8c-152d-45cf-a467-0913357812c3)) + (via (at 174.85 104) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp de0462e8-6c7c-414d-bf2b-70ed0242900e)) + (via (at 160 96.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp e384586e-f1c5-4052-8098-0fc951d1aaa8)) + (via (at 134.5 88.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp e42d2209-2e18-417b-b485-309e74993afb)) + (via (at 130.25 106.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp f6eb8e2d-c2fc-4e30-ae1b-40bb70bb6215)) + (via (at 123.25 112.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp f90ce97e-1f07-4fe4-bf01-3cc834fddf83)) + (via (at 189.25 104) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 50) (tstamp f9a63465-fba0-4355-bc2b-590d101c53e4)) + (segment (start 167 113.75) (end 167 104) (width 0.508) (layer "B.Cu") (net 50) (tstamp 00387cd4-53e7-4799-a41f-e6b8835c8fb6)) + (segment (start 138.075 86.925) (end 138.75 86.925) (width 0.127) (layer "B.Cu") (net 50) (tstamp 0303726d-ed0f-4b6b-a669-5b888d86c31d)) + (segment (start 196 90.75) (end 195.25 90) (width 0.127) (layer "B.Cu") (net 50) (tstamp 054354d4-dbb8-4ca4-840b-743cd3a17bcb)) + (segment (start 160.75 94.275) (end 160 95.025) (width 0.127) (layer "B.Cu") (net 50) (tstamp 06b72b08-133d-45f6-a7d6-f7e177c6558e)) + (segment (start 174.85 104) (end 174.85 102.525) (width 0.127) (layer "B.Cu") (net 50) (tstamp 072e3c69-83a1-41b1-899e-e10fcd382a6d)) + (segment (start 129.5 107) (end 129.5 109.475) (width 0.127) (layer "B.Cu") (net 50) (tstamp 07d2040e-8b07-45f2-97a3-76bb0e8d947f)) + (segment (start 130.25 106.25) (end 129.5 107) (width 0.127) (layer "B.Cu") (net 50) (tstamp 0811e9b2-ce38-4c24-9e0d-30e215ff300d)) + (segment (start 168.975 110.75) (end 167 110.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 08fb9773-4204-4f4a-b58f-296fbff8154f)) + (segment (start 164 115.475) (end 164 113.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 0d9d20a7-463c-435f-8315-8c431d855e9f)) + (segment (start 167 104) (end 167 96.25) (width 0.508) (layer "B.Cu") (net 50) (tstamp 0ec81642-046a-48bb-a09f-c306ca21d797)) + (segment (start 189.25 104) (end 189.25 115.5) (width 0.508) (layer "B.Cu") (net 50) (tstamp 10924841-485d-4bbc-bffa-02b8dc2c6a3f)) + (segment (start 164.25 115.725) (end 164 115.475) (width 0.127) (layer "B.Cu") (net 50) (tstamp 11a40cd0-38de-4305-ad36-c77743a2a77a)) + (segment (start 123.725 113.475) (end 125.75 113.475) (width 0.127) (layer "B.Cu") (net 50) (tstamp 12b566d1-33b9-4b99-b27e-17f7e22d746c)) + (segment (start 148.775 94.275) (end 149.5 94.275) (width 0.127) (layer "B.Cu") (net 50) (tstamp 130759b7-5b99-4e8a-a48b-db7ac5ccbbec)) + (segment (start 160 95.025) (end 160 96.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp 15aa895d-3410-424e-99e2-5b35b65b9ad5)) + (segment (start 119 106.75) (end 119.5 106.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 181f1d78-9085-4d43-8b71-03f87b119f1e)) + (segment (start 148.25 93.75) (end 148.775 94.275) (width 0.127) (layer "B.Cu") (net 50) (tstamp 186504b6-b4c1-458e-884f-c770e977d9a2)) + (segment (start 170.575 80.575) (end 170.575 81) (width 0.127) (layer "B.Cu") (net 50) (tstamp 1a383b65-6b52-436e-b883-8f1a1fa482de)) + (segment (start 149.5 96.25) (end 149.5 112.25) (width 0.508) (layer "B.Cu") (net 50) (tstamp 1cf1c249-e380-4581-a9b4-841b93ab92b0)) + (segment (start 193.975 91.275) (end 193.975 95.425) (width 0.508) (layer "B.Cu") (net 50) (tstamp 1e8d1173-5e98-46d4-890e-811834d63ba8)) + (segment (start 154 95.25) (end 154 96.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp 2471b6c5-296a-4f88-a5ce-ca8bb463cf58)) + (segment (start 169 93.25) (end 170.575 91.675) (width 0.127) (layer "B.Cu") (net 50) (tstamp 2561f62e-1d12-4704-9da2-3203107c0e38)) + (segment (start 170.575 91.675) (end 170.575 88) (width 0.127) (layer "B.Cu") (net 50) (tstamp 2857a465-5b3e-4ee3-b452-42f42c0911c6)) + (segment (start 129.5 112.25) (end 135.25 112.25) (width 0.508) (layer "B.Cu") (net 50) (tstamp 28a187c6-b201-4123-9c5a-4d6863e87e78)) + (segment (start 152.25 81) (end 153.475 81) (width 0.127) (layer "B.Cu") (net 50) (tstamp 28fc4a77-579b-4878-8f77-5bf7dbae65c8)) + (segment (start 130.25 102.25) (end 130.25 103.7) (width 0.127) (layer "B.Cu") (net 50) (tstamp 2a1bf7fb-7496-429d-84bc-aa124a18cb7e)) + (segment (start 169.99648 79.99648) (end 170.575 80.575) (width 0.127) (layer "B.Cu") (net 50) (tstamp 2ef84832-1970-455c-8a90-f8d4126e814b)) + (segment (start 189.25 104) (end 185.25 104) (width 0.508) (layer "B.Cu") (net 50) (tstamp 31728819-51fc-4a4d-9c31-00b7f033e52b)) + (segment (start 156.25 115.725) (end 156.5 115.475) (width 0.127) (layer "B.Cu") (net 50) (tstamp 327a831c-2633-44a2-9d40-b52469671b06)) + (segment (start 123.25 112.25) (end 129.5 112.25) (width 0.508) (layer "B.Cu") (net 50) (tstamp 343a4c18-d49f-4288-9f33-fc9d7ac2f534)) + (segment (start 193.975 95.425) (end 194.05 95.5) (width 0.508) (layer "B.Cu") (net 50) (tstamp 387c4c76-ca44-43df-8750-ed5f2258da36)) + (segment (start 135.25 112.25) (end 135.5 112.25) (width 0.508) (layer "B.Cu") (net 50) (tstamp 39c5521a-09cd-4f0b-92a6-25460a5313e2)) + (segment (start 194 95.55) (end 194 98) (width 0.508) (layer "B.Cu") (net 50) (tstamp 3b5c8123-5f96-411f-b319-a5629f61315a)) + (segment (start 191.65 115.5) (end 191.65 114.025) (width 0.127) (layer "B.Cu") (net 50) (tstamp 44739e20-7688-47c8-89d1-aa1825698f48)) + (segment (start 174.85 104) (end 167 104) (width 0.508) (layer "B.Cu") (net 50) (tstamp 49811a5a-9f61-4326-af23-15835bf0da6c)) + (segment (start 186.85 115.5) (end 189.25 115.5) (width 0.508) (layer "B.Cu") (net 50) (tstamp 4c55ceb9-8aaa-4dc9-9212-600d4fb80f3c)) + (segment (start 194 98) (end 191.75 100.25) (width 0.508) (layer "B.Cu") (net 50) (tstamp 4fde4bde-62b5-4c12-9009-491c088c3dbb)) + (segment (start 148.5 88.525) (end 150.2 88.525) (width 0.127) (layer "B.Cu") (net 50) (tstamp 515b32c7-d370-4b0a-9b24-c195bd93d14b)) + (segment (start 185.25 104) (end 174.85 104) (width 0.508) (layer "B.Cu") (net 50) (tstamp 5620eb9d-d5cf-4463-b0db-8dd95366ffe9)) + (segment (start 123.25 112.25) (end 123.25 113) (width 0.127) (layer "B.Cu") (net 50) (tstamp 57236aa3-f5d8-4fbf-90fb-e1585955e03d)) + (segment (start 153.25 94.275) (end 154 95.025) (width 0.127) (layer "B.Cu") (net 50) (tstamp 5834cac5-1da1-4fb4-ad86-931d6f415c26)) + (segment (start 147.525 99.25) (end 149.5 99.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp 591e0f60-b408-435f-abf0-bae10139cf48)) + (segment (start 136.25 88.75) (end 138.075 86.925) (width 0.127) (layer "B.Cu") (net 50) (tstamp 594802c0-6721-4200-a068-e9990b22bc15)) + (segment (start 122.75 106.75) (end 119.5 106.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 60edb02e-9f70-4c97-a95e-eae2b6fba289)) + (segment (start 168.975 99.25) (end 167 99.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp 617222d5-1aca-4996-986f-07f439b81db8)) + (segment (start 118.5 106.25) (end 119 106.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 649ab3dd-8ee2-4c98-bda0-2ef0c98a1caf)) + (segment (start 118.5 103.5) (end 118.5 106.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp 67831f5a-b712-4168-97a5-7f675c5c56a9)) + (segment (start 135.5 113.4625) (end 135.5 112.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp 75144879-070f-4f47-8e9e-cf86c6576e68)) + (segment (start 154.47852 79.99648) (end 169.99648 79.99648) (width 0.127) (layer "B.Cu") (net 50) (tstamp 77451131-3bf8-4cce-984a-d31f1f8e0f0b)) + (segment (start 199 90.75) (end 196 90.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 775cd29f-6ccb-41f6-bcb0-9fa43f06d101)) + (segment (start 149.5 115.725) (end 149.5 113.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 77d67a21-bd06-46c9-8a6d-21cb3f5f65a4)) + (segment (start 135.5 112.25) (end 149.5 112.25) (width 0.508) (layer "B.Cu") (net 50) (tstamp 7c3e8df7-613a-40ee-8d1a-8e7aa65a7d7c)) + (segment (start 153.475 81) (end 154.47852 79.99648) (width 0.127) (layer "B.Cu") (net 50) (tstamp 84845db9-e9d0-4c1a-a172-e49908bbb685)) + (segment (start 123.25 107.25) (end 122.75 106.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 879296d7-c6f6-47d5-a140-f29d661ada55)) + (segment (start 150.2 88.525) (end 150.25 88.575) (width 0.127) (layer "B.Cu") (net 50) (tstamp 88382654-856f-4a2f-a041-6e8f7c3662bb)) + (segment (start 170.575 82.75) (end 179.025 82.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 8e6f5396-f7b5-4c45-82b6-ed01b2891865)) + (segment (start 147.525 103.75) (end 149.5 103.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 8e9a6e7f-22bd-486d-9028-1c9a86db42d4)) + (segment (start 149.5 112.25) (end 149.5 113.75) (width 0.508) (layer "B.Cu") (net 50) (tstamp 8faeb2e7-a5ab-4274-9478-050d2710bd87)) + (segment (start 195.65 104) (end 194.05 104) (width 0.508) (layer "B.Cu") (net 50) (tstamp 9148962e-87e1-46a0-a187-4955c60e5763)) + (segment (start 191.75 104) (end 189.25 104) (width 0.508) (layer "B.Cu") (net 50) (tstamp 91d4ac76-ee4e-4d49-9004-d4eb5b149b62)) + (segment (start 181.675 83.75) (end 180.025 83.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 9313bfa4-ce48-4a29-973e-aedc75f17c2f)) + (segment (start 167 115.725) (end 167 113.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 94e004a8-54aa-4e68-8c53-ff45cfbb019d)) + (segment (start 181.75 83.825) (end 181.675 83.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 967e5a0b-292c-4455-a6ac-09c2bc55e005)) + (segment (start 154 95.025) (end 154 95.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp 97935380-a845-4926-a037-b8e3570fc83c)) + (segment (start 119.5 103) (end 119 103) (width 0.127) (layer "B.Cu") (net 50) (tstamp 9d7b9452-2ee6-45d0-84f9-9f1c6ba1a2f1)) + (segment (start 130.275 103.725) (end 129.5 103.725) (width 0.127) (layer "B.Cu") (net 50) (tstamp 9dc182ae-acf9-4c78-99c9-43f1e4d63bff)) + (segment (start 147.525 110.75) (end 149.5 110.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp 9f8744cc-a18c-4627-a211-672419817cc2)) + (segment (start 148.25 88.775) (end 148.5 88.525) (width 0.127) (layer "B.Cu") (net 50) (tstamp 9f8b66f7-ffe9-493b-a900-e3f4ec4dfbf7)) + (segment (start 138.75 92.975) (end 138.75 92) (width 0.127) (layer "B.Cu") (net 50) (tstamp a014a8dc-83b4-4fbe-86ed-0ac3a12a128d)) + (segment (start 149.5 94.275) (end 149.5 96.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp a03fab47-af11-4f05-85f7-b9bb23f12032)) + (segment (start 182.05 112) (end 185.55 115.5) (width 0.127) (layer "B.Cu") (net 50) (tstamp a4884d90-fc86-4de5-a5ec-2fe601d5f08c)) + (segment (start 195.65 104) (end 195.65 102.525) (width 0.127) (layer "B.Cu") (net 50) (tstamp a4b5629a-cf7a-4c58-ab1c-a5fbcc868e44)) + (segment (start 189.25 104) (end 189.25 102.525) (width 0.127) (layer "B.Cu") (net 50) (tstamp a5548ca9-3e02-4dc1-b49a-4f81fb56a414)) + (segment (start 194.05 104) (end 194.05 102.525) (width 0.127) (layer "B.Cu") (net 50) (tstamp a57af561-b641-4c02-8d34-e88244f7dc21)) + (segment (start 162.25 94.275) (end 162.5 94.525) (width 0.127) (layer "B.Cu") (net 50) (tstamp a74dcc61-a67d-49e4-879d-4c9196f15e06)) + (segment (start 148.25 90) (end 148.25 88.775) (width 0.127) (layer "B.Cu") (net 50) (tstamp a825dacd-9696-4a26-b3fc-d6a988924ad0)) + (segment (start 179.025 82.75) (end 180.025 83.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp a90cf3ac-e928-4015-8873-41990cdcd3cb)) + (segment (start 168.975 106.25) (end 167 106.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp ab900d20-4d6e-4c10-b5ce-56dcc8eb010c)) + (segment (start 162.5 94.525) (end 162.5 96.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp ad8acc58-a186-4ee8-bf4f-16b8a1eca9cc)) + (segment (start 123.25 113) (end 123.725 113.475) (width 0.127) (layer "B.Cu") (net 50) (tstamp b15db7b6-9496-4754-ac2a-27bcc5be62e5)) + (segment (start 119.5 97.75) (end 119.5 103) (width 0.127) (layer "B.Cu") (net 50) (tstamp b6cf260c-1e43-4d19-9fc7-0d5d2dca900b)) + (segment (start 134.75 106.5) (end 134.75 105.275) (width 0.127) (layer "B.Cu") (net 50) (tstamp b8122a9b-9244-49b7-98c7-abea8ffd0e70)) + (segment (start 194.05 104) (end 191.75 104) (width 0.508) (layer "B.Cu") (net 50) (tstamp ba19bf79-b3c5-410f-9a76-80e2994881dc)) + (segment (start 136.25 92) (end 145.25 92) (width 0.127) (layer "B.Cu") (net 50) (tstamp ba7f787c-8913-41d6-b0d8-083e61039a20)) + (segment (start 185.55 115.5) (end 186.85 115.5) (width 0.127) (layer "B.Cu") (net 50) (tstamp be3b65a3-e889-49fc-b2bd-7a31d1db3421)) + (segment (start 134.5 88.75) (end 136.25 88.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp c03a2b90-d4ed-4b07-8305-2dd9a49f1bb6)) + (segment (start 147.525 113.75) (end 149.5 113.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp c91e4947-641e-4714-aae9-8ad759b80d4d)) + (segment (start 199.575 90.175) (end 199 90.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp c988cd8b-7ad9-4565-bdb4-c84432b0cf9a)) + (segment (start 199.575 89.5) (end 199.575 90.175) (width 0.127) (layer "B.Cu") (net 50) (tstamp cc612808-adf5-432a-a369-09a390f88d1e)) + (segment (start 194.05 95.5) (end 194 95.55) (width 0.508) (layer "B.Cu") (net 50) (tstamp cc8fc350-f793-4f10-bc65-b9f25872604f)) + (segment (start 119 103) (end 118.5 103.5) (width 0.127) (layer "B.Cu") (net 50) (tstamp cc9cff0f-2d28-4c6d-a935-995b1dcc7236)) + (segment (start 168.975 96.25) (end 167 96.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp d11b0feb-8a7e-4ba4-a56e-6005020abe7a)) + (segment (start 185.25 104) (end 185.25 102.525) (width 0.127) (layer "B.Cu") (net 50) (tstamp d505e2a0-7c62-4991-9f0e-f63f45b5362f)) + (segment (start 130.25 103.7) (end 130.275 103.725) (width 0.127) (layer "B.Cu") (net 50) (tstamp da6facce-8172-4b60-abf8-7b9f15183aeb)) + (segment (start 156.5 115.475) (end 156.5 113.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp e0a56a5f-3b7e-4f14-9c22-e7c8808c39b6)) + (segment (start 186.85 115.5) (end 186.85 114.025) (width 0.127) (layer "B.Cu") (net 50) (tstamp e1938d9f-e27e-4ee2-89cd-97d9c164793f)) + (segment (start 123.25 112.25) (end 123.25 107.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp e1b89e76-c061-4692-aa7a-24d3c1eaf294)) + (segment (start 131.25 103.725) (end 130.275 103.725) (width 0.127) (layer "B.Cu") (net 50) (tstamp e1eb5611-f671-4b5e-83c7-ad5462df1e61)) + (segment (start 170.575 81) (end 170.575 82.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp e4e09d70-0782-4708-b86d-a3427c01a91c)) + (segment (start 145.25 92) (end 149.5 96.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp e55f2ed7-f653-414f-8ff5-72e9dab13883)) + (segment (start 134.75 102.25) (end 134.75 101.025) (width 0.127) (layer "B.Cu") (net 50) (tstamp e8d412ba-6114-46fe-a85d-596b1fee6fd5)) + (segment (start 129.5 113.4625) (end 129.5 112.25) (width 0.127) (layer "B.Cu") (net 50) (tstamp ecc4cb64-0879-4913-863d-39d8489002d2)) + (segment (start 148.25 90) (end 148.25 93.75) (width 0.127) (layer "B.Cu") (net 50) (tstamp ef0b4c1d-73af-4e57-8ce7-641acbe48556)) + (segment (start 195.25 90) (end 193.975 91.275) (width 0.508) (layer "B.Cu") (net 50) (tstamp ef230740-f141-453b-b127-e43bbf22cf71)) + (segment (start 191.75 100.25) (end 191.75 104) (width 0.508) (layer "B.Cu") (net 50) (tstamp f1e4d36f-893f-4856-81ea-35939e45ac39)) + (segment (start 189.25 115.5) (end 191.65 115.5) (width 0.508) (layer "B.Cu") (net 50) (tstamp f4cf0659-796d-4476-b46e-479ff04edff4)) + (segment (start 121 115.75) (end 119.575 114.325) (width 0.508) (layer "F.Cu") (net 51) (tstamp 3c3fa3d1-a5d9-4c17-b472-824bc2a15c0e)) + (segment (start 160 131) (end 160 125.75) (width 0.508) (layer "F.Cu") (net 51) (tstamp 56e38712-2d05-4e80-a684-858c17412103)) + (segment (start 114.675 114.325) (end 112.8625 114.325) (width 0.508) (layer "F.Cu") (net 51) (tstamp 78abe65e-0fc6-4269-b6f3-bd28c14aee04)) + (segment (start 118.75 116.475) (end 118.75 114.4) (width 0.508) (layer "F.Cu") (net 51) (tstamp 876858d2-d5b0-4485-94dc-ec0c832e0418)) + (segment (start 119.575 114.325) (end 118.675 114.325) (width 0.508) (layer "F.Cu") (net 51) (tstamp a436355e-f349-4399-93ce-d13a669e45e2)) + (segment (start 140 131) (end 140 125.75) (width 0.508) (layer "F.Cu") (net 51) (tstamp ae0aae84-301a-4f15-b579-f6b7af298d6d)) + (segment (start 118.675 114.325) (end 114.675 114.325) (width 0.508) (layer "F.Cu") (net 51) (tstamp c5744f61-04c1-49fc-a06d-bd0cb5ff4e8f)) + (segment (start 118.75 114.4) (end 118.675 114.325) (width 0.508) (layer "F.Cu") (net 51) (tstamp eea05c9d-0395-4d6d-8659-f77ec60b55d6)) + (via (at 121 115.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 51) (tstamp 075cfa12-6baa-4559-beca-c567c605bade)) + (via (at 140 125.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 51) (tstamp 6f89ab31-3a3a-478a-982b-a14808a4c021)) + (via (at 160 125.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 51) (tstamp 77b10589-f0bd-4a50-8138-9265e9676472)) + (segment (start 140 131) (end 140 125.75) (width 0.508) (layer "B.Cu") (net 51) (tstamp 182c9452-762c-4051-bab0-5858a4094d2c)) + (segment (start 154.5 120.25) (end 160 125.75) (width 0.508) (layer "B.Cu") (net 51) (tstamp 3100e716-e816-4760-8f13-19c449d88445)) + (segment (start 125.5 120.25) (end 140 120.25) (width 0.508) (layer "B.Cu") (net 51) (tstamp 8f861b44-1a77-4e7d-b9bd-b1b104d5b065)) + (segment (start 160 131) (end 160 125.75) (width 0.508) (layer "B.Cu") (net 51) (tstamp 9aa9acb8-c992-4e16-94a8-ede8a6ea23af)) + (segment (start 140 120.25) (end 154.5 120.25) (width 0.508) (layer "B.Cu") (net 51) (tstamp d6920382-97a5-41cd-b8c3-aaa2dbf32346)) + (segment (start 121 115.75) (end 125.5 120.25) (width 0.508) (layer "B.Cu") (net 51) (tstamp d7d8d23b-c7bc-4a99-9824-468f00aeaef2)) + (segment (start 140 125.75) (end 140 120.25) (width 0.508) (layer "B.Cu") (net 51) (tstamp ecce5ee8-6217-44fe-bc01-9648ea35dbae)) + (segment (start 105.25 94.85) (end 106.4 94.85) (width 0.508) (layer "F.Cu") (net 52) (tstamp 0b44fa66-2d20-41e6-b824-532ae94aebf2)) + (segment (start 109.225 97.5) (end 107.95 97.5) (width 0.508) (layer "F.Cu") (net 52) (tstamp 19d1a23d-d56b-4f1c-b401-263cc906c613)) + (segment (start 109.75 101.25) (end 109.225 100.725) (width 0.127) (layer "F.Cu") (net 52) (tstamp 24c85814-cde3-4766-9510-12ff56cab355)) + (segment (start 107.85 96.1) (end 107.85 97.6) (width 0.508) (layer "F.Cu") (net 52) (tstamp 297fdb77-588f-4ab6-be5e-509680ba3137)) + (segment (start 107.95 99.25) (end 107.85 99.15) (width 0.508) (layer "F.Cu") (net 52) (tstamp 3266bebf-0775-4dea-add5-0dfa3ea6538b)) + (segment (start 106.5 94.75) (end 107.85 96.1) (width 0.508) (layer "F.Cu") (net 52) (tstamp 65223296-55b3-4ab4-bb5a-8300368313ad)) + (segment (start 109.225 99.25) (end 107.95 99.25) (width 0.508) (layer "F.Cu") (net 52) (tstamp 7de524a2-85a9-4f78-8f76-51af06d544b7)) + (segment (start 107.85 99.15) (end 107.85 103.2) (width 0.508) (layer "F.Cu") (net 52) (tstamp 94f67fd2-6d17-4b94-9d44-3b87e52cae73)) + (segment (start 106.5 90.25) (end 106.4 90.15) (width 0.508) (layer "F.Cu") (net 52) (tstamp 9a53d755-4688-4901-a2dd-479526bc89db)) + (segment (start 106.4 94.85) (end 106.5 94.75) (width 0.508) (layer "F.Cu") (net 52) (tstamp ae1129f7-4cb6-4e2e-a8a5-c54966adbc35)) + (segment (start 107.95 97.5) (end 107.85 97.6) (width 0.508) (layer "F.Cu") (net 52) (tstamp bef01cdb-e148-4ef4-9770-0eab0e6d6a9f)) + (segment (start 121.675 101.25) (end 109.75 101.25) (width 0.127) (layer "F.Cu") (net 52) (tstamp c8960252-0dc8-40ab-8ca1-ed7b4a79f437)) + (segment (start 109.225 100.725) (end 109.225 99.25) (width 0.127) (layer "F.Cu") (net 52) (tstamp ca229636-6374-4a89-8476-4fd679a77b4a)) + (segment (start 106.4 90.15) (end 105.25 90.15) (width 0.508) (layer "F.Cu") (net 52) (tstamp d7ee7627-1b06-4d09-a22c-294669db31a7)) + (segment (start 107.85 97.6) (end 107.85 99.15) (width 0.508) (layer "F.Cu") (net 52) (tstamp e3e17852-e76c-40cb-9fd6-e7b7506b5c02)) + (via (at 106.5 90.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 52) (tstamp 3d8783fe-0d41-45ec-9f36-56c37953d96b)) + (via (at 106.5 94.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 52) (tstamp 8b7041e7-288a-443d-b920-73f43679995b)) + (segment (start 106 94.25) (end 106 90.75) (width 0.508) (layer "B.Cu") (net 52) (tstamp 04a5d01b-fa95-4427-9df6-15bdbe4e7287)) + (segment (start 106 90.75) (end 106.5 90.25) (width 0.508) (layer "B.Cu") (net 52) (tstamp 68882cc8-993d-4918-82a8-03dbc4f5c13f)) + (segment (start 106.5 94.75) (end 106 94.25) (width 0.508) (layer "B.Cu") (net 52) (tstamp fb2d7f2b-766f-42d1-adb1-b332ef4cbd65)) + (segment (start 152.5 86.75) (end 149.25 83.5) (width 0.127) (layer "F.Cu") (net 53) (tstamp 1ab2d2ff-24e4-4ac0-8fab-5d6decdf3b16)) + (segment (start 148.405 83.155) (end 148.405 81.15) (width 0.127) (layer "F.Cu") (net 53) (tstamp 7866eca3-4fda-4b6a-b9b3-f311f0e99a93)) + (segment (start 152.5 94.3375) (end 152.5 86.75) (width 0.127) (layer "F.Cu") (net 53) (tstamp 7d7b2164-0443-4bf2-b9bc-2f4d4d89d5d5)) + (segment (start 149.25 83.5) (end 148.75 83.5) (width 0.127) (layer "F.Cu") (net 53) (tstamp 966daf52-af0a-4278-a061-9818456be0eb)) + (segment (start 148.75 83.5) (end 148.405 83.155) (width 0.127) (layer "F.Cu") (net 53) (tstamp 9c4df23e-d158-4a00-93a9-490bdab1e13b)) + (segment (start 152 94.3375) (end 152 86.75) (width 0.127) (layer "F.Cu") (net 54) (tstamp 1eb2f219-3f5c-43b1-9da1-41e7f4611c5d)) + (segment (start 147.5 84) (end 147.135 83.635) (width 0.127) (layer "F.Cu") (net 54) (tstamp 2c6989c8-8833-4a3b-ab2c-5c65fd05ee83)) + (segment (start 147.135 83.635) (end 147.135 81.15) (width 0.127) (layer "F.Cu") (net 54) (tstamp c587eff1-ff55-48f2-b6d3-ec4d2c53e2e6)) + (segment (start 152 86.75) (end 149.25 84) (width 0.127) (layer "F.Cu") (net 54) (tstamp d5f55830-aab4-446c-a8a3-62d4891d8741)) + (segment (start 149.25 84) (end 147.5 84) (width 0.127) (layer "F.Cu") (net 54) (tstamp d8ecc6cc-f145-405e-9d2c-b9f3bbdcb38c)) + (segment (start 146.25 84.5) (end 145.865 84.115) (width 0.127) (layer "F.Cu") (net 55) (tstamp 1d087305-2972-42c5-a8e6-14eca700627c)) + (segment (start 151.5 86.75) (end 149.25 84.5) (width 0.127) (layer "F.Cu") (net 55) (tstamp 7c789f47-8344-4d51-8d7e-5801a613179a)) + (segment (start 151.5 94.3375) (end 151.5 86.75) (width 0.127) (layer "F.Cu") (net 55) (tstamp 8ff4e733-67a3-494e-8149-c11051374c5e)) + (segment (start 149.25 84.5) (end 146.25 84.5) (width 0.127) (layer "F.Cu") (net 55) (tstamp c5166bec-a251-4a5b-ab08-b4613b54229d)) + (segment (start 145.865 84.115) (end 145.865 81.15) (width 0.127) (layer "F.Cu") (net 55) (tstamp e029b6ad-ad3c-4df3-98d9-bbd1fa890e1c)) + (segment (start 145 85) (end 144.595 85.405) (width 0.127) (layer "F.Cu") (net 56) (tstamp 36ccd124-be9c-4cf9-b07f-b636d5ffa649)) + (segment (start 151 94.3375) (end 151 86.75) (width 0.127) (layer "F.Cu") (net 56) (tstamp 3d087d04-53fb-4459-86d2-a3f69774f8c8)) + (segment (start 149.25 85) (end 145 85) (width 0.127) (layer "F.Cu") (net 56) (tstamp 43641f6c-d6fb-4bd4-a72c-148d04040732)) + (segment (start 144.595 85.405) (end 144.595 88.35) (width 0.127) (layer "F.Cu") (net 56) (tstamp 52280664-292f-42f6-8db8-1bd9c70b21bb)) + (segment (start 151 86.75) (end 149.25 85) (width 0.127) (layer "F.Cu") (net 56) (tstamp 9b10215b-1171-4bf2-b6f6-e0280f02a77c)) + (segment (start 150.5 86.75) (end 149.25 85.5) (width 0.127) (layer "F.Cu") (net 57) (tstamp 0713edb0-708a-412a-9e1e-a2b4c66fd414)) + (segment (start 149.25 85.5) (end 146.25 85.5) (width 0.127) (layer "F.Cu") (net 57) (tstamp 2f5a6e78-1f71-4ec4-bf42-771da92351f3)) + (segment (start 145.865 85.885) (end 145.865 88.35) (width 0.127) (layer "F.Cu") (net 57) (tstamp 820e65ce-e4fb-4666-8846-1c81f405a642)) + (segment (start 150.5 94.3375) (end 150.5 86.75) (width 0.127) (layer "F.Cu") (net 57) (tstamp 9a0dae00-9869-47ba-be2e-7e12a5306a07)) + (segment (start 146.25 85.5) (end 145.865 85.885) (width 0.127) (layer "F.Cu") (net 57) (tstamp a4255402-1894-4d6b-9793-d0d8945e3c49)) + (segment (start 147.5 86) (end 147.135 86.365) (width 0.127) (layer "F.Cu") (net 58) (tstamp 155741fe-42a5-4376-ade1-6ca9134d8894)) + (segment (start 150 94.3375) (end 150 86.75) (width 0.127) (layer "F.Cu") (net 58) (tstamp 53ee32f6-5689-4c61-94b9-1281695f8bbd)) + (segment (start 147.135 86.365) (end 147.135 88.35) (width 0.127) (layer "F.Cu") (net 58) (tstamp 626d5fad-6fb7-4252-89dc-35b1a8708e20)) + (segment (start 149.25 86) (end 147.5 86) (width 0.127) (layer "F.Cu") (net 58) (tstamp 6ffb2387-f819-425c-b7f3-65a6f56e8db5)) + (segment (start 150 86.75) (end 149.25 86) (width 0.127) (layer "F.Cu") (net 58) (tstamp edf10c2a-8927-4590-acfd-a7a88b4c18ea)) + (segment (start 147.5875 106.75) (end 136.6625 106.75) (width 0.127) (layer "F.Cu") (net 59) (tstamp 725a4308-08a0-4ab3-a54a-e20324290817)) + (segment (start 147.5875 106.25) (end 136.6625 106.25) (width 0.127) (layer "F.Cu") (net 60) (tstamp dcfba783-78eb-4d63-b912-6bdb64d3e2c1)) + (segment (start 147.5875 105.75) (end 136.6625 105.75) (width 0.127) (layer "F.Cu") (net 61) (tstamp 6b6e094e-0d47-499f-8068-6c13a4af77f0)) + (segment (start 147.5875 105.25) (end 136.6625 105.25) (width 0.127) (layer "F.Cu") (net 62) (tstamp 0e4b6a97-4f4b-4b22-9cc9-6e6f4731bf79)) + (segment (start 147.5875 104.25) (end 146.25 104.25) (width 0.127) (layer "F.Cu") (net 63) (tstamp d3ff609d-17ac-4880-83d7-cc8e08692e93)) + (segment (start 146.25 104.25) (end 145.75 104.75) (width 0.127) (layer "F.Cu") (net 63) (tstamp d765128f-4488-4bc8-ad23-dd0adbe34c7b)) + (segment (start 145.75 104.75) (end 136.6625 104.75) (width 0.127) (layer "F.Cu") (net 63) (tstamp d7bd5be3-dba1-4e0c-aa38-cb512e655d9b)) + (segment (start 146.25 103.25) (end 145.25 104.25) (width 0.127) (layer "F.Cu") (net 64) (tstamp 5363e7d0-935f-480a-9e62-b9a099c8707a)) + (segment (start 147.5875 103.25) (end 146.25 103.25) (width 0.127) (layer "F.Cu") (net 64) (tstamp 88fbee1c-5702-4324-a344-aa103175b579)) + (segment (start 145.25 104.25) (end 136.6625 104.25) (width 0.127) (layer "F.Cu") (net 64) (tstamp afc295d3-0905-4d7f-b3fe-be341d72067a)) + (segment (start 146.25 102.75) (end 147.5875 102.75) (width 0.127) (layer "F.Cu") (net 65) (tstamp 3b0ac049-7636-43f4-9fe7-80353a74633d)) + (segment (start 136.6625 103.75) (end 145.25 103.75) (width 0.127) (layer "F.Cu") (net 65) (tstamp 67fd7eb6-30af-49b5-af7a-4cb803bee93b)) + (segment (start 145.25 103.75) (end 146.25 102.75) (width 0.127) (layer "F.Cu") (net 65) (tstamp c1e6d435-8893-4931-8b36-c755bfad106c)) + (segment (start 145.25 103.25) (end 136.6625 103.25) (width 0.127) (layer "F.Cu") (net 66) (tstamp b1fc05dc-9240-44c4-92a9-633e6b2099b6)) + (segment (start 146.25 102.25) (end 145.25 103.25) (width 0.127) (layer "F.Cu") (net 66) (tstamp dcad242e-1161-478e-b7e1-8ecf80e19566)) + (segment (start 147.5875 102.25) (end 146.25 102.25) (width 0.127) (layer "F.Cu") (net 66) (tstamp e60edf71-ad2f-40c8-88e0-4505955cce14)) + (segment (start 146.25 101.75) (end 147.5875 101.75) (width 0.127) (layer "F.Cu") (net 67) (tstamp 2becfc0d-c4d2-4323-ab65-aa2b6b68b4f7)) + (segment (start 136.6625 102.75) (end 145.25 102.75) (width 0.127) (layer "F.Cu") (net 67) (tstamp 4322cb13-dc96-47c2-b06b-2d7104a8ef02)) + (segment (start 145.25 102.75) (end 146.25 101.75) (width 0.127) (layer "F.Cu") (net 67) (tstamp 60e3d398-bc5f-4609-8292-9041d05b933c)) + (segment (start 143.5 101.25) (end 147.5875 101.25) (width 0.127) (layer "F.Cu") (net 68) (tstamp 1bd9e2be-2008-4712-99c8-4adf39b41f5f)) + (segment (start 135.25 98.5) (end 135.5 98.25) (width 0.127) (layer "F.Cu") (net 68) (tstamp 4b3e83ad-be63-4859-a0d5-4f5635c3a7a0)) + (segment (start 135.25 99.8375) (end 135.25 98.5) (width 0.127) (layer "F.Cu") (net 68) (tstamp b39d45b8-1373-4a27-b1b6-81283302ce06)) + (segment (start 140.5 98.25) (end 143.5 101.25) (width 0.127) (layer "F.Cu") (net 68) (tstamp c696b27c-7e9e-4c29-97aa-a362d47eff8f)) + (segment (start 135.5 98.25) (end 140.5 98.25) (width 0.127) (layer "F.Cu") (net 68) (tstamp ebb19c5b-ce3e-47a3-833a-2980c00aea18)) + (segment (start 135.25352 97.99648) (end 140.74648 97.99648) (width 0.127) (layer "F.Cu") (net 69) (tstamp 36620ff1-884f-4773-a29e-caf190423b77)) + (segment (start 134.75 98.5) (end 135.25352 97.99648) (width 0.127) (layer "F.Cu") (net 69) (tstamp 4810b1b1-b69d-46c2-a9f3-2848ffc38b70)) + (segment (start 140.74648 97.99648) (end 143.5 100.75) (width 0.127) (layer "F.Cu") (net 69) (tstamp 67f10f9f-abb7-4f2e-9c8d-449ecc485482)) + (segment (start 143.5 100.75) (end 147.5875 100.75) (width 0.127) (layer "F.Cu") (net 69) (tstamp d25a7069-0293-4085-837d-aac29ec6eaef)) + (segment (start 134.75 99.8375) (end 134.75 98.5) (width 0.127) (layer "F.Cu") (net 69) (tstamp da5ab63a-60e4-4e9d-b103-371d5cb69b97)) + (segment (start 155.5 119.25) (end 161.25 125) (width 0.127) (layer "F.Cu") (net 70) (tstamp 1723719d-99a6-477e-995d-589945cdd526)) + (segment (start 155.5 115.6625) (end 155.5 119.25) (width 0.127) (layer "F.Cu") (net 70) (tstamp 7c364d8d-8483-45e5-9d26-29e85a0c649e)) + (via (at 161.25 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 70) (tstamp 79330170-24a4-4d49-a14f-3021b3782e27)) + (segment (start 162.5 131) (end 162.5 126.25) (width 0.127) (layer "B.Cu") (net 70) (tstamp 75eca2ed-9384-4fbb-acc3-854b65b2bd32)) + (segment (start 162.5 126.25) (end 161.25 125) (width 0.127) (layer "B.Cu") (net 70) (tstamp 7c9de9cf-dfda-4afb-af23-94cfb7055116)) + (segment (start 156.25 120.717064) (end 156.25 125) (width 0.127) (layer "F.Cu") (net 71) (tstamp 21669a22-4b06-45da-9d53-6c21fda21a18)) + (segment (start 154.5 115.6625) (end 154.5 118.967064) (width 0.127) (layer "F.Cu") (net 71) (tstamp be4dbb00-e5b9-4b1f-92a6-cc637830fa20)) + (segment (start 154.5 118.967064) (end 156.25 120.717064) (width 0.127) (layer "F.Cu") (net 71) (tstamp e9e6748c-33f8-4e49-a85f-72947d33481f)) + (via (at 156.25 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 71) (tstamp 8fc3f846-f2bb-48e0-90fd-271236dcaacb)) + (segment (start 157.5 126.25) (end 157.5 131) (width 0.127) (layer "B.Cu") (net 71) (tstamp 7cce64e4-36a8-4567-b586-2b31f3047171)) + (segment (start 157.5 126.25) (end 156.25 125) (width 0.127) (layer "B.Cu") (net 71) (tstamp 8f375703-e755-44a1-8f3a-31e7cb9148bd)) + (segment (start 153 111.25) (end 152.5 111.75) (width 0.127) (layer "F.Cu") (net 72) (tstamp 1d4a251a-1ba9-47b3-8c07-659f0cf91b4b)) + (segment (start 144.48592 111.76408) (end 144.48592 119.405548) (width 0.127) (layer "F.Cu") (net 72) (tstamp 2db69d5b-cb22-4f94-8445-3892dc152cab)) + (segment (start 152.5 111.75) (end 149.5 111.75) (width 0.127) (layer "F.Cu") (net 72) (tstamp 3f2e4813-8d42-4e1a-9f95-8a46ee32f298)) + (segment (start 156.475 85.725) (end 156.5 85.75) (width 0.127) (layer "F.Cu") (net 72) (tstamp 5f68128f-d82d-47ed-86b6-c04c8ae2b3e4)) + (segment (start 145 111.25) (end 144.48592 111.76408) (width 0.127) (layer "F.Cu") (net 72) (tstamp 6499845a-3b04-4d89-87ec-1ff7b3864d3b)) + (segment (start 147.5875 111.25) (end 145 111.25) (width 0.127) (layer "F.Cu") (net 72) (tstamp 85542706-fb8d-429d-bfb0-a0de9af0def2)) + (segment (start 149 111.25) (end 147.5875 111.25) (width 0.127) (layer "F.Cu") (net 72) (tstamp 9b5c0439-3104-4c75-9cf4-c571ee158f2c)) + (segment (start 135.75352 122.99648) (end 133.75 125) (width 0.127) (layer "F.Cu") (net 72) (tstamp a883e42a-38be-47f5-a084-eb868e29f23b)) + (segment (start 149.5 111.75) (end 149 111.25) (width 0.127) (layer "F.Cu") (net 72) (tstamp af834ceb-6d00-44d1-8abc-f55a9c3254c4)) + (segment (start 140.894988 122.99648) (end 135.75352 122.99648) (width 0.127) (layer "F.Cu") (net 72) (tstamp c9ad769d-213d-446e-a757-ea421c7a63bd)) + (segment (start 144.48592 119.405548) (end 140.894988 122.99648) (width 0.127) (layer "F.Cu") (net 72) (tstamp d6e613b5-1a13-4b6e-9bb0-3c219c9b4f44)) + (segment (start 155.1375 85.725) (end 156.475 85.725) (width 0.127) (layer "F.Cu") (net 72) (tstamp de1cc8c8-c8e3-451f-bd36-11ac1050d1d4)) + (via (at 156.5 85.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 72) (tstamp 1f694030-7fac-444f-bce2-f872400c5f74)) + (via (at 133.75 125) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 72) (tstamp d7539763-d7e6-413c-b9ec-1c105a5c16f1)) + (via (at 153 111.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 72) (tstamp f50bb398-27ad-40b2-bab5-d6115f1aa92e)) + (segment (start 153.99296 90.742959) (end 153.99296 88.25704) (width 0.127) (layer "B.Cu") (net 72) (tstamp 116c9e44-c622-430b-b3c9-66432c66315d)) + (segment (start 132.5 131) (end 132.5 126.5) (width 0.127) (layer "B.Cu") (net 72) (tstamp 417c3e50-16a5-40fa-bf11-3c7f78476020)) + (segment (start 132.5 126.5) (end 132.5 126.25) (width 0.127) (layer "B.Cu") (net 72) (tstamp 4b6d13ed-1578-47c3-a8a7-e0612bdd028d)) + (segment (start 132.5 126.25) (end 133.75 125) (width 0.127) (layer "B.Cu") (net 72) (tstamp 53d3a91e-6822-4a21-955d-75a6d2e15ccc)) + (segment (start 153 111.25) (end 155 109.25) (width 0.127) (layer "B.Cu") (net 72) (tstamp 5c3c383e-0fe8-4616-9389-45f3facccd84)) + (segment (start 155 109.25) (end 155 91.75) (width 0.127) (layer "B.Cu") (net 72) (tstamp e0c37a6d-5e22-486d-9677-1de26685b41f)) + (segment (start 153.99296 88.25704) (end 156.5 85.75) (width 0.127) (layer "B.Cu") (net 72) (tstamp ea75e369-36db-4fca-85f9-6d8143d29570)) + (segment (start 155 91.75) (end 153.99296 90.742959) (width 0.127) (layer "B.Cu") (net 72) (tstamp f804934d-388e-4286-8216-e2b31c58002d)) + (segment (start 144.73944 112.26056) (end 144.73944 119.51056) (width 0.127) (layer "F.Cu") (net 73) (tstamp 20ee78df-f883-4f9b-8aa4-ba319534b269)) + (segment (start 144.73944 119.51056) (end 141 123.25) (width 0.127) (layer "F.Cu") (net 73) (tstamp 2f7be62c-1ed2-4b10-b594-8a2cd071a683)) + (segment (start 141 123.25) (end 136.75 123.25) (width 0.127) (layer "F.Cu") (net 73) (tstamp 4b0c498d-1553-4ac7-8576-816a457e560a)) + (segment (start 135 125) (end 135 131) (width 0.127) (layer "F.Cu") (net 73) (tstamp 72e9ed89-f322-49fa-97c8-f9f9a0f8430c)) + (segment (start 147.5875 111.75) (end 145.25 111.75) (width 0.127) (layer "F.Cu") (net 73) (tstamp a95f08b5-aa2f-4e04-9cfb-32628c7fbbb1)) + (segment (start 145.25 111.75) (end 144.73944 112.26056) (width 0.127) (layer "F.Cu") (net 73) (tstamp e6744aff-5352-471b-8d7e-aac71297d805)) + (segment (start 136.75 123.25) (end 135 125) (width 0.127) (layer "F.Cu") (net 73) (tstamp f54c317c-154d-46e0-9790-22083df308f3)) + (segment (start 144.2324 119.300536) (end 140.789976 122.74296) (width 0.127) (layer "F.Cu") (net 74) (tstamp 09f50597-cb74-4833-9334-54bb279d07a7)) + (segment (start 147.5875 109.75) (end 145.75 109.75) (width 0.127) (layer "F.Cu") (net 74) (tstamp 0d5c0195-e48e-4581-ba90-acc01eca7361)) + (segment (start 132.5 125) (end 132.5 131) (width 0.127) (layer "F.Cu") (net 74) (tstamp 1e6644c7-d14e-46bc-ad65-f68527226dc2)) + (segment (start 134.75704 122.74296) (end 132.5 125) (width 0.127) (layer "F.Cu") (net 74) (tstamp 3a0d4a1c-7eb5-446a-884c-676b7ccd1149)) + (segment (start 145.75 109.75) (end 144.2324 111.2676) (width 0.127) (layer "F.Cu") (net 74) (tstamp 803cb213-6ea5-42cf-b57e-ae0800d2cfd3)) + (segment (start 144.2324 111.2676) (end 144.2324 119.300536) (width 0.127) (layer "F.Cu") (net 74) (tstamp d0073ba6-fffe-40f3-8bfb-979928866635)) + (segment (start 140.789976 122.74296) (end 134.75704 122.74296) (width 0.127) (layer "F.Cu") (net 74) (tstamp e0653644-2034-4474-ae1b-cdc3d62fbe35)) + (segment (start 168.9125 96.75) (end 190.6 96.75) (width 0.127) (layer "F.Cu") (net 75) (tstamp 696d63e9-301f-41dd-89ab-e2831fce97e0)) + (segment (start 194.85 101) (end 194.85 102.25) (width 0.127) (layer "F.Cu") (net 75) (tstamp 887fec78-b7c6-4389-b3f3-ca2be7bae5b3)) + (segment (start 190.6 96.75) (end 194.85 101) (width 0.127) (layer "F.Cu") (net 75) (tstamp ed4c51ce-0b78-4c79-9ca5-49f3fc9e70df)) + (segment (start 189.25352 97.00352) (end 193.25 101) (width 0.127) (layer "F.Cu") (net 76) (tstamp 54c6e21f-db09-4e66-a68f-ea2a1debe8ef)) + (segment (start 193.25 101) (end 193.25 102.25) (width 0.127) (layer "F.Cu") (net 76) (tstamp 6fd6a84f-2f8c-44db-aa4d-df45741e562d)) + (segment (start 168.9125 97.25) (end 170.25 97.25) (width 0.127) (layer "F.Cu") (net 76) (tstamp 720879cc-ea21-435e-a16c-68cbabdd1783)) + (segment (start 170.49648 97.00352) (end 189.25352 97.00352) (width 0.127) (layer "F.Cu") (net 76) (tstamp a98bb03e-f6b6-42e6-96b7-aab4b67118e9)) + (segment (start 170.25 97.25) (end 170.49648 97.00352) (width 0.127) (layer "F.Cu") (net 76) (tstamp b63224e8-0d1f-447d-adb8-cb1d2804523b)) + (segment (start 192.45 101) (end 192.45 102.25) (width 0.127) (layer "F.Cu") (net 77) (tstamp 16bf37f0-7cd3-4464-b423-602850f360c4)) + (segment (start 168.9125 97.75) (end 170.25704 97.75) (width 0.127) (layer "F.Cu") (net 77) (tstamp 1c9a8086-08c0-462d-81eb-66621a8e588f)) + (segment (start 170.25704 97.75) (end 170.75 97.25704) (width 0.127) (layer "F.Cu") (net 77) (tstamp 3a05b605-2825-43cb-a26e-350644d2cd0e)) + (segment (start 170.75 97.25704) (end 188.70704 97.25704) (width 0.127) (layer "F.Cu") (net 77) (tstamp 7fcff273-311f-4651-a947-640ca386e129)) + (segment (start 188.70704 97.25704) (end 192.45 101) (width 0.127) (layer "F.Cu") (net 77) (tstamp a3a16ec1-a73c-4f5a-98c1-d20ed76d3cc7)) + (segment (start 190.85 102.25) (end 190.85 101) (width 0.127) (layer "F.Cu") (net 78) (tstamp 0b3e695a-152f-4813-9eb3-0254c7c2b5da)) + (segment (start 190.85 101) (end 187.36056 97.51056) (width 0.127) (layer "F.Cu") (net 78) (tstamp 4be077f7-dcd5-4fb0-b2ac-72ef7833827a)) + (segment (start 187.36056 97.51056) (end 171 97.51056) (width 0.127) (layer "F.Cu") (net 78) (tstamp 609912c9-b92f-4cda-9245-4d83efab8548)) + (segment (start 171 97.51056) (end 170.26056 98.25) (width 0.127) (layer "F.Cu") (net 78) (tstamp c983c112-a5a4-439e-bc58-bc5b81603d7b)) + (segment (start 170.26056 98.25) (end 168.9125 98.25) (width 0.127) (layer "F.Cu") (net 78) (tstamp e8590bcc-483b-4bb8-8543-02d560445e32)) + (segment (start 186.81408 97.76408) (end 190.05 101) (width 0.127) (layer "F.Cu") (net 79) (tstamp 4189e94e-4fef-4c4a-8aa2-84f58867f101)) + (segment (start 171.25 97.76408) (end 186.81408 97.76408) (width 0.127) (layer "F.Cu") (net 79) (tstamp a513fcb8-62b4-480e-9629-c86ca5529089)) + (segment (start 168.9125 98.75) (end 170.26408 98.75) (width 0.127) (layer "F.Cu") (net 79) (tstamp d3538377-0138-40f0-ac23-deb5cc4b508f)) + (segment (start 170.26408 98.75) (end 171.25 97.76408) (width 0.127) (layer "F.Cu") (net 79) (tstamp e070e470-4972-4f29-978a-627c6e079628)) + (segment (start 190.05 101) (end 190.05 102.25) (width 0.127) (layer "F.Cu") (net 79) (tstamp ff429d28-9b9d-4f7a-bb3b-47c5bb65e34c)) + (segment (start 172.4824 98.0176) (end 185.4676 98.0176) (width 0.127) (layer "F.Cu") (net 80) (tstamp 1195c257-234b-4168-bd46-8834dbadfdfc)) + (segment (start 185.4676 98.0176) (end 188.45 101) (width 0.127) (layer "F.Cu") (net 80) (tstamp 1df768a3-9931-4694-b297-4f91d33abf45)) + (segment (start 188.45 101) (end 188.45 102.25) (width 0.127) (layer "F.Cu") (net 80) (tstamp a4bb89f5-5bb0-4b92-8567-a56dd9d3d71e)) + (segment (start 168.9125 100.25) (end 170.25 100.25) (width 0.127) (layer "F.Cu") (net 80) (tstamp ce4fac34-1bd7-4d54-848e-d501fe57d4fa)) + (segment (start 170.25 100.25) (end 172.4824 98.0176) (width 0.127) (layer "F.Cu") (net 80) (tstamp edd243cb-6fc7-4648-b703-86daa156c749)) + (segment (start 172.75 98.27112) (end 170.27112 100.75) (width 0.127) (layer "F.Cu") (net 81) (tstamp 0e41e171-1c55-426a-be06-8e11cd3f48d4)) + (segment (start 187.65 102.25) (end 187.65 101) (width 0.127) (layer "F.Cu") (net 81) (tstamp 2c168f1c-0ef7-4381-8609-0078d061cd4f)) + (segment (start 187.65 101) (end 184.92112 98.27112) (width 0.127) (layer "F.Cu") (net 81) (tstamp 42e96df3-a22e-4e16-9291-4142cc8852de)) + (segment (start 170.27112 100.75) (end 168.9125 100.75) (width 0.127) (layer "F.Cu") (net 81) (tstamp 77e65ee3-7982-4e2d-abc5-a8a4274cf11d)) + (segment (start 184.92112 98.27112) (end 172.75 98.27112) (width 0.127) (layer "F.Cu") (net 81) (tstamp d78020e7-2570-42e9-bb69-390c0eadcc05)) + (segment (start 170.25 101.25) (end 168.9125 101.25) (width 0.127) (layer "F.Cu") (net 82) (tstamp 211c92d8-4213-48bf-81e5-e3e469bafde3)) + (segment (start 172.97536 98.52464) (end 170.25 101.25) (width 0.127) (layer "F.Cu") (net 82) (tstamp 26f85f2e-4d03-49b1-8374-83293c4c50ee)) + (segment (start 183.57464 98.52464) (end 172.97536 98.52464) (width 0.127) (layer "F.Cu") (net 82) (tstamp abcecda9-13cd-44bc-a8c6-0eb426190537)) + (segment (start 186.05 102.25) (end 186.05 101) (width 0.127) (layer "F.Cu") (net 82) (tstamp be5fd1f5-3a63-49df-966a-164eb879d817)) + (segment (start 186.05 101) (end 183.57464 98.52464) (width 0.127) (layer "F.Cu") (net 82) (tstamp c388ac4b-2ba3-4253-960d-40af173a6759)) + (segment (start 168.9125 113.25) (end 170.25 113.25) (width 0.127) (layer "F.Cu") (net 83) (tstamp 0285a284-73a4-4d55-bcf6-36e2682dc20e)) + (segment (start 183.82816 110.27816) (end 186.05 112.5) (width 0.127) (layer "F.Cu") (net 83) (tstamp 4092ff0f-0465-4b92-b2b6-8f94e8255a0f)) + (segment (start 173.22184 110.27816) (end 183.82816 110.27816) (width 0.127) (layer "F.Cu") (net 83) (tstamp 71e7a388-6152-4245-9c74-06c641bd9b9c)) + (segment (start 170.25 113.25) (end 173.22184 110.27816) (width 0.127) (layer "F.Cu") (net 83) (tstamp edfe2fb6-9abb-4d4b-9866-348dc18ed1e9)) + (segment (start 186.05 112.5) (end 186.05 113.75) (width 0.127) (layer "F.Cu") (net 83) (tstamp fe74f5de-7723-482f-a83a-100fd5f47eb5)) + (segment (start 185.17464 110.02464) (end 187.65 112.5) (width 0.127) (layer "F.Cu") (net 84) (tstamp 649be00e-e896-494c-8f04-d9ffdf70d12a)) + (segment (start 187.65 112.5) (end 187.65 113.75) (width 0.127) (layer "F.Cu") (net 84) (tstamp 725e212f-d653-4189-9d64-394d036de9f3)) + (segment (start 170.25 112.75) (end 172.97536 110.02464) (width 0.127) (layer "F.Cu") (net 84) (tstamp 7a051655-bcc8-44fb-bccb-881644f00917)) + (segment (start 172.97536 110.02464) (end 185.17464 110.02464) (width 0.127) (layer "F.Cu") (net 84) (tstamp 9c826247-34c4-459d-a035-11f579f3b63c)) + (segment (start 168.9125 112.75) (end 170.25 112.75) (width 0.127) (layer "F.Cu") (net 84) (tstamp e3769a99-4725-4120-9708-45ed4a68f568)) + (segment (start 170.25 112.25) (end 172.72888 109.77112) (width 0.127) (layer "F.Cu") (net 85) (tstamp 91ff6677-36d9-4445-934a-ed18d2f95c38)) + (segment (start 168.9125 112.25) (end 170.25 112.25) (width 0.127) (layer "F.Cu") (net 85) (tstamp b4abe577-1b91-49b5-acbc-9573f7529726)) + (segment (start 172.72888 109.77112) (end 185.72112 109.77112) (width 0.127) (layer "F.Cu") (net 85) (tstamp cf7d1438-4178-4543-9a85-7d8a43a94230)) + (segment (start 188.45 112.5) (end 188.45 113.75) (width 0.127) (layer "F.Cu") (net 85) (tstamp db682fb5-b456-4add-8a45-1d849d5f6ae9)) + (segment (start 185.72112 109.77112) (end 188.45 112.5) (width 0.127) (layer "F.Cu") (net 85) (tstamp f307460f-3575-426a-b7f6-6a162630a933)) + (segment (start 187.0676 109.5176) (end 190.05 112.5) (width 0.127) (layer "F.Cu") (net 86) (tstamp bf1ccb55-e678-4f16-a1a2-dccbad7c6e6b)) + (segment (start 172.4824 109.5176) (end 187.0676 109.5176) (width 0.127) (layer "F.Cu") (net 86) (tstamp c6ec9a9e-bf29-4bda-9940-1b12f4b117ef)) + (segment (start 170.25 111.75) (end 172.4824 109.5176) (width 0.127) (layer "F.Cu") (net 86) (tstamp d1e5cc58-f775-4e79-b247-05d95d435163)) + (segment (start 190.05 112.5) (end 190.05 113.75) (width 0.127) (layer "F.Cu") (net 86) (tstamp dd7447c9-746c-4b04-b5ec-a5fea214f379)) + (segment (start 168.9125 111.75) (end 170.25 111.75) (width 0.127) (layer "F.Cu") (net 86) (tstamp ee25cc59-a763-4891-93ec-94d0737a5abd)) + (segment (start 190.85 113.75) (end 190.85 112.5) (width 0.127) (layer "F.Cu") (net 87) (tstamp 22bd2c81-adce-4b38-a8b7-a3be9a11d7a4)) + (segment (start 190.85 112.5) (end 187.61408 109.26408) (width 0.127) (layer "F.Cu") (net 87) (tstamp 71fc3601-0970-4e65-bb0c-c6a98152502b)) + (segment (start 170.25 111.25) (end 168.9125 111.25) (width 0.127) (layer "F.Cu") (net 87) (tstamp 939d7fe4-6ced-4741-b4a6-26952c9b321e)) + (segment (start 172.23592 109.26408) (end 170.25 111.25) (width 0.127) (layer "F.Cu") (net 87) (tstamp baae9c54-5ff7-4628-8d39-d6f1d1826c96)) + (segment (start 187.61408 109.26408) (end 172.23592 109.26408) (width 0.127) (layer "F.Cu") (net 87) (tstamp f4afa1dc-8b76-4eb1-ba40-c19070c7416a)) + (segment (start 188.96056 109.01056) (end 192.45 112.5) (width 0.127) (layer "F.Cu") (net 88) (tstamp 115964be-734b-4b40-9343-369aad62e517)) + (segment (start 192.45 112.5) (end 192.45 113.75) (width 0.127) (layer "F.Cu") (net 88) (tstamp 19fa00e1-76f4-44fb-b78d-d891a221648c)) + (segment (start 170.98944 109.01056) (end 188.96056 109.01056) (width 0.127) (layer "F.Cu") (net 88) (tstamp 63353403-44d0-44c2-ab54-8d5d969b0923)) + (segment (start 168.9125 109.75) (end 170.25 109.75) (width 0.127) (layer "F.Cu") (net 88) (tstamp 977eb6f7-c65d-44cf-8804-fd742d3c66ec)) + (segment (start 170.25 109.75) (end 170.98944 109.01056) (width 0.127) (layer "F.Cu") (net 88) (tstamp f03c996f-4a25-4e7c-b9b6-728fda0bfa2f)) + (segment (start 168.9125 109.25) (end 170.25 109.25) (width 0.127) (layer "F.Cu") (net 89) (tstamp 2e3fe632-3a2f-4e38-ae4c-c2085856b4dc)) + (segment (start 170.74296 108.75704) (end 189.50704 108.75704) (width 0.127) (layer "F.Cu") (net 89) (tstamp 6b51fd22-67cb-4efe-b8b9-517da5097b32)) + (segment (start 193.25 112.5) (end 193.25 113.75) (width 0.127) (layer "F.Cu") (net 89) (tstamp 7823f899-6046-44be-b40c-d2c47ed1679f)) + (segment (start 170.25 109.25) (end 170.74296 108.75704) (width 0.127) (layer "F.Cu") (net 89) (tstamp 95cdeb61-cce7-4240-b2c9-788afef0a03b)) + (segment (start 189.50704 108.75704) (end 193.25 112.5) (width 0.127) (layer "F.Cu") (net 89) (tstamp e9607d22-5f49-4f25-b956-96ac12274a8a)) + (segment (start 170.49648 108.50352) (end 190.85352 108.50352) (width 0.127) (layer "F.Cu") (net 90) (tstamp 44815245-e981-4665-8f25-397cbb2203c5)) + (segment (start 194.85 112.5) (end 194.85 113.75) (width 0.127) (layer "F.Cu") (net 90) (tstamp 544d2651-7a98-4449-ae4d-8b59374d6e08)) + (segment (start 168.9125 108.75) (end 170.25 108.75) (width 0.127) (layer "F.Cu") (net 90) (tstamp b953fbb8-3927-4153-a8c2-e17d14e72814)) + (segment (start 190.85352 108.50352) (end 194.85 112.5) (width 0.127) (layer "F.Cu") (net 90) (tstamp bef1a6f9-5e4f-40ea-af07-e267ca6ff186)) + (segment (start 170.25 108.75) (end 170.49648 108.50352) (width 0.127) (layer "F.Cu") (net 90) (tstamp f414a468-9b29-4ab4-842c-602cb9340fd6)) + (segment (start 144.25 96.75) (end 144.75 97.25) (width 0.127) (layer "F.Cu") (net 91) (tstamp 030ba4da-5efa-49f0-adb3-eb3d1b31402c)) + (segment (start 144.25 93.25) (end 144.25 96.75) (width 0.127) (layer "F.Cu") (net 91) (tstamp 1584a658-d2a3-4026-a6db-834f4e56afd9)) + (segment (start 144.75 97.25) (end 147.5875 97.25) (width 0.127) (layer "F.Cu") (net 91) (tstamp 20b162fe-8a60-4c95-9069-2201ba4298ec)) + (segment (start 141.2 92.8) (end 143.8 92.8) (width 0.127) (layer "F.Cu") (net 91) (tstamp a63a4473-0b8a-4ab5-a2cf-6537532f1e15)) + (segment (start 143.8 92.8) (end 144.25 93.25) (width 0.127) (layer "F.Cu") (net 91) (tstamp d6692d1e-f116-4879-851f-130b86ec05b4)) + (segment (start 160.5 93.22867) (end 160.5 94.3375) (width 0.127) (layer "F.Cu") (net 92) (tstamp 675a5e9c-512d-4c46-b1d9-8e21c2f015db)) + (segment (start 162.98592 90.74275) (end 160.5 93.22867) (width 0.127) (layer "F.Cu") (net 92) (tstamp 93108d6f-e9b1-4f78-8267-4f4e0aad5d18)) + (segment (start 160.8625 87.675) (end 161.675 87.675) (width 0.127) (layer "F.Cu") (net 92) (tstamp 9a42740a-6f87-41f3-9068-39c484db9bd1)) + (segment (start 161.675 87.675) (end 162.98592 88.98592) (width 0.127) (layer "F.Cu") (net 92) (tstamp a6177261-f9f7-4732-8ebb-0128ce82b37d)) + (segment (start 162.98592 88.98592) (end 162.98592 90.74275) (width 0.127) (layer "F.Cu") (net 92) (tstamp ef8d2e8e-d863-47f6-843b-e79a377ac39d)) + (segment (start 163.49296 87.24296) (end 161.975 85.725) (width 0.127) (layer "F.Cu") (net 93) (tstamp 401fd579-5266-46c9-93b3-f91df02f7dd1)) + (segment (start 163.49296 90.952774) (end 163.49296 87.24296) (width 0.127) (layer "F.Cu") (net 93) (tstamp 7d3fe398-5b5e-4935-a732-69e3cd64892c)) + (segment (start 161.975 85.725) (end 160.8625 85.725) (width 0.127) (layer "F.Cu") (net 93) (tstamp b911b067-2598-40a2-b123-d295570c6a09)) + (segment (start 161.5 92.945734) (end 163.49296 90.952774) (width 0.127) (layer "F.Cu") (net 93) (tstamp c48dd31d-2934-4629-8db3-3a93282b8afa)) + (segment (start 161.5 94.3375) (end 161.5 92.945734) (width 0.127) (layer "F.Cu") (net 93) (tstamp fd1375d0-f732-4f17-9651-f44dc367e14d)) + (segment (start 162.75 85.75) (end 163.74648 86.74648) (width 0.127) (layer "F.Cu") (net 94) (tstamp 585296cb-e094-4f17-bfc6-74c83ab6fe77)) + (segment (start 163.74648 86.74648) (end 163.74648 91.057786) (width 0.127) (layer "F.Cu") (net 94) (tstamp 60a1a820-fe90-4d68-aa59-d369fee9cdca)) + (segment (start 162.75 87.25) (end 161.875 86.375) (width 0.127) (layer "F.Cu") (net 94) (tstamp 6b96e7d6-94bf-464e-9118-460cb0c730db)) + (segment (start 161.875 86.375) (end 160.8625 86.375) (width 0.127) (layer "F.Cu") (net 94) (tstamp 85c7f0e9-5846-413f-bfe4-68f6c57cc3b5)) + (segment (start 163.74648 91.057786) (end 162 92.804266) (width 0.127) (layer "F.Cu") (net 94) (tstamp eea52f35-514a-45ac-b6ae-364fc6bebdb7)) + (segment (start 162 92.804266) (end 162 94.3375) (width 0.127) (layer "F.Cu") (net 94) (tstamp f6e686dd-cd7a-484d-81fa-e828178c755a)) + (via (at 162.75 87.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 94) (tstamp 3ee374db-1849-40a2-b46b-e3d1ec9142e1)) + (via (at 162.75 85.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 94) (tstamp 8d9776f8-f209-4991-969b-fdbfe5e205ab)) + (segment (start 163.5 88) (end 162.75 87.25) (width 0.127) (layer "B.Cu") (net 94) (tstamp 8633769d-2db5-4ae5-8a98-b91085e05a01)) + (segment (start 168.925 88) (end 163.5 88) (width 0.127) (layer "B.Cu") (net 94) (tstamp cc50152f-2c56-4900-8603-c12a9cfd9fac)) + (segment (start 162.75 85.75) (end 162.75 87.25) (width 0.127) (layer "B.Cu") (net 94) (tstamp e2303f67-502a-4fea-9f13-65fc5a89eeed)) + (segment (start 160.8625 85.075) (end 162.825 85.075) (width 0.127) (layer "F.Cu") (net 95) (tstamp 5bd7bffb-f283-4912-80b6-e72464fd6968)) + (segment (start 162.825 85.075) (end 164 86.25) (width 0.127) (layer "F.Cu") (net 95) (tstamp 68daffa6-ae8b-409f-ba0c-d97b64264d8d)) + (segment (start 163 92.162798) (end 163 94.3375) (width 0.127) (layer "F.Cu") (net 95) (tstamp 81538dd4-90f5-4c2d-8f4c-cb59d1511be5)) + (segment (start 164 86.25) (end 164 91.162798) (width 0.127) (layer "F.Cu") (net 95) (tstamp c7c8e4c9-35ad-4f4b-8ee7-1e08fb5d36e6)) + (segment (start 164 91.162798) (end 163 92.162798) (width 0.127) (layer "F.Cu") (net 95) (tstamp d5ccca07-67bf-47ae-8531-45fee3efaa41)) + (segment (start 168.9125 101.75) (end 170.25 101.75) (width 0.127) (layer "F.Cu") (net 96) (tstamp 1d821cc3-1107-4629-aff5-ee7c328d6d09)) + (segment (start 170.25 101.75) (end 173.22184 98.77816) (width 0.127) (layer "F.Cu") (net 96) (tstamp 3131bd79-d526-42ec-a77c-d8e6b81b87c4)) + (segment (start 182.22816 98.77816) (end 184.45 101) (width 0.127) (layer "F.Cu") (net 96) (tstamp 3c57e760-549d-4843-8a1a-867dc584785f)) + (segment (start 173.22184 98.77816) (end 182.22816 98.77816) (width 0.127) (layer "F.Cu") (net 96) (tstamp 40ff5cba-3a18-4215-afe1-5c5f5e4448a1)) + (segment (start 184.45 101) (end 184.45 102.25) (width 0.127) (layer "F.Cu") (net 96) (tstamp 9b216e9c-f7e2-4089-a7b6-9000fcdf02d0)) + (segment (start 183.65 101) (end 183.65 102.25) (width 0.127) (layer "F.Cu") (net 97) (tstamp 4e0dcba9-afb3-4f96-9b4c-bbb370475317)) + (segment (start 168.9125 102.25) (end 170.25 102.25) (width 0.127) (layer "F.Cu") (net 97) (tstamp 4f7c8351-0e5c-4c3e-8ba1-150d698fe837)) + (segment (start 170.25 102.25) (end 173.46832 99.03168) (width 0.127) (layer "F.Cu") (net 97) (tstamp 9fcc7f32-6e30-45eb-9864-4ee15ed54a50)) + (segment (start 181.68168 99.03168) (end 183.65 101) (width 0.127) (layer "F.Cu") (net 97) (tstamp cc6793e6-733a-4721-93c6-dfe3278a15e9)) + (segment (start 173.46832 99.03168) (end 181.68168 99.03168) (width 0.127) (layer "F.Cu") (net 97) (tstamp e7f6b96b-c8bd-47d8-bc85-c5e292a0ddab)) + (segment (start 181.1352 99.2852) (end 182.85 101) (width 0.127) (layer "F.Cu") (net 98) (tstamp 178e0752-d77e-4e11-96c2-6d67dacb1e61)) + (segment (start 173.7148 99.2852) (end 181.1352 99.2852) (width 0.127) (layer "F.Cu") (net 98) (tstamp 1ec3438e-4661-4344-baee-0961ac716b52)) + (segment (start 182.85 101) (end 182.85 102.25) (width 0.127) (layer "F.Cu") (net 98) (tstamp 9bde7565-24ec-4f56-b53c-aa287d05f52e)) + (segment (start 168.9125 102.75) (end 170.25 102.75) (width 0.127) (layer "F.Cu") (net 98) (tstamp d2df172c-38bf-47ea-9ee5-a4d942be1f93)) + (segment (start 170.25 102.75) (end 173.7148 99.2852) (width 0.127) (layer "F.Cu") (net 98) (tstamp fd4c2a4a-7fde-4454-87dc-12d974de9202)) + (segment (start 170.25 103.25) (end 173.96128 99.53872) (width 0.127) (layer "F.Cu") (net 99) (tstamp 0b99d9c0-4ec5-4f0f-848f-3f75dbe08cfb)) + (segment (start 173.96128 99.53872) (end 180.58872 99.53872) (width 0.127) (layer "F.Cu") (net 99) (tstamp 8830c2ce-ecc3-4b27-a0eb-230502aca6ae)) + (segment (start 182.05 101) (end 182.05 102.25) (width 0.127) (layer "F.Cu") (net 99) (tstamp 9f183a5b-f2e2-4a50-bb8c-231c2df9ff5b)) + (segment (start 168.9125 103.25) (end 170.25 103.25) (width 0.127) (layer "F.Cu") (net 99) (tstamp be7eb725-d8df-414e-99b1-33adb993e4a7)) + (segment (start 180.58872 99.53872) (end 182.05 101) (width 0.127) (layer "F.Cu") (net 99) (tstamp c08fc658-63fe-4ccc-b7d3-9b0c20b4bf35)) + (segment (start 174.20776 99.79224) (end 180.04224 99.79224) (width 0.127) (layer "F.Cu") (net 100) (tstamp 4009367c-1d6d-460c-902f-d4fbfee9f30a)) + (segment (start 170.25 103.75) (end 174.20776 99.79224) (width 0.127) (layer "F.Cu") (net 100) (tstamp 40c99843-de4d-4481-9fe4-c6546f16ac4f)) + (segment (start 168.9125 103.75) (end 170.25 103.75) (width 0.127) (layer "F.Cu") (net 100) (tstamp 716c7140-6d74-4977-ab12-8a0485399eff)) + (segment (start 181.25 101) (end 181.25 102.25) (width 0.127) (layer "F.Cu") (net 100) (tstamp d25559c1-187b-491a-b98c-3fb2812069ef)) + (segment (start 180.04224 99.79224) (end 181.25 101) (width 0.127) (layer "F.Cu") (net 100) (tstamp e00fe895-c700-43da-a152-92aa27abefac)) + (segment (start 170.25 104.25) (end 174.45424 100.04576) (width 0.127) (layer "F.Cu") (net 101) (tstamp 8b145176-b45e-40b0-8fb7-30ae4c04ec13)) + (segment (start 174.45424 100.04576) (end 179.49576 100.04576) (width 0.127) (layer "F.Cu") (net 101) (tstamp c6de5783-51ab-4c92-82dc-dd6793118da3)) + (segment (start 179.49576 100.04576) (end 180.45 101) (width 0.127) (layer "F.Cu") (net 101) (tstamp c7e87021-12f4-4f1d-9027-c6769d7ba52c)) + (segment (start 180.45 101) (end 180.45 102.25) (width 0.127) (layer "F.Cu") (net 101) (tstamp da8ab3eb-a69c-4dba-8f8a-9c0e104531a9)) + (segment (start 168.9125 104.25) (end 170.25 104.25) (width 0.127) (layer "F.Cu") (net 101) (tstamp e7bfcebd-8c1d-41cc-933a-c4ca7fcf8061)) + (segment (start 168.9125 104.75) (end 170.25 104.75) (width 0.127) (layer "F.Cu") (net 102) (tstamp 327b988f-b9db-4dd2-a521-a6087a97ce61)) + (segment (start 178.94928 100.29928) (end 179.65 101) (width 0.127) (layer "F.Cu") (net 102) (tstamp aa70cb86-7191-40bc-9412-47b97a4f5dd7)) + (segment (start 170.25 104.75) (end 174.70072 100.29928) (width 0.127) (layer "F.Cu") (net 102) (tstamp abd3a3fa-2c61-430a-b899-9d26905e45ab)) + (segment (start 174.70072 100.29928) (end 178.94928 100.29928) (width 0.127) (layer "F.Cu") (net 102) (tstamp b50977f6-4f3d-4f89-8fe4-49339ddd675b)) + (segment (start 179.65 101) (end 179.65 102.25) (width 0.127) (layer "F.Cu") (net 102) (tstamp df78ca98-c73d-4d92-af2b-2e0603b886ee)) + (segment (start 175 108.25) (end 178.85 104.4) (width 0.127) (layer "F.Cu") (net 103) (tstamp 0a5f37d9-ce30-4c03-95d2-96d5c0511adc)) + (segment (start 178.85 104.4) (end 178.85 102.25) (width 0.127) (layer "F.Cu") (net 103) (tstamp 6a142cae-df67-4daa-aa6d-e02f311f3e89)) + (segment (start 168.9125 108.25) (end 175 108.25) (width 0.127) (layer "F.Cu") (net 103) (tstamp f035b9db-f0d5-4461-b903-c95f83c3b0e1)) + (segment (start 170.49648 107.99648) (end 174.75352 107.99648) (width 0.127) (layer "F.Cu") (net 104) (tstamp a89b7dd3-4c06-43a4-8c6e-01f4d4074af2)) + (segment (start 168.9125 107.75) (end 170.25 107.75) (width 0.127) (layer "F.Cu") (net 104) (tstamp b38f0ef6-22b1-4b39-8b88-1a7f33e75689)) + (segment (start 178.05 104.7) (end 178.05 102.25) (width 0.127) (layer "F.Cu") (net 104) (tstamp b89beb74-d1bd-48bf-8741-60f1e6c4f307)) + (segment (start 170.25 107.75) (end 170.49648 107.99648) (width 0.127) (layer "F.Cu") (net 104) (tstamp dc015050-a45a-4ce9-9c4e-93ae0c078f5e)) + (segment (start 174.75352 107.99648) (end 178.05 104.7) (width 0.127) (layer "F.Cu") (net 104) (tstamp dd328936-3808-43f2-a61d-6b3872d545de)) + (segment (start 168.9125 107.25) (end 170.25 107.25) (width 0.127) (layer "F.Cu") (net 105) (tstamp 428ed99f-01e7-41af-af63-761fa7ceee62)) + (segment (start 174.5 107.74296) (end 177.25 104.99296) (width 0.127) (layer "F.Cu") (net 105) (tstamp 5b60c6f6-d4e3-4f6a-a4eb-1d915b5e8481)) + (segment (start 170.74296 107.74296) (end 174.5 107.74296) (width 0.127) (layer "F.Cu") (net 105) (tstamp 7609435b-ac6e-4767-91ee-553fba71af2a)) + (segment (start 177.25 104.99296) (end 177.25 102.25) (width 0.127) (layer "F.Cu") (net 105) (tstamp 78af5975-e642-4785-aaab-5834f4d57665)) + (segment (start 170.25 107.25) (end 170.74296 107.74296) (width 0.127) (layer "F.Cu") (net 105) (tstamp 93be3f7d-ffec-4525-91e4-cf8a1f947148)) + (segment (start 170.25 106.75) (end 170.98944 107.48944) (width 0.127) (layer "F.Cu") (net 106) (tstamp 1989ef7b-99e2-4cd6-bb1c-c75b4963996f)) + (segment (start 168.9125 106.75) (end 170.25 106.75) (width 0.127) (layer "F.Cu") (net 106) (tstamp 34658318-d25d-4020-b4d3-7a72724557c4)) + (segment (start 170.98944 107.48944) (end 174.26056 107.48944) (width 0.127) (layer "F.Cu") (net 106) (tstamp 55499fab-fed0-485d-a5f4-9eebddacd601)) + (segment (start 174.26056 107.48944) (end 176.45 105.3) (width 0.127) (layer "F.Cu") (net 106) (tstamp 583d8b7a-07c8-46d3-a7f4-b37d93255100)) + (segment (start 176.45 105.3) (end 176.45 102.25) (width 0.127) (layer "F.Cu") (net 106) (tstamp a450f529-9554-4606-9628-d4bfefec9cfe)) + (segment (start 175.65 105.6) (end 175.65 102.25) (width 0.127) (layer "F.Cu") (net 107) (tstamp 44d2d81e-8f8c-4854-bd68-5df152dedf6b)) + (segment (start 174.01408 107.23592) (end 175.65 105.6) (width 0.127) (layer "F.Cu") (net 107) (tstamp 4cf1990c-0d14-4b34-96c5-31d7d228148c)) + (segment (start 170.25 105.75) (end 171.73592 107.23592) (width 0.127) (layer "F.Cu") (net 107) (tstamp 5df11f72-aed3-4546-b040-4de2ee9d5c0e)) + (segment (start 171.73592 107.23592) (end 174.01408 107.23592) (width 0.127) (layer "F.Cu") (net 107) (tstamp 6ec4469b-1488-4047-92a0-21fb0e63de03)) + (segment (start 168.9125 105.75) (end 170.25 105.75) (width 0.127) (layer "F.Cu") (net 107) (tstamp b1b5dc4e-ed22-4d52-8cee-33a12a64e304)) + (segment (start 175.65 115) (end 175.65 113.75) (width 0.127) (layer "F.Cu") (net 108) (tstamp 7567e22a-16db-4216-ab32-ff64d371a6a1)) + (segment (start 172.92816 117.72184) (end 175.65 115) (width 0.127) (layer "F.Cu") (net 108) (tstamp 91cee353-c655-4949-88cb-a26b02642fb2)) + (segment (start 166.5 115.6625) (end 166.5 117.5) (width 0.127) (layer "F.Cu") (net 108) (tstamp d35a12b3-d8fa-418a-b143-e867e2e21e04)) + (segment (start 166.5 117.5) (end 166.72184 117.72184) (width 0.127) (layer "F.Cu") (net 108) (tstamp e8788d18-fa3b-4818-a316-b4d2d899dd73)) + (segment (start 166.72184 117.72184) (end 172.92816 117.72184) (width 0.127) (layer "F.Cu") (net 108) (tstamp eb94f83d-7702-4fb9-a7a4-118b5f6017b6)) + (segment (start 176.45 115) (end 176.45 113.75) (width 0.127) (layer "F.Cu") (net 109) (tstamp 0b347d97-d046-4832-b0d8-96496be8ef65)) + (segment (start 173.47464 117.97536) (end 176.45 115) (width 0.127) (layer "F.Cu") (net 109) (tstamp 49989e76-2555-47f4-8c14-f5c46bf57f04)) + (segment (start 166 117.5) (end 166.47536 117.97536) (width 0.127) (layer "F.Cu") (net 109) (tstamp 93952602-2401-466a-9424-d39a7cb4dfd9)) + (segment (start 166.47536 117.97536) (end 173.47464 117.97536) (width 0.127) (layer "F.Cu") (net 109) (tstamp a440f8f1-40b4-4b58-b7e5-008557837371)) + (segment (start 166 115.6625) (end 166 117.5) (width 0.127) (layer "F.Cu") (net 109) (tstamp fb4a3ff8-9da0-48de-b315-8ec93f482cb8)) + (segment (start 165.5 115.6625) (end 165.5 117.5) (width 0.127) (layer "F.Cu") (net 110) (tstamp 012cdacd-c339-494b-9b1e-22346b5ed7a3)) + (segment (start 166.22888 118.22888) (end 174.02112 118.22888) (width 0.127) (layer "F.Cu") (net 110) (tstamp 1c345eff-f38d-49a1-acf4-f038e6e0d65e)) + (segment (start 174.02112 118.22888) (end 177.25 115) (width 0.127) (layer "F.Cu") (net 110) (tstamp 2531e1a9-1d7e-4a11-9bb4-eed4285b7c21)) + (segment (start 177.25 115) (end 177.25 113.75) (width 0.127) (layer "F.Cu") (net 110) (tstamp ce591662-cfed-4009-b508-b8125e3b82f6)) + (segment (start 165.5 117.5) (end 166.22888 118.22888) (width 0.127) (layer "F.Cu") (net 110) (tstamp d9d25104-4a84-4a1d-a4dd-fb7cadee1ad9)) + (segment (start 174.5676 118.4824) (end 178.05 115) (width 0.127) (layer "F.Cu") (net 111) (tstamp 02b09c18-8d7f-47fa-9cd1-1315bdec543c)) + (segment (start 165 115.6625) (end 165 117.5) (width 0.127) (layer "F.Cu") (net 111) (tstamp 28e788c5-519f-4224-8ea9-95559b04fa2a)) + (segment (start 165.9824 118.4824) (end 174.5676 118.4824) (width 0.127) (layer "F.Cu") (net 111) (tstamp 3fc932c0-e173-4b12-9a7d-64be4b15c1f6)) + (segment (start 178.05 115) (end 178.05 113.75) (width 0.127) (layer "F.Cu") (net 111) (tstamp 98c090c3-4e01-440f-a44c-49a3c7f5d929)) + (segment (start 165 117.5) (end 165.9824 118.4824) (width 0.127) (layer "F.Cu") (net 111) (tstamp acda14c2-ddd2-4a43-8f87-9893909f52ed)) + (segment (start 175.11408 118.73592) (end 178.85 115) (width 0.127) (layer "F.Cu") (net 112) (tstamp 083ada3c-6f9e-4bb7-ae37-727764079608)) + (segment (start 165.73592 118.73592) (end 175.11408 118.73592) (width 0.127) (layer "F.Cu") (net 112) (tstamp 94a1e924-2d86-4b5e-8488-be0a7ed8a78d)) + (segment (start 164.5 117.5) (end 165.73592 118.73592) (width 0.127) (layer "F.Cu") (net 112) (tstamp c7d5355b-266f-40c8-8016-8b737aed0199)) + (segment (start 178.85 115) (end 178.85 113.75) (width 0.127) (layer "F.Cu") (net 112) (tstamp d6ca12a5-0d1f-4802-9560-feacbab21d91)) + (segment (start 164.5 115.6625) (end 164.5 117.5) (width 0.127) (layer "F.Cu") (net 112) (tstamp e52d246d-ef6d-4ef7-8097-bd6229bc158e)) + (segment (start 163.5 115.6625) (end 163.5 117.5) (width 0.127) (layer "F.Cu") (net 113) (tstamp 36d168eb-49b5-4fd3-ab9e-c390455583d8)) + (segment (start 164.98944 118.98944) (end 175.66056 118.98944) (width 0.127) (layer "F.Cu") (net 113) (tstamp 8b050dd0-3e2e-4233-a41a-59bdc9eb8d4c)) + (segment (start 163.5 117.5) (end 164.98944 118.98944) (width 0.127) (layer "F.Cu") (net 113) (tstamp 9a2cf6c3-82c9-4307-9eef-b21d948a3db5)) + (segment (start 179.65 115) (end 179.65 113.75) (width 0.127) (layer "F.Cu") (net 113) (tstamp cb8d881b-bc58-4916-a84c-454c2c0d2dbb)) + (segment (start 175.66056 118.98944) (end 179.65 115) (width 0.127) (layer "F.Cu") (net 113) (tstamp ecc22619-c2c0-4dbb-9489-d80104330f23)) + (segment (start 176.20704 119.24296) (end 180.45 115) (width 0.127) (layer "F.Cu") (net 114) (tstamp 37c97630-04b8-42c9-8f86-f30a4fa2d14c)) + (segment (start 162.5 118) (end 163.74296 119.24296) (width 0.127) (layer "F.Cu") (net 114) (tstamp 504b58e1-08ad-4e76-b4ba-c662796d2c9b)) + (segment (start 180.45 115) (end 180.45 113.75) (width 0.127) (layer "F.Cu") (net 114) (tstamp cbf7d195-0e3d-4096-a4bf-87fdf4e31d0d)) + (segment (start 163.74296 119.24296) (end 176.20704 119.24296) (width 0.127) (layer "F.Cu") (net 114) (tstamp d2763c29-7398-43ee-bd67-417c46d70c96)) + (segment (start 162.5 115.6625) (end 162.5 118) (width 0.127) (layer "F.Cu") (net 114) (tstamp f2ffac4a-8190-4ec3-b3ff-6b0c47d330d0)) + (segment (start 176.75352 119.49648) (end 181.25 115) (width 0.127) (layer "F.Cu") (net 115) (tstamp 285b84bd-69e8-40b5-8798-918a55233493)) + (segment (start 163.49648 119.49648) (end 176.75352 119.49648) (width 0.127) (layer "F.Cu") (net 115) (tstamp 79741bd9-f0a0-4b29-84b2-5651c192a9c8)) + (segment (start 162 118) (end 163.49648 119.49648) (width 0.127) (layer "F.Cu") (net 115) (tstamp a67d6170-eecf-4c39-b5c4-0452cdbf461b)) + (segment (start 162 115.6625) (end 162 118) (width 0.127) (layer "F.Cu") (net 115) (tstamp ad0f55e0-1454-4c4e-af6b-42c6e563afa0)) + (segment (start 181.25 115) (end 181.25 113.75) (width 0.127) (layer "F.Cu") (net 115) (tstamp c7192f7b-d207-4d11-9d13-dc4a1e797e47)) + (segment (start 182.85 115) (end 182.85 113.75) (width 0.127) (layer "F.Cu") (net 116) (tstamp 5e06eb6a-661b-489d-bda3-3eedf5ccff38)) + (segment (start 182.85 115) (end 178.1 119.75) (width 0.127) (layer "F.Cu") (net 116) (tstamp 5e591575-014b-4383-914a-ac819d7605bd)) + (segment (start 161.5 118) (end 163.25 119.75) (width 0.127) (layer "F.Cu") (net 116) (tstamp 9a76483f-dc05-48f1-b0e7-831e01cfdb5f)) + (segment (start 178.1 119.75) (end 163.25 119.75) (width 0.127) (layer "F.Cu") (net 116) (tstamp c9c57618-3489-4a4f-98c0-f42cdd5fcadc)) + (segment (start 161.5 115.6625) (end 161.5 118) (width 0.127) (layer "F.Cu") (net 116) (tstamp f9bc593b-3d8d-4f64-9a62-35f97fb13576)) + (segment (start 183.65 112.5) (end 183.65 113.75) (width 0.127) (layer "F.Cu") (net 117) (tstamp 1eb279b8-cfeb-41b6-8510-73a87163ce55)) + (segment (start 173.46832 110.53168) (end 181.68168 110.53168) (width 0.127) (layer "F.Cu") (net 117) (tstamp 23481ef8-b19f-4041-9e74-a887112bb02d)) + (segment (start 168.9125 113.75) (end 170.25 113.75) (width 0.127) (layer "F.Cu") (net 117) (tstamp b3345f61-0aaa-47f9-af61-7278b199f4e9)) + (segment (start 181.68168 110.53168) (end 183.65 112.5) (width 0.127) (layer "F.Cu") (net 117) (tstamp ba5e69b3-7ed5-4f1d-ae19-f22bba8defaf)) + (segment (start 170.25 113.75) (end 173.46832 110.53168) (width 0.127) (layer "F.Cu") (net 117) (tstamp fac24ce0-2872-4239-b400-e5e32bad31ca)) + (segment (start 143.5 100.25) (end 147.5875 100.25) (width 0.127) (layer "F.Cu") (net 118) (tstamp 51f02493-5de5-4fa4-a94d-429696b6c56f)) + (segment (start 140.99296 97.74296) (end 143.5 100.25) (width 0.127) (layer "F.Cu") (net 118) (tstamp 714cfcf3-411e-45b2-ba4c-1f13ee3e10c3)) + (segment (start 135.00704 97.74296) (end 140.99296 97.74296) (width 0.127) (layer "F.Cu") (net 118) (tstamp dfde4d6c-ba6a-44b9-8a04-f3234033311f)) + (segment (start 134.25 98.5) (end 135.00704 97.74296) (width 0.127) (layer "F.Cu") (net 118) (tstamp e33f8932-01fb-490a-bccb-79f08f4dd219)) + (segment (start 134.25 99.8375) (end 134.25 98.5) (width 0.127) (layer "F.Cu") (net 118) (tstamp fcd26501-38a4-412a-9d56-515bc7a10ea6)) + (segment (start 133.75 98.5) (end 134.76056 97.48944) (width 0.127) (layer "F.Cu") (net 119) (tstamp 2c5f1f2e-3c9d-48a9-86aa-7d64b7c846df)) + (segment (start 142.5 98.75) (end 147.5875 98.75) (width 0.127) (layer "F.Cu") (net 119) (tstamp 663f11ae-540b-47a9-9887-04e4928060e9)) + (segment (start 141.23944 97.48944) (end 142.5 98.75) (width 0.127) (layer "F.Cu") (net 119) (tstamp 801afa99-53aa-4012-ae30-e1bb81bb906d)) + (segment (start 134.76056 97.48944) (end 141.23944 97.48944) (width 0.127) (layer "F.Cu") (net 119) (tstamp 973017eb-855a-45ae-9010-48d572afa8a1)) + (segment (start 133.75 99.8375) (end 133.75 98.5) (width 0.127) (layer "F.Cu") (net 119) (tstamp bdcb21c5-06bb-4f9c-aaad-9da95be6ae41)) + (segment (start 141.452982 97.23592) (end 142.467062 98.25) (width 0.127) (layer "F.Cu") (net 120) (tstamp 42488097-c0f3-4e90-acb4-b9e5fcc5fd89)) + (segment (start 134.51408 97.23592) (end 141.452982 97.23592) (width 0.127) (layer "F.Cu") (net 120) (tstamp 5f788257-ca37-486e-be68-7986c211ca50)) + (segment (start 142.467062 98.25) (end 147.5875 98.25) (width 0.127) (layer "F.Cu") (net 120) (tstamp 6d394d72-164e-4cec-8457-51a90c0b7f5e)) + (segment (start 133.25 98.5) (end 134.51408 97.23592) (width 0.127) (layer "F.Cu") (net 120) (tstamp a499b521-3612-42b7-8f98-28a71dba2af1)) + (segment (start 133.25 99.8375) (end 133.25 98.5) (width 0.127) (layer "F.Cu") (net 120) (tstamp be685d5d-a318-4fe2-9628-c3b924cde07d)) + (segment (start 132.75 98.5) (end 134.2676 96.9824) (width 0.127) (layer "F.Cu") (net 121) (tstamp 20c12285-6301-467b-82b1-79a5da32288c)) + (segment (start 142.521329 97.75) (end 147.5875 97.75) (width 0.127) (layer "F.Cu") (net 121) (tstamp 61ba6d29-b002-4b4b-894a-c939eec465c2)) + (segment (start 141.753729 96.9824) (end 142.521329 97.75) (width 0.127) (layer "F.Cu") (net 121) (tstamp 94a2169f-f118-4c24-ab5e-c24a97107699)) + (segment (start 134.2676 96.9824) (end 141.753729 96.9824) (width 0.127) (layer "F.Cu") (net 121) (tstamp cbceb92b-1f6b-4894-bd9b-2caa96b219be)) + (segment (start 132.75 99.8375) (end 132.75 98.5) (width 0.127) (layer "F.Cu") (net 121) (tstamp f125f21c-801e-4364-89ff-7e21caa0215f)) + (segment (start 192.5 87.75) (end 192.5 89) (width 0.127) (layer "F.Cu") (net 122) (tstamp 101b6d7d-1af4-4cd6-a28e-accfe98534f4)) + (segment (start 166.141469 90.5) (end 165.5 90.5) (width 0.127) (layer "F.Cu") (net 122) (tstamp 1a0e8dcb-fc05-4c4d-8664-0efb5c23904e)) + (segment (start 155.1375 87.675) (end 155.4625 88) (width 0.127) (layer "F.Cu") (net 122) (tstamp 3588d452-643e-4c2e-a2ba-6b42bf602f7f)) + (segment (start 192.01408 89.48592) (end 167.155549 89.48592) (width 0.127) (layer "F.Cu") (net 122) (tstamp 3b622150-65e1-4f81-a02c-b2d961a6acf5)) + (segment (start 192.5 89) (end 192.01408 89.48592) (width 0.127) (layer "F.Cu") (net 122) (tstamp 6b7345ec-7638-4606-95fc-02c5893a2ef6)) + (segment (start 155.4625 88) (end 156.985931 88) (width 0.127) (layer "F.Cu") (net 122) (tstamp 74c57f13-22f4-41eb-831e-8f1bc3f830e0)) + (segment (start 167.155549 89.48592) (end 166.141469 90.5) (width 0.127) (layer "F.Cu") (net 122) (tstamp b5f45711-68b5-48a9-aaf0-5ecea50c774c)) + (segment (start 155 90.25) (end 155 94.3375) (width 0.127) (layer "F.Cu") (net 122) (tstamp c0463d5d-f2b6-4a50-b82e-bbf6104f721f)) + (via (at 192.5 87.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 122) (tstamp 1cc52f5d-6e72-4f52-b4d0-96d4de4dc785)) + (via (at 165.5 90.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 122) (tstamp 3bfa2c7d-21b2-409d-b4fa-99cd93e6db97)) + (via (at 156.985931 88) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 122) (tstamp 507ad3cc-c793-4cbe-89ea-07baf30ffe0c)) + (via (at 155 90.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 122) (tstamp b6be7ae8-efe7-41ba-9d84-346a4d7c5053)) + (segment (start 159.25 90.5) (end 158 91.75) (width 0.127) (layer "B.Cu") (net 122) (tstamp 327412f3-b3d8-4cb2-8c4d-af28a6e76fbd)) + (segment (start 156.985931 88) (end 156.5 88) (width 0.127) (layer "B.Cu") (net 122) (tstamp 4d5a67cb-24ec-45f2-a400-cb87d2edcfd9)) + (segment (start 192.5 87.75) (end 197.925 87.75) (width 0.127) (layer "B.Cu") (net 122) (tstamp 534f10a9-69b8-4484-a577-f3357d5b3edb)) + (segment (start 156.075594 91.75) (end 155 90.674405) (width 0.127) (layer "B.Cu") (net 122) (tstamp 71c5cc8c-797d-4670-8d67-286d79427b59)) + (segment (start 155 90.674405) (end 155 90.25) (width 0.127) (layer "B.Cu") (net 122) (tstamp 7ceb66e3-8b9b-49af-bbae-503677f5d7f3)) + (segment (start 165.5 90.5) (end 159.25 90.5) (width 0.127) (layer "B.Cu") (net 122) (tstamp 81dd56ac-522d-47a8-9b70-8f3906b0b913)) + (segment (start 155 89.5) (end 155 90.25) (width 0.127) (layer "B.Cu") (net 122) (tstamp d912f4e0-8f25-4236-8268-dda4048ce7f1)) + (segment (start 158 91.75) (end 156.075594 91.75) (width 0.127) (layer "B.Cu") (net 122) (tstamp ec349236-7288-4aa7-a1f4-62cd8d1ca43e)) + (segment (start 156.5 88) (end 155 89.5) (width 0.127) (layer "B.Cu") (net 122) (tstamp f4cbf740-2b73-4e5d-b29e-f6531f3cb8c2)) + (segment (start 142.9648 109.5) (end 142.9648 108.7852) (width 0.127) (layer "F.Cu") (net 123) (tstamp 0b105dc7-5a90-4740-ad34-e83153f60b6b)) + (segment (start 144.5 107.25) (end 147.5875 107.25) (width 0.127) (layer "F.Cu") (net 123) (tstamp 30db6241-d323-4888-be78-1ac525750d3d)) + (segment (start 142.4648 110) (end 142.9648 109.5) (width 0.127) (layer "F.Cu") (net 123) (tstamp 69434251-1f72-49a1-bea8-07a2faa4f471)) + (segment (start 142.9648 108.7852) (end 144.5 107.25) (width 0.127) (layer "F.Cu") (net 123) (tstamp 8a6f3234-1d29-4685-a956-7e6a17e6c5ed)) + (segment (start 141 110) (end 142.4648 110) (width 0.127) (layer "F.Cu") (net 123) (tstamp a1d00cd0-731d-48b4-b99e-b104cddd0065)) + (segment (start 141 113) (end 142.71832 113) (width 0.127) (layer "F.Cu") (net 124) (tstamp 50d810a4-964f-4e7a-abcb-544ef87fc914)) + (segment (start 142.71832 113) (end 143.21832 112.5) (width 0.127) (layer "F.Cu") (net 124) (tstamp 642b1d13-7251-498d-8513-ffe596e7f64a)) + (segment (start 144.75 107.75) (end 147.5875 107.75) (width 0.127) (layer "F.Cu") (net 124) (tstamp 74ecf149-cc35-4150-8b9a-fcf24f865b97)) + (segment (start 143.21832 112.5) (end 143.21832 109.28168) (width 0.127) (layer "F.Cu") (net 124) (tstamp 753c4e13-21e0-4dc0-9cfc-7cc6137d4d44)) + (segment (start 143.21832 109.28168) (end 144.75 107.75) (width 0.127) (layer "F.Cu") (net 124) (tstamp af66518f-af54-48c0-b506-27977596c4f8)) + (segment (start 132.25 98.5) (end 131.75 98) (width 0.127) (layer "F.Cu") (net 125) (tstamp 2ab95fb0-5a22-43d6-8926-6bc4a10e4f69)) + (segment (start 132.25 98.5) (end 132.25 99.8375) (width 0.127) (layer "F.Cu") (net 125) (tstamp 2fb98d10-3c0b-4ba7-92f1-4489a0c21bef)) + (segment (start 124.75 99.5) (end 123.325 99.5) (width 0.127) (layer "F.Cu") (net 125) (tstamp 6add9d25-1bd5-42ae-95bb-4b8b102dfda2)) + (segment (start 142.72888 96.72888) (end 134.02112 96.72888) (width 0.127) (layer "F.Cu") (net 125) (tstamp 6dc02908-35bf-431c-9378-ec745c181c5b)) + (segment (start 134.02112 96.72888) (end 132.25 98.5) (width 0.127) (layer "F.Cu") (net 125) (tstamp 745e03b2-6f66-423f-b515-d6677a63a6ae)) + (segment (start 123.325 101.25) (end 123.325 99.5) (width 0.127) (layer "F.Cu") (net 125) (tstamp 7fab1be2-c41b-4ec1-a0a3-a02fef313c3b)) + (segment (start 145.75 96.75) (end 147.5875 96.75) (width 0.127) (layer "F.Cu") (net 125) (tstamp a16e5d4f-210c-4f7d-859e-c2b5c7252c22)) + (segment (start 142.75 96.75) (end 142.72888 96.72888) (width 0.127) (layer "F.Cu") (net 125) (tstamp e4c8021f-a1a1-470a-ad93-5ee52cc09ff3)) + (via (at 145.75 96.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 125) (tstamp 0908dee1-fc33-40d4-b59b-cddba9b6ca30)) + (via (at 124.75 99.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 125) (tstamp 8833d699-eb56-4105-832f-ac45aeac84aa)) + (via (at 131.75 98) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 125) (tstamp 9b7df4c4-0f11-4dba-9fa5-f9d5eefc0359)) + (via (at 142.75 96.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 125) (tstamp a5a697c4-eec6-4d5e-9753-0e307b570b0b)) + (segment (start 130.25 97.25) (end 129.25 97.25) (width 0.127) (layer "B.Cu") (net 125) (tstamp 10953116-0ebe-4dcb-93e7-fe3082da17db)) + (segment (start 127 99.5) (end 124.75 99.5) (width 0.127) (layer "B.Cu") (net 125) (tstamp 33806498-2184-4d5b-af0f-333d399ed0d5)) + (segment (start 129.25 97.25) (end 127 99.5) (width 0.127) (layer "B.Cu") (net 125) (tstamp 4186663f-291a-4e7b-9a36-72a50650a1cb)) + (segment (start 131.75 98) (end 131 98) (width 0.127) (layer "B.Cu") (net 125) (tstamp 9a9ac7ee-0a9e-4b5e-ba71-6c726ac64f0c)) + (segment (start 142.75 96.75) (end 145.75 96.75) (width 0.127) (layer "B.Cu") (net 125) (tstamp a624dd0c-f5ca-42fd-b5cc-c5f4ebf6da8e)) + (segment (start 131 98) (end 130.25 97.25) (width 0.127) (layer "B.Cu") (net 125) (tstamp bfc972f2-37bc-4bb5-8ed2-141f8e12ac79)) + (segment (start 131.716059 93.449479) (end 132.050521 93.449479) (width 0.127) (layer "F.Cu") (net 126) (tstamp 18bae09e-f21a-445c-8059-06edc20af087)) + (segment (start 132.688501 108.101001) (end 132.75 108.1625) (width 0.127) (layer "F.Cu") (net 126) (tstamp 358f0734-bc28-4679-abbb-aec7bdc3b358)) + (segment (start 106.75 92.25) (end 107 92.5) (width 0.127) (layer "F.Cu") (net 126) (tstamp 785e476f-5f7b-4110-9229-71cd8b163584)) + (segment (start 132.925 106.5) (end 132.688501 106.736499) (width 0.127) (layer "F.Cu") (net 126) (tstamp 7872d963-08a7-4828-a581-1472f6f1eb89)) + (segment (start 106.75 92.75) (end 105.25 92.75) (width 0.127) (layer "F.Cu") (net 126) (tstamp 9727eb1c-fbd6-4bce-ae5c-e3e67c104e8f)) + (segment (start 105.25 92.25) (end 106.75 92.25) (width 0.127) (layer "F.Cu") (net 126) (tstamp bcfcf081-4e47-493b-bb53-a788d8ec07e9)) + (segment (start 109.707773 92.6865) (end 130.95308 92.6865) (width 0.127) (layer "F.Cu") (net 126) (tstamp c5c59592-7385-475a-ac1c-b31c6416a85a)) + (segment (start 109.521273 92.5) (end 109.707773 92.6865) (width 0.127) (layer "F.Cu") (net 126) (tstamp c68035bf-fb22-42dc-a9a1-42e29c5ae0d7)) + (segment (start 107 92.5) (end 106.75 92.75) (width 0.127) (layer "F.Cu") (net 126) (tstamp db32eb4e-fe2e-4d18-adc6-3186496ec054)) + (segment (start 107 92.5) (end 109.521273 92.5) (width 0.127) (layer "F.Cu") (net 126) (tstamp dee1ff6a-bce3-4f26-9aec-740a71199589)) + (segment (start 130.95308 92.6865) (end 131.716059 93.449479) (width 0.127) (layer "F.Cu") (net 126) (tstamp e1c11d1e-9592-4531-b0e8-2e0867661c95)) + (segment (start 132.688501 106.736499) (end 132.688501 108.101001) (width 0.127) (layer "F.Cu") (net 126) (tstamp e38054e7-d303-408a-9eec-9ed67ce1c2b6)) + (via (at 132.050521 93.449479) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 126) (tstamp 2f3582ca-8bfe-4677-a0cc-9236df067f55)) + (via (at 132.925 106.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 126) (tstamp 676d6f27-9918-4798-bbe6-38d8c480590c)) + (segment (start 132.688501 106.263501) (end 132.688501 94.421921) (width 0.127) (layer "B.Cu") (net 126) (tstamp 4a1f485b-8cf6-41b7-89b1-756a2a337ad9)) + (segment (start 132.050521 93.783941) (end 132.050521 93.449479) (width 0.127) (layer "B.Cu") (net 126) (tstamp 6b3c3255-54fc-4d8b-85bc-2235233f842b)) + (segment (start 132.925 106.5) (end 132.688501 106.263501) (width 0.127) (layer "B.Cu") (net 126) (tstamp 945bd9ab-b5a7-4b01-a8b9-c6c5742e8f24)) + (segment (start 132.688501 94.421921) (end 132.050521 93.783941) (width 0.127) (layer "B.Cu") (net 126) (tstamp bf88dceb-0397-4056-ba00-1ac0239edf15)) + (segment (start 108.9 93.25) (end 109.521273 93.25) (width 0.127) (layer "F.Cu") (net 127) (tstamp 13b7edb7-1577-4455-bfb2-99e97709faf1)) + (segment (start 109.707773 93.0635) (end 130.79692 93.0635) (width 0.127) (layer "F.Cu") (net 127) (tstamp 29796ac6-c0d2-42f2-a1b1-489b93e87181)) + (segment (start 108.9 93.25) (end 105.25 93.25) (width 0.127) (layer "F.Cu") (net 127) (tstamp 7326e675-baa8-4208-b08b-497dbb14f2e5)) + (segment (start 132.075 106.5) (end 132.311499 106.736499) (width 0.127) (layer "F.Cu") (net 127) (tstamp 7508d427-118c-4af1-a22d-87896f3f82c0)) + (segment (start 132.311499 108.101001) (end 132.25 108.1625) (width 0.127) (layer "F.Cu") (net 127) (tstamp 886b894e-6de0-4a55-a1ed-36db99eb4d88)) + (segment (start 130.79692 93.0635) (end 131.449479 93.716059) (width 0.127) (layer "F.Cu") (net 127) (tstamp ae14edc4-0f70-41fc-a626-576a014c4e6e)) + (segment (start 107.4 91.75) (end 105.25 91.75) (width 0.127) (layer "F.Cu") (net 127) (tstamp bc9c18b4-ccd7-4d4d-9e20-4ab25779a1ce)) + (segment (start 131.449479 93.716059) (end 131.449479 94.050521) (width 0.127) (layer "F.Cu") (net 127) (tstamp e363dab2-a764-4e06-81d2-b6abe4805f6f)) + (segment (start 109.521273 93.25) (end 109.707773 93.0635) (width 0.127) (layer "F.Cu") (net 127) (tstamp e53b1785-918f-41e6-8372-7ef3158e1de4)) + (segment (start 132.311499 106.736499) (end 132.311499 108.101001) (width 0.127) (layer "F.Cu") (net 127) (tstamp f5f8ee62-de0f-42ab-b5be-62609e8ec359)) + (via (at 108.9 93.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 127) (tstamp 891aa562-9df1-4ab8-8e10-aebef9c1ea4d)) + (via (at 131.449479 94.050521) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 127) (tstamp 9496964e-45f4-465d-9003-46ab0e06853e)) + (via (at 132.075 106.5) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 127) (tstamp edcbfb89-6d5e-473a-9e97-3c63f7c051ea)) + (via (at 107.4 91.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 127) (tstamp f4e7dac8-3c57-4151-ac97-49689f959ac4)) + (segment (start 131.783941 94.050521) (end 131.449479 94.050521) (width 0.127) (layer "B.Cu") (net 127) (tstamp 4b721557-2526-4836-8b49-59b3cecf3fcf)) + (segment (start 132.311499 106.263501) (end 132.311499 94.578079) (width 0.127) (layer "B.Cu") (net 127) (tstamp 63a878c8-e455-486b-938d-dedf0267d266)) + (segment (start 107.4 91.75) (end 108.9 93.25) (width 0.127) (layer "B.Cu") (net 127) (tstamp 828c6c9f-0696-49ac-94d4-80e6814f8480)) + (segment (start 132.311499 94.578079) (end 131.783941 94.050521) (width 0.127) (layer "B.Cu") (net 127) (tstamp 8c32b11f-9dff-43a9-a80e-da8bf1852e44)) + (segment (start 132.075 106.5) (end 132.311499 106.263501) (width 0.127) (layer "B.Cu") (net 127) (tstamp 954804b7-646a-444c-8040-323028c7f08c)) + (segment (start 199.575 87.75) (end 199.575 84.2875) (width 0.127) (layer "B.Cu") (net 128) (tstamp 24922b59-c574-4417-9ce9-95a18ce71f8c)) + (segment (start 199.575 84.2875) (end 199.5375 84.25) (width 0.127) (layer "B.Cu") (net 128) (tstamp 44851835-9020-4fec-889a-e9079e613c29)) + (segment (start 140 90) (end 143.75 90) (width 0.127) (layer "F.Cu") (net 129) (tstamp 02afcb8d-d32a-45bd-bbc3-ae0ff363d237)) + (segment (start 120.25 90) (end 119.75 89.5) (width 0.127) (layer "F.Cu") (net 129) (tstamp 12a784c9-b91f-4bbf-ad28-be3cf9bcf72d)) + (segment (start 127.5 90) (end 120.25 90) (width 0.127) (layer "F.Cu") (net 129) (tstamp 340e1794-c158-4100-98ac-11991a20658b)) + (segment (start 147.5875 93.8375) (end 147.5875 96.25) (width 0.127) (layer "F.Cu") (net 129) (tstamp 78256150-720d-4149-90f0-720f8c364837)) + (segment (start 143.75 90) (end 147.5875 93.8375) (width 0.127) (layer "F.Cu") (net 129) (tstamp 86de48fa-53ea-49ca-b980-531c1eb0fd8e)) + (segment (start 119.75 89.5) (end 119.75 88.75) (width 0.127) (layer "F.Cu") (net 129) (tstamp f5223ec0-9a7b-403a-aeba-f9f6aea37027)) + (via (at 140 90) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 129) (tstamp 301198e1-3275-4d74-95ec-2f50d08252f5)) + (via (at 127.5 90) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 129) (tstamp 39f7dcd2-d194-4c1b-837d-ac81acea3d77)) + (segment (start 138.75 90) (end 140 90) (width 0.127) (layer "B.Cu") (net 129) (tstamp 13e6718c-ec71-4a91-84a3-991a27c7786a)) + (segment (start 138.75 88.575) (end 138.75 90) (width 0.127) (layer "B.Cu") (net 129) (tstamp bb1e8ec1-7780-4803-a735-7612c6293d23)) + (segment (start 127.5 90) (end 138.75 90) (width 0.127) (layer "B.Cu") (net 129) (tstamp e3a8a59c-4515-446b-a0d8-a05fa9e20bea)) + (segment (start 141 116) (end 142.97184 116) (width 0.127) (layer "F.Cu") (net 133) (tstamp 140f3c51-9347-4b10-9448-8e6b70483969)) + (segment (start 145 108.25) (end 147.5875 108.25) (width 0.127) (layer "F.Cu") (net 133) (tstamp 3c5fd1e8-61fe-4561-8200-9d4ce5c13c6b)) + (segment (start 143.47184 109.77816) (end 145 108.25) (width 0.127) (layer "F.Cu") (net 133) (tstamp 67c3d879-df32-4141-846b-9e2ed0ee3926)) + (segment (start 143.47184 115.5) (end 143.47184 109.77816) (width 0.127) (layer "F.Cu") (net 133) (tstamp a495d064-6f1b-45ea-993e-b9f18a12ac25)) + (segment (start 142.97184 116) (end 143.47184 115.5) (width 0.127) (layer "F.Cu") (net 133) (tstamp a85da59a-bf1a-45a2-a0a8-e4b9e8e98dfd)) + (segment (start 163.23944 90.847762) (end 161 93.087202) (width 0.127) (layer "F.Cu") (net 134) (tstamp 0014be84-e80a-48a1-9822-c7c58b711e72)) + (segment (start 161.775 87.025) (end 163.23944 88.48944) (width 0.127) (layer "F.Cu") (net 134) (tstamp 4dd56f08-7237-455a-b3d1-4456003bbe5e)) + (segment (start 161 93.087202) (end 161 94.3375) (width 0.127) (layer "F.Cu") (net 134) (tstamp 55f03ca3-fb64-4e6b-9b0f-c8ab9095791b)) + (segment (start 160.8625 87.025) (end 161.775 87.025) (width 0.127) (layer "F.Cu") (net 134) (tstamp 6fb423b3-a32e-4299-b3aa-bf3ec0dbeffb)) + (segment (start 163.23944 88.48944) (end 163.23944 90.847762) (width 0.127) (layer "F.Cu") (net 134) (tstamp fa7112f7-1d6d-4fb2-9a8b-09b07ae1c41f)) + (segment (start 108.65 117) (end 110.275 115.375) (width 0.127) (layer "F.Cu") (net 136) (tstamp 11757172-12ed-49fb-a19f-8192ebf77b81)) + (segment (start 107.85 107.8) (end 107.85 110.6) (width 0.508) (layer "F.Cu") (net 136) (tstamp 3ee7e083-3496-459b-95ff-57b020826a20)) + (segment (start 112.8625 112.1375) (end 113.475 111.525) (width 0.508) (layer "F.Cu") (net 136) (tstamp 77a1dd40-49b3-4b43-86c5-1dc31de4ddd6)) + (segment (start 112.8625 113.025) (end 110.275 113.025) (width 0.508) (layer "F.Cu") (net 136) (tstamp 8d592bb8-5eb4-406e-a930-0fc89325e342)) + (segment (start 113.475 111.525) (end 114.75 111.525) (width 0.508) (layer "F.Cu") (net 136) (tstamp a170da10-dd14-4d9c-ba63-0fbc0c86125d)) + (segment (start 110.275 115.375) (end 110.275 113.025) (width 0.127) (layer "F.Cu") (net 136) (tstamp bb36515f-fb98-431b-8ca6-fb4aaf7d9e8f)) + (segment (start 112.8625 113.025) (end 112.8625 112.1375) (width 0.508) (layer "F.Cu") (net 136) (tstamp d076356e-5705-401b-898c-95610e81c32e)) + (segment (start 107.85 110.6) (end 110.275 113.025) (width 0.508) (layer "F.Cu") (net 136) (tstamp e9450ca0-9c44-41de-a282-df76ddc980d6)) + (segment (start 105.25 90.75) (end 108.175 90.75) (width 0.127) (layer "F.Cu") (net 137) (tstamp 090b4397-999f-43fe-8d8c-8d1974ec5b29)) + (segment (start 108.175 90.75) (end 109.175 89.75) (width 0.127) (layer "F.Cu") (net 137) (tstamp 409b76d6-06eb-45a6-bfd9-8ad97033f1fb)) + (segment (start 105.25 93.75) (end 108.175 93.75) (width 0.127) (layer "F.Cu") (net 139) (tstamp 855b2579-2f1a-4e4c-8eb4-cae81fcf3bfa)) + (segment (start 108.175 93.75) (end 109.175 94.75) (width 0.127) (layer "F.Cu") (net 139) (tstamp a4468c1a-d153-4941-af0e-2621c404055c)) + (segment (start 107.25 115.75) (end 107 116) (width 0.127) (layer "F.Cu") (net 141) (tstamp 0323cd81-2802-4eb5-8aa6-dd6a88d5d35e)) + (segment (start 108.25 114.5) (end 108.25 115.5) (width 0.127) (layer "F.Cu") (net 141) (tstamp 0df84b01-040d-42af-8889-f0a40b32ef6c)) + (segment (start 108 115.75) (end 107.25 115.75) (width 0.127) (layer "F.Cu") (net 141) (tstamp 363974e5-4df2-4b15-abe2-05335088b2de)) + (segment (start 107.1375 114.325) (end 108.075 114.325) (width 0.127) (layer "F.Cu") (net 141) (tstamp 77963130-8fd0-4201-a586-11c34c598dd7)) + (segment (start 108.25 115.5) (end 108 115.75) (width 0.127) (layer "F.Cu") (net 141) (tstamp c0b608e1-dcfb-4b56-bbe6-e7e8f3b290d6)) + (segment (start 107 117) (end 107 118.75) (width 0.127) (layer "F.Cu") (net 141) (tstamp c6b936a8-3979-4fcd-82c7-8122d6215e50)) + (segment (start 107 116) (end 107 117) (width 0.127) (layer "F.Cu") (net 141) (tstamp cd014350-feb9-4516-9a20-9a01a0c6a8b4)) + (segment (start 108.075 114.325) (end 108.25 114.5) (width 0.127) (layer "F.Cu") (net 141) (tstamp f240c20c-da4b-4be5-900d-f6bb3eb345bf)) + (segment (start 106.025 114.975) (end 105.75 115.25) (width 0.127) (layer "F.Cu") (net 142) (tstamp 1293cea5-c37a-48a4-b663-e9dcc16bdd15)) + (segment (start 107.1375 114.975) (end 106.025 114.975) (width 0.127) (layer "F.Cu") (net 142) (tstamp 4c240172-76ae-4d07-938a-f823286db9d7)) + (segment (start 105.75 120.25) (end 106 120.5) (width 0.127) (layer "F.Cu") (net 142) (tstamp 76055543-9511-4943-a60a-dcb2328860f0)) + (segment (start 106 120.5) (end 107 120.5) (width 0.127) (layer "F.Cu") (net 142) (tstamp 92298f22-8a0c-48d2-822f-678d1311bdfb)) + (segment (start 105.75 115.25) (end 105.75 120.25) (width 0.127) (layer "F.Cu") (net 142) (tstamp eb0c2a2e-9f97-49f7-8296-f0945e1937d4)) + (segment (start 121.675 110.25) (end 121.675 108.5) (width 0.127) (layer "F.Cu") (net 143) (tstamp 23886040-5769-421c-af27-2d43cf1f321b)) + (segment (start 123.475 106.7) (end 121.675 108.5) (width 0.127) (layer "F.Cu") (net 143) (tstamp 461c25be-20df-404e-98af-da09e66ebf91)) + (segment (start 123.6375 106.7) (end 123.475 106.7) (width 0.127) (layer "F.Cu") (net 143) (tstamp 4acd6835-a023-4732-82bc-ae179c966faf)) + (segment (start 124.1875 104.25) (end 123.6375 104.8) (width 0.127) (layer "F.Cu") (net 144) (tstamp 255a1622-5a0e-4e9d-83a1-286887fab9a5)) + (segment (start 126.5 106.75) (end 125.25 106.75) (width 0.127) (layer "F.Cu") (net 144) (tstamp 5863ec51-ce43-4e82-8259-b2a60a33e449)) + (segment (start 128.3375 104.25) (end 126.5 104.25) (width 0.127) (layer "F.Cu") (net 144) (tstamp 7213ef7f-cc4b-49d6-b9f8-2733bb39b020)) + (segment (start 125 108.25) (end 124.75 108.5) (width 0.127) (layer "F.Cu") (net 144) (tstamp 79538433-b5b1-4d57-9abf-849367639d4d)) + (segment (start 125.25 106.75) (end 125 107) (width 0.127) (layer "F.Cu") (net 144) (tstamp 9377961a-c1b1-4405-9264-0d7a5b3c5b3e)) + (segment (start 126.5 104.25) (end 124.1875 104.25) (width 0.127) (layer "F.Cu") (net 144) (tstamp c5990296-1f17-4cfe-bec8-c0b8d541ddbe)) + (segment (start 124.75 108.5) (end 123.325 108.5) (width 0.127) (layer "F.Cu") (net 144) (tstamp cba3fb90-7e2c-4627-90aa-09f1ad482297)) + (segment (start 125 107) (end 125 108.25) (width 0.127) (layer "F.Cu") (net 144) (tstamp d5b48164-02b6-4ad6-ab83-3e7ccd974fb8)) + (via (at 126.5 106.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 144) (tstamp 74c0b995-cf08-4e60-b3a7-82f1c0dd7856)) + (via (at 126.5 104.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 144) (tstamp a922f7ef-7752-4f33-b5a2-25e0946f7d09)) + (segment (start 127 104.25) (end 126.5 104.25) (width 0.127) (layer "B.Cu") (net 144) (tstamp 3cb1b254-cb97-4179-a80c-eb01f4b40635)) + (segment (start 126.5 106.75) (end 127 106.75) (width 0.127) (layer "B.Cu") (net 144) (tstamp 5b5c6be7-1164-41ff-b080-5d955a1e3f41)) + (segment (start 127.25 104.5) (end 127 104.25) (width 0.127) (layer "B.Cu") (net 144) (tstamp 61dc6460-43b7-4ed7-aea2-a23a40b07d9b)) + (segment (start 127 106.75) (end 127.25 106.5) (width 0.127) (layer "B.Cu") (net 144) (tstamp 6ba83bea-414a-4a97-ae12-d8f4ded11e62)) + (segment (start 127.25 106.5) (end 127.25 104.5) (width 0.127) (layer "B.Cu") (net 144) (tstamp bebf5032-f0d5-4f58-a3d4-7c2cb0bf9463)) + (segment (start 129.75 108.1625) (end 129.75 111.75) (width 0.127) (layer "F.Cu") (net 145) (tstamp 7cb7917a-e900-495b-8358-43ccdae8218c)) + (segment (start 129.75 111.75) (end 128.2 113.3) (width 0.127) (layer "F.Cu") (net 145) (tstamp ce038dc4-8eb7-4254-8282-5b9af2555947)) + (segment (start 119.55 104.8) (end 121.3625 104.8) (width 0.127) (layer "F.Cu") (net 149) (tstamp 3df03af8-c593-4d2f-a2f7-39256ee79813)) + (segment (start 128.3375 104.75) (end 125.75 104.75) (width 0.127) (layer "F.Cu") (net 149) (tstamp 496735ec-4616-48a8-99b0-b7a978a48ee7)) + (segment (start 119.5 104.75) (end 119.55 104.8) (width 0.127) (layer "F.Cu") (net 149) (tstamp 642ac597-a0c4-4a3d-80e5-dfb6632ae868)) + (via (at 119.5 104.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 149) (tstamp 775d32f4-b592-46c5-ab3b-f2734783b1f8)) + (via (at 125.75 104.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 149) (tstamp 79e17aea-e7a5-4e73-b879-4968ba532833)) + (segment (start 125.75 104.75) (end 119.5 104.75) (width 0.127) (layer "B.Cu") (net 149) (tstamp 428df413-6ee0-4f50-a22d-8af96445efc0)) + (segment (start 119.5 105.75) (end 121.3625 105.75) (width 0.127) (layer "F.Cu") (net 150) (tstamp 12a7488a-8c9d-49a3-b681-671c0bb82ece)) + (segment (start 126.5 105.25) (end 128.3375 105.25) (width 0.127) (layer "F.Cu") (net 150) (tstamp eb7b4453-0c75-4a8c-8a22-1b1bbfad83b1)) + (via (at 126.5 105.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 150) (tstamp 6447dc9b-ba31-4b19-8db4-1456898256ac)) + (via (at 119.5 105.75) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 150) (tstamp 91fa1a06-6400-4e5e-93cc-97702ab3ad2d)) + (segment (start 120 105.25) (end 119.5 105.75) (width 0.127) (layer "B.Cu") (net 150) (tstamp 5e27ca96-8710-41bb-9a58-ae8792de58d0)) + (segment (start 126.5 105.25) (end 120 105.25) (width 0.127) (layer "B.Cu") (net 150) (tstamp 95a27b62-6905-4959-be89-6ee113566bff)) + (segment (start 130.5 112.375) (end 130.75 112.125) (width 0.127) (layer "F.Cu") (net 154) (tstamp 0125c9c0-b575-4461-a1dc-a8834f6c640f)) + (segment (start 130.75 112.125) (end 130.75 108.1625) (width 0.127) (layer "F.Cu") (net 154) (tstamp cb8af670-931b-449a-9c99-bb1c5147ddf6)) + (segment (start 130.5 114.25) (end 130.5 112.375) (width 0.127) (layer "F.Cu") (net 154) (tstamp f2f8b4f3-3af4-4503-95ff-5dd68ae93971)) + (via (at 130.5 114.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 154) (tstamp 9e3984f5-9018-4922-8897-7fef7a6ca250)) + (segment (start 129.5 115.0375) (end 130.2125 115.0375) (width 0.127) (layer "B.Cu") (net 154) (tstamp 577350ca-8462-4653-855b-0e5ffcd79b1d)) + (segment (start 130.2125 115.0375) (end 130.5 114.75) (width 0.127) (layer "B.Cu") (net 154) (tstamp 7b9fcb1a-c23e-484f-9350-80cdfaf9ce5c)) + (segment (start 130.775 115.025) (end 130.5 114.75) (width 0.127) (layer "B.Cu") (net 154) (tstamp 9b8142f2-9424-4305-a747-dacb57bd3ebc)) + (segment (start 131.5 115.025) (end 130.775 115.025) (width 0.127) (layer "B.Cu") (net 154) (tstamp e59e19c4-4d8d-40e5-bfc1-51d80ffd6ab6)) + (segment (start 130.5 114.75) (end 130.5 114.25) (width 0.127) (layer "B.Cu") (net 154) (tstamp edd18626-6ecb-4dfb-96ee-afe16d21ba38)) + (segment (start 133.25 113) (end 133.25 108.1625) (width 0.127) (layer "F.Cu") (net 155) (tstamp c90adf02-1cce-4d7d-98f4-02c70324e98f)) + (segment (start 134.5 114.25) (end 133.25 113) (width 0.127) (layer "F.Cu") (net 155) (tstamp f317eaac-effe-400b-9891-3948b9e6588c)) + (via (at 134.5 114.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 155) (tstamp 08794f14-fc94-493f-8352-736ab4f2dd09)) + (segment (start 134.225 115.025) (end 134.5 114.75) (width 0.127) (layer "B.Cu") (net 155) (tstamp 0e5d7a54-e672-469c-9888-650d58cdc0ed)) + (segment (start 135.5 115.0375) (end 134.7875 115.0375) (width 0.127) (layer "B.Cu") (net 155) (tstamp 35ef7d3e-17f5-48d3-8fe4-9789278f3e50)) + (segment (start 134.7875 115.0375) (end 134.5 114.75) (width 0.127) (layer "B.Cu") (net 155) (tstamp 6fbab9c4-dc09-4f93-890d-607f90e83eeb)) + (segment (start 133.5 115.025) (end 134.225 115.025) (width 0.127) (layer "B.Cu") (net 155) (tstamp 90f58420-9930-4335-8790-538ba7525b80)) + (segment (start 134.5 114.75) (end 134.5 114.25) (width 0.127) (layer "B.Cu") (net 155) (tstamp 9b3c0988-8a1b-4922-80c0-9a0aee046cc0)) + (segment (start 128.3375 101.75) (end 130.75 101.75) (width 0.127) (layer "F.Cu") (net 156) (tstamp 0ddda16c-01a7-4543-8a38-949af0f38ef9)) + (segment (start 130.75 101.75) (end 131.25 102.25) (width 0.127) (layer "F.Cu") (net 156) (tstamp 5e6073e7-4fd6-461d-a890-eed16d9fcba0)) + (via (at 131.25 102.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 156) (tstamp efac694b-03f1-4a43-bfc0-35deb971cc67)) + (segment (start 131.25 102.25) (end 131.25 101.025) (width 0.127) (layer "B.Cu") (net 156) (tstamp 1db11040-7248-49a1-8114-0719a1f686ac)) + (segment (start 153.70243 85.075) (end 155.1375 85.075) (width 0.127) (layer "F.Cu") (net 157) (tstamp a97048b0-7da8-4de5-89e4-a10d691311d2)) + (segment (start 153.513715 85.263715) (end 153.70243 85.075) (width 0.127) (layer "F.Cu") (net 157) (tstamp d549f236-8466-4a85-a6c6-571ba1d08802)) + (via (at 153.513715 85.263715) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 157) (tstamp 296ae142-390f-4c5b-96e5-d9dc2caf5a0f)) + (segment (start 151.85243 86.925) (end 150.25 86.925) (width 0.127) (layer "B.Cu") (net 157) (tstamp 2e4c4491-c714-4d9c-8e40-76b2a9608091)) + (segment (start 153.513715 85.263715) (end 151.85243 86.925) (width 0.127) (layer "B.Cu") (net 157) (tstamp 2eb7acee-a9ec-4d09-81c0-c904dab176ff)) + (segment (start 169.5 83.25) (end 170.025 83.775) (width 0.127) (layer "F.Cu") (net 158) (tstamp 37a44675-7a94-4242-be68-434ffb2af10b)) + (segment (start 167.525 81.35) (end 168.75 81.35) (width 0.127) (layer "F.Cu") (net 158) (tstamp 38a4d116-91ca-4609-b50e-ba8a4c171522)) + (segment (start 169.5 82.1) (end 169.5 82.85) (width 0.127) (layer "F.Cu") (net 158) (tstamp 3d483296-5447-4eb7-8cc5-4660ba803749)) + (segment (start 170.025 83.775) (end 174.1375 83.775) (width 0.127) (layer "F.Cu") (net 158) (tstamp 6356cacc-2afa-494f-b561-a60ef27a1656)) + (segment (start 169.5 82.85) (end 169.5 83.25) (width 0.127) (layer "F.Cu") (net 158) (tstamp 9f999f87-b719-48b9-ab43-c7bc59c8d988)) + (segment (start 168.75 81.35) (end 169.5 82.1) (width 0.127) (layer "F.Cu") (net 158) (tstamp bb2a30e1-2825-46b9-97b5-6a8667b0a830)) + (segment (start 169.5 85) (end 170.075 84.425) (width 0.127) (layer "F.Cu") (net 159) (tstamp 12518026-b8fa-4b98-ab56-89af69764ac7)) + (segment (start 169.5 85.35) (end 169.5 85) (width 0.127) (layer "F.Cu") (net 159) (tstamp 473cdbd8-bb8f-4708-8563-e26b61fcc9d7)) + (segment (start 170.075 84.425) (end 174.1375 84.425) (width 0.127) (layer "F.Cu") (net 159) (tstamp 65d2dd29-d16c-4932-8055-eddcde68a904)) + (segment (start 169.5 86.1) (end 169.5 85.35) (width 0.127) (layer "F.Cu") (net 159) (tstamp 8c80ee96-255f-4704-8999-6b679592ef9f)) + (segment (start 168.75 86.85) (end 169.5 86.1) (width 0.127) (layer "F.Cu") (net 159) (tstamp bfca73ef-2b59-4f2b-89e2-692a749e2db9)) + (segment (start 167.525 86.85) (end 168.75 86.85) (width 0.127) (layer "F.Cu") (net 159) (tstamp c37ba1fc-ffa1-452e-85cd-45394d7ff891)) + (segment (start 128.3375 100.3375) (end 128.25 100.25) (width 0.127) (layer "F.Cu") (net 160) (tstamp 682f8067-41a9-454e-9348-b015137bcbad)) + (segment (start 128.3375 101.25) (end 128.3375 100.3375) (width 0.127) (layer "F.Cu") (net 160) (tstamp a51ca767-ac89-4eee-87a6-9408311dd554)) + (via (at 128.25 100.25) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 160) (tstamp b4b1454f-66f6-4754-bbfc-717847df75f5)) + (segment (start 128.725 100.25) (end 129.5 101.025) (width 0.127) (layer "B.Cu") (net 160) (tstamp 5b2072f2-74c8-495d-860b-cbf4d719d218)) + (segment (start 128.25 100.25) (end 128.725 100.25) (width 0.127) (layer "B.Cu") (net 160) (tstamp 82e503a2-53f0-4259-ab91-98d696fc2d74)) + (segment (start 131.75 112.125) (end 131.5 112.375) (width 0.127) (layer "F.Cu") (net 161) (tstamp 7deb5e8d-a637-4aa1-a98b-2ddf1fe6da9f)) + (segment (start 131.5 112.375) (end 131.5 113.425) (width 0.127) (layer "F.Cu") (net 161) (tstamp d77611b3-bf7b-4ccf-b44f-496dbc744d9f)) + (segment (start 131.75 108.1625) (end 131.75 112.125) (width 0.127) (layer "F.Cu") (net 161) (tstamp fd7674b3-e602-45f1-8b2f-b6da13389538)) + (segment (start 123.325 97.75) (end 128.75 97.75) (width 0.127) (layer "F.Cu") (net 162) (tstamp 0049e327-306d-4908-8595-8431bc9622c5)) + (segment (start 130.25 97.25) (end 130.75 97.75) (width 0.127) (layer "F.Cu") (net 162) (tstamp 84845655-a19f-4a77-aae7-740120de4562)) + (segment (start 128.75 97.75) (end 129.25 97.25) (width 0.127) (layer "F.Cu") (net 162) (tstamp a2495b53-fc43-4637-89e8-f714ed7bc40c)) + (segment (start 130.75 97.75) (end 130.75 99.8375) (width 0.127) (layer "F.Cu") (net 162) (tstamp af071f3c-47dd-4d48-b86f-b7d98ad49765)) + (segment (start 129.25 97.25) (end 130.25 97.25) (width 0.127) (layer "F.Cu") (net 162) (tstamp afd653bf-2ccb-4694-9795-1ef1a1d0e063)) + + (zone locked (net 46) (net_name "GND") (layers F&B.Cu) (tstamp 09c0a64f-d468-40b7-9cb4-647f93b03b47) (hatch edge 0.508) + (connect_pads (clearance 0.127)) + (min_thickness 0.127) (filled_areas_thickness no) + (fill yes (thermal_gap 0.127) (thermal_bridge_width 0.127)) + (polygon + (pts + (xy 200.9 131.5) + (xy 194.1 131.5) + (xy 194.1 125) + (xy 182.25 125) + (xy 182.25 127) + (xy 117.75 127) + (xy 117.75 125) + (xy 105.9 125) + (xy 105.9 131.5) + (xy 99.1 131.5) + (xy 99.1 77.7) + (xy 200.9 77.7) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 200.681694 77.918306) + (xy 200.7 77.9625) + (xy 200.7 96.9375) + (xy 200.681694 96.981694) + (xy 200.6375 97) + (xy 196.905877 97) + (xy 196.861589 96.999961) + (xy 196.861588 96.999961) + (xy 196.854551 96.999955) + (xy 196.848206 97.003002) + (xy 196.848205 97.003002) + (xy 196.839966 97.006958) + (xy 196.826812 97.011552) + (xy 196.811038 97.01515) + (xy 196.805532 97.019537) + (xy 196.805533 97.019537) + (xy 196.798565 97.025089) + (xy 196.786672 97.032549) + (xy 196.772295 97.039453) + (xy 196.767899 97.04495) + (xy 196.767898 97.044951) + (xy 196.762187 97.052092) + (xy 196.752327 97.061935) + (xy 196.739677 97.072015) + (xy 196.73662 97.078352) + (xy 196.736618 97.078355) + (xy 196.732749 97.086378) + (xy 196.725266 97.098261) + (xy 196.715306 97.110715) + (xy 196.713729 97.117572) + (xy 196.713727 97.117577) + (xy 196.711678 97.126489) + (xy 196.707062 97.139634) + (xy 196.700035 97.154202) + (xy 196.700029 97.161239) + (xy 196.700015 97.177201) + (xy 196.700014 97.177217) + (xy 196.7 97.177277) + (xy 196.7 97.194123) + (xy 196.699955 97.245449) + (xy 196.699993 97.245528) + (xy 196.7 97.245593) + (xy 196.7 98.694123) + (xy 196.699971 98.727705) + (xy 196.699955 98.745449) + (xy 196.703002 98.751794) + (xy 196.703002 98.751795) + (xy 196.706958 98.760034) + (xy 196.711552 98.773188) + (xy 196.71515 98.788962) + (xy 196.721648 98.797117) + (xy 196.725089 98.801435) + (xy 196.732549 98.813328) + (xy 196.739453 98.827705) + (xy 196.74495 98.832101) + (xy 196.744951 98.832102) + (xy 196.752092 98.837813) + (xy 196.761935 98.847673) + (xy 196.772015 98.860323) + (xy 196.778352 98.86338) + (xy 196.778355 98.863382) + (xy 196.786378 98.867251) + (xy 196.798261 98.874734) + (xy 196.810715 98.884694) + (xy 196.817572 98.886271) + (xy 196.817577 98.886273) + (xy 196.826489 98.888322) + (xy 196.839634 98.892938) + (xy 196.854202 98.899965) + (xy 196.875886 98.899984) + (xy 196.877201 98.899985) + (xy 196.877217 98.899986) + (xy 196.877277 98.9) + (xy 196.894123 98.9) + (xy 196.945192 98.900045) + (xy 196.945449 98.900045) + (xy 196.945528 98.900007) + (xy 196.945593 98.9) + (xy 199.1375 98.9) + (xy 199.181694 98.918306) + (xy 199.2 98.9625) + (xy 199.2 104.694123) + (xy 199.199967 104.732235) + (xy 199.199955 104.745449) + (xy 199.203002 104.751794) + (xy 199.203002 104.751795) + (xy 199.206958 104.760034) + (xy 199.211552 104.773188) + (xy 199.21515 104.788962) + (xy 199.219537 104.794467) + (xy 199.225089 104.801435) + (xy 199.232549 104.813328) + (xy 199.239453 104.827705) + (xy 199.24495 104.832101) + (xy 199.244951 104.832102) + (xy 199.252092 104.837813) + (xy 199.261935 104.847673) + (xy 199.272015 104.860323) + (xy 199.278352 104.86338) + (xy 199.278355 104.863382) + (xy 199.286378 104.867251) + (xy 199.298261 104.874734) + (xy 199.310715 104.884694) + (xy 199.317572 104.886271) + (xy 199.317577 104.886273) + (xy 199.326489 104.888322) + (xy 199.339634 104.892938) + (xy 199.354202 104.899965) + (xy 199.375886 104.899984) + (xy 199.377201 104.899985) + (xy 199.377217 104.899986) + (xy 199.377277 104.9) + (xy 199.394123 104.9) + (xy 199.445192 104.900045) + (xy 199.445449 104.900045) + (xy 199.445528 104.900007) + (xy 199.445593 104.9) + (xy 200.6375 104.9) + (xy 200.681694 104.918306) + (xy 200.7 104.9625) + (xy 200.7 131.2375) + (xy 200.681694 131.281694) + (xy 200.6375 131.3) + (xy 194.3625 131.3) + (xy 194.318306 131.281694) + (xy 194.3 131.2375) + (xy 194.3 128.289564) + (xy 196.241051 128.289564) + (xy 196.241386 128.292329) + (xy 196.267618 128.509108) + (xy 196.267619 128.509114) + (xy 196.267954 128.51188) + (xy 196.3338 128.725917) + (xy 196.436509 128.924912) + (xy 196.572833 129.102573) + (xy 196.574889 129.104444) + (xy 196.574891 129.104446) + (xy 196.736405 129.251413) + (xy 196.736409 129.251416) + (xy 196.738464 129.253286) + (xy 196.928167 129.372286) + (xy 196.930747 129.373323) + (xy 197.133361 129.454774) + (xy 197.133365 129.454775) + (xy 197.135944 129.455812) + (xy 197.248287 129.479077) + (xy 197.35298 129.500759) + (xy 197.352987 129.50076) + (xy 197.355228 129.501224) + (xy 197.412048 129.5045) + (xy 197.556819 129.5045) + (xy 197.558182 129.504378) + (xy 197.55819 129.504378) + (xy 197.720283 129.489911) + (xy 197.723051 129.489664) + (xy 197.846793 129.455812) + (xy 197.936366 129.431308) + (xy 197.936371 129.431306) + (xy 197.939051 129.430573) + (xy 198.141174 129.334166) + (xy 198.32303 129.203489) + (xy 198.324959 129.201499) + (xy 198.324963 129.201495) + (xy 198.476937 129.04467) + (xy 198.476938 129.044668) + (xy 198.478871 129.042674) + (xy 198.60377 128.856803) + (xy 198.693782 128.651752) + (xy 198.746059 128.434002) + (xy 198.754228 128.292329) + (xy 198.758789 128.213217) + (xy 198.758789 128.213213) + (xy 198.758949 128.210436) + (xy 198.741142 128.063286) + (xy 198.732382 127.990892) + (xy 198.732381 127.990886) + (xy 198.732046 127.98812) + (xy 198.6662 127.774083) + (xy 198.563491 127.575088) + (xy 198.530828 127.53252) + (xy 198.473129 127.457326) + (xy 198.427167 127.397427) + (xy 198.399773 127.3725) + (xy 198.263595 127.248587) + (xy 198.263591 127.248584) + (xy 198.261536 127.246714) + (xy 198.071833 127.127714) + (xy 197.92684 127.069427) + (xy 197.866639 127.045226) + (xy 197.866635 127.045225) + (xy 197.864056 127.044188) + (xy 197.751713 127.020923) + (xy 197.64702 126.999241) + (xy 197.647013 126.99924) + (xy 197.644772 126.998776) + (xy 197.587952 126.9955) + (xy 197.443181 126.9955) + (xy 197.441818 126.995622) + (xy 197.44181 126.995622) + (xy 197.296132 127.008624) + (xy 197.276949 127.010336) + (xy 197.194034 127.033019) + (xy 197.063634 127.068692) + (xy 197.063629 127.068694) + (xy 197.060949 127.069427) + (xy 196.858826 127.165834) + (xy 196.67697 127.296511) + (xy 196.675041 127.298501) + (xy 196.675037 127.298505) + (xy 196.58099 127.395554) + (xy 196.521129 127.457326) + (xy 196.39623 127.643197) + (xy 196.306218 127.848248) + (xy 196.253941 128.065998) + (xy 196.253781 128.068778) + (xy 196.25378 128.068783) + (xy 196.245613 128.210436) + (xy 196.241051 128.289564) + (xy 194.3 128.289564) + (xy 194.3 125.005877) + (xy 194.300039 124.961589) + (xy 194.300039 124.961588) + (xy 194.300045 124.954551) + (xy 194.294289 124.942564) + (xy 194.293042 124.939966) + (xy 194.288448 124.926812) + (xy 194.286415 124.917901) + (xy 194.28485 124.911038) + (xy 194.274911 124.898565) + (xy 194.26745 124.886671) + (xy 194.26734 124.886441) + (xy 194.260547 124.872295) + (xy 194.255049 124.867898) + (xy 194.247908 124.862187) + (xy 194.238065 124.852327) + (xy 194.233733 124.846891) + (xy 194.227985 124.839677) + (xy 194.221648 124.83662) + (xy 194.221645 124.836618) + (xy 194.213622 124.832749) + (xy 194.201738 124.825265) + (xy 194.194782 124.819702) + (xy 194.189285 124.815306) + (xy 194.182428 124.813729) + (xy 194.182423 124.813727) + (xy 194.173511 124.811678) + (xy 194.160366 124.807062) + (xy 194.16015 124.806958) + (xy 194.145798 124.800035) + (xy 194.124114 124.800016) + (xy 194.122799 124.800015) + (xy 194.122783 124.800014) + (xy 194.122723 124.8) + (xy 194.105877 124.8) + (xy 194.054808 124.799955) + (xy 194.054551 124.799955) + (xy 194.054472 124.799993) + (xy 194.054407 124.8) + (xy 189.555877 124.8) + (xy 189.504808 124.799955) + (xy 189.504551 124.799955) + (xy 189.504472 124.799993) + (xy 189.504407 124.8) + (xy 187.605877 124.8) + (xy 187.554808 124.799955) + (xy 187.554551 124.799955) + (xy 187.554472 124.799993) + (xy 187.554407 124.8) + (xy 182.255877 124.8) + (xy 182.211589 124.799961) + (xy 182.211588 124.799961) + (xy 182.204551 124.799955) + (xy 182.198206 124.803002) + (xy 182.198205 124.803002) + (xy 182.189966 124.806958) + (xy 182.176812 124.811552) + (xy 182.161038 124.81515) + (xy 182.155532 124.819537) + (xy 182.155533 124.819537) + (xy 182.148565 124.825089) + (xy 182.136672 124.832549) + (xy 182.122295 124.839453) + (xy 182.117899 124.84495) + (xy 182.117898 124.844951) + (xy 182.112187 124.852092) + (xy 182.102327 124.861935) + (xy 182.089677 124.872015) + (xy 182.08662 124.878352) + (xy 182.086618 124.878355) + (xy 182.082749 124.886378) + (xy 182.075266 124.898261) + (xy 182.065306 124.910715) + (xy 182.063729 124.917572) + (xy 182.063727 124.917577) + (xy 182.061678 124.926489) + (xy 182.057062 124.939634) + (xy 182.050035 124.954202) + (xy 182.050029 124.961239) + (xy 182.050015 124.977201) + (xy 182.050014 124.977217) + (xy 182.05 124.977277) + (xy 182.05 124.994123) + (xy 182.049964 125.035553) + (xy 182.049955 125.045449) + (xy 182.049993 125.045528) + (xy 182.05 125.045593) + (xy 182.05 126.9375) + (xy 182.031694 126.981694) + (xy 181.9875 127) + (xy 175.2535 127) + (xy 175.209306 126.981694) + (xy 175.191 126.9375) + (xy 175.191 125.043234) + (xy 175.192253 125.035893) + (xy 175.191524 125.03581) + (xy 175.192321 125.028819) + (xy 175.194653 125.022178) + (xy 175.191383 124.992794) + (xy 175.191 124.985882) + (xy 175.191 124.978467) + (xy 175.18942 124.971538) + (xy 175.188245 124.964595) + (xy 175.185015 124.935572) + (xy 175.18128 124.929606) + (xy 175.179908 124.925667) + (xy 175.178097 124.921904) + (xy 175.176532 124.915041) + (xy 175.158351 124.892226) + (xy 175.154256 124.886441) + (xy 175.15228 124.883285) + (xy 175.152279 124.883283) + (xy 175.150404 124.880289) + (xy 175.145191 124.875076) + (xy 175.140506 124.869832) + (xy 175.126612 124.852396) + (xy 175.126611 124.852396) + (xy 175.122225 124.846891) + (xy 175.115886 124.843833) + (xy 175.110385 124.839442) + (xy 175.110811 124.838908) + (xy 175.104647 124.834532) + (xy 172.387468 122.117353) + (xy 172.383163 122.111279) + (xy 172.38259 122.111735) + (xy 172.378209 122.106227) + (xy 172.375162 122.099882) + (xy 172.352079 122.081422) + (xy 172.34692 122.076805) + (xy 172.341671 122.071556) + (xy 172.335668 122.067783) + (xy 172.329892 122.063678) + (xy 172.307107 122.045457) + (xy 172.300247 122.04388) + (xy 172.296487 122.042062) + (xy 172.292551 122.040684) + (xy 172.286592 122.036938) + (xy 172.279598 122.036147) + (xy 172.279597 122.036147) + (xy 172.257604 122.033661) + (xy 172.250627 122.032469) + (xy 172.243543 122.03084) + (xy 172.236169 122.03084) + (xy 172.229148 122.030444) + (xy 172.227467 122.030254) + (xy 172.200002 122.027149) + (xy 172.193357 122.02947) + (xy 172.186363 122.030254) + (xy 172.186287 122.029576) + (xy 172.178835 122.03084) + (xy 161.803631 122.03084) + (xy 161.759437 122.012534) + (xy 161.209306 121.462403) + (xy 161.191 121.418209) + (xy 161.191 118.073151) + (xy 161.209306 118.028957) + (xy 161.2535 118.010651) + (xy 161.297694 118.028957) + (xy 161.312525 118.0526) + (xy 161.314207 118.057431) + (xy 161.314986 118.064429) + (xy 161.318721 118.070396) + (xy 161.320095 118.074341) + (xy 161.321902 118.078097) + (xy 161.323468 118.084959) + (xy 161.327853 118.090461) + (xy 161.327853 118.090462) + (xy 161.341648 118.107773) + (xy 161.345744 118.113559) + (xy 161.349596 118.119711) + (xy 161.354809 118.124924) + (xy 161.359494 118.130168) + (xy 161.377775 118.153109) + (xy 161.384114 118.156167) + (xy 161.389615 118.160558) + (xy 161.389189 118.161092) + (xy 161.395353 118.165468) + (xy 163.084372 119.854487) + (xy 163.088677 119.860561) + (xy 163.08925 119.860105) + (xy 163.093631 119.865613) + (xy 163.096678 119.871958) + (xy 163.102175 119.876354) + (xy 163.119761 119.890418) + (xy 163.12492 119.895035) + (xy 163.130169 119.900284) + (xy 163.13573 119.903779) + (xy 163.136172 119.904057) + (xy 163.141948 119.908162) + (xy 163.164733 119.926383) + (xy 163.171593 119.92796) + (xy 163.175353 119.929778) + (xy 163.179289 119.931156) + (xy 163.185248 119.934902) + (xy 163.192242 119.935693) + (xy 163.192243 119.935693) + (xy 163.214236 119.938179) + (xy 163.221213 119.939371) + (xy 163.228297 119.941) + (xy 163.235671 119.941) + (xy 163.242692 119.941396) + (xy 163.271838 119.944691) + (xy 163.278483 119.94237) + (xy 163.285477 119.941586) + (xy 163.285553 119.942264) + (xy 163.293005 119.941) + (xy 178.056768 119.941) + (xy 178.064107 119.94225) + (xy 178.06419 119.941523) + (xy 178.071181 119.94232) + (xy 178.077822 119.944652) + (xy 178.084815 119.943874) + (xy 178.084816 119.943874) + (xy 178.105939 119.941523) + (xy 178.107198 119.941383) + (xy 178.11411 119.941) + (xy 178.121533 119.941) + (xy 178.128465 119.939419) + (xy 178.135418 119.938243) + (xy 178.164429 119.935014) + (xy 178.170393 119.931281) + (xy 178.174341 119.929906) + (xy 178.1781 119.928097) + (xy 178.184959 119.926532) + (xy 178.207774 119.908351) + (xy 178.213559 119.904256) + (xy 178.216715 119.90228) + (xy 178.216717 119.902279) + (xy 178.219711 119.900404) + (xy 178.224924 119.895191) + (xy 178.230168 119.890506) + (xy 178.247604 119.876612) + (xy 178.247604 119.876611) + (xy 178.253109 119.872225) + (xy 178.256167 119.865886) + (xy 178.260558 119.860385) + (xy 178.261092 119.860811) + (xy 178.265468 119.854647) + (xy 182.954487 115.165628) + (xy 182.960561 115.161323) + (xy 182.960105 115.16075) + (xy 182.965613 115.156369) + (xy 182.971958 115.153322) + (xy 182.990422 115.130234) + (xy 182.995035 115.12508) + (xy 183.000283 115.119832) + (xy 183.002153 115.116857) + (xy 183.004055 115.113831) + (xy 183.008159 115.108056) + (xy 183.021988 115.090764) + (xy 183.02199 115.09076) + (xy 183.026383 115.085267) + (xy 183.02796 115.07841) + (xy 183.029778 115.074648) + (xy 183.031157 115.07071) + (xy 183.034902 115.064752) + (xy 183.035692 115.057761) + (xy 183.035694 115.057756) + (xy 183.03818 115.035763) + (xy 183.039373 115.028778) + (xy 183.040208 115.025146) + (xy 183.041 115.021703) + (xy 183.041 115.014323) + (xy 183.041396 115.007303) + (xy 183.043899 114.985158) + (xy 183.04469 114.978162) + (xy 183.04237 114.971518) + (xy 183.041585 114.964522) + (xy 183.042264 114.964446) + (xy 183.041 114.956997) + (xy 183.041 114.693824) + (xy 183.059306 114.64963) + (xy 183.091896 114.634201) + (xy 183.091558 114.6325) + (xy 183.097083 114.631401) + (xy 183.122713 114.626303) + (xy 183.122715 114.626302) + (xy 183.128748 114.625102) + (xy 183.170922 114.596922) + (xy 183.198033 114.556348) + (xy 183.237807 114.529772) + (xy 183.284723 114.539104) + (xy 183.301967 114.556348) + (xy 183.329078 114.596922) + (xy 183.371252 114.625102) + (xy 183.377285 114.626302) + (xy 183.377287 114.626303) + (xy 183.402917 114.631401) + (xy 183.408442 114.6325) + (xy 183.891558 114.6325) + (xy 183.897083 114.631401) + (xy 183.922713 114.626303) + (xy 183.922715 114.626302) + (xy 183.928748 114.625102) + (xy 183.970922 114.596922) + (xy 183.998033 114.556348) + (xy 184.037807 114.529772) + (xy 184.084723 114.539104) + (xy 184.101967 114.556348) + (xy 184.129078 114.596922) + (xy 184.171252 114.625102) + (xy 184.177285 114.626302) + (xy 184.177287 114.626303) + (xy 184.202917 114.631401) + (xy 184.208442 114.6325) + (xy 184.691558 114.6325) + (xy 184.697083 114.631401) + (xy 184.722713 114.626303) + (xy 184.722715 114.626302) + (xy 184.728748 114.625102) + (xy 184.770922 114.596922) + (xy 184.775205 114.590512) + (xy 184.798335 114.555897) + (xy 184.838109 114.529322) + (xy 184.885025 114.538655) + (xy 184.902268 114.555899) + (xy 184.926017 114.591443) + (xy 184.934555 114.599981) + (xy 184.96633 114.621212) + (xy 184.977482 114.625831) + (xy 185.005481 114.631401) + (xy 185.011562 114.632) + (xy 185.174069 114.632) + (xy 185.182859 114.628359) + (xy 185.1865 114.619569) + (xy 185.1865 112.880431) + (xy 185.182859 112.871641) + (xy 185.174069 112.868) + (xy 185.011562 112.868) + (xy 185.005481 112.868599) + (xy 184.977482 112.874169) + (xy 184.96633 112.878788) + (xy 184.934555 112.900019) + (xy 184.926017 112.908557) + (xy 184.902268 112.944101) + (xy 184.862495 112.970678) + (xy 184.815579 112.961346) + (xy 184.798335 112.944103) + (xy 184.774342 112.908196) + (xy 184.774341 112.908195) + (xy 184.770922 112.903078) + (xy 184.728748 112.874898) + (xy 184.722715 112.873698) + (xy 184.722713 112.873697) + (xy 184.694569 112.868099) + (xy 184.691558 112.8675) + (xy 184.208442 112.8675) + (xy 184.205431 112.868099) + (xy 184.177287 112.873697) + (xy 184.177285 112.873698) + (xy 184.171252 112.874898) + (xy 184.129078 112.903078) + (xy 184.125659 112.908195) + (xy 184.101967 112.943652) + (xy 184.062193 112.970228) + (xy 184.015277 112.960896) + (xy 183.998033 112.943652) + (xy 183.974341 112.908195) + (xy 183.970922 112.903078) + (xy 183.928748 112.874898) + (xy 183.922715 112.873698) + (xy 183.922713 112.873697) + (xy 183.891558 112.8675) + (xy 183.891957 112.865494) + (xy 183.855159 112.845791) + (xy 183.841 112.806176) + (xy 183.841 112.543232) + (xy 183.84225 112.535893) + (xy 183.841523 112.53581) + (xy 183.84232 112.528819) + (xy 183.844652 112.522178) + (xy 183.842864 112.506104) + (xy 183.841383 112.4928) + (xy 183.841 112.485888) + (xy 183.841 112.478467) + (xy 183.839423 112.471552) + (xy 183.838242 112.464569) + (xy 183.835793 112.442562) + (xy 183.835015 112.435571) + (xy 183.831282 112.429608) + (xy 183.829912 112.425675) + (xy 183.828098 112.421905) + (xy 183.826532 112.415041) + (xy 183.808354 112.392229) + (xy 183.80426 112.386446) + (xy 183.802284 112.38329) + (xy 183.802279 112.383284) + (xy 183.800404 112.380289) + (xy 183.795191 112.375076) + (xy 183.790506 112.369832) + (xy 183.776612 112.352396) + (xy 183.776611 112.352396) + (xy 183.772225 112.346891) + (xy 183.765886 112.343833) + (xy 183.760385 112.339442) + (xy 183.760811 112.338908) + (xy 183.754647 112.334532) + (xy 181.995969 110.575854) + (xy 181.977663 110.53166) + (xy 181.995969 110.487466) + (xy 182.040163 110.46916) + (xy 183.723157 110.46916) + (xy 183.767351 110.487466) + (xy 185.840694 112.560808) + (xy 185.859 112.605002) + (xy 185.859 112.806176) + (xy 185.840694 112.85037) + (xy 185.808104 112.865799) + (xy 185.808442 112.8675) + (xy 185.777287 112.873697) + (xy 185.777285 112.873698) + (xy 185.771252 112.874898) + (xy 185.729078 112.903078) + (xy 185.725659 112.908195) + (xy 185.725658 112.908196) + (xy 185.701665 112.944103) + (xy 185.661891 112.970678) + (xy 185.614975 112.961345) + (xy 185.597732 112.944101) + (xy 185.573983 112.908557) + (xy 185.565445 112.900019) + (xy 185.53367 112.878788) + (xy 185.522518 112.874169) + (xy 185.494519 112.868599) + (xy 185.488438 112.868) + (xy 185.325931 112.868) + (xy 185.317141 112.871641) + (xy 185.3135 112.880431) + (xy 185.3135 114.619569) + (xy 185.317141 114.628359) + (xy 185.325931 114.632) + (xy 185.488438 114.632) + (xy 185.494519 114.631401) + (xy 185.522518 114.625831) + (xy 185.53367 114.621212) + (xy 185.565445 114.599981) + (xy 185.573983 114.591443) + (xy 185.597732 114.555899) + (xy 185.637505 114.529322) + (xy 185.684421 114.538654) + (xy 185.701665 114.555897) + (xy 185.724795 114.590512) + (xy 185.729078 114.596922) + (xy 185.771252 114.625102) + (xy 185.777285 114.626302) + (xy 185.777287 114.626303) + (xy 185.802917 114.631401) + (xy 185.808442 114.6325) + (xy 186.291558 114.6325) + (xy 186.297083 114.631401) + (xy 186.322713 114.626303) + (xy 186.322715 114.626302) + (xy 186.328748 114.625102) + (xy 186.370922 114.596922) + (xy 186.398033 114.556348) + (xy 186.437807 114.529772) + (xy 186.484723 114.539104) + (xy 186.501967 114.556348) + (xy 186.529078 114.596922) + (xy 186.571252 114.625102) + (xy 186.577285 114.626302) + (xy 186.577287 114.626303) + (xy 186.608442 114.6325) + (xy 186.608043 114.634506) + (xy 186.644841 114.654209) + (xy 186.659 114.693824) + (xy 186.659 115.080525) + (xy 186.640694 115.124719) + (xy 186.629855 115.13338) + (xy 186.61281 115.144135) + (xy 186.607842 115.146959) + (xy 186.601757 115.150059) + (xy 186.601756 115.15006) + (xy 186.597375 115.152292) + (xy 186.593897 115.15577) + (xy 186.592445 115.156825) + (xy 186.589058 115.15912) + (xy 186.57008 115.171095) + (xy 186.567137 115.174427) + (xy 186.567135 115.174429) + (xy 186.507156 115.242342) + (xy 186.506032 115.243538) + (xy 186.505775 115.243892) + (xy 186.505554 115.244113) + (xy 186.505405 115.244204) + (xy 186.504504 115.245163) + (xy 186.502292 115.247375) + (xy 186.501509 115.246592) + (xy 186.500362 115.247296) + (xy 186.501721 115.248496) + (xy 186.489018 115.262879) + (xy 186.487127 115.266907) + (xy 186.438868 115.369695) + (xy 186.438867 115.369698) + (xy 186.436976 115.373726) + (xy 186.418136 115.494724) + (xy 186.418713 115.499137) + (xy 186.418713 115.499138) + (xy 186.432164 115.601999) + (xy 186.434014 115.616145) + (xy 186.441185 115.632443) + (xy 186.441244 115.632813) + (xy 186.442007 115.634311) + (xy 186.444031 115.63891) + (xy 186.444031 115.638911) + (xy 186.453641 115.66075) + (xy 186.483333 115.72823) + (xy 186.497272 115.744813) + (xy 186.498029 115.745713) + (xy 186.500157 115.748434) + (xy 186.502292 115.752625) + (xy 186.510081 115.760414) + (xy 186.51373 115.764392) + (xy 186.551637 115.809488) + (xy 186.562127 115.821968) + (xy 186.585399 115.837459) + (xy 186.591836 115.842733) + (xy 186.593899 115.844232) + (xy 186.597375 115.847708) + (xy 186.601753 115.849939) + (xy 186.601756 115.849941) + (xy 186.60873 115.853494) + (xy 186.614977 115.857148) + (xy 186.664064 115.889823) + (xy 186.668313 115.891151) + (xy 186.668314 115.891151) + (xy 186.700296 115.901143) + (xy 186.710027 115.905109) + (xy 186.712799 115.906521) + (xy 186.712803 115.906522) + (xy 186.717187 115.908756) + (xy 186.727852 115.910445) + (xy 186.736713 115.91252) + (xy 186.776696 115.925012) + (xy 186.776699 115.925012) + (xy 186.780948 115.92634) + (xy 186.830069 115.927241) + (xy 186.838683 115.927999) + (xy 186.84514 115.929022) + (xy 186.845144 115.929022) + (xy 186.85 115.929791) + (xy 186.856947 115.92869) + (xy 186.867853 115.927933) + (xy 186.903383 115.928584) + (xy 186.963532 115.912185) + (xy 186.97019 115.910755) + (xy 186.972147 115.910445) + (xy 186.982813 115.908756) + (xy 186.987196 115.906522) + (xy 186.991875 115.905002) + (xy 186.991878 115.90501) + (xy 186.996727 115.903136) + (xy 187.021527 115.896375) + (xy 187.02878 115.891922) + (xy 187.089709 115.854511) + (xy 187.094037 115.852085) + (xy 187.09824 115.849944) + (xy 187.098248 115.849938) + (xy 187.102625 115.847708) + (xy 187.105427 115.844906) + (xy 187.106264 115.844346) + (xy 187.107295 115.843713) + (xy 187.125881 115.832301) + (xy 187.208058 115.741513) + (xy 187.261451 115.631311) + (xy 187.2625 115.62508) + (xy 187.276955 115.539153) + (xy 187.281767 115.510552) + (xy 187.281896 115.5) + (xy 187.264536 115.378781) + (xy 187.213852 115.267307) + (xy 187.199199 115.250302) + (xy 187.197708 115.247375) + (xy 187.1919 115.241567) + (xy 187.188746 115.23817) + (xy 187.159465 115.204188) + (xy 187.133918 115.174539) + (xy 187.113741 115.161461) + (xy 187.110155 115.158559) + (xy 187.110081 115.158661) + (xy 187.106106 115.155773) + (xy 187.102625 115.152292) + (xy 187.091343 115.146543) + (xy 187.085735 115.143308) + (xy 187.069505 115.132788) + (xy 187.042377 115.093389) + (xy 187.041 115.080342) + (xy 187.041 114.693824) + (xy 187.059306 114.64963) + (xy 187.091896 114.634201) + (xy 187.091558 114.6325) + (xy 187.097083 114.631401) + (xy 187.122713 114.626303) + (xy 187.122715 114.626302) + (xy 187.128748 114.625102) + (xy 187.170922 114.596922) + (xy 187.198033 114.556348) + (xy 187.237807 114.529772) + (xy 187.284723 114.539104) + (xy 187.301967 114.556348) + (xy 187.329078 114.596922) + (xy 187.371252 114.625102) + (xy 187.377285 114.626302) + (xy 187.377287 114.626303) + (xy 187.402917 114.631401) + (xy 187.408442 114.6325) + (xy 187.891558 114.6325) + (xy 187.897083 114.631401) + (xy 187.922713 114.626303) + (xy 187.922715 114.626302) + (xy 187.928748 114.625102) + (xy 187.970922 114.596922) + (xy 187.998033 114.556348) + (xy 188.037807 114.529772) + (xy 188.084723 114.539104) + (xy 188.101967 114.556348) + (xy 188.129078 114.596922) + (xy 188.171252 114.625102) + (xy 188.177285 114.626302) + (xy 188.177287 114.626303) + (xy 188.202917 114.631401) + (xy 188.208442 114.6325) + (xy 188.691558 114.6325) + (xy 188.697083 114.631401) + (xy 188.722713 114.626303) + (xy 188.722715 114.626302) + (xy 188.728748 114.625102) + (xy 188.770922 114.596922) + (xy 188.775205 114.590512) + (xy 188.798335 114.555897) + (xy 188.838109 114.529322) + (xy 188.885025 114.538655) + (xy 188.902268 114.555899) + (xy 188.926017 114.591443) + (xy 188.934555 114.599981) + (xy 188.96633 114.621212) + (xy 188.977482 114.625831) + (xy 189.005481 114.631401) + (xy 189.011562 114.632) + (xy 189.174069 114.632) + (xy 189.182859 114.628359) + (xy 189.1865 114.619569) + (xy 189.1865 112.880431) + (xy 189.182859 112.871641) + (xy 189.174069 112.868) + (xy 189.011562 112.868) + (xy 189.005481 112.868599) + (xy 188.977482 112.874169) + (xy 188.96633 112.878788) + (xy 188.934555 112.900019) + (xy 188.926017 112.908557) + (xy 188.902268 112.944101) + (xy 188.862495 112.970678) + (xy 188.815579 112.961346) + (xy 188.798335 112.944103) + (xy 188.774342 112.908196) + (xy 188.774341 112.908195) + (xy 188.770922 112.903078) + (xy 188.728748 112.874898) + (xy 188.722715 112.873698) + (xy 188.722713 112.873697) + (xy 188.691558 112.8675) + (xy 188.691957 112.865494) + (xy 188.655159 112.845791) + (xy 188.641 112.806176) + (xy 188.641 112.543232) + (xy 188.64225 112.535893) + (xy 188.641523 112.53581) + (xy 188.64232 112.528819) + (xy 188.644652 112.522178) + (xy 188.642574 112.5035) + (xy 188.641383 112.492803) + (xy 188.641 112.48589) + (xy 188.641 112.478467) + (xy 188.639419 112.471535) + (xy 188.638241 112.464569) + (xy 188.635014 112.435571) + (xy 188.631281 112.429607) + (xy 188.629906 112.425659) + (xy 188.628097 112.4219) + (xy 188.626532 112.415041) + (xy 188.622137 112.409525) + (xy 188.612591 112.397546) + (xy 188.608351 112.392226) + (xy 188.604256 112.386441) + (xy 188.60228 112.383285) + (xy 188.602279 112.383283) + (xy 188.600404 112.380289) + (xy 188.595191 112.375076) + (xy 188.590506 112.369832) + (xy 188.576612 112.352396) + (xy 188.576611 112.352396) + (xy 188.572225 112.346891) + (xy 188.565886 112.343833) + (xy 188.560385 112.339442) + (xy 188.560811 112.338908) + (xy 188.554647 112.334532) + (xy 186.035409 109.815294) + (xy 186.017103 109.7711) + (xy 186.035409 109.726906) + (xy 186.079603 109.7086) + (xy 186.962597 109.7086) + (xy 187.006791 109.726906) + (xy 189.840694 112.560809) + (xy 189.859 112.605003) + (xy 189.859 112.806176) + (xy 189.840694 112.85037) + (xy 189.808104 112.865799) + (xy 189.808442 112.8675) + (xy 189.777287 112.873697) + (xy 189.777285 112.873698) + (xy 189.771252 112.874898) + (xy 189.729078 112.903078) + (xy 189.725659 112.908195) + (xy 189.725658 112.908196) + (xy 189.701665 112.944103) + (xy 189.661891 112.970678) + (xy 189.614975 112.961345) + (xy 189.597732 112.944101) + (xy 189.573983 112.908557) + (xy 189.565445 112.900019) + (xy 189.53367 112.878788) + (xy 189.522518 112.874169) + (xy 189.494519 112.868599) + (xy 189.488438 112.868) + (xy 189.325931 112.868) + (xy 189.317141 112.871641) + (xy 189.3135 112.880431) + (xy 189.3135 114.619569) + (xy 189.317141 114.628359) + (xy 189.325931 114.632) + (xy 189.488438 114.632) + (xy 189.494519 114.631401) + (xy 189.522518 114.625831) + (xy 189.53367 114.621212) + (xy 189.565445 114.599981) + (xy 189.573983 114.591443) + (xy 189.597732 114.555899) + (xy 189.637505 114.529322) + (xy 189.684421 114.538654) + (xy 189.701665 114.555897) + (xy 189.724795 114.590512) + (xy 189.729078 114.596922) + (xy 189.771252 114.625102) + (xy 189.777285 114.626302) + (xy 189.777287 114.626303) + (xy 189.802917 114.631401) + (xy 189.808442 114.6325) + (xy 190.291558 114.6325) + (xy 190.297083 114.631401) + (xy 190.322713 114.626303) + (xy 190.322715 114.626302) + (xy 190.328748 114.625102) + (xy 190.370922 114.596922) + (xy 190.398033 114.556348) + (xy 190.437807 114.529772) + (xy 190.484723 114.539104) + (xy 190.501967 114.556348) + (xy 190.529078 114.596922) + (xy 190.571252 114.625102) + (xy 190.577285 114.626302) + (xy 190.577287 114.626303) + (xy 190.602917 114.631401) + (xy 190.608442 114.6325) + (xy 191.091558 114.6325) + (xy 191.097083 114.631401) + (xy 191.122713 114.626303) + (xy 191.122715 114.626302) + (xy 191.128748 114.625102) + (xy 191.170922 114.596922) + (xy 191.198033 114.556348) + (xy 191.237807 114.529772) + (xy 191.284723 114.539104) + (xy 191.301967 114.556348) + (xy 191.329078 114.596922) + (xy 191.371252 114.625102) + (xy 191.377285 114.626302) + (xy 191.377287 114.626303) + (xy 191.408442 114.6325) + (xy 191.408043 114.634506) + (xy 191.444841 114.654209) + (xy 191.459 114.693824) + (xy 191.459 115.080525) + (xy 191.440694 115.124719) + (xy 191.429855 115.13338) + (xy 191.41281 115.144135) + (xy 191.407842 115.146959) + (xy 191.401757 115.150059) + (xy 191.401756 115.15006) + (xy 191.397375 115.152292) + (xy 191.393897 115.15577) + (xy 191.392445 115.156825) + (xy 191.389058 115.15912) + (xy 191.37008 115.171095) + (xy 191.367137 115.174427) + (xy 191.367135 115.174429) + (xy 191.307156 115.242342) + (xy 191.306032 115.243538) + (xy 191.305775 115.243892) + (xy 191.305554 115.244113) + (xy 191.305405 115.244204) + (xy 191.304504 115.245163) + (xy 191.302292 115.247375) + (xy 191.301509 115.246592) + (xy 191.300362 115.247296) + (xy 191.301721 115.248496) + (xy 191.289018 115.262879) + (xy 191.287127 115.266907) + (xy 191.238868 115.369695) + (xy 191.238867 115.369698) + (xy 191.236976 115.373726) + (xy 191.218136 115.494724) + (xy 191.218713 115.499137) + (xy 191.218713 115.499138) + (xy 191.232164 115.601999) + (xy 191.234014 115.616145) + (xy 191.241185 115.632443) + (xy 191.241244 115.632813) + (xy 191.242007 115.634311) + (xy 191.244031 115.63891) + (xy 191.244031 115.638911) + (xy 191.253641 115.66075) + (xy 191.283333 115.72823) + (xy 191.297272 115.744813) + (xy 191.298029 115.745713) + (xy 191.300157 115.748434) + (xy 191.302292 115.752625) + (xy 191.310081 115.760414) + (xy 191.31373 115.764392) + (xy 191.351637 115.809488) + (xy 191.362127 115.821968) + (xy 191.385399 115.837459) + (xy 191.391836 115.842733) + (xy 191.393899 115.844232) + (xy 191.397375 115.847708) + (xy 191.401753 115.849939) + (xy 191.401756 115.849941) + (xy 191.40873 115.853494) + (xy 191.414977 115.857148) + (xy 191.464064 115.889823) + (xy 191.468313 115.891151) + (xy 191.468314 115.891151) + (xy 191.500296 115.901143) + (xy 191.510027 115.905109) + (xy 191.512799 115.906521) + (xy 191.512803 115.906522) + (xy 191.517187 115.908756) + (xy 191.527852 115.910445) + (xy 191.536713 115.91252) + (xy 191.576696 115.925012) + (xy 191.576699 115.925012) + (xy 191.580948 115.92634) + (xy 191.630069 115.927241) + (xy 191.638683 115.927999) + (xy 191.64514 115.929022) + (xy 191.645144 115.929022) + (xy 191.65 115.929791) + (xy 191.656947 115.92869) + (xy 191.667853 115.927933) + (xy 191.703383 115.928584) + (xy 191.763532 115.912185) + (xy 191.77019 115.910755) + (xy 191.772147 115.910445) + (xy 191.782813 115.908756) + (xy 191.787196 115.906522) + (xy 191.791875 115.905002) + (xy 191.791878 115.90501) + (xy 191.796727 115.903136) + (xy 191.821527 115.896375) + (xy 191.82878 115.891922) + (xy 191.889709 115.854511) + (xy 191.894037 115.852085) + (xy 191.89824 115.849944) + (xy 191.898248 115.849938) + (xy 191.902625 115.847708) + (xy 191.905427 115.844906) + (xy 191.906264 115.844346) + (xy 191.907295 115.843713) + (xy 191.925881 115.832301) + (xy 192.008058 115.741513) + (xy 192.061451 115.631311) + (xy 192.0625 115.62508) + (xy 192.076955 115.539153) + (xy 192.081767 115.510552) + (xy 192.081896 115.5) + (xy 192.064536 115.378781) + (xy 192.013852 115.267307) + (xy 191.999199 115.250302) + (xy 191.997708 115.247375) + (xy 191.9919 115.241567) + (xy 191.988746 115.23817) + (xy 191.959465 115.204188) + (xy 191.933918 115.174539) + (xy 191.913741 115.161461) + (xy 191.910155 115.158559) + (xy 191.910081 115.158661) + (xy 191.906106 115.155773) + (xy 191.902625 115.152292) + (xy 191.891343 115.146543) + (xy 191.885735 115.143308) + (xy 191.869505 115.132788) + (xy 191.842377 115.093389) + (xy 191.841 115.080342) + (xy 191.841 114.693824) + (xy 191.859306 114.64963) + (xy 191.891896 114.634201) + (xy 191.891558 114.6325) + (xy 191.897083 114.631401) + (xy 191.922713 114.626303) + (xy 191.922715 114.626302) + (xy 191.928748 114.625102) + (xy 191.970922 114.596922) + (xy 191.998033 114.556348) + (xy 192.037807 114.529772) + (xy 192.084723 114.539104) + (xy 192.101967 114.556348) + (xy 192.129078 114.596922) + (xy 192.171252 114.625102) + (xy 192.177285 114.626302) + (xy 192.177287 114.626303) + (xy 192.202917 114.631401) + (xy 192.208442 114.6325) + (xy 192.691558 114.6325) + (xy 192.697083 114.631401) + (xy 192.722713 114.626303) + (xy 192.722715 114.626302) + (xy 192.728748 114.625102) + (xy 192.770922 114.596922) + (xy 192.798033 114.556348) + (xy 192.837807 114.529772) + (xy 192.884723 114.539104) + (xy 192.901967 114.556348) + (xy 192.929078 114.596922) + (xy 192.971252 114.625102) + (xy 192.977285 114.626302) + (xy 192.977287 114.626303) + (xy 193.002917 114.631401) + (xy 193.008442 114.6325) + (xy 193.491558 114.6325) + (xy 193.497083 114.631401) + (xy 193.522713 114.626303) + (xy 193.522715 114.626302) + (xy 193.528748 114.625102) + (xy 193.570922 114.596922) + (xy 193.575205 114.590512) + (xy 193.598335 114.555897) + (xy 193.638109 114.529322) + (xy 193.685025 114.538655) + (xy 193.702268 114.555899) + (xy 193.726017 114.591443) + (xy 193.734555 114.599981) + (xy 193.76633 114.621212) + (xy 193.777482 114.625831) + (xy 193.805481 114.631401) + (xy 193.811562 114.632) + (xy 193.974069 114.632) + (xy 193.982859 114.628359) + (xy 193.9865 114.619569) + (xy 193.9865 112.880431) + (xy 193.982859 112.871641) + (xy 193.974069 112.868) + (xy 193.811562 112.868) + (xy 193.805481 112.868599) + (xy 193.777482 112.874169) + (xy 193.76633 112.878788) + (xy 193.734555 112.900019) + (xy 193.726017 112.908557) + (xy 193.702268 112.944101) + (xy 193.662495 112.970678) + (xy 193.615579 112.961346) + (xy 193.598335 112.944103) + (xy 193.574342 112.908196) + (xy 193.574341 112.908195) + (xy 193.570922 112.903078) + (xy 193.528748 112.874898) + (xy 193.522715 112.873698) + (xy 193.522713 112.873697) + (xy 193.491558 112.8675) + (xy 193.491957 112.865494) + (xy 193.455159 112.845791) + (xy 193.441 112.806176) + (xy 193.441 112.543232) + (xy 193.44225 112.535893) + (xy 193.441523 112.53581) + (xy 193.44232 112.528819) + (xy 193.444652 112.522178) + (xy 193.442864 112.506104) + (xy 193.441383 112.4928) + (xy 193.441 112.485888) + (xy 193.441 112.478467) + (xy 193.439423 112.471552) + (xy 193.438242 112.464569) + (xy 193.435793 112.442562) + (xy 193.435015 112.435571) + (xy 193.431282 112.429608) + (xy 193.429912 112.425675) + (xy 193.428098 112.421905) + (xy 193.426532 112.415041) + (xy 193.408354 112.392229) + (xy 193.40426 112.386446) + (xy 193.402284 112.38329) + (xy 193.402279 112.383284) + (xy 193.400404 112.380289) + (xy 193.395191 112.375076) + (xy 193.390506 112.369832) + (xy 193.376612 112.352396) + (xy 193.376611 112.352396) + (xy 193.372225 112.346891) + (xy 193.365886 112.343833) + (xy 193.360385 112.339442) + (xy 193.360811 112.338908) + (xy 193.354647 112.334532) + (xy 189.821329 108.801214) + (xy 189.803023 108.75702) + (xy 189.821329 108.712826) + (xy 189.865523 108.69452) + (xy 190.748517 108.69452) + (xy 190.792711 108.712826) + (xy 194.640694 112.560808) + (xy 194.659 112.605002) + (xy 194.659 112.806176) + (xy 194.640694 112.85037) + (xy 194.608104 112.865799) + (xy 194.608442 112.8675) + (xy 194.577287 112.873697) + (xy 194.577285 112.873698) + (xy 194.571252 112.874898) + (xy 194.529078 112.903078) + (xy 194.525659 112.908195) + (xy 194.525658 112.908196) + (xy 194.501665 112.944103) + (xy 194.461891 112.970678) + (xy 194.414975 112.961345) + (xy 194.397732 112.944101) + (xy 194.373983 112.908557) + (xy 194.365445 112.900019) + (xy 194.33367 112.878788) + (xy 194.322518 112.874169) + (xy 194.294519 112.868599) + (xy 194.288438 112.868) + (xy 194.125931 112.868) + (xy 194.117141 112.871641) + (xy 194.1135 112.880431) + (xy 194.1135 114.619569) + (xy 194.117141 114.628359) + (xy 194.125931 114.632) + (xy 194.288438 114.632) + (xy 194.294519 114.631401) + (xy 194.322518 114.625831) + (xy 194.33367 114.621212) + (xy 194.365445 114.599981) + (xy 194.373983 114.591443) + (xy 194.397732 114.555899) + (xy 194.437505 114.529322) + (xy 194.484421 114.538654) + (xy 194.501665 114.555897) + (xy 194.524795 114.590512) + (xy 194.529078 114.596922) + (xy 194.571252 114.625102) + (xy 194.577285 114.626302) + (xy 194.577287 114.626303) + (xy 194.602917 114.631401) + (xy 194.608442 114.6325) + (xy 195.091558 114.6325) + (xy 195.097083 114.631401) + (xy 195.122713 114.626303) + (xy 195.122715 114.626302) + (xy 195.128748 114.625102) + (xy 195.170922 114.596922) + (xy 195.175205 114.590512) + (xy 195.198335 114.555897) + (xy 195.238109 114.529322) + (xy 195.285025 114.538655) + (xy 195.302268 114.555899) + (xy 195.326017 114.591443) + (xy 195.334555 114.599981) + (xy 195.36633 114.621212) + (xy 195.377482 114.625831) + (xy 195.405481 114.631401) + (xy 195.411562 114.632) + (xy 195.574069 114.632) + (xy 195.582859 114.628359) + (xy 195.5865 114.619569) + (xy 195.7135 114.619569) + (xy 195.717141 114.628359) + (xy 195.725931 114.632) + (xy 195.888438 114.632) + (xy 195.894519 114.631401) + (xy 195.922518 114.625831) + (xy 195.93367 114.621212) + (xy 195.965445 114.599981) + (xy 195.973981 114.591445) + (xy 195.995212 114.55967) + (xy 195.999831 114.548518) + (xy 196.005401 114.520519) + (xy 196.006 114.514438) + (xy 196.006 113.825931) + (xy 196.002359 113.817141) + (xy 195.993569 113.8135) + (xy 195.725931 113.8135) + (xy 195.717141 113.817141) + (xy 195.7135 113.825931) + (xy 195.7135 114.619569) + (xy 195.5865 114.619569) + (xy 195.5865 113.674069) + (xy 195.7135 113.674069) + (xy 195.717141 113.682859) + (xy 195.725931 113.6865) + (xy 195.993569 113.6865) + (xy 196.002359 113.682859) + (xy 196.006 113.674069) + (xy 196.006 112.985562) + (xy 196.005401 112.979481) + (xy 195.999831 112.951482) + (xy 195.995212 112.94033) + (xy 195.973981 112.908555) + (xy 195.965445 112.900019) + (xy 195.93367 112.878788) + (xy 195.922518 112.874169) + (xy 195.894519 112.868599) + (xy 195.888438 112.868) + (xy 195.725931 112.868) + (xy 195.717141 112.871641) + (xy 195.7135 112.880431) + (xy 195.7135 113.674069) + (xy 195.5865 113.674069) + (xy 195.5865 112.880431) + (xy 195.582859 112.871641) + (xy 195.574069 112.868) + (xy 195.411562 112.868) + (xy 195.405481 112.868599) + (xy 195.377482 112.874169) + (xy 195.36633 112.878788) + (xy 195.334555 112.900019) + (xy 195.326017 112.908557) + (xy 195.302268 112.944101) + (xy 195.262495 112.970678) + (xy 195.215579 112.961346) + (xy 195.198335 112.944103) + (xy 195.174342 112.908196) + (xy 195.174341 112.908195) + (xy 195.170922 112.903078) + (xy 195.128748 112.874898) + (xy 195.122715 112.873698) + (xy 195.122713 112.873697) + (xy 195.091558 112.8675) + (xy 195.091957 112.865494) + (xy 195.055159 112.845791) + (xy 195.041 112.806176) + (xy 195.041 112.543232) + (xy 195.04225 112.535893) + (xy 195.041523 112.53581) + (xy 195.04232 112.528819) + (xy 195.044652 112.522178) + (xy 195.042574 112.5035) + (xy 195.041383 112.492803) + (xy 195.041 112.48589) + (xy 195.041 112.478467) + (xy 195.039419 112.471535) + (xy 195.038241 112.464569) + (xy 195.035014 112.435571) + (xy 195.031281 112.429607) + (xy 195.029906 112.425659) + (xy 195.028097 112.4219) + (xy 195.026532 112.415041) + (xy 195.022137 112.409525) + (xy 195.012591 112.397546) + (xy 195.008351 112.392226) + (xy 195.004256 112.386441) + (xy 195.00228 112.383285) + (xy 195.002279 112.383283) + (xy 195.000404 112.380289) + (xy 194.995191 112.375076) + (xy 194.990506 112.369832) + (xy 194.976612 112.352396) + (xy 194.976611 112.352396) + (xy 194.972225 112.346891) + (xy 194.965886 112.343833) + (xy 194.960385 112.339442) + (xy 194.960811 112.338908) + (xy 194.954647 112.334532) + (xy 191.019148 108.399033) + (xy 191.014843 108.392959) + (xy 191.01427 108.393415) + (xy 191.009889 108.387907) + (xy 191.006842 108.381562) + (xy 190.983759 108.363102) + (xy 190.9786 108.358485) + (xy 190.973351 108.353236) + (xy 190.967348 108.349463) + (xy 190.961572 108.345358) + (xy 190.938787 108.327137) + (xy 190.931927 108.32556) + (xy 190.928167 108.323742) + (xy 190.924231 108.322364) + (xy 190.918272 108.318618) + (xy 190.911278 108.317827) + (xy 190.911277 108.317827) + (xy 190.889284 108.315341) + (xy 190.882307 108.314149) + (xy 190.875223 108.31252) + (xy 190.867849 108.31252) + (xy 190.860828 108.312124) + (xy 190.859147 108.311934) + (xy 190.831682 108.308829) + (xy 190.825037 108.31115) + (xy 190.818043 108.311934) + (xy 190.817967 108.311256) + (xy 190.810515 108.31252) + (xy 175.358483 108.31252) + (xy 175.314289 108.294214) + (xy 175.295983 108.25002) + (xy 175.314289 108.205826) + (xy 178.954485 104.565629) + (xy 178.96056 104.561322) + (xy 178.960105 104.56075) + (xy 178.965613 104.556369) + (xy 178.971958 104.553322) + (xy 178.990422 104.530234) + (xy 178.995039 104.525075) + (xy 179.000283 104.519831) + (xy 179.002145 104.516868) + (xy 179.002151 104.516861) + (xy 179.004058 104.513826) + (xy 179.008163 104.50805) + (xy 179.021987 104.490764) + (xy 179.026383 104.485267) + (xy 179.02796 104.478409) + (xy 179.02978 104.474644) + (xy 179.031158 104.470708) + (xy 179.034902 104.464752) + (xy 179.035692 104.457761) + (xy 179.035694 104.457756) + (xy 179.03818 104.435763) + (xy 179.039373 104.428778) + (xy 179.039915 104.426421) + (xy 179.041 104.421703) + (xy 179.041 104.414323) + (xy 179.041396 104.407303) + (xy 179.043899 104.385158) + (xy 179.04469 104.378162) + (xy 179.042369 104.371516) + (xy 179.041585 104.364522) + (xy 179.042264 104.364446) + (xy 179.041 104.356996) + (xy 179.041 103.193824) + (xy 179.059306 103.14963) + (xy 179.091896 103.134201) + (xy 179.091558 103.1325) + (xy 179.094569 103.131901) + (xy 179.122713 103.126303) + (xy 179.122715 103.126302) + (xy 179.128748 103.125102) + (xy 179.170922 103.096922) + (xy 179.198033 103.056348) + (xy 179.237807 103.029772) + (xy 179.284723 103.039104) + (xy 179.301967 103.056348) + (xy 179.329078 103.096922) + (xy 179.371252 103.125102) + (xy 179.377285 103.126302) + (xy 179.377287 103.126303) + (xy 179.402917 103.131401) + (xy 179.408442 103.1325) + (xy 179.891558 103.1325) + (xy 179.897083 103.131401) + (xy 179.922713 103.126303) + (xy 179.922715 103.126302) + (xy 179.928748 103.125102) + (xy 179.970922 103.096922) + (xy 179.998033 103.056348) + (xy 180.037807 103.029772) + (xy 180.084723 103.039104) + (xy 180.101967 103.056348) + (xy 180.129078 103.096922) + (xy 180.171252 103.125102) + (xy 180.177285 103.126302) + (xy 180.177287 103.126303) + (xy 180.202917 103.131401) + (xy 180.208442 103.1325) + (xy 180.691558 103.1325) + (xy 180.697083 103.131401) + (xy 180.722713 103.126303) + (xy 180.722715 103.126302) + (xy 180.728748 103.125102) + (xy 180.770922 103.096922) + (xy 180.798033 103.056348) + (xy 180.837807 103.029772) + (xy 180.884723 103.039104) + (xy 180.901967 103.056348) + (xy 180.929078 103.096922) + (xy 180.971252 103.125102) + (xy 180.977285 103.126302) + (xy 180.977287 103.126303) + (xy 181.002917 103.131401) + (xy 181.008442 103.1325) + (xy 181.491558 103.1325) + (xy 181.497083 103.131401) + (xy 181.522713 103.126303) + (xy 181.522715 103.126302) + (xy 181.528748 103.125102) + (xy 181.570922 103.096922) + (xy 181.598033 103.056348) + (xy 181.637807 103.029772) + (xy 181.684723 103.039104) + (xy 181.701967 103.056348) + (xy 181.729078 103.096922) + (xy 181.771252 103.125102) + (xy 181.777285 103.126302) + (xy 181.777287 103.126303) + (xy 181.802917 103.131401) + (xy 181.808442 103.1325) + (xy 182.291558 103.1325) + (xy 182.297083 103.131401) + (xy 182.322713 103.126303) + (xy 182.322715 103.126302) + (xy 182.328748 103.125102) + (xy 182.370922 103.096922) + (xy 182.398033 103.056348) + (xy 182.437807 103.029772) + (xy 182.484723 103.039104) + (xy 182.501967 103.056348) + (xy 182.529078 103.096922) + (xy 182.571252 103.125102) + (xy 182.577285 103.126302) + (xy 182.577287 103.126303) + (xy 182.602917 103.131401) + (xy 182.608442 103.1325) + (xy 183.091558 103.1325) + (xy 183.097083 103.131401) + (xy 183.122713 103.126303) + (xy 183.122715 103.126302) + (xy 183.128748 103.125102) + (xy 183.170922 103.096922) + (xy 183.198033 103.056348) + (xy 183.237807 103.029772) + (xy 183.284723 103.039104) + (xy 183.301967 103.056348) + (xy 183.329078 103.096922) + (xy 183.371252 103.125102) + (xy 183.377285 103.126302) + (xy 183.377287 103.126303) + (xy 183.402917 103.131401) + (xy 183.408442 103.1325) + (xy 183.891558 103.1325) + (xy 183.897083 103.131401) + (xy 183.922713 103.126303) + (xy 183.922715 103.126302) + (xy 183.928748 103.125102) + (xy 183.970922 103.096922) + (xy 183.998033 103.056348) + (xy 184.037807 103.029772) + (xy 184.084723 103.039104) + (xy 184.101967 103.056348) + (xy 184.129078 103.096922) + (xy 184.171252 103.125102) + (xy 184.177285 103.126302) + (xy 184.177287 103.126303) + (xy 184.202917 103.131401) + (xy 184.208442 103.1325) + (xy 184.691558 103.1325) + (xy 184.697083 103.131401) + (xy 184.722713 103.126303) + (xy 184.722715 103.126302) + (xy 184.728748 103.125102) + (xy 184.770922 103.096922) + (xy 184.798033 103.056348) + (xy 184.837807 103.029772) + (xy 184.884723 103.039104) + (xy 184.901967 103.056348) + (xy 184.929078 103.096922) + (xy 184.971252 103.125102) + (xy 184.977285 103.126302) + (xy 184.977287 103.126303) + (xy 185.008442 103.1325) + (xy 185.008043 103.134506) + (xy 185.044841 103.154209) + (xy 185.059 103.193824) + (xy 185.059 103.580525) + (xy 185.040694 103.624719) + (xy 185.029855 103.63338) + (xy 185.01281 103.644135) + (xy 185.007842 103.646959) + (xy 185.001757 103.650059) + (xy 185.001756 103.65006) + (xy 184.997375 103.652292) + (xy 184.993897 103.65577) + (xy 184.992445 103.656825) + (xy 184.989058 103.65912) + (xy 184.97008 103.671095) + (xy 184.967137 103.674427) + (xy 184.967135 103.674429) + (xy 184.907156 103.742342) + (xy 184.906032 103.743538) + (xy 184.905775 103.743892) + (xy 184.905554 103.744113) + (xy 184.905405 103.744204) + (xy 184.904504 103.745163) + (xy 184.902292 103.747375) + (xy 184.901509 103.746592) + (xy 184.900362 103.747296) + (xy 184.901721 103.748496) + (xy 184.889018 103.762879) + (xy 184.887127 103.766907) + (xy 184.838868 103.869695) + (xy 184.838867 103.869698) + (xy 184.836976 103.873726) + (xy 184.818136 103.994724) + (xy 184.818713 103.999137) + (xy 184.818713 103.999138) + (xy 184.832575 104.105139) + (xy 184.834014 104.116145) + (xy 184.841185 104.132443) + (xy 184.841244 104.132813) + (xy 184.842007 104.134311) + (xy 184.844031 104.13891) + (xy 184.844031 104.138911) + (xy 184.861681 104.179022) + (xy 184.883333 104.22823) + (xy 184.897272 104.244813) + (xy 184.898029 104.245713) + (xy 184.900157 104.248434) + (xy 184.902292 104.252625) + (xy 184.910081 104.260414) + (xy 184.913729 104.264391) + (xy 184.962127 104.321968) + (xy 184.985399 104.337459) + (xy 184.991836 104.342733) + (xy 184.993899 104.344232) + (xy 184.997375 104.347708) + (xy 185.001753 104.349939) + (xy 185.001756 104.349941) + (xy 185.00873 104.353494) + (xy 185.014977 104.357148) + (xy 185.064064 104.389823) + (xy 185.068313 104.391151) + (xy 185.068314 104.391151) + (xy 185.100296 104.401143) + (xy 185.110027 104.405109) + (xy 185.112799 104.406521) + (xy 185.112803 104.406522) + (xy 185.117187 104.408756) + (xy 185.127852 104.410445) + (xy 185.136713 104.41252) + (xy 185.176696 104.425012) + (xy 185.176699 104.425012) + (xy 185.180948 104.42634) + (xy 185.230069 104.427241) + (xy 185.238683 104.427999) + (xy 185.24514 104.429022) + (xy 185.245144 104.429022) + (xy 185.25 104.429791) + (xy 185.256947 104.42869) + (xy 185.267853 104.427933) + (xy 185.303383 104.428584) + (xy 185.363532 104.412185) + (xy 185.37019 104.410755) + (xy 185.372147 104.410445) + (xy 185.382813 104.408756) + (xy 185.387196 104.406522) + (xy 185.391875 104.405002) + (xy 185.391878 104.40501) + (xy 185.396727 104.403136) + (xy 185.421527 104.396375) + (xy 185.426521 104.393309) + (xy 185.489709 104.354511) + (xy 185.494037 104.352085) + (xy 185.49824 104.349944) + (xy 185.498248 104.349938) + (xy 185.502625 104.347708) + (xy 185.505427 104.344906) + (xy 185.506264 104.344346) + (xy 185.508891 104.342733) + (xy 185.525881 104.332301) + (xy 185.608058 104.241513) + (xy 185.661451 104.131311) + (xy 185.663317 104.120224) + (xy 185.675388 104.048467) + (xy 185.681767 104.010552) + (xy 185.681896 104) + (xy 185.664536 103.878781) + (xy 185.613852 103.767307) + (xy 185.599199 103.750302) + (xy 185.597708 103.747375) + (xy 185.5919 103.741567) + (xy 185.588746 103.73817) + (xy 185.536826 103.677914) + (xy 185.533918 103.674539) + (xy 185.513741 103.661461) + (xy 185.510155 103.658559) + (xy 185.510081 103.658661) + (xy 185.506106 103.655773) + (xy 185.502625 103.652292) + (xy 185.491343 103.646543) + (xy 185.485735 103.643308) + (xy 185.469505 103.632788) + (xy 185.442377 103.593389) + (xy 185.441 103.580342) + (xy 185.441 103.193824) + (xy 185.459306 103.14963) + (xy 185.491896 103.134201) + (xy 185.491558 103.1325) + (xy 185.494569 103.131901) + (xy 185.522713 103.126303) + (xy 185.522715 103.126302) + (xy 185.528748 103.125102) + (xy 185.570922 103.096922) + (xy 185.598033 103.056348) + (xy 185.637807 103.029772) + (xy 185.684723 103.039104) + (xy 185.701967 103.056348) + (xy 185.729078 103.096922) + (xy 185.771252 103.125102) + (xy 185.777285 103.126302) + (xy 185.777287 103.126303) + (xy 185.802917 103.131401) + (xy 185.808442 103.1325) + (xy 186.291558 103.1325) + (xy 186.297083 103.131401) + (xy 186.322713 103.126303) + (xy 186.322715 103.126302) + (xy 186.328748 103.125102) + (xy 186.370922 103.096922) + (xy 186.374963 103.090874) + (xy 186.398335 103.055897) + (xy 186.438109 103.029322) + (xy 186.485025 103.038655) + (xy 186.502268 103.055899) + (xy 186.526017 103.091443) + (xy 186.534555 103.099981) + (xy 186.56633 103.121212) + (xy 186.577482 103.125831) + (xy 186.605481 103.131401) + (xy 186.611562 103.132) + (xy 186.774069 103.132) + (xy 186.782859 103.128359) + (xy 186.7865 103.119569) + (xy 186.7865 101.380431) + (xy 186.782859 101.371641) + (xy 186.774069 101.368) + (xy 186.611562 101.368) + (xy 186.605481 101.368599) + (xy 186.577482 101.374169) + (xy 186.56633 101.378788) + (xy 186.534555 101.400019) + (xy 186.526017 101.408557) + (xy 186.502268 101.444101) + (xy 186.462495 101.470678) + (xy 186.415579 101.461346) + (xy 186.398335 101.444103) + (xy 186.374342 101.408196) + (xy 186.374341 101.408195) + (xy 186.370922 101.403078) + (xy 186.328748 101.374898) + (xy 186.322715 101.373698) + (xy 186.322713 101.373697) + (xy 186.291558 101.3675) + (xy 186.291957 101.365494) + (xy 186.255159 101.345791) + (xy 186.241 101.306176) + (xy 186.241 101.043234) + (xy 186.242253 101.035893) + (xy 186.241524 101.03581) + (xy 186.242321 101.028819) + (xy 186.244653 101.022178) + (xy 186.241383 100.992793) + (xy 186.241 100.985881) + (xy 186.241 100.978467) + (xy 186.239421 100.971544) + (xy 186.238245 100.964591) + (xy 186.235015 100.935571) + (xy 186.231281 100.929607) + (xy 186.22991 100.92567) + (xy 186.228097 100.921904) + (xy 186.226532 100.915041) + (xy 186.208354 100.892229) + (xy 186.20426 100.886446) + (xy 186.202284 100.88329) + (xy 186.202279 100.883284) + (xy 186.200404 100.880289) + (xy 186.195191 100.875076) + (xy 186.190506 100.869832) + (xy 186.176612 100.852396) + (xy 186.176611 100.852396) + (xy 186.172225 100.846891) + (xy 186.165886 100.843833) + (xy 186.160385 100.839442) + (xy 186.160811 100.838908) + (xy 186.154647 100.834532) + (xy 183.888929 98.568814) + (xy 183.870623 98.52462) + (xy 183.888929 98.480426) + (xy 183.933123 98.46212) + (xy 184.816117 98.46212) + (xy 184.860311 98.480426) + (xy 187.440694 101.060808) + (xy 187.459 101.105002) + (xy 187.459 101.306176) + (xy 187.440694 101.35037) + (xy 187.408104 101.365799) + (xy 187.408442 101.3675) + (xy 187.377287 101.373697) + (xy 187.377285 101.373698) + (xy 187.371252 101.374898) + (xy 187.329078 101.403078) + (xy 187.325659 101.408195) + (xy 187.325658 101.408196) + (xy 187.301665 101.444103) + (xy 187.261891 101.470678) + (xy 187.214975 101.461345) + (xy 187.197732 101.444101) + (xy 187.173983 101.408557) + (xy 187.165445 101.400019) + (xy 187.13367 101.378788) + (xy 187.122518 101.374169) + (xy 187.094519 101.368599) + (xy 187.088438 101.368) + (xy 186.925931 101.368) + (xy 186.917141 101.371641) + (xy 186.9135 101.380431) + (xy 186.9135 103.119569) + (xy 186.917141 103.128359) + (xy 186.925931 103.132) + (xy 187.088438 103.132) + (xy 187.094519 103.131401) + (xy 187.122518 103.125831) + (xy 187.13367 103.121212) + (xy 187.165445 103.099981) + (xy 187.173983 103.091443) + (xy 187.197732 103.055899) + (xy 187.237505 103.029322) + (xy 187.284421 103.038654) + (xy 187.301665 103.055897) + (xy 187.325037 103.090874) + (xy 187.329078 103.096922) + (xy 187.371252 103.125102) + (xy 187.377285 103.126302) + (xy 187.377287 103.126303) + (xy 187.402917 103.131401) + (xy 187.408442 103.1325) + (xy 187.891558 103.1325) + (xy 187.897083 103.131401) + (xy 187.922713 103.126303) + (xy 187.922715 103.126302) + (xy 187.928748 103.125102) + (xy 187.970922 103.096922) + (xy 187.998033 103.056348) + (xy 188.037807 103.029772) + (xy 188.084723 103.039104) + (xy 188.101967 103.056348) + (xy 188.129078 103.096922) + (xy 188.171252 103.125102) + (xy 188.177285 103.126302) + (xy 188.177287 103.126303) + (xy 188.202917 103.131401) + (xy 188.208442 103.1325) + (xy 188.691558 103.1325) + (xy 188.697083 103.131401) + (xy 188.722713 103.126303) + (xy 188.722715 103.126302) + (xy 188.728748 103.125102) + (xy 188.770922 103.096922) + (xy 188.798033 103.056348) + (xy 188.837807 103.029772) + (xy 188.884723 103.039104) + (xy 188.901967 103.056348) + (xy 188.929078 103.096922) + (xy 188.971252 103.125102) + (xy 188.977285 103.126302) + (xy 188.977287 103.126303) + (xy 189.008442 103.1325) + (xy 189.008043 103.134506) + (xy 189.044841 103.154209) + (xy 189.059 103.193824) + (xy 189.059 103.580525) + (xy 189.040694 103.624719) + (xy 189.029855 103.63338) + (xy 189.01281 103.644135) + (xy 189.007842 103.646959) + (xy 189.001757 103.650059) + (xy 189.001756 103.65006) + (xy 188.997375 103.652292) + (xy 188.993897 103.65577) + (xy 188.992445 103.656825) + (xy 188.989058 103.65912) + (xy 188.97008 103.671095) + (xy 188.967137 103.674427) + (xy 188.967135 103.674429) + (xy 188.907156 103.742342) + (xy 188.906032 103.743538) + (xy 188.905775 103.743892) + (xy 188.905554 103.744113) + (xy 188.905405 103.744204) + (xy 188.904504 103.745163) + (xy 188.902292 103.747375) + (xy 188.901509 103.746592) + (xy 188.900362 103.747296) + (xy 188.901721 103.748496) + (xy 188.889018 103.762879) + (xy 188.887127 103.766907) + (xy 188.838868 103.869695) + (xy 188.838867 103.869698) + (xy 188.836976 103.873726) + (xy 188.818136 103.994724) + (xy 188.818713 103.999137) + (xy 188.818713 103.999138) + (xy 188.832575 104.105139) + (xy 188.834014 104.116145) + (xy 188.841185 104.132443) + (xy 188.841244 104.132813) + (xy 188.842007 104.134311) + (xy 188.844031 104.13891) + (xy 188.844031 104.138911) + (xy 188.861681 104.179022) + (xy 188.883333 104.22823) + (xy 188.897272 104.244813) + (xy 188.898029 104.245713) + (xy 188.900157 104.248434) + (xy 188.902292 104.252625) + (xy 188.910081 104.260414) + (xy 188.913729 104.264391) + (xy 188.962127 104.321968) + (xy 188.985399 104.337459) + (xy 188.991836 104.342733) + (xy 188.993899 104.344232) + (xy 188.997375 104.347708) + (xy 189.001753 104.349939) + (xy 189.001756 104.349941) + (xy 189.00873 104.353494) + (xy 189.014977 104.357148) + (xy 189.064064 104.389823) + (xy 189.068313 104.391151) + (xy 189.068314 104.391151) + (xy 189.100296 104.401143) + (xy 189.110027 104.405109) + (xy 189.112799 104.406521) + (xy 189.112803 104.406522) + (xy 189.117187 104.408756) + (xy 189.127852 104.410445) + (xy 189.136713 104.41252) + (xy 189.176696 104.425012) + (xy 189.176699 104.425012) + (xy 189.180948 104.42634) + (xy 189.230069 104.427241) + (xy 189.238683 104.427999) + (xy 189.24514 104.429022) + (xy 189.245144 104.429022) + (xy 189.25 104.429791) + (xy 189.256947 104.42869) + (xy 189.267853 104.427933) + (xy 189.303383 104.428584) + (xy 189.363532 104.412185) + (xy 189.37019 104.410755) + (xy 189.372147 104.410445) + (xy 189.382813 104.408756) + (xy 189.387196 104.406522) + (xy 189.391875 104.405002) + (xy 189.391878 104.40501) + (xy 189.396727 104.403136) + (xy 189.421527 104.396375) + (xy 189.426521 104.393309) + (xy 189.489709 104.354511) + (xy 189.494037 104.352085) + (xy 189.49824 104.349944) + (xy 189.498248 104.349938) + (xy 189.502625 104.347708) + (xy 189.505427 104.344906) + (xy 189.506264 104.344346) + (xy 189.508891 104.342733) + (xy 189.525881 104.332301) + (xy 189.608058 104.241513) + (xy 189.661451 104.131311) + (xy 189.663317 104.120224) + (xy 189.675388 104.048467) + (xy 189.681767 104.010552) + (xy 189.681896 104) + (xy 189.664536 103.878781) + (xy 189.613852 103.767307) + (xy 189.599199 103.750302) + (xy 189.597708 103.747375) + (xy 189.5919 103.741567) + (xy 189.588746 103.73817) + (xy 189.536826 103.677914) + (xy 189.533918 103.674539) + (xy 189.513741 103.661461) + (xy 189.510155 103.658559) + (xy 189.510081 103.658661) + (xy 189.506106 103.655773) + (xy 189.502625 103.652292) + (xy 189.491343 103.646543) + (xy 189.485735 103.643308) + (xy 189.469505 103.632788) + (xy 189.442377 103.593389) + (xy 189.441 103.580342) + (xy 189.441 103.193824) + (xy 189.459306 103.14963) + (xy 189.491896 103.134201) + (xy 189.491558 103.1325) + (xy 189.494569 103.131901) + (xy 189.522713 103.126303) + (xy 189.522715 103.126302) + (xy 189.528748 103.125102) + (xy 189.570922 103.096922) + (xy 189.598033 103.056348) + (xy 189.637807 103.029772) + (xy 189.684723 103.039104) + (xy 189.701967 103.056348) + (xy 189.729078 103.096922) + (xy 189.771252 103.125102) + (xy 189.777285 103.126302) + (xy 189.777287 103.126303) + (xy 189.802917 103.131401) + (xy 189.808442 103.1325) + (xy 190.291558 103.1325) + (xy 190.297083 103.131401) + (xy 190.322713 103.126303) + (xy 190.322715 103.126302) + (xy 190.328748 103.125102) + (xy 190.370922 103.096922) + (xy 190.398033 103.056348) + (xy 190.437807 103.029772) + (xy 190.484723 103.039104) + (xy 190.501967 103.056348) + (xy 190.529078 103.096922) + (xy 190.571252 103.125102) + (xy 190.577285 103.126302) + (xy 190.577287 103.126303) + (xy 190.602917 103.131401) + (xy 190.608442 103.1325) + (xy 191.091558 103.1325) + (xy 191.097083 103.131401) + (xy 191.122713 103.126303) + (xy 191.122715 103.126302) + (xy 191.128748 103.125102) + (xy 191.170922 103.096922) + (xy 191.174963 103.090874) + (xy 191.198335 103.055897) + (xy 191.238109 103.029322) + (xy 191.285025 103.038655) + (xy 191.302268 103.055899) + (xy 191.326017 103.091443) + (xy 191.334555 103.099981) + (xy 191.36633 103.121212) + (xy 191.377482 103.125831) + (xy 191.405481 103.131401) + (xy 191.411562 103.132) + (xy 191.574069 103.132) + (xy 191.582859 103.128359) + (xy 191.5865 103.119569) + (xy 191.5865 101.380431) + (xy 191.582859 101.371641) + (xy 191.574069 101.368) + (xy 191.411562 101.368) + (xy 191.405481 101.368599) + (xy 191.377482 101.374169) + (xy 191.36633 101.378788) + (xy 191.334555 101.400019) + (xy 191.326017 101.408557) + (xy 191.302268 101.444101) + (xy 191.262495 101.470678) + (xy 191.215579 101.461346) + (xy 191.198335 101.444103) + (xy 191.174342 101.408196) + (xy 191.174341 101.408195) + (xy 191.170922 101.403078) + (xy 191.128748 101.374898) + (xy 191.122715 101.373698) + (xy 191.122713 101.373697) + (xy 191.091558 101.3675) + (xy 191.091957 101.365494) + (xy 191.055159 101.345791) + (xy 191.041 101.306176) + (xy 191.041 101.043231) + (xy 191.04225 101.035892) + (xy 191.041523 101.035809) + (xy 191.04232 101.028818) + (xy 191.044652 101.022177) + (xy 191.041383 100.9928) + (xy 191.041 100.98589) + (xy 191.041 100.978467) + (xy 191.039422 100.971547) + (xy 191.038241 100.964567) + (xy 191.035792 100.942563) + (xy 191.035792 100.942562) + (xy 191.035014 100.935571) + (xy 191.031281 100.929608) + (xy 191.029907 100.925662) + (xy 191.028097 100.921902) + (xy 191.026532 100.915041) + (xy 191.021819 100.909126) + (xy 191.016908 100.902964) + (xy 191.008344 100.892217) + (xy 191.004254 100.886441) + (xy 191.000403 100.880289) + (xy 190.995195 100.875081) + (xy 190.99051 100.869837) + (xy 190.976612 100.852396) + (xy 190.976611 100.852396) + (xy 190.972225 100.846891) + (xy 190.965886 100.843833) + (xy 190.960385 100.839442) + (xy 190.960811 100.838909) + (xy 190.954645 100.834531) + (xy 187.674849 97.554734) + (xy 187.656543 97.51054) + (xy 187.674849 97.466346) + (xy 187.719043 97.44804) + (xy 188.602037 97.44804) + (xy 188.646231 97.466346) + (xy 192.240694 101.060809) + (xy 192.259 101.105003) + (xy 192.259 101.306176) + (xy 192.240694 101.35037) + (xy 192.208104 101.365799) + (xy 192.208442 101.3675) + (xy 192.177287 101.373697) + (xy 192.177285 101.373698) + (xy 192.171252 101.374898) + (xy 192.129078 101.403078) + (xy 192.125659 101.408195) + (xy 192.125658 101.408196) + (xy 192.101665 101.444103) + (xy 192.061891 101.470678) + (xy 192.014975 101.461345) + (xy 191.997732 101.444101) + (xy 191.973983 101.408557) + (xy 191.965445 101.400019) + (xy 191.93367 101.378788) + (xy 191.922518 101.374169) + (xy 191.894519 101.368599) + (xy 191.888438 101.368) + (xy 191.725931 101.368) + (xy 191.717141 101.371641) + (xy 191.7135 101.380431) + (xy 191.7135 103.119569) + (xy 191.717141 103.128359) + (xy 191.725931 103.132) + (xy 191.888438 103.132) + (xy 191.894519 103.131401) + (xy 191.922518 103.125831) + (xy 191.93367 103.121212) + (xy 191.965445 103.099981) + (xy 191.973983 103.091443) + (xy 191.997732 103.055899) + (xy 192.037505 103.029322) + (xy 192.084421 103.038654) + (xy 192.101665 103.055897) + (xy 192.125037 103.090874) + (xy 192.129078 103.096922) + (xy 192.171252 103.125102) + (xy 192.177285 103.126302) + (xy 192.177287 103.126303) + (xy 192.202917 103.131401) + (xy 192.208442 103.1325) + (xy 192.691558 103.1325) + (xy 192.697083 103.131401) + (xy 192.722713 103.126303) + (xy 192.722715 103.126302) + (xy 192.728748 103.125102) + (xy 192.770922 103.096922) + (xy 192.798033 103.056348) + (xy 192.837807 103.029772) + (xy 192.884723 103.039104) + (xy 192.901967 103.056348) + (xy 192.929078 103.096922) + (xy 192.971252 103.125102) + (xy 192.977285 103.126302) + (xy 192.977287 103.126303) + (xy 193.002917 103.131401) + (xy 193.008442 103.1325) + (xy 193.491558 103.1325) + (xy 193.497083 103.131401) + (xy 193.522713 103.126303) + (xy 193.522715 103.126302) + (xy 193.528748 103.125102) + (xy 193.570922 103.096922) + (xy 193.598033 103.056348) + (xy 193.637807 103.029772) + (xy 193.684723 103.039104) + (xy 193.701967 103.056348) + (xy 193.729078 103.096922) + (xy 193.771252 103.125102) + (xy 193.777285 103.126302) + (xy 193.777287 103.126303) + (xy 193.808442 103.1325) + (xy 193.808043 103.134506) + (xy 193.844841 103.154209) + (xy 193.859 103.193824) + (xy 193.859 103.580525) + (xy 193.840694 103.624719) + (xy 193.829855 103.63338) + (xy 193.81281 103.644135) + (xy 193.807842 103.646959) + (xy 193.801757 103.650059) + (xy 193.801756 103.65006) + (xy 193.797375 103.652292) + (xy 193.793897 103.65577) + (xy 193.792445 103.656825) + (xy 193.789058 103.65912) + (xy 193.77008 103.671095) + (xy 193.767137 103.674427) + (xy 193.767135 103.674429) + (xy 193.707156 103.742342) + (xy 193.706032 103.743538) + (xy 193.705775 103.743892) + (xy 193.705554 103.744113) + (xy 193.705405 103.744204) + (xy 193.704504 103.745163) + (xy 193.702292 103.747375) + (xy 193.701509 103.746592) + (xy 193.700362 103.747296) + (xy 193.701721 103.748496) + (xy 193.689018 103.762879) + (xy 193.687127 103.766907) + (xy 193.638868 103.869695) + (xy 193.638867 103.869698) + (xy 193.636976 103.873726) + (xy 193.618136 103.994724) + (xy 193.618713 103.999137) + (xy 193.618713 103.999138) + (xy 193.632575 104.105139) + (xy 193.634014 104.116145) + (xy 193.641185 104.132443) + (xy 193.641244 104.132813) + (xy 193.642007 104.134311) + (xy 193.644031 104.13891) + (xy 193.644031 104.138911) + (xy 193.661681 104.179022) + (xy 193.683333 104.22823) + (xy 193.697272 104.244813) + (xy 193.698029 104.245713) + (xy 193.700157 104.248434) + (xy 193.702292 104.252625) + (xy 193.710081 104.260414) + (xy 193.713729 104.264391) + (xy 193.762127 104.321968) + (xy 193.785399 104.337459) + (xy 193.791836 104.342733) + (xy 193.793899 104.344232) + (xy 193.797375 104.347708) + (xy 193.801753 104.349939) + (xy 193.801756 104.349941) + (xy 193.80873 104.353494) + (xy 193.814977 104.357148) + (xy 193.864064 104.389823) + (xy 193.868313 104.391151) + (xy 193.868314 104.391151) + (xy 193.900296 104.401143) + (xy 193.910027 104.405109) + (xy 193.912799 104.406521) + (xy 193.912803 104.406522) + (xy 193.917187 104.408756) + (xy 193.927852 104.410445) + (xy 193.936713 104.41252) + (xy 193.976696 104.425012) + (xy 193.976699 104.425012) + (xy 193.980948 104.42634) + (xy 194.030069 104.427241) + (xy 194.038683 104.427999) + (xy 194.04514 104.429022) + (xy 194.045144 104.429022) + (xy 194.05 104.429791) + (xy 194.056947 104.42869) + (xy 194.067853 104.427933) + (xy 194.103383 104.428584) + (xy 194.163532 104.412185) + (xy 194.17019 104.410755) + (xy 194.172147 104.410445) + (xy 194.182813 104.408756) + (xy 194.187196 104.406522) + (xy 194.191875 104.405002) + (xy 194.191878 104.40501) + (xy 194.196727 104.403136) + (xy 194.221527 104.396375) + (xy 194.226521 104.393309) + (xy 194.289709 104.354511) + (xy 194.294037 104.352085) + (xy 194.29824 104.349944) + (xy 194.298248 104.349938) + (xy 194.302625 104.347708) + (xy 194.305427 104.344906) + (xy 194.306264 104.344346) + (xy 194.308891 104.342733) + (xy 194.325881 104.332301) + (xy 194.408058 104.241513) + (xy 194.461451 104.131311) + (xy 194.463317 104.120224) + (xy 194.475388 104.048467) + (xy 194.481767 104.010552) + (xy 194.481896 104) + (xy 194.464536 103.878781) + (xy 194.413852 103.767307) + (xy 194.399199 103.750302) + (xy 194.397708 103.747375) + (xy 194.3919 103.741567) + (xy 194.388746 103.73817) + (xy 194.336826 103.677914) + (xy 194.333918 103.674539) + (xy 194.313741 103.661461) + (xy 194.310155 103.658559) + (xy 194.310081 103.658661) + (xy 194.306106 103.655773) + (xy 194.302625 103.652292) + (xy 194.291343 103.646543) + (xy 194.285735 103.643308) + (xy 194.269505 103.632788) + (xy 194.242377 103.593389) + (xy 194.241 103.580342) + (xy 194.241 103.193824) + (xy 194.259306 103.14963) + (xy 194.291896 103.134201) + (xy 194.291558 103.1325) + (xy 194.294569 103.131901) + (xy 194.322713 103.126303) + (xy 194.322715 103.126302) + (xy 194.328748 103.125102) + (xy 194.370922 103.096922) + (xy 194.398033 103.056348) + (xy 194.437807 103.029772) + (xy 194.484723 103.039104) + (xy 194.501967 103.056348) + (xy 194.529078 103.096922) + (xy 194.571252 103.125102) + (xy 194.577285 103.126302) + (xy 194.577287 103.126303) + (xy 194.602917 103.131401) + (xy 194.608442 103.1325) + (xy 195.091558 103.1325) + (xy 195.097083 103.131401) + (xy 195.122713 103.126303) + (xy 195.122715 103.126302) + (xy 195.128748 103.125102) + (xy 195.170922 103.096922) + (xy 195.198033 103.056348) + (xy 195.237807 103.029772) + (xy 195.284723 103.039104) + (xy 195.301967 103.056348) + (xy 195.329078 103.096922) + (xy 195.371252 103.125102) + (xy 195.377285 103.126302) + (xy 195.377287 103.126303) + (xy 195.408442 103.1325) + (xy 195.408043 103.134506) + (xy 195.444841 103.154209) + (xy 195.459 103.193824) + (xy 195.459 103.580525) + (xy 195.440694 103.624719) + (xy 195.429855 103.63338) + (xy 195.41281 103.644135) + (xy 195.407842 103.646959) + (xy 195.401757 103.650059) + (xy 195.401756 103.65006) + (xy 195.397375 103.652292) + (xy 195.393897 103.65577) + (xy 195.392445 103.656825) + (xy 195.389058 103.65912) + (xy 195.37008 103.671095) + (xy 195.367137 103.674427) + (xy 195.367135 103.674429) + (xy 195.307156 103.742342) + (xy 195.306032 103.743538) + (xy 195.305775 103.743892) + (xy 195.305554 103.744113) + (xy 195.305405 103.744204) + (xy 195.304504 103.745163) + (xy 195.302292 103.747375) + (xy 195.301509 103.746592) + (xy 195.300362 103.747296) + (xy 195.301721 103.748496) + (xy 195.289018 103.762879) + (xy 195.287127 103.766907) + (xy 195.238868 103.869695) + (xy 195.238867 103.869698) + (xy 195.236976 103.873726) + (xy 195.218136 103.994724) + (xy 195.218713 103.999137) + (xy 195.218713 103.999138) + (xy 195.232575 104.105139) + (xy 195.234014 104.116145) + (xy 195.241185 104.132443) + (xy 195.241244 104.132813) + (xy 195.242007 104.134311) + (xy 195.244031 104.13891) + (xy 195.244031 104.138911) + (xy 195.261681 104.179022) + (xy 195.283333 104.22823) + (xy 195.297272 104.244813) + (xy 195.298029 104.245713) + (xy 195.300157 104.248434) + (xy 195.302292 104.252625) + (xy 195.310081 104.260414) + (xy 195.313729 104.264391) + (xy 195.362127 104.321968) + (xy 195.385399 104.337459) + (xy 195.391836 104.342733) + (xy 195.393899 104.344232) + (xy 195.397375 104.347708) + (xy 195.401753 104.349939) + (xy 195.401756 104.349941) + (xy 195.40873 104.353494) + (xy 195.414977 104.357148) + (xy 195.464064 104.389823) + (xy 195.468313 104.391151) + (xy 195.468314 104.391151) + (xy 195.500296 104.401143) + (xy 195.510027 104.405109) + (xy 195.512799 104.406521) + (xy 195.512803 104.406522) + (xy 195.517187 104.408756) + (xy 195.527852 104.410445) + (xy 195.536713 104.41252) + (xy 195.576696 104.425012) + (xy 195.576699 104.425012) + (xy 195.580948 104.42634) + (xy 195.630069 104.427241) + (xy 195.638683 104.427999) + (xy 195.64514 104.429022) + (xy 195.645144 104.429022) + (xy 195.65 104.429791) + (xy 195.656947 104.42869) + (xy 195.667853 104.427933) + (xy 195.703383 104.428584) + (xy 195.763532 104.412185) + (xy 195.77019 104.410755) + (xy 195.772147 104.410445) + (xy 195.782813 104.408756) + (xy 195.787196 104.406522) + (xy 195.791875 104.405002) + (xy 195.791878 104.40501) + (xy 195.796727 104.403136) + (xy 195.821527 104.396375) + (xy 195.826521 104.393309) + (xy 195.889709 104.354511) + (xy 195.894037 104.352085) + (xy 195.89824 104.349944) + (xy 195.898248 104.349938) + (xy 195.902625 104.347708) + (xy 195.905427 104.344906) + (xy 195.906264 104.344346) + (xy 195.908891 104.342733) + (xy 195.925881 104.332301) + (xy 196.008058 104.241513) + (xy 196.061451 104.131311) + (xy 196.063317 104.120224) + (xy 196.075388 104.048467) + (xy 196.081767 104.010552) + (xy 196.081896 104) + (xy 196.064536 103.878781) + (xy 196.013852 103.767307) + (xy 195.999199 103.750302) + (xy 195.997708 103.747375) + (xy 195.9919 103.741567) + (xy 195.988746 103.73817) + (xy 195.936826 103.677914) + (xy 195.933918 103.674539) + (xy 195.913741 103.661461) + (xy 195.910155 103.658559) + (xy 195.910081 103.658661) + (xy 195.906106 103.655773) + (xy 195.902625 103.652292) + (xy 195.891343 103.646543) + (xy 195.885735 103.643308) + (xy 195.869505 103.632788) + (xy 195.842377 103.593389) + (xy 195.841 103.580342) + (xy 195.841 103.193824) + (xy 195.859306 103.14963) + (xy 195.891896 103.134201) + (xy 195.891558 103.1325) + (xy 195.894569 103.131901) + (xy 195.922713 103.126303) + (xy 195.922715 103.126302) + (xy 195.928748 103.125102) + (xy 195.970922 103.096922) + (xy 195.999102 103.054748) + (xy 196.002304 103.038655) + (xy 196.005901 103.020569) + (xy 196.0065 103.017558) + (xy 196.0065 101.482442) + (xy 196.002389 101.461776) + (xy 196.000303 101.451287) + (xy 196.000302 101.451285) + (xy 195.999102 101.445252) + (xy 195.970922 101.403078) + (xy 195.928748 101.374898) + (xy 195.922715 101.373698) + (xy 195.922713 101.373697) + (xy 195.894569 101.368099) + (xy 195.891558 101.3675) + (xy 195.408442 101.3675) + (xy 195.405431 101.368099) + (xy 195.377287 101.373697) + (xy 195.377285 101.373698) + (xy 195.371252 101.374898) + (xy 195.329078 101.403078) + (xy 195.325659 101.408195) + (xy 195.301967 101.443652) + (xy 195.262193 101.470228) + (xy 195.215277 101.460896) + (xy 195.198033 101.443652) + (xy 195.174341 101.408195) + (xy 195.170922 101.403078) + (xy 195.128748 101.374898) + (xy 195.122715 101.373698) + (xy 195.122713 101.373697) + (xy 195.091558 101.3675) + (xy 195.091957 101.365494) + (xy 195.055159 101.345791) + (xy 195.041 101.306176) + (xy 195.041 101.043234) + (xy 195.042253 101.035893) + (xy 195.041524 101.03581) + (xy 195.042321 101.028819) + (xy 195.044653 101.022178) + (xy 195.041383 100.992794) + (xy 195.041 100.985882) + (xy 195.041 100.978467) + (xy 195.03942 100.971538) + (xy 195.038245 100.964595) + (xy 195.035015 100.935572) + (xy 195.03128 100.929606) + (xy 195.029908 100.925667) + (xy 195.028097 100.921904) + (xy 195.026532 100.915041) + (xy 195.008351 100.892226) + (xy 195.004256 100.886441) + (xy 195.00228 100.883285) + (xy 195.002279 100.883283) + (xy 195.000404 100.880289) + (xy 194.995191 100.875076) + (xy 194.990506 100.869832) + (xy 194.976612 100.852396) + (xy 194.976611 100.852396) + (xy 194.972225 100.846891) + (xy 194.965886 100.843833) + (xy 194.960385 100.839442) + (xy 194.960811 100.838908) + (xy 194.954647 100.834532) + (xy 190.765628 96.645513) + (xy 190.761323 96.639439) + (xy 190.76075 96.639895) + (xy 190.756369 96.634387) + (xy 190.753322 96.628042) + (xy 190.730239 96.609582) + (xy 190.72508 96.604965) + (xy 190.719831 96.599716) + (xy 190.713828 96.595943) + (xy 190.708052 96.591838) + (xy 190.685267 96.573617) + (xy 190.678407 96.57204) + (xy 190.674647 96.570222) + (xy 190.670711 96.568844) + (xy 190.664752 96.565098) + (xy 190.657758 96.564307) + (xy 190.657757 96.564307) + (xy 190.635764 96.561821) + (xy 190.628787 96.560629) + (xy 190.621703 96.559) + (xy 190.614329 96.559) + (xy 190.607308 96.558604) + (xy 190.605627 96.558414) + (xy 190.578162 96.555309) + (xy 190.571517 96.55763) + (xy 190.564523 96.558414) + (xy 190.564447 96.557736) + (xy 190.556995 96.559) + (xy 169.779119 96.559) + (xy 169.734925 96.540694) + (xy 169.716619 96.4965) + (xy 169.727153 96.461776) + (xy 169.728804 96.459306) + (xy 169.765751 96.404012) + (xy 169.770041 96.382443) + (xy 169.776901 96.347957) + (xy 169.776901 96.347954) + (xy 169.7775 96.344944) + (xy 169.7775 96.155056) + (xy 169.775973 96.147376) + (xy 169.766952 96.102025) + (xy 169.766952 96.102024) + (xy 169.766437 96.099438) + (xy 198.323 96.099438) + (xy 198.323599 96.105519) + (xy 198.329169 96.133518) + (xy 198.333788 96.14467) + (xy 198.355019 96.176445) + (xy 198.363555 96.184981) + (xy 198.39533 96.206212) + (xy 198.406482 96.210831) + (xy 198.434481 96.216401) + (xy 198.440562 96.217) + (xy 199.274069 96.217) + (xy 199.282859 96.213359) + (xy 199.2865 96.204569) + (xy 199.4135 96.204569) + (xy 199.417141 96.213359) + (xy 199.425931 96.217) + (xy 200.259438 96.217) + (xy 200.265519 96.216401) + (xy 200.293518 96.210831) + (xy 200.30467 96.206212) + (xy 200.336445 96.184981) + (xy 200.344981 96.176445) + (xy 200.366212 96.14467) + (xy 200.370831 96.133518) + (xy 200.376401 96.105519) + (xy 200.377 96.099438) + (xy 200.377 95.580931) + (xy 200.373359 95.572141) + (xy 200.364569 95.5685) + (xy 199.425931 95.5685) + (xy 199.417141 95.572141) + (xy 199.4135 95.580931) + (xy 199.4135 96.204569) + (xy 199.2865 96.204569) + (xy 199.2865 95.580931) + (xy 199.282859 95.572141) + (xy 199.274069 95.5685) + (xy 198.335431 95.5685) + (xy 198.326641 95.572141) + (xy 198.323 95.580931) + (xy 198.323 96.099438) + (xy 169.766437 96.099438) + (xy 169.765751 96.095988) + (xy 169.720994 96.029006) + (xy 169.654012 95.984249) + (xy 169.647976 95.983048) + (xy 169.647975 95.983048) + (xy 169.597957 95.973099) + (xy 169.597954 95.973099) + (xy 169.594944 95.9725) + (xy 169.2535 95.9725) + (xy 169.209306 95.954194) + (xy 169.191 95.91) + (xy 169.191 94.439438) + (xy 188.073 94.439438) + (xy 188.073599 94.445519) + (xy 188.079169 94.473518) + (xy 188.083788 94.48467) + (xy 188.105019 94.516445) + (xy 188.113555 94.524981) + (xy 188.14533 94.546212) + (xy 188.156482 94.550831) + (xy 188.184481 94.556401) + (xy 188.190562 94.557) + (xy 188.799069 94.557) + (xy 188.807859 94.553359) + (xy 188.8115 94.544569) + (xy 188.9385 94.544569) + (xy 188.942141 94.553359) + (xy 188.950931 94.557) + (xy 189.559438 94.557) + (xy 189.565519 94.556401) + (xy 189.593518 94.550831) + (xy 189.60467 94.546212) + (xy 189.636445 94.524981) + (xy 189.644981 94.516445) + (xy 189.666212 94.48467) + (xy 189.670831 94.473518) + (xy 189.676401 94.445519) + (xy 189.677 94.439438) + (xy 189.677 93.555931) + (xy 189.673359 93.547141) + (xy 189.664569 93.5435) + (xy 188.950931 93.5435) + (xy 188.942141 93.547141) + (xy 188.9385 93.555931) + (xy 188.9385 94.544569) + (xy 188.8115 94.544569) + (xy 188.8115 93.555931) + (xy 188.807859 93.547141) + (xy 188.799069 93.5435) + (xy 188.085431 93.5435) + (xy 188.076641 93.547141) + (xy 188.073 93.555931) + (xy 188.073 94.439438) + (xy 169.191 94.439438) + (xy 169.191 93.669384) + (xy 169.209306 93.62519) + (xy 169.220797 93.616123) + (xy 169.237092 93.606118) + (xy 169.239713 93.604508) + (xy 169.244034 93.602085) + (xy 169.252625 93.597708) + (xy 169.255427 93.594906) + (xy 169.256264 93.594346) + (xy 169.258891 93.592733) + (xy 169.275881 93.582301) + (xy 169.358058 93.491513) + (xy 169.400425 93.404069) + (xy 188.073 93.404069) + (xy 188.076641 93.412859) + (xy 188.085431 93.4165) + (xy 188.799069 93.4165) + (xy 188.807859 93.412859) + (xy 188.8115 93.404069) + (xy 188.9385 93.404069) + (xy 188.942141 93.412859) + (xy 188.950931 93.4165) + (xy 189.664569 93.4165) + (xy 189.673359 93.412859) + (xy 189.677 93.404069) + (xy 189.677 92.520562) + (xy 189.676401 92.514481) + (xy 189.670831 92.486482) + (xy 189.666212 92.47533) + (xy 189.644981 92.443555) + (xy 189.636445 92.435019) + (xy 189.60467 92.413788) + (xy 189.593518 92.409169) + (xy 189.565519 92.403599) + (xy 189.559438 92.403) + (xy 188.950931 92.403) + (xy 188.942141 92.406641) + (xy 188.9385 92.415431) + (xy 188.9385 93.404069) + (xy 188.8115 93.404069) + (xy 188.8115 92.415431) + (xy 188.807859 92.406641) + (xy 188.799069 92.403) + (xy 188.190562 92.403) + (xy 188.184481 92.403599) + (xy 188.156482 92.409169) + (xy 188.14533 92.413788) + (xy 188.113555 92.435019) + (xy 188.105019 92.443555) + (xy 188.083788 92.47533) + (xy 188.079169 92.486482) + (xy 188.073599 92.514481) + (xy 188.073 92.520562) + (xy 188.073 93.404069) + (xy 169.400425 93.404069) + (xy 169.411451 93.381311) + (xy 169.413317 93.370224) + (xy 169.427937 93.283317) + (xy 169.431767 93.260552) + (xy 169.431896 93.25) + (xy 169.414536 93.128781) + (xy 169.363852 93.017307) + (xy 169.349199 93.000302) + (xy 169.347708 92.997375) + (xy 169.3419 92.991567) + (xy 169.338746 92.98817) + (xy 169.287795 92.929038) + (xy 169.283918 92.924539) + (xy 169.263741 92.911461) + (xy 169.260155 92.908559) + (xy 169.260081 92.908661) + (xy 169.256106 92.905773) + (xy 169.252625 92.902292) + (xy 169.241343 92.896543) + (xy 169.235736 92.893309) + (xy 169.184893 92.860354) + (xy 169.18489 92.860353) + (xy 169.18116 92.857935) + (xy 169.176901 92.856661) + (xy 169.176898 92.85666) + (xy 169.158345 92.851112) + (xy 169.148839 92.848269) + (xy 169.138377 92.844079) + (xy 169.132813 92.841244) + (xy 169.121067 92.839384) + (xy 169.112951 92.837536) + (xy 169.063838 92.822848) + (xy 169.019496 92.822577) + (xy 169.010103 92.821809) + (xy 169.004857 92.820978) + (xy 169.004856 92.820978) + (xy 169 92.820209) + (xy 168.991373 92.821576) + (xy 168.98122 92.822344) + (xy 168.962836 92.822231) + (xy 168.945838 92.822127) + (xy 168.945836 92.822127) + (xy 168.941385 92.8221) + (xy 168.887011 92.837641) + (xy 168.879623 92.839275) + (xy 168.867187 92.841244) + (xy 168.862804 92.843477) + (xy 168.86187 92.843781) + (xy 168.852155 92.847603) + (xy 168.827929 92.854526) + (xy 168.827927 92.854527) + (xy 168.823644 92.855751) + (xy 168.819875 92.858129) + (xy 168.815624 92.860811) + (xy 168.764119 92.893309) + (xy 168.762819 92.894129) + (xy 168.757842 92.896959) + (xy 168.751757 92.900059) + (xy 168.751756 92.90006) + (xy 168.747375 92.902292) + (xy 168.743897 92.90577) + (xy 168.742445 92.906825) + (xy 168.739058 92.90912) + (xy 168.72008 92.921095) + (xy 168.717137 92.924427) + (xy 168.717135 92.924429) + (xy 168.657156 92.992342) + (xy 168.656032 92.993538) + (xy 168.655775 92.993892) + (xy 168.655554 92.994113) + (xy 168.655405 92.994204) + (xy 168.654504 92.995163) + (xy 168.652292 92.997375) + (xy 168.651509 92.996592) + (xy 168.650362 92.997296) + (xy 168.651721 92.998496) + (xy 168.642174 93.009306) + (xy 168.639018 93.012879) + (xy 168.634595 93.0223) + (xy 168.588868 93.119695) + (xy 168.588867 93.119698) + (xy 168.586976 93.123726) + (xy 168.568136 93.244724) + (xy 168.568713 93.249137) + (xy 168.568713 93.249138) + (xy 168.579636 93.332669) + (xy 168.584014 93.366145) + (xy 168.591185 93.382443) + (xy 168.591244 93.382813) + (xy 168.592007 93.384311) + (xy 168.594031 93.38891) + (xy 168.594031 93.388911) + (xy 168.631296 93.4736) + (xy 168.633333 93.47823) + (xy 168.644842 93.491922) + (xy 168.648029 93.495713) + (xy 168.650157 93.498434) + (xy 168.652292 93.502625) + (xy 168.660081 93.510414) + (xy 168.663729 93.514391) + (xy 168.712127 93.571968) + (xy 168.735399 93.587459) + (xy 168.741836 93.592733) + (xy 168.743899 93.594232) + (xy 168.747375 93.597708) + (xy 168.751753 93.599939) + (xy 168.751756 93.599941) + (xy 168.75873 93.603494) + (xy 168.764983 93.607152) + (xy 168.768634 93.609582) + (xy 168.781134 93.617903) + (xy 168.807778 93.657631) + (xy 168.809 93.669929) + (xy 168.809 95.91) + (xy 168.790694 95.954194) + (xy 168.7465 95.9725) + (xy 168.230056 95.9725) + (xy 168.227046 95.973099) + (xy 168.227043 95.973099) + (xy 168.177025 95.983048) + (xy 168.177024 95.983048) + (xy 168.170988 95.984249) + (xy 168.104006 96.029006) + (xy 168.100587 96.034123) + (xy 168.096234 96.038476) + (xy 168.094406 96.036648) + (xy 168.062752 96.057799) + (xy 168.050558 96.059) + (xy 167.423049 96.059) + (xy 167.378855 96.040694) + (xy 167.366156 96.022373) + (xy 167.365695 96.02136) + (xy 167.365694 96.021359) + (xy 167.363852 96.017307) + (xy 167.349199 96.000302) + (xy 167.347708 95.997375) + (xy 167.3419 95.991567) + (xy 167.338746 95.98817) + (xy 167.286826 95.927914) + (xy 167.283918 95.924539) + (xy 167.263741 95.911461) + (xy 167.260155 95.908559) + (xy 167.260081 95.908661) + (xy 167.256106 95.905773) + (xy 167.252625 95.902292) + (xy 167.241343 95.896543) + (xy 167.235736 95.893309) + (xy 167.184893 95.860354) + (xy 167.18489 95.860353) + (xy 167.18116 95.857935) + (xy 167.176901 95.856661) + (xy 167.176898 95.85666) + (xy 167.155275 95.850194) + (xy 167.148839 95.848269) + (xy 167.138377 95.844079) + (xy 167.132813 95.841244) + (xy 167.121067 95.839384) + (xy 167.112951 95.837536) + (xy 167.089508 95.830525) + (xy 167.063838 95.822848) + (xy 167.019496 95.822577) + (xy 167.010103 95.821809) + (xy 167.004857 95.820978) + (xy 167.004856 95.820978) + (xy 167 95.820209) + (xy 166.991373 95.821576) + (xy 166.98122 95.822344) + (xy 166.962836 95.822231) + (xy 166.945838 95.822127) + (xy 166.945836 95.822127) + (xy 166.941385 95.8221) + (xy 166.887011 95.837641) + (xy 166.879623 95.839275) + (xy 166.867187 95.841244) + (xy 166.862804 95.843477) + (xy 166.86187 95.843781) + (xy 166.852155 95.847603) + (xy 166.827929 95.854526) + (xy 166.827927 95.854527) + (xy 166.823644 95.855751) + (xy 166.819874 95.85813) + (xy 166.818721 95.858857) + (xy 166.817382 95.859244) + (xy 166.815813 95.859946) + (xy 166.815715 95.859726) + (xy 166.785369 95.8685) + (xy 162.7535 95.8685) + (xy 162.709306 95.850194) + (xy 162.691 95.806) + (xy 162.691 95.204119) + (xy 162.709306 95.159925) + (xy 162.7535 95.141619) + (xy 162.788223 95.152153) + (xy 162.845988 95.190751) + (xy 162.852024 95.191952) + (xy 162.852025 95.191952) + (xy 162.902043 95.201901) + (xy 162.902046 95.201901) + (xy 162.905056 95.2025) + (xy 163.094944 95.2025) + (xy 163.097954 95.201901) + (xy 163.097957 95.201901) + (xy 163.147975 95.191952) + (xy 163.147976 95.191952) + (xy 163.154012 95.190751) + (xy 163.215726 95.149514) + (xy 163.262642 95.140181) + (xy 163.285173 95.149513) + (xy 163.341067 95.186859) + (xy 163.352221 95.19148) + (xy 163.402096 95.201401) + (xy 163.408177 95.202) + (xy 163.424069 95.202) + (xy 163.432859 95.198359) + (xy 163.4365 95.189569) + (xy 163.4365 95.189568) + (xy 163.5635 95.189568) + (xy 163.567141 95.198358) + (xy 163.575931 95.201999) + (xy 163.591821 95.201999) + (xy 163.597906 95.2014) + (xy 163.647776 95.19148) + (xy 163.658934 95.186858) + (xy 163.714827 95.149513) + (xy 163.761744 95.140181) + (xy 163.784272 95.149513) + (xy 163.845988 95.190751) + (xy 163.852024 95.191952) + (xy 163.852025 95.191952) + (xy 163.902043 95.201901) + (xy 163.902046 95.201901) + (xy 163.905056 95.2025) + (xy 164.094944 95.2025) + (xy 164.097954 95.201901) + (xy 164.097957 95.201901) + (xy 164.147975 95.191952) + (xy 164.147976 95.191952) + (xy 164.154012 95.190751) + (xy 164.215278 95.149814) + (xy 164.262193 95.140482) + (xy 164.284721 95.149813) + (xy 164.345988 95.190751) + (xy 164.352024 95.191952) + (xy 164.352025 95.191952) + (xy 164.402043 95.201901) + (xy 164.402046 95.201901) + (xy 164.405056 95.2025) + (xy 164.594944 95.2025) + (xy 164.597954 95.201901) + (xy 164.597957 95.201901) + (xy 164.647975 95.191952) + (xy 164.647976 95.191952) + (xy 164.654012 95.190751) + (xy 164.715278 95.149814) + (xy 164.762193 95.140482) + (xy 164.784721 95.149813) + (xy 164.845988 95.190751) + (xy 164.852024 95.191952) + (xy 164.852025 95.191952) + (xy 164.902043 95.201901) + (xy 164.902046 95.201901) + (xy 164.905056 95.2025) + (xy 165.094944 95.2025) + (xy 165.097954 95.201901) + (xy 165.097957 95.201901) + (xy 165.147975 95.191952) + (xy 165.147976 95.191952) + (xy 165.154012 95.190751) + (xy 165.215278 95.149814) + (xy 165.262193 95.140482) + (xy 165.284721 95.149813) + (xy 165.345988 95.190751) + (xy 165.352024 95.191952) + (xy 165.352025 95.191952) + (xy 165.402043 95.201901) + (xy 165.402046 95.201901) + (xy 165.405056 95.2025) + (xy 165.594944 95.2025) + (xy 165.597954 95.201901) + (xy 165.597957 95.201901) + (xy 165.647975 95.191952) + (xy 165.647976 95.191952) + (xy 165.654012 95.190751) + (xy 165.715278 95.149814) + (xy 165.762193 95.140482) + (xy 165.784721 95.149813) + (xy 165.845988 95.190751) + (xy 165.852024 95.191952) + (xy 165.852025 95.191952) + (xy 165.902043 95.201901) + (xy 165.902046 95.201901) + (xy 165.905056 95.2025) + (xy 166.094944 95.2025) + (xy 166.097954 95.201901) + (xy 166.097957 95.201901) + (xy 166.147975 95.191952) + (xy 166.147976 95.191952) + (xy 166.154012 95.190751) + (xy 166.215278 95.149814) + (xy 166.262193 95.140482) + (xy 166.284721 95.149813) + (xy 166.345988 95.190751) + (xy 166.352024 95.191952) + (xy 166.352025 95.191952) + (xy 166.402043 95.201901) + (xy 166.402046 95.201901) + (xy 166.405056 95.2025) + (xy 166.594944 95.2025) + (xy 166.597954 95.201901) + (xy 166.597957 95.201901) + (xy 166.647975 95.191952) + (xy 166.647976 95.191952) + (xy 166.654012 95.190751) + (xy 166.715278 95.149814) + (xy 166.762193 95.140482) + (xy 166.784721 95.149813) + (xy 166.845988 95.190751) + (xy 166.852024 95.191952) + (xy 166.852025 95.191952) + (xy 166.902043 95.201901) + (xy 166.902046 95.201901) + (xy 166.905056 95.2025) + (xy 167.094944 95.2025) + (xy 167.097954 95.201901) + (xy 167.097957 95.201901) + (xy 167.147975 95.191952) + (xy 167.147976 95.191952) + (xy 167.154012 95.190751) + (xy 167.220994 95.145994) + (xy 167.265751 95.079012) + (xy 167.268468 95.065353) + (xy 167.276901 95.022957) + (xy 167.276901 95.022954) + (xy 167.2775 95.019944) + (xy 167.2775 93.655056) + (xy 167.276007 93.647546) + (xy 167.266952 93.602025) + (xy 167.266952 93.602024) + (xy 167.265751 93.595988) + (xy 167.220994 93.529006) + (xy 167.215876 93.525586) + (xy 167.211524 93.521234) + (xy 167.213352 93.519406) + (xy 167.192201 93.487752) + (xy 167.191 93.475558) + (xy 167.191 93.105003) + (xy 167.209306 93.060809) + (xy 168.800249 91.469866) + (xy 168.844443 91.45156) + (xy 193.194997 91.45156) + (xy 193.239191 91.469866) + (xy 196.168811 94.399485) + (xy 196.173118 94.40556) + (xy 196.17369 94.405105) + (xy 196.178071 94.410613) + (xy 196.181118 94.416958) + (xy 196.186615 94.421354) + (xy 196.204206 94.435422) + (xy 196.209365 94.440039) + (xy 196.214609 94.445283) + (xy 196.217572 94.447145) + (xy 196.217579 94.447151) + (xy 196.220614 94.449058) + (xy 196.22639 94.453163) + (xy 196.249173 94.471383) + (xy 196.256031 94.47296) + (xy 196.259796 94.47478) + (xy 196.263732 94.476158) + (xy 196.269688 94.479902) + (xy 196.276679 94.480692) + (xy 196.276684 94.480694) + (xy 196.298677 94.48318) + (xy 196.305663 94.484373) + (xy 196.312737 94.486) + (xy 196.320117 94.486) + (xy 196.327138 94.486396) + (xy 196.356278 94.48969) + (xy 196.362924 94.487369) + (xy 196.369918 94.486585) + (xy 196.369994 94.487264) + (xy 196.377444 94.486) + (xy 198.96 94.486) + (xy 199.004194 94.504306) + (xy 199.0225 94.5485) + (xy 199.0225 94.682558) + (xy 199.023099 94.685569) + (xy 199.029611 94.718306) + (xy 199.020279 94.765223) + (xy 198.980506 94.791799) + (xy 198.968312 94.793) + (xy 198.440562 94.793) + (xy 198.434481 94.793599) + (xy 198.406482 94.799169) + (xy 198.39533 94.803788) + (xy 198.363555 94.825019) + (xy 198.355019 94.833555) + (xy 198.333788 94.86533) + (xy 198.329169 94.876482) + (xy 198.323599 94.904481) + (xy 198.323 94.910562) + (xy 198.323 95.429069) + (xy 198.326641 95.437859) + (xy 198.335431 95.4415) + (xy 200.364569 95.4415) + (xy 200.373359 95.437859) + (xy 200.377 95.429069) + (xy 200.377 94.910562) + (xy 200.376401 94.904481) + (xy 200.370831 94.876482) + (xy 200.366211 94.865328) + (xy 200.342721 94.830171) + (xy 200.333389 94.783255) + (xy 200.342721 94.760726) + (xy 200.370102 94.719748) + (xy 200.3775 94.682558) + (xy 200.3775 93.907442) + (xy 200.374923 93.894488) + (xy 200.371303 93.876287) + (xy 200.371302 93.876285) + (xy 200.370102 93.870252) + (xy 200.343021 93.829723) + (xy 200.333689 93.782807) + (xy 200.343021 93.760277) + (xy 200.365289 93.726951) + (xy 200.370102 93.719748) + (xy 200.372025 93.710084) + (xy 200.376901 93.685569) + (xy 200.3775 93.682558) + (xy 200.3775 92.807442) + (xy 200.370102 92.770252) + (xy 200.342721 92.729274) + (xy 200.333389 92.682358) + (xy 200.342721 92.659829) + (xy 200.366211 92.624672) + (xy 200.370831 92.613518) + (xy 200.376401 92.585519) + (xy 200.377 92.579438) + (xy 200.377 92.220931) + (xy 200.373359 92.212141) + (xy 200.364569 92.2085) + (xy 199.035431 92.2085) + (xy 199.026641 92.212141) + (xy 199.023 92.220931) + (xy 199.023 92.579438) + (xy 199.023599 92.585519) + (xy 199.029169 92.613518) + (xy 199.033789 92.624672) + (xy 199.057279 92.659829) + (xy 199.066611 92.706745) + (xy 199.057279 92.729273) + (xy 199.029898 92.770252) + (xy 199.0225 92.807442) + (xy 199.0225 92.9915) + (xy 199.004194 93.035694) + (xy 198.96 93.054) + (xy 195.850002 93.054) + (xy 195.805808 93.035694) + (xy 194.112809 91.342694) + (xy 194.094503 91.2985) + (xy 194.112809 91.254306) + (xy 194.157003 91.236) + (xy 198.96 91.236) + (xy 199.004194 91.254306) + (xy 199.0225 91.2985) + (xy 199.0225 91.482558) + (xy 199.023099 91.485569) + (xy 199.028532 91.512879) + (xy 199.029898 91.519748) + (xy 199.043894 91.540694) + (xy 199.057279 91.560726) + (xy 199.066611 91.607642) + (xy 199.057279 91.630171) + (xy 199.033789 91.665328) + (xy 199.029169 91.676482) + (xy 199.023599 91.704481) + (xy 199.023 91.710562) + (xy 199.023 92.069069) + (xy 199.026641 92.077859) + (xy 199.035431 92.0815) + (xy 200.364569 92.0815) + (xy 200.373359 92.077859) + (xy 200.377 92.069069) + (xy 200.377 91.710562) + (xy 200.376401 91.704481) + (xy 200.370831 91.676482) + (xy 200.366211 91.665328) + (xy 200.342721 91.630171) + (xy 200.333389 91.583255) + (xy 200.342721 91.560726) + (xy 200.356106 91.540694) + (xy 200.370102 91.519748) + (xy 200.371469 91.512879) + (xy 200.376901 91.485569) + (xy 200.3775 91.482558) + (xy 200.3775 90.607442) + (xy 200.375906 90.599431) + (xy 200.371303 90.576287) + (xy 200.371302 90.576285) + (xy 200.370102 90.570252) + (xy 200.343021 90.529723) + (xy 200.333689 90.482807) + (xy 200.343021 90.460277) + (xy 200.370102 90.419748) + (xy 200.371607 90.412187) + (xy 200.374507 90.397604) + (xy 200.3775 90.382558) + (xy 200.3775 89.507442) + (xy 200.370102 89.470252) + (xy 200.343021 89.429723) + (xy 200.333689 89.382807) + (xy 200.343021 89.360277) + (xy 200.370102 89.319748) + (xy 200.371878 89.310823) + (xy 200.376901 89.285569) + (xy 200.3775 89.282558) + (xy 200.3775 88.407442) + (xy 200.376032 88.40006) + (xy 200.371303 88.376287) + (xy 200.371302 88.376285) + (xy 200.370102 88.370252) + (xy 200.343021 88.329723) + (xy 200.333689 88.282807) + (xy 200.343021 88.260277) + (xy 200.370102 88.219748) + (xy 200.37218 88.209306) + (xy 200.376901 88.185569) + (xy 200.3775 88.182558) + (xy 200.3775 87.307442) + (xy 200.375628 87.298033) + (xy 200.371303 87.276287) + (xy 200.371302 87.276285) + (xy 200.370102 87.270252) + (xy 200.343021 87.229723) + (xy 200.333689 87.182807) + (xy 200.343021 87.160277) + (xy 200.353673 87.144335) + (xy 200.370102 87.119748) + (xy 200.373272 87.103815) + (xy 200.376901 87.085569) + (xy 200.3775 87.082558) + (xy 200.3775 86.207442) + (xy 200.375895 86.199372) + (xy 200.371303 86.176287) + (xy 200.371302 86.176285) + (xy 200.370102 86.170252) + (xy 200.341922 86.128078) + (xy 200.299748 86.099898) + (xy 200.293715 86.098698) + (xy 200.293713 86.098697) + (xy 200.265569 86.093099) + (xy 200.262558 86.0925) + (xy 199.137442 86.0925) + (xy 199.134431 86.093099) + (xy 199.106287 86.098697) + (xy 199.106285 86.098698) + (xy 199.100252 86.099898) + (xy 199.058078 86.128078) + (xy 199.029898 86.170252) + (xy 199.028698 86.176285) + (xy 199.028697 86.176287) + (xy 199.024105 86.199372) + (xy 199.0225 86.207442) + (xy 199.0225 86.3915) + (xy 199.004194 86.435694) + (xy 198.96 86.454) + (xy 196.691191 86.454) + (xy 196.683852 86.45275) + (xy 196.683769 86.453477) + (xy 196.676778 86.45268) + (xy 196.670137 86.450348) + (xy 196.663145 86.451126) + (xy 196.663143 86.451126) + (xy 196.640763 86.453617) + (xy 196.63385 86.454) + (xy 196.626427 86.454) + (xy 196.623003 86.454781) + (xy 196.619513 86.455577) + (xy 196.612527 86.456759) + (xy 196.604843 86.457614) + (xy 196.583531 86.459986) + (xy 196.577568 86.463719) + (xy 196.573622 86.465093) + (xy 196.569862 86.466903) + (xy 196.563001 86.468468) + (xy 196.546408 86.481691) + (xy 196.540181 86.486653) + (xy 196.534401 86.490746) + (xy 196.528249 86.494597) + (xy 196.523041 86.499805) + (xy 196.517797 86.50449) + (xy 196.502977 86.5163) + (xy 196.494851 86.522775) + (xy 196.491793 86.529114) + (xy 196.487402 86.534615) + (xy 196.486869 86.534189) + (xy 196.482491 86.540355) + (xy 193.847694 89.175151) + (xy 193.8035 89.193457) + (xy 193.759306 89.175151) + (xy 193.741 89.130957) + (xy 193.741 88.919384) + (xy 193.759306 88.87519) + (xy 193.770797 88.866123) + (xy 193.789712 88.854509) + (xy 193.794034 88.852085) + (xy 193.802625 88.847708) + (xy 193.805427 88.844906) + (xy 193.806264 88.844346) + (xy 193.808891 88.842733) + (xy 193.825881 88.832301) + (xy 193.908058 88.741513) + (xy 193.961451 88.631311) + (xy 193.962724 88.623749) + (xy 193.981368 88.512924) + (xy 193.981368 88.512923) + (xy 193.981767 88.510552) + (xy 193.981896 88.5) + (xy 193.964536 88.378781) + (xy 193.913852 88.267307) + (xy 193.899199 88.250302) + (xy 193.897708 88.247375) + (xy 193.8919 88.241567) + (xy 193.888746 88.23817) + (xy 193.836826 88.177914) + (xy 193.833918 88.174539) + (xy 193.813741 88.161461) + (xy 193.810155 88.158559) + (xy 193.810081 88.158661) + (xy 193.806106 88.155773) + (xy 193.802625 88.152292) + (xy 193.791343 88.146543) + (xy 193.785735 88.143308) + (xy 193.769505 88.132788) + (xy 193.742377 88.093389) + (xy 193.741 88.080342) + (xy 193.741 84.969438) + (xy 198.773 84.969438) + (xy 198.773599 84.975519) + (xy 198.779169 85.003518) + (xy 198.783788 85.01467) + (xy 198.805019 85.046445) + (xy 198.813555 85.054981) + (xy 198.84533 85.076212) + (xy 198.856482 85.080831) + (xy 198.884481 85.086401) + (xy 198.890562 85.087) + (xy 199.499069 85.087) + (xy 199.507859 85.083359) + (xy 199.5115 85.074569) + (xy 199.6385 85.074569) + (xy 199.642141 85.083359) + (xy 199.650931 85.087) + (xy 200.259438 85.087) + (xy 200.265519 85.086401) + (xy 200.293518 85.080831) + (xy 200.30467 85.076212) + (xy 200.336445 85.054981) + (xy 200.344981 85.046445) + (xy 200.366212 85.01467) + (xy 200.370831 85.003518) + (xy 200.376401 84.975519) + (xy 200.377 84.969438) + (xy 200.377 84.260931) + (xy 200.373359 84.252141) + (xy 200.364569 84.2485) + (xy 199.650931 84.2485) + (xy 199.642141 84.252141) + (xy 199.6385 84.260931) + (xy 199.6385 85.074569) + (xy 199.5115 85.074569) + (xy 199.5115 84.260931) + (xy 199.507859 84.252141) + (xy 199.499069 84.2485) + (xy 198.785431 84.2485) + (xy 198.776641 84.252141) + (xy 198.773 84.260931) + (xy 198.773 84.969438) + (xy 193.741 84.969438) + (xy 193.741 84.8) + (xy 193.759306 84.755806) + (xy 193.8035 84.7375) + (xy 194.062558 84.7375) + (xy 194.068083 84.736401) + (xy 194.093713 84.731303) + (xy 194.093715 84.731302) + (xy 194.099748 84.730102) + (xy 194.141922 84.701922) + (xy 194.170102 84.659748) + (xy 194.171342 84.653518) + (xy 194.176901 84.625569) + (xy 194.1775 84.622558) + (xy 194.1775 84.109069) + (xy 198.773 84.109069) + (xy 198.776641 84.117859) + (xy 198.785431 84.1215) + (xy 199.499069 84.1215) + (xy 199.507859 84.117859) + (xy 199.5115 84.109069) + (xy 199.6385 84.109069) + (xy 199.642141 84.117859) + (xy 199.650931 84.1215) + (xy 200.364569 84.1215) + (xy 200.373359 84.117859) + (xy 200.377 84.109069) + (xy 200.377 83.400562) + (xy 200.376401 83.394481) + (xy 200.370831 83.366482) + (xy 200.366212 83.35533) + (xy 200.344981 83.323555) + (xy 200.336445 83.315019) + (xy 200.30467 83.293788) + (xy 200.293518 83.289169) + (xy 200.265519 83.283599) + (xy 200.259438 83.283) + (xy 199.650931 83.283) + (xy 199.642141 83.286641) + (xy 199.6385 83.295431) + (xy 199.6385 84.109069) + (xy 199.5115 84.109069) + (xy 199.5115 83.295431) + (xy 199.507859 83.286641) + (xy 199.499069 83.283) + (xy 198.890562 83.283) + (xy 198.884481 83.283599) + (xy 198.856482 83.289169) + (xy 198.84533 83.293788) + (xy 198.813555 83.315019) + (xy 198.805019 83.323555) + (xy 198.783788 83.35533) + (xy 198.779169 83.366482) + (xy 198.773599 83.394481) + (xy 198.773 83.400562) + (xy 198.773 84.109069) + (xy 194.1775 84.109069) + (xy 194.1775 83.397442) + (xy 194.174888 83.384311) + (xy 194.171303 83.366287) + (xy 194.171302 83.366285) + (xy 194.170102 83.360252) + (xy 194.141922 83.318078) + (xy 194.099748 83.289898) + (xy 194.093715 83.288698) + (xy 194.093713 83.288697) + (xy 194.065569 83.283099) + (xy 194.062558 83.2825) + (xy 193.037442 83.2825) + (xy 193.034431 83.283099) + (xy 193.006287 83.288697) + (xy 193.006285 83.288698) + (xy 193.000252 83.289898) + (xy 192.958078 83.318078) + (xy 192.929898 83.360252) + (xy 192.928698 83.366285) + (xy 192.928697 83.366287) + (xy 192.925112 83.384311) + (xy 192.9225 83.397442) + (xy 192.9225 84.622558) + (xy 192.923099 84.625569) + (xy 192.928659 84.653518) + (xy 192.929898 84.659748) + (xy 192.958078 84.701922) + (xy 193.000252 84.730102) + (xy 193.006285 84.731302) + (xy 193.006287 84.731303) + (xy 193.031917 84.736401) + (xy 193.037442 84.7375) + (xy 193.2965 84.7375) + (xy 193.340694 84.755806) + (xy 193.359 84.8) + (xy 193.359 88.080525) + (xy 193.340694 88.124719) + (xy 193.329855 88.13338) + (xy 193.31281 88.144135) + (xy 193.307842 88.146959) + (xy 193.301757 88.150059) + (xy 193.301756 88.15006) + (xy 193.297375 88.152292) + (xy 193.293897 88.15577) + (xy 193.292445 88.156825) + (xy 193.289058 88.15912) + (xy 193.27008 88.171095) + (xy 193.267137 88.174427) + (xy 193.267135 88.174429) + (xy 193.207156 88.242342) + (xy 193.206032 88.243538) + (xy 193.205775 88.243892) + (xy 193.205554 88.244113) + (xy 193.205405 88.244204) + (xy 193.204504 88.245163) + (xy 193.202292 88.247375) + (xy 193.201509 88.246592) + (xy 193.200362 88.247296) + (xy 193.201721 88.248496) + (xy 193.195002 88.256104) + (xy 193.189018 88.262879) + (xy 193.187127 88.266907) + (xy 193.138868 88.369695) + (xy 193.138867 88.369698) + (xy 193.136976 88.373726) + (xy 193.118136 88.494724) + (xy 193.118713 88.499137) + (xy 193.118713 88.499138) + (xy 193.132478 88.604401) + (xy 193.134014 88.616145) + (xy 193.141185 88.632443) + (xy 193.141244 88.632813) + (xy 193.142007 88.634311) + (xy 193.144031 88.63891) + (xy 193.144031 88.638911) + (xy 193.158772 88.672411) + (xy 193.183333 88.72823) + (xy 193.197198 88.744724) + (xy 193.198029 88.745713) + (xy 193.200157 88.748434) + (xy 193.202292 88.752625) + (xy 193.210081 88.760414) + (xy 193.21373 88.764392) + (xy 193.25807 88.817141) + (xy 193.262127 88.821968) + (xy 193.285399 88.837459) + (xy 193.291836 88.842733) + (xy 193.293899 88.844232) + (xy 193.297375 88.847708) + (xy 193.301753 88.849939) + (xy 193.301756 88.849941) + (xy 193.30873 88.853494) + (xy 193.314983 88.857152) + (xy 193.321855 88.861726) + (xy 193.331134 88.867903) + (xy 193.357778 88.907631) + (xy 193.359 88.919929) + (xy 193.359 89.094998) + (xy 193.340694 89.139192) + (xy 192.949751 89.530134) + (xy 192.905557 89.54844) + (xy 192.372563 89.54844) + (xy 192.328369 89.530134) + (xy 192.310063 89.48594) + (xy 192.328369 89.441746) + (xy 192.604487 89.165628) + (xy 192.610561 89.161323) + (xy 192.610105 89.16075) + (xy 192.615613 89.156369) + (xy 192.621958 89.153322) + (xy 192.640418 89.130239) + (xy 192.645035 89.12508) + (xy 192.650284 89.119831) + (xy 192.654057 89.113828) + (xy 192.658165 89.108047) + (xy 192.660995 89.104509) + (xy 192.676383 89.085267) + (xy 192.67796 89.078407) + (xy 192.679778 89.074647) + (xy 192.681156 89.070711) + (xy 192.684902 89.064752) + (xy 192.68818 89.035758) + (xy 192.68937 89.028792) + (xy 192.691 89.021703) + (xy 192.691 89.014329) + (xy 192.691396 89.007308) + (xy 192.692313 88.999193) + (xy 192.694691 88.978161) + (xy 192.69237 88.971516) + (xy 192.691586 88.964522) + (xy 192.692264 88.964446) + (xy 192.691 88.956994) + (xy 192.691 88.169384) + (xy 192.709306 88.12519) + (xy 192.720797 88.116123) + (xy 192.739712 88.104509) + (xy 192.744034 88.102085) + (xy 192.752625 88.097708) + (xy 192.755427 88.094906) + (xy 192.756264 88.094346) + (xy 192.775881 88.082301) + (xy 192.858058 87.991513) + (xy 192.911451 87.881311) + (xy 192.912766 87.8735) + (xy 192.928971 87.777172) + (xy 192.931767 87.760552) + (xy 192.931896 87.75) + (xy 192.914536 87.628781) + (xy 192.863852 87.517307) + (xy 192.849199 87.500302) + (xy 192.847708 87.497375) + (xy 192.8419 87.491567) + (xy 192.838746 87.48817) + (xy 192.799832 87.443008) + (xy 192.783918 87.424539) + (xy 192.763741 87.411461) + (xy 192.760155 87.408559) + (xy 192.760081 87.408661) + (xy 192.756106 87.405773) + (xy 192.752625 87.402292) + (xy 192.741343 87.396543) + (xy 192.735736 87.393309) + (xy 192.735587 87.393212) + (xy 192.71048 87.376939) + (xy 192.684893 87.360354) + (xy 192.68489 87.360353) + (xy 192.68116 87.357935) + (xy 192.676901 87.356661) + (xy 192.676898 87.35666) + (xy 192.658345 87.351112) + (xy 192.648839 87.348269) + (xy 192.638377 87.344079) + (xy 192.632813 87.341244) + (xy 192.621067 87.339384) + (xy 192.612951 87.337536) + (xy 192.563838 87.322848) + (xy 192.519496 87.322577) + (xy 192.510103 87.321809) + (xy 192.504857 87.320978) + (xy 192.504856 87.320978) + (xy 192.5 87.320209) + (xy 192.491373 87.321576) + (xy 192.48122 87.322344) + (xy 192.462836 87.322231) + (xy 192.445838 87.322127) + (xy 192.445836 87.322127) + (xy 192.441385 87.3221) + (xy 192.387011 87.337641) + (xy 192.379623 87.339275) + (xy 192.367187 87.341244) + (xy 192.362804 87.343477) + (xy 192.36187 87.343781) + (xy 192.352155 87.347603) + (xy 192.327929 87.354526) + (xy 192.327927 87.354527) + (xy 192.323644 87.355751) + (xy 192.264119 87.393309) + (xy 192.262819 87.394129) + (xy 192.257842 87.396959) + (xy 192.251757 87.400059) + (xy 192.251756 87.40006) + (xy 192.247375 87.402292) + (xy 192.243897 87.40577) + (xy 192.242445 87.406825) + (xy 192.239058 87.40912) + (xy 192.22008 87.421095) + (xy 192.217137 87.424427) + (xy 192.217135 87.424429) + (xy 192.157156 87.492342) + (xy 192.156032 87.493538) + (xy 192.155775 87.493892) + (xy 192.155554 87.494113) + (xy 192.155405 87.494204) + (xy 192.154504 87.495163) + (xy 192.152292 87.497375) + (xy 192.151509 87.496592) + (xy 192.150362 87.497296) + (xy 192.151721 87.498496) + (xy 192.147732 87.503013) + (xy 192.139018 87.512879) + (xy 192.134338 87.522847) + (xy 192.088868 87.619695) + (xy 192.088867 87.619698) + (xy 192.086976 87.623726) + (xy 192.068136 87.744724) + (xy 192.068713 87.749137) + (xy 192.068713 87.749138) + (xy 192.080918 87.842473) + (xy 192.084014 87.866145) + (xy 192.091185 87.882443) + (xy 192.091244 87.882813) + (xy 192.092007 87.884311) + (xy 192.094031 87.88891) + (xy 192.094031 87.888911) + (xy 192.129536 87.9696) + (xy 192.133333 87.97823) + (xy 192.147272 87.994813) + (xy 192.148029 87.995713) + (xy 192.150157 87.998434) + (xy 192.152292 88.002625) + (xy 192.160081 88.010414) + (xy 192.163729 88.014391) + (xy 192.212127 88.071968) + (xy 192.235399 88.087459) + (xy 192.241836 88.092733) + (xy 192.243899 88.094232) + (xy 192.247375 88.097708) + (xy 192.251753 88.099939) + (xy 192.251756 88.099941) + (xy 192.25873 88.103494) + (xy 192.264983 88.107152) + (xy 192.27846 88.116123) + (xy 192.281134 88.117903) + (xy 192.307778 88.157631) + (xy 192.309 88.169929) + (xy 192.309 88.894997) + (xy 192.290694 88.939191) + (xy 191.953271 89.276614) + (xy 191.909077 89.29492) + (xy 167.198783 89.29492) + (xy 167.191442 89.293667) + (xy 167.191359 89.294396) + (xy 167.184368 89.293599) + (xy 167.177727 89.291267) + (xy 167.170734 89.292045) + (xy 167.170733 89.292045) + (xy 167.148343 89.294537) + (xy 167.14143 89.29492) + (xy 167.134016 89.29492) + (xy 167.127093 89.296499) + (xy 167.12014 89.297675) + (xy 167.09112 89.300905) + (xy 167.085156 89.304639) + (xy 167.081219 89.30601) + (xy 167.077453 89.307823) + (xy 167.07059 89.309388) + (xy 167.065084 89.313775) + (xy 167.065085 89.313775) + (xy 167.047778 89.327566) + (xy 167.041995 89.33166) + (xy 167.038839 89.333636) + (xy 167.038833 89.333641) + (xy 167.035838 89.335516) + (xy 167.030625 89.340729) + (xy 167.025381 89.345414) + (xy 167.00244 89.363695) + (xy 166.999382 89.370034) + (xy 166.994991 89.375535) + (xy 166.994457 89.375109) + (xy 166.990081 89.381273) + (xy 166.08066 90.290694) + (xy 166.036466 90.309) + (xy 165.923049 90.309) + (xy 165.878855 90.290694) + (xy 165.866156 90.272373) + (xy 165.865695 90.27136) + (xy 165.865694 90.271359) + (xy 165.863852 90.267307) + (xy 165.849199 90.250302) + (xy 165.847708 90.247375) + (xy 165.8419 90.241567) + (xy 165.838746 90.23817) + (xy 165.786826 90.177914) + (xy 165.783918 90.174539) + (xy 165.763741 90.161461) + (xy 165.760155 90.158559) + (xy 165.760081 90.158661) + (xy 165.756106 90.155773) + (xy 165.752625 90.152292) + (xy 165.741343 90.146543) + (xy 165.735736 90.143309) + (xy 165.734615 90.142582) + (xy 165.713322 90.128781) + (xy 165.684893 90.110354) + (xy 165.68489 90.110353) + (xy 165.68116 90.107935) + (xy 165.676901 90.106661) + (xy 165.676898 90.10666) + (xy 165.658345 90.101112) + (xy 165.648839 90.098269) + (xy 165.638377 90.094079) + (xy 165.632813 90.091244) + (xy 165.621067 90.089384) + (xy 165.612951 90.087536) + (xy 165.584793 90.079115) + (xy 165.563838 90.072848) + (xy 165.519496 90.072577) + (xy 165.510103 90.071809) + (xy 165.504857 90.070978) + (xy 165.504856 90.070978) + (xy 165.5 90.070209) + (xy 165.491373 90.071576) + (xy 165.48122 90.072344) + (xy 165.462836 90.072231) + (xy 165.445838 90.072127) + (xy 165.445836 90.072127) + (xy 165.441385 90.0721) + (xy 165.387011 90.087641) + (xy 165.379623 90.089275) + (xy 165.367187 90.091244) + (xy 165.362804 90.093477) + (xy 165.36187 90.093781) + (xy 165.352155 90.097603) + (xy 165.327929 90.104526) + (xy 165.327927 90.104527) + (xy 165.323644 90.105751) + (xy 165.264119 90.143309) + (xy 165.262819 90.144129) + (xy 165.257842 90.146959) + (xy 165.251757 90.150059) + (xy 165.251756 90.15006) + (xy 165.247375 90.152292) + (xy 165.243897 90.15577) + (xy 165.242445 90.156825) + (xy 165.239058 90.15912) + (xy 165.22008 90.171095) + (xy 165.217137 90.174427) + (xy 165.217135 90.174429) + (xy 165.157156 90.242342) + (xy 165.156032 90.243538) + (xy 165.155775 90.243892) + (xy 165.155554 90.244113) + (xy 165.155405 90.244204) + (xy 165.154504 90.245163) + (xy 165.152292 90.247375) + (xy 165.151509 90.246592) + (xy 165.150362 90.247296) + (xy 165.151721 90.248496) + (xy 165.145002 90.256104) + (xy 165.139018 90.262879) + (xy 165.137127 90.266907) + (xy 165.088868 90.369695) + (xy 165.088867 90.369698) + (xy 165.086976 90.373726) + (xy 165.068136 90.494724) + (xy 165.068713 90.499137) + (xy 165.068713 90.499138) + (xy 165.082876 90.607442) + (xy 165.084014 90.616145) + (xy 165.091185 90.632443) + (xy 165.091244 90.632813) + (xy 165.092007 90.634311) + (xy 165.094031 90.63891) + (xy 165.094031 90.638911) + (xy 165.122681 90.704021) + (xy 165.133333 90.72823) + (xy 165.147567 90.745163) + (xy 165.148029 90.745713) + (xy 165.150157 90.748434) + (xy 165.152292 90.752625) + (xy 165.160081 90.760414) + (xy 165.163729 90.764391) + (xy 165.212127 90.821968) + (xy 165.235399 90.837459) + (xy 165.241836 90.842733) + (xy 165.243899 90.844232) + (xy 165.247375 90.847708) + (xy 165.251753 90.849939) + (xy 165.251756 90.849941) + (xy 165.25873 90.853494) + (xy 165.264977 90.857148) + (xy 165.314064 90.889823) + (xy 165.318313 90.891151) + (xy 165.318314 90.891151) + (xy 165.350296 90.901143) + (xy 165.360027 90.905109) + (xy 165.362799 90.906521) + (xy 165.362803 90.906522) + (xy 165.367187 90.908756) + (xy 165.377852 90.910445) + (xy 165.386713 90.91252) + (xy 165.426696 90.925012) + (xy 165.426699 90.925012) + (xy 165.430948 90.92634) + (xy 165.480069 90.927241) + (xy 165.488683 90.927999) + (xy 165.49514 90.929022) + (xy 165.495144 90.929022) + (xy 165.5 90.929791) + (xy 165.506947 90.92869) + (xy 165.517853 90.927933) + (xy 165.553383 90.928584) + (xy 165.613532 90.912185) + (xy 165.62019 90.910755) + (xy 165.622147 90.910445) + (xy 165.632813 90.908756) + (xy 165.637196 90.906522) + (xy 165.641875 90.905002) + (xy 165.641878 90.90501) + (xy 165.646727 90.903136) + (xy 165.654093 90.901128) + (xy 165.667207 90.897553) + (xy 165.71466 90.903592) + (xy 165.743944 90.941416) + (xy 165.737905 90.988869) + (xy 165.727838 91.002047) + (xy 163.895513 92.834372) + (xy 163.889439 92.838677) + (xy 163.889895 92.83925) + (xy 163.884387 92.843631) + (xy 163.878042 92.846678) + (xy 163.873646 92.852175) + (xy 163.859582 92.869761) + (xy 163.854965 92.87492) + (xy 163.849716 92.880169) + (xy 163.845943 92.886172) + (xy 163.841838 92.891948) + (xy 163.823617 92.914733) + (xy 163.82204 92.921593) + (xy 163.820222 92.925353) + (xy 163.818844 92.929289) + (xy 163.815098 92.935248) + (xy 163.814307 92.942242) + (xy 163.814307 92.942243) + (xy 163.811821 92.964236) + (xy 163.810629 92.971213) + (xy 163.809 92.978297) + (xy 163.809 92.985671) + (xy 163.808604 92.992692) + (xy 163.805309 93.021838) + (xy 163.80763 93.028483) + (xy 163.808414 93.035477) + (xy 163.807736 93.035553) + (xy 163.809 93.043005) + (xy 163.809 93.471482) + (xy 163.790694 93.515676) + (xy 163.7465 93.533982) + (xy 163.711777 93.523449) + (xy 163.658933 93.488141) + (xy 163.647779 93.48352) + (xy 163.597904 93.473599) + (xy 163.591823 93.473) + (xy 163.575931 93.473) + (xy 163.567141 93.476641) + (xy 163.5635 93.485431) + (xy 163.5635 95.189568) + (xy 163.4365 95.189568) + (xy 163.4365 93.485432) + (xy 163.432859 93.476642) + (xy 163.424069 93.473001) + (xy 163.408179 93.473001) + (xy 163.402094 93.4736) + (xy 163.352224 93.48352) + (xy 163.341066 93.488142) + (xy 163.288223 93.523449) + (xy 163.241306 93.532781) + (xy 163.201533 93.506205) + (xy 163.191 93.471482) + (xy 163.191 92.267801) + (xy 163.209306 92.223607) + (xy 164.104487 91.328426) + (xy 164.110561 91.324121) + (xy 164.110105 91.323548) + (xy 164.115613 91.319167) + (xy 164.121958 91.31612) + (xy 164.140418 91.293037) + (xy 164.145035 91.287878) + (xy 164.150284 91.282629) + (xy 164.154057 91.276626) + (xy 164.158165 91.270845) + (xy 164.164977 91.262328) + (xy 164.176383 91.248065) + (xy 164.17796 91.241205) + (xy 164.179778 91.237445) + (xy 164.181156 91.233509) + (xy 164.184902 91.22755) + (xy 164.18818 91.198556) + (xy 164.18937 91.19159) + (xy 164.191 91.184501) + (xy 164.191 91.177127) + (xy 164.191396 91.170106) + (xy 164.1939 91.147952) + (xy 164.194691 91.140959) + (xy 164.19237 91.134314) + (xy 164.191586 91.12732) + (xy 164.192264 91.127244) + (xy 164.191 91.119792) + (xy 164.191 88.469438) + (xy 188.073 88.469438) + (xy 188.073599 88.475519) + (xy 188.079169 88.503518) + (xy 188.083788 88.51467) + (xy 188.105019 88.546445) + (xy 188.113555 88.554981) + (xy 188.14533 88.576212) + (xy 188.156482 88.580831) + (xy 188.184481 88.586401) + (xy 188.190562 88.587) + (xy 188.799069 88.587) + (xy 188.807859 88.583359) + (xy 188.8115 88.574569) + (xy 188.9385 88.574569) + (xy 188.942141 88.583359) + (xy 188.950931 88.587) + (xy 189.559438 88.587) + (xy 189.565519 88.586401) + (xy 189.593518 88.580831) + (xy 189.60467 88.576212) + (xy 189.636445 88.554981) + (xy 189.644981 88.546445) + (xy 189.666212 88.51467) + (xy 189.670831 88.503518) + (xy 189.676401 88.475519) + (xy 189.677 88.469438) + (xy 189.677 87.585931) + (xy 189.673359 87.577141) + (xy 189.664569 87.5735) + (xy 188.950931 87.5735) + (xy 188.942141 87.577141) + (xy 188.9385 87.585931) + (xy 188.9385 88.574569) + (xy 188.8115 88.574569) + (xy 188.8115 87.585931) + (xy 188.807859 87.577141) + (xy 188.799069 87.5735) + (xy 188.085431 87.5735) + (xy 188.076641 87.577141) + (xy 188.073 87.585931) + (xy 188.073 88.469438) + (xy 164.191 88.469438) + (xy 164.191 87.131081) + (xy 165.398001 87.131081) + (xy 165.398333 87.135614) + (xy 165.407478 87.197743) + (xy 165.410326 87.20691) + (xy 165.457556 87.303105) + (xy 165.463484 87.311387) + (xy 165.539111 87.386883) + (xy 165.547406 87.392799) + (xy 165.643687 87.439863) + (xy 165.652851 87.442695) + (xy 165.714391 87.451672) + (xy 165.718904 87.452) + (xy 165.899069 87.452) + (xy 165.907859 87.448359) + (xy 165.9115 87.439569) + (xy 165.9115 87.439568) + (xy 166.0385 87.439568) + (xy 166.042141 87.448358) + (xy 166.050931 87.451999) + (xy 166.231083 87.451999) + (xy 166.235614 87.451667) + (xy 166.297743 87.442522) + (xy 166.30691 87.439674) + (xy 166.403105 87.392444) + (xy 166.411387 87.386516) + (xy 166.486883 87.310889) + (xy 166.492799 87.302594) + (xy 166.539863 87.206313) + (xy 166.542695 87.197149) + (xy 166.551672 87.135609) + (xy 166.552 87.131096) + (xy 166.552 86.925931) + (xy 166.548359 86.917141) + (xy 166.539569 86.9135) + (xy 166.050931 86.9135) + (xy 166.042141 86.917141) + (xy 166.0385 86.925931) + (xy 166.0385 87.439568) + (xy 165.9115 87.439568) + (xy 165.9115 86.925931) + (xy 165.907859 86.917141) + (xy 165.899069 86.9135) + (xy 165.410432 86.9135) + (xy 165.401642 86.917141) + (xy 165.398001 86.925931) + (xy 165.398001 87.131081) + (xy 164.191 87.131081) + (xy 164.191 86.774069) + (xy 165.398 86.774069) + (xy 165.401641 86.782859) + (xy 165.410431 86.7865) + (xy 165.899069 86.7865) + (xy 165.907859 86.782859) + (xy 165.9115 86.774069) + (xy 166.0385 86.774069) + (xy 166.042141 86.782859) + (xy 166.050931 86.7865) + (xy 166.539568 86.7865) + (xy 166.548358 86.782859) + (xy 166.551999 86.774069) + (xy 166.551999 86.568917) + (xy 166.551828 86.566589) + (xy 166.9475 86.566589) + (xy 166.947501 87.13341) + (xy 166.957699 87.202695) + (xy 166.959839 87.207053) + (xy 166.959839 87.207054) + (xy 166.964081 87.215693) + (xy 167.009419 87.308036) + (xy 167.013071 87.311682) + (xy 167.013072 87.311683) + (xy 167.088817 87.387296) + (xy 167.088819 87.387298) + (xy 167.092472 87.390944) + (xy 167.155733 87.421867) + (xy 167.193158 87.440161) + (xy 167.197902 87.44248) + (xy 167.202705 87.443181) + (xy 167.202706 87.443181) + (xy 167.224659 87.446383) + (xy 167.266589 87.4525) + (xy 167.524317 87.4525) + (xy 167.78341 87.452499) + (xy 167.852695 87.442301) + (xy 167.85826 87.439569) + (xy 167.869462 87.434069) + (xy 188.073 87.434069) + (xy 188.076641 87.442859) + (xy 188.085431 87.4465) + (xy 188.799069 87.4465) + (xy 188.807859 87.442859) + (xy 188.8115 87.434069) + (xy 188.9385 87.434069) + (xy 188.942141 87.442859) + (xy 188.950931 87.4465) + (xy 189.664569 87.4465) + (xy 189.673359 87.442859) + (xy 189.677 87.434069) + (xy 189.677 86.550562) + (xy 189.676401 86.544481) + (xy 189.670831 86.516482) + (xy 189.666212 86.50533) + (xy 189.644981 86.473555) + (xy 189.636445 86.465019) + (xy 189.60467 86.443788) + (xy 189.593518 86.439169) + (xy 189.565519 86.433599) + (xy 189.559438 86.433) + (xy 188.950931 86.433) + (xy 188.942141 86.436641) + (xy 188.9385 86.445431) + (xy 188.9385 87.434069) + (xy 188.8115 87.434069) + (xy 188.8115 86.445431) + (xy 188.807859 86.436641) + (xy 188.799069 86.433) + (xy 188.190562 86.433) + (xy 188.184481 86.433599) + (xy 188.156482 86.439169) + (xy 188.14533 86.443788) + (xy 188.113555 86.465019) + (xy 188.105019 86.473555) + (xy 188.083788 86.50533) + (xy 188.079169 86.516482) + (xy 188.073599 86.544481) + (xy 188.073 86.550562) + (xy 188.073 87.434069) + (xy 167.869462 87.434069) + (xy 167.885774 87.42606) + (xy 167.958036 87.390581) + (xy 167.964295 87.384311) + (xy 168.037296 87.311183) + (xy 168.037298 87.311181) + (xy 168.040944 87.307528) + (xy 168.08472 87.217974) + (xy 168.090349 87.206458) + (xy 168.090349 87.206457) + (xy 168.09248 87.202098) + (xy 168.093516 87.195) + (xy 168.102172 87.135657) + (xy 168.1025 87.133411) + (xy 168.1025 87.1035) + (xy 168.120806 87.059306) + (xy 168.165 87.041) + (xy 168.706768 87.041) + (xy 168.714107 87.04225) + (xy 168.71419 87.041523) + (xy 168.721181 87.04232) + (xy 168.727822 87.044652) + (xy 168.734815 87.043874) + (xy 168.734816 87.043874) + (xy 168.757197 87.041383) + (xy 168.76411 87.041) + (xy 168.771533 87.041) + (xy 168.778465 87.039419) + (xy 168.785418 87.038243) + (xy 168.814429 87.035014) + (xy 168.820393 87.031281) + (xy 168.824341 87.029906) + (xy 168.8281 87.028097) + (xy 168.834959 87.026532) + (xy 168.846536 87.017307) + (xy 168.857773 87.008352) + (xy 168.863559 87.004256) + (xy 168.866715 87.00228) + (xy 168.866717 87.002279) + (xy 168.869711 87.000404) + (xy 168.874923 86.995192) + (xy 168.880167 86.990507) + (xy 168.897604 86.976612) + (xy 168.897604 86.976611) + (xy 168.903109 86.972225) + (xy 168.906167 86.965886) + (xy 168.910558 86.960385) + (xy 168.911092 86.960811) + (xy 168.915468 86.954647) + (xy 169.604485 86.265629) + (xy 169.61056 86.261322) + (xy 169.610105 86.26075) + (xy 169.615613 86.256369) + (xy 169.621958 86.253322) + (xy 169.640422 86.230234) + (xy 169.645039 86.225075) + (xy 169.650283 86.219831) + (xy 169.652145 86.216868) + (xy 169.652151 86.216861) + (xy 169.654058 86.213826) + (xy 169.658163 86.20805) + (xy 169.671987 86.190764) + (xy 169.676383 86.185267) + (xy 169.67796 86.178409) + (xy 169.67978 86.174644) + (xy 169.681158 86.170708) + (xy 169.684902 86.164752) + (xy 169.685692 86.157761) + (xy 169.685694 86.157756) + (xy 169.68818 86.135763) + (xy 169.689373 86.128778) + (xy 169.690208 86.125146) + (xy 169.691 86.121703) + (xy 169.691 86.114323) + (xy 169.691396 86.107303) + (xy 169.692959 86.093476) + (xy 169.69469 86.078162) + (xy 169.692369 86.071516) + (xy 169.691585 86.064522) + (xy 169.692264 86.064446) + (xy 169.691 86.056996) + (xy 169.691 86.04) + (xy 169.709306 85.995806) + (xy 169.7535 85.9775) + (xy 170.412558 85.9775) + (xy 170.427534 85.974521) + (xy 170.443713 85.971303) + (xy 170.443715 85.971302) + (xy 170.449748 85.970102) + (xy 170.491922 85.941922) + (xy 170.520102 85.899748) + (xy 170.522203 85.889189) + (xy 170.526901 85.865569) + (xy 170.5275 85.862558) + (xy 170.5275 85.844285) + (xy 173.273 85.844285) + (xy 173.273599 85.850369) + (xy 173.28497 85.907532) + (xy 173.289592 85.91869) + (xy 173.332923 85.983541) + (xy 173.341459 85.992077) + (xy 173.40631 86.035408) + (xy 173.417468 86.04003) + (xy 173.474631 86.051401) + (xy 173.480715 86.052) + (xy 174.061569 86.052) + (xy 174.070359 86.048359) + (xy 174.074 86.039569) + (xy 174.201 86.039569) + (xy 174.204641 86.048359) + (xy 174.213431 86.052) + (xy 174.794285 86.052) + (xy 174.800369 86.051401) + (xy 174.857532 86.04003) + (xy 174.86869 86.035408) + (xy 174.933541 85.992077) + (xy 174.942077 85.983541) + (xy 174.985408 85.91869) + (xy 174.99003 85.907532) + (xy 175.001401 85.850369) + (xy 175.002 85.844285) + (xy 175.002 85.800931) + (xy 174.998359 85.792141) + (xy 174.989569 85.7885) + (xy 174.213431 85.7885) + (xy 174.204641 85.792141) + (xy 174.201 85.800931) + (xy 174.201 86.039569) + (xy 174.074 86.039569) + (xy 174.074 85.800931) + (xy 174.070359 85.792141) + (xy 174.061569 85.7885) + (xy 173.285431 85.7885) + (xy 173.276641 85.792141) + (xy 173.273 85.800931) + (xy 173.273 85.844285) + (xy 170.5275 85.844285) + (xy 170.5275 84.837442) + (xy 170.524048 84.820088) + (xy 170.521303 84.806287) + (xy 170.521302 84.806285) + (xy 170.520102 84.800252) + (xy 170.491922 84.758078) + (xy 170.450599 84.730466) + (xy 170.424024 84.690693) + (xy 170.433356 84.643776) + (xy 170.47313 84.617201) + (xy 170.485323 84.616) + (xy 171.880154 84.616) + (xy 171.924348 84.634306) + (xy 171.942654 84.6785) + (xy 171.927 84.719873) + (xy 171.907156 84.742342) + (xy 171.906032 84.743538) + (xy 171.905775 84.743892) + (xy 171.905554 84.744113) + (xy 171.905405 84.744204) + (xy 171.904504 84.745163) + (xy 171.902292 84.747375) + (xy 171.901509 84.746592) + (xy 171.900362 84.747296) + (xy 171.901721 84.748496) + (xy 171.889018 84.762879) + (xy 171.885407 84.770571) + (xy 171.838868 84.869695) + (xy 171.838867 84.869698) + (xy 171.836976 84.873726) + (xy 171.818136 84.994724) + (xy 171.818713 84.999137) + (xy 171.818713 84.999138) + (xy 171.830124 85.086401) + (xy 171.834014 85.116145) + (xy 171.841185 85.132443) + (xy 171.841244 85.132813) + (xy 171.842007 85.134311) + (xy 171.844031 85.13891) + (xy 171.844031 85.138911) + (xy 171.87992 85.220473) + (xy 171.883333 85.22823) + (xy 171.896318 85.243677) + (xy 171.898029 85.245713) + (xy 171.900157 85.248434) + (xy 171.902292 85.252625) + (xy 171.910081 85.260414) + (xy 171.913729 85.264391) + (xy 171.962127 85.321968) + (xy 171.985399 85.337459) + (xy 171.991836 85.342733) + (xy 171.993899 85.344232) + (xy 171.997375 85.347708) + (xy 172.001753 85.349939) + (xy 172.001756 85.349941) + (xy 172.00873 85.353494) + (xy 172.014977 85.357148) + (xy 172.064064 85.389823) + (xy 172.068313 85.391151) + (xy 172.068314 85.391151) + (xy 172.100296 85.401143) + (xy 172.110027 85.405109) + (xy 172.112799 85.406521) + (xy 172.112803 85.406522) + (xy 172.117187 85.408756) + (xy 172.127852 85.410445) + (xy 172.136713 85.41252) + (xy 172.176696 85.425012) + (xy 172.176699 85.425012) + (xy 172.180948 85.42634) + (xy 172.230069 85.427241) + (xy 172.238683 85.427999) + (xy 172.24514 85.429022) + (xy 172.245144 85.429022) + (xy 172.25 85.429791) + (xy 172.256947 85.42869) + (xy 172.267853 85.427933) + (xy 172.303383 85.428584) + (xy 172.363532 85.412185) + (xy 172.37019 85.410755) + (xy 172.372147 85.410445) + (xy 172.382813 85.408756) + (xy 172.387196 85.406522) + (xy 172.391875 85.405002) + (xy 172.391878 85.40501) + (xy 172.396727 85.403136) + (xy 172.421527 85.396375) + (xy 172.426521 85.393309) + (xy 172.489709 85.354511) + (xy 172.494037 85.352085) + (xy 172.49824 85.349944) + (xy 172.498248 85.349938) + (xy 172.502625 85.347708) + (xy 172.505427 85.344906) + (xy 172.506264 85.344346) + (xy 172.506704 85.344076) + (xy 172.525881 85.332301) + (xy 172.567286 85.286558) + (xy 172.613623 85.266) + (xy 173.253786 85.266) + (xy 173.29798 85.284306) + (xy 173.305753 85.293777) + (xy 173.335982 85.339018) + (xy 173.349006 85.34772) + (xy 173.349923 85.348333) + (xy 173.376499 85.388107) + (xy 173.367167 85.435023) + (xy 173.349924 85.452266) + (xy 173.341461 85.457921) + (xy 173.332923 85.466459) + (xy 173.289592 85.53131) + (xy 173.28497 85.542468) + (xy 173.273599 85.599631) + (xy 173.273 85.605715) + (xy 173.273 85.649069) + (xy 173.276641 85.657859) + (xy 173.285431 85.6615) + (xy 174.989569 85.6615) + (xy 174.998359 85.657859) + (xy 175.002 85.649069) + (xy 175.002 85.605715) + (xy 175.001401 85.599631) + (xy 174.99003 85.542468) + (xy 174.985408 85.53131) + (xy 174.942077 85.466459) + (xy 174.933539 85.457921) + (xy 174.925076 85.452266) + (xy 174.898501 85.412492) + (xy 174.907834 85.365576) + (xy 174.925077 85.348333) + (xy 174.925995 85.34772) + (xy 174.939018 85.339018) + (xy 174.950322 85.3221) + (xy 174.98588 85.268885) + (xy 174.985881 85.268883) + (xy 174.9893 85.263766) + (xy 174.996369 85.22823) + (xy 175.001901 85.200419) + (xy 175.001901 85.200416) + (xy 175.0025 85.197406) + (xy 175.0025 84.952594) + (xy 174.998963 84.93481) + (xy 174.993902 84.909372) + (xy 174.9893 84.886234) + (xy 174.983883 84.878126) + (xy 174.942437 84.816099) + (xy 174.939018 84.810982) + (xy 174.925526 84.801967) + (xy 174.89895 84.762193) + (xy 174.908282 84.715277) + (xy 174.925526 84.698033) + (xy 174.925974 84.697734) + (xy 174.939018 84.689018) + (xy 174.956706 84.662546) + (xy 174.98588 84.618885) + (xy 174.985881 84.618883) + (xy 174.9893 84.613766) + (xy 174.997533 84.572375) + (xy 175.001901 84.550419) + (xy 175.001901 84.550416) + (xy 175.0025 84.547406) + (xy 175.0025 84.302594) + (xy 175.001664 84.298388) + (xy 174.993231 84.255995) + (xy 174.9893 84.236234) + (xy 174.985208 84.230109) + (xy 174.942437 84.166099) + (xy 174.939018 84.160982) + (xy 174.925526 84.151967) + (xy 174.89895 84.112193) + (xy 174.908282 84.065277) + (xy 174.925526 84.048033) + (xy 174.933901 84.042437) + (xy 174.939018 84.039018) + (xy 174.958713 84.009543) + (xy 174.98588 83.968885) + (xy 174.985881 83.968883) + (xy 174.9893 83.963766) + (xy 174.996583 83.927151) + (xy 175.001901 83.900419) + (xy 175.001901 83.900416) + (xy 175.0025 83.897406) + (xy 175.0025 83.652594) + (xy 175.001715 83.648645) + (xy 174.992931 83.604487) + (xy 174.9893 83.586234) + (xy 174.982182 83.57558) + (xy 174.942437 83.516099) + (xy 174.939018 83.510982) + (xy 174.899719 83.484723) + (xy 174.868885 83.46412) + (xy 174.868883 83.464119) + (xy 174.863766 83.4607) + (xy 174.833192 83.454618) + (xy 174.800419 83.448099) + (xy 174.800416 83.448099) + (xy 174.797406 83.4475) + (xy 173.477594 83.4475) + (xy 173.474584 83.448099) + (xy 173.474581 83.448099) + (xy 173.441808 83.454618) + (xy 173.411234 83.4607) + (xy 173.406117 83.464119) + (xy 173.406115 83.46412) + (xy 173.375281 83.484723) + (xy 173.335982 83.510982) + (xy 173.332563 83.516099) + (xy 173.305753 83.556223) + (xy 173.265979 83.582799) + (xy 173.253786 83.584) + (xy 170.485323 83.584) + (xy 170.441129 83.565694) + (xy 170.422823 83.5215) + (xy 170.441129 83.477306) + (xy 170.450597 83.469535) + (xy 170.491922 83.441922) + (xy 170.520102 83.399748) + (xy 170.521515 83.392648) + (xy 170.526901 83.365569) + (xy 170.5275 83.362558) + (xy 170.5275 82.337442) + (xy 170.525807 82.328932) + (xy 170.521303 82.306287) + (xy 170.521302 82.306285) + (xy 170.520102 82.300252) + (xy 170.491922 82.258078) + (xy 170.449748 82.229898) + (xy 170.443715 82.228698) + (xy 170.443713 82.228697) + (xy 170.415569 82.223099) + (xy 170.412558 82.2225) + (xy 169.7535 82.2225) + (xy 169.709306 82.204194) + (xy 169.691 82.16) + (xy 169.691 82.143232) + (xy 169.69225 82.135893) + (xy 169.691523 82.13581) + (xy 169.69232 82.128819) + (xy 169.694652 82.122178) + (xy 169.691383 82.092802) + (xy 169.691 82.08589) + (xy 169.691 82.078467) + (xy 169.689419 82.071535) + (xy 169.688241 82.064569) + (xy 169.685014 82.035571) + (xy 169.681281 82.029607) + (xy 169.679906 82.025659) + (xy 169.678097 82.0219) + (xy 169.676532 82.015041) + (xy 169.658351 81.992226) + (xy 169.654256 81.986441) + (xy 169.65228 81.983285) + (xy 169.652279 81.983283) + (xy 169.650404 81.980289) + (xy 169.645191 81.975076) + (xy 169.640506 81.969832) + (xy 169.626612 81.952396) + (xy 169.626611 81.952396) + (xy 169.622225 81.946891) + (xy 169.615886 81.943833) + (xy 169.610385 81.939442) + (xy 169.610811 81.938908) + (xy 169.604647 81.934532) + (xy 168.915628 81.245513) + (xy 168.911323 81.239439) + (xy 168.91075 81.239895) + (xy 168.906369 81.234387) + (xy 168.903322 81.228042) + (xy 168.880239 81.209582) + (xy 168.87508 81.204965) + (xy 168.869831 81.199716) + (xy 168.863828 81.195943) + (xy 168.858052 81.191838) + (xy 168.835267 81.173617) + (xy 168.828407 81.17204) + (xy 168.824647 81.170222) + (xy 168.820711 81.168844) + (xy 168.814752 81.165098) + (xy 168.807758 81.164307) + (xy 168.807757 81.164307) + (xy 168.785764 81.161821) + (xy 168.778787 81.160629) + (xy 168.771703 81.159) + (xy 168.764329 81.159) + (xy 168.757308 81.158604) + (xy 168.755627 81.158414) + (xy 168.728162 81.155309) + (xy 168.721517 81.15763) + (xy 168.714523 81.158414) + (xy 168.714447 81.157736) + (xy 168.706995 81.159) + (xy 168.164999 81.159) + (xy 168.120805 81.140694) + (xy 168.102499 81.0965) + (xy 168.102499 81.06659) + (xy 168.092301 80.997305) + (xy 168.085966 80.984401) + (xy 168.059153 80.929791) + (xy 168.040581 80.891964) + (xy 168.036928 80.888317) + (xy 167.961183 80.812704) + (xy 167.961181 80.812702) + (xy 167.957528 80.809056) + (xy 167.87212 80.767307) + (xy 167.856458 80.759651) + (xy 167.856457 80.759651) + (xy 167.852098 80.75752) + (xy 167.847295 80.756819) + (xy 167.847294 80.756819) + (xy 167.825341 80.753617) + (xy 167.783411 80.7475) + (xy 167.525683 80.7475) + (xy 167.26659 80.747501) + (xy 167.197305 80.757699) + (xy 167.192947 80.759839) + (xy 167.192946 80.759839) + (xy 167.177736 80.767307) + (xy 167.091964 80.809419) + (xy 167.088318 80.813071) + (xy 167.088317 80.813072) + (xy 167.012704 80.888817) + (xy 167.012702 80.888819) + (xy 167.009056 80.892472) + (xy 166.982242 80.947327) + (xy 166.959943 80.992946) + (xy 166.95752 80.997902) + (xy 166.9475 81.066589) + (xy 166.947501 81.63341) + (xy 166.957699 81.702695) + (xy 166.959839 81.707053) + (xy 166.959839 81.707054) + (xy 166.961783 81.711014) + (xy 167.009419 81.808036) + (xy 167.013071 81.811682) + (xy 167.013072 81.811683) + (xy 167.088817 81.887296) + (xy 167.088819 81.887298) + (xy 167.092472 81.890944) + (xy 167.161659 81.924764) + (xy 167.193158 81.940161) + (xy 167.197902 81.94248) + (xy 167.202705 81.943181) + (xy 167.202706 81.943181) + (xy 167.224659 81.946383) + (xy 167.266589 81.9525) + (xy 167.524317 81.9525) + (xy 167.78341 81.952499) + (xy 167.852695 81.942301) + (xy 167.85826 81.939569) + (xy 167.88079 81.928507) + (xy 167.958036 81.890581) + (xy 167.97887 81.869711) + (xy 168.037296 81.811183) + (xy 168.037298 81.811181) + (xy 168.040944 81.807528) + (xy 168.089236 81.708735) + (xy 168.090349 81.706458) + (xy 168.090349 81.706457) + (xy 168.09248 81.702098) + (xy 168.1025 81.633411) + (xy 168.1025 81.6035) + (xy 168.120806 81.559306) + (xy 168.165 81.541) + (xy 168.644997 81.541) + (xy 168.689191 81.559306) + (xy 168.97295 81.843064) + (xy 169.245692 82.115806) + (xy 169.263998 82.16) + (xy 169.245692 82.204194) + (xy 169.201498 82.2225) + (xy 168.587442 82.2225) + (xy 168.584431 82.223099) + (xy 168.556287 82.228697) + (xy 168.556285 82.228698) + (xy 168.550252 82.229898) + (xy 168.508078 82.258078) + (xy 168.479898 82.300252) + (xy 168.478698 82.306285) + (xy 168.478697 82.306287) + (xy 168.474193 82.328932) + (xy 168.4725 82.337442) + (xy 168.4725 83.362558) + (xy 168.473099 83.365569) + (xy 168.478486 83.392648) + (xy 168.479898 83.399748) + (xy 168.508078 83.441922) + (xy 168.550252 83.470102) + (xy 168.556285 83.471302) + (xy 168.556287 83.471303) + (xy 168.582384 83.476494) + (xy 168.587442 83.4775) + (xy 169.431497 83.4775) + (xy 169.475691 83.495806) + (xy 169.859371 83.879485) + (xy 169.863678 83.88556) + (xy 169.86425 83.885105) + (xy 169.868631 83.890613) + (xy 169.871678 83.896958) + (xy 169.877175 83.901354) + (xy 169.894766 83.915422) + (xy 169.899921 83.920035) + (xy 169.905169 83.925283) + (xy 169.908132 83.927145) + (xy 169.908139 83.927151) + (xy 169.911174 83.929058) + (xy 169.91695 83.933163) + (xy 169.939733 83.951383) + (xy 169.946591 83.95296) + (xy 169.950356 83.95478) + (xy 169.954292 83.956158) + (xy 169.960248 83.959902) + (xy 169.967239 83.960692) + (xy 169.967244 83.960694) + (xy 169.989237 83.96318) + (xy 169.996223 83.964373) + (xy 170.003297 83.966) + (xy 170.010677 83.966) + (xy 170.017698 83.966396) + (xy 170.046838 83.96969) + (xy 170.053484 83.967369) + (xy 170.060478 83.966585) + (xy 170.060554 83.967264) + (xy 170.068004 83.966) + (xy 173.253786 83.966) + (xy 173.29798 83.984306) + (xy 173.305753 83.993777) + (xy 173.335982 84.039018) + (xy 173.341099 84.042437) + (xy 173.349474 84.048033) + (xy 173.37605 84.087807) + (xy 173.366718 84.134723) + (xy 173.349474 84.151967) + (xy 173.335982 84.160982) + (xy 173.32572 84.17634) + (xy 173.305753 84.206223) + (xy 173.265979 84.232799) + (xy 173.253786 84.234) + (xy 170.118232 84.234) + (xy 170.110893 84.23275) + (xy 170.11081 84.233477) + (xy 170.103819 84.23268) + (xy 170.097178 84.230348) + (xy 170.090185 84.231126) + (xy 170.090184 84.231126) + (xy 170.0678 84.233617) + (xy 170.060888 84.234) + (xy 170.053467 84.234) + (xy 170.050044 84.234781) + (xy 170.050043 84.234781) + (xy 170.046552 84.235577) + (xy 170.039569 84.236758) + (xy 170.017562 84.239207) + (xy 170.010571 84.239985) + (xy 170.004608 84.243718) + (xy 170.000675 84.245088) + (xy 169.996905 84.246902) + (xy 169.990041 84.248468) + (xy 169.974877 84.260552) + (xy 169.967229 84.266646) + (xy 169.961446 84.27074) + (xy 169.95829 84.272716) + (xy 169.958284 84.272721) + (xy 169.955289 84.274596) + (xy 169.950076 84.279809) + (xy 169.944832 84.284494) + (xy 169.937052 84.290694) + (xy 169.921891 84.302775) + (xy 169.918833 84.309114) + (xy 169.914442 84.314615) + (xy 169.913908 84.314189) + (xy 169.909532 84.320353) + (xy 169.525691 84.704194) + (xy 169.481497 84.7225) + (xy 168.587442 84.7225) + (xy 168.584431 84.723099) + (xy 168.556287 84.728697) + (xy 168.556285 84.728698) + (xy 168.550252 84.729898) + (xy 168.508078 84.758078) + (xy 168.479898 84.800252) + (xy 168.478698 84.806285) + (xy 168.478697 84.806287) + (xy 168.475952 84.820088) + (xy 168.4725 84.837442) + (xy 168.4725 85.862558) + (xy 168.473099 85.865569) + (xy 168.477798 85.889189) + (xy 168.479898 85.899748) + (xy 168.508078 85.941922) + (xy 168.550252 85.970102) + (xy 168.556285 85.971302) + (xy 168.556287 85.971303) + (xy 168.572466 85.974521) + (xy 168.587442 85.9775) + (xy 169.201497 85.9775) + (xy 169.245691 85.995806) + (xy 169.263997 86.04) + (xy 169.245691 86.084194) + (xy 168.689191 86.640694) + (xy 168.644997 86.659) + (xy 168.164999 86.659) + (xy 168.120805 86.640694) + (xy 168.102499 86.5965) + (xy 168.102499 86.56659) + (xy 168.092301 86.497305) + (xy 168.040581 86.391964) + (xy 168.023313 86.374726) + (xy 167.961183 86.312704) + (xy 167.961181 86.312702) + (xy 167.957528 86.309056) + (xy 167.880405 86.271357) + (xy 167.856458 86.259651) + (xy 167.856457 86.259651) + (xy 167.852098 86.25752) + (xy 167.847295 86.256819) + (xy 167.847294 86.256819) + (xy 167.811804 86.251642) + (xy 167.783411 86.2475) + (xy 167.525683 86.2475) + (xy 167.26659 86.247501) + (xy 167.197305 86.257699) + (xy 167.192947 86.259839) + (xy 167.192946 86.259839) + (xy 167.177736 86.267307) + (xy 167.091964 86.309419) + (xy 167.088318 86.313071) + (xy 167.088317 86.313072) + (xy 167.012704 86.388817) + (xy 167.012702 86.388819) + (xy 167.009056 86.392472) + (xy 166.980385 86.451126) + (xy 166.959943 86.492946) + (xy 166.95752 86.497902) + (xy 166.956819 86.502705) + (xy 166.956819 86.502706) + (xy 166.954466 86.518835) + (xy 166.9475 86.566589) + (xy 166.551828 86.566589) + (xy 166.551667 86.564386) + (xy 166.542522 86.502257) + (xy 166.539674 86.49309) + (xy 166.492444 86.396895) + (xy 166.486516 86.388613) + (xy 166.410889 86.313117) + (xy 166.402594 86.307201) + (xy 166.306313 86.260137) + (xy 166.297149 86.257305) + (xy 166.235609 86.248328) + (xy 166.231096 86.248) + (xy 166.050931 86.248) + (xy 166.042141 86.251641) + (xy 166.0385 86.260431) + (xy 166.0385 86.774069) + (xy 165.9115 86.774069) + (xy 165.9115 86.260432) + (xy 165.907859 86.251642) + (xy 165.899069 86.248001) + (xy 165.718917 86.248001) + (xy 165.714386 86.248333) + (xy 165.652257 86.257478) + (xy 165.64309 86.260326) + (xy 165.546895 86.307556) + (xy 165.538613 86.313484) + (xy 165.463117 86.389111) + (xy 165.457201 86.397406) + (xy 165.410137 86.493687) + (xy 165.407305 86.502851) + (xy 165.398328 86.564391) + (xy 165.398 86.568904) + (xy 165.398 86.774069) + (xy 164.191 86.774069) + (xy 164.191 86.293232) + (xy 164.19225 86.285893) + (xy 164.191523 86.28581) + (xy 164.19232 86.278819) + (xy 164.194652 86.272178) + (xy 164.193629 86.262978) + (xy 164.191383 86.2428) + (xy 164.191 86.235888) + (xy 164.191 86.228467) + (xy 164.189423 86.221552) + (xy 164.188242 86.214569) + (xy 164.185793 86.192562) + (xy 164.185015 86.185571) + (xy 164.181282 86.179608) + (xy 164.179912 86.175675) + (xy 164.178098 86.171905) + (xy 164.176532 86.165041) + (xy 164.158354 86.142229) + (xy 164.15426 86.136446) + (xy 164.152284 86.13329) + (xy 164.152279 86.133284) + (xy 164.150404 86.130289) + (xy 164.145191 86.125076) + (xy 164.140506 86.119832) + (xy 164.126612 86.102396) + (xy 164.126611 86.102396) + (xy 164.122225 86.096891) + (xy 164.115886 86.093833) + (xy 164.110385 86.089442) + (xy 164.110811 86.088908) + (xy 164.104647 86.084532) + (xy 162.990628 84.970513) + (xy 162.986323 84.964439) + (xy 162.98575 84.964895) + (xy 162.981369 84.959387) + (xy 162.978322 84.953042) + (xy 162.955239 84.934582) + (xy 162.95008 84.929965) + (xy 162.944831 84.924716) + (xy 162.938828 84.920943) + (xy 162.933052 84.916838) + (xy 162.910267 84.898617) + (xy 162.903407 84.89704) + (xy 162.899647 84.895222) + (xy 162.895711 84.893844) + (xy 162.889752 84.890098) + (xy 162.882758 84.889307) + (xy 162.882757 84.889307) + (xy 162.860764 84.886821) + (xy 162.853787 84.885629) + (xy 162.846703 84.884) + (xy 162.839329 84.884) + (xy 162.832308 84.883604) + (xy 162.803162 84.880309) + (xy 162.796517 84.88263) + (xy 162.789523 84.883414) + (xy 162.789447 84.882736) + (xy 162.781995 84.884) + (xy 161.746214 84.884) + (xy 161.70202 84.865694) + (xy 161.694247 84.856223) + (xy 161.68865 84.847847) + (xy 161.664018 84.810982) + (xy 161.650526 84.801967) + (xy 161.62395 84.762193) + (xy 161.633282 84.715277) + (xy 161.650526 84.698033) + (xy 161.650974 84.697734) + (xy 161.664018 84.689018) + (xy 161.694248 84.643776) + (xy 161.734021 84.617201) + (xy 161.746214 84.616) + (xy 162.736842 84.616) + (xy 162.771472 84.626471) + (xy 162.814064 84.654823) + (xy 162.818313 84.656151) + (xy 162.818314 84.656151) + (xy 162.850296 84.666143) + (xy 162.860027 84.670109) + (xy 162.862799 84.671521) + (xy 162.862803 84.671522) + (xy 162.867187 84.673756) + (xy 162.877852 84.675445) + (xy 162.886713 84.67752) + (xy 162.926696 84.690012) + (xy 162.926699 84.690012) + (xy 162.930948 84.69134) + (xy 162.980069 84.692241) + (xy 162.988683 84.692999) + (xy 162.99514 84.694022) + (xy 162.995144 84.694022) + (xy 163 84.694791) + (xy 163.006947 84.69369) + (xy 163.017853 84.692933) + (xy 163.053383 84.693584) + (xy 163.113532 84.677185) + (xy 163.12019 84.675755) + (xy 163.122147 84.675445) + (xy 163.132813 84.673756) + (xy 163.137196 84.671522) + (xy 163.141875 84.670002) + (xy 163.141878 84.67001) + (xy 163.146727 84.668136) + (xy 163.171527 84.661375) + (xy 163.175793 84.658756) + (xy 163.239709 84.619511) + (xy 163.244037 84.617085) + (xy 163.24824 84.614944) + (xy 163.248248 84.614938) + (xy 163.252625 84.612708) + (xy 163.255427 84.609906) + (xy 163.256264 84.609346) + (xy 163.258901 84.607727) + (xy 163.275881 84.597301) + (xy 163.358058 84.506513) + (xy 163.411451 84.396311) + (xy 163.412831 84.388112) + (xy 163.42614 84.309) + (xy 163.431767 84.275552) + (xy 163.431896 84.265) + (xy 163.418999 84.174944) + (xy 163.417973 84.16778) + (xy 163.429829 84.121437) + (xy 163.470982 84.097051) + (xy 163.508225 84.103237) + (xy 163.508739 84.103499) + (xy 163.514977 84.107148) + (xy 163.564064 84.139823) + (xy 163.568313 84.141151) + (xy 163.568314 84.141151) + (xy 163.600296 84.151143) + (xy 163.610027 84.155109) + (xy 163.612799 84.156521) + (xy 163.612803 84.156522) + (xy 163.617187 84.158756) + (xy 163.627852 84.160445) + (xy 163.636713 84.16252) + (xy 163.676696 84.175012) + (xy 163.676699 84.175012) + (xy 163.680948 84.17634) + (xy 163.730069 84.177241) + (xy 163.738683 84.177999) + (xy 163.74514 84.179022) + (xy 163.745144 84.179022) + (xy 163.75 84.179791) + (xy 163.756947 84.17869) + (xy 163.767853 84.177933) + (xy 163.803383 84.178584) + (xy 163.863532 84.162185) + (xy 163.87019 84.160755) + (xy 163.872147 84.160445) + (xy 163.882813 84.158756) + (xy 163.887196 84.156522) + (xy 163.891875 84.155002) + (xy 163.891878 84.15501) + (xy 163.896727 84.153136) + (xy 163.921527 84.146375) + (xy 163.926819 84.143126) + (xy 163.989709 84.104511) + (xy 163.994037 84.102085) + (xy 163.99824 84.099944) + (xy 163.998248 84.099938) + (xy 164.002625 84.097708) + (xy 164.005427 84.094906) + (xy 164.006264 84.094346) + (xy 164.008746 84.092822) + (xy 164.025881 84.082301) + (xy 164.108058 83.991513) + (xy 164.161451 83.881311) + (xy 164.164873 83.860975) + (xy 164.174654 83.802832) + (xy 164.181767 83.760552) + (xy 164.181896 83.75) + (xy 164.164536 83.628781) + (xy 164.113852 83.517307) + (xy 164.099199 83.500302) + (xy 164.097708 83.497375) + (xy 164.0919 83.491567) + (xy 164.088746 83.48817) + (xy 164.036826 83.427914) + (xy 164.033918 83.424539) + (xy 164.013741 83.411461) + (xy 164.010155 83.408559) + (xy 164.010081 83.408661) + (xy 164.006106 83.405773) + (xy 164.002625 83.402292) + (xy 163.991343 83.396543) + (xy 163.985736 83.393309) + (xy 163.984717 83.392648) + (xy 163.963322 83.378781) + (xy 163.934893 83.360354) + (xy 163.93489 83.360353) + (xy 163.93116 83.357935) + (xy 163.926901 83.356661) + (xy 163.926898 83.35666) + (xy 163.903677 83.349716) + (xy 163.898839 83.348269) + (xy 163.888377 83.344079) + (xy 163.882813 83.341244) + (xy 163.871067 83.339384) + (xy 163.862951 83.337536) + (xy 163.852151 83.334306) + (xy 163.813838 83.322848) + (xy 163.769496 83.322577) + (xy 163.760103 83.321809) + (xy 163.754857 83.320978) + (xy 163.754856 83.320978) + (xy 163.75 83.320209) + (xy 163.741373 83.321576) + (xy 163.73122 83.322344) + (xy 163.712836 83.322231) + (xy 163.695838 83.322127) + (xy 163.695836 83.322127) + (xy 163.691385 83.3221) + (xy 163.637011 83.337641) + (xy 163.629623 83.339275) + (xy 163.617187 83.341244) + (xy 163.612804 83.343477) + (xy 163.61187 83.343781) + (xy 163.602155 83.347603) + (xy 163.577929 83.354526) + (xy 163.577927 83.354527) + (xy 163.573644 83.355751) + (xy 163.569875 83.358129) + (xy 163.515166 83.392648) + (xy 163.468022 83.400749) + (xy 163.428957 83.373141) + (xy 163.420181 83.329421) + (xy 163.425899 83.295431) + (xy 163.431767 83.260552) + (xy 163.431896 83.25) + (xy 163.423242 83.189569) + (xy 163.420335 83.169272) + (xy 163.432191 83.122929) + (xy 163.473344 83.098543) + (xy 163.516835 83.108384) + (xy 163.564064 83.139823) + (xy 163.568313 83.141151) + (xy 163.568314 83.141151) + (xy 163.600296 83.151143) + (xy 163.610027 83.155109) + (xy 163.612799 83.156521) + (xy 163.612803 83.156522) + (xy 163.617187 83.158756) + (xy 163.627852 83.160445) + (xy 163.636713 83.16252) + (xy 163.676696 83.175012) + (xy 163.676699 83.175012) + (xy 163.680948 83.17634) + (xy 163.730069 83.177241) + (xy 163.738683 83.177999) + (xy 163.74514 83.179022) + (xy 163.745144 83.179022) + (xy 163.75 83.179791) + (xy 163.756947 83.17869) + (xy 163.767853 83.177933) + (xy 163.803383 83.178584) + (xy 163.863532 83.162185) + (xy 163.87019 83.160755) + (xy 163.872147 83.160445) + (xy 163.882813 83.158756) + (xy 163.887196 83.156522) + (xy 163.891875 83.155002) + (xy 163.891878 83.15501) + (xy 163.896727 83.153136) + (xy 163.921527 83.146375) + (xy 163.926521 83.143309) + (xy 163.989709 83.104511) + (xy 163.994037 83.102085) + (xy 163.99824 83.099944) + (xy 163.998248 83.099938) + (xy 164.002625 83.097708) + (xy 164.005427 83.094906) + (xy 164.006264 83.094346) + (xy 164.025881 83.082301) + (xy 164.108058 82.991513) + (xy 164.161451 82.881311) + (xy 164.163317 82.870224) + (xy 164.176727 82.790508) + (xy 164.181767 82.760552) + (xy 164.181896 82.75) + (xy 164.164536 82.628781) + (xy 164.113852 82.517307) + (xy 164.099199 82.500302) + (xy 164.097708 82.497375) + (xy 164.0919 82.491567) + (xy 164.088746 82.48817) + (xy 164.036826 82.427914) + (xy 164.033918 82.424539) + (xy 164.013741 82.411461) + (xy 164.010155 82.408559) + (xy 164.010081 82.408661) + (xy 164.006106 82.405773) + (xy 164.002625 82.402292) + (xy 163.991343 82.396543) + (xy 163.985736 82.393309) + (xy 163.934893 82.360354) + (xy 163.93489 82.360353) + (xy 163.93116 82.357935) + (xy 163.926901 82.356661) + (xy 163.926898 82.35666) + (xy 163.904115 82.349847) + (xy 163.898839 82.348269) + (xy 163.888377 82.344079) + (xy 163.882813 82.341244) + (xy 163.871067 82.339384) + (xy 163.862951 82.337536) + (xy 163.852425 82.334388) + (xy 163.813838 82.322848) + (xy 163.769496 82.322577) + (xy 163.760103 82.321809) + (xy 163.754857 82.320978) + (xy 163.754856 82.320978) + (xy 163.75 82.320209) + (xy 163.741373 82.321576) + (xy 163.73122 82.322344) + (xy 163.712836 82.322231) + (xy 163.695838 82.322127) + (xy 163.695836 82.322127) + (xy 163.691385 82.3221) + (xy 163.687107 82.323323) + (xy 163.687105 82.323323) + (xy 163.6725 82.327498) + (xy 163.648392 82.334388) + (xy 163.600869 82.328932) + (xy 163.595351 82.325236) + (xy 163.594831 82.324716) + (xy 163.591867 82.322853) + (xy 163.591862 82.322849) + (xy 163.588828 82.320943) + (xy 163.583052 82.316838) + (xy 163.560267 82.298617) + (xy 163.553407 82.29704) + (xy 163.549647 82.295222) + (xy 163.545711 82.293844) + (xy 163.539752 82.290098) + (xy 163.532758 82.289307) + (xy 163.532757 82.289307) + (xy 163.510764 82.286821) + (xy 163.503787 82.285629) + (xy 163.496703 82.284) + (xy 163.489329 82.284) + (xy 163.482308 82.283604) + (xy 163.480627 82.283414) + (xy 163.453162 82.280309) + (xy 163.446517 82.28263) + (xy 163.439523 82.283414) + (xy 163.439447 82.282736) + (xy 163.431995 82.284) + (xy 161.746214 82.284) + (xy 161.70202 82.265694) + (xy 161.694247 82.256223) + (xy 161.671046 82.2215) + (xy 161.664018 82.210982) + (xy 161.650526 82.201967) + (xy 161.62395 82.162193) + (xy 161.633282 82.115277) + (xy 161.650526 82.098033) + (xy 161.658901 82.092437) + (xy 161.664018 82.089018) + (xy 161.694247 82.043777) + (xy 161.71088 82.018885) + (xy 161.710881 82.018883) + (xy 161.7143 82.013766) + (xy 161.723039 81.969832) + (xy 161.726901 81.950419) + (xy 161.726901 81.950416) + (xy 161.7275 81.947406) + (xy 161.7275 81.702594) + (xy 161.726565 81.69789) + (xy 161.716724 81.648421) + (xy 161.7143 81.636234) + (xy 161.710859 81.631083) + (xy 165.398001 81.631083) + (xy 165.398333 81.635614) + (xy 165.407478 81.697743) + (xy 165.410326 81.70691) + (xy 165.457556 81.803105) + (xy 165.463484 81.811387) + (xy 165.539111 81.886883) + (xy 165.547406 81.892799) + (xy 165.643687 81.939863) + (xy 165.652851 81.942695) + (xy 165.714391 81.951672) + (xy 165.718904 81.952) + (xy 165.899069 81.952) + (xy 165.907859 81.948359) + (xy 165.9115 81.939569) + (xy 165.9115 81.939568) + (xy 166.0385 81.939568) + (xy 166.042141 81.948358) + (xy 166.050931 81.951999) + (xy 166.231083 81.951999) + (xy 166.235614 81.951667) + (xy 166.297743 81.942522) + (xy 166.30691 81.939674) + (xy 166.403105 81.892444) + (xy 166.411387 81.886516) + (xy 166.486883 81.810889) + (xy 166.492799 81.802594) + (xy 166.539863 81.706313) + (xy 166.542695 81.697149) + (xy 166.551672 81.635609) + (xy 166.552 81.631096) + (xy 166.552 81.425931) + (xy 166.548359 81.417141) + (xy 166.539569 81.4135) + (xy 166.050931 81.4135) + (xy 166.042141 81.417141) + (xy 166.0385 81.425931) + (xy 166.0385 81.939568) + (xy 165.9115 81.939568) + (xy 165.9115 81.425931) + (xy 165.907859 81.417141) + (xy 165.899069 81.4135) + (xy 165.410432 81.4135) + (xy 165.401642 81.417141) + (xy 165.398001 81.425931) + (xy 165.398001 81.631083) + (xy 161.710859 81.631083) + (xy 161.667437 81.566099) + (xy 161.664018 81.560982) + (xy 161.60437 81.521126) + (xy 161.593885 81.51412) + (xy 161.593883 81.514119) + (xy 161.588766 81.5107) + (xy 161.558192 81.504618) + (xy 161.525419 81.498099) + (xy 161.525416 81.498099) + (xy 161.522406 81.4975) + (xy 161.0035 81.4975) + (xy 160.959306 81.479194) + (xy 160.941 81.435) + (xy 160.941 81.419384) + (xy 160.959306 81.37519) + (xy 160.970797 81.366123) + (xy 160.989712 81.354509) + (xy 160.994034 81.352085) + (xy 161.002625 81.347708) + (xy 161.005427 81.344906) + (xy 161.006264 81.344346) + (xy 161.008891 81.342733) + (xy 161.025881 81.332301) + (xy 161.07859 81.274069) + (xy 165.398 81.274069) + (xy 165.401641 81.282859) + (xy 165.410431 81.2865) + (xy 165.899069 81.2865) + (xy 165.907859 81.282859) + (xy 165.9115 81.274069) + (xy 166.0385 81.274069) + (xy 166.042141 81.282859) + (xy 166.050931 81.2865) + (xy 166.539568 81.2865) + (xy 166.548358 81.282859) + (xy 166.551999 81.274069) + (xy 166.551999 81.068917) + (xy 166.551667 81.064386) + (xy 166.542522 81.002257) + (xy 166.539674 80.99309) + (xy 166.492444 80.896895) + (xy 166.486516 80.888613) + (xy 166.410889 80.813117) + (xy 166.402594 80.807201) + (xy 166.306313 80.760137) + (xy 166.297149 80.757305) + (xy 166.235609 80.748328) + (xy 166.231096 80.748) + (xy 166.050931 80.748) + (xy 166.042141 80.751641) + (xy 166.0385 80.760431) + (xy 166.0385 81.274069) + (xy 165.9115 81.274069) + (xy 165.9115 80.760432) + (xy 165.907859 80.751642) + (xy 165.899069 80.748001) + (xy 165.718917 80.748001) + (xy 165.714386 80.748333) + (xy 165.652257 80.757478) + (xy 165.64309 80.760326) + (xy 165.546895 80.807556) + (xy 165.538613 80.813484) + (xy 165.463117 80.889111) + (xy 165.457201 80.897406) + (xy 165.410137 80.993687) + (xy 165.407305 81.002851) + (xy 165.398328 81.064391) + (xy 165.398 81.068904) + (xy 165.398 81.274069) + (xy 161.07859 81.274069) + (xy 161.108058 81.241513) + (xy 161.161451 81.131311) + (xy 161.163317 81.120224) + (xy 161.181367 81.012928) + (xy 161.181767 81.010552) + (xy 161.181896 81) + (xy 161.164536 80.878781) + (xy 161.113852 80.767307) + (xy 161.099199 80.750302) + (xy 161.097708 80.747375) + (xy 161.0919 80.741567) + (xy 161.088746 80.73817) + (xy 161.036826 80.677914) + (xy 161.033918 80.674539) + (xy 161.013741 80.661461) + (xy 161.010155 80.658559) + (xy 161.010081 80.658661) + (xy 161.006106 80.655773) + (xy 161.002625 80.652292) + (xy 160.991343 80.646543) + (xy 160.985736 80.643309) + (xy 160.979226 80.639089) + (xy 160.960789 80.627139) + (xy 160.934893 80.610354) + (xy 160.93489 80.610353) + (xy 160.93116 80.607935) + (xy 160.926901 80.606661) + (xy 160.926898 80.60666) + (xy 160.908345 80.601112) + (xy 160.898839 80.598269) + (xy 160.888377 80.594079) + (xy 160.882813 80.591244) + (xy 160.871067 80.589384) + (xy 160.862951 80.587536) + (xy 160.834793 80.579115) + (xy 160.813838 80.572848) + (xy 160.769496 80.572577) + (xy 160.760103 80.571809) + (xy 160.754857 80.570978) + (xy 160.754856 80.570978) + (xy 160.75 80.570209) + (xy 160.741373 80.571576) + (xy 160.73122 80.572344) + (xy 160.712836 80.572231) + (xy 160.695838 80.572127) + (xy 160.695836 80.572127) + (xy 160.691385 80.5721) + (xy 160.637011 80.587641) + (xy 160.629623 80.589275) + (xy 160.617187 80.591244) + (xy 160.612804 80.593477) + (xy 160.61187 80.593781) + (xy 160.602155 80.597603) + (xy 160.577929 80.604526) + (xy 160.577927 80.604527) + (xy 160.573644 80.605751) + (xy 160.569875 80.608129) + (xy 160.557171 80.616145) + (xy 160.514119 80.643309) + (xy 160.512819 80.644129) + (xy 160.507842 80.646959) + (xy 160.501757 80.650059) + (xy 160.501756 80.65006) + (xy 160.497375 80.652292) + (xy 160.493897 80.65577) + (xy 160.492445 80.656825) + (xy 160.489058 80.65912) + (xy 160.47008 80.671095) + (xy 160.467137 80.674427) + (xy 160.467135 80.674429) + (xy 160.407156 80.742342) + (xy 160.406032 80.743538) + (xy 160.405775 80.743892) + (xy 160.405554 80.744113) + (xy 160.405405 80.744204) + (xy 160.404504 80.745163) + (xy 160.402292 80.747375) + (xy 160.401509 80.746592) + (xy 160.400362 80.747296) + (xy 160.401721 80.748496) + (xy 160.395002 80.756104) + (xy 160.389018 80.762879) + (xy 160.387127 80.766907) + (xy 160.338868 80.869695) + (xy 160.338867 80.869698) + (xy 160.336976 80.873726) + (xy 160.318136 80.994724) + (xy 160.318713 80.999137) + (xy 160.318713 80.999138) + (xy 160.327534 81.06659) + (xy 160.334014 81.116145) + (xy 160.341185 81.132443) + (xy 160.341244 81.132813) + (xy 160.342007 81.134311) + (xy 160.344031 81.13891) + (xy 160.344031 81.138911) + (xy 160.378454 81.217141) + (xy 160.383333 81.22823) + (xy 160.396714 81.244149) + (xy 160.398029 81.245713) + (xy 160.400157 81.248434) + (xy 160.402292 81.252625) + (xy 160.410081 81.260414) + (xy 160.413729 81.264391) + (xy 160.462127 81.321968) + (xy 160.485399 81.337459) + (xy 160.491836 81.342733) + (xy 160.493899 81.344232) + (xy 160.497375 81.347708) + (xy 160.501753 81.349939) + (xy 160.501756 81.349941) + (xy 160.50873 81.353494) + (xy 160.514983 81.357152) + (xy 160.527617 81.365562) + (xy 160.531134 81.367903) + (xy 160.557778 81.407631) + (xy 160.559 81.419929) + (xy 160.559 81.435) + (xy 160.540694 81.479194) + (xy 160.4965 81.4975) + (xy 160.202594 81.4975) + (xy 160.199584 81.498099) + (xy 160.199581 81.498099) + (xy 160.166808 81.504618) + (xy 160.136234 81.5107) + (xy 160.131117 81.514119) + (xy 160.131115 81.51412) + (xy 160.12063 81.521126) + (xy 160.060982 81.560982) + (xy 160.057563 81.566099) + (xy 160.014142 81.631083) + (xy 160.0107 81.636234) + (xy 160.008276 81.648421) + (xy 159.998436 81.69789) + (xy 159.9975 81.702594) + (xy 159.9975 81.947406) + (xy 159.998099 81.950416) + (xy 159.998099 81.950419) + (xy 160.001961 81.969832) + (xy 160.0107 82.013766) + (xy 160.014119 82.018883) + (xy 160.01412 82.018885) + (xy 160.030753 82.043777) + (xy 160.060982 82.089018) + (xy 160.066099 82.092437) + (xy 160.074474 82.098033) + (xy 160.10105 82.137807) + (xy 160.091718 82.184723) + (xy 160.074474 82.201967) + (xy 160.060982 82.210982) + (xy 160.0107 82.286234) + (xy 160.005908 82.310324) + (xy 159.998493 82.347603) + (xy 159.9975 82.352594) + (xy 159.9975 82.597406) + (xy 159.998099 82.600416) + (xy 159.998099 82.600419) + (xy 160.002735 82.623726) + (xy 160.0107 82.663766) + (xy 160.014119 82.668883) + (xy 160.01412 82.668885) + (xy 160.030753 82.693777) + (xy 160.060982 82.739018) + (xy 160.066099 82.742437) + (xy 160.074474 82.748033) + (xy 160.10105 82.787807) + (xy 160.091718 82.834723) + (xy 160.074474 82.851967) + (xy 160.060982 82.860982) + (xy 160.057563 82.866099) + (xy 160.015596 82.928907) + (xy 160.0107 82.936234) + (xy 160.009064 82.944458) + (xy 159.998177 82.999193) + (xy 159.9975 83.002594) + (xy 159.9975 83.247406) + (xy 159.998099 83.250416) + (xy 159.998099 83.250419) + (xy 160.001602 83.268029) + (xy 160.0107 83.313766) + (xy 160.014119 83.318883) + (xy 160.01412 83.318885) + (xy 160.048071 83.369695) + (xy 160.060982 83.389018) + (xy 160.073792 83.397577) + (xy 160.074474 83.398033) + (xy 160.10105 83.437807) + (xy 160.091718 83.484723) + (xy 160.074474 83.501967) + (xy 160.060982 83.510982) + (xy 160.057563 83.516099) + (xy 160.017819 83.57558) + (xy 160.0107 83.586234) + (xy 160.007069 83.604487) + (xy 159.998286 83.648645) + (xy 159.9975 83.652594) + (xy 159.9975 83.897406) + (xy 159.998099 83.900416) + (xy 159.998099 83.900419) + (xy 160.003417 83.927151) + (xy 160.0107 83.963766) + (xy 160.014119 83.968883) + (xy 160.01412 83.968885) + (xy 160.041287 84.009543) + (xy 160.060982 84.039018) + (xy 160.066099 84.042437) + (xy 160.074474 84.048033) + (xy 160.10105 84.087807) + (xy 160.091718 84.134723) + (xy 160.074474 84.151967) + (xy 160.060982 84.160982) + (xy 160.057563 84.166099) + (xy 160.014793 84.230109) + (xy 160.0107 84.236234) + (xy 160.006769 84.255995) + (xy 159.998337 84.298388) + (xy 159.9975 84.302594) + (xy 159.9975 84.547406) + (xy 159.998099 84.550416) + (xy 159.998099 84.550419) + (xy 160.002467 84.572375) + (xy 160.0107 84.613766) + (xy 160.014119 84.618883) + (xy 160.01412 84.618885) + (xy 160.043294 84.662546) + (xy 160.060982 84.689018) + (xy 160.074027 84.697734) + (xy 160.074474 84.698033) + (xy 160.10105 84.737807) + (xy 160.091718 84.784723) + (xy 160.074474 84.801967) + (xy 160.060982 84.810982) + (xy 160.057563 84.816099) + (xy 160.016118 84.878126) + (xy 160.0107 84.886234) + (xy 160.006098 84.909372) + (xy 160.001038 84.93481) + (xy 159.9975 84.952594) + (xy 159.9975 85.197406) + (xy 159.998099 85.200416) + (xy 159.998099 85.200419) + (xy 160.003631 85.22823) + (xy 160.0107 85.263766) + (xy 160.014119 85.268883) + (xy 160.01412 85.268885) + (xy 160.049678 85.3221) + (xy 160.060982 85.339018) + (xy 160.074006 85.34772) + (xy 160.074474 85.348033) + (xy 160.10105 85.387807) + (xy 160.091718 85.434723) + (xy 160.074474 85.451967) + (xy 160.060982 85.460982) + (xy 160.057563 85.466099) + (xy 160.017542 85.525995) + (xy 160.0107 85.536234) + (xy 160.004618 85.566808) + (xy 159.998872 85.595698) + (xy 159.9975 85.602594) + (xy 159.9975 85.847406) + (xy 159.998099 85.850416) + (xy 159.998099 85.850419) + (xy 160.003045 85.875284) + (xy 160.0107 85.913766) + (xy 160.014119 85.918883) + (xy 160.01412 85.918885) + (xy 160.036564 85.952474) + (xy 160.060982 85.989018) + (xy 160.066099 85.992437) + (xy 160.074474 85.998033) + (xy 160.10105 86.037807) + (xy 160.091718 86.084723) + (xy 160.074474 86.101967) + (xy 160.060982 86.110982) + (xy 160.057563 86.116099) + (xy 160.015812 86.178584) + (xy 160.0107 86.186234) + (xy 160.006111 86.209306) + (xy 159.998348 86.248333) + (xy 159.9975 86.252594) + (xy 159.9975 86.497406) + (xy 159.998099 86.500416) + (xy 159.998099 86.500419) + (xy 160.002546 86.522775) + (xy 160.0107 86.563766) + (xy 160.014119 86.568883) + (xy 160.01412 86.568885) + (xy 160.03525 86.600508) + (xy 160.060982 86.639018) + (xy 160.066099 86.642437) + (xy 160.074474 86.648033) + (xy 160.10105 86.687807) + (xy 160.091718 86.734723) + (xy 160.074474 86.751967) + (xy 160.060982 86.760982) + (xy 160.057563 86.766099) + (xy 160.015457 86.829115) + (xy 160.0107 86.836234) + (xy 160.006967 86.855002) + (xy 159.999201 86.894045) + (xy 159.9975 86.902594) + (xy 159.9975 87.147406) + (xy 159.998099 87.150416) + (xy 159.998099 87.150419) + (xy 160.003581 87.177978) + (xy 160.0107 87.213766) + (xy 160.014119 87.218883) + (xy 160.01412 87.218885) + (xy 160.042672 87.261615) + (xy 160.060982 87.289018) + (xy 160.066737 87.292863) + (xy 160.074474 87.298033) + (xy 160.10105 87.337807) + (xy 160.091718 87.384723) + (xy 160.074474 87.401967) + (xy 160.060982 87.410982) + (xy 160.057563 87.416099) + (xy 160.015355 87.479268) + (xy 160.0107 87.486234) + (xy 160.00589 87.510414) + (xy 159.998937 87.545372) + (xy 159.9975 87.552594) + (xy 159.9975 87.797406) + (xy 159.998099 87.800416) + (xy 159.998099 87.800419) + (xy 160.003057 87.825343) + (xy 160.0107 87.863766) + (xy 160.014119 87.868883) + (xy 160.01412 87.868885) + (xy 160.031661 87.895136) + (xy 160.060982 87.939018) + (xy 160.066099 87.942437) + (xy 160.131115 87.98588) + (xy 160.131117 87.985881) + (xy 160.136234 87.9893) + (xy 160.163949 87.994813) + (xy 160.199581 88.001901) + (xy 160.199584 88.001901) + (xy 160.202594 88.0025) + (xy 161.522406 88.0025) + (xy 161.525416 88.001901) + (xy 161.525419 88.001901) + (xy 161.561051 87.994813) + (xy 161.588766 87.9893) + (xy 161.61026 87.974938) + (xy 161.624299 87.965558) + (xy 161.671216 87.956226) + (xy 161.703216 87.973331) + (xy 162.776614 89.046729) + (xy 162.79492 89.090923) + (xy 162.79492 90.637747) + (xy 162.776614 90.681941) + (xy 160.395513 93.063042) + (xy 160.389439 93.067347) + (xy 160.389895 93.06792) + (xy 160.384387 93.072301) + (xy 160.378042 93.075348) + (xy 160.373646 93.080845) + (xy 160.359582 93.098431) + (xy 160.354965 93.10359) + (xy 160.349716 93.108839) + (xy 160.347847 93.111813) + (xy 160.345943 93.114842) + (xy 160.341838 93.120618) + (xy 160.323617 93.143403) + (xy 160.32204 93.150263) + (xy 160.320222 93.154023) + (xy 160.318844 93.157959) + (xy 160.315098 93.163918) + (xy 160.314307 93.170912) + (xy 160.314307 93.170913) + (xy 160.311821 93.192906) + (xy 160.310629 93.199883) + (xy 160.309 93.206967) + (xy 160.309 93.214341) + (xy 160.308604 93.221362) + (xy 160.305309 93.250508) + (xy 160.30763 93.257153) + (xy 160.308414 93.264147) + (xy 160.307736 93.264223) + (xy 160.309 93.271675) + (xy 160.309 93.470881) + (xy 160.290694 93.515075) + (xy 160.2465 93.533381) + (xy 160.211777 93.522847) + (xy 160.154012 93.484249) + (xy 160.147976 93.483048) + (xy 160.147975 93.483048) + (xy 160.097957 93.473099) + (xy 160.097954 93.473099) + (xy 160.094944 93.4725) + (xy 159.905056 93.4725) + (xy 159.902046 93.473099) + (xy 159.902043 93.473099) + (xy 159.852025 93.483048) + (xy 159.852024 93.483048) + (xy 159.845988 93.484249) + (xy 159.784274 93.525486) + (xy 159.737358 93.534819) + (xy 159.714827 93.525487) + (xy 159.658933 93.488141) + (xy 159.647779 93.48352) + (xy 159.597904 93.473599) + (xy 159.591823 93.473) + (xy 159.575931 93.473) + (xy 159.567141 93.476641) + (xy 159.5635 93.485431) + (xy 159.5635 95.189568) + (xy 159.567141 95.198358) + (xy 159.575931 95.201999) + (xy 159.591821 95.201999) + (xy 159.597906 95.2014) + (xy 159.647776 95.19148) + (xy 159.658934 95.186858) + (xy 159.711777 95.151551) + (xy 159.758694 95.142219) + (xy 159.798467 95.168795) + (xy 159.809 95.203518) + (xy 159.809 95.806) + (xy 159.790694 95.850194) + (xy 159.7465 95.8685) + (xy 154.2535 95.8685) + (xy 154.209306 95.850194) + (xy 154.191 95.806) + (xy 154.191 95.203518) + (xy 154.209306 95.159324) + (xy 154.2535 95.141018) + (xy 154.288223 95.151551) + (xy 154.341067 95.186859) + (xy 154.352221 95.19148) + (xy 154.402096 95.201401) + (xy 154.408177 95.202) + (xy 154.424069 95.202) + (xy 154.432859 95.198359) + (xy 154.4365 95.189569) + (xy 154.4365 93.485432) + (xy 154.432859 93.476642) + (xy 154.424069 93.473001) + (xy 154.408179 93.473001) + (xy 154.402094 93.4736) + (xy 154.352224 93.48352) + (xy 154.341066 93.488142) + (xy 154.288223 93.523449) + (xy 154.241306 93.532781) + (xy 154.201533 93.506205) + (xy 154.191 93.471482) + (xy 154.191 90.105003) + (xy 154.209306 90.060809) + (xy 154.814328 89.455786) + (xy 154.858522 89.43748) + (xy 155.641517 89.43748) + (xy 155.685711 89.455786) + (xy 155.704017 89.49998) + (xy 155.685711 89.544174) + (xy 155.395513 89.834372) + (xy 155.389439 89.838677) + (xy 155.389895 89.83925) + (xy 155.384387 89.843631) + (xy 155.378042 89.846678) + (xy 155.373646 89.852175) + (xy 155.359582 89.869761) + (xy 155.354965 89.87492) + (xy 155.349716 89.880169) + (xy 155.345942 89.886174) + (xy 155.341838 89.891948) + (xy 155.340608 89.893486) + (xy 155.29871 89.916567) + (xy 155.255448 89.905115) + (xy 155.252625 89.902292) + (xy 155.241343 89.896543) + (xy 155.235736 89.893309) + (xy 155.233637 89.891948) + (xy 155.215464 89.880169) + (xy 155.184893 89.860354) + (xy 155.18489 89.860353) + (xy 155.18116 89.857935) + (xy 155.176901 89.856661) + (xy 155.176898 89.85666) + (xy 155.153677 89.849716) + (xy 155.148839 89.848269) + (xy 155.138377 89.844079) + (xy 155.132813 89.841244) + (xy 155.121067 89.839384) + (xy 155.112951 89.837536) + (xy 155.112948 89.837535) + (xy 155.063838 89.822848) + (xy 155.019496 89.822577) + (xy 155.010103 89.821809) + (xy 155.004857 89.820978) + (xy 155.004856 89.820978) + (xy 155 89.820209) + (xy 154.991373 89.821576) + (xy 154.98122 89.822344) + (xy 154.962836 89.822231) + (xy 154.945838 89.822127) + (xy 154.945836 89.822127) + (xy 154.941385 89.8221) + (xy 154.887011 89.837641) + (xy 154.879623 89.839275) + (xy 154.867187 89.841244) + (xy 154.862804 89.843477) + (xy 154.86187 89.843781) + (xy 154.852155 89.847603) + (xy 154.827929 89.854526) + (xy 154.827927 89.854527) + (xy 154.823644 89.855751) + (xy 154.764119 89.893309) + (xy 154.762819 89.894129) + (xy 154.757842 89.896959) + (xy 154.751757 89.900059) + (xy 154.751756 89.90006) + (xy 154.747375 89.902292) + (xy 154.743897 89.90577) + (xy 154.742445 89.906825) + (xy 154.739058 89.90912) + (xy 154.72008 89.921095) + (xy 154.717137 89.924427) + (xy 154.717135 89.924429) + (xy 154.657156 89.992342) + (xy 154.656032 89.993538) + (xy 154.655775 89.993892) + (xy 154.655554 89.994113) + (xy 154.655405 89.994204) + (xy 154.654504 89.995163) + (xy 154.652292 89.997375) + (xy 154.651509 89.996592) + (xy 154.650362 89.997296) + (xy 154.651721 89.998496) + (xy 154.642377 90.009076) + (xy 154.639018 90.012879) + (xy 154.637127 90.016907) + (xy 154.588868 90.119695) + (xy 154.588867 90.119698) + (xy 154.586976 90.123726) + (xy 154.568136 90.244724) + (xy 154.568713 90.249137) + (xy 154.568713 90.249138) + (xy 154.58223 90.3525) + (xy 154.584014 90.366145) + (xy 154.585809 90.370224) + (xy 154.589286 90.378126) + (xy 154.591185 90.382443) + (xy 154.591244 90.382813) + (xy 154.592007 90.384311) + (xy 154.594031 90.38891) + (xy 154.594031 90.388911) + (xy 154.630812 90.4725) + (xy 154.633333 90.47823) + (xy 154.647198 90.494724) + (xy 154.648029 90.495713) + (xy 154.650157 90.498434) + (xy 154.652292 90.502625) + (xy 154.660081 90.510414) + (xy 154.663729 90.514391) + (xy 154.712127 90.571968) + (xy 154.735399 90.587459) + (xy 154.741836 90.592733) + (xy 154.743899 90.594232) + (xy 154.747375 90.597708) + (xy 154.751753 90.599939) + (xy 154.751756 90.599941) + (xy 154.75873 90.603494) + (xy 154.764983 90.607152) + (xy 154.769795 90.610355) + (xy 154.781134 90.617903) + (xy 154.807778 90.657631) + (xy 154.809 90.669929) + (xy 154.809 93.471482) + (xy 154.790694 93.515676) + (xy 154.7465 93.533982) + (xy 154.711777 93.523449) + (xy 154.658933 93.488141) + (xy 154.647779 93.48352) + (xy 154.597904 93.473599) + (xy 154.591823 93.473) + (xy 154.575931 93.473) + (xy 154.567141 93.476641) + (xy 154.5635 93.485431) + (xy 154.5635 95.189568) + (xy 154.567141 95.198358) + (xy 154.575931 95.201999) + (xy 154.591821 95.201999) + (xy 154.597906 95.2014) + (xy 154.647776 95.19148) + (xy 154.658934 95.186858) + (xy 154.714827 95.149513) + (xy 154.761744 95.140181) + (xy 154.784272 95.149513) + (xy 154.845988 95.190751) + (xy 154.852024 95.191952) + (xy 154.852025 95.191952) + (xy 154.902043 95.201901) + (xy 154.902046 95.201901) + (xy 154.905056 95.2025) + (xy 155.094944 95.2025) + (xy 155.097954 95.201901) + (xy 155.097957 95.201901) + (xy 155.147975 95.191952) + (xy 155.147976 95.191952) + (xy 155.154012 95.190751) + (xy 155.215278 95.149814) + (xy 155.262193 95.140482) + (xy 155.284721 95.149813) + (xy 155.345988 95.190751) + (xy 155.352024 95.191952) + (xy 155.352025 95.191952) + (xy 155.402043 95.201901) + (xy 155.402046 95.201901) + (xy 155.405056 95.2025) + (xy 155.594944 95.2025) + (xy 155.597954 95.201901) + (xy 155.597957 95.201901) + (xy 155.647975 95.191952) + (xy 155.647976 95.191952) + (xy 155.654012 95.190751) + (xy 155.715278 95.149814) + (xy 155.762193 95.140482) + (xy 155.784721 95.149813) + (xy 155.845988 95.190751) + (xy 155.852024 95.191952) + (xy 155.852025 95.191952) + (xy 155.902043 95.201901) + (xy 155.902046 95.201901) + (xy 155.905056 95.2025) + (xy 156.094944 95.2025) + (xy 156.097954 95.201901) + (xy 156.097957 95.201901) + (xy 156.147975 95.191952) + (xy 156.147976 95.191952) + (xy 156.154012 95.190751) + (xy 156.215278 95.149814) + (xy 156.262193 95.140482) + (xy 156.284721 95.149813) + (xy 156.345988 95.190751) + (xy 156.352024 95.191952) + (xy 156.352025 95.191952) + (xy 156.402043 95.201901) + (xy 156.402046 95.201901) + (xy 156.405056 95.2025) + (xy 156.594944 95.2025) + (xy 156.597954 95.201901) + (xy 156.597957 95.201901) + (xy 156.647975 95.191952) + (xy 156.647976 95.191952) + (xy 156.654012 95.190751) + (xy 156.715278 95.149814) + (xy 156.762193 95.140482) + (xy 156.784721 95.149813) + (xy 156.845988 95.190751) + (xy 156.852024 95.191952) + (xy 156.852025 95.191952) + (xy 156.902043 95.201901) + (xy 156.902046 95.201901) + (xy 156.905056 95.2025) + (xy 157.094944 95.2025) + (xy 157.097954 95.201901) + (xy 157.097957 95.201901) + (xy 157.147975 95.191952) + (xy 157.147976 95.191952) + (xy 157.154012 95.190751) + (xy 157.215278 95.149814) + (xy 157.262193 95.140482) + (xy 157.284721 95.149813) + (xy 157.345988 95.190751) + (xy 157.352024 95.191952) + (xy 157.352025 95.191952) + (xy 157.402043 95.201901) + (xy 157.402046 95.201901) + (xy 157.405056 95.2025) + (xy 157.594944 95.2025) + (xy 157.597954 95.201901) + (xy 157.597957 95.201901) + (xy 157.647975 95.191952) + (xy 157.647976 95.191952) + (xy 157.654012 95.190751) + (xy 157.715278 95.149814) + (xy 157.762193 95.140482) + (xy 157.784721 95.149813) + (xy 157.845988 95.190751) + (xy 157.852024 95.191952) + (xy 157.852025 95.191952) + (xy 157.902043 95.201901) + (xy 157.902046 95.201901) + (xy 157.905056 95.2025) + (xy 158.094944 95.2025) + (xy 158.097954 95.201901) + (xy 158.097957 95.201901) + (xy 158.147975 95.191952) + (xy 158.147976 95.191952) + (xy 158.154012 95.190751) + (xy 158.215278 95.149814) + (xy 158.262193 95.140482) + (xy 158.284721 95.149813) + (xy 158.345988 95.190751) + (xy 158.352024 95.191952) + (xy 158.352025 95.191952) + (xy 158.402043 95.201901) + (xy 158.402046 95.201901) + (xy 158.405056 95.2025) + (xy 158.594944 95.2025) + (xy 158.597954 95.201901) + (xy 158.597957 95.201901) + (xy 158.647975 95.191952) + (xy 158.647976 95.191952) + (xy 158.654012 95.190751) + (xy 158.715278 95.149814) + (xy 158.762193 95.140482) + (xy 158.784721 95.149813) + (xy 158.845988 95.190751) + (xy 158.852024 95.191952) + (xy 158.852025 95.191952) + (xy 158.902043 95.201901) + (xy 158.902046 95.201901) + (xy 158.905056 95.2025) + (xy 159.094944 95.2025) + (xy 159.097954 95.201901) + (xy 159.097957 95.201901) + (xy 159.147975 95.191952) + (xy 159.147976 95.191952) + (xy 159.154012 95.190751) + (xy 159.215726 95.149514) + (xy 159.262642 95.140181) + (xy 159.285173 95.149513) + (xy 159.341067 95.186859) + (xy 159.352221 95.19148) + (xy 159.402096 95.201401) + (xy 159.408177 95.202) + (xy 159.424069 95.202) + (xy 159.432859 95.198359) + (xy 159.4365 95.189569) + (xy 159.4365 93.485432) + (xy 159.432859 93.476642) + (xy 159.424069 93.473001) + (xy 159.408179 93.473001) + (xy 159.402094 93.4736) + (xy 159.352224 93.48352) + (xy 159.341066 93.488142) + (xy 159.288223 93.523449) + (xy 159.241306 93.532781) + (xy 159.201533 93.506205) + (xy 159.191 93.471482) + (xy 159.191 80.991521) + (xy 159.209306 80.947327) + (xy 159.250102 80.930428) + (xy 159.250001 80.929791) + (xy 159.256947 80.92869) + (xy 159.267853 80.927933) + (xy 159.303383 80.928584) + (xy 159.363532 80.912185) + (xy 159.37019 80.910755) + (xy 159.3717 80.910516) + (xy 159.382813 80.908756) + (xy 159.387196 80.906522) + (xy 159.391875 80.905002) + (xy 159.391878 80.90501) + (xy 159.396727 80.903136) + (xy 159.421527 80.896375) + (xy 159.433837 80.888817) + (xy 159.489709 80.854511) + (xy 159.494037 80.852085) + (xy 159.49824 80.849944) + (xy 159.498248 80.849938) + (xy 159.502625 80.847708) + (xy 159.505427 80.844906) + (xy 159.506264 80.844346) + (xy 159.508891 80.842733) + (xy 159.525881 80.832301) + (xy 159.608058 80.741513) + (xy 159.661451 80.631311) + (xy 159.663317 80.620224) + (xy 159.675012 80.550704) + (xy 159.681767 80.510552) + (xy 159.681896 80.5) + (xy 159.666061 80.389432) + (xy 159.677917 80.343091) + (xy 159.683736 80.336379) + (xy 160.060808 79.959306) + (xy 160.105002 79.941) + (xy 172.927934 79.941) + (xy 172.972128 79.959306) + (xy 178.842309 85.829487) + (xy 178.846614 85.835561) + (xy 178.847187 85.835105) + (xy 178.851568 85.840613) + (xy 178.854615 85.846958) + (xy 178.860112 85.851354) + (xy 178.877698 85.865418) + (xy 178.882857 85.870035) + (xy 178.888106 85.875284) + (xy 178.894109 85.879057) + (xy 178.899885 85.883162) + (xy 178.92267 85.901383) + (xy 178.92953 85.90296) + (xy 178.93329 85.904778) + (xy 178.937226 85.906156) + (xy 178.943185 85.909902) + (xy 178.950179 85.910693) + (xy 178.95018 85.910693) + (xy 178.972173 85.913179) + (xy 178.97915 85.914371) + (xy 178.986234 85.916) + (xy 178.986236 85.916) + (xy 178.986227 85.91604) + (xy 179.02707 85.938657) + (xy 179.030137 85.942855) + (xy 179.060982 85.989018) + (xy 179.066099 85.992437) + (xy 179.131115 86.03588) + (xy 179.131117 86.035881) + (xy 179.136234 86.0393) + (xy 179.166808 86.045382) + (xy 179.199581 86.051901) + (xy 179.199584 86.051901) + (xy 179.202594 86.0525) + (xy 180.522406 86.0525) + (xy 180.525416 86.051901) + (xy 180.525419 86.051901) + (xy 180.558192 86.045382) + (xy 180.588766 86.0393) + (xy 180.593883 86.035881) + (xy 180.593885 86.03588) + (xy 180.658901 85.992437) + (xy 180.664018 85.989018) + (xy 180.688436 85.952474) + (xy 180.71088 85.918885) + (xy 180.710881 85.918883) + (xy 180.7143 85.913766) + (xy 180.721955 85.875284) + (xy 180.726901 85.850419) + (xy 180.726901 85.850416) + (xy 180.7275 85.847406) + (xy 180.7275 85.602594) + (xy 180.726129 85.595698) + (xy 180.720382 85.566808) + (xy 180.7143 85.536234) + (xy 180.707459 85.525995) + (xy 180.667437 85.466099) + (xy 180.664018 85.460982) + (xy 180.650526 85.451967) + (xy 180.62395 85.412193) + (xy 180.633282 85.365277) + (xy 180.650526 85.348033) + (xy 180.650995 85.34772) + (xy 180.664018 85.339018) + (xy 180.675322 85.3221) + (xy 180.71088 85.268885) + (xy 180.710881 85.268883) + (xy 180.7143 85.263766) + (xy 180.721369 85.22823) + (xy 180.726901 85.200419) + (xy 180.726901 85.200416) + (xy 180.7275 85.197406) + (xy 180.7275 84.952594) + (xy 180.723963 84.93481) + (xy 180.718902 84.909372) + (xy 180.7143 84.886234) + (xy 180.708883 84.878126) + (xy 180.667437 84.816099) + (xy 180.664018 84.810982) + (xy 180.650526 84.801967) + (xy 180.62395 84.762193) + (xy 180.633282 84.715277) + (xy 180.650526 84.698033) + (xy 180.650974 84.697734) + (xy 180.664018 84.689018) + (xy 180.681706 84.662546) + (xy 180.71051 84.619438) + (xy 189.223 84.619438) + (xy 189.223599 84.625519) + (xy 189.229169 84.653518) + (xy 189.233788 84.66467) + (xy 189.255019 84.696445) + (xy 189.263555 84.704981) + (xy 189.29533 84.726212) + (xy 189.306482 84.730831) + (xy 189.334481 84.736401) + (xy 189.340562 84.737) + (xy 189.774069 84.737) + (xy 189.782859 84.733359) + (xy 189.7865 84.724569) + (xy 189.9135 84.724569) + (xy 189.917141 84.733359) + (xy 189.925931 84.737) + (xy 190.359438 84.737) + (xy 190.365519 84.736401) + (xy 190.393518 84.730831) + (xy 190.40467 84.726212) + (xy 190.436445 84.704981) + (xy 190.444981 84.696445) + (xy 190.466212 84.66467) + (xy 190.470831 84.653518) + (xy 190.476401 84.625519) + (xy 190.477 84.619438) + (xy 190.477 84.085931) + (xy 190.473359 84.077141) + (xy 190.464569 84.0735) + (xy 189.925931 84.0735) + (xy 189.917141 84.077141) + (xy 189.9135 84.085931) + (xy 189.9135 84.724569) + (xy 189.7865 84.724569) + (xy 189.7865 84.085931) + (xy 189.782859 84.077141) + (xy 189.774069 84.0735) + (xy 189.235431 84.0735) + (xy 189.226641 84.077141) + (xy 189.223 84.085931) + (xy 189.223 84.619438) + (xy 180.71051 84.619438) + (xy 180.71088 84.618885) + (xy 180.710881 84.618883) + (xy 180.7143 84.613766) + (xy 180.722533 84.572375) + (xy 180.726901 84.550419) + (xy 180.726901 84.550416) + (xy 180.7275 84.547406) + (xy 180.7275 84.302594) + (xy 180.726664 84.298388) + (xy 180.718231 84.255995) + (xy 180.7143 84.236234) + (xy 180.710208 84.230109) + (xy 180.667437 84.166099) + (xy 180.664018 84.160982) + (xy 180.650526 84.151967) + (xy 180.62395 84.112193) + (xy 180.633282 84.065277) + (xy 180.650526 84.048033) + (xy 180.658901 84.042437) + (xy 180.664018 84.039018) + (xy 180.694247 83.993777) + (xy 180.734021 83.967201) + (xy 180.746214 83.966) + (xy 181.304169 83.966) + (xy 181.348363 83.984306) + (xy 181.361376 84.003329) + (xy 181.369314 84.021369) + (xy 181.383333 84.05323) + (xy 181.386197 84.056637) + (xy 181.3862 84.056642) + (xy 181.398024 84.070708) + (xy 181.400156 84.073434) + (xy 181.402292 84.077625) + (xy 181.410081 84.085414) + (xy 181.413729 84.089391) + (xy 181.416613 84.092822) + (xy 181.458898 84.143126) + (xy 181.462127 84.146968) + (xy 181.485399 84.162459) + (xy 181.491836 84.167733) + (xy 181.493899 84.169232) + (xy 181.497375 84.172708) + (xy 181.501753 84.174939) + (xy 181.501756 84.174941) + (xy 181.50873 84.178494) + (xy 181.514977 84.182148) + (xy 181.564064 84.214823) + (xy 181.568313 84.216151) + (xy 181.568314 84.216151) + (xy 181.600296 84.226143) + (xy 181.610027 84.230109) + (xy 181.612799 84.231521) + (xy 181.612803 84.231522) + (xy 181.617187 84.233756) + (xy 181.627852 84.235445) + (xy 181.636713 84.23752) + (xy 181.676696 84.250012) + (xy 181.676699 84.250012) + (xy 181.680948 84.25134) + (xy 181.730069 84.252241) + (xy 181.738683 84.252999) + (xy 181.74514 84.254022) + (xy 181.745144 84.254022) + (xy 181.75 84.254791) + (xy 181.756947 84.25369) + (xy 181.767853 84.252933) + (xy 181.803383 84.253584) + (xy 181.863532 84.237185) + (xy 181.87019 84.235755) + (xy 181.876782 84.234711) + (xy 181.882813 84.233756) + (xy 181.887196 84.231522) + (xy 181.891875 84.230002) + (xy 181.891878 84.23001) + (xy 181.896727 84.228136) + (xy 181.921527 84.221375) + (xy 181.93078 84.215694) + (xy 181.989709 84.179511) + (xy 181.994037 84.177085) + (xy 181.99824 84.174944) + (xy 181.998248 84.174938) + (xy 182.002625 84.172708) + (xy 182.005427 84.169906) + (xy 182.006264 84.169346) + (xy 182.025881 84.157301) + (xy 182.108058 84.066513) + (xy 182.161451 83.956311) + (xy 182.162281 83.951383) + (xy 182.165194 83.934069) + (xy 189.223 83.934069) + (xy 189.226641 83.942859) + (xy 189.235431 83.9465) + (xy 189.774069 83.9465) + (xy 189.782859 83.942859) + (xy 189.7865 83.934069) + (xy 189.9135 83.934069) + (xy 189.917141 83.942859) + (xy 189.925931 83.9465) + (xy 190.464569 83.9465) + (xy 190.473359 83.942859) + (xy 190.477 83.934069) + (xy 190.477 83.400562) + (xy 190.476401 83.394481) + (xy 190.470831 83.366482) + (xy 190.466212 83.35533) + (xy 190.444981 83.323555) + (xy 190.436445 83.315019) + (xy 190.40467 83.293788) + (xy 190.393518 83.289169) + (xy 190.365519 83.283599) + (xy 190.359438 83.283) + (xy 189.925931 83.283) + (xy 189.917141 83.286641) + (xy 189.9135 83.295431) + (xy 189.9135 83.934069) + (xy 189.7865 83.934069) + (xy 189.7865 83.295431) + (xy 189.782859 83.286641) + (xy 189.774069 83.283) + (xy 189.340562 83.283) + (xy 189.334481 83.283599) + (xy 189.306482 83.289169) + (xy 189.29533 83.293788) + (xy 189.263555 83.315019) + (xy 189.255019 83.323555) + (xy 189.233788 83.35533) + (xy 189.229169 83.366482) + (xy 189.223599 83.394481) + (xy 189.223 83.400562) + (xy 189.223 83.934069) + (xy 182.165194 83.934069) + (xy 182.178001 83.857935) + (xy 182.181767 83.835552) + (xy 182.181896 83.825) + (xy 182.164536 83.703781) + (xy 182.113852 83.592307) + (xy 182.099199 83.575302) + (xy 182.097708 83.572375) + (xy 182.0919 83.566567) + (xy 182.088746 83.56317) + (xy 182.036826 83.502914) + (xy 182.033918 83.499539) + (xy 182.013741 83.486461) + (xy 182.010155 83.483559) + (xy 182.010081 83.483661) + (xy 182.006106 83.480773) + (xy 182.002625 83.477292) + (xy 181.991343 83.471543) + (xy 181.985736 83.468309) + (xy 181.983228 83.466683) + (xy 181.954556 83.448099) + (xy 181.934893 83.435354) + (xy 181.93489 83.435353) + (xy 181.93116 83.432935) + (xy 181.926901 83.431661) + (xy 181.926898 83.43166) + (xy 181.903085 83.424539) + (xy 181.898839 83.423269) + (xy 181.888377 83.419079) + (xy 181.882813 83.416244) + (xy 181.871067 83.414384) + (xy 181.862951 83.412536) + (xy 181.813838 83.397848) + (xy 181.769496 83.397577) + (xy 181.760103 83.396809) + (xy 181.754857 83.395978) + (xy 181.754856 83.395978) + (xy 181.75 83.395209) + (xy 181.741373 83.396576) + (xy 181.73122 83.397344) + (xy 181.712836 83.397231) + (xy 181.695838 83.397127) + (xy 181.695836 83.397127) + (xy 181.691385 83.3971) + (xy 181.637011 83.412641) + (xy 181.629623 83.414275) + (xy 181.617187 83.416244) + (xy 181.612804 83.418477) + (xy 181.61187 83.418781) + (xy 181.602155 83.422603) + (xy 181.577929 83.429526) + (xy 181.577927 83.429527) + (xy 181.573644 83.430751) + (xy 181.514119 83.468309) + (xy 181.512819 83.469129) + (xy 181.507842 83.471959) + (xy 181.501757 83.475059) + (xy 181.501756 83.47506) + (xy 181.497375 83.477292) + (xy 181.493897 83.48077) + (xy 181.492445 83.481825) + (xy 181.489058 83.48412) + (xy 181.47008 83.496095) + (xy 181.467137 83.499427) + (xy 181.467135 83.499429) + (xy 181.440138 83.529997) + (xy 181.414524 83.559) + (xy 181.411103 83.562873) + (xy 181.364257 83.584) + (xy 180.746214 83.584) + (xy 180.70202 83.565694) + (xy 180.694247 83.556223) + (xy 180.667437 83.516099) + (xy 180.664018 83.510982) + (xy 180.624719 83.484723) + (xy 180.593885 83.46412) + (xy 180.593883 83.464119) + (xy 180.588766 83.4607) + (xy 180.558192 83.454618) + (xy 180.525419 83.448099) + (xy 180.525416 83.448099) + (xy 180.522406 83.4475) + (xy 179.202594 83.4475) + (xy 179.199584 83.448099) + (xy 179.199581 83.448099) + (xy 179.166808 83.454618) + (xy 179.136234 83.4607) + (xy 179.131117 83.464119) + (xy 179.131115 83.46412) + (xy 179.100281 83.484723) + (xy 179.060982 83.510982) + (xy 179.057563 83.516099) + (xy 179.017819 83.57558) + (xy 179.0107 83.586234) + (xy 179.007069 83.604487) + (xy 178.998286 83.648645) + (xy 178.9975 83.652594) + (xy 178.9975 83.897406) + (xy 178.998099 83.900416) + (xy 178.998099 83.900419) + (xy 179.003417 83.927151) + (xy 179.0107 83.963766) + (xy 179.014119 83.968883) + (xy 179.01412 83.968885) + (xy 179.041287 84.009543) + (xy 179.060982 84.039018) + (xy 179.066099 84.042437) + (xy 179.074474 84.048033) + (xy 179.10105 84.087807) + (xy 179.091718 84.134723) + (xy 179.074474 84.151967) + (xy 179.060982 84.160982) + (xy 179.05072 84.17634) + (xy 179.030753 84.206223) + (xy 178.990979 84.232799) + (xy 178.978786 84.234) + (xy 178.530003 84.234) + (xy 178.485809 84.215694) + (xy 173.408588 79.138473) + (xy 173.404283 79.132399) + (xy 173.40371 79.132855) + (xy 173.399329 79.127347) + (xy 173.396282 79.121002) + (xy 173.373199 79.102542) + (xy 173.36804 79.097925) + (xy 173.362791 79.092676) + (xy 173.356788 79.088903) + (xy 173.351012 79.084798) + (xy 173.328227 79.066577) + (xy 173.321367 79.065) + (xy 173.317607 79.063182) + (xy 173.313671 79.061804) + (xy 173.307712 79.058058) + (xy 173.300718 79.057267) + (xy 173.300717 79.057267) + (xy 173.278724 79.054781) + (xy 173.271747 79.053589) + (xy 173.264663 79.05196) + (xy 173.257289 79.05196) + (xy 173.250268 79.051564) + (xy 173.221122 79.048269) + (xy 173.214477 79.05059) + (xy 173.207483 79.051374) + (xy 173.207407 79.050696) + (xy 173.199955 79.05196) + (xy 159.44174 79.05196) + (xy 159.434401 79.05071) + (xy 159.434318 79.051437) + (xy 159.427327 79.05064) + (xy 159.420686 79.048308) + (xy 159.413693 79.049086) + (xy 159.413692 79.049086) + (xy 159.391308 79.051577) + (xy 159.384396 79.05196) + (xy 159.376975 79.05196) + (xy 159.373552 79.052741) + (xy 159.373551 79.052741) + (xy 159.37006 79.053537) + (xy 159.363077 79.054718) + (xy 159.34107 79.057167) + (xy 159.334079 79.057945) + (xy 159.328116 79.061678) + (xy 159.324183 79.063048) + (xy 159.320413 79.064862) + (xy 159.313549 79.066428) + (xy 159.295756 79.080607) + (xy 159.290737 79.084606) + (xy 159.284954 79.0887) + (xy 159.281798 79.090676) + (xy 159.281792 79.090681) + (xy 159.278797 79.092556) + (xy 159.273584 79.097769) + (xy 159.26834 79.102454) + (xy 159.245399 79.120735) + (xy 159.242341 79.127074) + (xy 159.23795 79.132575) + (xy 159.237416 79.132149) + (xy 159.23304 79.138313) + (xy 157.895513 80.47584) + (xy 157.889439 80.480145) + (xy 157.889895 80.480718) + (xy 157.884387 80.485099) + (xy 157.878042 80.488146) + (xy 157.873646 80.493643) + (xy 157.859582 80.511229) + (xy 157.854965 80.516388) + (xy 157.849716 80.521637) + (xy 157.847847 80.524611) + (xy 157.845943 80.52764) + (xy 157.841838 80.533416) + (xy 157.823617 80.556201) + (xy 157.82204 80.563061) + (xy 157.820222 80.566821) + (xy 157.818844 80.570757) + (xy 157.815098 80.576716) + (xy 157.814307 80.58371) + (xy 157.814307 80.583711) + (xy 157.811821 80.605704) + (xy 157.810629 80.612681) + (xy 157.809 80.619765) + (xy 157.809 80.627139) + (xy 157.808604 80.63416) + (xy 157.805309 80.663306) + (xy 157.80763 80.669951) + (xy 157.808414 80.676945) + (xy 157.807736 80.677021) + (xy 157.809 80.684473) + (xy 157.809 82.2215) + (xy 157.790694 82.265694) + (xy 157.7465 82.284) + (xy 156.021214 82.284) + (xy 155.97702 82.265694) + (xy 155.969247 82.256223) + (xy 155.946046 82.2215) + (xy 155.939018 82.210982) + (xy 155.925526 82.201967) + (xy 155.89895 82.162193) + (xy 155.908282 82.115277) + (xy 155.925526 82.098033) + (xy 155.933901 82.092437) + (xy 155.939018 82.089018) + (xy 155.969247 82.043777) + (xy 156.009021 82.017201) + (xy 156.021214 82.016) + (xy 156.456768 82.016) + (xy 156.464107 82.01725) + (xy 156.46419 82.016523) + (xy 156.471181 82.01732) + (xy 156.477822 82.019652) + (xy 156.484815 82.018874) + (xy 156.484816 82.018874) + (xy 156.507197 82.016383) + (xy 156.51411 82.016) + (xy 156.521533 82.016) + (xy 156.528465 82.014419) + (xy 156.535418 82.013243) + (xy 156.564429 82.010014) + (xy 156.570393 82.006281) + (xy 156.574341 82.004906) + (xy 156.5781 82.003097) + (xy 156.584959 82.001532) + (xy 156.60012 81.989451) + (xy 156.607773 81.983352) + (xy 156.613559 81.979256) + (xy 156.616715 81.97728) + (xy 156.616717 81.977279) + (xy 156.619711 81.975404) + (xy 156.624924 81.970191) + (xy 156.630168 81.965506) + (xy 156.647604 81.951612) + (xy 156.647604 81.951611) + (xy 156.653109 81.947225) + (xy 156.656167 81.940886) + (xy 156.660558 81.935385) + (xy 156.661092 81.935811) + (xy 156.665468 81.929647) + (xy 157.104487 81.490628) + (xy 157.110561 81.486323) + (xy 157.110105 81.48575) + (xy 157.115613 81.481369) + (xy 157.121958 81.478322) + (xy 157.140418 81.455239) + (xy 157.145035 81.45008) + (xy 157.150284 81.444831) + (xy 157.154057 81.438828) + (xy 157.158165 81.433047) + (xy 157.171987 81.415764) + (xy 157.176383 81.410267) + (xy 157.17796 81.403407) + (xy 157.179778 81.399647) + (xy 157.181156 81.395711) + (xy 157.184902 81.389752) + (xy 157.188179 81.360763) + (xy 157.189371 81.353787) + (xy 157.191 81.346703) + (xy 157.191 81.339329) + (xy 157.191396 81.332308) + (xy 157.1939 81.310155) + (xy 157.194691 81.303162) + (xy 157.19237 81.296517) + (xy 157.191586 81.289523) + (xy 157.192264 81.289447) + (xy 157.191 81.281995) + (xy 157.191 80.919384) + (xy 157.209306 80.87519) + (xy 157.220797 80.866123) + (xy 157.239712 80.854509) + (xy 157.244034 80.852085) + (xy 157.252625 80.847708) + (xy 157.255427 80.844906) + (xy 157.256264 80.844346) + (xy 157.258891 80.842733) + (xy 157.275881 80.832301) + (xy 157.358058 80.741513) + (xy 157.411451 80.631311) + (xy 157.413317 80.620224) + (xy 157.425012 80.550704) + (xy 157.431767 80.510552) + (xy 157.431896 80.5) + (xy 157.414536 80.378781) + (xy 157.363852 80.267307) + (xy 157.349199 80.250302) + (xy 157.347708 80.247375) + (xy 157.3419 80.241567) + (xy 157.338746 80.23817) + (xy 157.31046 80.205343) + (xy 157.283918 80.174539) + (xy 157.263741 80.161461) + (xy 157.260155 80.158559) + (xy 157.260081 80.158661) + (xy 157.256106 80.155773) + (xy 157.252625 80.152292) + (xy 157.241343 80.146543) + (xy 157.235736 80.143309) + (xy 157.184893 80.110354) + (xy 157.18489 80.110353) + (xy 157.18116 80.107935) + (xy 157.176901 80.106661) + (xy 157.176898 80.10666) + (xy 157.158345 80.101112) + (xy 157.148839 80.098269) + (xy 157.138377 80.094079) + (xy 157.132813 80.091244) + (xy 157.121067 80.089384) + (xy 157.112951 80.087536) + (xy 157.099847 80.083617) + (xy 157.063838 80.072848) + (xy 157.019496 80.072577) + (xy 157.010103 80.071809) + (xy 157.004857 80.070978) + (xy 157.004856 80.070978) + (xy 157 80.070209) + (xy 156.991373 80.071576) + (xy 156.98122 80.072344) + (xy 156.962836 80.072231) + (xy 156.945838 80.072127) + (xy 156.945836 80.072127) + (xy 156.941385 80.0721) + (xy 156.887011 80.087641) + (xy 156.879623 80.089275) + (xy 156.867187 80.091244) + (xy 156.862804 80.093477) + (xy 156.86187 80.093781) + (xy 156.852155 80.097603) + (xy 156.827929 80.104526) + (xy 156.827927 80.104527) + (xy 156.823644 80.105751) + (xy 156.764119 80.143309) + (xy 156.762819 80.144129) + (xy 156.757842 80.146959) + (xy 156.751757 80.150059) + (xy 156.751756 80.15006) + (xy 156.747375 80.152292) + (xy 156.743897 80.15577) + (xy 156.742445 80.156825) + (xy 156.739058 80.15912) + (xy 156.72008 80.171095) + (xy 156.717137 80.174427) + (xy 156.717135 80.174429) + (xy 156.657156 80.242342) + (xy 156.656032 80.243538) + (xy 156.655775 80.243892) + (xy 156.655554 80.244113) + (xy 156.655405 80.244204) + (xy 156.654504 80.245163) + (xy 156.652292 80.247375) + (xy 156.651509 80.246592) + (xy 156.650362 80.247296) + (xy 156.651721 80.248496) + (xy 156.639018 80.262879) + (xy 156.637127 80.266907) + (xy 156.588868 80.369695) + (xy 156.588867 80.369698) + (xy 156.586976 80.373726) + (xy 156.568136 80.494724) + (xy 156.568713 80.499137) + (xy 156.568713 80.499138) + (xy 156.582649 80.605704) + (xy 156.584014 80.616145) + (xy 156.591185 80.632443) + (xy 156.591244 80.632813) + (xy 156.592007 80.634311) + (xy 156.594031 80.63891) + (xy 156.594031 80.638911) + (xy 156.63126 80.723518) + (xy 156.633333 80.72823) + (xy 156.647272 80.744813) + (xy 156.648029 80.745713) + (xy 156.650157 80.748434) + (xy 156.652292 80.752625) + (xy 156.660081 80.760414) + (xy 156.66373 80.764392) + (xy 156.70807 80.817141) + (xy 156.712127 80.821968) + (xy 156.735399 80.837459) + (xy 156.741836 80.842733) + (xy 156.743899 80.844232) + (xy 156.747375 80.847708) + (xy 156.751753 80.849939) + (xy 156.751756 80.849941) + (xy 156.75873 80.853494) + (xy 156.764983 80.857152) + (xy 156.77846 80.866123) + (xy 156.781134 80.867903) + (xy 156.807778 80.907631) + (xy 156.809 80.919929) + (xy 156.809 81.219997) + (xy 156.790694 81.264191) + (xy 156.439191 81.615694) + (xy 156.394997 81.634) + (xy 156.021214 81.634) + (xy 155.97702 81.615694) + (xy 155.969247 81.606223) + (xy 155.942437 81.566099) + (xy 155.939018 81.560982) + (xy 155.87937 81.521126) + (xy 155.868885 81.51412) + (xy 155.868883 81.514119) + (xy 155.863766 81.5107) + (xy 155.833192 81.504618) + (xy 155.800419 81.498099) + (xy 155.800416 81.498099) + (xy 155.797406 81.4975) + (xy 154.477594 81.4975) + (xy 154.474584 81.498099) + (xy 154.474581 81.498099) + (xy 154.441808 81.504618) + (xy 154.411234 81.5107) + (xy 154.406117 81.514119) + (xy 154.406115 81.51412) + (xy 154.39563 81.521126) + (xy 154.335982 81.560982) + (xy 154.332563 81.566099) + (xy 154.289142 81.631083) + (xy 154.2857 81.636234) + (xy 154.283276 81.648421) + (xy 154.273436 81.69789) + (xy 154.2725 81.702594) + (xy 154.2725 81.947406) + (xy 154.273099 81.950416) + (xy 154.273099 81.950419) + (xy 154.276961 81.969832) + (xy 154.2857 82.013766) + (xy 154.289119 82.018883) + (xy 154.28912 82.018885) + (xy 154.305753 82.043777) + (xy 154.335982 82.089018) + (xy 154.341099 82.092437) + (xy 154.349474 82.098033) + (xy 154.37605 82.137807) + (xy 154.366718 82.184723) + (xy 154.349474 82.201967) + (xy 154.335982 82.210982) + (xy 154.2857 82.286234) + (xy 154.280908 82.310324) + (xy 154.273493 82.347603) + (xy 154.2725 82.352594) + (xy 154.2725 82.597406) + (xy 154.273099 82.600416) + (xy 154.273099 82.600419) + (xy 154.277735 82.623726) + (xy 154.2857 82.663766) + (xy 154.289119 82.668883) + (xy 154.28912 82.668885) + (xy 154.305753 82.693777) + (xy 154.335982 82.739018) + (xy 154.341099 82.742437) + (xy 154.349474 82.748033) + (xy 154.37605 82.787807) + (xy 154.366718 82.834723) + (xy 154.349474 82.851967) + (xy 154.335982 82.860982) + (xy 154.332563 82.866099) + (xy 154.290596 82.928907) + (xy 154.2857 82.936234) + (xy 154.284064 82.944458) + (xy 154.273177 82.999193) + (xy 154.2725 83.002594) + (xy 154.2725 83.247406) + (xy 154.273099 83.250416) + (xy 154.273099 83.250419) + (xy 154.276602 83.268029) + (xy 154.2857 83.313766) + (xy 154.289119 83.318883) + (xy 154.28912 83.318885) + (xy 154.323071 83.369695) + (xy 154.335982 83.389018) + (xy 154.348792 83.397577) + (xy 154.349474 83.398033) + (xy 154.37605 83.437807) + (xy 154.366718 83.484723) + (xy 154.349474 83.501967) + (xy 154.335982 83.510982) + (xy 154.332563 83.516099) + (xy 154.305753 83.556223) + (xy 154.265979 83.582799) + (xy 154.253786 83.584) + (xy 152.880003 83.584) + (xy 152.835809 83.565694) + (xy 152.459306 83.189191) + (xy 152.441 83.144997) + (xy 152.441 81.419384) + (xy 152.459306 81.37519) + (xy 152.470797 81.366123) + (xy 152.489712 81.354509) + (xy 152.494034 81.352085) + (xy 152.502625 81.347708) + (xy 152.505427 81.344906) + (xy 152.506264 81.344346) + (xy 152.508891 81.342733) + (xy 152.525881 81.332301) + (xy 152.608058 81.241513) + (xy 152.661451 81.131311) + (xy 152.663317 81.120224) + (xy 152.681367 81.012928) + (xy 152.681767 81.010552) + (xy 152.681896 81) + (xy 152.664536 80.878781) + (xy 152.613852 80.767307) + (xy 152.599199 80.750302) + (xy 152.597708 80.747375) + (xy 152.5919 80.741567) + (xy 152.588746 80.73817) + (xy 152.536826 80.677914) + (xy 152.533918 80.674539) + (xy 152.513741 80.661461) + (xy 152.510155 80.658559) + (xy 152.510081 80.658661) + (xy 152.506106 80.655773) + (xy 152.502625 80.652292) + (xy 152.491343 80.646543) + (xy 152.485736 80.643309) + (xy 152.479226 80.639089) + (xy 152.460789 80.627139) + (xy 152.434893 80.610354) + (xy 152.43489 80.610353) + (xy 152.43116 80.607935) + (xy 152.426901 80.606661) + (xy 152.426898 80.60666) + (xy 152.408345 80.601112) + (xy 152.398839 80.598269) + (xy 152.388377 80.594079) + (xy 152.382813 80.591244) + (xy 152.371067 80.589384) + (xy 152.362951 80.587536) + (xy 152.334793 80.579115) + (xy 152.313838 80.572848) + (xy 152.269496 80.572577) + (xy 152.260103 80.571809) + (xy 152.254857 80.570978) + (xy 152.254856 80.570978) + (xy 152.25 80.570209) + (xy 152.241373 80.571576) + (xy 152.23122 80.572344) + (xy 152.212836 80.572231) + (xy 152.195838 80.572127) + (xy 152.195836 80.572127) + (xy 152.191385 80.5721) + (xy 152.137011 80.587641) + (xy 152.129623 80.589275) + (xy 152.117187 80.591244) + (xy 152.112804 80.593477) + (xy 152.11187 80.593781) + (xy 152.102155 80.597603) + (xy 152.077929 80.604526) + (xy 152.077927 80.604527) + (xy 152.073644 80.605751) + (xy 152.069875 80.608129) + (xy 152.057171 80.616145) + (xy 152.014119 80.643309) + (xy 152.012819 80.644129) + (xy 152.007842 80.646959) + (xy 152.001757 80.650059) + (xy 152.001756 80.65006) + (xy 151.997375 80.652292) + (xy 151.993897 80.65577) + (xy 151.992445 80.656825) + (xy 151.989058 80.65912) + (xy 151.97008 80.671095) + (xy 151.967137 80.674427) + (xy 151.967135 80.674429) + (xy 151.907156 80.742342) + (xy 151.906032 80.743538) + (xy 151.905775 80.743892) + (xy 151.905554 80.744113) + (xy 151.905405 80.744204) + (xy 151.904504 80.745163) + (xy 151.902292 80.747375) + (xy 151.901509 80.746592) + (xy 151.900362 80.747296) + (xy 151.901721 80.748496) + (xy 151.895002 80.756104) + (xy 151.889018 80.762879) + (xy 151.887127 80.766907) + (xy 151.838868 80.869695) + (xy 151.838867 80.869698) + (xy 151.836976 80.873726) + (xy 151.818136 80.994724) + (xy 151.818713 80.999137) + (xy 151.818713 80.999138) + (xy 151.827534 81.06659) + (xy 151.834014 81.116145) + (xy 151.841185 81.132443) + (xy 151.841244 81.132813) + (xy 151.842007 81.134311) + (xy 151.844031 81.13891) + (xy 151.844031 81.138911) + (xy 151.878454 81.217141) + (xy 151.883333 81.22823) + (xy 151.896714 81.244149) + (xy 151.898029 81.245713) + (xy 151.900157 81.248434) + (xy 151.902292 81.252625) + (xy 151.910081 81.260414) + (xy 151.913729 81.264391) + (xy 151.962127 81.321968) + (xy 151.985399 81.337459) + (xy 151.991836 81.342733) + (xy 151.993899 81.344232) + (xy 151.997375 81.347708) + (xy 152.001753 81.349939) + (xy 152.001756 81.349941) + (xy 152.00873 81.353494) + (xy 152.014983 81.357152) + (xy 152.027617 81.365562) + (xy 152.031134 81.367903) + (xy 152.057778 81.407631) + (xy 152.059 81.419929) + (xy 152.059 83.206768) + (xy 152.05775 83.214107) + (xy 152.058477 83.21419) + (xy 152.05768 83.221181) + (xy 152.055348 83.227822) + (xy 152.056126 83.234815) + (xy 152.056126 83.234816) + (xy 152.058617 83.257197) + (xy 152.059 83.26411) + (xy 152.059 83.271533) + (xy 152.060581 83.278465) + (xy 152.061757 83.285418) + (xy 152.064986 83.314429) + (xy 152.068719 83.320393) + (xy 152.070094 83.324341) + (xy 152.071903 83.3281) + (xy 152.073468 83.334959) + (xy 152.077853 83.340461) + (xy 152.077853 83.340462) + (xy 152.091648 83.357773) + (xy 152.095744 83.363559) + (xy 152.097363 83.366145) + (xy 152.099596 83.369711) + (xy 152.104809 83.374924) + (xy 152.109494 83.380168) + (xy 152.123367 83.397577) + (xy 152.127775 83.403109) + (xy 152.134114 83.406167) + (xy 152.139615 83.410558) + (xy 152.139189 83.411092) + (xy 152.145353 83.415468) + (xy 152.609372 83.879487) + (xy 152.613677 83.885561) + (xy 152.61425 83.885105) + (xy 152.618631 83.890613) + (xy 152.621678 83.896958) + (xy 152.627175 83.901354) + (xy 152.644761 83.915418) + (xy 152.64992 83.920035) + (xy 152.655169 83.925284) + (xy 152.66059 83.928691) + (xy 152.661172 83.929057) + (xy 152.666948 83.933162) + (xy 152.689733 83.951383) + (xy 152.696593 83.95296) + (xy 152.700353 83.954778) + (xy 152.704289 83.956156) + (xy 152.710248 83.959902) + (xy 152.717242 83.960693) + (xy 152.717243 83.960693) + (xy 152.739236 83.963179) + (xy 152.746213 83.964371) + (xy 152.753297 83.966) + (xy 152.760671 83.966) + (xy 152.767692 83.966396) + (xy 152.796838 83.969691) + (xy 152.803483 83.96737) + (xy 152.810477 83.966586) + (xy 152.810553 83.967264) + (xy 152.818005 83.966) + (xy 154.253786 83.966) + (xy 154.29798 83.984306) + (xy 154.305753 83.993777) + (xy 154.335982 84.039018) + (xy 154.341099 84.042437) + (xy 154.349923 84.048333) + (xy 154.376499 84.088107) + (xy 154.367167 84.135023) + (xy 154.349924 84.152266) + (xy 154.341461 84.157921) + (xy 154.332923 84.166459) + (xy 154.289592 84.23131) + (xy 154.28497 84.242468) + (xy 154.273599 84.299631) + (xy 154.273 84.305715) + (xy 154.273 84.349069) + (xy 154.276641 84.357859) + (xy 154.285431 84.3615) + (xy 155.989569 84.3615) + (xy 155.998359 84.357859) + (xy 156.002 84.349069) + (xy 156.002 84.305715) + (xy 156.001401 84.299631) + (xy 155.99003 84.242468) + (xy 155.985408 84.23131) + (xy 155.942077 84.166459) + (xy 155.933539 84.157921) + (xy 155.925076 84.152266) + (xy 155.898501 84.112492) + (xy 155.907834 84.065576) + (xy 155.925077 84.048333) + (xy 155.933901 84.042437) + (xy 155.939018 84.039018) + (xy 155.969247 83.993777) + (xy 156.009021 83.967201) + (xy 156.021214 83.966) + (xy 157.669997 83.966) + (xy 157.714191 83.984306) + (xy 158.030134 84.300249) + (xy 158.04844 84.344443) + (xy 158.04844 88.797025) + (xy 158.030134 88.841219) + (xy 157.834179 89.037174) + (xy 157.789985 89.05548) + (xy 154.796752 89.05548) + (xy 154.789413 89.05423) + (xy 154.78933 89.054957) + (xy 154.782339 89.05416) + (xy 154.775698 89.051828) + (xy 154.768705 89.052606) + (xy 154.768704 89.052606) + (xy 154.746323 89.055097) + (xy 154.73941 89.05548) + (xy 154.731987 89.05548) + (xy 154.725055 89.057061) + (xy 154.718102 89.058237) + (xy 154.689091 89.061466) + (xy 154.683127 89.065199) + (xy 154.679179 89.066574) + (xy 154.67542 89.068383) + (xy 154.668561 89.069948) + (xy 154.663059 89.074333) + (xy 154.663058 89.074333) + (xy 154.645747 89.088128) + (xy 154.639961 89.092224) + (xy 154.636805 89.0942) + (xy 154.633809 89.096076) + (xy 154.628596 89.101289) + (xy 154.623352 89.105974) + (xy 154.605963 89.119831) + (xy 154.600411 89.124255) + (xy 154.597353 89.130594) + (xy 154.592962 89.136095) + (xy 154.592428 89.135669) + (xy 154.588052 89.141833) + (xy 153.895513 89.834372) + (xy 153.889439 89.838677) + (xy 153.889895 89.83925) + (xy 153.884387 89.843631) + (xy 153.878042 89.846678) + (xy 153.873646 89.852175) + (xy 153.859582 89.869761) + (xy 153.854965 89.87492) + (xy 153.849716 89.880169) + (xy 153.845942 89.886174) + (xy 153.841839 89.891947) + (xy 153.833566 89.902292) + (xy 153.823617 89.914733) + (xy 153.82204 89.921593) + (xy 153.820222 89.925353) + (xy 153.818844 89.929289) + (xy 153.815098 89.935248) + (xy 153.814307 89.942242) + (xy 153.814307 89.942243) + (xy 153.811821 89.964236) + (xy 153.810629 89.971213) + (xy 153.809 89.978297) + (xy 153.809 89.985671) + (xy 153.808604 89.992692) + (xy 153.805309 90.021838) + (xy 153.80763 90.028483) + (xy 153.808414 90.035477) + (xy 153.807736 90.035553) + (xy 153.809 90.043005) + (xy 153.809 90.575805) + (xy 153.790694 90.619999) + (xy 153.7465 90.638305) + (xy 153.712506 90.628252) + (xy 153.696539 90.617903) + (xy 153.68116 90.607935) + (xy 153.676901 90.606661) + (xy 153.676898 90.60666) + (xy 153.652724 90.599431) + (xy 153.648839 90.598269) + (xy 153.638377 90.594079) + (xy 153.632813 90.591244) + (xy 153.621067 90.589384) + (xy 153.612951 90.587536) + (xy 153.563838 90.572848) + (xy 153.519496 90.572577) + (xy 153.510103 90.571809) + (xy 153.510053 90.571801) + (xy 153.508469 90.57155) + (xy 153.504857 90.570978) + (xy 153.504856 90.570978) + (xy 153.5 90.570209) + (xy 153.491373 90.571576) + (xy 153.48122 90.572344) + (xy 153.462836 90.572231) + (xy 153.445838 90.572127) + (xy 153.445836 90.572127) + (xy 153.441385 90.5721) + (xy 153.437104 90.573324) + (xy 153.437101 90.573324) + (xy 153.433686 90.5743) + (xy 153.386163 90.568843) + (xy 153.356418 90.53138) + (xy 153.360266 90.486955) + (xy 153.362843 90.481637) + (xy 153.411451 90.381311) + (xy 153.412983 90.372209) + (xy 153.42758 90.28544) + (xy 153.431767 90.260552) + (xy 153.431896 90.25) + (xy 153.414536 90.128781) + (xy 153.363852 90.017307) + (xy 153.349199 90.000302) + (xy 153.347708 89.997375) + (xy 153.3419 89.991567) + (xy 153.338746 89.98817) + (xy 153.286826 89.927914) + (xy 153.283918 89.924539) + (xy 153.263741 89.911461) + (xy 153.260155 89.908559) + (xy 153.260081 89.908661) + (xy 153.256106 89.905773) + (xy 153.252625 89.902292) + (xy 153.241343 89.896543) + (xy 153.235736 89.893309) + (xy 153.233637 89.891948) + (xy 153.215464 89.880169) + (xy 153.184893 89.860354) + (xy 153.18489 89.860353) + (xy 153.18116 89.857935) + (xy 153.176901 89.856661) + (xy 153.176898 89.85666) + (xy 153.153677 89.849716) + (xy 153.148839 89.848269) + (xy 153.138377 89.844079) + (xy 153.132813 89.841244) + (xy 153.121067 89.839384) + (xy 153.112951 89.837536) + (xy 153.112948 89.837535) + (xy 153.063838 89.822848) + (xy 153.019496 89.822577) + (xy 153.010103 89.821809) + (xy 153.004857 89.820978) + (xy 153.004856 89.820978) + (xy 153 89.820209) + (xy 152.991373 89.821576) + (xy 152.98122 89.822344) + (xy 152.962836 89.822231) + (xy 152.945838 89.822127) + (xy 152.945836 89.822127) + (xy 152.941385 89.8221) + (xy 152.887011 89.837641) + (xy 152.879623 89.839275) + (xy 152.867187 89.841244) + (xy 152.862804 89.843477) + (xy 152.86187 89.843781) + (xy 152.852155 89.847603) + (xy 152.827929 89.854526) + (xy 152.827927 89.854527) + (xy 152.823644 89.855751) + (xy 152.787983 89.878252) + (xy 152.786851 89.878966) + (xy 152.739707 89.887067) + (xy 152.700642 89.859459) + (xy 152.691 89.826108) + (xy 152.691 86.793232) + (xy 152.69225 86.785893) + (xy 152.691523 86.78581) + (xy 152.69232 86.778819) + (xy 152.694652 86.772178) + (xy 152.693458 86.761442) + (xy 152.691383 86.742803) + (xy 152.691 86.73589) + (xy 152.691 86.728467) + (xy 152.689419 86.721535) + (xy 152.688243 86.714582) + (xy 152.685014 86.685571) + (xy 152.681281 86.679607) + (xy 152.679906 86.675659) + (xy 152.678097 86.6719) + (xy 152.676532 86.665041) + (xy 152.658351 86.642226) + (xy 152.654256 86.636441) + (xy 152.65228 86.633285) + (xy 152.652279 86.633283) + (xy 152.650404 86.630289) + (xy 152.645191 86.625076) + (xy 152.640506 86.619832) + (xy 152.626612 86.602396) + (xy 152.626611 86.602396) + (xy 152.622225 86.596891) + (xy 152.615886 86.593833) + (xy 152.610385 86.589442) + (xy 152.610811 86.588908) + (xy 152.604647 86.584532) + (xy 151.278554 85.258439) + (xy 153.081851 85.258439) + (xy 153.082428 85.262852) + (xy 153.082428 85.262853) + (xy 153.093817 85.349944) + (xy 153.097729 85.37986) + (xy 153.099524 85.383939) + (xy 153.104423 85.395073) + (xy 153.1049 85.396158) + (xy 153.104959 85.396528) + (xy 153.105722 85.398026) + (xy 153.107746 85.402625) + (xy 153.107746 85.402626) + (xy 153.143603 85.484115) + (xy 153.147048 85.491945) + (xy 153.15905 85.506223) + (xy 153.161744 85.509428) + (xy 153.163872 85.512149) + (xy 153.166007 85.51634) + (xy 153.173796 85.524129) + (xy 153.177445 85.528107) + (xy 153.221036 85.579965) + (xy 153.225842 85.585683) + (xy 153.249114 85.601174) + (xy 153.255551 85.606448) + (xy 153.257614 85.607947) + (xy 153.26109 85.611423) + (xy 153.265468 85.613654) + (xy 153.265471 85.613656) + (xy 153.272445 85.617209) + (xy 153.278692 85.620863) + (xy 153.327779 85.653538) + (xy 153.332028 85.654866) + (xy 153.332029 85.654866) + (xy 153.364011 85.664858) + (xy 153.373742 85.668824) + (xy 153.376514 85.670236) + (xy 153.376518 85.670237) + (xy 153.380902 85.672471) + (xy 153.391567 85.67416) + (xy 153.400428 85.676235) + (xy 153.440411 85.688727) + (xy 153.440414 85.688727) + (xy 153.444663 85.690055) + (xy 153.493784 85.690956) + (xy 153.502398 85.691714) + (xy 153.508855 85.692737) + (xy 153.508859 85.692737) + (xy 153.513715 85.693506) + (xy 153.520662 85.692405) + (xy 153.531568 85.691648) + (xy 153.567098 85.692299) + (xy 153.627247 85.6759) + (xy 153.633905 85.67447) + (xy 153.635862 85.67416) + (xy 153.646528 85.672471) + (xy 153.650911 85.670237) + (xy 153.65559 85.668717) + (xy 153.655593 85.668725) + (xy 153.660442 85.666851) + (xy 153.685242 85.66009) + (xy 153.703192 85.649069) + (xy 153.753424 85.618226) + (xy 153.757752 85.6158) + (xy 153.761955 85.613659) + (xy 153.761963 85.613653) + (xy 153.76634 85.611423) + (xy 153.769142 85.608621) + (xy 153.769979 85.608061) + (xy 153.772606 85.606448) + (xy 153.789596 85.596016) + (xy 153.871773 85.505228) + (xy 153.925166 85.395026) + (xy 153.925905 85.390635) + (xy 153.938103 85.318131) + (xy 153.963488 85.277586) + (xy 153.999737 85.266) + (xy 154.253786 85.266) + (xy 154.29798 85.284306) + (xy 154.305753 85.293777) + (xy 154.335982 85.339018) + (xy 154.349006 85.34772) + (xy 154.349474 85.348033) + (xy 154.37605 85.387807) + (xy 154.366718 85.434723) + (xy 154.349474 85.451967) + (xy 154.335982 85.460982) + (xy 154.332563 85.466099) + (xy 154.292542 85.525995) + (xy 154.2857 85.536234) + (xy 154.279618 85.566808) + (xy 154.273872 85.595698) + (xy 154.2725 85.602594) + (xy 154.2725 85.847406) + (xy 154.273099 85.850416) + (xy 154.273099 85.850419) + (xy 154.278045 85.875284) + (xy 154.2857 85.913766) + (xy 154.289119 85.918883) + (xy 154.28912 85.918885) + (xy 154.311564 85.952474) + (xy 154.335982 85.989018) + (xy 154.341099 85.992437) + (xy 154.349474 85.998033) + (xy 154.37605 86.037807) + (xy 154.366718 86.084723) + (xy 154.349474 86.101967) + (xy 154.335982 86.110982) + (xy 154.332563 86.116099) + (xy 154.290812 86.178584) + (xy 154.2857 86.186234) + (xy 154.281111 86.209306) + (xy 154.273348 86.248333) + (xy 154.2725 86.252594) + (xy 154.2725 86.497406) + (xy 154.273099 86.500416) + (xy 154.273099 86.500419) + (xy 154.277546 86.522775) + (xy 154.2857 86.563766) + (xy 154.289119 86.568883) + (xy 154.28912 86.568885) + (xy 154.31025 86.600508) + (xy 154.335982 86.639018) + (xy 154.341099 86.642437) + (xy 154.349474 86.648033) + (xy 154.37605 86.687807) + (xy 154.366718 86.734723) + (xy 154.349474 86.751967) + (xy 154.335982 86.760982) + (xy 154.332563 86.766099) + (xy 154.290457 86.829115) + (xy 154.2857 86.836234) + (xy 154.281967 86.855002) + (xy 154.274201 86.894045) + (xy 154.2725 86.902594) + (xy 154.2725 87.147406) + (xy 154.273099 87.150416) + (xy 154.273099 87.150419) + (xy 154.278581 87.177978) + (xy 154.2857 87.213766) + (xy 154.289119 87.218883) + (xy 154.28912 87.218885) + (xy 154.317672 87.261615) + (xy 154.335982 87.289018) + (xy 154.341737 87.292863) + (xy 154.349474 87.298033) + (xy 154.37605 87.337807) + (xy 154.366718 87.384723) + (xy 154.349474 87.401967) + (xy 154.335982 87.410982) + (xy 154.332563 87.416099) + (xy 154.290355 87.479268) + (xy 154.2857 87.486234) + (xy 154.28089 87.510414) + (xy 154.273937 87.545372) + (xy 154.2725 87.552594) + (xy 154.2725 87.797406) + (xy 154.273099 87.800416) + (xy 154.273099 87.800419) + (xy 154.278057 87.825343) + (xy 154.2857 87.863766) + (xy 154.289119 87.868883) + (xy 154.28912 87.868885) + (xy 154.306661 87.895136) + (xy 154.335982 87.939018) + (xy 154.341099 87.942437) + (xy 154.406115 87.98588) + (xy 154.406117 87.985881) + (xy 154.411234 87.9893) + (xy 154.438949 87.994813) + (xy 154.474581 88.001901) + (xy 154.474584 88.001901) + (xy 154.477594 88.0025) + (xy 155.168997 88.0025) + (xy 155.213191 88.020806) + (xy 155.296872 88.104487) + (xy 155.301177 88.110561) + (xy 155.30175 88.110105) + (xy 155.306131 88.115613) + (xy 155.309178 88.121958) + (xy 155.314675 88.126354) + (xy 155.332261 88.140418) + (xy 155.33742 88.145035) + (xy 155.342668 88.150283) + (xy 155.345639 88.15215) + (xy 155.34564 88.152151) + (xy 155.348669 88.154055) + (xy 155.354444 88.158159) + (xy 155.371736 88.171988) + (xy 155.37174 88.17199) + (xy 155.377233 88.176383) + (xy 155.38409 88.17796) + (xy 155.387852 88.179778) + (xy 155.39179 88.181157) + (xy 155.397748 88.184902) + (xy 155.404739 88.185692) + (xy 155.404744 88.185694) + (xy 155.426737 88.18818) + (xy 155.433723 88.189373) + (xy 155.440797 88.191) + (xy 155.448177 88.191) + (xy 155.455198 88.191396) + (xy 155.484338 88.19469) + (xy 155.490984 88.192369) + (xy 155.497978 88.191585) + (xy 155.498054 88.192264) + (xy 155.505504 88.191) + (xy 156.562118 88.191) + (xy 156.606312 88.209306) + (xy 156.615179 88.220473) + (xy 156.617471 88.224155) + (xy 156.619264 88.22823) + (xy 156.633203 88.244813) + (xy 156.63396 88.245713) + (xy 156.636088 88.248434) + (xy 156.638223 88.252625) + (xy 156.646012 88.260414) + (xy 156.64966 88.264391) + (xy 156.698058 88.321968) + (xy 156.72133 88.337459) + (xy 156.727767 88.342733) + (xy 156.72983 88.344232) + (xy 156.733306 88.347708) + (xy 156.737684 88.349939) + (xy 156.737687 88.349941) + (xy 156.744661 88.353494) + (xy 156.750908 88.357148) + (xy 156.799995 88.389823) + (xy 156.804244 88.391151) + (xy 156.804245 88.391151) + (xy 156.836227 88.401143) + (xy 156.845958 88.405109) + (xy 156.84873 88.406521) + (xy 156.848734 88.406522) + (xy 156.853118 88.408756) + (xy 156.863783 88.410445) + (xy 156.872644 88.41252) + (xy 156.912627 88.425012) + (xy 156.91263 88.425012) + (xy 156.916879 88.42634) + (xy 156.966 88.427241) + (xy 156.974614 88.427999) + (xy 156.981071 88.429022) + (xy 156.981075 88.429022) + (xy 156.985931 88.429791) + (xy 156.992878 88.42869) + (xy 157.003784 88.427933) + (xy 157.039314 88.428584) + (xy 157.099463 88.412185) + (xy 157.106121 88.410755) + (xy 157.108078 88.410445) + (xy 157.118744 88.408756) + (xy 157.123127 88.406522) + (xy 157.127806 88.405002) + (xy 157.127809 88.40501) + (xy 157.132658 88.403136) + (xy 157.157458 88.396375) + (xy 157.162452 88.393309) + (xy 157.22564 88.354511) + (xy 157.229968 88.352085) + (xy 157.234171 88.349944) + (xy 157.234179 88.349938) + (xy 157.238556 88.347708) + (xy 157.241358 88.344906) + (xy 157.242195 88.344346) + (xy 157.242635 88.344076) + (xy 157.261812 88.332301) + (xy 157.343989 88.241513) + (xy 157.397382 88.131311) + (xy 157.399938 88.116123) + (xy 157.417052 88.014392) + (xy 157.417698 88.010552) + (xy 157.417827 88) + (xy 157.400467 87.878781) + (xy 157.349783 87.767307) + (xy 157.33513 87.750302) + (xy 157.333639 87.747375) + (xy 157.327831 87.741567) + (xy 157.324677 87.73817) + (xy 157.284522 87.691568) + (xy 157.269849 87.674539) + (xy 157.249672 87.661461) + (xy 157.246086 87.658559) + (xy 157.246012 87.658661) + (xy 157.242037 87.655773) + (xy 157.238556 87.652292) + (xy 157.227274 87.646543) + (xy 157.221667 87.643309) + (xy 157.170824 87.610354) + (xy 157.170821 87.610353) + (xy 157.167091 87.607935) + (xy 157.162832 87.606661) + (xy 157.162829 87.60666) + (xy 157.144276 87.601112) + (xy 157.13477 87.598269) + (xy 157.124308 87.594079) + (xy 157.118744 87.591244) + (xy 157.106998 87.589384) + (xy 157.098882 87.587536) + (xy 157.049769 87.572848) + (xy 157.005427 87.572577) + (xy 156.996034 87.571809) + (xy 156.990788 87.570978) + (xy 156.990787 87.570978) + (xy 156.985931 87.570209) + (xy 156.977304 87.571576) + (xy 156.967151 87.572344) + (xy 156.948983 87.572233) + (xy 156.93177 87.572127) + (xy 156.931768 87.572127) + (xy 156.927316 87.5721) + (xy 156.925624 87.572584) + (xy 156.880321 87.560699) + (xy 156.856185 87.519398) + (xy 156.861861 87.483664) + (xy 156.877202 87.452) + (xy 156.911451 87.381311) + (xy 156.912686 87.373974) + (xy 156.928508 87.279921) + (xy 156.931767 87.260552) + (xy 156.931896 87.25) + (xy 156.914536 87.128781) + (xy 156.863852 87.017307) + (xy 156.865403 87.016602) + (xy 156.858076 86.975472) + (xy 156.885443 86.936239) + (xy 156.92026 86.926402) + (xy 156.966 86.927241) + (xy 156.974614 86.927999) + (xy 156.981071 86.929022) + (xy 156.981075 86.929022) + (xy 156.985931 86.929791) + (xy 156.992878 86.92869) + (xy 157.003784 86.927933) + (xy 157.039314 86.928584) + (xy 157.099463 86.912185) + (xy 157.106121 86.910755) + (xy 157.107631 86.910516) + (xy 157.118744 86.908756) + (xy 157.123127 86.906522) + (xy 157.127806 86.905002) + (xy 157.127809 86.90501) + (xy 157.132658 86.903136) + (xy 157.157458 86.896375) + (xy 157.188688 86.8772) + (xy 157.22564 86.854511) + (xy 157.229968 86.852085) + (xy 157.234171 86.849944) + (xy 157.234179 86.849938) + (xy 157.238556 86.847708) + (xy 157.241358 86.844906) + (xy 157.242195 86.844346) + (xy 157.261812 86.832301) + (xy 157.343989 86.741513) + (xy 157.397382 86.631311) + (xy 157.398851 86.622584) + (xy 157.414799 86.527784) + (xy 157.417698 86.510552) + (xy 157.417827 86.5) + (xy 157.400467 86.378781) + (xy 157.349783 86.267307) + (xy 157.33513 86.250302) + (xy 157.333639 86.247375) + (xy 157.327831 86.241567) + (xy 157.324677 86.23817) + (xy 157.279093 86.185267) + (xy 157.269849 86.174539) + (xy 157.249672 86.161461) + (xy 157.246086 86.158559) + (xy 157.246012 86.158661) + (xy 157.242037 86.155773) + (xy 157.238556 86.152292) + (xy 157.227274 86.146543) + (xy 157.221667 86.143309) + (xy 157.215717 86.139452) + (xy 157.20158 86.130289) + (xy 157.170824 86.110354) + (xy 157.170821 86.110353) + (xy 157.167091 86.107935) + (xy 157.162832 86.106661) + (xy 157.162829 86.10666) + (xy 157.144276 86.101112) + (xy 157.13477 86.098269) + (xy 157.124308 86.094079) + (xy 157.118744 86.091244) + (xy 157.106998 86.089384) + (xy 157.098882 86.087536) + (xy 157.049769 86.072848) + (xy 157.005427 86.072577) + (xy 156.996034 86.071809) + (xy 156.990788 86.070978) + (xy 156.990787 86.070978) + (xy 156.985931 86.070209) + (xy 156.977304 86.071576) + (xy 156.967151 86.072344) + (xy 156.948983 86.072233) + (xy 156.93177 86.072127) + (xy 156.931768 86.072127) + (xy 156.927316 86.0721) + (xy 156.925624 86.072584) + (xy 156.880321 86.060699) + (xy 156.856185 86.019398) + (xy 156.861861 85.983664) + (xy 156.885775 85.934306) + (xy 156.911451 85.881311) + (xy 156.91265 85.874189) + (xy 156.931367 85.762928) + (xy 156.931767 85.760552) + (xy 156.931896 85.75) + (xy 156.914536 85.628781) + (xy 156.863852 85.517307) + (xy 156.849199 85.500302) + (xy 156.847708 85.497375) + (xy 156.8419 85.491567) + (xy 156.838746 85.48817) + (xy 156.803542 85.447314) + (xy 156.783918 85.424539) + (xy 156.763741 85.411461) + (xy 156.760155 85.408559) + (xy 156.760081 85.408661) + (xy 156.756106 85.405773) + (xy 156.752625 85.402292) + (xy 156.741343 85.396543) + (xy 156.735736 85.393309) + (xy 156.727711 85.388107) + (xy 156.71497 85.379849) + (xy 156.684893 85.360354) + (xy 156.68489 85.360353) + (xy 156.68116 85.357935) + (xy 156.676901 85.356661) + (xy 156.676898 85.35666) + (xy 156.654429 85.349941) + (xy 156.648839 85.348269) + (xy 156.638377 85.344079) + (xy 156.632813 85.341244) + (xy 156.621067 85.339384) + (xy 156.612951 85.337536) + (xy 156.563838 85.322848) + (xy 156.519496 85.322577) + (xy 156.510103 85.321809) + (xy 156.504857 85.320978) + (xy 156.504856 85.320978) + (xy 156.5 85.320209) + (xy 156.491373 85.321576) + (xy 156.48122 85.322344) + (xy 156.462836 85.322231) + (xy 156.445838 85.322127) + (xy 156.445836 85.322127) + (xy 156.441385 85.3221) + (xy 156.387011 85.337641) + (xy 156.379623 85.339275) + (xy 156.367187 85.341244) + (xy 156.362804 85.343477) + (xy 156.36187 85.343781) + (xy 156.352156 85.347603) + (xy 156.35065 85.348033) + (xy 156.327929 85.354526) + (xy 156.327927 85.354527) + (xy 156.323644 85.355751) + (xy 156.262821 85.394128) + (xy 156.262819 85.394129) + (xy 156.257842 85.396959) + (xy 156.251757 85.400059) + (xy 156.251756 85.40006) + (xy 156.247375 85.402292) + (xy 156.243897 85.40577) + (xy 156.242445 85.406825) + (xy 156.239058 85.40912) + (xy 156.22008 85.421095) + (xy 156.217137 85.424427) + (xy 156.217135 85.424429) + (xy 156.157156 85.492342) + (xy 156.156032 85.493538) + (xy 156.155775 85.493892) + (xy 156.155554 85.494113) + (xy 156.155405 85.494204) + (xy 156.154504 85.495163) + (xy 156.152292 85.497375) + (xy 156.151509 85.496592) + (xy 156.150362 85.497296) + (xy 156.151721 85.498496) + (xy 156.139022 85.512874) + (xy 156.092177 85.534) + (xy 156.021214 85.534) + (xy 155.97702 85.515694) + (xy 155.969247 85.506223) + (xy 155.965508 85.500627) + (xy 155.939018 85.460982) + (xy 155.925526 85.451967) + (xy 155.89895 85.412193) + (xy 155.908282 85.365277) + (xy 155.925526 85.348033) + (xy 155.925995 85.34772) + (xy 155.939018 85.339018) + (xy 155.950322 85.3221) + (xy 155.98588 85.268885) + (xy 155.985881 85.268883) + (xy 155.9893 85.263766) + (xy 155.996369 85.22823) + (xy 156.001901 85.200419) + (xy 156.001901 85.200416) + (xy 156.0025 85.197406) + (xy 156.0025 84.952594) + (xy 155.998963 84.93481) + (xy 155.993902 84.909372) + (xy 155.9893 84.886234) + (xy 155.983883 84.878126) + (xy 155.942437 84.816099) + (xy 155.939018 84.810982) + (xy 155.925077 84.801667) + (xy 155.898501 84.761893) + (xy 155.907833 84.714977) + (xy 155.925076 84.697734) + (xy 155.933539 84.692079) + (xy 155.942077 84.683541) + (xy 155.985408 84.61869) + (xy 155.99003 84.607532) + (xy 156.001401 84.550369) + (xy 156.002 84.544285) + (xy 156.002 84.500931) + (xy 155.998359 84.492141) + (xy 155.989569 84.4885) + (xy 154.285431 84.4885) + (xy 154.276641 84.492141) + (xy 154.273 84.500931) + (xy 154.273 84.544285) + (xy 154.273599 84.550369) + (xy 154.28497 84.607532) + (xy 154.289592 84.61869) + (xy 154.332923 84.683541) + (xy 154.341461 84.692079) + (xy 154.349924 84.697734) + (xy 154.376499 84.737508) + (xy 154.367166 84.784424) + (xy 154.349923 84.801667) + (xy 154.335982 84.810982) + (xy 154.31135 84.847847) + (xy 154.305753 84.856223) + (xy 154.265979 84.882799) + (xy 154.253786 84.884) + (xy 153.745661 84.884) + (xy 153.738323 84.882751) + (xy 153.73824 84.883477) + (xy 153.731248 84.88268) + (xy 153.724607 84.880348) + (xy 153.720083 84.880851) + (xy 153.703184 84.874787) + (xy 153.702652 84.875939) + (xy 153.698612 84.874072) + (xy 153.694875 84.87165) + (xy 153.69061 84.870375) + (xy 153.690609 84.870374) + (xy 153.674959 84.865694) + (xy 153.662554 84.861984) + (xy 153.652092 84.857794) + (xy 153.646528 84.854959) + (xy 153.634782 84.853099) + (xy 153.626666 84.851251) + (xy 153.577553 84.836563) + (xy 153.533211 84.836292) + (xy 153.523818 84.835524) + (xy 153.518572 84.834693) + (xy 153.518571 84.834693) + (xy 153.513715 84.833924) + (xy 153.505088 84.835291) + (xy 153.494935 84.836059) + (xy 153.476551 84.835946) + (xy 153.459553 84.835842) + (xy 153.459551 84.835842) + (xy 153.4551 84.835815) + (xy 153.400726 84.851356) + (xy 153.393338 84.85299) + (xy 153.380902 84.854959) + (xy 153.376519 84.857192) + (xy 153.375585 84.857496) + (xy 153.36587 84.861318) + (xy 153.341644 84.868241) + (xy 153.341642 84.868242) + (xy 153.337359 84.869466) + (xy 153.33359 84.871844) + (xy 153.318022 84.881667) + (xy 153.284191 84.903013) + (xy 153.276534 84.907844) + (xy 153.271557 84.910674) + (xy 153.265472 84.913774) + (xy 153.265471 84.913775) + (xy 153.26109 84.916007) + (xy 153.257612 84.919485) + (xy 153.25616 84.92054) + (xy 153.252773 84.922835) + (xy 153.233795 84.93481) + (xy 153.230852 84.938142) + (xy 153.23085 84.938144) + (xy 153.170871 85.006057) + (xy 153.169747 85.007253) + (xy 153.169489 85.007608) + (xy 153.169269 85.007828) + (xy 153.16912 85.007919) + (xy 153.168219 85.008878) + (xy 153.166007 85.01109) + (xy 153.165224 85.010307) + (xy 153.164077 85.011011) + (xy 153.165436 85.012211) + (xy 153.152733 85.026594) + (xy 153.150842 85.030622) + (xy 153.102583 85.13341) + (xy 153.102582 85.133413) + (xy 153.100691 85.137441) + (xy 153.081851 85.258439) + (xy 151.278554 85.258439) + (xy 149.415628 83.395513) + (xy 149.411323 83.389439) + (xy 149.41075 83.389895) + (xy 149.406369 83.384387) + (xy 149.403322 83.378042) + (xy 149.380239 83.359582) + (xy 149.37508 83.354965) + (xy 149.369831 83.349716) + (xy 149.363825 83.345941) + (xy 149.358052 83.341838) + (xy 149.335267 83.323617) + (xy 149.328407 83.32204) + (xy 149.324647 83.320222) + (xy 149.320711 83.318844) + (xy 149.314752 83.315098) + (xy 149.307758 83.314307) + (xy 149.307757 83.314307) + (xy 149.285764 83.311821) + (xy 149.278787 83.310629) + (xy 149.271703 83.309) + (xy 149.264329 83.309) + (xy 149.257308 83.308604) + (xy 149.255627 83.308414) + (xy 149.228162 83.305309) + (xy 149.221517 83.30763) + (xy 149.214523 83.308414) + (xy 149.214447 83.307736) + (xy 149.206995 83.309) + (xy 148.855003 83.309) + (xy 148.810809 83.290694) + (xy 148.614306 83.094191) + (xy 148.596 83.049997) + (xy 148.596 82.126097) + (xy 148.614306 82.081903) + (xy 148.633129 82.068978) + (xy 148.709628 82.034999) + (xy 148.709629 82.034998) + (xy 148.7149 82.032657) + (xy 148.721521 82.026025) + (xy 148.767176 81.980289) + (xy 148.787935 81.959494) + (xy 148.818241 81.890944) + (xy 148.827835 81.869244) + (xy 148.827836 81.869241) + (xy 148.829735 81.864945) + (xy 148.830279 81.860278) + (xy 148.83028 81.860275) + (xy 148.832288 81.843046) + (xy 148.8325 81.84123) + (xy 148.8325 80.45877) + (xy 148.829621 80.434576) + (xy 148.827717 80.430289) + (xy 148.789999 80.345372) + (xy 148.789998 80.345371) + (xy 148.787657 80.3401) + (xy 148.714494 80.267065) + (xy 148.661845 80.243789) + (xy 148.624244 80.227165) + (xy 148.624241 80.227164) + (xy 148.619945 80.225265) + (xy 148.615278 80.224721) + (xy 148.615275 80.22472) + (xy 148.602388 80.223218) + (xy 148.59623 80.2225) + (xy 148.21377 80.2225) + (xy 148.21194 80.222718) + (xy 148.211936 80.222718) + (xy 148.205353 80.223502) + (xy 148.189576 80.225379) + (xy 148.18529 80.227283) + (xy 148.185289 80.227283) + (xy 148.100372 80.265001) + (xy 148.100371 80.265002) + (xy 148.0951 80.267343) + (xy 148.022065 80.340506) + (xy 148.00592 80.377026) + (xy 147.982165 80.430756) + (xy 147.982164 80.430759) + (xy 147.980265 80.435055) + (xy 147.979721 80.439722) + (xy 147.97972 80.439725) + (xy 147.979707 80.439838) + (xy 147.9775 80.45877) + (xy 147.9775 81.84123) + (xy 147.980379 81.865424) + (xy 147.982283 81.86971) + (xy 147.982283 81.869711) + (xy 148.019692 81.953931) + (xy 148.022343 81.9599) + (xy 148.026426 81.963976) + (xy 148.051946 81.989451) + (xy 148.095506 82.032935) + (xy 148.143564 82.054181) + (xy 148.176772 82.068863) + (xy 148.20979 82.103476) + (xy 148.214 82.126026) + (xy 148.214 83.111768) + (xy 148.21275 83.119107) + (xy 148.213477 83.11919) + (xy 148.21268 83.126181) + (xy 148.210348 83.132822) + (xy 148.211126 83.139815) + (xy 148.211126 83.139816) + (xy 148.212797 83.154827) + (xy 148.213457 83.160755) + (xy 148.213617 83.162197) + (xy 148.214 83.16911) + (xy 148.214 83.176533) + (xy 148.215581 83.183465) + (xy 148.216757 83.190418) + (xy 148.219986 83.219429) + (xy 148.223719 83.225393) + (xy 148.225094 83.229341) + (xy 148.226903 83.2331) + (xy 148.228468 83.239959) + (xy 148.232853 83.245461) + (xy 148.232853 83.245462) + (xy 148.246648 83.262773) + (xy 148.250744 83.268559) + (xy 148.252606 83.271533) + (xy 148.254596 83.274711) + (xy 148.259809 83.279924) + (xy 148.264494 83.285168) + (xy 148.282775 83.308109) + (xy 148.289114 83.311167) + (xy 148.294615 83.315558) + (xy 148.294189 83.316092) + (xy 148.300353 83.320468) + (xy 148.584372 83.604487) + (xy 148.588677 83.610561) + (xy 148.58925 83.610105) + (xy 148.593631 83.615613) + (xy 148.596678 83.621958) + (xy 148.610723 83.63319) + (xy 148.619761 83.640418) + (xy 148.62492 83.645035) + (xy 148.630169 83.650284) + (xy 148.634557 83.653042) + (xy 148.636172 83.654057) + (xy 148.641948 83.658162) + (xy 148.664733 83.676383) + (xy 148.671593 83.67796) + (xy 148.675353 83.679778) + (xy 148.679288 83.681156) + (xy 148.685248 83.684902) + (xy 148.692243 83.685693) + (xy 148.697438 83.687512) + (xy 148.733099 83.719396) + (xy 148.73577 83.767156) + (xy 148.703886 83.802817) + (xy 148.676782 83.809) + (xy 147.605003 83.809) + (xy 147.560809 83.790694) + (xy 147.344306 83.574191) + (xy 147.326 83.529997) + (xy 147.326 82.126097) + (xy 147.344306 82.081903) + (xy 147.363129 82.068978) + (xy 147.439628 82.034999) + (xy 147.439629 82.034998) + (xy 147.4449 82.032657) + (xy 147.451521 82.026025) + (xy 147.497176 81.980289) + (xy 147.517935 81.959494) + (xy 147.548241 81.890944) + (xy 147.557835 81.869244) + (xy 147.557836 81.869241) + (xy 147.559735 81.864945) + (xy 147.560279 81.860278) + (xy 147.56028 81.860275) + (xy 147.562288 81.843046) + (xy 147.5625 81.84123) + (xy 147.5625 80.45877) + (xy 147.559621 80.434576) + (xy 147.557717 80.430289) + (xy 147.519999 80.345372) + (xy 147.519998 80.345371) + (xy 147.517657 80.3401) + (xy 147.444494 80.267065) + (xy 147.391845 80.243789) + (xy 147.354244 80.227165) + (xy 147.354241 80.227164) + (xy 147.349945 80.225265) + (xy 147.345278 80.224721) + (xy 147.345275 80.22472) + (xy 147.332388 80.223218) + (xy 147.32623 80.2225) + (xy 146.94377 80.2225) + (xy 146.94194 80.222718) + (xy 146.941936 80.222718) + (xy 146.935353 80.223502) + (xy 146.919576 80.225379) + (xy 146.91529 80.227283) + (xy 146.915289 80.227283) + (xy 146.830372 80.265001) + (xy 146.830371 80.265002) + (xy 146.8251 80.267343) + (xy 146.752065 80.340506) + (xy 146.73592 80.377026) + (xy 146.712165 80.430756) + (xy 146.712164 80.430759) + (xy 146.710265 80.435055) + (xy 146.709721 80.439722) + (xy 146.70972 80.439725) + (xy 146.709707 80.439838) + (xy 146.7075 80.45877) + (xy 146.7075 81.84123) + (xy 146.710379 81.865424) + (xy 146.712283 81.86971) + (xy 146.712283 81.869711) + (xy 146.749692 81.953931) + (xy 146.752343 81.9599) + (xy 146.756426 81.963976) + (xy 146.781946 81.989451) + (xy 146.825506 82.032935) + (xy 146.873564 82.054181) + (xy 146.906772 82.068863) + (xy 146.93979 82.103476) + (xy 146.944 82.126026) + (xy 146.944 83.591768) + (xy 146.94275 83.599107) + (xy 146.943477 83.59919) + (xy 146.94268 83.606181) + (xy 146.940348 83.612822) + (xy 146.941126 83.619815) + (xy 146.941126 83.619816) + (xy 146.943617 83.642197) + (xy 146.944 83.64911) + (xy 146.944 83.656533) + (xy 146.945581 83.663465) + (xy 146.946757 83.670418) + (xy 146.949986 83.699429) + (xy 146.953719 83.705393) + (xy 146.955094 83.709341) + (xy 146.956903 83.7131) + (xy 146.958468 83.719959) + (xy 146.962853 83.725461) + (xy 146.962853 83.725462) + (xy 146.976648 83.742773) + (xy 146.980744 83.748559) + (xy 146.98272 83.751715) + (xy 146.984596 83.754711) + (xy 146.989809 83.759924) + (xy 146.994494 83.765168) + (xy 147.004127 83.777256) + (xy 147.012775 83.788109) + (xy 147.019114 83.791167) + (xy 147.024615 83.795558) + (xy 147.024189 83.796092) + (xy 147.030353 83.800468) + (xy 147.334372 84.104487) + (xy 147.338677 84.110561) + (xy 147.33925 84.110105) + (xy 147.343631 84.115613) + (xy 147.346678 84.121958) + (xy 147.352175 84.126354) + (xy 147.369761 84.140418) + (xy 147.37492 84.145035) + (xy 147.380169 84.150284) + (xy 147.386172 84.154057) + (xy 147.391948 84.158162) + (xy 147.414733 84.176383) + (xy 147.421593 84.17796) + (xy 147.425353 84.179778) + (xy 147.429288 84.181156) + (xy 147.435248 84.184902) + (xy 147.442243 84.185693) + (xy 147.447438 84.187512) + (xy 147.483099 84.219396) + (xy 147.48577 84.267156) + (xy 147.453886 84.302817) + (xy 147.426782 84.309) + (xy 146.355003 84.309) + (xy 146.310809 84.290694) + (xy 146.074306 84.054191) + (xy 146.056 84.009997) + (xy 146.056 82.126097) + (xy 146.074306 82.081903) + (xy 146.093129 82.068978) + (xy 146.169628 82.034999) + (xy 146.169629 82.034998) + (xy 146.1749 82.032657) + (xy 146.181521 82.026025) + (xy 146.227176 81.980289) + (xy 146.247935 81.959494) + (xy 146.278241 81.890944) + (xy 146.287835 81.869244) + (xy 146.287836 81.869241) + (xy 146.289735 81.864945) + (xy 146.290279 81.860278) + (xy 146.29028 81.860275) + (xy 146.292288 81.843046) + (xy 146.2925 81.84123) + (xy 146.2925 80.45877) + (xy 146.289621 80.434576) + (xy 146.287717 80.430289) + (xy 146.249999 80.345372) + (xy 146.249998 80.345371) + (xy 146.247657 80.3401) + (xy 146.174494 80.267065) + (xy 146.121845 80.243789) + (xy 146.084244 80.227165) + (xy 146.084241 80.227164) + (xy 146.079945 80.225265) + (xy 146.075278 80.224721) + (xy 146.075275 80.22472) + (xy 146.062388 80.223218) + (xy 146.05623 80.2225) + (xy 145.67377 80.2225) + (xy 145.67194 80.222718) + (xy 145.671936 80.222718) + (xy 145.665353 80.223502) + (xy 145.649576 80.225379) + (xy 145.64529 80.227283) + (xy 145.645289 80.227283) + (xy 145.560372 80.265001) + (xy 145.560371 80.265002) + (xy 145.5551 80.267343) + (xy 145.482065 80.340506) + (xy 145.46592 80.377026) + (xy 145.442165 80.430756) + (xy 145.442164 80.430759) + (xy 145.440265 80.435055) + (xy 145.439721 80.439722) + (xy 145.43972 80.439725) + (xy 145.439707 80.439838) + (xy 145.4375 80.45877) + (xy 145.4375 81.84123) + (xy 145.440379 81.865424) + (xy 145.442283 81.86971) + (xy 145.442283 81.869711) + (xy 145.479692 81.953931) + (xy 145.482343 81.9599) + (xy 145.486426 81.963976) + (xy 145.511946 81.989451) + (xy 145.555506 82.032935) + (xy 145.603564 82.054181) + (xy 145.636772 82.068863) + (xy 145.66979 82.103476) + (xy 145.674 82.126026) + (xy 145.674 84.071768) + (xy 145.67275 84.079107) + (xy 145.673477 84.07919) + (xy 145.67268 84.086181) + (xy 145.670348 84.092822) + (xy 145.671126 84.099815) + (xy 145.671126 84.099816) + (xy 145.673617 84.122197) + (xy 145.674 84.12911) + (xy 145.674 84.136533) + (xy 145.675581 84.143465) + (xy 145.676757 84.150418) + (xy 145.679986 84.179429) + (xy 145.683719 84.185393) + (xy 145.685094 84.189341) + (xy 145.686903 84.1931) + (xy 145.688468 84.199959) + (xy 145.692853 84.205461) + (xy 145.692853 84.205462) + (xy 145.706648 84.222773) + (xy 145.710744 84.228559) + (xy 145.712599 84.231521) + (xy 145.714596 84.234711) + (xy 145.719808 84.239923) + (xy 145.724493 84.245167) + (xy 145.733122 84.255995) + (xy 145.742775 84.268109) + (xy 145.749114 84.271167) + (xy 145.754615 84.275558) + (xy 145.754189 84.276092) + (xy 145.760353 84.280468) + (xy 146.084371 84.604485) + (xy 146.088678 84.61056) + (xy 146.08925 84.610105) + (xy 146.093631 84.615613) + (xy 146.096678 84.621958) + (xy 146.108175 84.631152) + (xy 146.119766 84.640422) + (xy 146.124925 84.645039) + (xy 146.130169 84.650283) + (xy 146.133132 84.652145) + (xy 146.133139 84.652151) + (xy 146.136174 84.654058) + (xy 146.14195 84.658163) + (xy 146.164733 84.676383) + (xy 146.171591 84.67796) + (xy 146.175356 84.67978) + (xy 146.179292 84.681158) + (xy 146.185248 84.684902) + (xy 146.192238 84.685692) + (xy 146.197438 84.687513) + (xy 146.233098 84.719397) + (xy 146.235767 84.767158) + (xy 146.203883 84.802818) + (xy 146.17678 84.809) + (xy 145.043231 84.809) + (xy 145.035892 84.80775) + (xy 145.035809 84.808477) + (xy 145.028818 84.80768) + (xy 145.022177 84.805348) + (xy 145.015185 84.806126) + (xy 145.015183 84.806126) + (xy 144.995677 84.808297) + (xy 144.99292 84.808604) + (xy 144.992803 84.808617) + (xy 144.98589 84.809) + (xy 144.978467 84.809) + (xy 144.975043 84.809781) + (xy 144.971553 84.810577) + (xy 144.964567 84.811759) + (xy 144.957208 84.812578) + (xy 144.935571 84.814986) + (xy 144.929608 84.818719) + (xy 144.925662 84.820093) + (xy 144.921902 84.821903) + (xy 144.915041 84.823468) + (xy 144.909539 84.827853) + (xy 144.909538 84.827853) + (xy 144.909337 84.828013) + (xy 144.89223 84.841646) + (xy 144.892221 84.841653) + (xy 144.886441 84.845746) + (xy 144.880289 84.849597) + (xy 144.875081 84.854805) + (xy 144.869837 84.85949) + (xy 144.856179 84.870374) + (xy 144.846891 84.877775) + (xy 144.843833 84.884114) + (xy 144.839442 84.889615) + (xy 144.838909 84.889189) + (xy 144.834531 84.895355) + (xy 144.490514 85.239372) + (xy 144.48444 85.243677) + (xy 144.484896 85.244251) + (xy 144.479391 85.24863) + (xy 144.473042 85.251678) + (xy 144.460628 85.267201) + (xy 144.454582 85.274761) + (xy 144.449965 85.27992) + (xy 144.444716 85.285169) + (xy 144.442847 85.288143) + (xy 144.440943 85.291172) + (xy 144.436838 85.296948) + (xy 144.418617 85.319733) + (xy 144.41704 85.326593) + (xy 144.415222 85.330353) + (xy 144.413844 85.334289) + (xy 144.410098 85.340248) + (xy 144.409307 85.347242) + (xy 144.409307 85.347243) + (xy 144.406821 85.369236) + (xy 144.405629 85.376213) + (xy 144.404 85.383297) + (xy 144.404 85.390671) + (xy 144.403604 85.397692) + (xy 144.400309 85.426838) + (xy 144.40263 85.433483) + (xy 144.403414 85.440477) + (xy 144.402736 85.440553) + (xy 144.404 85.448005) + (xy 144.404 87.373903) + (xy 144.385694 87.418097) + (xy 144.366871 87.431022) + (xy 144.290372 87.465001) + (xy 144.290371 87.465002) + (xy 144.2851 87.467343) + (xy 144.281024 87.471426) + (xy 144.253881 87.498617) + (xy 144.212065 87.540506) + (xy 144.192557 87.584631) + (xy 144.172165 87.630756) + (xy 144.172164 87.630759) + (xy 144.170265 87.635055) + (xy 144.169721 87.639722) + (xy 144.16972 87.639725) + (xy 144.168401 87.651038) + (xy 144.1675 87.65877) + (xy 144.1675 89.04123) + (xy 144.170379 89.065424) + (xy 144.172283 89.06971) + (xy 144.172283 89.069711) + (xy 144.209565 89.153645) + (xy 144.212343 89.1599) + (xy 144.216426 89.163976) + (xy 144.227621 89.175151) + (xy 144.285506 89.232935) + (xy 144.303041 89.240687) + (xy 144.375756 89.272835) + (xy 144.375759 89.272836) + (xy 144.380055 89.274735) + (xy 144.384722 89.275279) + (xy 144.384725 89.27528) + (xy 144.396038 89.276599) + (xy 144.40377 89.2775) + (xy 144.78623 89.2775) + (xy 144.78806 89.277282) + (xy 144.788064 89.277282) + (xy 144.794647 89.276498) + (xy 144.810424 89.274621) + (xy 144.814711 89.272717) + (xy 144.899628 89.234999) + (xy 144.899629 89.234998) + (xy 144.9049 89.232657) + (xy 144.977935 89.159494) + (xy 145.003317 89.102081) + (xy 145.017835 89.069244) + (xy 145.017836 89.069241) + (xy 145.019735 89.064945) + (xy 145.020279 89.060278) + (xy 145.02028 89.060275) + (xy 145.022288 89.043046) + (xy 145.0225 89.04123) + (xy 145.0225 87.65877) + (xy 145.022233 87.656521) + (xy 145.021025 87.646375) + (xy 145.019621 87.634576) + (xy 145.008862 87.610354) + (xy 144.979999 87.545372) + (xy 144.979998 87.545371) + (xy 144.977657 87.5401) + (xy 144.963039 87.525507) + (xy 144.919767 87.482311) + (xy 144.904494 87.467065) + (xy 144.848884 87.44248) + (xy 144.823228 87.431137) + (xy 144.79021 87.396524) + (xy 144.786 87.373974) + (xy 144.786 85.510003) + (xy 144.804306 85.465809) + (xy 145.060809 85.209306) + (xy 145.105003 85.191) + (xy 146.176849 85.191) + (xy 146.221043 85.209306) + (xy 146.239349 85.2535) + (xy 146.221043 85.297694) + (xy 146.1974 85.312525) + (xy 146.192569 85.314207) + (xy 146.185571 85.314986) + (xy 146.179604 85.318721) + (xy 146.175659 85.320095) + (xy 146.171903 85.321902) + (xy 146.165041 85.323468) + (xy 146.159539 85.327853) + (xy 146.159538 85.327853) + (xy 146.142227 85.341648) + (xy 146.136441 85.345744) + (xy 146.133285 85.34772) + (xy 146.130289 85.349596) + (xy 146.125076 85.354809) + (xy 146.119832 85.359494) + (xy 146.107607 85.369236) + (xy 146.096891 85.377775) + (xy 146.093833 85.384114) + (xy 146.089442 85.389615) + (xy 146.088908 85.389189) + (xy 146.084532 85.395353) + (xy 145.760513 85.719372) + (xy 145.754439 85.723677) + (xy 145.754895 85.72425) + (xy 145.749387 85.728631) + (xy 145.743042 85.731678) + (xy 145.738646 85.737175) + (xy 145.724582 85.754761) + (xy 145.719965 85.75992) + (xy 145.714716 85.765169) + (xy 145.712847 85.768143) + (xy 145.710943 85.771172) + (xy 145.706838 85.776948) + (xy 145.688617 85.799733) + (xy 145.68704 85.806593) + (xy 145.685222 85.810353) + (xy 145.683844 85.814289) + (xy 145.680098 85.820248) + (xy 145.679307 85.827242) + (xy 145.679307 85.827243) + (xy 145.676821 85.849236) + (xy 145.675629 85.856213) + (xy 145.674 85.863297) + (xy 145.674 85.870671) + (xy 145.673604 85.877692) + (xy 145.670309 85.906838) + (xy 145.67263 85.913483) + (xy 145.673414 85.920477) + (xy 145.672736 85.920553) + (xy 145.674 85.928005) + (xy 145.674 87.373903) + (xy 145.655694 87.418097) + (xy 145.636871 87.431022) + (xy 145.560372 87.465001) + (xy 145.560371 87.465002) + (xy 145.5551 87.467343) + (xy 145.551024 87.471426) + (xy 145.523881 87.498617) + (xy 145.482065 87.540506) + (xy 145.462557 87.584631) + (xy 145.442165 87.630756) + (xy 145.442164 87.630759) + (xy 145.440265 87.635055) + (xy 145.439721 87.639722) + (xy 145.43972 87.639725) + (xy 145.438401 87.651038) + (xy 145.4375 87.65877) + (xy 145.4375 89.04123) + (xy 145.440379 89.065424) + (xy 145.442283 89.06971) + (xy 145.442283 89.069711) + (xy 145.479565 89.153645) + (xy 145.482343 89.1599) + (xy 145.486426 89.163976) + (xy 145.497621 89.175151) + (xy 145.555506 89.232935) + (xy 145.573041 89.240687) + (xy 145.645756 89.272835) + (xy 145.645759 89.272836) + (xy 145.650055 89.274735) + (xy 145.654722 89.275279) + (xy 145.654725 89.27528) + (xy 145.666038 89.276599) + (xy 145.67377 89.2775) + (xy 146.05623 89.2775) + (xy 146.05806 89.277282) + (xy 146.058064 89.277282) + (xy 146.064647 89.276498) + (xy 146.080424 89.274621) + (xy 146.084711 89.272717) + (xy 146.169628 89.234999) + (xy 146.169629 89.234998) + (xy 146.1749 89.232657) + (xy 146.247935 89.159494) + (xy 146.273317 89.102081) + (xy 146.287835 89.069244) + (xy 146.287836 89.069241) + (xy 146.289735 89.064945) + (xy 146.290279 89.060278) + (xy 146.29028 89.060275) + (xy 146.292288 89.043046) + (xy 146.2925 89.04123) + (xy 146.2925 87.65877) + (xy 146.292233 87.656521) + (xy 146.291025 87.646375) + (xy 146.289621 87.634576) + (xy 146.278862 87.610354) + (xy 146.249999 87.545372) + (xy 146.249998 87.545371) + (xy 146.247657 87.5401) + (xy 146.233039 87.525507) + (xy 146.189767 87.482311) + (xy 146.174494 87.467065) + (xy 146.118884 87.44248) + (xy 146.093228 87.431137) + (xy 146.06021 87.396524) + (xy 146.056 87.373974) + (xy 146.056 85.990003) + (xy 146.074306 85.945809) + (xy 146.310808 85.709306) + (xy 146.355002 85.691) + (xy 147.426844 85.691) + (xy 147.471038 85.709306) + (xy 147.489344 85.7535) + (xy 147.471038 85.797694) + (xy 147.447398 85.812523) + (xy 147.442562 85.814207) + (xy 147.435571 85.814985) + (xy 147.429608 85.818718) + (xy 147.425675 85.820088) + (xy 147.421905 85.821902) + (xy 147.415041 85.823468) + (xy 147.409535 85.827855) + (xy 147.409536 85.827855) + (xy 147.392229 85.841646) + (xy 147.386446 85.84574) + (xy 147.38329 85.847716) + (xy 147.383284 85.847721) + (xy 147.380289 85.849596) + (xy 147.375076 85.854809) + (xy 147.369832 85.859494) + (xy 147.346891 85.877775) + (xy 147.343833 85.884114) + (xy 147.339442 85.889615) + (xy 147.338908 85.889189) + (xy 147.334532 85.895353) + (xy 147.030513 86.199372) + (xy 147.024439 86.203677) + (xy 147.024895 86.20425) + (xy 147.019387 86.208631) + (xy 147.013042 86.211678) + (xy 147.008646 86.217175) + (xy 146.994582 86.234761) + (xy 146.989965 86.23992) + (xy 146.984716 86.245169) + (xy 146.982531 86.248646) + (xy 146.980943 86.251172) + (xy 146.976838 86.256948) + (xy 146.958617 86.279733) + (xy 146.95704 86.286593) + (xy 146.955222 86.290353) + (xy 146.953844 86.294289) + (xy 146.950098 86.300248) + (xy 146.949307 86.307242) + (xy 146.949307 86.307243) + (xy 146.946821 86.329236) + (xy 146.945629 86.336213) + (xy 146.944 86.343297) + (xy 146.944 86.350671) + (xy 146.943604 86.357692) + (xy 146.940309 86.386838) + (xy 146.94263 86.393483) + (xy 146.943414 86.400477) + (xy 146.942736 86.400553) + (xy 146.944 86.408005) + (xy 146.944 87.373903) + (xy 146.925694 87.418097) + (xy 146.906871 87.431022) + (xy 146.830372 87.465001) + (xy 146.830371 87.465002) + (xy 146.8251 87.467343) + (xy 146.821024 87.471426) + (xy 146.793881 87.498617) + (xy 146.752065 87.540506) + (xy 146.732557 87.584631) + (xy 146.712165 87.630756) + (xy 146.712164 87.630759) + (xy 146.710265 87.635055) + (xy 146.709721 87.639722) + (xy 146.70972 87.639725) + (xy 146.708401 87.651038) + (xy 146.7075 87.65877) + (xy 146.7075 89.04123) + (xy 146.710379 89.065424) + (xy 146.712283 89.06971) + (xy 146.712283 89.069711) + (xy 146.749565 89.153645) + (xy 146.752343 89.1599) + (xy 146.756426 89.163976) + (xy 146.767621 89.175151) + (xy 146.825506 89.232935) + (xy 146.843041 89.240687) + (xy 146.915756 89.272835) + (xy 146.915759 89.272836) + (xy 146.920055 89.274735) + (xy 146.924722 89.275279) + (xy 146.924725 89.27528) + (xy 146.936038 89.276599) + (xy 146.94377 89.2775) + (xy 147.32623 89.2775) + (xy 147.32806 89.277282) + (xy 147.328064 89.277282) + (xy 147.334647 89.276498) + (xy 147.350424 89.274621) + (xy 147.354711 89.272717) + (xy 147.439628 89.234999) + (xy 147.439629 89.234998) + (xy 147.4449 89.232657) + (xy 147.517935 89.159494) + (xy 147.543317 89.102081) + (xy 147.557835 89.069244) + (xy 147.557836 89.069241) + (xy 147.559735 89.064945) + (xy 147.560279 89.060278) + (xy 147.56028 89.060275) + (xy 147.562288 89.043046) + (xy 147.5625 89.04123) + (xy 147.5625 87.65877) + (xy 147.562233 87.656521) + (xy 147.561025 87.646375) + (xy 147.559621 87.634576) + (xy 147.548862 87.610354) + (xy 147.519999 87.545372) + (xy 147.519998 87.545371) + (xy 147.517657 87.5401) + (xy 147.503039 87.525507) + (xy 147.459767 87.482311) + (xy 147.444494 87.467065) + (xy 147.388884 87.44248) + (xy 147.363228 87.431137) + (xy 147.33021 87.396524) + (xy 147.326 87.373974) + (xy 147.326 86.470003) + (xy 147.344306 86.425809) + (xy 147.560809 86.209306) + (xy 147.605003 86.191) + (xy 149.144997 86.191) + (xy 149.189191 86.209306) + (xy 149.790694 86.810808) + (xy 149.809 86.855002) + (xy 149.809 93.470881) + (xy 149.790694 93.515075) + (xy 149.7465 93.533381) + (xy 149.711777 93.522847) + (xy 149.654012 93.484249) + (xy 149.647976 93.483048) + (xy 149.647975 93.483048) + (xy 149.597957 93.473099) + (xy 149.597954 93.473099) + (xy 149.594944 93.4725) + (xy 149.405056 93.4725) + (xy 149.402046 93.473099) + (xy 149.402043 93.473099) + (xy 149.352025 93.483048) + (xy 149.352024 93.483048) + (xy 149.345988 93.484249) + (xy 149.279006 93.529006) + (xy 149.234249 93.595988) + (xy 149.233048 93.602024) + (xy 149.233048 93.602025) + (xy 149.223994 93.647546) + (xy 149.2225 93.655056) + (xy 149.2225 95.019944) + (xy 149.223099 95.022954) + (xy 149.223099 95.022957) + (xy 149.231532 95.065353) + (xy 149.234249 95.079012) + (xy 149.279006 95.145994) + (xy 149.284123 95.149413) + (xy 149.288476 95.153766) + (xy 149.286648 95.155594) + (xy 149.307799 95.187248) + (xy 149.309 95.199442) + (xy 149.309 95.830525) + (xy 149.290694 95.874719) + (xy 149.279855 95.88338) + (xy 149.26281 95.894135) + (xy 149.257842 95.896959) + (xy 149.251757 95.900059) + (xy 149.251756 95.90006) + (xy 149.247375 95.902292) + (xy 149.243897 95.90577) + (xy 149.242445 95.906825) + (xy 149.239058 95.90912) + (xy 149.22008 95.921095) + (xy 149.217137 95.924427) + (xy 149.217135 95.924429) + (xy 149.157156 95.992342) + (xy 149.156032 95.993538) + (xy 149.155775 95.993892) + (xy 149.155554 95.994113) + (xy 149.155405 95.994204) + (xy 149.154504 95.995163) + (xy 149.152292 95.997375) + (xy 149.151509 95.996592) + (xy 149.150362 95.997296) + (xy 149.151721 95.998496) + (xy 149.139018 96.012879) + (xy 149.128114 96.036104) + (xy 149.088868 96.119695) + (xy 149.088867 96.119698) + (xy 149.086976 96.123726) + (xy 149.068136 96.244724) + (xy 149.068713 96.249137) + (xy 149.068713 96.249138) + (xy 149.082655 96.355751) + (xy 149.084014 96.366145) + (xy 149.091185 96.382443) + (xy 149.091244 96.382813) + (xy 149.092007 96.384311) + (xy 149.094031 96.38891) + (xy 149.094031 96.388911) + (xy 149.118473 96.444458) + (xy 149.133333 96.47823) + (xy 149.147273 96.494814) + (xy 149.148029 96.495713) + (xy 149.150157 96.498434) + (xy 149.152292 96.502625) + (xy 149.160081 96.510414) + (xy 149.16373 96.514392) + (xy 149.200894 96.558604) + (xy 149.212127 96.571968) + (xy 149.235399 96.587459) + (xy 149.241836 96.592733) + (xy 149.243899 96.594232) + (xy 149.247375 96.597708) + (xy 149.251753 96.599939) + (xy 149.251756 96.599941) + (xy 149.25873 96.603494) + (xy 149.264977 96.607148) + (xy 149.314064 96.639823) + (xy 149.318313 96.641151) + (xy 149.318314 96.641151) + (xy 149.350296 96.651143) + (xy 149.360027 96.655109) + (xy 149.362799 96.656521) + (xy 149.362803 96.656522) + (xy 149.367187 96.658756) + (xy 149.377852 96.660445) + (xy 149.386713 96.66252) + (xy 149.426696 96.675012) + (xy 149.426699 96.675012) + (xy 149.430948 96.67634) + (xy 149.480069 96.677241) + (xy 149.488683 96.677999) + (xy 149.49514 96.679022) + (xy 149.495144 96.679022) + (xy 149.5 96.679791) + (xy 149.506947 96.67869) + (xy 149.517853 96.677933) + (xy 149.553383 96.678584) + (xy 149.613532 96.662185) + (xy 149.62019 96.660755) + (xy 149.622147 96.660445) + (xy 149.632813 96.658756) + (xy 149.637196 96.656522) + (xy 149.641875 96.655002) + (xy 149.641878 96.65501) + (xy 149.646727 96.653136) + (xy 149.671527 96.646375) + (xy 149.680706 96.640739) + (xy 149.713409 96.6315) + (xy 153.783939 96.6315) + (xy 153.810635 96.63754) + (xy 153.814064 96.639823) + (xy 153.818316 96.641151) + (xy 153.818317 96.641152) + (xy 153.850296 96.651143) + (xy 153.860027 96.655109) + (xy 153.862799 96.656521) + (xy 153.862803 96.656522) + (xy 153.867187 96.658756) + (xy 153.877852 96.660445) + (xy 153.886713 96.66252) + (xy 153.926696 96.675012) + (xy 153.926699 96.675012) + (xy 153.930948 96.67634) + (xy 153.980069 96.677241) + (xy 153.988683 96.677999) + (xy 153.99514 96.679022) + (xy 153.995144 96.679022) + (xy 154 96.679791) + (xy 154.006947 96.67869) + (xy 154.017853 96.677933) + (xy 154.053383 96.678584) + (xy 154.113532 96.662185) + (xy 154.12019 96.660755) + (xy 154.122147 96.660445) + (xy 154.132813 96.658756) + (xy 154.137196 96.656522) + (xy 154.141875 96.655002) + (xy 154.141878 96.65501) + (xy 154.146727 96.653136) + (xy 154.171527 96.646375) + (xy 154.180706 96.640739) + (xy 154.213409 96.6315) + (xy 159.783939 96.6315) + (xy 159.810635 96.63754) + (xy 159.814064 96.639823) + (xy 159.818316 96.641151) + (xy 159.818317 96.641152) + (xy 159.850296 96.651143) + (xy 159.860027 96.655109) + (xy 159.862799 96.656521) + (xy 159.862803 96.656522) + (xy 159.867187 96.658756) + (xy 159.877852 96.660445) + (xy 159.886713 96.66252) + (xy 159.926696 96.675012) + (xy 159.926699 96.675012) + (xy 159.930948 96.67634) + (xy 159.980069 96.677241) + (xy 159.988683 96.677999) + (xy 159.99514 96.679022) + (xy 159.995144 96.679022) + (xy 160 96.679791) + (xy 160.006947 96.67869) + (xy 160.017853 96.677933) + (xy 160.053383 96.678584) + (xy 160.113532 96.662185) + (xy 160.12019 96.660755) + (xy 160.122147 96.660445) + (xy 160.132813 96.658756) + (xy 160.137196 96.656522) + (xy 160.141875 96.655002) + (xy 160.141878 96.65501) + (xy 160.146727 96.653136) + (xy 160.171527 96.646375) + (xy 160.180706 96.640739) + (xy 160.213409 96.6315) + (xy 162.283939 96.6315) + (xy 162.310635 96.63754) + (xy 162.314064 96.639823) + (xy 162.318316 96.641151) + (xy 162.318317 96.641152) + (xy 162.350296 96.651143) + (xy 162.360027 96.655109) + (xy 162.362799 96.656521) + (xy 162.362803 96.656522) + (xy 162.367187 96.658756) + (xy 162.377852 96.660445) + (xy 162.386713 96.66252) + (xy 162.426696 96.675012) + (xy 162.426699 96.675012) + (xy 162.430948 96.67634) + (xy 162.480069 96.677241) + (xy 162.488683 96.677999) + (xy 162.49514 96.679022) + (xy 162.495144 96.679022) + (xy 162.5 96.679791) + (xy 162.506947 96.67869) + (xy 162.517853 96.677933) + (xy 162.553383 96.678584) + (xy 162.613532 96.662185) + (xy 162.62019 96.660755) + (xy 162.622147 96.660445) + (xy 162.632813 96.658756) + (xy 162.637196 96.656522) + (xy 162.641875 96.655002) + (xy 162.641878 96.65501) + (xy 162.646727 96.653136) + (xy 162.671527 96.646375) + (xy 162.680706 96.640739) + (xy 162.713409 96.6315) + (xy 166.783939 96.6315) + (xy 166.810635 96.63754) + (xy 166.814064 96.639823) + (xy 166.818316 96.641151) + (xy 166.818317 96.641152) + (xy 166.850296 96.651143) + (xy 166.860027 96.655109) + (xy 166.862799 96.656521) + (xy 166.862803 96.656522) + (xy 166.867187 96.658756) + (xy 166.877852 96.660445) + (xy 166.886713 96.66252) + (xy 166.926696 96.675012) + (xy 166.926699 96.675012) + (xy 166.930948 96.67634) + (xy 166.980069 96.677241) + (xy 166.988683 96.677999) + (xy 166.99514 96.679022) + (xy 166.995144 96.679022) + (xy 167 96.679791) + (xy 167.006947 96.67869) + (xy 167.017853 96.677933) + (xy 167.053383 96.678584) + (xy 167.113532 96.662185) + (xy 167.12019 96.660755) + (xy 167.122147 96.660445) + (xy 167.132813 96.658756) + (xy 167.137196 96.656522) + (xy 167.141875 96.655002) + (xy 167.141878 96.65501) + (xy 167.146727 96.653136) + (xy 167.171527 96.646375) + (xy 167.180034 96.641152) + (xy 167.239709 96.604511) + (xy 167.244037 96.602085) + (xy 167.24824 96.599944) + (xy 167.248248 96.599938) + (xy 167.252625 96.597708) + (xy 167.255427 96.594906) + (xy 167.256264 96.594346) + (xy 167.258891 96.592733) + (xy 167.275881 96.582301) + (xy 167.358058 96.491513) + (xy 167.365454 96.476248) + (xy 167.401198 96.444458) + (xy 167.4217 96.441) + (xy 168.045881 96.441) + (xy 168.090075 96.459306) + (xy 168.108381 96.5035) + (xy 168.097847 96.538223) + (xy 168.059249 96.595988) + (xy 168.058048 96.602024) + (xy 168.058048 96.602025) + (xy 168.048746 96.648793) + (xy 168.0475 96.655056) + (xy 168.0475 96.844944) + (xy 168.048099 96.847954) + (xy 168.048099 96.847957) + (xy 168.057954 96.8975) + (xy 168.059249 96.904012) + (xy 168.100186 96.965278) + (xy 168.109518 97.012193) + (xy 168.100187 97.034721) + (xy 168.059249 97.095988) + (xy 168.058048 97.102024) + (xy 168.058048 97.102025) + (xy 168.048582 97.149618) + (xy 168.0475 97.155056) + (xy 168.0475 97.344944) + (xy 168.048099 97.347954) + (xy 168.048099 97.347957) + (xy 168.05712 97.393309) + (xy 168.059249 97.404012) + (xy 168.100186 97.465278) + (xy 168.109518 97.512193) + (xy 168.100187 97.534721) + (xy 168.059249 97.595988) + (xy 168.058048 97.602024) + (xy 168.058048 97.602025) + (xy 168.048494 97.65006) + (xy 168.0475 97.655056) + (xy 168.0475 97.844944) + (xy 168.048099 97.847954) + (xy 168.048099 97.847957) + (xy 168.056976 97.892586) + (xy 168.059249 97.904012) + (xy 168.100186 97.965278) + (xy 168.109518 98.012193) + (xy 168.100187 98.034721) + (xy 168.059249 98.095988) + (xy 168.058048 98.102024) + (xy 168.058048 98.102025) + (xy 168.048994 98.147546) + (xy 168.0475 98.155056) + (xy 168.0475 98.344944) + (xy 168.048099 98.347954) + (xy 168.048099 98.347957) + (xy 168.056691 98.391151) + (xy 168.059249 98.404012) + (xy 168.100186 98.465278) + (xy 168.109518 98.512193) + (xy 168.100187 98.534721) + (xy 168.059249 98.595988) + (xy 168.058048 98.602024) + (xy 168.058048 98.602025) + (xy 168.048937 98.647833) + (xy 168.0475 98.655056) + (xy 168.0475 98.844944) + (xy 168.048099 98.847954) + (xy 168.048099 98.847957) + (xy 168.058007 98.897767) + (xy 168.059249 98.904012) + (xy 168.096197 98.959306) + (xy 168.097847 98.961776) + (xy 168.10718 99.008692) + (xy 168.080605 99.048466) + (xy 168.045881 99.059) + (xy 167.423049 99.059) + (xy 167.378855 99.040694) + (xy 167.366156 99.022373) + (xy 167.365695 99.02136) + (xy 167.365693 99.021357) + (xy 167.363852 99.017307) + (xy 167.349199 99.000302) + (xy 167.347708 98.997375) + (xy 167.3419 98.991567) + (xy 167.338746 98.98817) + (xy 167.286826 98.927914) + (xy 167.283918 98.924539) + (xy 167.263741 98.911461) + (xy 167.260155 98.908559) + (xy 167.260081 98.908661) + (xy 167.256106 98.905773) + (xy 167.252625 98.902292) + (xy 167.241343 98.896543) + (xy 167.235736 98.893309) + (xy 167.235399 98.89309) + (xy 167.20708 98.874735) + (xy 167.184893 98.860354) + (xy 167.18489 98.860353) + (xy 167.18116 98.857935) + (xy 167.176901 98.856661) + (xy 167.176898 98.85666) + (xy 167.155275 98.850194) + (xy 167.148839 98.848269) + (xy 167.138377 98.844079) + (xy 167.132813 98.841244) + (xy 167.121067 98.839384) + (xy 167.112951 98.837536) + (xy 167.094781 98.832102) + (xy 167.063838 98.822848) + (xy 167.019496 98.822577) + (xy 167.010103 98.821809) + (xy 167.004857 98.820978) + (xy 167.004856 98.820978) + (xy 167 98.820209) + (xy 166.991373 98.821576) + (xy 166.98122 98.822344) + (xy 166.962836 98.822231) + (xy 166.945838 98.822127) + (xy 166.945836 98.822127) + (xy 166.941385 98.8221) + (xy 166.887011 98.837641) + (xy 166.879623 98.839275) + (xy 166.867187 98.841244) + (xy 166.862804 98.843477) + (xy 166.86187 98.843781) + (xy 166.852155 98.847603) + (xy 166.827929 98.854526) + (xy 166.827927 98.854527) + (xy 166.823644 98.855751) + (xy 166.819875 98.858129) + (xy 166.815624 98.860811) + (xy 166.76352 98.893687) + (xy 166.762819 98.894129) + (xy 166.757842 98.896959) + (xy 166.751757 98.900059) + (xy 166.751756 98.90006) + (xy 166.747375 98.902292) + (xy 166.743897 98.90577) + (xy 166.742445 98.906825) + (xy 166.739058 98.90912) + (xy 166.72008 98.921095) + (xy 166.717137 98.924427) + (xy 166.717135 98.924429) + (xy 166.657156 98.992342) + (xy 166.656032 98.993538) + (xy 166.655775 98.993892) + (xy 166.655554 98.994113) + (xy 166.655405 98.994204) + (xy 166.654504 98.995163) + (xy 166.652292 98.997375) + (xy 166.651509 98.996592) + (xy 166.650362 98.997296) + (xy 166.651721 98.998496) + (xy 166.642476 99.008964) + (xy 166.639018 99.012879) + (xy 166.630798 99.030388) + (xy 166.588868 99.119695) + (xy 166.588867 99.119698) + (xy 166.586976 99.123726) + (xy 166.568136 99.244724) + (xy 166.568713 99.249137) + (xy 166.568713 99.249138) + (xy 166.583436 99.361726) + (xy 166.584014 99.366145) + (xy 166.591185 99.382443) + (xy 166.591244 99.382813) + (xy 166.592007 99.384311) + (xy 166.594031 99.38891) + (xy 166.594031 99.388911) + (xy 166.62992 99.470473) + (xy 166.633333 99.47823) + (xy 166.647014 99.494506) + (xy 166.648029 99.495713) + (xy 166.650157 99.498434) + (xy 166.652292 99.502625) + (xy 166.660081 99.510414) + (xy 166.66373 99.514392) + (xy 166.70807 99.567141) + (xy 166.712127 99.571968) + (xy 166.735399 99.587459) + (xy 166.741836 99.592733) + (xy 166.743899 99.594232) + (xy 166.747375 99.597708) + (xy 166.751753 99.599939) + (xy 166.751756 99.599941) + (xy 166.75873 99.603494) + (xy 166.764977 99.607148) + (xy 166.814064 99.639823) + (xy 166.818313 99.641151) + (xy 166.818314 99.641151) + (xy 166.850296 99.651143) + (xy 166.860027 99.655109) + (xy 166.862799 99.656521) + (xy 166.862803 99.656522) + (xy 166.867187 99.658756) + (xy 166.877852 99.660445) + (xy 166.886713 99.66252) + (xy 166.926696 99.675012) + (xy 166.926699 99.675012) + (xy 166.930948 99.67634) + (xy 166.980069 99.677241) + (xy 166.988683 99.677999) + (xy 166.99514 99.679022) + (xy 166.995144 99.679022) + (xy 167 99.679791) + (xy 167.006947 99.67869) + (xy 167.017853 99.677933) + (xy 167.053383 99.678584) + (xy 167.113532 99.662185) + (xy 167.12019 99.660755) + (xy 167.122147 99.660445) + (xy 167.132813 99.658756) + (xy 167.137196 99.656522) + (xy 167.141875 99.655002) + (xy 167.141878 99.65501) + (xy 167.146727 99.653136) + (xy 167.171527 99.646375) + (xy 167.239709 99.604511) + (xy 167.244037 99.602085) + (xy 167.24824 99.599944) + (xy 167.248248 99.599938) + (xy 167.252625 99.597708) + (xy 167.255427 99.594906) + (xy 167.256264 99.594346) + (xy 167.261606 99.591066) + (xy 167.275881 99.582301) + (xy 167.358058 99.491513) + (xy 167.365454 99.476248) + (xy 167.401198 99.444458) + (xy 167.4217 99.441) + (xy 168.046482 99.441) + (xy 168.090676 99.459306) + (xy 168.108982 99.5035) + (xy 168.098449 99.538223) + (xy 168.063141 99.591067) + (xy 168.05852 99.602221) + (xy 168.048599 99.652096) + (xy 168.048 99.658177) + (xy 168.048 99.674069) + (xy 168.051641 99.682859) + (xy 168.060431 99.6865) + (xy 169.764568 99.6865) + (xy 169.773358 99.682859) + (xy 169.776999 99.674069) + (xy 169.776999 99.658179) + (xy 169.7764 99.652094) + (xy 169.76648 99.602224) + (xy 169.761858 99.591066) + (xy 169.724513 99.535173) + (xy 169.715181 99.488256) + (xy 169.724514 99.465726) + (xy 169.744043 99.4365) + (xy 169.765751 99.404012) + (xy 169.768914 99.388112) + (xy 169.776901 99.347957) + (xy 169.776901 99.347954) + (xy 169.7775 99.344944) + (xy 169.7775 99.155056) + (xy 169.776507 99.15006) + (xy 169.766952 99.102025) + (xy 169.766952 99.102024) + (xy 169.765751 99.095988) + (xy 169.727153 99.038223) + (xy 169.71782 98.991308) + (xy 169.744395 98.951534) + (xy 169.779119 98.941) + (xy 170.220848 98.941) + (xy 170.228187 98.94225) + (xy 170.22827 98.941523) + (xy 170.235261 98.94232) + (xy 170.241902 98.944652) + (xy 170.248895 98.943874) + (xy 170.248896 98.943874) + (xy 170.271277 98.941383) + (xy 170.27819 98.941) + (xy 170.285613 98.941) + (xy 170.292545 98.939419) + (xy 170.299498 98.938243) + (xy 170.328509 98.935014) + (xy 170.334473 98.931281) + (xy 170.338421 98.929906) + (xy 170.34218 98.928097) + (xy 170.349039 98.926532) + (xy 170.35458 98.922117) + (xy 170.371853 98.908352) + (xy 170.377639 98.904256) + (xy 170.380795 98.90228) + (xy 170.380797 98.902279) + (xy 170.383791 98.900404) + (xy 170.389004 98.895191) + (xy 170.394248 98.890506) + (xy 170.411684 98.876612) + (xy 170.411684 98.876611) + (xy 170.417189 98.872225) + (xy 170.420247 98.865886) + (xy 170.424638 98.860385) + (xy 170.425172 98.860811) + (xy 170.429548 98.854647) + (xy 171.310809 97.973386) + (xy 171.355003 97.95508) + (xy 172.123918 97.95508) + (xy 172.168112 97.973386) + (xy 172.186418 98.01758) + (xy 172.168112 98.061774) + (xy 171.174598 99.055287) + (xy 170.189191 100.040694) + (xy 170.144997 100.059) + (xy 169.778518 100.059) + (xy 169.734324 100.040694) + (xy 169.716018 99.9965) + (xy 169.726551 99.961777) + (xy 169.761859 99.908933) + (xy 169.76648 99.897779) + (xy 169.776401 99.847904) + (xy 169.777 99.841823) + (xy 169.777 99.825931) + (xy 169.773359 99.817141) + (xy 169.764569 99.8135) + (xy 168.060432 99.8135) + (xy 168.051642 99.817141) + (xy 168.048001 99.825931) + (xy 168.048001 99.841821) + (xy 168.0486 99.847906) + (xy 168.05852 99.897776) + (xy 168.063142 99.908934) + (xy 168.100487 99.964827) + (xy 168.109819 100.011744) + (xy 168.100486 100.034274) + (xy 168.059249 100.095988) + (xy 168.058048 100.102024) + (xy 168.058048 100.102025) + (xy 168.052857 100.128126) + (xy 168.0475 100.155056) + (xy 168.0475 100.344944) + (xy 168.048099 100.347954) + (xy 168.048099 100.347957) + (xy 168.056086 100.388112) + (xy 168.059249 100.404012) + (xy 168.100186 100.465278) + (xy 168.109518 100.512193) + (xy 168.100187 100.534721) + (xy 168.059249 100.595988) + (xy 168.058048 100.602024) + (xy 168.058048 100.602025) + (xy 168.048543 100.649814) + (xy 168.0475 100.655056) + (xy 168.0475 100.844944) + (xy 168.048099 100.847954) + (xy 168.048099 100.847957) + (xy 168.056905 100.892227) + (xy 168.059249 100.904012) + (xy 168.100186 100.965278) + (xy 168.109518 101.012193) + (xy 168.100187 101.034721) + (xy 168.059249 101.095988) + (xy 168.058048 101.102024) + (xy 168.058048 101.102025) + (xy 168.056563 101.109494) + (xy 168.0475 101.155056) + (xy 168.0475 101.344944) + (xy 168.048099 101.347954) + (xy 168.048099 101.347957) + (xy 168.056976 101.392586) + (xy 168.059249 101.404012) + (xy 168.100186 101.465278) + (xy 168.109518 101.512193) + (xy 168.100187 101.534721) + (xy 168.059249 101.595988) + (xy 168.058048 101.602024) + (xy 168.058048 101.602025) + (xy 168.050516 101.639895) + (xy 168.0475 101.655056) + (xy 168.0475 101.844944) + (xy 168.048099 101.847954) + (xy 168.048099 101.847957) + (xy 168.058009 101.897779) + (xy 168.059249 101.904012) + (xy 168.100186 101.965278) + (xy 168.109518 102.012193) + (xy 168.100187 102.034721) + (xy 168.059249 102.095988) + (xy 168.058048 102.102024) + (xy 168.058048 102.102025) + (xy 168.052857 102.128126) + (xy 168.0475 102.155056) + (xy 168.0475 102.344944) + (xy 168.048099 102.347954) + (xy 168.048099 102.347957) + (xy 168.058009 102.397779) + (xy 168.059249 102.404012) + (xy 168.100186 102.465278) + (xy 168.109518 102.512193) + (xy 168.100187 102.534721) + (xy 168.059249 102.595988) + (xy 168.058048 102.602024) + (xy 168.058048 102.602025) + (xy 168.048494 102.65006) + (xy 168.0475 102.655056) + (xy 168.0475 102.844944) + (xy 168.059249 102.904012) + (xy 168.100186 102.965278) + (xy 168.109518 103.012193) + (xy 168.100187 103.034721) + (xy 168.059249 103.095988) + (xy 168.058048 103.102024) + (xy 168.058048 103.102025) + (xy 168.051588 103.134506) + (xy 168.0475 103.155056) + (xy 168.0475 103.344944) + (xy 168.048099 103.347954) + (xy 168.048099 103.347957) + (xy 168.058009 103.397779) + (xy 168.059249 103.404012) + (xy 168.100186 103.465278) + (xy 168.109518 103.512193) + (xy 168.100187 103.534721) + (xy 168.059249 103.595988) + (xy 168.058048 103.602024) + (xy 168.058048 103.602025) + (xy 168.048494 103.65006) + (xy 168.0475 103.655056) + (xy 168.0475 103.844944) + (xy 168.048099 103.847954) + (xy 168.048099 103.847957) + (xy 168.058009 103.897779) + (xy 168.059249 103.904012) + (xy 168.100186 103.965278) + (xy 168.109518 104.012193) + (xy 168.100187 104.034721) + (xy 168.059249 104.095988) + (xy 168.058048 104.102024) + (xy 168.058048 104.102025) + (xy 168.048994 104.147546) + (xy 168.0475 104.155056) + (xy 168.0475 104.344944) + (xy 168.048099 104.347954) + (xy 168.048099 104.347957) + (xy 168.057283 104.394129) + (xy 168.059249 104.404012) + (xy 168.100186 104.465278) + (xy 168.109518 104.512193) + (xy 168.100187 104.534721) + (xy 168.059249 104.595988) + (xy 168.058048 104.602024) + (xy 168.058048 104.602025) + (xy 168.050656 104.639191) + (xy 168.0475 104.655056) + (xy 168.0475 104.844944) + (xy 168.048099 104.847954) + (xy 168.048099 104.847957) + (xy 168.058009 104.897779) + (xy 168.059249 104.904012) + (xy 168.09031 104.950497) + (xy 168.100486 104.965726) + (xy 168.109819 105.012642) + (xy 168.100487 105.035173) + (xy 168.063141 105.091067) + (xy 168.05852 105.102221) + (xy 168.048599 105.152096) + (xy 168.048 105.158177) + (xy 168.048 105.174069) + (xy 168.051641 105.182859) + (xy 168.060431 105.1865) + (xy 169.764568 105.1865) + (xy 169.773358 105.182859) + (xy 169.776999 105.174069) + (xy 169.776999 105.158179) + (xy 169.7764 105.152094) + (xy 169.76648 105.102224) + (xy 169.761858 105.091066) + (xy 169.726551 105.038223) + (xy 169.717219 104.991306) + (xy 169.743795 104.951533) + (xy 169.778518 104.941) + (xy 170.206768 104.941) + (xy 170.214107 104.94225) + (xy 170.21419 104.941523) + (xy 170.221181 104.94232) + (xy 170.227822 104.944652) + (xy 170.234815 104.943874) + (xy 170.234816 104.943874) + (xy 170.257197 104.941383) + (xy 170.26411 104.941) + (xy 170.271533 104.941) + (xy 170.278465 104.939419) + (xy 170.285418 104.938243) + (xy 170.314429 104.935014) + (xy 170.320393 104.931281) + (xy 170.324341 104.929906) + (xy 170.3281 104.928097) + (xy 170.334959 104.926532) + (xy 170.357774 104.908351) + (xy 170.363559 104.904256) + (xy 170.366715 104.90228) + (xy 170.366717 104.902279) + (xy 170.369711 104.900404) + (xy 170.374924 104.895191) + (xy 170.380168 104.890506) + (xy 170.397604 104.876612) + (xy 170.397604 104.876611) + (xy 170.403109 104.872225) + (xy 170.406167 104.865886) + (xy 170.410558 104.860385) + (xy 170.411092 104.860811) + (xy 170.415468 104.854647) + (xy 174.761529 100.508586) + (xy 174.805723 100.49028) + (xy 178.844277 100.49028) + (xy 178.888471 100.508586) + (xy 179.440694 101.060809) + (xy 179.459 101.105003) + (xy 179.459 101.306176) + (xy 179.440694 101.35037) + (xy 179.408104 101.365799) + (xy 179.408442 101.3675) + (xy 179.377287 101.373697) + (xy 179.377285 101.373698) + (xy 179.371252 101.374898) + (xy 179.329078 101.403078) + (xy 179.325659 101.408195) + (xy 179.301967 101.443652) + (xy 179.262193 101.470228) + (xy 179.215277 101.460896) + (xy 179.198033 101.443652) + (xy 179.174341 101.408195) + (xy 179.170922 101.403078) + (xy 179.128748 101.374898) + (xy 179.122715 101.373698) + (xy 179.122713 101.373697) + (xy 179.094569 101.368099) + (xy 179.091558 101.3675) + (xy 178.608442 101.3675) + (xy 178.605431 101.368099) + (xy 178.577287 101.373697) + (xy 178.577285 101.373698) + (xy 178.571252 101.374898) + (xy 178.529078 101.403078) + (xy 178.525659 101.408195) + (xy 178.501967 101.443652) + (xy 178.462193 101.470228) + (xy 178.415277 101.460896) + (xy 178.398033 101.443652) + (xy 178.374341 101.408195) + (xy 178.370922 101.403078) + (xy 178.328748 101.374898) + (xy 178.322715 101.373698) + (xy 178.322713 101.373697) + (xy 178.294569 101.368099) + (xy 178.291558 101.3675) + (xy 177.808442 101.3675) + (xy 177.805431 101.368099) + (xy 177.777287 101.373697) + (xy 177.777285 101.373698) + (xy 177.771252 101.374898) + (xy 177.729078 101.403078) + (xy 177.725659 101.408195) + (xy 177.701967 101.443652) + (xy 177.662193 101.470228) + (xy 177.615277 101.460896) + (xy 177.598033 101.443652) + (xy 177.574341 101.408195) + (xy 177.570922 101.403078) + (xy 177.528748 101.374898) + (xy 177.522715 101.373698) + (xy 177.522713 101.373697) + (xy 177.494569 101.368099) + (xy 177.491558 101.3675) + (xy 177.008442 101.3675) + (xy 177.005431 101.368099) + (xy 176.977287 101.373697) + (xy 176.977285 101.373698) + (xy 176.971252 101.374898) + (xy 176.929078 101.403078) + (xy 176.925659 101.408195) + (xy 176.901967 101.443652) + (xy 176.862193 101.470228) + (xy 176.815277 101.460896) + (xy 176.798033 101.443652) + (xy 176.774341 101.408195) + (xy 176.770922 101.403078) + (xy 176.728748 101.374898) + (xy 176.722715 101.373698) + (xy 176.722713 101.373697) + (xy 176.694569 101.368099) + (xy 176.691558 101.3675) + (xy 176.208442 101.3675) + (xy 176.205431 101.368099) + (xy 176.177287 101.373697) + (xy 176.177285 101.373698) + (xy 176.171252 101.374898) + (xy 176.129078 101.403078) + (xy 176.125659 101.408195) + (xy 176.101967 101.443652) + (xy 176.062193 101.470228) + (xy 176.015277 101.460896) + (xy 175.998033 101.443652) + (xy 175.974341 101.408195) + (xy 175.970922 101.403078) + (xy 175.928748 101.374898) + (xy 175.922715 101.373698) + (xy 175.922713 101.373697) + (xy 175.894569 101.368099) + (xy 175.891558 101.3675) + (xy 175.408442 101.3675) + (xy 175.405431 101.368099) + (xy 175.377287 101.373697) + (xy 175.377285 101.373698) + (xy 175.371252 101.374898) + (xy 175.329078 101.403078) + (xy 175.325659 101.408195) + (xy 175.301967 101.443652) + (xy 175.262193 101.470228) + (xy 175.215277 101.460896) + (xy 175.198033 101.443652) + (xy 175.174341 101.408195) + (xy 175.170922 101.403078) + (xy 175.128748 101.374898) + (xy 175.122715 101.373698) + (xy 175.122713 101.373697) + (xy 175.094569 101.368099) + (xy 175.091558 101.3675) + (xy 174.608442 101.3675) + (xy 174.605431 101.368099) + (xy 174.577287 101.373697) + (xy 174.577285 101.373698) + (xy 174.571252 101.374898) + (xy 174.529078 101.403078) + (xy 174.500898 101.445252) + (xy 174.499698 101.451285) + (xy 174.499697 101.451287) + (xy 174.497611 101.461776) + (xy 174.4935 101.482442) + (xy 174.4935 103.017558) + (xy 174.494099 103.020569) + (xy 174.497697 103.038655) + (xy 174.500898 103.054748) + (xy 174.529078 103.096922) + (xy 174.571252 103.125102) + (xy 174.577285 103.126302) + (xy 174.577287 103.126303) + (xy 174.608442 103.1325) + (xy 174.608043 103.134506) + (xy 174.644841 103.154209) + (xy 174.659 103.193824) + (xy 174.659 103.580525) + (xy 174.640694 103.624719) + (xy 174.629855 103.63338) + (xy 174.61281 103.644135) + (xy 174.607842 103.646959) + (xy 174.601757 103.650059) + (xy 174.601756 103.65006) + (xy 174.597375 103.652292) + (xy 174.593897 103.65577) + (xy 174.592445 103.656825) + (xy 174.589058 103.65912) + (xy 174.57008 103.671095) + (xy 174.567137 103.674427) + (xy 174.567135 103.674429) + (xy 174.507156 103.742342) + (xy 174.506032 103.743538) + (xy 174.505775 103.743892) + (xy 174.505554 103.744113) + (xy 174.505405 103.744204) + (xy 174.504504 103.745163) + (xy 174.502292 103.747375) + (xy 174.501509 103.746592) + (xy 174.500362 103.747296) + (xy 174.501721 103.748496) + (xy 174.489018 103.762879) + (xy 174.487127 103.766907) + (xy 174.438868 103.869695) + (xy 174.438867 103.869698) + (xy 174.436976 103.873726) + (xy 174.418136 103.994724) + (xy 174.418713 103.999137) + (xy 174.418713 103.999138) + (xy 174.432575 104.105139) + (xy 174.434014 104.116145) + (xy 174.441185 104.132443) + (xy 174.441244 104.132813) + (xy 174.442007 104.134311) + (xy 174.444031 104.13891) + (xy 174.444031 104.138911) + (xy 174.461681 104.179022) + (xy 174.483333 104.22823) + (xy 174.497272 104.244813) + (xy 174.498029 104.245713) + (xy 174.500157 104.248434) + (xy 174.502292 104.252625) + (xy 174.510081 104.260414) + (xy 174.513729 104.264391) + (xy 174.562127 104.321968) + (xy 174.585399 104.337459) + (xy 174.591836 104.342733) + (xy 174.593899 104.344232) + (xy 174.597375 104.347708) + (xy 174.601753 104.349939) + (xy 174.601756 104.349941) + (xy 174.60873 104.353494) + (xy 174.614977 104.357148) + (xy 174.664064 104.389823) + (xy 174.668313 104.391151) + (xy 174.668314 104.391151) + (xy 174.700296 104.401143) + (xy 174.710027 104.405109) + (xy 174.712799 104.406521) + (xy 174.712803 104.406522) + (xy 174.717187 104.408756) + (xy 174.727852 104.410445) + (xy 174.736713 104.41252) + (xy 174.776696 104.425012) + (xy 174.776699 104.425012) + (xy 174.780948 104.42634) + (xy 174.830069 104.427241) + (xy 174.838683 104.427999) + (xy 174.84514 104.429022) + (xy 174.845144 104.429022) + (xy 174.85 104.429791) + (xy 174.856947 104.42869) + (xy 174.867853 104.427933) + (xy 174.903383 104.428584) + (xy 174.963532 104.412185) + (xy 174.97019 104.410755) + (xy 174.972147 104.410445) + (xy 174.982813 104.408756) + (xy 174.987196 104.406522) + (xy 174.991875 104.405002) + (xy 174.991878 104.40501) + (xy 174.996727 104.403136) + (xy 175.021527 104.396375) + (xy 175.026521 104.393309) + (xy 175.089709 104.354511) + (xy 175.094037 104.352085) + (xy 175.09824 104.349944) + (xy 175.098248 104.349938) + (xy 175.102625 104.347708) + (xy 175.105427 104.344906) + (xy 175.106264 104.344346) + (xy 175.108891 104.342733) + (xy 175.125881 104.332301) + (xy 175.208058 104.241513) + (xy 175.261451 104.131311) + (xy 175.263317 104.120224) + (xy 175.275388 104.048467) + (xy 175.281767 104.010552) + (xy 175.281896 104) + (xy 175.264536 103.878781) + (xy 175.213852 103.767307) + (xy 175.199199 103.750302) + (xy 175.197708 103.747375) + (xy 175.1919 103.741567) + (xy 175.188746 103.73817) + (xy 175.136826 103.677914) + (xy 175.133918 103.674539) + (xy 175.113741 103.661461) + (xy 175.110155 103.658559) + (xy 175.110081 103.658661) + (xy 175.106106 103.655773) + (xy 175.102625 103.652292) + (xy 175.091343 103.646543) + (xy 175.085735 103.643308) + (xy 175.069505 103.632788) + (xy 175.042377 103.593389) + (xy 175.041 103.580342) + (xy 175.041 103.193824) + (xy 175.059306 103.14963) + (xy 175.091896 103.134201) + (xy 175.091558 103.1325) + (xy 175.094569 103.131901) + (xy 175.122713 103.126303) + (xy 175.122715 103.126302) + (xy 175.128748 103.125102) + (xy 175.170922 103.096922) + (xy 175.198033 103.056348) + (xy 175.237807 103.029772) + (xy 175.284723 103.039104) + (xy 175.301967 103.056348) + (xy 175.329078 103.096922) + (xy 175.371252 103.125102) + (xy 175.377285 103.126302) + (xy 175.377287 103.126303) + (xy 175.408442 103.1325) + (xy 175.408043 103.134506) + (xy 175.444841 103.154209) + (xy 175.459 103.193824) + (xy 175.459 105.494997) + (xy 175.440694 105.539191) + (xy 173.953271 107.026614) + (xy 173.909077 107.04492) + (xy 171.840923 107.04492) + (xy 171.796729 107.026614) + (xy 170.415628 105.645513) + (xy 170.411323 105.639439) + (xy 170.41075 105.639895) + (xy 170.406369 105.634387) + (xy 170.403322 105.628042) + (xy 170.387368 105.615283) + (xy 170.380239 105.609582) + (xy 170.37508 105.604965) + (xy 170.369831 105.599716) + (xy 170.363828 105.595943) + (xy 170.358052 105.591838) + (xy 170.335267 105.573617) + (xy 170.328407 105.57204) + (xy 170.324647 105.570222) + (xy 170.320711 105.568844) + (xy 170.314752 105.565098) + (xy 170.307758 105.564307) + (xy 170.307757 105.564307) + (xy 170.285764 105.561821) + (xy 170.278787 105.560629) + (xy 170.271703 105.559) + (xy 170.264329 105.559) + (xy 170.257308 105.558604) + (xy 170.255627 105.558414) + (xy 170.228162 105.555309) + (xy 170.221517 105.55763) + (xy 170.214523 105.558414) + (xy 170.214447 105.557736) + (xy 170.206995 105.559) + (xy 169.778518 105.559) + (xy 169.734324 105.540694) + (xy 169.716018 105.4965) + (xy 169.726551 105.461777) + (xy 169.761859 105.408933) + (xy 169.76648 105.397779) + (xy 169.776401 105.347904) + (xy 169.777 105.341823) + (xy 169.777 105.325931) + (xy 169.773359 105.317141) + (xy 169.764569 105.3135) + (xy 168.060432 105.3135) + (xy 168.051642 105.317141) + (xy 168.048001 105.325931) + (xy 168.048001 105.341821) + (xy 168.0486 105.347906) + (xy 168.05852 105.397776) + (xy 168.063142 105.408934) + (xy 168.100487 105.464827) + (xy 168.109819 105.511744) + (xy 168.100486 105.534274) + (xy 168.059249 105.595988) + (xy 168.058048 105.602024) + (xy 168.058048 105.602025) + (xy 168.048994 105.647546) + (xy 168.0475 105.655056) + (xy 168.0475 105.844944) + (xy 168.048099 105.847954) + (xy 168.048099 105.847957) + (xy 168.054959 105.882443) + (xy 168.059249 105.904012) + (xy 168.097093 105.960647) + (xy 168.097847 105.961776) + (xy 168.10718 106.008692) + (xy 168.080605 106.048466) + (xy 168.045881 106.059) + (xy 167.423049 106.059) + (xy 167.378855 106.040694) + (xy 167.366156 106.022373) + (xy 167.365695 106.02136) + (xy 167.365693 106.021357) + (xy 167.363852 106.017307) + (xy 167.349199 106.000302) + (xy 167.347708 105.997375) + (xy 167.3419 105.991567) + (xy 167.338746 105.98817) + (xy 167.307178 105.951534) + (xy 167.283918 105.924539) + (xy 167.263741 105.911461) + (xy 167.260155 105.908559) + (xy 167.260081 105.908661) + (xy 167.256106 105.905773) + (xy 167.252625 105.902292) + (xy 167.241343 105.896543) + (xy 167.235736 105.893309) + (xy 167.235735 105.893308) + (xy 167.193827 105.866145) + (xy 167.184893 105.860354) + (xy 167.18489 105.860353) + (xy 167.18116 105.857935) + (xy 167.176901 105.856661) + (xy 167.176898 105.85666) + (xy 167.158345 105.851112) + (xy 167.148839 105.848269) + (xy 167.138377 105.844079) + (xy 167.132813 105.841244) + (xy 167.121067 105.839384) + (xy 167.112951 105.837536) + (xy 167.088896 105.830342) + (xy 167.063838 105.822848) + (xy 167.019496 105.822577) + (xy 167.010103 105.821809) + (xy 167.004857 105.820978) + (xy 167.004856 105.820978) + (xy 167 105.820209) + (xy 166.991373 105.821576) + (xy 166.98122 105.822344) + (xy 166.962836 105.822231) + (xy 166.945838 105.822127) + (xy 166.945836 105.822127) + (xy 166.941385 105.8221) + (xy 166.887011 105.837641) + (xy 166.879623 105.839275) + (xy 166.867187 105.841244) + (xy 166.862804 105.843477) + (xy 166.86187 105.843781) + (xy 166.852155 105.847603) + (xy 166.827929 105.854526) + (xy 166.827927 105.854527) + (xy 166.823644 105.855751) + (xy 166.764119 105.893309) + (xy 166.762819 105.894129) + (xy 166.757842 105.896959) + (xy 166.751757 105.900059) + (xy 166.751756 105.90006) + (xy 166.747375 105.902292) + (xy 166.743897 105.90577) + (xy 166.742445 105.906825) + (xy 166.739059 105.90912) + (xy 166.739043 105.90913) + (xy 166.72008 105.921095) + (xy 166.717137 105.924427) + (xy 166.717135 105.924429) + (xy 166.657156 105.992342) + (xy 166.656032 105.993538) + (xy 166.655775 105.993892) + (xy 166.655554 105.994113) + (xy 166.655405 105.994204) + (xy 166.654504 105.995163) + (xy 166.652292 105.997375) + (xy 166.651509 105.996592) + (xy 166.650362 105.997296) + (xy 166.651721 105.998496) + (xy 166.645002 106.006104) + (xy 166.639018 106.012879) + (xy 166.630951 106.030062) + (xy 166.588868 106.119695) + (xy 166.588867 106.119698) + (xy 166.586976 106.123726) + (xy 166.568136 106.244724) + (xy 166.568713 106.249137) + (xy 166.568713 106.249138) + (xy 166.582655 106.355751) + (xy 166.584014 106.366145) + (xy 166.585809 106.370224) + (xy 166.589286 106.378126) + (xy 166.591185 106.382443) + (xy 166.591244 106.382813) + (xy 166.592007 106.384311) + (xy 166.594031 106.38891) + (xy 166.594031 106.388911) + (xy 166.621448 106.451219) + (xy 166.633333 106.47823) + (xy 166.647198 106.494724) + (xy 166.648029 106.495713) + (xy 166.650157 106.498434) + (xy 166.652292 106.502625) + (xy 166.660081 106.510414) + (xy 166.66373 106.514392) + (xy 166.703546 106.561759) + (xy 166.712127 106.571968) + (xy 166.735399 106.587459) + (xy 166.741836 106.592733) + (xy 166.743899 106.594232) + (xy 166.747375 106.597708) + (xy 166.751753 106.599939) + (xy 166.751756 106.599941) + (xy 166.75873 106.603494) + (xy 166.764977 106.607148) + (xy 166.814064 106.639823) + (xy 166.818313 106.641151) + (xy 166.818314 106.641151) + (xy 166.850296 106.651143) + (xy 166.860027 106.655109) + (xy 166.862799 106.656521) + (xy 166.862803 106.656522) + (xy 166.867187 106.658756) + (xy 166.877852 106.660445) + (xy 166.886713 106.66252) + (xy 166.926696 106.675012) + (xy 166.926699 106.675012) + (xy 166.930948 106.67634) + (xy 166.980069 106.677241) + (xy 166.988683 106.677999) + (xy 166.99514 106.679022) + (xy 166.995144 106.679022) + (xy 167 106.679791) + (xy 167.006947 106.67869) + (xy 167.017853 106.677933) + (xy 167.053383 106.678584) + (xy 167.113532 106.662185) + (xy 167.12019 106.660755) + (xy 167.122147 106.660445) + (xy 167.132813 106.658756) + (xy 167.137196 106.656522) + (xy 167.141875 106.655002) + (xy 167.141878 106.65501) + (xy 167.146727 106.653136) + (xy 167.171527 106.646375) + (xy 167.182824 106.639439) + (xy 167.239709 106.604511) + (xy 167.244037 106.602085) + (xy 167.24824 106.599944) + (xy 167.248248 106.599938) + (xy 167.252625 106.597708) + (xy 167.255427 106.594906) + (xy 167.256264 106.594346) + (xy 167.258891 106.592733) + (xy 167.275881 106.582301) + (xy 167.358058 106.491513) + (xy 167.365454 106.476248) + (xy 167.401198 106.444458) + (xy 167.4217 106.441) + (xy 168.045881 106.441) + (xy 168.090075 106.459306) + (xy 168.108381 106.5035) + (xy 168.097847 106.538223) + (xy 168.059249 106.595988) + (xy 168.058048 106.602024) + (xy 168.058048 106.602025) + (xy 168.048261 106.651232) + (xy 168.0475 106.655056) + (xy 168.0475 106.844944) + (xy 168.048099 106.847954) + (xy 168.048099 106.847957) + (xy 168.058009 106.897779) + (xy 168.059249 106.904012) + (xy 168.100186 106.965278) + (xy 168.109518 107.012193) + (xy 168.100187 107.034721) + (xy 168.059249 107.095988) + (xy 168.058048 107.102024) + (xy 168.058048 107.102025) + (xy 168.048994 107.147546) + (xy 168.0475 107.155056) + (xy 168.0475 107.344944) + (xy 168.048099 107.347954) + (xy 168.048099 107.347957) + (xy 168.050518 107.360119) + (xy 168.059249 107.404012) + (xy 168.100186 107.465278) + (xy 168.109518 107.512193) + (xy 168.100187 107.534721) + (xy 168.059249 107.595988) + (xy 168.058048 107.602024) + (xy 168.058048 107.602025) + (xy 168.056563 107.609494) + (xy 168.0475 107.655056) + (xy 168.0475 107.844944) + (xy 168.048099 107.847954) + (xy 168.048099 107.847957) + (xy 168.058007 107.897767) + (xy 168.059249 107.904012) + (xy 168.100186 107.965278) + (xy 168.109518 108.012193) + (xy 168.100187 108.034721) + (xy 168.059249 108.095988) + (xy 168.058048 108.102024) + (xy 168.058048 108.102025) + (xy 168.049501 108.144998) + (xy 168.0475 108.155056) + (xy 168.0475 108.344944) + (xy 168.048099 108.347954) + (xy 168.048099 108.347957) + (xy 168.05676 108.391498) + (xy 168.059249 108.404012) + (xy 168.100186 108.465278) + (xy 168.109518 108.512193) + (xy 168.100187 108.534721) + (xy 168.059249 108.595988) + (xy 168.058048 108.602024) + (xy 168.058048 108.602025) + (xy 168.053158 108.626612) + (xy 168.0475 108.655056) + (xy 168.0475 108.844944) + (xy 168.048099 108.847954) + (xy 168.048099 108.847957) + (xy 168.05157 108.865405) + (xy 168.059249 108.904012) + (xy 168.100186 108.965278) + (xy 168.109518 109.012193) + (xy 168.100187 109.034721) + (xy 168.059249 109.095988) + (xy 168.058048 109.102024) + (xy 168.058048 109.102025) + (xy 168.053976 109.1225) + (xy 168.0475 109.155056) + (xy 168.0475 109.344944) + (xy 168.059249 109.404012) + (xy 168.100186 109.465278) + (xy 168.109518 109.512193) + (xy 168.100187 109.534721) + (xy 168.059249 109.595988) + (xy 168.058048 109.602024) + (xy 168.058048 109.602025) + (xy 168.048821 109.648417) + (xy 168.0475 109.655056) + (xy 168.0475 109.844944) + (xy 168.048099 109.847954) + (xy 168.048099 109.847957) + (xy 168.058034 109.897906) + (xy 168.059249 109.904012) + (xy 168.091002 109.951533) + (xy 168.100486 109.965726) + (xy 168.109819 110.012642) + (xy 168.100487 110.035173) + (xy 168.063141 110.091067) + (xy 168.05852 110.102221) + (xy 168.048599 110.152096) + (xy 168.048 110.158177) + (xy 168.048 110.174069) + (xy 168.051641 110.182859) + (xy 168.060431 110.1865) + (xy 169.764568 110.1865) + (xy 169.773358 110.182859) + (xy 169.776999 110.174069) + (xy 169.776999 110.158179) + (xy 169.7764 110.152094) + (xy 169.76648 110.102224) + (xy 169.761858 110.091066) + (xy 169.726551 110.038223) + (xy 169.717219 109.991306) + (xy 169.743795 109.951533) + (xy 169.778518 109.941) + (xy 170.206768 109.941) + (xy 170.214107 109.94225) + (xy 170.21419 109.941523) + (xy 170.221181 109.94232) + (xy 170.227822 109.944652) + (xy 170.234815 109.943874) + (xy 170.234816 109.943874) + (xy 170.257197 109.941383) + (xy 170.26411 109.941) + (xy 170.271533 109.941) + (xy 170.278465 109.939419) + (xy 170.285418 109.938243) + (xy 170.314429 109.935014) + (xy 170.320393 109.931281) + (xy 170.324341 109.929906) + (xy 170.3281 109.928097) + (xy 170.334959 109.926532) + (xy 170.357774 109.908351) + (xy 170.363559 109.904256) + (xy 170.366715 109.90228) + (xy 170.366717 109.902279) + (xy 170.369711 109.900404) + (xy 170.374923 109.895192) + (xy 170.380167 109.890507) + (xy 170.397604 109.876612) + (xy 170.397604 109.876611) + (xy 170.403109 109.872225) + (xy 170.406167 109.865886) + (xy 170.410558 109.860385) + (xy 170.411092 109.860811) + (xy 170.415468 109.854647) + (xy 170.731502 109.538613) + (xy 171.050248 109.219866) + (xy 171.094442 109.20156) + (xy 171.877437 109.20156) + (xy 171.921631 109.219866) + (xy 171.939937 109.26406) + (xy 171.921631 109.308254) + (xy 170.189191 111.040694) + (xy 170.144997 111.059) + (xy 169.779119 111.059) + (xy 169.734925 111.040694) + (xy 169.716619 110.9965) + (xy 169.727153 110.961776) + (xy 169.728448 110.959839) + (xy 169.765751 110.904012) + (xy 169.768914 110.888112) + (xy 169.776901 110.847957) + (xy 169.776901 110.847954) + (xy 169.7775 110.844944) + (xy 169.7775 110.655056) + (xy 169.776507 110.65006) + (xy 169.766952 110.602025) + (xy 169.766952 110.602024) + (xy 169.765751 110.595988) + (xy 169.724514 110.534274) + (xy 169.715181 110.487358) + (xy 169.724513 110.464827) + (xy 169.761859 110.408933) + (xy 169.76648 110.397779) + (xy 169.776401 110.347904) + (xy 169.777 110.341823) + (xy 169.777 110.325931) + (xy 169.773359 110.317141) + (xy 169.764569 110.3135) + (xy 168.060432 110.3135) + (xy 168.051642 110.317141) + (xy 168.048001 110.325931) + (xy 168.048001 110.341821) + (xy 168.0486 110.347906) + (xy 168.05852 110.397776) + (xy 168.063142 110.408934) + (xy 168.098449 110.461777) + (xy 168.107781 110.508694) + (xy 168.081205 110.548467) + (xy 168.046482 110.559) + (xy 167.423049 110.559) + (xy 167.378855 110.540694) + (xy 167.366156 110.522373) + (xy 167.365695 110.52136) + (xy 167.365693 110.521357) + (xy 167.363852 110.517307) + (xy 167.349199 110.500302) + (xy 167.347708 110.497375) + (xy 167.3419 110.491567) + (xy 167.338746 110.48817) + (xy 167.311743 110.456831) + (xy 167.283918 110.424539) + (xy 167.263741 110.411461) + (xy 167.260155 110.408559) + (xy 167.260081 110.408661) + (xy 167.256106 110.405773) + (xy 167.252625 110.402292) + (xy 167.241343 110.396543) + (xy 167.235736 110.393309) + (xy 167.184893 110.360354) + (xy 167.18489 110.360353) + (xy 167.18116 110.357935) + (xy 167.176901 110.356661) + (xy 167.176898 110.35666) + (xy 167.158345 110.351112) + (xy 167.148839 110.348269) + (xy 167.138377 110.344079) + (xy 167.132813 110.341244) + (xy 167.121067 110.339384) + (xy 167.112951 110.337536) + (xy 167.063838 110.322848) + (xy 167.019496 110.322577) + (xy 167.010103 110.321809) + (xy 167.004857 110.320978) + (xy 167.004856 110.320978) + (xy 167 110.320209) + (xy 166.991373 110.321576) + (xy 166.98122 110.322344) + (xy 166.962836 110.322231) + (xy 166.945838 110.322127) + (xy 166.945836 110.322127) + (xy 166.941385 110.3221) + (xy 166.887011 110.337641) + (xy 166.879623 110.339275) + (xy 166.867187 110.341244) + (xy 166.862804 110.343477) + (xy 166.86187 110.343781) + (xy 166.852156 110.347603) + (xy 166.849821 110.34827) + (xy 166.827929 110.354526) + (xy 166.827927 110.354527) + (xy 166.823644 110.355751) + (xy 166.764119 110.393309) + (xy 166.762819 110.394129) + (xy 166.757842 110.396959) + (xy 166.751757 110.400059) + (xy 166.751756 110.40006) + (xy 166.747375 110.402292) + (xy 166.743897 110.40577) + (xy 166.742445 110.406825) + (xy 166.739058 110.40912) + (xy 166.72008 110.421095) + (xy 166.717137 110.424427) + (xy 166.717135 110.424429) + (xy 166.657156 110.492342) + (xy 166.656032 110.493538) + (xy 166.655775 110.493892) + (xy 166.655554 110.494113) + (xy 166.655405 110.494204) + (xy 166.654504 110.495163) + (xy 166.652292 110.497375) + (xy 166.651509 110.496592) + (xy 166.650362 110.497296) + (xy 166.651721 110.498496) + (xy 166.639018 110.512879) + (xy 166.6302 110.53166) + (xy 166.588868 110.619695) + (xy 166.588867 110.619698) + (xy 166.586976 110.623726) + (xy 166.568136 110.744724) + (xy 166.568713 110.749137) + (xy 166.568713 110.749138) + (xy 166.582655 110.855751) + (xy 166.584014 110.866145) + (xy 166.585809 110.870224) + (xy 166.589286 110.878126) + (xy 166.591185 110.882443) + (xy 166.591244 110.882813) + (xy 166.592007 110.884311) + (xy 166.594031 110.88891) + (xy 166.594031 110.888911) + (xy 166.62991 110.97045) + (xy 166.633333 110.97823) + (xy 166.647198 110.994724) + (xy 166.648029 110.995713) + (xy 166.650157 110.998434) + (xy 166.652292 111.002625) + (xy 166.660081 111.010414) + (xy 166.66373 111.014392) + (xy 166.700282 111.057876) + (xy 166.712127 111.071968) + (xy 166.735399 111.087459) + (xy 166.741836 111.092733) + (xy 166.743899 111.094232) + (xy 166.747375 111.097708) + (xy 166.751753 111.099939) + (xy 166.751756 111.099941) + (xy 166.75873 111.103494) + (xy 166.764977 111.107148) + (xy 166.814064 111.139823) + (xy 166.818313 111.141151) + (xy 166.818314 111.141151) + (xy 166.850296 111.151143) + (xy 166.860027 111.155109) + (xy 166.862799 111.156521) + (xy 166.862803 111.156522) + (xy 166.867187 111.158756) + (xy 166.877852 111.160445) + (xy 166.886713 111.16252) + (xy 166.926696 111.175012) + (xy 166.926699 111.175012) + (xy 166.930948 111.17634) + (xy 166.980069 111.177241) + (xy 166.988683 111.177999) + (xy 166.99514 111.179022) + (xy 166.995144 111.179022) + (xy 167 111.179791) + (xy 167.006947 111.17869) + (xy 167.017853 111.177933) + (xy 167.053383 111.178584) + (xy 167.113532 111.162185) + (xy 167.12019 111.160755) + (xy 167.122147 111.160445) + (xy 167.132813 111.158756) + (xy 167.137196 111.156522) + (xy 167.141875 111.155002) + (xy 167.141878 111.15501) + (xy 167.146727 111.153136) + (xy 167.171527 111.146375) + (xy 167.17621 111.1435) + (xy 167.239709 111.104511) + (xy 167.244037 111.102085) + (xy 167.24824 111.099944) + (xy 167.248248 111.099938) + (xy 167.252625 111.097708) + (xy 167.255427 111.094906) + (xy 167.256264 111.094346) + (xy 167.259316 111.092472) + (xy 167.275881 111.082301) + (xy 167.358058 110.991513) + (xy 167.365454 110.976248) + (xy 167.401198 110.944458) + (xy 167.4217 110.941) + (xy 168.045881 110.941) + (xy 168.090075 110.959306) + (xy 168.108381 111.0035) + (xy 168.097847 111.038223) + (xy 168.059249 111.095988) + (xy 168.058048 111.102024) + (xy 168.058048 111.102025) + (xy 168.048994 111.147546) + (xy 168.0475 111.155056) + (xy 168.0475 111.344944) + (xy 168.048099 111.347954) + (xy 168.048099 111.347957) + (xy 168.05773 111.396375) + (xy 168.059249 111.404012) + (xy 168.100186 111.465278) + (xy 168.109518 111.512193) + (xy 168.100187 111.534721) + (xy 168.059249 111.595988) + (xy 168.058048 111.602024) + (xy 168.058048 111.602025) + (xy 168.048494 111.65006) + (xy 168.0475 111.655056) + (xy 168.0475 111.844944) + (xy 168.048099 111.847954) + (xy 168.048099 111.847957) + (xy 168.054983 111.882567) + (xy 168.059249 111.904012) + (xy 168.100186 111.965278) + (xy 168.109518 112.012193) + (xy 168.100187 112.034721) + (xy 168.059249 112.095988) + (xy 168.058048 112.102024) + (xy 168.058048 112.102025) + (xy 168.048477 112.150146) + (xy 168.0475 112.155056) + (xy 168.0475 112.344944) + (xy 168.048099 112.347954) + (xy 168.048099 112.347957) + (xy 168.057456 112.394997) + (xy 168.059249 112.404012) + (xy 168.100186 112.465278) + (xy 168.109518 112.512193) + (xy 168.100187 112.534721) + (xy 168.059249 112.595988) + (xy 168.058048 112.602024) + (xy 168.058048 112.602025) + (xy 168.048456 112.650252) + (xy 168.0475 112.655056) + (xy 168.0475 112.844944) + (xy 168.048099 112.847954) + (xy 168.048099 112.847957) + (xy 168.058007 112.897767) + (xy 168.059249 112.904012) + (xy 168.100186 112.965278) + (xy 168.109518 113.012193) + (xy 168.100187 113.034721) + (xy 168.059249 113.095988) + (xy 168.058048 113.102024) + (xy 168.058048 113.102025) + (xy 168.049022 113.147406) + (xy 168.0475 113.155056) + (xy 168.0475 113.344944) + (xy 168.048099 113.347954) + (xy 168.048099 113.347957) + (xy 168.056999 113.392699) + (xy 168.059249 113.404012) + (xy 168.100186 113.465278) + (xy 168.109518 113.512193) + (xy 168.100187 113.534721) + (xy 168.059249 113.595988) + (xy 168.058048 113.602024) + (xy 168.058048 113.602025) + (xy 168.056164 113.6115) + (xy 168.0475 113.655056) + (xy 168.0475 113.844944) + (xy 168.048099 113.847954) + (xy 168.048099 113.847957) + (xy 168.057283 113.89413) + (xy 168.059249 113.904012) + (xy 168.104006 113.970994) + (xy 168.170988 114.015751) + (xy 168.177024 114.016952) + (xy 168.177025 114.016952) + (xy 168.227043 114.026901) + (xy 168.227046 114.026901) + (xy 168.230056 114.0275) + (xy 169.594944 114.0275) + (xy 169.597954 114.026901) + (xy 169.597957 114.026901) + (xy 169.647975 114.016952) + (xy 169.647976 114.016952) + (xy 169.654012 114.015751) + (xy 169.720994 113.970994) + (xy 169.724414 113.965876) + (xy 169.728766 113.961524) + (xy 169.730594 113.963352) + (xy 169.762248 113.942201) + (xy 169.774442 113.941) + (xy 170.206768 113.941) + (xy 170.214107 113.94225) + (xy 170.21419 113.941523) + (xy 170.221181 113.94232) + (xy 170.227822 113.944652) + (xy 170.234815 113.943874) + (xy 170.234816 113.943874) + (xy 170.257197 113.941383) + (xy 170.26411 113.941) + (xy 170.271533 113.941) + (xy 170.278465 113.939419) + (xy 170.285418 113.938243) + (xy 170.314429 113.935014) + (xy 170.320393 113.931281) + (xy 170.324341 113.929906) + (xy 170.3281 113.928097) + (xy 170.334959 113.926532) + (xy 170.3405 113.922117) + (xy 170.353872 113.911461) + (xy 170.357774 113.908351) + (xy 170.363559 113.904256) + (xy 170.366715 113.90228) + (xy 170.366717 113.902279) + (xy 170.369711 113.900404) + (xy 170.374924 113.895191) + (xy 170.380168 113.890506) + (xy 170.397604 113.876612) + (xy 170.397604 113.876611) + (xy 170.403109 113.872225) + (xy 170.406167 113.865886) + (xy 170.410558 113.860385) + (xy 170.411092 113.860811) + (xy 170.415468 113.854647) + (xy 170.596046 113.674069) + (xy 174.494 113.674069) + (xy 174.497641 113.682859) + (xy 174.506431 113.6865) + (xy 174.774069 113.6865) + (xy 174.782859 113.682859) + (xy 174.7865 113.674069) + (xy 174.7865 112.880431) + (xy 174.782859 112.871641) + (xy 174.774069 112.868) + (xy 174.611562 112.868) + (xy 174.605481 112.868599) + (xy 174.577482 112.874169) + (xy 174.56633 112.878788) + (xy 174.534555 112.900019) + (xy 174.526019 112.908555) + (xy 174.504788 112.94033) + (xy 174.500169 112.951482) + (xy 174.494599 112.979481) + (xy 174.494 112.985562) + (xy 174.494 113.674069) + (xy 170.596046 113.674069) + (xy 173.529129 110.740986) + (xy 173.573323 110.72268) + (xy 181.576677 110.72268) + (xy 181.620871 110.740986) + (xy 183.440694 112.560809) + (xy 183.459 112.605003) + (xy 183.459 112.806176) + (xy 183.440694 112.85037) + (xy 183.408104 112.865799) + (xy 183.408442 112.8675) + (xy 183.377287 112.873697) + (xy 183.377285 112.873698) + (xy 183.371252 112.874898) + (xy 183.329078 112.903078) + (xy 183.325659 112.908195) + (xy 183.301967 112.943652) + (xy 183.262193 112.970228) + (xy 183.215277 112.960896) + (xy 183.198033 112.943652) + (xy 183.174341 112.908195) + (xy 183.170922 112.903078) + (xy 183.128748 112.874898) + (xy 183.122715 112.873698) + (xy 183.122713 112.873697) + (xy 183.094569 112.868099) + (xy 183.091558 112.8675) + (xy 182.608442 112.8675) + (xy 182.605431 112.868099) + (xy 182.577287 112.873697) + (xy 182.577285 112.873698) + (xy 182.571252 112.874898) + (xy 182.529078 112.903078) + (xy 182.525659 112.908195) + (xy 182.501967 112.943652) + (xy 182.462193 112.970228) + (xy 182.415277 112.960896) + (xy 182.398033 112.943652) + (xy 182.374341 112.908195) + (xy 182.370922 112.903078) + (xy 182.328748 112.874898) + (xy 182.322715 112.873698) + (xy 182.322713 112.873697) + (xy 182.291558 112.8675) + (xy 182.291957 112.865494) + (xy 182.255159 112.845791) + (xy 182.241 112.806176) + (xy 182.241 112.419384) + (xy 182.259306 112.37519) + (xy 182.270797 112.366123) + (xy 182.289712 112.354509) + (xy 182.294034 112.352085) + (xy 182.302625 112.347708) + (xy 182.305427 112.344906) + (xy 182.306264 112.344346) + (xy 182.306342 112.344298) + (xy 182.325881 112.332301) + (xy 182.408058 112.241513) + (xy 182.461451 112.131311) + (xy 182.46285 112.123) + (xy 182.475518 112.047694) + (xy 182.481767 112.010552) + (xy 182.481896 112) + (xy 182.464536 111.878781) + (xy 182.413852 111.767307) + (xy 182.399199 111.750302) + (xy 182.397708 111.747375) + (xy 182.3919 111.741567) + (xy 182.388746 111.73817) + (xy 182.346543 111.689191) + (xy 182.333918 111.674539) + (xy 182.313741 111.661461) + (xy 182.310155 111.658559) + (xy 182.310081 111.658661) + (xy 182.306106 111.655773) + (xy 182.302625 111.652292) + (xy 182.291343 111.646543) + (xy 182.285736 111.643309) + (xy 182.234893 111.610354) + (xy 182.23489 111.610353) + (xy 182.23116 111.607935) + (xy 182.226901 111.606661) + (xy 182.226898 111.60666) + (xy 182.208345 111.601112) + (xy 182.198839 111.598269) + (xy 182.188377 111.594079) + (xy 182.182813 111.591244) + (xy 182.171067 111.589384) + (xy 182.162951 111.587536) + (xy 182.13058 111.577855) + (xy 182.113838 111.572848) + (xy 182.069496 111.572577) + (xy 182.060103 111.571809) + (xy 182.054857 111.570978) + (xy 182.054856 111.570978) + (xy 182.05 111.570209) + (xy 182.041373 111.571576) + (xy 182.03122 111.572344) + (xy 182.012836 111.572231) + (xy 181.995838 111.572127) + (xy 181.995836 111.572127) + (xy 181.991385 111.5721) + (xy 181.937011 111.587641) + (xy 181.929623 111.589275) + (xy 181.917187 111.591244) + (xy 181.912804 111.593477) + (xy 181.91187 111.593781) + (xy 181.902156 111.597603) + (xy 181.899821 111.59827) + (xy 181.877929 111.604526) + (xy 181.877927 111.604527) + (xy 181.873644 111.605751) + (xy 181.814119 111.643309) + (xy 181.812819 111.644129) + (xy 181.807842 111.646959) + (xy 181.801757 111.650059) + (xy 181.801756 111.65006) + (xy 181.797375 111.652292) + (xy 181.793897 111.65577) + (xy 181.792445 111.656825) + (xy 181.789058 111.65912) + (xy 181.77008 111.671095) + (xy 181.767137 111.674427) + (xy 181.767135 111.674429) + (xy 181.707156 111.742342) + (xy 181.706032 111.743538) + (xy 181.705775 111.743892) + (xy 181.705554 111.744113) + (xy 181.705405 111.744204) + (xy 181.704504 111.745163) + (xy 181.702292 111.747375) + (xy 181.701509 111.746592) + (xy 181.700362 111.747296) + (xy 181.701721 111.748496) + (xy 181.689018 111.762879) + (xy 181.687127 111.766907) + (xy 181.638868 111.869695) + (xy 181.638867 111.869698) + (xy 181.636976 111.873726) + (xy 181.618136 111.994724) + (xy 181.618713 111.999137) + (xy 181.618713 111.999138) + (xy 181.632552 112.104965) + (xy 181.634014 112.116145) + (xy 181.635809 112.120224) + (xy 181.639286 112.128126) + (xy 181.641185 112.132443) + (xy 181.641244 112.132813) + (xy 181.642007 112.134311) + (xy 181.644031 112.13891) + (xy 181.644031 112.138911) + (xy 181.678351 112.216907) + (xy 181.683333 112.22823) + (xy 181.69479 112.24186) + (xy 181.698029 112.245713) + (xy 181.700157 112.248434) + (xy 181.702292 112.252625) + (xy 181.710081 112.260414) + (xy 181.71373 112.264392) + (xy 181.758191 112.317285) + (xy 181.762127 112.321968) + (xy 181.785399 112.337459) + (xy 181.791836 112.342733) + (xy 181.793899 112.344232) + (xy 181.797375 112.347708) + (xy 181.801753 112.349939) + (xy 181.801756 112.349941) + (xy 181.80873 112.353494) + (xy 181.814983 112.357152) + (xy 181.82027 112.360671) + (xy 181.831134 112.367903) + (xy 181.857778 112.407631) + (xy 181.859 112.419929) + (xy 181.859 112.806176) + (xy 181.840694 112.85037) + (xy 181.808104 112.865799) + (xy 181.808442 112.8675) + (xy 181.777287 112.873697) + (xy 181.777285 112.873698) + (xy 181.771252 112.874898) + (xy 181.729078 112.903078) + (xy 181.725659 112.908195) + (xy 181.701967 112.943652) + (xy 181.662193 112.970228) + (xy 181.615277 112.960896) + (xy 181.598033 112.943652) + (xy 181.574341 112.908195) + (xy 181.570922 112.903078) + (xy 181.528748 112.874898) + (xy 181.522715 112.873698) + (xy 181.522713 112.873697) + (xy 181.494569 112.868099) + (xy 181.491558 112.8675) + (xy 181.008442 112.8675) + (xy 181.005431 112.868099) + (xy 180.977287 112.873697) + (xy 180.977285 112.873698) + (xy 180.971252 112.874898) + (xy 180.929078 112.903078) + (xy 180.925659 112.908195) + (xy 180.901967 112.943652) + (xy 180.862193 112.970228) + (xy 180.815277 112.960896) + (xy 180.798033 112.943652) + (xy 180.774341 112.908195) + (xy 180.770922 112.903078) + (xy 180.728748 112.874898) + (xy 180.722715 112.873698) + (xy 180.722713 112.873697) + (xy 180.694569 112.868099) + (xy 180.691558 112.8675) + (xy 180.208442 112.8675) + (xy 180.205431 112.868099) + (xy 180.177287 112.873697) + (xy 180.177285 112.873698) + (xy 180.171252 112.874898) + (xy 180.129078 112.903078) + (xy 180.125659 112.908195) + (xy 180.101967 112.943652) + (xy 180.062193 112.970228) + (xy 180.015277 112.960896) + (xy 179.998033 112.943652) + (xy 179.974341 112.908195) + (xy 179.970922 112.903078) + (xy 179.928748 112.874898) + (xy 179.922715 112.873698) + (xy 179.922713 112.873697) + (xy 179.894569 112.868099) + (xy 179.891558 112.8675) + (xy 179.408442 112.8675) + (xy 179.405431 112.868099) + (xy 179.377287 112.873697) + (xy 179.377285 112.873698) + (xy 179.371252 112.874898) + (xy 179.329078 112.903078) + (xy 179.325659 112.908195) + (xy 179.301967 112.943652) + (xy 179.262193 112.970228) + (xy 179.215277 112.960896) + (xy 179.198033 112.943652) + (xy 179.174341 112.908195) + (xy 179.170922 112.903078) + (xy 179.128748 112.874898) + (xy 179.122715 112.873698) + (xy 179.122713 112.873697) + (xy 179.094569 112.868099) + (xy 179.091558 112.8675) + (xy 178.608442 112.8675) + (xy 178.605431 112.868099) + (xy 178.577287 112.873697) + (xy 178.577285 112.873698) + (xy 178.571252 112.874898) + (xy 178.529078 112.903078) + (xy 178.525659 112.908195) + (xy 178.501967 112.943652) + (xy 178.462193 112.970228) + (xy 178.415277 112.960896) + (xy 178.398033 112.943652) + (xy 178.374341 112.908195) + (xy 178.370922 112.903078) + (xy 178.328748 112.874898) + (xy 178.322715 112.873698) + (xy 178.322713 112.873697) + (xy 178.294569 112.868099) + (xy 178.291558 112.8675) + (xy 177.808442 112.8675) + (xy 177.805431 112.868099) + (xy 177.777287 112.873697) + (xy 177.777285 112.873698) + (xy 177.771252 112.874898) + (xy 177.729078 112.903078) + (xy 177.725659 112.908195) + (xy 177.701967 112.943652) + (xy 177.662193 112.970228) + (xy 177.615277 112.960896) + (xy 177.598033 112.943652) + (xy 177.574341 112.908195) + (xy 177.570922 112.903078) + (xy 177.528748 112.874898) + (xy 177.522715 112.873698) + (xy 177.522713 112.873697) + (xy 177.494569 112.868099) + (xy 177.491558 112.8675) + (xy 177.008442 112.8675) + (xy 177.005431 112.868099) + (xy 176.977287 112.873697) + (xy 176.977285 112.873698) + (xy 176.971252 112.874898) + (xy 176.929078 112.903078) + (xy 176.925659 112.908195) + (xy 176.901967 112.943652) + (xy 176.862193 112.970228) + (xy 176.815277 112.960896) + (xy 176.798033 112.943652) + (xy 176.774341 112.908195) + (xy 176.770922 112.903078) + (xy 176.728748 112.874898) + (xy 176.722715 112.873698) + (xy 176.722713 112.873697) + (xy 176.694569 112.868099) + (xy 176.691558 112.8675) + (xy 176.208442 112.8675) + (xy 176.205431 112.868099) + (xy 176.177287 112.873697) + (xy 176.177285 112.873698) + (xy 176.171252 112.874898) + (xy 176.129078 112.903078) + (xy 176.125659 112.908195) + (xy 176.101967 112.943652) + (xy 176.062193 112.970228) + (xy 176.015277 112.960896) + (xy 175.998033 112.943652) + (xy 175.974341 112.908195) + (xy 175.970922 112.903078) + (xy 175.928748 112.874898) + (xy 175.922715 112.873698) + (xy 175.922713 112.873697) + (xy 175.894569 112.868099) + (xy 175.891558 112.8675) + (xy 175.408442 112.8675) + (xy 175.405431 112.868099) + (xy 175.377287 112.873697) + (xy 175.377285 112.873698) + (xy 175.371252 112.874898) + (xy 175.329078 112.903078) + (xy 175.325659 112.908195) + (xy 175.325658 112.908196) + (xy 175.301665 112.944103) + (xy 175.261891 112.970678) + (xy 175.214975 112.961345) + (xy 175.197732 112.944101) + (xy 175.173983 112.908557) + (xy 175.165445 112.900019) + (xy 175.13367 112.878788) + (xy 175.122518 112.874169) + (xy 175.094519 112.868599) + (xy 175.088438 112.868) + (xy 174.925931 112.868) + (xy 174.917141 112.871641) + (xy 174.9135 112.880431) + (xy 174.9135 114.619569) + (xy 174.917141 114.628359) + (xy 174.925931 114.632) + (xy 175.088438 114.632) + (xy 175.094519 114.631401) + (xy 175.122518 114.625831) + (xy 175.13367 114.621212) + (xy 175.165445 114.599981) + (xy 175.173983 114.591443) + (xy 175.197732 114.555899) + (xy 175.237505 114.529322) + (xy 175.284421 114.538654) + (xy 175.301665 114.555897) + (xy 175.324795 114.590512) + (xy 175.329078 114.596922) + (xy 175.371252 114.625102) + (xy 175.377285 114.626302) + (xy 175.377287 114.626303) + (xy 175.408442 114.6325) + (xy 175.408043 114.634506) + (xy 175.444841 114.654209) + (xy 175.459 114.693824) + (xy 175.459 114.894997) + (xy 175.440694 114.939191) + (xy 172.867351 117.512534) + (xy 172.823157 117.53084) + (xy 166.826843 117.53084) + (xy 166.782649 117.512534) + (xy 166.709306 117.439191) + (xy 166.691 117.394997) + (xy 166.691 116.529119) + (xy 166.709306 116.484925) + (xy 166.7535 116.466619) + (xy 166.788223 116.477153) + (xy 166.845988 116.515751) + (xy 166.852024 116.516952) + (xy 166.852025 116.516952) + (xy 166.902043 116.526901) + (xy 166.902046 116.526901) + (xy 166.905056 116.5275) + (xy 167.094944 116.5275) + (xy 167.097954 116.526901) + (xy 167.097957 116.526901) + (xy 167.147975 116.516952) + (xy 167.147976 116.516952) + (xy 167.154012 116.515751) + (xy 167.220994 116.470994) + (xy 167.265751 116.404012) + (xy 167.266993 116.397767) + (xy 167.276901 116.347957) + (xy 167.276901 116.347954) + (xy 167.2775 116.344944) + (xy 167.2775 114.980056) + (xy 167.275022 114.967595) + (xy 167.266952 114.927025) + (xy 167.266952 114.927024) + (xy 167.265751 114.920988) + (xy 167.220994 114.854006) + (xy 167.215876 114.850586) + (xy 167.211524 114.846234) + (xy 167.213352 114.844406) + (xy 167.192201 114.812752) + (xy 167.191 114.800558) + (xy 167.191 114.514438) + (xy 174.494 114.514438) + (xy 174.494599 114.520519) + (xy 174.500169 114.548518) + (xy 174.504788 114.55967) + (xy 174.526019 114.591445) + (xy 174.534555 114.599981) + (xy 174.56633 114.621212) + (xy 174.577482 114.625831) + (xy 174.605481 114.631401) + (xy 174.611562 114.632) + (xy 174.774069 114.632) + (xy 174.782859 114.628359) + (xy 174.7865 114.619569) + (xy 174.7865 113.825931) + (xy 174.782859 113.817141) + (xy 174.774069 113.8135) + (xy 174.506431 113.8135) + (xy 174.497641 113.817141) + (xy 174.494 113.825931) + (xy 174.494 114.514438) + (xy 167.191 114.514438) + (xy 167.191 114.169384) + (xy 167.209306 114.12519) + (xy 167.220797 114.116123) + (xy 167.239712 114.104509) + (xy 167.244034 114.102085) + (xy 167.252625 114.097708) + (xy 167.255427 114.094906) + (xy 167.256264 114.094346) + (xy 167.258891 114.092733) + (xy 167.275881 114.082301) + (xy 167.358058 113.991513) + (xy 167.411451 113.881311) + (xy 167.413542 113.868885) + (xy 167.431367 113.762928) + (xy 167.431767 113.760552) + (xy 167.431896 113.75) + (xy 167.414536 113.628781) + (xy 167.363852 113.517307) + (xy 167.349199 113.500302) + (xy 167.347708 113.497375) + (xy 167.3419 113.491567) + (xy 167.338746 113.48817) + (xy 167.286826 113.427914) + (xy 167.283918 113.424539) + (xy 167.263741 113.411461) + (xy 167.260155 113.408559) + (xy 167.260081 113.408661) + (xy 167.256106 113.405773) + (xy 167.252625 113.402292) + (xy 167.241343 113.396543) + (xy 167.235736 113.393309) + (xy 167.232972 113.391517) + (xy 167.209976 113.376612) + (xy 167.184893 113.360354) + (xy 167.18489 113.360353) + (xy 167.18116 113.357935) + (xy 167.176901 113.356661) + (xy 167.176898 113.35666) + (xy 167.158345 113.351112) + (xy 167.148839 113.348269) + (xy 167.138377 113.344079) + (xy 167.132813 113.341244) + (xy 167.121067 113.339384) + (xy 167.112951 113.337536) + (xy 167.091414 113.331095) + (xy 167.063838 113.322848) + (xy 167.019496 113.322577) + (xy 167.010103 113.321809) + (xy 167.004857 113.320978) + (xy 167.004856 113.320978) + (xy 167 113.320209) + (xy 166.991373 113.321576) + (xy 166.98122 113.322344) + (xy 166.962836 113.322231) + (xy 166.945838 113.322127) + (xy 166.945836 113.322127) + (xy 166.941385 113.3221) + (xy 166.887011 113.337641) + (xy 166.879623 113.339275) + (xy 166.867187 113.341244) + (xy 166.862804 113.343477) + (xy 166.86187 113.343781) + (xy 166.852155 113.347603) + (xy 166.827929 113.354526) + (xy 166.827927 113.354527) + (xy 166.823644 113.355751) + (xy 166.819874 113.35813) + (xy 166.818721 113.358857) + (xy 166.817382 113.359244) + (xy 166.815813 113.359946) + (xy 166.815715 113.359726) + (xy 166.785369 113.3685) + (xy 164.215944 113.3685) + (xy 164.189634 113.36072) + (xy 164.188939 113.362224) + (xy 164.184892 113.360354) + (xy 164.18116 113.357935) + (xy 164.176901 113.356661) + (xy 164.176898 113.35666) + (xy 164.158345 113.351112) + (xy 164.148839 113.348269) + (xy 164.138377 113.344079) + (xy 164.132813 113.341244) + (xy 164.121067 113.339384) + (xy 164.112951 113.337536) + (xy 164.091414 113.331095) + (xy 164.063838 113.322848) + (xy 164.019496 113.322577) + (xy 164.010103 113.321809) + (xy 164.004857 113.320978) + (xy 164.004856 113.320978) + (xy 164 113.320209) + (xy 163.991373 113.321576) + (xy 163.98122 113.322344) + (xy 163.962836 113.322231) + (xy 163.945838 113.322127) + (xy 163.945836 113.322127) + (xy 163.941385 113.3221) + (xy 163.887011 113.337641) + (xy 163.879623 113.339275) + (xy 163.867187 113.341244) + (xy 163.862804 113.343477) + (xy 163.86187 113.343781) + (xy 163.852155 113.347603) + (xy 163.827929 113.354526) + (xy 163.827927 113.354527) + (xy 163.823644 113.355751) + (xy 163.819874 113.35813) + (xy 163.818721 113.358857) + (xy 163.817382 113.359244) + (xy 163.815813 113.359946) + (xy 163.815715 113.359726) + (xy 163.785369 113.3685) + (xy 156.715944 113.3685) + (xy 156.689634 113.36072) + (xy 156.688939 113.362224) + (xy 156.684892 113.360354) + (xy 156.68116 113.357935) + (xy 156.676901 113.356661) + (xy 156.676898 113.35666) + (xy 156.658345 113.351112) + (xy 156.648839 113.348269) + (xy 156.638377 113.344079) + (xy 156.632813 113.341244) + (xy 156.621067 113.339384) + (xy 156.612951 113.337536) + (xy 156.591414 113.331095) + (xy 156.563838 113.322848) + (xy 156.519496 113.322577) + (xy 156.510103 113.321809) + (xy 156.504857 113.320978) + (xy 156.504856 113.320978) + (xy 156.5 113.320209) + (xy 156.491373 113.321576) + (xy 156.48122 113.322344) + (xy 156.462836 113.322231) + (xy 156.445838 113.322127) + (xy 156.445836 113.322127) + (xy 156.441385 113.3221) + (xy 156.387011 113.337641) + (xy 156.379623 113.339275) + (xy 156.367187 113.341244) + (xy 156.362804 113.343477) + (xy 156.36187 113.343781) + (xy 156.352155 113.347603) + (xy 156.327929 113.354526) + (xy 156.327927 113.354527) + (xy 156.323644 113.355751) + (xy 156.319874 113.35813) + (xy 156.318721 113.358857) + (xy 156.317382 113.359244) + (xy 156.315813 113.359946) + (xy 156.315715 113.359726) + (xy 156.285369 113.3685) + (xy 149.715944 113.3685) + (xy 149.689634 113.36072) + (xy 149.688939 113.362224) + (xy 149.684892 113.360354) + (xy 149.68116 113.357935) + (xy 149.676901 113.356661) + (xy 149.676898 113.35666) + (xy 149.658345 113.351112) + (xy 149.648839 113.348269) + (xy 149.638377 113.344079) + (xy 149.632813 113.341244) + (xy 149.621067 113.339384) + (xy 149.612951 113.337536) + (xy 149.591414 113.331095) + (xy 149.563838 113.322848) + (xy 149.519496 113.322577) + (xy 149.510103 113.321809) + (xy 149.504857 113.320978) + (xy 149.504856 113.320978) + (xy 149.5 113.320209) + (xy 149.491373 113.321576) + (xy 149.48122 113.322344) + (xy 149.462836 113.322231) + (xy 149.445838 113.322127) + (xy 149.445836 113.322127) + (xy 149.441385 113.3221) + (xy 149.387011 113.337641) + (xy 149.379623 113.339275) + (xy 149.367187 113.341244) + (xy 149.362804 113.343477) + (xy 149.36187 113.343781) + (xy 149.352155 113.347603) + (xy 149.327929 113.354526) + (xy 149.327927 113.354527) + (xy 149.323644 113.355751) + (xy 149.319875 113.358129) + (xy 149.31604 113.360549) + (xy 149.264119 113.393309) + (xy 149.262819 113.394129) + (xy 149.257842 113.396959) + (xy 149.251757 113.400059) + (xy 149.251756 113.40006) + (xy 149.247375 113.402292) + (xy 149.243897 113.40577) + (xy 149.242445 113.406825) + (xy 149.239059 113.40912) + (xy 149.237794 113.409918) + (xy 149.22008 113.421095) + (xy 149.217137 113.424427) + (xy 149.217135 113.424429) + (xy 149.157156 113.492342) + (xy 149.156032 113.493538) + (xy 149.155775 113.493892) + (xy 149.155554 113.494113) + (xy 149.155405 113.494204) + (xy 149.154504 113.495163) + (xy 149.152292 113.497375) + (xy 149.151509 113.496592) + (xy 149.150362 113.497296) + (xy 149.151721 113.498496) + (xy 149.139018 113.512879) + (xy 149.137127 113.516906) + (xy 149.137126 113.516908) + (xy 149.134237 113.523062) + (xy 149.098884 113.555287) + (xy 149.077662 113.559) + (xy 148.830191 113.559) + (xy 148.785997 113.540694) + (xy 148.767691 113.4965) + (xy 148.785997 113.452306) + (xy 148.80964 113.437475) + (xy 148.814471 113.435793) + (xy 148.821469 113.435014) + (xy 148.827436 113.431279) + (xy 148.831381 113.429905) + (xy 148.835137 113.428098) + (xy 148.841999 113.426532) + (xy 148.84754 113.422117) + (xy 148.864813 113.408352) + (xy 148.870599 113.404256) + (xy 148.873755 113.40228) + (xy 148.873757 113.402279) + (xy 148.876751 113.400404) + (xy 148.881964 113.395191) + (xy 148.887208 113.390506) + (xy 148.904644 113.376612) + (xy 148.904644 113.376611) + (xy 148.910149 113.372225) + (xy 148.913207 113.365886) + (xy 148.917598 113.360385) + (xy 148.918132 113.360811) + (xy 148.922508 113.354647) + (xy 149.810809 112.466346) + (xy 149.855003 112.44804) + (xy 153.449728 112.44804) + (xy 153.457067 112.44929) + (xy 153.45715 112.448563) + (xy 153.464141 112.44936) + (xy 153.470782 112.451692) + (xy 153.477775 112.450914) + (xy 153.477776 112.450914) + (xy 153.500157 112.448423) + (xy 153.50707 112.44804) + (xy 153.514493 112.44804) + (xy 153.521425 112.446459) + (xy 153.528378 112.445283) + (xy 153.557389 112.442054) + (xy 153.563353 112.438321) + (xy 153.567301 112.436946) + (xy 153.57106 112.435137) + (xy 153.577919 112.433572) + (xy 153.584179 112.428584) + (xy 153.58752 112.425921) + (xy 153.63349 112.412694) + (xy 153.645109 112.415143) + (xy 153.65427 112.418005) + (xy 153.680948 112.42634) + (xy 153.730069 112.427241) + (xy 153.738683 112.427999) + (xy 153.74514 112.429022) + (xy 153.745144 112.429022) + (xy 153.75 112.429791) + (xy 153.756947 112.42869) + (xy 153.767853 112.427933) + (xy 153.803383 112.428584) + (xy 153.863532 112.412185) + (xy 153.87019 112.410755) + (xy 153.871945 112.410477) + (xy 153.882813 112.408756) + (xy 153.887196 112.406522) + (xy 153.891875 112.405002) + (xy 153.891878 112.40501) + (xy 153.896727 112.403136) + (xy 153.921527 112.396375) + (xy 153.92828 112.392229) + (xy 153.989709 112.354511) + (xy 153.994037 112.352085) + (xy 153.99824 112.349944) + (xy 153.998248 112.349938) + (xy 154.002625 112.347708) + (xy 154.005427 112.344906) + (xy 154.006264 112.344346) + (xy 154.006342 112.344298) + (xy 154.025881 112.332301) + (xy 154.108058 112.241513) + (xy 154.161451 112.131311) + (xy 154.16285 112.123) + (xy 154.175518 112.047694) + (xy 154.181767 112.010552) + (xy 154.181896 112) + (xy 154.164536 111.878781) + (xy 154.113852 111.767307) + (xy 154.099199 111.750302) + (xy 154.097708 111.747375) + (xy 154.0919 111.741567) + (xy 154.088746 111.73817) + (xy 154.046543 111.689191) + (xy 154.033918 111.674539) + (xy 154.013741 111.661461) + (xy 154.010155 111.658559) + (xy 154.010081 111.658661) + (xy 154.006106 111.655773) + (xy 154.002625 111.652292) + (xy 153.991343 111.646543) + (xy 153.985736 111.643309) + (xy 153.934893 111.610354) + (xy 153.93489 111.610353) + (xy 153.93116 111.607935) + (xy 153.926901 111.606661) + (xy 153.926898 111.60666) + (xy 153.908345 111.601112) + (xy 153.898839 111.598269) + (xy 153.888377 111.594079) + (xy 153.882813 111.591244) + (xy 153.871067 111.589384) + (xy 153.86295 111.587535) + (xy 153.824452 111.576021) + (xy 153.787357 111.54582) + (xy 153.782482 111.498233) + (xy 153.798167 111.471948) + (xy 153.837788 111.432327) + (xy 153.881982 111.414021) + (xy 153.90062 111.416865) + (xy 153.926696 111.425012) + (xy 153.926699 111.425012) + (xy 153.930948 111.42634) + (xy 153.980069 111.427241) + (xy 153.988683 111.427999) + (xy 153.99514 111.429022) + (xy 153.995144 111.429022) + (xy 154 111.429791) + (xy 154.006947 111.42869) + (xy 154.017853 111.427933) + (xy 154.053383 111.428584) + (xy 154.113532 111.412185) + (xy 154.12019 111.410755) + (xy 154.1217 111.410516) + (xy 154.132813 111.408756) + (xy 154.137196 111.406522) + (xy 154.141875 111.405002) + (xy 154.141878 111.40501) + (xy 154.146727 111.403136) + (xy 154.171527 111.396375) + (xy 154.194218 111.382443) + (xy 154.239709 111.354511) + (xy 154.244037 111.352085) + (xy 154.24824 111.349944) + (xy 154.248248 111.349938) + (xy 154.252625 111.347708) + (xy 154.255427 111.344906) + (xy 154.256264 111.344346) + (xy 154.275881 111.332301) + (xy 154.358058 111.241513) + (xy 154.411451 111.131311) + (xy 154.413406 111.119695) + (xy 154.424237 111.055309) + (xy 154.431767 111.010552) + (xy 154.431896 111) + (xy 154.414536 110.878781) + (xy 154.363852 110.767307) + (xy 154.349199 110.750302) + (xy 154.347708 110.747375) + (xy 154.3419 110.741567) + (xy 154.338746 110.73817) + (xy 154.286826 110.677914) + (xy 154.283918 110.674539) + (xy 154.263741 110.661461) + (xy 154.260155 110.658559) + (xy 154.260081 110.658661) + (xy 154.256106 110.655773) + (xy 154.252625 110.652292) + (xy 154.241343 110.646543) + (xy 154.235736 110.643309) + (xy 154.184893 110.610354) + (xy 154.18489 110.610353) + (xy 154.18116 110.607935) + (xy 154.176901 110.606661) + (xy 154.176898 110.60666) + (xy 154.158345 110.601112) + (xy 154.148839 110.598269) + (xy 154.138377 110.594079) + (xy 154.132813 110.591244) + (xy 154.121067 110.589384) + (xy 154.112951 110.587536) + (xy 154.063838 110.572848) + (xy 154.019496 110.572577) + (xy 154.010103 110.571809) + (xy 154.004857 110.570978) + (xy 154.004856 110.570978) + (xy 154 110.570209) + (xy 153.991373 110.571576) + (xy 153.98122 110.572344) + (xy 153.962836 110.572231) + (xy 153.945838 110.572127) + (xy 153.945836 110.572127) + (xy 153.941385 110.5721) + (xy 153.887011 110.587641) + (xy 153.879623 110.589275) + (xy 153.867187 110.591244) + (xy 153.862804 110.593477) + (xy 153.86187 110.593781) + (xy 153.852155 110.597603) + (xy 153.827929 110.604526) + (xy 153.827927 110.604527) + (xy 153.823644 110.605751) + (xy 153.764119 110.643309) + (xy 153.762819 110.644129) + (xy 153.757842 110.646959) + (xy 153.751757 110.650059) + (xy 153.751756 110.65006) + (xy 153.747375 110.652292) + (xy 153.743897 110.65577) + (xy 153.742445 110.656825) + (xy 153.739058 110.65912) + (xy 153.72008 110.671095) + (xy 153.717137 110.674427) + (xy 153.717135 110.674429) + (xy 153.657156 110.742342) + (xy 153.656032 110.743538) + (xy 153.655775 110.743892) + (xy 153.655554 110.744113) + (xy 153.655405 110.744204) + (xy 153.654504 110.745163) + (xy 153.652292 110.747375) + (xy 153.651509 110.746592) + (xy 153.650362 110.747296) + (xy 153.651721 110.748496) + (xy 153.639018 110.762879) + (xy 153.634151 110.773246) + (xy 153.588868 110.869695) + (xy 153.588867 110.869698) + (xy 153.586976 110.873726) + (xy 153.568136 110.994724) + (xy 153.568713 110.999137) + (xy 153.568713 110.999138) + (xy 153.570535 111.013072) + (xy 153.583145 111.109494) + (xy 153.58346 111.111905) + (xy 153.57104 111.158099) + (xy 153.565682 111.164203) + (xy 153.526258 111.203627) + (xy 153.482064 111.221933) + (xy 153.43787 111.203627) + (xy 153.420195 111.168294) + (xy 153.416439 111.14207) + (xy 153.414536 111.128781) + (xy 153.363852 111.017307) + (xy 153.349199 111.000302) + (xy 153.347708 110.997375) + (xy 153.3419 110.991567) + (xy 153.338746 110.98817) + (xy 153.286826 110.927914) + (xy 153.283918 110.924539) + (xy 153.263741 110.911461) + (xy 153.260155 110.908559) + (xy 153.260081 110.908661) + (xy 153.256106 110.905773) + (xy 153.252625 110.902292) + (xy 153.241343 110.896543) + (xy 153.235736 110.893309) + (xy 153.223408 110.885318) + (xy 153.213322 110.878781) + (xy 153.184893 110.860354) + (xy 153.18489 110.860353) + (xy 153.18116 110.857935) + (xy 153.176901 110.856661) + (xy 153.176898 110.85666) + (xy 153.155412 110.850235) + (xy 153.148839 110.848269) + (xy 153.138377 110.844079) + (xy 153.132813 110.841244) + (xy 153.121067 110.839384) + (xy 153.112951 110.837536) + (xy 153.063838 110.822848) + (xy 153.019496 110.822577) + (xy 153.010103 110.821809) + (xy 153.004857 110.820978) + (xy 153.004856 110.820978) + (xy 153 110.820209) + (xy 152.991373 110.821576) + (xy 152.98122 110.822344) + (xy 152.962836 110.822231) + (xy 152.945838 110.822127) + (xy 152.945836 110.822127) + (xy 152.941385 110.8221) + (xy 152.887011 110.837641) + (xy 152.879623 110.839275) + (xy 152.867187 110.841244) + (xy 152.862804 110.843477) + (xy 152.86187 110.843781) + (xy 152.852155 110.847603) + (xy 152.827929 110.854526) + (xy 152.827927 110.854527) + (xy 152.823644 110.855751) + (xy 152.764119 110.893309) + (xy 152.762819 110.894129) + (xy 152.757842 110.896959) + (xy 152.751757 110.900059) + (xy 152.751756 110.90006) + (xy 152.747375 110.902292) + (xy 152.743897 110.90577) + (xy 152.742445 110.906825) + (xy 152.739058 110.90912) + (xy 152.72008 110.921095) + (xy 152.717137 110.924427) + (xy 152.717135 110.924429) + (xy 152.657156 110.992342) + (xy 152.656032 110.993538) + (xy 152.655775 110.993892) + (xy 152.655554 110.994113) + (xy 152.655405 110.994204) + (xy 152.654504 110.995163) + (xy 152.652292 110.997375) + (xy 152.651509 110.996592) + (xy 152.650362 110.997296) + (xy 152.651721 110.998496) + (xy 152.644398 111.006788) + (xy 152.639018 111.012879) + (xy 152.630692 111.030613) + (xy 152.588868 111.119695) + (xy 152.588867 111.119698) + (xy 152.586976 111.123726) + (xy 152.568136 111.244724) + (xy 152.568713 111.249137) + (xy 152.568713 111.249138) + (xy 152.570995 111.266589) + (xy 152.582323 111.353208) + (xy 152.58346 111.361905) + (xy 152.57104 111.408099) + (xy 152.565682 111.414203) + (xy 152.439191 111.540694) + (xy 152.394997 111.559) + (xy 149.605003 111.559) + (xy 149.560809 111.540694) + (xy 149.269493 111.249378) + (xy 149.251187 111.205184) + (xy 149.269493 111.16099) + (xy 149.313687 111.142684) + (xy 149.332321 111.145527) + (xy 149.3503 111.151144) + (xy 149.360027 111.155109) + (xy 149.362799 111.156521) + (xy 149.362803 111.156522) + (xy 149.367187 111.158756) + (xy 149.377852 111.160445) + (xy 149.386713 111.16252) + (xy 149.426696 111.175012) + (xy 149.426699 111.175012) + (xy 149.430948 111.17634) + (xy 149.480069 111.177241) + (xy 149.488683 111.177999) + (xy 149.49514 111.179022) + (xy 149.495144 111.179022) + (xy 149.5 111.179791) + (xy 149.506947 111.17869) + (xy 149.517853 111.177933) + (xy 149.553383 111.178584) + (xy 149.613532 111.162185) + (xy 149.62019 111.160755) + (xy 149.622147 111.160445) + (xy 149.632813 111.158756) + (xy 149.637196 111.156522) + (xy 149.641875 111.155002) + (xy 149.641878 111.15501) + (xy 149.646727 111.153136) + (xy 149.671527 111.146375) + (xy 149.67621 111.1435) + (xy 149.739709 111.104511) + (xy 149.744037 111.102085) + (xy 149.74824 111.099944) + (xy 149.748248 111.099938) + (xy 149.752625 111.097708) + (xy 149.755427 111.094906) + (xy 149.756264 111.094346) + (xy 149.759316 111.092472) + (xy 149.775881 111.082301) + (xy 149.858058 110.991513) + (xy 149.911451 110.881311) + (xy 149.912278 110.876399) + (xy 149.929949 110.771357) + (xy 149.931767 110.760552) + (xy 149.931896 110.75) + (xy 149.914536 110.628781) + (xy 149.863852 110.517307) + (xy 149.849199 110.500302) + (xy 149.847708 110.497375) + (xy 149.8419 110.491567) + (xy 149.838746 110.48817) + (xy 149.811743 110.456831) + (xy 149.783918 110.424539) + (xy 149.763741 110.411461) + (xy 149.760155 110.408559) + (xy 149.760081 110.408661) + (xy 149.756106 110.405773) + (xy 149.752625 110.402292) + (xy 149.741343 110.396543) + (xy 149.735736 110.393309) + (xy 149.684893 110.360354) + (xy 149.68489 110.360353) + (xy 149.68116 110.357935) + (xy 149.676901 110.356661) + (xy 149.676898 110.35666) + (xy 149.658345 110.351112) + (xy 149.648839 110.348269) + (xy 149.638377 110.344079) + (xy 149.632813 110.341244) + (xy 149.621067 110.339384) + (xy 149.612951 110.337536) + (xy 149.563838 110.322848) + (xy 149.519496 110.322577) + (xy 149.510103 110.321809) + (xy 149.504857 110.320978) + (xy 149.504856 110.320978) + (xy 149.5 110.320209) + (xy 149.491373 110.321576) + (xy 149.48122 110.322344) + (xy 149.462836 110.322231) + (xy 149.445838 110.322127) + (xy 149.445836 110.322127) + (xy 149.441385 110.3221) + (xy 149.387011 110.337641) + (xy 149.379623 110.339275) + (xy 149.367187 110.341244) + (xy 149.362804 110.343477) + (xy 149.36187 110.343781) + (xy 149.352156 110.347603) + (xy 149.349821 110.34827) + (xy 149.327929 110.354526) + (xy 149.327927 110.354527) + (xy 149.323644 110.355751) + (xy 149.264119 110.393309) + (xy 149.262819 110.394129) + (xy 149.257842 110.396959) + (xy 149.251757 110.400059) + (xy 149.251756 110.40006) + (xy 149.247375 110.402292) + (xy 149.243897 110.40577) + (xy 149.242445 110.406825) + (xy 149.239058 110.40912) + (xy 149.22008 110.421095) + (xy 149.217137 110.424427) + (xy 149.217135 110.424429) + (xy 149.157156 110.492342) + (xy 149.156032 110.493538) + (xy 149.155775 110.493892) + (xy 149.155554 110.494113) + (xy 149.155405 110.494204) + (xy 149.154504 110.495163) + (xy 149.152292 110.497375) + (xy 149.151509 110.496592) + (xy 149.150362 110.497296) + (xy 149.151721 110.498496) + (xy 149.139018 110.512879) + (xy 149.137127 110.516906) + (xy 149.137126 110.516908) + (xy 149.134237 110.523062) + (xy 149.098884 110.555287) + (xy 149.077662 110.559) + (xy 148.453518 110.559) + (xy 148.409324 110.540694) + (xy 148.391018 110.4965) + (xy 148.401551 110.461777) + (xy 148.436859 110.408933) + (xy 148.44148 110.397779) + (xy 148.451401 110.347904) + (xy 148.452 110.341823) + (xy 148.452 110.325931) + (xy 148.448359 110.317141) + (xy 148.439569 110.3135) + (xy 146.735432 110.3135) + (xy 146.726642 110.317141) + (xy 146.723001 110.325931) + (xy 146.723001 110.341821) + (xy 146.7236 110.347906) + (xy 146.73352 110.397776) + (xy 146.738142 110.408934) + (xy 146.775487 110.464827) + (xy 146.784819 110.511744) + (xy 146.775486 110.534274) + (xy 146.734249 110.595988) + (xy 146.733048 110.602024) + (xy 146.733048 110.602025) + (xy 146.723494 110.65006) + (xy 146.7225 110.655056) + (xy 146.7225 110.844944) + (xy 146.723099 110.847954) + (xy 146.723099 110.847957) + (xy 146.731086 110.888112) + (xy 146.734249 110.904012) + (xy 146.771553 110.959839) + (xy 146.772847 110.961776) + (xy 146.78218 111.008692) + (xy 146.755605 111.048466) + (xy 146.720881 111.059) + (xy 145.043232 111.059) + (xy 145.035893 111.05775) + (xy 145.03581 111.058477) + (xy 145.028819 111.05768) + (xy 145.022178 111.055348) + (xy 145.015185 111.056126) + (xy 145.015184 111.056126) + (xy 144.9928 111.058617) + (xy 144.985888 111.059) + (xy 144.978467 111.059) + (xy 144.975044 111.059781) + (xy 144.975043 111.059781) + (xy 144.971552 111.060577) + (xy 144.964569 111.061758) + (xy 144.942562 111.064207) + (xy 144.935571 111.064985) + (xy 144.929608 111.068718) + (xy 144.925675 111.070088) + (xy 144.921905 111.071902) + (xy 144.915041 111.073468) + (xy 144.909535 111.077855) + (xy 144.909536 111.077855) + (xy 144.892229 111.091646) + (xy 144.886446 111.09574) + (xy 144.88329 111.097716) + (xy 144.883284 111.097721) + (xy 144.880289 111.099596) + (xy 144.875076 111.104809) + (xy 144.869832 111.109494) + (xy 144.857031 111.119695) + (xy 144.846891 111.127775) + (xy 144.843833 111.134114) + (xy 144.839442 111.139615) + (xy 144.838908 111.139189) + (xy 144.834532 111.145353) + (xy 144.530094 111.449791) + (xy 144.4859 111.468097) + (xy 144.441706 111.449791) + (xy 144.4234 111.405597) + (xy 144.4234 111.372603) + (xy 144.441706 111.328409) + (xy 145.810809 109.959306) + (xy 145.855003 109.941) + (xy 146.721482 109.941) + (xy 146.765676 109.959306) + (xy 146.783982 110.0035) + (xy 146.773449 110.038223) + (xy 146.738141 110.091067) + (xy 146.73352 110.102221) + (xy 146.723599 110.152096) + (xy 146.723 110.158177) + (xy 146.723 110.174069) + (xy 146.726641 110.182859) + (xy 146.735431 110.1865) + (xy 148.439568 110.1865) + (xy 148.448358 110.182859) + (xy 148.451999 110.174069) + (xy 148.451999 110.158179) + (xy 148.4514 110.152094) + (xy 148.44148 110.102224) + (xy 148.436858 110.091066) + (xy 148.399513 110.035173) + (xy 148.390181 109.988256) + (xy 148.399514 109.965726) + (xy 148.408998 109.951533) + (xy 148.440751 109.904012) + (xy 148.441966 109.897906) + (xy 148.451901 109.847957) + (xy 148.451901 109.847954) + (xy 148.4525 109.844944) + (xy 148.4525 109.655056) + (xy 148.45118 109.648417) + (xy 148.441952 109.602025) + (xy 148.441952 109.602024) + (xy 148.440751 109.595988) + (xy 148.399814 109.534722) + (xy 148.390482 109.487807) + (xy 148.399813 109.465279) + (xy 148.440751 109.404012) + (xy 148.4525 109.344944) + (xy 148.4525 109.155056) + (xy 148.446025 109.1225) + (xy 148.441952 109.102025) + (xy 148.441952 109.102024) + (xy 148.440751 109.095988) + (xy 148.399814 109.034722) + (xy 148.390482 108.987807) + (xy 148.399813 108.965279) + (xy 148.440751 108.904012) + (xy 148.44843 108.865405) + (xy 148.451901 108.847957) + (xy 148.451901 108.847954) + (xy 148.4525 108.844944) + (xy 148.4525 108.655056) + (xy 148.446843 108.626612) + (xy 148.441952 108.602025) + (xy 148.441952 108.602024) + (xy 148.440751 108.595988) + (xy 148.399814 108.534722) + (xy 148.390482 108.487807) + (xy 148.399813 108.465279) + (xy 148.440751 108.404012) + (xy 148.44324 108.391498) + (xy 148.451901 108.347957) + (xy 148.451901 108.347954) + (xy 148.4525 108.344944) + (xy 148.4525 108.155056) + (xy 148.4505 108.144998) + (xy 148.441952 108.102025) + (xy 148.441952 108.102024) + (xy 148.440751 108.095988) + (xy 148.399814 108.034722) + (xy 148.390482 107.987807) + (xy 148.399813 107.965279) + (xy 148.440751 107.904012) + (xy 148.441993 107.897767) + (xy 148.451901 107.847957) + (xy 148.451901 107.847954) + (xy 148.4525 107.844944) + (xy 148.4525 107.655056) + (xy 148.443438 107.609494) + (xy 148.441952 107.602025) + (xy 148.441952 107.602024) + (xy 148.440751 107.595988) + (xy 148.399814 107.534722) + (xy 148.390482 107.487807) + (xy 148.399813 107.465279) + (xy 148.440751 107.404012) + (xy 148.449482 107.360119) + (xy 148.451901 107.347957) + (xy 148.451901 107.347954) + (xy 148.4525 107.344944) + (xy 148.4525 107.155056) + (xy 148.451007 107.147546) + (xy 148.441952 107.102025) + (xy 148.441952 107.102024) + (xy 148.440751 107.095988) + (xy 148.399814 107.034722) + (xy 148.390482 106.987807) + (xy 148.399813 106.965279) + (xy 148.440751 106.904012) + (xy 148.441991 106.897779) + (xy 148.451901 106.847957) + (xy 148.451901 106.847954) + (xy 148.4525 106.844944) + (xy 148.4525 106.655056) + (xy 148.45174 106.651232) + (xy 148.441952 106.602025) + (xy 148.441952 106.602024) + (xy 148.440751 106.595988) + (xy 148.399814 106.534722) + (xy 148.390482 106.487807) + (xy 148.399813 106.465278) + (xy 148.440751 106.404012) + (xy 148.441991 106.397779) + (xy 148.451901 106.347957) + (xy 148.451901 106.347954) + (xy 148.4525 106.344944) + (xy 148.4525 106.155056) + (xy 148.451507 106.15006) + (xy 148.441952 106.102025) + (xy 148.441952 106.102024) + (xy 148.440751 106.095988) + (xy 148.399814 106.034722) + (xy 148.390482 105.987807) + (xy 148.399813 105.965279) + (xy 148.440751 105.904012) + (xy 148.445041 105.882443) + (xy 148.451901 105.847957) + (xy 148.451901 105.847954) + (xy 148.4525 105.844944) + (xy 148.4525 105.655056) + (xy 148.451007 105.647546) + (xy 148.441952 105.602025) + (xy 148.441952 105.602024) + (xy 148.440751 105.595988) + (xy 148.399814 105.534722) + (xy 148.390482 105.487807) + (xy 148.399813 105.465279) + (xy 148.440751 105.404012) + (xy 148.441991 105.397779) + (xy 148.451901 105.347957) + (xy 148.451901 105.347954) + (xy 148.4525 105.344944) + (xy 148.4525 105.155056) + (xy 148.451007 105.147546) + (xy 148.441952 105.102025) + (xy 148.441952 105.102024) + (xy 148.440751 105.095988) + (xy 148.399514 105.034274) + (xy 148.390181 104.987358) + (xy 148.399513 104.964827) + (xy 148.436859 104.908933) + (xy 148.44148 104.897779) + (xy 148.451401 104.847904) + (xy 148.452 104.841823) + (xy 148.452 104.825931) + (xy 148.448359 104.817141) + (xy 148.439569 104.8135) + (xy 146.735432 104.8135) + (xy 146.726642 104.817141) + (xy 146.723001 104.825931) + (xy 146.723001 104.841821) + (xy 146.7236 104.847906) + (xy 146.73352 104.897776) + (xy 146.738142 104.908934) + (xy 146.773449 104.961777) + (xy 146.782781 105.008694) + (xy 146.756205 105.048467) + (xy 146.721482 105.059) + (xy 145.823151 105.059) + (xy 145.778957 105.040694) + (xy 145.760651 104.9965) + (xy 145.778957 104.952306) + (xy 145.8026 104.937475) + (xy 145.807431 104.935793) + (xy 145.814429 104.935014) + (xy 145.820396 104.931279) + (xy 145.824341 104.929905) + (xy 145.828097 104.928098) + (xy 145.834959 104.926532) + (xy 145.857774 104.908351) + (xy 145.863559 104.904256) + (xy 145.866715 104.90228) + (xy 145.866717 104.902279) + (xy 145.869711 104.900404) + (xy 145.874924 104.895191) + (xy 145.880168 104.890506) + (xy 145.897604 104.876612) + (xy 145.897604 104.876611) + (xy 145.903109 104.872225) + (xy 145.906167 104.865886) + (xy 145.910558 104.860385) + (xy 145.911092 104.860811) + (xy 145.915468 104.854647) + (xy 146.310809 104.459306) + (xy 146.355003 104.441) + (xy 146.721482 104.441) + (xy 146.765676 104.459306) + (xy 146.783982 104.5035) + (xy 146.773449 104.538223) + (xy 146.738141 104.591067) + (xy 146.73352 104.602221) + (xy 146.723599 104.652096) + (xy 146.723 104.658177) + (xy 146.723 104.674069) + (xy 146.726641 104.682859) + (xy 146.735431 104.6865) + (xy 148.439568 104.6865) + (xy 148.448358 104.682859) + (xy 148.451999 104.674069) + (xy 148.451999 104.658179) + (xy 148.4514 104.652094) + (xy 148.44148 104.602224) + (xy 148.436858 104.591066) + (xy 148.399513 104.535173) + (xy 148.390181 104.488256) + (xy 148.399514 104.465726) + (xy 148.403804 104.459306) + (xy 148.440751 104.404012) + (xy 148.442717 104.394129) + (xy 148.451901 104.347957) + (xy 148.451901 104.347954) + (xy 148.4525 104.344944) + (xy 148.4525 104.155056) + (xy 148.451007 104.147546) + (xy 148.441952 104.102025) + (xy 148.441952 104.102024) + (xy 148.440751 104.095988) + (xy 148.402153 104.038223) + (xy 148.39282 103.991308) + (xy 148.419395 103.951534) + (xy 148.454119 103.941) + (xy 149.076187 103.941) + (xy 149.120381 103.959306) + (xy 149.129248 103.970473) + (xy 149.13154 103.974155) + (xy 149.133333 103.97823) + (xy 149.147198 103.994724) + (xy 149.148029 103.995713) + (xy 149.150157 103.998434) + (xy 149.152292 104.002625) + (xy 149.160081 104.010414) + (xy 149.16373 104.014392) + (xy 149.207685 104.066683) + (xy 149.212127 104.071968) + (xy 149.235399 104.087459) + (xy 149.241836 104.092733) + (xy 149.243899 104.094232) + (xy 149.247375 104.097708) + (xy 149.251753 104.099939) + (xy 149.251756 104.099941) + (xy 149.25873 104.103494) + (xy 149.264977 104.107148) + (xy 149.314064 104.139823) + (xy 149.318313 104.141151) + (xy 149.318314 104.141151) + (xy 149.350296 104.151143) + (xy 149.360027 104.155109) + (xy 149.362799 104.156521) + (xy 149.362803 104.156522) + (xy 149.367187 104.158756) + (xy 149.377852 104.160445) + (xy 149.386713 104.16252) + (xy 149.426696 104.175012) + (xy 149.426699 104.175012) + (xy 149.430948 104.17634) + (xy 149.480069 104.177241) + (xy 149.488683 104.177999) + (xy 149.49514 104.179022) + (xy 149.495144 104.179022) + (xy 149.5 104.179791) + (xy 149.506947 104.17869) + (xy 149.517853 104.177933) + (xy 149.553383 104.178584) + (xy 149.613532 104.162185) + (xy 149.62019 104.160755) + (xy 149.622147 104.160445) + (xy 149.632813 104.158756) + (xy 149.637196 104.156522) + (xy 149.641875 104.155002) + (xy 149.641878 104.15501) + (xy 149.646727 104.153136) + (xy 149.671527 104.146375) + (xy 149.683231 104.139189) + (xy 149.739709 104.104511) + (xy 149.744037 104.102085) + (xy 149.74824 104.099944) + (xy 149.748248 104.099938) + (xy 149.752625 104.097708) + (xy 149.755427 104.094906) + (xy 149.756264 104.094346) + (xy 149.76065 104.091653) + (xy 149.775881 104.082301) + (xy 149.858058 103.991513) + (xy 149.911451 103.881311) + (xy 149.913406 103.869695) + (xy 149.929949 103.771357) + (xy 149.931767 103.760552) + (xy 149.931896 103.75) + (xy 149.914536 103.628781) + (xy 149.863852 103.517307) + (xy 149.849199 103.500302) + (xy 149.847708 103.497375) + (xy 149.8419 103.491567) + (xy 149.838746 103.48817) + (xy 149.786826 103.427914) + (xy 149.783918 103.424539) + (xy 149.763741 103.411461) + (xy 149.760155 103.408559) + (xy 149.760081 103.408661) + (xy 149.756106 103.405773) + (xy 149.752625 103.402292) + (xy 149.741343 103.396543) + (xy 149.735736 103.393309) + (xy 149.684893 103.360354) + (xy 149.68489 103.360353) + (xy 149.68116 103.357935) + (xy 149.676901 103.356661) + (xy 149.676898 103.35666) + (xy 149.654429 103.349941) + (xy 149.648839 103.348269) + (xy 149.638377 103.344079) + (xy 149.632813 103.341244) + (xy 149.621067 103.339384) + (xy 149.612951 103.337536) + (xy 149.563838 103.322848) + (xy 149.519496 103.322577) + (xy 149.510103 103.321809) + (xy 149.504857 103.320978) + (xy 149.504856 103.320978) + (xy 149.5 103.320209) + (xy 149.491373 103.321576) + (xy 149.48122 103.322344) + (xy 149.462836 103.322231) + (xy 149.445838 103.322127) + (xy 149.445836 103.322127) + (xy 149.441385 103.3221) + (xy 149.387011 103.337641) + (xy 149.379623 103.339275) + (xy 149.367187 103.341244) + (xy 149.362804 103.343477) + (xy 149.36187 103.343781) + (xy 149.352156 103.347603) + (xy 149.350916 103.347957) + (xy 149.327929 103.354526) + (xy 149.327927 103.354527) + (xy 149.323644 103.355751) + (xy 149.319875 103.358129) + (xy 149.303622 103.368384) + (xy 149.264119 103.393309) + (xy 149.262819 103.394129) + (xy 149.257842 103.396959) + (xy 149.251757 103.400059) + (xy 149.251756 103.40006) + (xy 149.247375 103.402292) + (xy 149.243897 103.40577) + (xy 149.242445 103.406825) + (xy 149.239059 103.40912) + (xy 149.239043 103.40913) + (xy 149.22008 103.421095) + (xy 149.217137 103.424427) + (xy 149.217135 103.424429) + (xy 149.157156 103.492342) + (xy 149.156032 103.493538) + (xy 149.155775 103.493892) + (xy 149.155554 103.494113) + (xy 149.155405 103.494204) + (xy 149.154504 103.495163) + (xy 149.152292 103.497375) + (xy 149.151509 103.496592) + (xy 149.150362 103.497296) + (xy 149.151721 103.498496) + (xy 149.139018 103.512879) + (xy 149.137127 103.516906) + (xy 149.137126 103.516908) + (xy 149.134237 103.523062) + (xy 149.098884 103.555287) + (xy 149.077662 103.559) + (xy 148.454119 103.559) + (xy 148.409925 103.540694) + (xy 148.391619 103.4965) + (xy 148.402153 103.461776) + (xy 148.402216 103.461683) + (xy 148.440751 103.404012) + (xy 148.441991 103.397779) + (xy 148.451901 103.347957) + (xy 148.451901 103.347954) + (xy 148.4525 103.344944) + (xy 148.4525 103.155056) + (xy 148.448413 103.134506) + (xy 148.441952 103.102025) + (xy 148.441952 103.102024) + (xy 148.440751 103.095988) + (xy 148.399814 103.034722) + (xy 148.390482 102.987807) + (xy 148.399813 102.965279) + (xy 148.440751 102.904012) + (xy 148.4525 102.844944) + (xy 148.4525 102.655056) + (xy 148.451507 102.65006) + (xy 148.441952 102.602025) + (xy 148.441952 102.602024) + (xy 148.440751 102.595988) + (xy 148.399814 102.534722) + (xy 148.390482 102.487807) + (xy 148.399813 102.465279) + (xy 148.440751 102.404012) + (xy 148.441991 102.397779) + (xy 148.451901 102.347957) + (xy 148.451901 102.347954) + (xy 148.4525 102.344944) + (xy 148.4525 102.155056) + (xy 148.447144 102.128126) + (xy 148.441952 102.102025) + (xy 148.441952 102.102024) + (xy 148.440751 102.095988) + (xy 148.399814 102.034722) + (xy 148.390482 101.987807) + (xy 148.399813 101.965278) + (xy 148.440751 101.904012) + (xy 148.441991 101.897779) + (xy 148.451901 101.847957) + (xy 148.451901 101.847954) + (xy 148.4525 101.844944) + (xy 148.4525 101.655056) + (xy 148.449485 101.639895) + (xy 148.441952 101.602025) + (xy 148.441952 101.602024) + (xy 148.440751 101.595988) + (xy 148.399814 101.534722) + (xy 148.390482 101.487807) + (xy 148.399813 101.465279) + (xy 148.440751 101.404012) + (xy 148.443024 101.392586) + (xy 148.451901 101.347957) + (xy 148.451901 101.347954) + (xy 148.4525 101.344944) + (xy 148.4525 101.155056) + (xy 148.443438 101.109494) + (xy 148.441952 101.102025) + (xy 148.441952 101.102024) + (xy 148.440751 101.095988) + (xy 148.399814 101.034722) + (xy 148.390482 100.987807) + (xy 148.399813 100.965279) + (xy 148.440751 100.904012) + (xy 148.443095 100.892227) + (xy 148.451901 100.847957) + (xy 148.451901 100.847954) + (xy 148.4525 100.844944) + (xy 148.4525 100.655056) + (xy 148.451458 100.649814) + (xy 148.441952 100.602025) + (xy 148.441952 100.602024) + (xy 148.440751 100.595988) + (xy 148.399814 100.534722) + (xy 148.390482 100.487807) + (xy 148.399813 100.465279) + (xy 148.440751 100.404012) + (xy 148.443914 100.388112) + (xy 148.451901 100.347957) + (xy 148.451901 100.347954) + (xy 148.4525 100.344944) + (xy 148.4525 100.155056) + (xy 148.447144 100.128126) + (xy 148.441952 100.102025) + (xy 148.441952 100.102024) + (xy 148.440751 100.095988) + (xy 148.399514 100.034274) + (xy 148.390181 99.987358) + (xy 148.399513 99.964827) + (xy 148.436859 99.908933) + (xy 148.44148 99.897779) + (xy 148.451401 99.847904) + (xy 148.452 99.841823) + (xy 148.452 99.825931) + (xy 148.448359 99.817141) + (xy 148.439569 99.8135) + (xy 146.735432 99.8135) + (xy 146.726642 99.817141) + (xy 146.723001 99.825931) + (xy 146.723001 99.841821) + (xy 146.7236 99.847906) + (xy 146.73352 99.897776) + (xy 146.738142 99.908934) + (xy 146.773449 99.961777) + (xy 146.782781 100.008694) + (xy 146.756205 100.048467) + (xy 146.721482 100.059) + (xy 143.605003 100.059) + (xy 143.560809 100.040694) + (xy 142.567809 99.047694) + (xy 142.549503 99.0035) + (xy 142.567809 98.959306) + (xy 142.612003 98.941) + (xy 146.720881 98.941) + (xy 146.765075 98.959306) + (xy 146.783381 99.0035) + (xy 146.772847 99.038223) + (xy 146.734249 99.095988) + (xy 146.733048 99.102024) + (xy 146.733048 99.102025) + (xy 146.723494 99.15006) + (xy 146.7225 99.155056) + (xy 146.7225 99.344944) + (xy 146.723099 99.347954) + (xy 146.723099 99.347957) + (xy 146.731086 99.388112) + (xy 146.734249 99.404012) + (xy 146.755957 99.4365) + (xy 146.775486 99.465726) + (xy 146.784819 99.512642) + (xy 146.775487 99.535173) + (xy 146.738141 99.591067) + (xy 146.73352 99.602221) + (xy 146.723599 99.652096) + (xy 146.723 99.658177) + (xy 146.723 99.674069) + (xy 146.726641 99.682859) + (xy 146.735431 99.6865) + (xy 148.439568 99.6865) + (xy 148.448358 99.682859) + (xy 148.451999 99.674069) + (xy 148.451999 99.658179) + (xy 148.4514 99.652094) + (xy 148.44148 99.602224) + (xy 148.436858 99.591066) + (xy 148.401551 99.538223) + (xy 148.392219 99.491306) + (xy 148.418795 99.451533) + (xy 148.453518 99.441) + (xy 149.076187 99.441) + (xy 149.120381 99.459306) + (xy 149.129248 99.470473) + (xy 149.13154 99.474155) + (xy 149.133333 99.47823) + (xy 149.147014 99.494506) + (xy 149.148029 99.495713) + (xy 149.150157 99.498434) + (xy 149.152292 99.502625) + (xy 149.160081 99.510414) + (xy 149.16373 99.514392) + (xy 149.20807 99.567141) + (xy 149.212127 99.571968) + (xy 149.235399 99.587459) + (xy 149.241836 99.592733) + (xy 149.243899 99.594232) + (xy 149.247375 99.597708) + (xy 149.251753 99.599939) + (xy 149.251756 99.599941) + (xy 149.25873 99.603494) + (xy 149.264977 99.607148) + (xy 149.314064 99.639823) + (xy 149.318313 99.641151) + (xy 149.318314 99.641151) + (xy 149.350296 99.651143) + (xy 149.360027 99.655109) + (xy 149.362799 99.656521) + (xy 149.362803 99.656522) + (xy 149.367187 99.658756) + (xy 149.377852 99.660445) + (xy 149.386713 99.66252) + (xy 149.426696 99.675012) + (xy 149.426699 99.675012) + (xy 149.430948 99.67634) + (xy 149.480069 99.677241) + (xy 149.488683 99.677999) + (xy 149.49514 99.679022) + (xy 149.495144 99.679022) + (xy 149.5 99.679791) + (xy 149.506947 99.67869) + (xy 149.517853 99.677933) + (xy 149.553383 99.678584) + (xy 149.613532 99.662185) + (xy 149.62019 99.660755) + (xy 149.622147 99.660445) + (xy 149.632813 99.658756) + (xy 149.637196 99.656522) + (xy 149.641875 99.655002) + (xy 149.641878 99.65501) + (xy 149.646727 99.653136) + (xy 149.671527 99.646375) + (xy 149.739709 99.604511) + (xy 149.744037 99.602085) + (xy 149.74824 99.599944) + (xy 149.748248 99.599938) + (xy 149.752625 99.597708) + (xy 149.755427 99.594906) + (xy 149.756264 99.594346) + (xy 149.761606 99.591066) + (xy 149.775881 99.582301) + (xy 149.858058 99.491513) + (xy 149.911451 99.381311) + (xy 149.913317 99.370224) + (xy 149.929949 99.271357) + (xy 149.931767 99.260552) + (xy 149.931896 99.25) + (xy 149.914536 99.128781) + (xy 149.863852 99.017307) + (xy 149.849199 99.000302) + (xy 149.847708 98.997375) + (xy 149.8419 98.991567) + (xy 149.838746 98.98817) + (xy 149.786826 98.927914) + (xy 149.783918 98.924539) + (xy 149.763741 98.911461) + (xy 149.760155 98.908559) + (xy 149.760081 98.908661) + (xy 149.756106 98.905773) + (xy 149.752625 98.902292) + (xy 149.741343 98.896543) + (xy 149.735736 98.893309) + (xy 149.735399 98.89309) + (xy 149.70708 98.874735) + (xy 149.684893 98.860354) + (xy 149.68489 98.860353) + (xy 149.68116 98.857935) + (xy 149.676901 98.856661) + (xy 149.676898 98.85666) + (xy 149.655275 98.850194) + (xy 149.648839 98.848269) + (xy 149.638377 98.844079) + (xy 149.632813 98.841244) + (xy 149.621067 98.839384) + (xy 149.612951 98.837536) + (xy 149.594781 98.832102) + (xy 149.563838 98.822848) + (xy 149.519496 98.822577) + (xy 149.510103 98.821809) + (xy 149.504857 98.820978) + (xy 149.504856 98.820978) + (xy 149.5 98.820209) + (xy 149.491373 98.821576) + (xy 149.48122 98.822344) + (xy 149.462836 98.822231) + (xy 149.445838 98.822127) + (xy 149.445836 98.822127) + (xy 149.441385 98.8221) + (xy 149.387011 98.837641) + (xy 149.379623 98.839275) + (xy 149.367187 98.841244) + (xy 149.362804 98.843477) + (xy 149.36187 98.843781) + (xy 149.352155 98.847603) + (xy 149.327929 98.854526) + (xy 149.327927 98.854527) + (xy 149.323644 98.855751) + (xy 149.319875 98.858129) + (xy 149.315624 98.860811) + (xy 149.26352 98.893687) + (xy 149.262819 98.894129) + (xy 149.257842 98.896959) + (xy 149.251757 98.900059) + (xy 149.251756 98.90006) + (xy 149.247375 98.902292) + (xy 149.243897 98.90577) + (xy 149.242445 98.906825) + (xy 149.239058 98.90912) + (xy 149.22008 98.921095) + (xy 149.217137 98.924427) + (xy 149.217135 98.924429) + (xy 149.157156 98.992342) + (xy 149.156032 98.993538) + (xy 149.155775 98.993892) + (xy 149.155554 98.994113) + (xy 149.155405 98.994204) + (xy 149.154504 98.995163) + (xy 149.152292 98.997375) + (xy 149.151509 98.996592) + (xy 149.150362 98.997296) + (xy 149.151721 98.998496) + (xy 149.142476 99.008964) + (xy 149.139018 99.012879) + (xy 149.137127 99.016906) + (xy 149.137126 99.016908) + (xy 149.134237 99.023062) + (xy 149.098884 99.055287) + (xy 149.077662 99.059) + (xy 148.454119 99.059) + (xy 148.409925 99.040694) + (xy 148.391619 98.9965) + (xy 148.402153 98.961776) + (xy 148.403804 98.959306) + (xy 148.440751 98.904012) + (xy 148.441993 98.897767) + (xy 148.451901 98.847957) + (xy 148.451901 98.847954) + (xy 148.4525 98.844944) + (xy 148.4525 98.655056) + (xy 148.451064 98.647833) + (xy 148.441952 98.602025) + (xy 148.441952 98.602024) + (xy 148.440751 98.595988) + (xy 148.399814 98.534722) + (xy 148.390482 98.487807) + (xy 148.399813 98.465279) + (xy 148.440751 98.404012) + (xy 148.443309 98.391151) + (xy 148.451901 98.347957) + (xy 148.451901 98.347954) + (xy 148.4525 98.344944) + (xy 148.4525 98.155056) + (xy 148.451007 98.147546) + (xy 148.441952 98.102025) + (xy 148.441952 98.102024) + (xy 148.440751 98.095988) + (xy 148.399814 98.034722) + (xy 148.390482 97.987807) + (xy 148.399813 97.965279) + (xy 148.440751 97.904012) + (xy 148.443024 97.892586) + (xy 148.451901 97.847957) + (xy 148.451901 97.847954) + (xy 148.4525 97.844944) + (xy 148.4525 97.655056) + (xy 148.451507 97.65006) + (xy 148.441952 97.602025) + (xy 148.441952 97.602024) + (xy 148.440751 97.595988) + (xy 148.399814 97.534722) + (xy 148.390482 97.487807) + (xy 148.399813 97.465279) + (xy 148.440751 97.404012) + (xy 148.44288 97.393309) + (xy 148.451901 97.347957) + (xy 148.451901 97.347954) + (xy 148.4525 97.344944) + (xy 148.4525 97.155056) + (xy 148.451419 97.149618) + (xy 148.441952 97.102025) + (xy 148.441952 97.102024) + (xy 148.440751 97.095988) + (xy 148.399814 97.034722) + (xy 148.390482 96.987807) + (xy 148.399813 96.965279) + (xy 148.440751 96.904012) + (xy 148.442046 96.8975) + (xy 148.451901 96.847957) + (xy 148.451901 96.847954) + (xy 148.4525 96.844944) + (xy 148.4525 96.655056) + (xy 148.451255 96.648793) + (xy 148.441952 96.602025) + (xy 148.441952 96.602024) + (xy 148.440751 96.595988) + (xy 148.399814 96.534722) + (xy 148.390482 96.487807) + (xy 148.399813 96.465279) + (xy 148.440751 96.404012) + (xy 148.445041 96.382443) + (xy 148.451901 96.347957) + (xy 148.451901 96.347954) + (xy 148.4525 96.344944) + (xy 148.4525 96.155056) + (xy 148.450973 96.147376) + (xy 148.441952 96.102025) + (xy 148.441952 96.102024) + (xy 148.440751 96.095988) + (xy 148.395994 96.029006) + (xy 148.329012 95.984249) + (xy 148.322976 95.983048) + (xy 148.322975 95.983048) + (xy 148.272957 95.973099) + (xy 148.272954 95.973099) + (xy 148.269944 95.9725) + (xy 147.841 95.9725) + (xy 147.796806 95.954194) + (xy 147.7785 95.91) + (xy 147.7785 93.880734) + (xy 147.779753 93.873393) + (xy 147.779024 93.87331) + (xy 147.779821 93.866319) + (xy 147.782153 93.859678) + (xy 147.781321 93.852196) + (xy 147.778883 93.830295) + (xy 147.7785 93.823382) + (xy 147.7785 93.815967) + (xy 147.77692 93.809038) + (xy 147.775745 93.802095) + (xy 147.772515 93.773072) + (xy 147.76878 93.767106) + (xy 147.767408 93.763167) + (xy 147.765597 93.759404) + (xy 147.764032 93.752541) + (xy 147.745851 93.729726) + (xy 147.741756 93.723941) + (xy 147.73978 93.720785) + (xy 147.739779 93.720783) + (xy 147.737904 93.717789) + (xy 147.732691 93.712576) + (xy 147.728006 93.707332) + (xy 147.714112 93.689896) + (xy 147.714111 93.689896) + (xy 147.709725 93.684391) + (xy 147.703386 93.681333) + (xy 147.697885 93.676942) + (xy 147.698311 93.676408) + (xy 147.692147 93.672032) + (xy 144.014839 89.994724) + (xy 147.818136 89.994724) + (xy 147.818713 89.999137) + (xy 147.818713 89.999138) + (xy 147.832774 90.10666) + (xy 147.834014 90.116145) + (xy 147.835809 90.120224) + (xy 147.839286 90.128126) + (xy 147.841185 90.132443) + (xy 147.841244 90.132813) + (xy 147.842007 90.134311) + (xy 147.844031 90.13891) + (xy 147.844031 90.138911) + (xy 147.87992 90.220473) + (xy 147.883333 90.22823) + (xy 147.897198 90.244724) + (xy 147.898029 90.245713) + (xy 147.900157 90.248434) + (xy 147.902292 90.252625) + (xy 147.910081 90.260414) + (xy 147.91373 90.264392) + (xy 147.949913 90.307437) + (xy 147.962127 90.321968) + (xy 147.985399 90.337459) + (xy 147.991836 90.342733) + (xy 147.993899 90.344232) + (xy 147.997375 90.347708) + (xy 148.001753 90.349939) + (xy 148.001756 90.349941) + (xy 148.00873 90.353494) + (xy 148.014977 90.357148) + (xy 148.064064 90.389823) + (xy 148.068313 90.391151) + (xy 148.068314 90.391151) + (xy 148.100296 90.401143) + (xy 148.110027 90.405109) + (xy 148.112799 90.406521) + (xy 148.112803 90.406522) + (xy 148.117187 90.408756) + (xy 148.127852 90.410445) + (xy 148.136713 90.41252) + (xy 148.176696 90.425012) + (xy 148.176699 90.425012) + (xy 148.180948 90.42634) + (xy 148.230069 90.427241) + (xy 148.238683 90.427999) + (xy 148.24514 90.429022) + (xy 148.245144 90.429022) + (xy 148.25 90.429791) + (xy 148.256947 90.42869) + (xy 148.267853 90.427933) + (xy 148.303383 90.428584) + (xy 148.363532 90.412185) + (xy 148.37019 90.410755) + (xy 148.372147 90.410445) + (xy 148.382813 90.408756) + (xy 148.387196 90.406522) + (xy 148.391875 90.405002) + (xy 148.391878 90.40501) + (xy 148.396727 90.403136) + (xy 148.421527 90.396375) + (xy 148.444218 90.382443) + (xy 148.489709 90.354511) + (xy 148.494037 90.352085) + (xy 148.49824 90.349944) + (xy 148.498248 90.349938) + (xy 148.502625 90.347708) + (xy 148.505427 90.344906) + (xy 148.506264 90.344346) + (xy 148.508891 90.342733) + (xy 148.525881 90.332301) + (xy 148.608058 90.241513) + (xy 148.661451 90.131311) + (xy 148.663317 90.120224) + (xy 148.674373 90.0545) + (xy 148.681767 90.010552) + (xy 148.681896 90) + (xy 148.664536 89.878781) + (xy 148.613852 89.767307) + (xy 148.610947 89.763935) + (xy 148.608547 89.760183) + (xy 148.609455 89.759602) + (xy 148.596 89.723377) + (xy 148.596 89.326097) + (xy 148.614306 89.281903) + (xy 148.633129 89.268978) + (xy 148.709628 89.234999) + (xy 148.709629 89.234998) + (xy 148.7149 89.232657) + (xy 148.787935 89.159494) + (xy 148.813317 89.102081) + (xy 148.827835 89.069244) + (xy 148.827836 89.069241) + (xy 148.829735 89.064945) + (xy 148.830279 89.060278) + (xy 148.83028 89.060275) + (xy 148.832288 89.043046) + (xy 148.8325 89.04123) + (xy 148.8325 87.65877) + (xy 148.832233 87.656521) + (xy 148.831025 87.646375) + (xy 148.829621 87.634576) + (xy 148.818862 87.610354) + (xy 148.789999 87.545372) + (xy 148.789998 87.545371) + (xy 148.787657 87.5401) + (xy 148.773039 87.525507) + (xy 148.729767 87.482311) + (xy 148.714494 87.467065) + (xy 148.659371 87.442695) + (xy 148.624244 87.427165) + (xy 148.624241 87.427164) + (xy 148.619945 87.425265) + (xy 148.615278 87.424721) + (xy 148.615275 87.42472) + (xy 148.603962 87.423401) + (xy 148.59623 87.4225) + (xy 148.21377 87.4225) + (xy 148.21194 87.422718) + (xy 148.211936 87.422718) + (xy 148.205353 87.423502) + (xy 148.189576 87.425379) + (xy 148.18529 87.427283) + (xy 148.185289 87.427283) + (xy 148.100372 87.465001) + (xy 148.100371 87.465002) + (xy 148.0951 87.467343) + (xy 148.091024 87.471426) + (xy 148.063881 87.498617) + (xy 148.022065 87.540506) + (xy 148.002557 87.584631) + (xy 147.982165 87.630756) + (xy 147.982164 87.630759) + (xy 147.980265 87.635055) + (xy 147.979721 87.639722) + (xy 147.97972 87.639725) + (xy 147.978401 87.651038) + (xy 147.9775 87.65877) + (xy 147.9775 89.04123) + (xy 147.980379 89.065424) + (xy 147.982283 89.06971) + (xy 147.982283 89.069711) + (xy 148.019565 89.153645) + (xy 148.022343 89.1599) + (xy 148.026426 89.163976) + (xy 148.037621 89.175151) + (xy 148.095506 89.232935) + (xy 148.113041 89.240687) + (xy 148.176772 89.268863) + (xy 148.20979 89.303476) + (xy 148.214 89.326026) + (xy 148.214 89.518497) + (xy 148.195694 89.562691) + (xy 148.168678 89.57859) + (xy 148.137011 89.587641) + (xy 148.129623 89.589275) + (xy 148.117187 89.591244) + (xy 148.112804 89.593477) + (xy 148.11187 89.593781) + (xy 148.102155 89.597603) + (xy 148.077929 89.604526) + (xy 148.077927 89.604527) + (xy 148.073644 89.605751) + (xy 148.069875 89.608129) + (xy 148.065624 89.610811) + (xy 148.014119 89.643309) + (xy 148.012819 89.644129) + (xy 148.007842 89.646959) + (xy 148.001757 89.650059) + (xy 148.001756 89.65006) + (xy 147.997375 89.652292) + (xy 147.993897 89.65577) + (xy 147.992445 89.656825) + (xy 147.989058 89.65912) + (xy 147.97008 89.671095) + (xy 147.967137 89.674427) + (xy 147.967135 89.674429) + (xy 147.907156 89.742342) + (xy 147.906032 89.743538) + (xy 147.905775 89.743892) + (xy 147.905554 89.744113) + (xy 147.905405 89.744204) + (xy 147.904504 89.745163) + (xy 147.902292 89.747375) + (xy 147.901509 89.746592) + (xy 147.900362 89.747296) + (xy 147.901721 89.748496) + (xy 147.889018 89.762879) + (xy 147.886939 89.767307) + (xy 147.838868 89.869695) + (xy 147.838867 89.869698) + (xy 147.836976 89.873726) + (xy 147.818136 89.994724) + (xy 144.014839 89.994724) + (xy 143.915628 89.895513) + (xy 143.911323 89.889439) + (xy 143.91075 89.889895) + (xy 143.906369 89.884387) + (xy 143.903322 89.878042) + (xy 143.880239 89.859582) + (xy 143.87508 89.854965) + (xy 143.869831 89.849716) + (xy 143.863825 89.845941) + (xy 143.858052 89.841838) + (xy 143.835267 89.823617) + (xy 143.828407 89.82204) + (xy 143.824647 89.820222) + (xy 143.820711 89.818844) + (xy 143.814752 89.815098) + (xy 143.807758 89.814307) + (xy 143.807757 89.814307) + (xy 143.785764 89.811821) + (xy 143.778787 89.810629) + (xy 143.771703 89.809) + (xy 143.764329 89.809) + (xy 143.757308 89.808604) + (xy 143.755627 89.808414) + (xy 143.728162 89.805309) + (xy 143.721517 89.80763) + (xy 143.714523 89.808414) + (xy 143.714447 89.807736) + (xy 143.706995 89.809) + (xy 140.423049 89.809) + (xy 140.378855 89.790694) + (xy 140.366156 89.772373) + (xy 140.365695 89.77136) + (xy 140.365693 89.771357) + (xy 140.363852 89.767307) + (xy 140.349199 89.750302) + (xy 140.347708 89.747375) + (xy 140.3419 89.741567) + (xy 140.338746 89.73817) + (xy 140.313875 89.709306) + (xy 140.283918 89.674539) + (xy 140.263741 89.661461) + (xy 140.260155 89.658559) + (xy 140.260081 89.658661) + (xy 140.256106 89.655773) + (xy 140.252625 89.652292) + (xy 140.241343 89.646543) + (xy 140.235736 89.643309) + (xy 140.233597 89.641922) + (xy 140.209976 89.626612) + (xy 140.184893 89.610354) + (xy 140.18489 89.610353) + (xy 140.18116 89.607935) + (xy 140.176901 89.606661) + (xy 140.176898 89.60666) + (xy 140.153784 89.599748) + (xy 140.148839 89.598269) + (xy 140.138377 89.594079) + (xy 140.132813 89.591244) + (xy 140.121067 89.589384) + (xy 140.112951 89.587536) + (xy 140.083041 89.578591) + (xy 140.063838 89.572848) + (xy 140.019496 89.572577) + (xy 140.010103 89.571809) + (xy 140.004857 89.570978) + (xy 140.004856 89.570978) + (xy 140 89.570209) + (xy 139.991373 89.571576) + (xy 139.98122 89.572344) + (xy 139.962836 89.572231) + (xy 139.945838 89.572127) + (xy 139.945836 89.572127) + (xy 139.941385 89.5721) + (xy 139.887011 89.587641) + (xy 139.879623 89.589275) + (xy 139.867187 89.591244) + (xy 139.862804 89.593477) + (xy 139.86187 89.593781) + (xy 139.852155 89.597603) + (xy 139.827929 89.604526) + (xy 139.827927 89.604527) + (xy 139.823644 89.605751) + (xy 139.819875 89.608129) + (xy 139.815624 89.610811) + (xy 139.764119 89.643309) + (xy 139.762819 89.644129) + (xy 139.757842 89.646959) + (xy 139.751757 89.650059) + (xy 139.751756 89.65006) + (xy 139.747375 89.652292) + (xy 139.743897 89.65577) + (xy 139.742445 89.656825) + (xy 139.739058 89.65912) + (xy 139.72008 89.671095) + (xy 139.717137 89.674427) + (xy 139.717135 89.674429) + (xy 139.657156 89.742342) + (xy 139.656032 89.743538) + (xy 139.655775 89.743892) + (xy 139.655554 89.744113) + (xy 139.655405 89.744204) + (xy 139.654504 89.745163) + (xy 139.652292 89.747375) + (xy 139.651509 89.746592) + (xy 139.650362 89.747296) + (xy 139.651721 89.748496) + (xy 139.639018 89.762879) + (xy 139.636939 89.767307) + (xy 139.588868 89.869695) + (xy 139.588867 89.869698) + (xy 139.586976 89.873726) + (xy 139.568136 89.994724) + (xy 139.568713 89.999137) + (xy 139.568713 89.999138) + (xy 139.582774 90.10666) + (xy 139.584014 90.116145) + (xy 139.585809 90.120224) + (xy 139.589286 90.128126) + (xy 139.591185 90.132443) + (xy 139.591244 90.132813) + (xy 139.592007 90.134311) + (xy 139.594031 90.13891) + (xy 139.594031 90.138911) + (xy 139.62992 90.220473) + (xy 139.633333 90.22823) + (xy 139.647198 90.244724) + (xy 139.648029 90.245713) + (xy 139.650157 90.248434) + (xy 139.652292 90.252625) + (xy 139.660081 90.260414) + (xy 139.66373 90.264392) + (xy 139.699913 90.307437) + (xy 139.712127 90.321968) + (xy 139.735399 90.337459) + (xy 139.741836 90.342733) + (xy 139.743899 90.344232) + (xy 139.747375 90.347708) + (xy 139.751753 90.349939) + (xy 139.751756 90.349941) + (xy 139.75873 90.353494) + (xy 139.764977 90.357148) + (xy 139.814064 90.389823) + (xy 139.818313 90.391151) + (xy 139.818314 90.391151) + (xy 139.850296 90.401143) + (xy 139.860027 90.405109) + (xy 139.862799 90.406521) + (xy 139.862803 90.406522) + (xy 139.867187 90.408756) + (xy 139.877852 90.410445) + (xy 139.886713 90.41252) + (xy 139.926696 90.425012) + (xy 139.926699 90.425012) + (xy 139.930948 90.42634) + (xy 139.980069 90.427241) + (xy 139.988683 90.427999) + (xy 139.99514 90.429022) + (xy 139.995144 90.429022) + (xy 140 90.429791) + (xy 140.006947 90.42869) + (xy 140.017853 90.427933) + (xy 140.053383 90.428584) + (xy 140.113532 90.412185) + (xy 140.12019 90.410755) + (xy 140.122147 90.410445) + (xy 140.132813 90.408756) + (xy 140.137196 90.406522) + (xy 140.141875 90.405002) + (xy 140.141878 90.40501) + (xy 140.146727 90.403136) + (xy 140.171527 90.396375) + (xy 140.194218 90.382443) + (xy 140.239709 90.354511) + (xy 140.244037 90.352085) + (xy 140.24824 90.349944) + (xy 140.248248 90.349938) + (xy 140.252625 90.347708) + (xy 140.255427 90.344906) + (xy 140.256264 90.344346) + (xy 140.258891 90.342733) + (xy 140.275881 90.332301) + (xy 140.358058 90.241513) + (xy 140.365454 90.226248) + (xy 140.401198 90.194458) + (xy 140.4217 90.191) + (xy 143.644997 90.191) + (xy 143.689191 90.209306) + (xy 147.378194 93.898309) + (xy 147.3965 93.942503) + (xy 147.3965 95.91) + (xy 147.378194 95.954194) + (xy 147.334 95.9725) + (xy 146.905056 95.9725) + (xy 146.902046 95.973099) + (xy 146.902043 95.973099) + (xy 146.852025 95.983048) + (xy 146.852024 95.983048) + (xy 146.845988 95.984249) + (xy 146.779006 96.029006) + (xy 146.734249 96.095988) + (xy 146.733048 96.102024) + (xy 146.733048 96.102025) + (xy 146.724028 96.147376) + (xy 146.7225 96.155056) + (xy 146.7225 96.344944) + (xy 146.723099 96.347954) + (xy 146.723099 96.347957) + (xy 146.729959 96.382443) + (xy 146.734249 96.404012) + (xy 146.771197 96.459306) + (xy 146.772847 96.461776) + (xy 146.78218 96.508692) + (xy 146.755605 96.548466) + (xy 146.720881 96.559) + (xy 146.173049 96.559) + (xy 146.128855 96.540694) + (xy 146.116156 96.522373) + (xy 146.115695 96.52136) + (xy 146.115693 96.521357) + (xy 146.113852 96.517307) + (xy 146.099199 96.500302) + (xy 146.097708 96.497375) + (xy 146.0919 96.491567) + (xy 146.088746 96.48817) + (xy 146.036826 96.427914) + (xy 146.033918 96.424539) + (xy 146.013741 96.411461) + (xy 146.010155 96.408559) + (xy 146.010081 96.408661) + (xy 146.006106 96.405773) + (xy 146.002625 96.402292) + (xy 145.991343 96.396543) + (xy 145.985736 96.393309) + (xy 145.934893 96.360354) + (xy 145.93489 96.360353) + (xy 145.93116 96.357935) + (xy 145.926901 96.356661) + (xy 145.926898 96.35666) + (xy 145.908345 96.351112) + (xy 145.898839 96.348269) + (xy 145.888377 96.344079) + (xy 145.882813 96.341244) + (xy 145.871067 96.339384) + (xy 145.862951 96.337536) + (xy 145.858163 96.336104) + (xy 145.813838 96.322848) + (xy 145.769496 96.322577) + (xy 145.760103 96.321809) + (xy 145.754857 96.320978) + (xy 145.754856 96.320978) + (xy 145.75 96.320209) + (xy 145.741373 96.321576) + (xy 145.73122 96.322344) + (xy 145.712836 96.322231) + (xy 145.695838 96.322127) + (xy 145.695836 96.322127) + (xy 145.691385 96.3221) + (xy 145.637011 96.337641) + (xy 145.629623 96.339275) + (xy 145.617187 96.341244) + (xy 145.612804 96.343477) + (xy 145.61187 96.343781) + (xy 145.602155 96.347603) + (xy 145.577929 96.354526) + (xy 145.577927 96.354527) + (xy 145.573644 96.355751) + (xy 145.514119 96.393309) + (xy 145.512819 96.394129) + (xy 145.507842 96.396959) + (xy 145.501757 96.400059) + (xy 145.501756 96.40006) + (xy 145.497375 96.402292) + (xy 145.493897 96.40577) + (xy 145.492445 96.406825) + (xy 145.489059 96.40912) + (xy 145.489043 96.40913) + (xy 145.47008 96.421095) + (xy 145.467137 96.424427) + (xy 145.467135 96.424429) + (xy 145.407156 96.492342) + (xy 145.406032 96.493538) + (xy 145.405775 96.493892) + (xy 145.405554 96.494113) + (xy 145.405405 96.494204) + (xy 145.404504 96.495163) + (xy 145.402292 96.497375) + (xy 145.401509 96.496592) + (xy 145.400362 96.497296) + (xy 145.401721 96.498496) + (xy 145.395002 96.506104) + (xy 145.389018 96.512879) + (xy 145.378995 96.534228) + (xy 145.338868 96.619695) + (xy 145.338867 96.619698) + (xy 145.336976 96.623726) + (xy 145.318136 96.744724) + (xy 145.318713 96.749137) + (xy 145.318713 96.749138) + (xy 145.332919 96.857773) + (xy 145.334014 96.866145) + (xy 145.341185 96.882443) + (xy 145.341244 96.882813) + (xy 145.342007 96.884311) + (xy 145.344031 96.88891) + (xy 145.344031 96.888911) + (xy 145.380296 96.971328) + (xy 145.38134 97.019152) + (xy 145.348261 97.053707) + (xy 145.323089 97.059) + (xy 144.855003 97.059) + (xy 144.810809 97.040694) + (xy 144.459306 96.689191) + (xy 144.441 96.644997) + (xy 144.441 93.293232) + (xy 144.44225 93.285893) + (xy 144.441523 93.28581) + (xy 144.44232 93.278819) + (xy 144.444652 93.272178) + (xy 144.443759 93.264147) + (xy 144.441383 93.242803) + (xy 144.441 93.23589) + (xy 144.441 93.228467) + (xy 144.439419 93.221535) + (xy 144.438243 93.214582) + (xy 144.435014 93.185571) + (xy 144.431281 93.179607) + (xy 144.429906 93.175659) + (xy 144.428097 93.1719) + (xy 144.426532 93.165041) + (xy 144.408351 93.142226) + (xy 144.404256 93.136441) + (xy 144.40228 93.133285) + (xy 144.402279 93.133283) + (xy 144.400404 93.130289) + (xy 144.395191 93.125076) + (xy 144.390506 93.119832) + (xy 144.376612 93.102396) + (xy 144.376611 93.102396) + (xy 144.372225 93.096891) + (xy 144.365886 93.093833) + (xy 144.360385 93.089442) + (xy 144.360811 93.088908) + (xy 144.354647 93.084532) + (xy 143.965628 92.695513) + (xy 143.961323 92.689439) + (xy 143.96075 92.689895) + (xy 143.956369 92.684387) + (xy 143.953322 92.678042) + (xy 143.930239 92.659582) + (xy 143.92508 92.654965) + (xy 143.919831 92.649716) + (xy 143.913828 92.645943) + (xy 143.908052 92.641838) + (xy 143.885267 92.623617) + (xy 143.878407 92.62204) + (xy 143.874647 92.620222) + (xy 143.870711 92.618844) + (xy 143.864752 92.615098) + (xy 143.857758 92.614307) + (xy 143.857757 92.614307) + (xy 143.835764 92.611821) + (xy 143.828787 92.610629) + (xy 143.821703 92.609) + (xy 143.814329 92.609) + (xy 143.807308 92.608604) + (xy 143.805627 92.608414) + (xy 143.778162 92.605309) + (xy 143.771517 92.60763) + (xy 143.764523 92.608414) + (xy 143.764447 92.607736) + (xy 143.756995 92.609) + (xy 142.09 92.609) + (xy 142.045806 92.590694) + (xy 142.0275 92.5465) + (xy 142.0275 92.187442) + (xy 142.025505 92.177412) + (xy 142.021303 92.156287) + (xy 142.021302 92.156285) + (xy 142.020102 92.150252) + (xy 141.991922 92.108078) + (xy 141.949748 92.079898) + (xy 141.943715 92.078698) + (xy 141.943713 92.078697) + (xy 141.915569 92.073099) + (xy 141.912558 92.0725) + (xy 140.487442 92.0725) + (xy 140.484431 92.073099) + (xy 140.456287 92.078697) + (xy 140.456285 92.078698) + (xy 140.450252 92.079898) + (xy 140.408078 92.108078) + (xy 140.379898 92.150252) + (xy 140.378698 92.156285) + (xy 140.378697 92.156287) + (xy 140.374495 92.177412) + (xy 140.3725 92.187442) + (xy 140.3725 93.412558) + (xy 140.373099 93.415569) + (xy 140.378262 93.441523) + (xy 140.379898 93.449748) + (xy 140.408078 93.491922) + (xy 140.450252 93.520102) + (xy 140.456285 93.521302) + (xy 140.456287 93.521303) + (xy 140.477825 93.525587) + (xy 140.487442 93.5275) + (xy 141.912558 93.5275) + (xy 141.922175 93.525587) + (xy 141.943713 93.521303) + (xy 141.943715 93.521302) + (xy 141.949748 93.520102) + (xy 141.991922 93.491922) + (xy 142.020102 93.449748) + (xy 142.021739 93.441523) + (xy 142.026901 93.415569) + (xy 142.0275 93.412558) + (xy 142.0275 93.0535) + (xy 142.045806 93.009306) + (xy 142.09 92.991) + (xy 143.694997 92.991) + (xy 143.739191 93.009306) + (xy 144.040694 93.310808) + (xy 144.059 93.355002) + (xy 144.059 96.706768) + (xy 144.05775 96.714107) + (xy 144.058477 96.71419) + (xy 144.05768 96.721181) + (xy 144.055348 96.727822) + (xy 144.056126 96.734815) + (xy 144.056126 96.734816) + (xy 144.058617 96.757197) + (xy 144.059 96.76411) + (xy 144.059 96.771533) + (xy 144.060581 96.778465) + (xy 144.061757 96.785418) + (xy 144.064986 96.814429) + (xy 144.068719 96.820393) + (xy 144.070094 96.824341) + (xy 144.071903 96.8281) + (xy 144.073468 96.834959) + (xy 144.077853 96.840461) + (xy 144.077853 96.840462) + (xy 144.091648 96.857773) + (xy 144.095744 96.863559) + (xy 144.099596 96.869711) + (xy 144.104809 96.874924) + (xy 144.109494 96.880168) + (xy 144.115051 96.887141) + (xy 144.127775 96.903109) + (xy 144.134114 96.906167) + (xy 144.139615 96.910558) + (xy 144.139189 96.911092) + (xy 144.145353 96.915468) + (xy 144.584372 97.354487) + (xy 144.588677 97.360561) + (xy 144.58925 97.360105) + (xy 144.593631 97.365613) + (xy 144.596678 97.371958) + (xy 144.602175 97.376354) + (xy 144.619761 97.390418) + (xy 144.62492 97.395035) + (xy 144.630169 97.400284) + (xy 144.633143 97.402153) + (xy 144.636172 97.404057) + (xy 144.641948 97.408162) + (xy 144.664733 97.426383) + (xy 144.671593 97.42796) + (xy 144.675353 97.429778) + (xy 144.679288 97.431156) + (xy 144.685248 97.434902) + (xy 144.692243 97.435693) + (xy 144.697438 97.437512) + (xy 144.733099 97.469396) + (xy 144.73577 97.517156) + (xy 144.703886 97.552817) + (xy 144.676782 97.559) + (xy 142.626331 97.559) + (xy 142.582137 97.540694) + (xy 142.068018 97.026574) + (xy 142.049712 96.98238) + (xy 142.068018 96.938186) + (xy 142.112212 96.91988) + (xy 142.316876 96.91988) + (xy 142.36107 96.938186) + (xy 142.374083 96.957208) + (xy 142.376845 96.963484) + (xy 142.383333 96.97823) + (xy 142.398029 96.995713) + (xy 142.400157 96.998434) + (xy 142.402292 97.002625) + (xy 142.410081 97.010414) + (xy 142.41373 97.014392) + (xy 142.453546 97.061759) + (xy 142.462127 97.071968) + (xy 142.485399 97.087459) + (xy 142.491836 97.092733) + (xy 142.493899 97.094232) + (xy 142.497375 97.097708) + (xy 142.501753 97.099939) + (xy 142.501756 97.099941) + (xy 142.50873 97.103494) + (xy 142.514977 97.107148) + (xy 142.564064 97.139823) + (xy 142.568313 97.141151) + (xy 142.568314 97.141151) + (xy 142.600296 97.151143) + (xy 142.610027 97.155109) + (xy 142.612799 97.156521) + (xy 142.612803 97.156522) + (xy 142.617187 97.158756) + (xy 142.627852 97.160445) + (xy 142.636713 97.16252) + (xy 142.676696 97.175012) + (xy 142.676699 97.175012) + (xy 142.680948 97.17634) + (xy 142.730069 97.177241) + (xy 142.738683 97.177999) + (xy 142.74514 97.179022) + (xy 142.745144 97.179022) + (xy 142.75 97.179791) + (xy 142.756947 97.17869) + (xy 142.767853 97.177933) + (xy 142.803383 97.178584) + (xy 142.863532 97.162185) + (xy 142.87019 97.160755) + (xy 142.872147 97.160445) + (xy 142.882813 97.158756) + (xy 142.887196 97.156522) + (xy 142.891875 97.155002) + (xy 142.891878 97.15501) + (xy 142.896727 97.153136) + (xy 142.921527 97.146375) + (xy 142.932824 97.139439) + (xy 142.989709 97.104511) + (xy 142.994037 97.102085) + (xy 142.99824 97.099944) + (xy 142.998248 97.099938) + (xy 143.002625 97.097708) + (xy 143.005427 97.094906) + (xy 143.006264 97.094346) + (xy 143.008891 97.092733) + (xy 143.025881 97.082301) + (xy 143.108058 96.991513) + (xy 143.161451 96.881311) + (xy 143.162983 96.872209) + (xy 143.17758 96.78544) + (xy 143.181767 96.760552) + (xy 143.181896 96.75) + (xy 143.164536 96.628781) + (xy 143.113852 96.517307) + (xy 143.099199 96.500302) + (xy 143.097708 96.497375) + (xy 143.0919 96.491567) + (xy 143.088746 96.48817) + (xy 143.036826 96.427914) + (xy 143.033918 96.424539) + (xy 143.013741 96.411461) + (xy 143.010155 96.408559) + (xy 143.010081 96.408661) + (xy 143.006106 96.405773) + (xy 143.002625 96.402292) + (xy 142.991343 96.396543) + (xy 142.985736 96.393309) + (xy 142.934893 96.360354) + (xy 142.93489 96.360353) + (xy 142.93116 96.357935) + (xy 142.926901 96.356661) + (xy 142.926898 96.35666) + (xy 142.908345 96.351112) + (xy 142.898839 96.348269) + (xy 142.888377 96.344079) + (xy 142.882813 96.341244) + (xy 142.871067 96.339384) + (xy 142.862951 96.337536) + (xy 142.858163 96.336104) + (xy 142.813838 96.322848) + (xy 142.769496 96.322577) + (xy 142.760103 96.321809) + (xy 142.754857 96.320978) + (xy 142.754856 96.320978) + (xy 142.75 96.320209) + (xy 142.741373 96.321576) + (xy 142.73122 96.322344) + (xy 142.712836 96.322231) + (xy 142.695838 96.322127) + (xy 142.695836 96.322127) + (xy 142.691385 96.3221) + (xy 142.637011 96.337641) + (xy 142.629623 96.339275) + (xy 142.617187 96.341244) + (xy 142.612804 96.343477) + (xy 142.61187 96.343781) + (xy 142.602155 96.347603) + (xy 142.577929 96.354526) + (xy 142.577927 96.354527) + (xy 142.573644 96.355751) + (xy 142.514119 96.393309) + (xy 142.512819 96.394129) + (xy 142.507842 96.396959) + (xy 142.501757 96.400059) + (xy 142.501756 96.40006) + (xy 142.497375 96.402292) + (xy 142.493897 96.40577) + (xy 142.492445 96.406825) + (xy 142.489059 96.40912) + (xy 142.489043 96.40913) + (xy 142.47008 96.421095) + (xy 142.467137 96.424427) + (xy 142.467135 96.424429) + (xy 142.407156 96.492342) + (xy 142.406032 96.493538) + (xy 142.405775 96.493892) + (xy 142.405554 96.494113) + (xy 142.405405 96.494204) + (xy 142.404504 96.495163) + (xy 142.402292 96.497375) + (xy 142.401509 96.496592) + (xy 142.400362 96.497296) + (xy 142.401721 96.498496) + (xy 142.395002 96.506104) + (xy 142.389018 96.512879) + (xy 142.388217 96.512172) + (xy 142.352307 96.536581) + (xy 142.339628 96.53788) + (xy 134.064352 96.53788) + (xy 134.057013 96.53663) + (xy 134.05693 96.537357) + (xy 134.049939 96.53656) + (xy 134.043298 96.534228) + (xy 134.036305 96.535006) + (xy 134.036304 96.535006) + (xy 134.01392 96.537497) + (xy 134.007008 96.53788) + (xy 133.999587 96.53788) + (xy 133.996164 96.538661) + (xy 133.996163 96.538661) + (xy 133.992672 96.539457) + (xy 133.985689 96.540638) + (xy 133.963682 96.543087) + (xy 133.956691 96.543865) + (xy 133.950728 96.547598) + (xy 133.946795 96.548968) + (xy 133.943025 96.550782) + (xy 133.936161 96.552348) + (xy 133.920161 96.565098) + (xy 133.913349 96.570526) + (xy 133.907566 96.57462) + (xy 133.90441 96.576596) + (xy 133.904404 96.576601) + (xy 133.901409 96.578476) + (xy 133.896196 96.583689) + (xy 133.890952 96.588374) + (xy 133.873602 96.6022) + (xy 133.868011 96.606655) + (xy 133.864953 96.612994) + (xy 133.860562 96.618495) + (xy 133.860028 96.618069) + (xy 133.855652 96.624233) + (xy 132.294194 98.185691) + (xy 132.25 98.203997) + (xy 132.205806 98.185691) + (xy 132.182793 98.162678) + (xy 132.164487 98.118484) + (xy 132.165353 98.108115) + (xy 132.165515 98.107155) + (xy 132.181767 98.010552) + (xy 132.181896 98) + (xy 132.164536 97.878781) + (xy 132.113852 97.767307) + (xy 132.099199 97.750302) + (xy 132.097708 97.747375) + (xy 132.0919 97.741567) + (xy 132.088746 97.73817) + (xy 132.036826 97.677914) + (xy 132.033918 97.674539) + (xy 132.013741 97.661461) + (xy 132.010155 97.658559) + (xy 132.010081 97.658661) + (xy 132.006106 97.655773) + (xy 132.002625 97.652292) + (xy 131.991343 97.646543) + (xy 131.985736 97.643309) + (xy 131.979786 97.639452) + (xy 131.965649 97.630289) + (xy 131.934893 97.610354) + (xy 131.93489 97.610353) + (xy 131.93116 97.607935) + (xy 131.926901 97.606661) + (xy 131.926898 97.60666) + (xy 131.908345 97.601112) + (xy 131.898839 97.598269) + (xy 131.888377 97.594079) + (xy 131.882813 97.591244) + (xy 131.871067 97.589384) + (xy 131.862951 97.587536) + (xy 131.85303 97.584569) + (xy 131.813838 97.572848) + (xy 131.769496 97.572577) + (xy 131.760103 97.571809) + (xy 131.754857 97.570978) + (xy 131.754856 97.570978) + (xy 131.75 97.570209) + (xy 131.741373 97.571576) + (xy 131.73122 97.572344) + (xy 131.712836 97.572231) + (xy 131.695838 97.572127) + (xy 131.695836 97.572127) + (xy 131.691385 97.5721) + (xy 131.637011 97.587641) + (xy 131.629623 97.589275) + (xy 131.617187 97.591244) + (xy 131.612804 97.593477) + (xy 131.61187 97.593781) + (xy 131.602155 97.597603) + (xy 131.577929 97.604526) + (xy 131.577927 97.604527) + (xy 131.573644 97.605751) + (xy 131.569875 97.608129) + (xy 131.566349 97.610354) + (xy 131.514119 97.643309) + (xy 131.512819 97.644129) + (xy 131.507842 97.646959) + (xy 131.501757 97.650059) + (xy 131.501756 97.65006) + (xy 131.497375 97.652292) + (xy 131.493897 97.65577) + (xy 131.492445 97.656825) + (xy 131.489058 97.65912) + (xy 131.47008 97.671095) + (xy 131.467137 97.674427) + (xy 131.467135 97.674429) + (xy 131.407156 97.742342) + (xy 131.406032 97.743538) + (xy 131.405775 97.743892) + (xy 131.405554 97.744113) + (xy 131.405405 97.744204) + (xy 131.404504 97.745163) + (xy 131.402292 97.747375) + (xy 131.401509 97.746592) + (xy 131.400362 97.747296) + (xy 131.401721 97.748496) + (xy 131.389018 97.762879) + (xy 131.379378 97.783411) + (xy 131.338868 97.869695) + (xy 131.338867 97.869698) + (xy 131.336976 97.873726) + (xy 131.318136 97.994724) + (xy 131.318713 97.999137) + (xy 131.318713 97.999138) + (xy 131.332731 98.106331) + (xy 131.334014 98.116145) + (xy 131.341185 98.132443) + (xy 131.341244 98.132813) + (xy 131.342007 98.134311) + (xy 131.344031 98.13891) + (xy 131.344031 98.138911) + (xy 131.375658 98.210787) + (xy 131.383333 98.22823) + (xy 131.386197 98.231637) + (xy 131.398029 98.245713) + (xy 131.400157 98.248434) + (xy 131.402292 98.252625) + (xy 131.410081 98.260414) + (xy 131.413729 98.264391) + (xy 131.462127 98.321968) + (xy 131.485399 98.337459) + (xy 131.491836 98.342733) + (xy 131.493899 98.344232) + (xy 131.497375 98.347708) + (xy 131.501753 98.349939) + (xy 131.501756 98.349941) + (xy 131.50873 98.353494) + (xy 131.514977 98.357148) + (xy 131.564064 98.389823) + (xy 131.568313 98.391151) + (xy 131.568314 98.391151) + (xy 131.600296 98.401143) + (xy 131.610027 98.405109) + (xy 131.612799 98.406521) + (xy 131.612803 98.406522) + (xy 131.617187 98.408756) + (xy 131.627852 98.410445) + (xy 131.636713 98.41252) + (xy 131.676696 98.425012) + (xy 131.676699 98.425012) + (xy 131.680948 98.42634) + (xy 131.730069 98.427241) + (xy 131.738683 98.427999) + (xy 131.74514 98.429022) + (xy 131.745144 98.429022) + (xy 131.75 98.429791) + (xy 131.756947 98.42869) + (xy 131.767853 98.427933) + (xy 131.803383 98.428584) + (xy 131.808019 98.42732) + (xy 131.850968 98.415611) + (xy 131.898421 98.421648) + (xy 131.911601 98.431716) + (xy 132.040694 98.560809) + (xy 132.059 98.605003) + (xy 132.059 98.970881) + (xy 132.040694 99.015075) + (xy 131.9965 99.033381) + (xy 131.961777 99.022847) + (xy 131.904012 98.984249) + (xy 131.897976 98.983048) + (xy 131.897975 98.983048) + (xy 131.847957 98.973099) + (xy 131.847954 98.973099) + (xy 131.844944 98.9725) + (xy 131.655056 98.9725) + (xy 131.652046 98.973099) + (xy 131.652043 98.973099) + (xy 131.602025 98.983048) + (xy 131.602024 98.983048) + (xy 131.595988 98.984249) + (xy 131.534722 99.025186) + (xy 131.487807 99.034518) + (xy 131.465279 99.025187) + (xy 131.404012 98.984249) + (xy 131.397976 98.983048) + (xy 131.397975 98.983048) + (xy 131.347957 98.973099) + (xy 131.347954 98.973099) + (xy 131.344944 98.9725) + (xy 131.155056 98.9725) + (xy 131.152046 98.973099) + (xy 131.152043 98.973099) + (xy 131.102025 98.983048) + (xy 131.102024 98.983048) + (xy 131.095988 98.984249) + (xy 131.038223 99.022847) + (xy 130.991308 99.03218) + (xy 130.951534 99.005605) + (xy 130.941 98.970881) + (xy 130.941 97.793234) + (xy 130.942253 97.785893) + (xy 130.941524 97.78581) + (xy 130.942321 97.778819) + (xy 130.944653 97.772178) + (xy 130.94225 97.75058) + (xy 130.941383 97.742794) + (xy 130.941 97.735881) + (xy 130.941 97.728467) + (xy 130.939421 97.721544) + (xy 130.938245 97.714591) + (xy 130.935015 97.685571) + (xy 130.931281 97.679607) + (xy 130.92991 97.67567) + (xy 130.928097 97.671904) + (xy 130.926532 97.665041) + (xy 130.908354 97.642229) + (xy 130.90426 97.636446) + (xy 130.902284 97.63329) + (xy 130.902279 97.633284) + (xy 130.900404 97.630289) + (xy 130.895191 97.625076) + (xy 130.890506 97.619832) + (xy 130.876612 97.602396) + (xy 130.876611 97.602396) + (xy 130.872225 97.596891) + (xy 130.865886 97.593833) + (xy 130.860385 97.589442) + (xy 130.860811 97.588908) + (xy 130.854647 97.584532) + (xy 130.415628 97.145513) + (xy 130.411323 97.139439) + (xy 130.41075 97.139895) + (xy 130.406369 97.134387) + (xy 130.403322 97.128042) + (xy 130.380239 97.109582) + (xy 130.37508 97.104965) + (xy 130.369831 97.099716) + (xy 130.363828 97.095943) + (xy 130.358052 97.091838) + (xy 130.335267 97.073617) + (xy 130.328407 97.07204) + (xy 130.324647 97.070222) + (xy 130.320711 97.068844) + (xy 130.314752 97.065098) + (xy 130.307758 97.064307) + (xy 130.307757 97.064307) + (xy 130.285764 97.061821) + (xy 130.278787 97.060629) + (xy 130.271703 97.059) + (xy 130.264329 97.059) + (xy 130.257308 97.058604) + (xy 130.255627 97.058414) + (xy 130.228162 97.055309) + (xy 130.221517 97.05763) + (xy 130.214523 97.058414) + (xy 130.214447 97.057736) + (xy 130.206995 97.059) + (xy 129.293234 97.059) + (xy 129.285893 97.057747) + (xy 129.28581 97.058476) + (xy 129.278819 97.057679) + (xy 129.272178 97.055347) + (xy 129.265185 97.056125) + (xy 129.265184 97.056125) + (xy 129.245216 97.058347) + (xy 129.242911 97.058604) + (xy 129.242794 97.058617) + (xy 129.235881 97.059) + (xy 129.228467 97.059) + (xy 129.221544 97.060579) + (xy 129.214591 97.061755) + (xy 129.185571 97.064985) + (xy 129.179607 97.068719) + (xy 129.17567 97.07009) + (xy 129.171904 97.071903) + (xy 129.165041 97.073468) + (xy 129.158103 97.078997) + (xy 129.142229 97.091646) + (xy 129.136446 97.09574) + (xy 129.13329 97.097716) + (xy 129.133284 97.097721) + (xy 129.130289 97.099596) + (xy 129.125076 97.104809) + (xy 129.119832 97.109494) + (xy 129.109689 97.117577) + (xy 129.096891 97.127775) + (xy 129.093833 97.134114) + (xy 129.089442 97.139615) + (xy 129.088908 97.139189) + (xy 129.084532 97.145353) + (xy 128.689191 97.540694) + (xy 128.644997 97.559) + (xy 123.914999 97.559) + (xy 123.870805 97.540694) + (xy 123.852499 97.4965) + (xy 123.852499 97.436626) + (xy 123.852232 97.434593) + (xy 123.846845 97.393669) + (xy 123.846845 97.393668) + (xy 123.846221 97.388929) + (xy 123.830179 97.354526) + (xy 123.799723 97.289213) + (xy 123.799721 97.289211) + (xy 123.797411 97.284256) + (xy 123.715744 97.202589) + (xy 123.710789 97.200279) + (xy 123.710787 97.200277) + (xy 123.653148 97.1734) + (xy 123.611071 97.153779) + (xy 123.591048 97.151143) + (xy 123.565407 97.147767) + (xy 123.565399 97.147767) + (xy 123.563375 97.1475) + (xy 123.561328 97.1475) + (xy 123.324358 97.147501) + (xy 123.086626 97.147501) + (xy 123.084615 97.147766) + (xy 123.08461 97.147766) + (xy 123.043669 97.153155) + (xy 123.043668 97.153155) + (xy 123.038929 97.153779) + (xy 123.034595 97.1558) + (xy 122.939213 97.200277) + (xy 122.939211 97.200279) + (xy 122.934256 97.202589) + (xy 122.852589 97.284256) + (xy 122.850279 97.289211) + (xy 122.850277 97.289213) + (xy 122.834606 97.322821) + (xy 122.803779 97.388929) + (xy 122.802975 97.395035) + (xy 122.797767 97.434593) + (xy 122.797767 97.434601) + (xy 122.7975 97.436625) + (xy 122.797501 98.063374) + (xy 122.797766 98.065385) + (xy 122.797766 98.06539) + (xy 122.802998 98.105139) + (xy 122.803779 98.111071) + (xy 122.8058 98.115404) + (xy 122.8058 98.115405) + (xy 122.850277 98.210787) + (xy 122.850279 98.210789) + (xy 122.852589 98.215744) + (xy 122.934256 98.297411) + (xy 122.939211 98.299721) + (xy 122.939213 98.299723) + (xy 122.972606 98.315294) + (xy 123.038929 98.346221) + (xy 123.052116 98.347957) + (xy 123.084593 98.352233) + (xy 123.084601 98.352233) + (xy 123.086625 98.3525) + (xy 123.088672 98.3525) + (xy 123.325642 98.352499) + (xy 123.563374 98.352499) + (xy 123.565385 98.352234) + (xy 123.56539 98.352234) + (xy 123.606331 98.346845) + (xy 123.606332 98.346845) + (xy 123.611071 98.346221) + (xy 123.629868 98.337456) + (xy 123.710787 98.299723) + (xy 123.710789 98.299721) + (xy 123.715744 98.297411) + (xy 123.797411 98.215744) + (xy 123.799721 98.210789) + (xy 123.799723 98.210787) + (xy 123.825732 98.15501) + (xy 123.846221 98.111071) + (xy 123.848663 98.092522) + (xy 123.852233 98.065407) + (xy 123.852233 98.065399) + (xy 123.8525 98.063375) + (xy 123.8525 98.0035) + (xy 123.870806 97.959306) + (xy 123.915 97.941) + (xy 128.706768 97.941) + (xy 128.714107 97.94225) + (xy 128.71419 97.941523) + (xy 128.721181 97.94232) + (xy 128.727822 97.944652) + (xy 128.734815 97.943874) + (xy 128.734816 97.943874) + (xy 128.757197 97.941383) + (xy 128.76411 97.941) + (xy 128.771533 97.941) + (xy 128.778465 97.939419) + (xy 128.785418 97.938243) + (xy 128.814429 97.935014) + (xy 128.820393 97.931281) + (xy 128.824341 97.929906) + (xy 128.8281 97.928097) + (xy 128.834959 97.926532) + (xy 128.857774 97.908351) + (xy 128.863559 97.904256) + (xy 128.866715 97.90228) + (xy 128.866717 97.902279) + (xy 128.869711 97.900404) + (xy 128.874924 97.895191) + (xy 128.880168 97.890506) + (xy 128.897604 97.876612) + (xy 128.897604 97.876611) + (xy 128.903109 97.872225) + (xy 128.906167 97.865886) + (xy 128.910558 97.860385) + (xy 128.911092 97.860811) + (xy 128.915468 97.854647) + (xy 129.310809 97.459306) + (xy 129.355003 97.441) + (xy 130.144997 97.441) + (xy 130.189191 97.459306) + (xy 130.540694 97.810809) + (xy 130.559 97.855003) + (xy 130.559 98.971482) + (xy 130.540694 99.015676) + (xy 130.4965 99.033982) + (xy 130.461777 99.023449) + (xy 130.408933 98.988141) + (xy 130.397779 98.98352) + (xy 130.347904 98.973599) + (xy 130.341823 98.973) + (xy 130.325931 98.973) + (xy 130.317141 98.976641) + (xy 130.3135 98.985431) + (xy 130.3135 100.689568) + (xy 130.317141 100.698358) + (xy 130.325931 100.701999) + (xy 130.341821 100.701999) + (xy 130.347906 100.7014) + (xy 130.397776 100.69148) + (xy 130.408934 100.686858) + (xy 130.464827 100.649513) + (xy 130.511744 100.640181) + (xy 130.534272 100.649513) + (xy 130.595988 100.690751) + (xy 130.602024 100.691952) + (xy 130.602025 100.691952) + (xy 130.652043 100.701901) + (xy 130.652046 100.701901) + (xy 130.655056 100.7025) + (xy 130.844944 100.7025) + (xy 130.847954 100.701901) + (xy 130.847957 100.701901) + (xy 130.897975 100.691952) + (xy 130.897976 100.691952) + (xy 130.904012 100.690751) + (xy 130.965278 100.649814) + (xy 131.012193 100.640482) + (xy 131.034721 100.649813) + (xy 131.095988 100.690751) + (xy 131.102024 100.691952) + (xy 131.102025 100.691952) + (xy 131.152043 100.701901) + (xy 131.152046 100.701901) + (xy 131.155056 100.7025) + (xy 131.344944 100.7025) + (xy 131.347954 100.701901) + (xy 131.347957 100.701901) + (xy 131.397975 100.691952) + (xy 131.397976 100.691952) + (xy 131.404012 100.690751) + (xy 131.465278 100.649814) + (xy 131.512193 100.640482) + (xy 131.534721 100.649813) + (xy 131.595988 100.690751) + (xy 131.602024 100.691952) + (xy 131.602025 100.691952) + (xy 131.652043 100.701901) + (xy 131.652046 100.701901) + (xy 131.655056 100.7025) + (xy 131.844944 100.7025) + (xy 131.847954 100.701901) + (xy 131.847957 100.701901) + (xy 131.897975 100.691952) + (xy 131.897976 100.691952) + (xy 131.904012 100.690751) + (xy 131.965278 100.649814) + (xy 132.012193 100.640482) + (xy 132.034721 100.649813) + (xy 132.095988 100.690751) + (xy 132.102024 100.691952) + (xy 132.102025 100.691952) + (xy 132.152043 100.701901) + (xy 132.152046 100.701901) + (xy 132.155056 100.7025) + (xy 132.344944 100.7025) + (xy 132.347954 100.701901) + (xy 132.347957 100.701901) + (xy 132.397975 100.691952) + (xy 132.397976 100.691952) + (xy 132.404012 100.690751) + (xy 132.465278 100.649814) + (xy 132.512193 100.640482) + (xy 132.534721 100.649813) + (xy 132.595988 100.690751) + (xy 132.602024 100.691952) + (xy 132.602025 100.691952) + (xy 132.652043 100.701901) + (xy 132.652046 100.701901) + (xy 132.655056 100.7025) + (xy 132.844944 100.7025) + (xy 132.847954 100.701901) + (xy 132.847957 100.701901) + (xy 132.897975 100.691952) + (xy 132.897976 100.691952) + (xy 132.904012 100.690751) + (xy 132.965278 100.649814) + (xy 133.012193 100.640482) + (xy 133.034721 100.649813) + (xy 133.095988 100.690751) + (xy 133.102024 100.691952) + (xy 133.102025 100.691952) + (xy 133.152043 100.701901) + (xy 133.152046 100.701901) + (xy 133.155056 100.7025) + (xy 133.344944 100.7025) + (xy 133.347954 100.701901) + (xy 133.347957 100.701901) + (xy 133.397975 100.691952) + (xy 133.397976 100.691952) + (xy 133.404012 100.690751) + (xy 133.465278 100.649814) + (xy 133.512193 100.640482) + (xy 133.534721 100.649813) + (xy 133.595988 100.690751) + (xy 133.602024 100.691952) + (xy 133.602025 100.691952) + (xy 133.652043 100.701901) + (xy 133.652046 100.701901) + (xy 133.655056 100.7025) + (xy 133.844944 100.7025) + (xy 133.847954 100.701901) + (xy 133.847957 100.701901) + (xy 133.897975 100.691952) + (xy 133.897976 100.691952) + (xy 133.904012 100.690751) + (xy 133.965278 100.649814) + (xy 134.012193 100.640482) + (xy 134.034721 100.649813) + (xy 134.095988 100.690751) + (xy 134.102024 100.691952) + (xy 134.102025 100.691952) + (xy 134.152043 100.701901) + (xy 134.152046 100.701901) + (xy 134.155056 100.7025) + (xy 134.344944 100.7025) + (xy 134.347954 100.701901) + (xy 134.347957 100.701901) + (xy 134.397975 100.691952) + (xy 134.397976 100.691952) + (xy 134.404012 100.690751) + (xy 134.465278 100.649814) + (xy 134.512193 100.640482) + (xy 134.534721 100.649813) + (xy 134.595988 100.690751) + (xy 134.602024 100.691952) + (xy 134.602025 100.691952) + (xy 134.652043 100.701901) + (xy 134.652046 100.701901) + (xy 134.655056 100.7025) + (xy 134.844944 100.7025) + (xy 134.847954 100.701901) + (xy 134.847957 100.701901) + (xy 134.897975 100.691952) + (xy 134.897976 100.691952) + (xy 134.904012 100.690751) + (xy 134.965278 100.649814) + (xy 135.012193 100.640482) + (xy 135.034721 100.649813) + (xy 135.095988 100.690751) + (xy 135.102024 100.691952) + (xy 135.102025 100.691952) + (xy 135.152043 100.701901) + (xy 135.152046 100.701901) + (xy 135.155056 100.7025) + (xy 135.344944 100.7025) + (xy 135.347954 100.701901) + (xy 135.347957 100.701901) + (xy 135.397975 100.691952) + (xy 135.397976 100.691952) + (xy 135.404012 100.690751) + (xy 135.470994 100.645994) + (xy 135.515751 100.579012) + (xy 135.516952 100.572975) + (xy 135.526901 100.522957) + (xy 135.526901 100.522954) + (xy 135.5275 100.519944) + (xy 135.5275 99.155056) + (xy 135.526507 99.15006) + (xy 135.516952 99.102025) + (xy 135.516952 99.102024) + (xy 135.515751 99.095988) + (xy 135.470994 99.029006) + (xy 135.465876 99.025586) + (xy 135.461524 99.021234) + (xy 135.463352 99.019406) + (xy 135.442201 98.987752) + (xy 135.441 98.975558) + (xy 135.441 98.605003) + (xy 135.459306 98.560809) + (xy 135.560809 98.459306) + (xy 135.605003 98.441) + (xy 140.394997 98.441) + (xy 140.439191 98.459306) + (xy 143.334372 101.354487) + (xy 143.338677 101.360561) + (xy 143.33925 101.360105) + (xy 143.343631 101.365613) + (xy 143.346678 101.371958) + (xy 143.357273 101.380431) + (xy 143.369761 101.390418) + (xy 143.37492 101.395035) + (xy 143.380169 101.400284) + (xy 143.3861 101.404012) + (xy 143.386172 101.404057) + (xy 143.391948 101.408162) + (xy 143.414733 101.426383) + (xy 143.421593 101.42796) + (xy 143.425353 101.429778) + (xy 143.429289 101.431156) + (xy 143.435248 101.434902) + (xy 143.442242 101.435693) + (xy 143.442243 101.435693) + (xy 143.45172 101.436764) + (xy 143.464242 101.43818) + (xy 143.471208 101.43937) + (xy 143.478297 101.441) + (xy 143.485671 101.441) + (xy 143.492692 101.441396) + (xy 143.521839 101.444691) + (xy 143.528484 101.44237) + (xy 143.535478 101.441586) + (xy 143.535554 101.442264) + (xy 143.543006 101.441) + (xy 146.176847 101.441) + (xy 146.221041 101.459306) + (xy 146.239347 101.5035) + (xy 146.221041 101.547694) + (xy 146.1974 101.562524) + (xy 146.192569 101.564206) + (xy 146.185572 101.564985) + (xy 146.179606 101.56872) + (xy 146.175667 101.570092) + (xy 146.171904 101.571903) + (xy 146.165041 101.573468) + (xy 146.159537 101.577854) + (xy 146.142227 101.591648) + (xy 146.136441 101.595744) + (xy 146.133285 101.59772) + (xy 146.130289 101.599596) + (xy 146.125076 101.604809) + (xy 146.119832 101.609494) + (xy 146.096891 101.627775) + (xy 146.093833 101.634114) + (xy 146.089442 101.639615) + (xy 146.088908 101.639189) + (xy 146.084532 101.645353) + (xy 145.189191 102.540694) + (xy 145.144997 102.559) + (xy 137.528518 102.559) + (xy 137.484324 102.540694) + (xy 137.466018 102.4965) + (xy 137.476551 102.461777) + (xy 137.511859 102.408933) + (xy 137.51648 102.397779) + (xy 137.526401 102.347904) + (xy 137.527 102.341823) + (xy 137.527 102.325931) + (xy 137.523359 102.317141) + (xy 137.514569 102.3135) + (xy 135.810432 102.3135) + (xy 135.801642 102.317141) + (xy 135.798001 102.325931) + (xy 135.798001 102.341821) + (xy 135.7986 102.347906) + (xy 135.80852 102.397776) + (xy 135.813142 102.408934) + (xy 135.850487 102.464827) + (xy 135.859819 102.511744) + (xy 135.850486 102.534274) + (xy 135.809249 102.595988) + (xy 135.808048 102.602024) + (xy 135.808048 102.602025) + (xy 135.798494 102.65006) + (xy 135.7975 102.655056) + (xy 135.7975 102.844944) + (xy 135.809249 102.904012) + (xy 135.850186 102.965278) + (xy 135.859518 103.012193) + (xy 135.850187 103.034721) + (xy 135.809249 103.095988) + (xy 135.808048 103.102024) + (xy 135.808048 103.102025) + (xy 135.801588 103.134506) + (xy 135.7975 103.155056) + (xy 135.7975 103.344944) + (xy 135.798099 103.347954) + (xy 135.798099 103.347957) + (xy 135.808009 103.397779) + (xy 135.809249 103.404012) + (xy 135.850186 103.465278) + (xy 135.859518 103.512193) + (xy 135.850187 103.534721) + (xy 135.809249 103.595988) + (xy 135.808048 103.602024) + (xy 135.808048 103.602025) + (xy 135.798494 103.65006) + (xy 135.7975 103.655056) + (xy 135.7975 103.844944) + (xy 135.798099 103.847954) + (xy 135.798099 103.847957) + (xy 135.808009 103.897779) + (xy 135.809249 103.904012) + (xy 135.850186 103.965278) + (xy 135.859518 104.012193) + (xy 135.850187 104.034721) + (xy 135.809249 104.095988) + (xy 135.808048 104.102024) + (xy 135.808048 104.102025) + (xy 135.798994 104.147546) + (xy 135.7975 104.155056) + (xy 135.7975 104.344944) + (xy 135.798099 104.347954) + (xy 135.798099 104.347957) + (xy 135.807283 104.394129) + (xy 135.809249 104.404012) + (xy 135.850186 104.465278) + (xy 135.859518 104.512193) + (xy 135.850187 104.534721) + (xy 135.809249 104.595988) + (xy 135.808048 104.602024) + (xy 135.808048 104.602025) + (xy 135.800656 104.639191) + (xy 135.7975 104.655056) + (xy 135.7975 104.844944) + (xy 135.798099 104.847954) + (xy 135.798099 104.847957) + (xy 135.808009 104.897779) + (xy 135.809249 104.904012) + (xy 135.850186 104.965278) + (xy 135.859518 105.012193) + (xy 135.850187 105.034721) + (xy 135.809249 105.095988) + (xy 135.808048 105.102024) + (xy 135.808048 105.102025) + (xy 135.798994 105.147546) + (xy 135.7975 105.155056) + (xy 135.7975 105.344944) + (xy 135.798099 105.347954) + (xy 135.798099 105.347957) + (xy 135.808009 105.397779) + (xy 135.809249 105.404012) + (xy 135.850186 105.465278) + (xy 135.859518 105.512193) + (xy 135.850187 105.534721) + (xy 135.809249 105.595988) + (xy 135.808048 105.602024) + (xy 135.808048 105.602025) + (xy 135.798994 105.647546) + (xy 135.7975 105.655056) + (xy 135.7975 105.844944) + (xy 135.798099 105.847954) + (xy 135.798099 105.847957) + (xy 135.804959 105.882443) + (xy 135.809249 105.904012) + (xy 135.850186 105.965278) + (xy 135.859518 106.012193) + (xy 135.850187 106.034721) + (xy 135.809249 106.095988) + (xy 135.808048 106.102024) + (xy 135.808048 106.102025) + (xy 135.798494 106.15006) + (xy 135.7975 106.155056) + (xy 135.7975 106.344944) + (xy 135.798099 106.347954) + (xy 135.798099 106.347957) + (xy 135.808009 106.397779) + (xy 135.809249 106.404012) + (xy 135.850186 106.465278) + (xy 135.859518 106.512193) + (xy 135.850187 106.534721) + (xy 135.809249 106.595988) + (xy 135.808048 106.602024) + (xy 135.808048 106.602025) + (xy 135.798261 106.651232) + (xy 135.7975 106.655056) + (xy 135.7975 106.844944) + (xy 135.798099 106.847954) + (xy 135.798099 106.847957) + (xy 135.808009 106.897779) + (xy 135.809249 106.904012) + (xy 135.854006 106.970994) + (xy 135.920988 107.015751) + (xy 135.927024 107.016952) + (xy 135.927025 107.016952) + (xy 135.977043 107.026901) + (xy 135.977046 107.026901) + (xy 135.980056 107.0275) + (xy 137.344944 107.0275) + (xy 137.347954 107.026901) + (xy 137.347957 107.026901) + (xy 137.397975 107.016952) + (xy 137.397976 107.016952) + (xy 137.404012 107.015751) + (xy 137.470994 106.970994) + (xy 137.474414 106.965876) + (xy 137.478766 106.961524) + (xy 137.480594 106.963352) + (xy 137.512248 106.942201) + (xy 137.524442 106.941) + (xy 144.426846 106.941) + (xy 144.47104 106.959306) + (xy 144.489346 107.0035) + (xy 144.47104 107.047694) + (xy 144.447399 107.062524) + (xy 144.442567 107.064206) + (xy 144.435571 107.064985) + (xy 144.429607 107.068719) + (xy 144.42567 107.07009) + (xy 144.421904 107.071903) + (xy 144.415041 107.073468) + (xy 144.403956 107.082301) + (xy 144.392229 107.091646) + (xy 144.386446 107.09574) + (xy 144.38329 107.097716) + (xy 144.383284 107.097721) + (xy 144.380289 107.099596) + (xy 144.375076 107.104809) + (xy 144.369832 107.109494) + (xy 144.346891 107.127775) + (xy 144.343833 107.134114) + (xy 144.339442 107.139615) + (xy 144.338908 107.139189) + (xy 144.334532 107.145353) + (xy 142.860313 108.619572) + (xy 142.854239 108.623877) + (xy 142.854695 108.62445) + (xy 142.849187 108.628831) + (xy 142.842842 108.631878) + (xy 142.836995 108.639189) + (xy 142.824382 108.654961) + (xy 142.819765 108.66012) + (xy 142.814516 108.665369) + (xy 142.812647 108.668343) + (xy 142.810743 108.671372) + (xy 142.806638 108.677148) + (xy 142.788417 108.699933) + (xy 142.78684 108.706793) + (xy 142.785022 108.710553) + (xy 142.783644 108.714489) + (xy 142.779898 108.720448) + (xy 142.779107 108.727442) + (xy 142.779107 108.727443) + (xy 142.776621 108.749436) + (xy 142.775429 108.756413) + (xy 142.7738 108.763497) + (xy 142.7738 108.770871) + (xy 142.773404 108.777892) + (xy 142.770109 108.807038) + (xy 142.77243 108.813683) + (xy 142.773214 108.820677) + (xy 142.772536 108.820753) + (xy 142.7738 108.828205) + (xy 142.7738 109.394997) + (xy 142.755494 109.439191) + (xy 142.403991 109.790694) + (xy 142.359797 109.809) + (xy 141.906008 109.809) + (xy 141.861814 109.790694) + (xy 141.846567 109.765814) + (xy 141.831325 109.718904) + (xy 141.806052 109.641122) + (xy 141.786526 109.607301) + (xy 141.731515 109.512021) + (xy 141.713823 109.481377) + (xy 141.590397 109.344298) + (xy 141.441167 109.235876) + (xy 141.272656 109.16085) + (xy 141.245397 109.155056) + (xy 141.09543 109.12318) + (xy 141.095426 109.12318) + (xy 141.092229 109.1225) + (xy 140.907771 109.1225) + (xy 140.904574 109.12318) + (xy 140.90457 109.12318) + (xy 140.754603 109.155056) + (xy 140.727344 109.16085) + (xy 140.558833 109.235876) + (xy 140.409603 109.344298) + (xy 140.286177 109.481377) + (xy 140.268485 109.512021) + (xy 140.213475 109.607301) + (xy 140.193948 109.641122) + (xy 140.136947 109.816552) + (xy 140.117666 110) + (xy 140.136947 110.183448) + (xy 140.193948 110.358878) + (xy 140.195583 110.36171) + (xy 140.195584 110.361712) + (xy 140.226101 110.414568) + (xy 140.286177 110.518623) + (xy 140.409603 110.655702) + (xy 140.558833 110.764124) + (xy 140.727344 110.83915) + (xy 140.734001 110.840565) + (xy 140.90457 110.87682) + (xy 140.904574 110.87682) + (xy 140.907771 110.8775) + (xy 141.092229 110.8775) + (xy 141.095426 110.87682) + (xy 141.09543 110.87682) + (xy 141.265999 110.840565) + (xy 141.272656 110.83915) + (xy 141.441167 110.764124) + (xy 141.590397 110.655702) + (xy 141.713823 110.518623) + (xy 141.773899 110.414568) + (xy 141.804416 110.361712) + (xy 141.804417 110.36171) + (xy 141.806052 110.358878) + (xy 141.846567 110.234186) + (xy 141.877634 110.197812) + (xy 141.906008 110.191) + (xy 142.421568 110.191) + (xy 142.428907 110.19225) + (xy 142.42899 110.191523) + (xy 142.435981 110.19232) + (xy 142.442622 110.194652) + (xy 142.449615 110.193874) + (xy 142.449616 110.193874) + (xy 142.471997 110.191383) + (xy 142.47891 110.191) + (xy 142.486333 110.191) + (xy 142.493265 110.189419) + (xy 142.500218 110.188243) + (xy 142.529229 110.185014) + (xy 142.535193 110.181281) + (xy 142.539141 110.179906) + (xy 142.5429 110.178097) + (xy 142.549759 110.176532) + (xy 142.572574 110.158351) + (xy 142.578359 110.154256) + (xy 142.581515 110.15228) + (xy 142.581517 110.152279) + (xy 142.584511 110.150404) + (xy 142.589724 110.145191) + (xy 142.594968 110.140506) + (xy 142.612404 110.126612) + (xy 142.612404 110.126611) + (xy 142.617909 110.122225) + (xy 142.620967 110.115886) + (xy 142.625358 110.110385) + (xy 142.625892 110.110811) + (xy 142.630268 110.104647) + (xy 142.920626 109.814289) + (xy 142.96482 109.795983) + (xy 143.009014 109.814289) + (xy 143.02732 109.858483) + (xy 143.02732 112.394997) + (xy 143.009014 112.439191) + (xy 142.657511 112.790694) + (xy 142.613317 112.809) + (xy 141.906008 112.809) + (xy 141.861814 112.790694) + (xy 141.846567 112.765814) + (xy 141.833081 112.724309) + (xy 141.806052 112.641122) + (xy 141.802518 112.635) + (xy 141.741322 112.529006) + (xy 141.713823 112.481377) + (xy 141.590397 112.344298) + (xy 141.441167 112.235876) + (xy 141.272656 112.16085) + (xy 141.239384 112.153778) + (xy 141.09543 112.12318) + (xy 141.095426 112.12318) + (xy 141.092229 112.1225) + (xy 140.907771 112.1225) + (xy 140.904574 112.12318) + (xy 140.90457 112.12318) + (xy 140.760616 112.153778) + (xy 140.727344 112.16085) + (xy 140.558833 112.235876) + (xy 140.409603 112.344298) + (xy 140.286177 112.481377) + (xy 140.258678 112.529006) + (xy 140.197483 112.635) + (xy 140.193948 112.641122) + (xy 140.136947 112.816552) + (xy 140.117666 113) + (xy 140.136947 113.183448) + (xy 140.137959 113.186562) + (xy 140.137959 113.186563) + (xy 140.138504 113.188239) + (xy 140.193948 113.358878) + (xy 140.195583 113.36171) + (xy 140.195584 113.361712) + (xy 140.22403 113.410982) + (xy 140.286177 113.518623) + (xy 140.409603 113.655702) + (xy 140.558833 113.764124) + (xy 140.727344 113.83915) + (xy 140.736989 113.8412) + (xy 140.90457 113.87682) + (xy 140.904574 113.87682) + (xy 140.907771 113.8775) + (xy 141.092229 113.8775) + (xy 141.095426 113.87682) + (xy 141.09543 113.87682) + (xy 141.263011 113.8412) + (xy 141.272656 113.83915) + (xy 141.441167 113.764124) + (xy 141.590397 113.655702) + (xy 141.713823 113.518623) + (xy 141.77597 113.410982) + (xy 141.804416 113.361712) + (xy 141.804417 113.36171) + (xy 141.806052 113.358878) + (xy 141.846567 113.234186) + (xy 141.877634 113.197812) + (xy 141.906008 113.191) + (xy 142.675088 113.191) + (xy 142.682427 113.19225) + (xy 142.68251 113.191523) + (xy 142.689501 113.19232) + (xy 142.696142 113.194652) + (xy 142.703135 113.193874) + (xy 142.703136 113.193874) + (xy 142.725517 113.191383) + (xy 142.73243 113.191) + (xy 142.739853 113.191) + (xy 142.746785 113.189419) + (xy 142.753738 113.188243) + (xy 142.782749 113.185014) + (xy 142.788713 113.181281) + (xy 142.792661 113.179906) + (xy 142.79642 113.178097) + (xy 142.803279 113.176532) + (xy 142.810366 113.170885) + (xy 142.826093 113.158352) + (xy 142.831879 113.154256) + (xy 142.835035 113.15228) + (xy 142.835037 113.152279) + (xy 142.838031 113.150404) + (xy 142.843244 113.145191) + (xy 142.848488 113.140506) + (xy 142.865924 113.126612) + (xy 142.865924 113.126611) + (xy 142.871429 113.122225) + (xy 142.874487 113.115886) + (xy 142.878878 113.110385) + (xy 142.879412 113.110811) + (xy 142.883788 113.104647) + (xy 143.174146 112.814289) + (xy 143.21834 112.795983) + (xy 143.262534 112.814289) + (xy 143.28084 112.858483) + (xy 143.28084 115.394997) + (xy 143.262534 115.439191) + (xy 142.911031 115.790694) + (xy 142.866837 115.809) + (xy 141.906008 115.809) + (xy 141.861814 115.790694) + (xy 141.846567 115.765814) + (xy 141.82765 115.707595) + (xy 141.806052 115.641122) + (xy 141.801473 115.63319) + (xy 141.737105 115.521703) + (xy 141.713823 115.481377) + (xy 141.590397 115.344298) + (xy 141.441167 115.235876) + (xy 141.272656 115.16085) + (xy 141.221892 115.15006) + (xy 141.09543 115.12318) + (xy 141.095426 115.12318) + (xy 141.092229 115.1225) + (xy 140.907771 115.1225) + (xy 140.904574 115.12318) + (xy 140.90457 115.12318) + (xy 140.778108 115.15006) + (xy 140.727344 115.16085) + (xy 140.558833 115.235876) + (xy 140.409603 115.344298) + (xy 140.286177 115.481377) + (xy 140.262895 115.521703) + (xy 140.198528 115.63319) + (xy 140.193948 115.641122) + (xy 140.136947 115.816552) + (xy 140.117666 116) + (xy 140.136947 116.183448) + (xy 140.137959 116.186562) + (xy 140.137959 116.186563) + (xy 140.146985 116.214343) + (xy 140.193948 116.358878) + (xy 140.195583 116.36171) + (xy 140.195584 116.361712) + (xy 140.240062 116.43875) + (xy 140.286177 116.518623) + (xy 140.409603 116.655702) + (xy 140.558833 116.764124) + (xy 140.727344 116.83915) + (xy 140.730548 116.839831) + (xy 140.90457 116.87682) + (xy 140.904574 116.87682) + (xy 140.907771 116.8775) + (xy 141.092229 116.8775) + (xy 141.095426 116.87682) + (xy 141.09543 116.87682) + (xy 141.269452 116.839831) + (xy 141.272656 116.83915) + (xy 141.441167 116.764124) + (xy 141.590397 116.655702) + (xy 141.713823 116.518623) + (xy 141.759938 116.43875) + (xy 141.804416 116.361712) + (xy 141.804417 116.36171) + (xy 141.806052 116.358878) + (xy 141.846567 116.234186) + (xy 141.877634 116.197812) + (xy 141.906008 116.191) + (xy 142.928608 116.191) + (xy 142.935947 116.19225) + (xy 142.93603 116.191523) + (xy 142.943021 116.19232) + (xy 142.949662 116.194652) + (xy 142.956655 116.193874) + (xy 142.956656 116.193874) + (xy 142.979037 116.191383) + (xy 142.98595 116.191) + (xy 142.993373 116.191) + (xy 143.000305 116.189419) + (xy 143.007258 116.188243) + (xy 143.036269 116.185014) + (xy 143.042233 116.181281) + (xy 143.046181 116.179906) + (xy 143.04994 116.178097) + (xy 143.056799 116.176532) + (xy 143.079614 116.158351) + (xy 143.085399 116.154256) + (xy 143.088555 116.15228) + (xy 143.088557 116.152279) + (xy 143.091551 116.150404) + (xy 143.096764 116.145191) + (xy 143.102008 116.140506) + (xy 143.119444 116.126612) + (xy 143.119444 116.126611) + (xy 143.124949 116.122225) + (xy 143.128007 116.115886) + (xy 143.132398 116.110385) + (xy 143.132932 116.110811) + (xy 143.137308 116.104647) + (xy 143.427666 115.814289) + (xy 143.47186 115.795983) + (xy 143.516054 115.814289) + (xy 143.53436 115.858483) + (xy 143.53436 118.985509) + (xy 143.516054 119.029703) + (xy 140.519143 122.026614) + (xy 140.474949 122.04492) + (xy 132.807311 122.04492) + (xy 132.799972 122.04367) + (xy 132.799889 122.044397) + (xy 132.792898 122.0436) + (xy 132.786257 122.041268) + (xy 132.779265 122.042046) + (xy 132.779263 122.042046) + (xy 132.756883 122.044537) + (xy 132.74997 122.04492) + (xy 132.742547 122.04492) + (xy 132.739123 122.045701) + (xy 132.735633 122.046497) + (xy 132.728647 122.047679) + (xy 132.720963 122.048534) + (xy 132.699651 122.050906) + (xy 132.693688 122.054639) + (xy 132.689742 122.056013) + (xy 132.685982 122.057823) + (xy 132.679121 122.059388) + (xy 132.673619 122.063773) + (xy 132.673618 122.063773) + (xy 132.670958 122.065893) + (xy 132.657265 122.076805) + (xy 132.656301 122.077573) + (xy 132.650521 122.081666) + (xy 132.644369 122.085517) + (xy 132.639161 122.090725) + (xy 132.633917 122.09541) + (xy 132.610971 122.113695) + (xy 132.607913 122.120034) + (xy 132.603522 122.125535) + (xy 132.602989 122.125109) + (xy 132.598611 122.131275) + (xy 129.895513 124.834372) + (xy 129.889439 124.838677) + (xy 129.889895 124.83925) + (xy 129.884387 124.843631) + (xy 129.878042 124.846678) + (xy 129.873646 124.852175) + (xy 129.859582 124.869761) + (xy 129.854965 124.87492) + (xy 129.849716 124.880169) + (xy 129.84785 124.883137) + (xy 129.847849 124.883139) + (xy 129.847754 124.88329) + (xy 129.845942 124.886174) + (xy 129.841839 124.891947) + (xy 129.841204 124.892741) + (xy 129.823617 124.914733) + (xy 129.82204 124.921593) + (xy 129.820222 124.925353) + (xy 129.818844 124.929289) + (xy 129.815098 124.935248) + (xy 129.814307 124.942242) + (xy 129.814307 124.942243) + (xy 129.811821 124.964236) + (xy 129.810629 124.971213) + (xy 129.809 124.978297) + (xy 129.809 124.985671) + (xy 129.808604 124.992692) + (xy 129.805309 125.021838) + (xy 129.80763 125.028483) + (xy 129.808414 125.035477) + (xy 129.807736 125.035553) + (xy 129.809 125.043005) + (xy 129.809 126.9375) + (xy 129.790694 126.981694) + (xy 129.7465 127) + (xy 118.0125 127) + (xy 117.968306 126.981694) + (xy 117.95 126.9375) + (xy 117.95 125.005877) + (xy 117.950039 124.961589) + (xy 117.950039 124.961588) + (xy 117.950045 124.954551) + (xy 117.944289 124.942564) + (xy 117.943042 124.939966) + (xy 117.938448 124.926812) + (xy 117.936415 124.917901) + (xy 117.93485 124.911038) + (xy 117.924911 124.898565) + (xy 117.91745 124.886671) + (xy 117.91734 124.886441) + (xy 117.910547 124.872295) + (xy 117.905049 124.867898) + (xy 117.897908 124.862187) + (xy 117.888065 124.852327) + (xy 117.883733 124.846891) + (xy 117.877985 124.839677) + (xy 117.871648 124.83662) + (xy 117.871645 124.836618) + (xy 117.863622 124.832749) + (xy 117.851738 124.825265) + (xy 117.844782 124.819702) + (xy 117.839285 124.815306) + (xy 117.832428 124.813729) + (xy 117.832423 124.813727) + (xy 117.823511 124.811678) + (xy 117.810366 124.807062) + (xy 117.81015 124.806958) + (xy 117.795798 124.800035) + (xy 117.774114 124.800016) + (xy 117.772799 124.800015) + (xy 117.772783 124.800014) + (xy 117.772723 124.8) + (xy 117.755877 124.8) + (xy 117.704808 124.799955) + (xy 117.704551 124.799955) + (xy 117.704472 124.799993) + (xy 117.704407 124.8) + (xy 112.405877 124.8) + (xy 112.354808 124.799955) + (xy 112.354551 124.799955) + (xy 112.354472 124.799993) + (xy 112.354407 124.8) + (xy 110.455877 124.8) + (xy 110.404808 124.799955) + (xy 110.404551 124.799955) + (xy 110.404472 124.799993) + (xy 110.404407 124.8) + (xy 105.905877 124.8) + (xy 105.861589 124.799961) + (xy 105.861588 124.799961) + (xy 105.854551 124.799955) + (xy 105.848206 124.803002) + (xy 105.848205 124.803002) + (xy 105.839966 124.806958) + (xy 105.826812 124.811552) + (xy 105.811038 124.81515) + (xy 105.805532 124.819537) + (xy 105.805533 124.819537) + (xy 105.798565 124.825089) + (xy 105.786672 124.832549) + (xy 105.772295 124.839453) + (xy 105.767899 124.84495) + (xy 105.767898 124.844951) + (xy 105.762187 124.852092) + (xy 105.752327 124.861935) + (xy 105.739677 124.872015) + (xy 105.73662 124.878352) + (xy 105.736618 124.878355) + (xy 105.732749 124.886378) + (xy 105.725266 124.898261) + (xy 105.715306 124.910715) + (xy 105.713729 124.917572) + (xy 105.713727 124.917577) + (xy 105.711678 124.926489) + (xy 105.707062 124.939634) + (xy 105.700035 124.954202) + (xy 105.700029 124.961239) + (xy 105.700015 124.977201) + (xy 105.700014 124.977217) + (xy 105.7 124.977277) + (xy 105.7 124.994123) + (xy 105.699964 125.035553) + (xy 105.699955 125.045449) + (xy 105.699993 125.045528) + (xy 105.7 125.045593) + (xy 105.7 131.2375) + (xy 105.681694 131.281694) + (xy 105.6375 131.3) + (xy 99.3625 131.3) + (xy 99.318306 131.281694) + (xy 99.3 131.2375) + (xy 99.3 128.289564) + (xy 101.241051 128.289564) + (xy 101.241386 128.292329) + (xy 101.267618 128.509108) + (xy 101.267619 128.509114) + (xy 101.267954 128.51188) + (xy 101.3338 128.725917) + (xy 101.436509 128.924912) + (xy 101.572833 129.102573) + (xy 101.574889 129.104444) + (xy 101.574891 129.104446) + (xy 101.736405 129.251413) + (xy 101.736409 129.251416) + (xy 101.738464 129.253286) + (xy 101.928167 129.372286) + (xy 101.930747 129.373323) + (xy 102.133361 129.454774) + (xy 102.133365 129.454775) + (xy 102.135944 129.455812) + (xy 102.248287 129.479077) + (xy 102.35298 129.500759) + (xy 102.352987 129.50076) + (xy 102.355228 129.501224) + (xy 102.412048 129.5045) + (xy 102.556819 129.5045) + (xy 102.558182 129.504378) + (xy 102.55819 129.504378) + (xy 102.720283 129.489911) + (xy 102.723051 129.489664) + (xy 102.846793 129.455812) + (xy 102.936366 129.431308) + (xy 102.936371 129.431306) + (xy 102.939051 129.430573) + (xy 103.141174 129.334166) + (xy 103.32303 129.203489) + (xy 103.324959 129.201499) + (xy 103.324963 129.201495) + (xy 103.476937 129.04467) + (xy 103.476938 129.044668) + (xy 103.478871 129.042674) + (xy 103.60377 128.856803) + (xy 103.693782 128.651752) + (xy 103.746059 128.434002) + (xy 103.754228 128.292329) + (xy 103.758789 128.213217) + (xy 103.758789 128.213213) + (xy 103.758949 128.210436) + (xy 103.741142 128.063286) + (xy 103.732382 127.990892) + (xy 103.732381 127.990886) + (xy 103.732046 127.98812) + (xy 103.6662 127.774083) + (xy 103.563491 127.575088) + (xy 103.530828 127.53252) + (xy 103.473129 127.457326) + (xy 103.427167 127.397427) + (xy 103.399773 127.3725) + (xy 103.263595 127.248587) + (xy 103.263591 127.248584) + (xy 103.261536 127.246714) + (xy 103.071833 127.127714) + (xy 102.92684 127.069427) + (xy 102.866639 127.045226) + (xy 102.866635 127.045225) + (xy 102.864056 127.044188) + (xy 102.751713 127.020923) + (xy 102.64702 126.999241) + (xy 102.647013 126.99924) + (xy 102.644772 126.998776) + (xy 102.587952 126.9955) + (xy 102.443181 126.9955) + (xy 102.441818 126.995622) + (xy 102.44181 126.995622) + (xy 102.296132 127.008624) + (xy 102.276949 127.010336) + (xy 102.194034 127.033019) + (xy 102.063634 127.068692) + (xy 102.063629 127.068694) + (xy 102.060949 127.069427) + (xy 101.858826 127.165834) + (xy 101.67697 127.296511) + (xy 101.675041 127.298501) + (xy 101.675037 127.298505) + (xy 101.58099 127.395554) + (xy 101.521129 127.457326) + (xy 101.39623 127.643197) + (xy 101.306218 127.848248) + (xy 101.253941 128.065998) + (xy 101.253781 128.068778) + (xy 101.25378 128.068783) + (xy 101.245613 128.210436) + (xy 101.241051 128.289564) + (xy 99.3 128.289564) + (xy 99.3 115.271838) + (xy 105.555309 115.271838) + (xy 105.55763 115.278483) + (xy 105.558414 115.285477) + (xy 105.557736 115.285553) + (xy 105.559 115.293005) + (xy 105.559 120.206768) + (xy 105.55775 120.214107) + (xy 105.558477 120.21419) + (xy 105.55768 120.221181) + (xy 105.555348 120.227822) + (xy 105.556126 120.234815) + (xy 105.556126 120.234816) + (xy 105.558617 120.257197) + (xy 105.559 120.26411) + (xy 105.559 120.271533) + (xy 105.560581 120.278465) + (xy 105.561757 120.285418) + (xy 105.564986 120.314429) + (xy 105.568719 120.320393) + (xy 105.570094 120.324341) + (xy 105.571903 120.3281) + (xy 105.573468 120.334959) + (xy 105.577853 120.340461) + (xy 105.577853 120.340462) + (xy 105.591648 120.357773) + (xy 105.595744 120.363559) + (xy 105.599596 120.369711) + (xy 105.604809 120.374924) + (xy 105.609494 120.380168) + (xy 105.627775 120.403109) + (xy 105.634114 120.406167) + (xy 105.639615 120.410558) + (xy 105.639189 120.411092) + (xy 105.645353 120.415468) + (xy 105.834372 120.604487) + (xy 105.838677 120.610561) + (xy 105.83925 120.610105) + (xy 105.843631 120.615613) + (xy 105.846678 120.621958) + (xy 105.852175 120.626354) + (xy 105.869761 120.640418) + (xy 105.87492 120.645035) + (xy 105.880168 120.650283) + (xy 105.883139 120.65215) + (xy 105.88314 120.652151) + (xy 105.886169 120.654055) + (xy 105.891944 120.658159) + (xy 105.909236 120.671988) + (xy 105.90924 120.67199) + (xy 105.914733 120.676383) + (xy 105.92159 120.67796) + (xy 105.925352 120.679778) + (xy 105.92929 120.681157) + (xy 105.935248 120.684902) + (xy 105.942239 120.685692) + (xy 105.942244 120.685694) + (xy 105.964237 120.68818) + (xy 105.971223 120.689373) + (xy 105.978297 120.691) + (xy 105.985677 120.691) + (xy 105.992698 120.691396) + (xy 106.021838 120.69469) + (xy 106.028484 120.692369) + (xy 106.035478 120.691585) + (xy 106.035554 120.692264) + (xy 106.043004 120.691) + (xy 106.410001 120.691) + (xy 106.454195 120.709306) + (xy 106.472501 120.7535) + (xy 106.472501 120.813374) + (xy 106.472766 120.815385) + (xy 106.472766 120.81539) + (xy 106.473645 120.822067) + (xy 106.478779 120.861071) + (xy 106.4808 120.865404) + (xy 106.4808 120.865405) + (xy 106.525277 120.960787) + (xy 106.525279 120.960789) + (xy 106.527589 120.965744) + (xy 106.609256 121.047411) + (xy 106.614211 121.049721) + (xy 106.614213 121.049723) + (xy 106.663015 121.072479) + (xy 106.713929 121.096221) + (xy 106.727295 121.097981) + (xy 106.759593 121.102233) + (xy 106.759601 121.102233) + (xy 106.761625 121.1025) + (xy 106.763672 121.1025) + (xy 107.000642 121.102499) + (xy 107.238374 121.102499) + (xy 107.240385 121.102234) + (xy 107.24039 121.102234) + (xy 107.281331 121.096845) + (xy 107.281332 121.096845) + (xy 107.286071 121.096221) + (xy 107.300338 121.089568) + (xy 107.385787 121.049723) + (xy 107.385789 121.049721) + (xy 107.390744 121.047411) + (xy 107.472411 120.965744) + (xy 107.474721 120.960789) + (xy 107.474723 120.960787) + (xy 107.5192 120.865404) + (xy 107.521221 120.861071) + (xy 107.526356 120.822067) + (xy 107.527233 120.815407) + (xy 107.527233 120.815399) + (xy 107.5275 120.813375) + (xy 107.5275 120.811284) + (xy 108.123001 120.811284) + (xy 108.123266 120.815335) + (xy 108.128645 120.8562) + (xy 108.13129 120.865274) + (xy 108.175693 120.960495) + (xy 108.181873 120.969321) + (xy 108.255679 121.043127) + (xy 108.264505 121.049307) + (xy 108.359727 121.09371) + (xy 108.368801 121.096355) + (xy 108.409647 121.101733) + (xy 108.413726 121.102) + (xy 108.574069 121.102) + (xy 108.582859 121.098359) + (xy 108.5865 121.089569) + (xy 108.5865 121.089568) + (xy 108.7135 121.089568) + (xy 108.717141 121.098358) + (xy 108.725931 121.101999) + (xy 108.886284 121.101999) + (xy 108.890335 121.101734) + (xy 108.9312 121.096355) + (xy 108.940274 121.09371) + (xy 109.035495 121.049307) + (xy 109.044321 121.043127) + (xy 109.118127 120.969321) + (xy 109.124307 120.960495) + (xy 109.16871 120.865273) + (xy 109.171355 120.856199) + (xy 109.176733 120.815353) + (xy 109.177 120.811274) + (xy 109.177 120.575931) + (xy 109.173359 120.567141) + (xy 109.164569 120.5635) + (xy 108.725931 120.5635) + (xy 108.717141 120.567141) + (xy 108.7135 120.575931) + (xy 108.7135 121.089568) + (xy 108.5865 121.089568) + (xy 108.5865 120.575931) + (xy 108.582859 120.567141) + (xy 108.574069 120.5635) + (xy 108.135432 120.5635) + (xy 108.126642 120.567141) + (xy 108.123001 120.575931) + (xy 108.123001 120.811284) + (xy 107.5275 120.811284) + (xy 107.527499 120.424069) + (xy 108.123 120.424069) + (xy 108.126641 120.432859) + (xy 108.135431 120.4365) + (xy 108.574069 120.4365) + (xy 108.582859 120.432859) + (xy 108.5865 120.424069) + (xy 108.7135 120.424069) + (xy 108.717141 120.432859) + (xy 108.725931 120.4365) + (xy 109.164568 120.4365) + (xy 109.173358 120.432859) + (xy 109.176999 120.424069) + (xy 109.176999 120.188716) + (xy 109.176734 120.184665) + (xy 109.171355 120.1438) + (xy 109.16871 120.134726) + (xy 109.124307 120.039505) + (xy 109.118127 120.030679) + (xy 109.044321 119.956873) + (xy 109.035495 119.950693) + (xy 108.940273 119.90629) + (xy 108.931199 119.903645) + (xy 108.890353 119.898267) + (xy 108.886274 119.898) + (xy 108.725931 119.898) + (xy 108.717141 119.901641) + (xy 108.7135 119.910431) + (xy 108.7135 120.424069) + (xy 108.5865 120.424069) + (xy 108.5865 119.910432) + (xy 108.582859 119.901642) + (xy 108.574069 119.898001) + (xy 108.413716 119.898001) + (xy 108.409665 119.898266) + (xy 108.3688 119.903645) + (xy 108.359726 119.90629) + (xy 108.264505 119.950693) + (xy 108.255679 119.956873) + (xy 108.181873 120.030679) + (xy 108.175693 120.039505) + (xy 108.13129 120.134727) + (xy 108.128645 120.143801) + (xy 108.123267 120.184647) + (xy 108.123 120.188726) + (xy 108.123 120.424069) + (xy 107.527499 120.424069) + (xy 107.527499 120.186626) + (xy 107.527232 120.184593) + (xy 107.521845 120.143669) + (xy 107.521845 120.143668) + (xy 107.521221 120.138929) + (xy 107.474859 120.039505) + (xy 107.474723 120.039213) + (xy 107.474721 120.039211) + (xy 107.472411 120.034256) + (xy 107.390744 119.952589) + (xy 107.385789 119.950279) + (xy 107.385787 119.950277) + (xy 107.325118 119.921987) + (xy 107.286071 119.903779) + (xy 107.269831 119.901641) + (xy 107.240407 119.897767) + (xy 107.240399 119.897767) + (xy 107.238375 119.8975) + (xy 107.236328 119.8975) + (xy 106.999358 119.897501) + (xy 106.761626 119.897501) + (xy 106.759615 119.897766) + (xy 106.75961 119.897766) + (xy 106.718669 119.903155) + (xy 106.718668 119.903155) + (xy 106.713929 119.903779) + (xy 106.709595 119.9058) + (xy 106.614213 119.950277) + (xy 106.614211 119.950279) + (xy 106.609256 119.952589) + (xy 106.527589 120.034256) + (xy 106.525279 120.039211) + (xy 106.525277 120.039213) + (xy 106.525141 120.039505) + (xy 106.478779 120.138929) + (xy 106.478155 120.143669) + (xy 106.478155 120.14367) + (xy 106.472767 120.184593) + (xy 106.472767 120.184601) + (xy 106.4725 120.186625) + (xy 106.4725 120.2465) + (xy 106.454194 120.290694) + (xy 106.41 120.309) + (xy 106.105002 120.309) + (xy 106.060808 120.290694) + (xy 105.959306 120.189191) + (xy 105.941 120.144997) + (xy 105.941 115.355003) + (xy 105.959306 115.310809) + (xy 106.085809 115.184306) + (xy 106.130003 115.166) + (xy 106.253786 115.166) + (xy 106.29798 115.184306) + (xy 106.305753 115.193777) + (xy 106.335982 115.239018) + (xy 106.343508 115.244047) + (xy 106.406115 115.28588) + (xy 106.406117 115.285881) + (xy 106.411234 115.2893) + (xy 106.441808 115.295382) + (xy 106.474581 115.301901) + (xy 106.474584 115.301901) + (xy 106.477594 115.3025) + (xy 107.797406 115.3025) + (xy 107.800416 115.301901) + (xy 107.800419 115.301901) + (xy 107.833192 115.295382) + (xy 107.863766 115.2893) + (xy 107.868883 115.285881) + (xy 107.868885 115.28588) + (xy 107.931492 115.244047) + (xy 107.939018 115.239018) + (xy 107.944533 115.230764) + (xy 107.984306 115.204188) + (xy 108.031223 115.21352) + (xy 108.057799 115.253293) + (xy 108.059 115.265487) + (xy 108.059 115.394998) + (xy 108.040694 115.439192) + (xy 107.939191 115.540694) + (xy 107.894997 115.559) + (xy 107.293231 115.559) + (xy 107.285892 115.55775) + (xy 107.285809 115.558477) + (xy 107.278818 115.55768) + (xy 107.272177 115.555348) + (xy 107.265185 115.556126) + (xy 107.265183 115.556126) + (xy 107.242803 115.558617) + (xy 107.23589 115.559) + (xy 107.228467 115.559) + (xy 107.225043 115.559781) + (xy 107.221553 115.560577) + (xy 107.214567 115.561759) + (xy 107.206883 115.562614) + (xy 107.185571 115.564986) + (xy 107.179608 115.568719) + (xy 107.175662 115.570093) + (xy 107.171902 115.571903) + (xy 107.165041 115.573468) + (xy 107.143337 115.590764) + (xy 107.142221 115.591653) + (xy 107.136441 115.595746) + (xy 107.130289 115.599597) + (xy 107.125081 115.604805) + (xy 107.119837 115.60949) + (xy 107.111486 115.616145) + (xy 107.096891 115.627775) + (xy 107.093833 115.634114) + (xy 107.089442 115.639615) + (xy 107.088909 115.639189) + (xy 107.084531 115.645355) + (xy 106.895514 115.834372) + (xy 106.88944 115.838677) + (xy 106.889896 115.839251) + (xy 106.884391 115.84363) + (xy 106.878042 115.846678) + (xy 106.860465 115.868657) + (xy 106.859582 115.869761) + (xy 106.854965 115.87492) + (xy 106.849716 115.880169) + (xy 106.847847 115.883143) + (xy 106.845943 115.886172) + (xy 106.841838 115.891948) + (xy 106.823617 115.914733) + (xy 106.82204 115.921593) + (xy 106.820222 115.925353) + (xy 106.818844 115.929289) + (xy 106.815098 115.935248) + (xy 106.814307 115.942242) + (xy 106.814307 115.942243) + (xy 106.811821 115.964236) + (xy 106.810629 115.971213) + (xy 106.809 115.978297) + (xy 106.809 115.985671) + (xy 106.808604 115.992692) + (xy 106.805309 116.021838) + (xy 106.80763 116.028483) + (xy 106.808414 116.035477) + (xy 106.807736 116.035553) + (xy 106.809 116.043005) + (xy 106.809 116.336452) + (xy 106.790694 116.380646) + (xy 106.754657 116.398417) + (xy 106.718675 116.403153) + (xy 106.718667 116.403155) + (xy 106.713929 116.403779) + (xy 106.709595 116.4058) + (xy 106.614213 116.450277) + (xy 106.614211 116.450279) + (xy 106.609256 116.452589) + (xy 106.527589 116.534256) + (xy 106.525279 116.539211) + (xy 106.525277 116.539213) + (xy 106.502521 116.588015) + (xy 106.478779 116.638929) + (xy 106.478155 116.643669) + (xy 106.478155 116.64367) + (xy 106.472767 116.684593) + (xy 106.472767 116.684601) + (xy 106.4725 116.686625) + (xy 106.472501 117.313374) + (xy 106.472766 117.315385) + (xy 106.472766 117.31539) + (xy 106.478155 117.35633) + (xy 106.478779 117.361071) + (xy 106.4808 117.365404) + (xy 106.4808 117.365405) + (xy 106.525277 117.460787) + (xy 106.525279 117.460789) + (xy 106.527589 117.465744) + (xy 106.609256 117.547411) + (xy 106.614211 117.549721) + (xy 106.614213 117.549723) + (xy 106.645751 117.564429) + (xy 106.713929 117.596221) + (xy 106.734113 117.598878) + (xy 106.754658 117.601583) + (xy 106.796085 117.6255) + (xy 106.809 117.663548) + (xy 106.809 118.086452) + (xy 106.790694 118.130646) + (xy 106.754657 118.148417) + (xy 106.718675 118.153153) + (xy 106.718667 118.153155) + (xy 106.713929 118.153779) + (xy 106.709595 118.1558) + (xy 106.614213 118.200277) + (xy 106.614211 118.200279) + (xy 106.609256 118.202589) + (xy 106.527589 118.284256) + (xy 106.525279 118.289211) + (xy 106.525277 118.289213) + (xy 106.50545 118.331732) + (xy 106.478779 118.388929) + (xy 106.478155 118.393669) + (xy 106.478155 118.39367) + (xy 106.472767 118.434593) + (xy 106.472767 118.434601) + (xy 106.4725 118.436625) + (xy 106.472501 119.063374) + (xy 106.472766 119.065385) + (xy 106.472766 119.06539) + (xy 106.478138 119.106199) + (xy 106.478779 119.111071) + (xy 106.4808 119.115404) + (xy 106.4808 119.115405) + (xy 106.525277 119.210787) + (xy 106.525279 119.210789) + (xy 106.527589 119.215744) + (xy 106.609256 119.297411) + (xy 106.614211 119.299721) + (xy 106.614213 119.299723) + (xy 106.641299 119.312353) + (xy 106.713929 119.346221) + (xy 106.727295 119.347981) + (xy 106.759593 119.352233) + (xy 106.759601 119.352233) + (xy 106.761625 119.3525) + (xy 106.763672 119.3525) + (xy 107.000642 119.352499) + (xy 107.238374 119.352499) + (xy 107.240385 119.352234) + (xy 107.24039 119.352234) + (xy 107.281331 119.346845) + (xy 107.281332 119.346845) + (xy 107.286071 119.346221) + (xy 107.319444 119.330659) + (xy 107.385787 119.299723) + (xy 107.385789 119.299721) + (xy 107.390744 119.297411) + (xy 107.472411 119.215744) + (xy 107.474721 119.210789) + (xy 107.474723 119.210787) + (xy 107.497479 119.161985) + (xy 107.521221 119.111071) + (xy 107.522981 119.097705) + (xy 107.527233 119.065407) + (xy 107.527233 119.065399) + (xy 107.5275 119.063375) + (xy 107.5275 119.061284) + (xy 108.123001 119.061284) + (xy 108.123266 119.065335) + (xy 108.128645 119.1062) + (xy 108.13129 119.115274) + (xy 108.175693 119.210495) + (xy 108.181873 119.219321) + (xy 108.255679 119.293127) + (xy 108.264505 119.299307) + (xy 108.359727 119.34371) + (xy 108.368801 119.346355) + (xy 108.409647 119.351733) + (xy 108.413726 119.352) + (xy 108.574069 119.352) + (xy 108.582859 119.348359) + (xy 108.5865 119.339569) + (xy 108.5865 119.339568) + (xy 108.7135 119.339568) + (xy 108.717141 119.348358) + (xy 108.725931 119.351999) + (xy 108.886284 119.351999) + (xy 108.890335 119.351734) + (xy 108.9312 119.346355) + (xy 108.940274 119.34371) + (xy 109.035495 119.299307) + (xy 109.044321 119.293127) + (xy 109.118127 119.219321) + (xy 109.124307 119.210495) + (xy 109.16871 119.115273) + (xy 109.171355 119.106199) + (xy 109.176733 119.065353) + (xy 109.177 119.061274) + (xy 109.177 118.825931) + (xy 109.173359 118.817141) + (xy 109.164569 118.8135) + (xy 108.725931 118.8135) + (xy 108.717141 118.817141) + (xy 108.7135 118.825931) + (xy 108.7135 119.339568) + (xy 108.5865 119.339568) + (xy 108.5865 118.825931) + (xy 108.582859 118.817141) + (xy 108.574069 118.8135) + (xy 108.135432 118.8135) + (xy 108.126642 118.817141) + (xy 108.123001 118.825931) + (xy 108.123001 119.061284) + (xy 107.5275 119.061284) + (xy 107.527499 118.674069) + (xy 108.123 118.674069) + (xy 108.126641 118.682859) + (xy 108.135431 118.6865) + (xy 108.574069 118.6865) + (xy 108.582859 118.682859) + (xy 108.5865 118.674069) + (xy 108.7135 118.674069) + (xy 108.717141 118.682859) + (xy 108.725931 118.6865) + (xy 109.164568 118.6865) + (xy 109.173358 118.682859) + (xy 109.176999 118.674069) + (xy 109.176999 118.438716) + (xy 109.176734 118.434665) + (xy 109.171355 118.3938) + (xy 109.16871 118.384726) + (xy 109.124307 118.289505) + (xy 109.11841 118.281083) + (xy 118.148001 118.281083) + (xy 118.148333 118.285614) + (xy 118.157478 118.347743) + (xy 118.160326 118.35691) + (xy 118.207556 118.453105) + (xy 118.213484 118.461387) + (xy 118.289111 118.536883) + (xy 118.297406 118.542799) + (xy 118.393687 118.589863) + (xy 118.402851 118.592695) + (xy 118.464391 118.601672) + (xy 118.468904 118.602) + (xy 118.674069 118.602) + (xy 118.682859 118.598359) + (xy 118.6865 118.589569) + (xy 118.6865 118.589568) + (xy 118.8135 118.589568) + (xy 118.817141 118.598358) + (xy 118.825931 118.601999) + (xy 119.031083 118.601999) + (xy 119.035614 118.601667) + (xy 119.097743 118.592522) + (xy 119.10691 118.589674) + (xy 119.203105 118.542444) + (xy 119.211387 118.536516) + (xy 119.286883 118.460889) + (xy 119.292799 118.452594) + (xy 119.339863 118.356313) + (xy 119.342695 118.347149) + (xy 119.351672 118.285609) + (xy 119.352 118.281096) + (xy 119.352 118.100931) + (xy 119.348359 118.092141) + (xy 119.339569 118.0885) + (xy 118.825931 118.0885) + (xy 118.817141 118.092141) + (xy 118.8135 118.100931) + (xy 118.8135 118.589568) + (xy 118.6865 118.589568) + (xy 118.6865 118.100931) + (xy 118.682859 118.092141) + (xy 118.674069 118.0885) + (xy 118.160432 118.0885) + (xy 118.151642 118.092141) + (xy 118.148001 118.100931) + (xy 118.148001 118.281083) + (xy 109.11841 118.281083) + (xy 109.118127 118.280679) + (xy 109.044321 118.206873) + (xy 109.035495 118.200693) + (xy 108.940273 118.15629) + (xy 108.931199 118.153645) + (xy 108.890353 118.148267) + (xy 108.886274 118.148) + (xy 108.725931 118.148) + (xy 108.717141 118.151641) + (xy 108.7135 118.160431) + (xy 108.7135 118.674069) + (xy 108.5865 118.674069) + (xy 108.5865 118.160432) + (xy 108.582859 118.151642) + (xy 108.574069 118.148001) + (xy 108.413716 118.148001) + (xy 108.409665 118.148266) + (xy 108.3688 118.153645) + (xy 108.359726 118.15629) + (xy 108.264505 118.200693) + (xy 108.255679 118.206873) + (xy 108.181873 118.280679) + (xy 108.175693 118.289505) + (xy 108.13129 118.384727) + (xy 108.128645 118.393801) + (xy 108.123267 118.434647) + (xy 108.123 118.438726) + (xy 108.123 118.674069) + (xy 107.527499 118.674069) + (xy 107.527499 118.436626) + (xy 107.527232 118.434593) + (xy 107.521845 118.393669) + (xy 107.521845 118.393668) + (xy 107.521221 118.388929) + (xy 107.49455 118.331732) + (xy 107.474723 118.289213) + (xy 107.474721 118.289211) + (xy 107.472411 118.284256) + (xy 107.390744 118.202589) + (xy 107.385789 118.200279) + (xy 107.385787 118.200277) + (xy 107.336985 118.177521) + (xy 107.286071 118.153779) + (xy 107.265887 118.151122) + (xy 107.245342 118.148417) + (xy 107.203915 118.1245) + (xy 107.191 118.086452) + (xy 107.191 117.949069) + (xy 118.148 117.949069) + (xy 118.151641 117.957859) + (xy 118.160431 117.9615) + (xy 118.674069 117.9615) + (xy 118.682859 117.957859) + (xy 118.6865 117.949069) + (xy 118.8135 117.949069) + (xy 118.817141 117.957859) + (xy 118.825931 117.9615) + (xy 119.339568 117.9615) + (xy 119.348358 117.957859) + (xy 119.351999 117.949069) + (xy 119.351999 117.768917) + (xy 119.351667 117.764386) + (xy 119.342522 117.702257) + (xy 119.339674 117.69309) + (xy 119.292444 117.596895) + (xy 119.286516 117.588613) + (xy 119.210889 117.513117) + (xy 119.202594 117.507201) + (xy 119.106313 117.460137) + (xy 119.097149 117.457305) + (xy 119.035609 117.448328) + (xy 119.031096 117.448) + (xy 118.825931 117.448) + (xy 118.817141 117.451641) + (xy 118.8135 117.460431) + (xy 118.8135 117.949069) + (xy 118.6865 117.949069) + (xy 118.6865 117.460432) + (xy 118.682859 117.451642) + (xy 118.674069 117.448001) + (xy 118.468917 117.448001) + (xy 118.464386 117.448333) + (xy 118.402257 117.457478) + (xy 118.39309 117.460326) + (xy 118.296895 117.507556) + (xy 118.288613 117.513484) + (xy 118.213117 117.589111) + (xy 118.207201 117.597406) + (xy 118.160137 117.693687) + (xy 118.157305 117.702851) + (xy 118.148328 117.764391) + (xy 118.148 117.768904) + (xy 118.148 117.949069) + (xy 107.191 117.949069) + (xy 107.191 117.663548) + (xy 107.209306 117.619354) + (xy 107.245343 117.601583) + (xy 107.281325 117.596847) + (xy 107.281333 117.596845) + (xy 107.286071 117.596221) + (xy 107.302386 117.588613) + (xy 107.385787 117.549723) + (xy 107.385789 117.549721) + (xy 107.390744 117.547411) + (xy 107.472411 117.465744) + (xy 107.474721 117.460789) + (xy 107.474723 117.460787) + (xy 107.5192 117.365404) + (xy 107.521221 117.361071) + (xy 107.522981 117.347705) + (xy 107.527233 117.315407) + (xy 107.527233 117.315399) + (xy 107.5275 117.313375) + (xy 107.527499 116.686626) + (xy 107.527232 116.684593) + (xy 107.521845 116.643669) + (xy 107.521845 116.643668) + (xy 107.521221 116.638929) + (xy 107.517898 116.631802) + (xy 107.474723 116.539213) + (xy 107.474721 116.539211) + (xy 107.472411 116.534256) + (xy 107.390744 116.452589) + (xy 107.385789 116.450279) + (xy 107.385787 116.450277) + (xy 107.336985 116.427521) + (xy 107.286071 116.403779) + (xy 107.265887 116.401122) + (xy 107.245342 116.398417) + (xy 107.203915 116.3745) + (xy 107.191 116.336452) + (xy 107.191 116.105003) + (xy 107.209306 116.060809) + (xy 107.310809 115.959306) + (xy 107.355003 115.941) + (xy 107.956768 115.941) + (xy 107.964107 115.94225) + (xy 107.96419 115.941523) + (xy 107.971181 115.94232) + (xy 107.977822 115.944652) + (xy 107.984815 115.943874) + (xy 107.984816 115.943874) + (xy 108.007197 115.941383) + (xy 108.01411 115.941) + (xy 108.021533 115.941) + (xy 108.028465 115.939419) + (xy 108.035418 115.938243) + (xy 108.064429 115.935014) + (xy 108.070393 115.931281) + (xy 108.074341 115.929906) + (xy 108.0781 115.928097) + (xy 108.084959 115.926532) + (xy 108.090845 115.921842) + (xy 108.107773 115.908352) + (xy 108.113559 115.904256) + (xy 108.116715 115.90228) + (xy 108.116717 115.902279) + (xy 108.119711 115.900404) + (xy 108.124924 115.895191) + (xy 108.130168 115.890506) + (xy 108.147604 115.876612) + (xy 108.147604 115.876611) + (xy 108.153109 115.872225) + (xy 108.156167 115.865886) + (xy 108.160558 115.860385) + (xy 108.161092 115.860811) + (xy 108.165468 115.854647) + (xy 108.354487 115.665628) + (xy 108.360561 115.661323) + (xy 108.360105 115.66075) + (xy 108.365613 115.656369) + (xy 108.371958 115.653322) + (xy 108.386356 115.635318) + (xy 108.390418 115.630239) + (xy 108.395035 115.62508) + (xy 108.400283 115.619832) + (xy 108.404055 115.613831) + (xy 108.408159 115.608056) + (xy 108.421988 115.590764) + (xy 108.42199 115.59076) + (xy 108.426383 115.585267) + (xy 108.42796 115.57841) + (xy 108.429778 115.574648) + (xy 108.431157 115.57071) + (xy 108.434902 115.564752) + (xy 108.435692 115.557761) + (xy 108.435694 115.557756) + (xy 108.43818 115.535763) + (xy 108.439373 115.528778) + (xy 108.440208 115.525146) + (xy 108.441 115.521703) + (xy 108.441 115.514323) + (xy 108.441396 115.507303) + (xy 108.44336 115.489926) + (xy 108.44469 115.478162) + (xy 108.442369 115.471516) + (xy 108.441585 115.464522) + (xy 108.442264 115.464446) + (xy 108.441 115.456996) + (xy 108.441 114.543231) + (xy 108.44225 114.535892) + (xy 108.441523 114.535809) + (xy 108.44232 114.528818) + (xy 108.444652 114.522177) + (xy 108.443693 114.513555) + (xy 108.441383 114.492803) + (xy 108.441 114.48589) + (xy 108.441 114.478467) + (xy 108.439423 114.471553) + (xy 108.438241 114.464567) + (xy 108.435792 114.442563) + (xy 108.435014 114.435571) + (xy 108.431281 114.429608) + (xy 108.429907 114.425662) + (xy 108.428097 114.421902) + (xy 108.426532 114.415041) + (xy 108.408344 114.392217) + (xy 108.404254 114.386441) + (xy 108.400403 114.380289) + (xy 108.395195 114.375081) + (xy 108.39051 114.369837) + (xy 108.376612 114.352396) + (xy 108.376611 114.352396) + (xy 108.372225 114.346891) + (xy 108.365886 114.343833) + (xy 108.360385 114.339442) + (xy 108.360811 114.338909) + (xy 108.354645 114.334531) + (xy 108.240628 114.220513) + (xy 108.236322 114.214438) + (xy 108.235749 114.214894) + (xy 108.23137 114.209389) + (xy 108.228322 114.203042) + (xy 108.205239 114.184582) + (xy 108.20008 114.179965) + (xy 108.194831 114.174716) + (xy 108.188828 114.170943) + (xy 108.183052 114.166838) + (xy 108.160267 114.148617) + (xy 108.153407 114.14704) + (xy 108.149647 114.145222) + (xy 108.145711 114.143844) + (xy 108.139752 114.140098) + (xy 108.132758 114.139307) + (xy 108.132757 114.139307) + (xy 108.110764 114.136821) + (xy 108.103787 114.135629) + (xy 108.096703 114.134) + (xy 108.089329 114.134) + (xy 108.082308 114.133604) + (xy 108.080627 114.133414) + (xy 108.053162 114.130309) + (xy 108.046517 114.13263) + (xy 108.039523 114.133414) + (xy 108.039447 114.132736) + (xy 108.031995 114.134) + (xy 108.021214 114.134) + (xy 107.97702 114.115694) + (xy 107.969247 114.106223) + (xy 107.942437 114.066099) + (xy 107.939018 114.060982) + (xy 107.925077 114.051667) + (xy 107.898501 114.011893) + (xy 107.907833 113.964977) + (xy 107.925076 113.947734) + (xy 107.933539 113.942079) + (xy 107.942077 113.933541) + (xy 107.985408 113.86869) + (xy 107.99003 113.857532) + (xy 108.001401 113.800369) + (xy 108.002 113.794285) + (xy 108.002 113.750931) + (xy 107.998359 113.742141) + (xy 107.989569 113.7385) + (xy 106.285431 113.7385) + (xy 106.276641 113.742141) + (xy 106.273 113.750931) + (xy 106.273 113.794285) + (xy 106.273599 113.800369) + (xy 106.28497 113.857532) + (xy 106.289592 113.86869) + (xy 106.332923 113.933541) + (xy 106.341461 113.942079) + (xy 106.349924 113.947734) + (xy 106.376499 113.987508) + (xy 106.367166 114.034424) + (xy 106.349923 114.051667) + (xy 106.335982 114.060982) + (xy 106.332563 114.066099) + (xy 106.291118 114.128126) + (xy 106.2857 114.136234) + (xy 106.281444 114.157631) + (xy 106.273286 114.198645) + (xy 106.2725 114.202594) + (xy 106.2725 114.447406) + (xy 106.273099 114.450416) + (xy 106.273099 114.450419) + (xy 106.277591 114.473) + (xy 106.2857 114.513766) + (xy 106.289119 114.518883) + (xy 106.28912 114.518885) + (xy 106.325263 114.572976) + (xy 106.335982 114.589018) + (xy 106.348988 114.597708) + (xy 106.349474 114.598033) + (xy 106.37605 114.637807) + (xy 106.366718 114.684723) + (xy 106.349474 114.701967) + (xy 106.335982 114.710982) + (xy 106.332563 114.716099) + (xy 106.305753 114.756223) + (xy 106.265979 114.782799) + (xy 106.253786 114.784) + (xy 106.068234 114.784) + (xy 106.060893 114.782747) + (xy 106.06081 114.783476) + (xy 106.053819 114.782679) + (xy 106.047178 114.780347) + (xy 106.040185 114.781125) + (xy 106.040184 114.781125) + (xy 106.017794 114.783617) + (xy 106.010881 114.784) + (xy 106.003467 114.784) + (xy 105.996544 114.785579) + (xy 105.989591 114.786755) + (xy 105.960571 114.789985) + (xy 105.954607 114.793719) + (xy 105.95067 114.79509) + (xy 105.946904 114.796903) + (xy 105.940041 114.798468) + (xy 105.925027 114.810432) + (xy 105.917229 114.816646) + (xy 105.911446 114.82074) + (xy 105.90829 114.822716) + (xy 105.908284 114.822721) + (xy 105.905289 114.824596) + (xy 105.900076 114.829809) + (xy 105.894832 114.834494) + (xy 105.871891 114.852775) + (xy 105.868833 114.859114) + (xy 105.864442 114.864615) + (xy 105.863908 114.864189) + (xy 105.859532 114.870353) + (xy 105.645513 115.084372) + (xy 105.639439 115.088677) + (xy 105.639895 115.08925) + (xy 105.634387 115.093631) + (xy 105.628042 115.096678) + (xy 105.623646 115.102175) + (xy 105.609582 115.119761) + (xy 105.604965 115.12492) + (xy 105.599716 115.130169) + (xy 105.595943 115.136172) + (xy 105.591838 115.141948) + (xy 105.573617 115.164733) + (xy 105.57204 115.171593) + (xy 105.570222 115.175353) + (xy 105.568844 115.179289) + (xy 105.565098 115.185248) + (xy 105.564307 115.192242) + (xy 105.564307 115.192243) + (xy 105.561821 115.214236) + (xy 105.560629 115.221213) + (xy 105.559 115.228297) + (xy 105.559 115.235671) + (xy 105.558604 115.242692) + (xy 105.555309 115.271838) + (xy 99.3 115.271838) + (xy 99.3 113.147406) + (xy 106.2725 113.147406) + (xy 106.273099 113.150416) + (xy 106.273099 113.150419) + (xy 106.274677 113.158352) + (xy 106.2857 113.213766) + (xy 106.289119 113.218883) + (xy 106.28912 113.218885) + (xy 106.324299 113.271533) + (xy 106.335982 113.289018) + (xy 106.341099 113.292437) + (xy 106.349923 113.298333) + (xy 106.376499 113.338107) + (xy 106.367167 113.385023) + (xy 106.349924 113.402266) + (xy 106.341461 113.407921) + (xy 106.332923 113.416459) + (xy 106.289592 113.48131) + (xy 106.28497 113.492468) + (xy 106.273599 113.549631) + (xy 106.273 113.555715) + (xy 106.273 113.599069) + (xy 106.276641 113.607859) + (xy 106.285431 113.6115) + (xy 107.989569 113.6115) + (xy 107.998359 113.607859) + (xy 108.002 113.599069) + (xy 108.002 113.555715) + (xy 108.001401 113.549631) + (xy 107.99003 113.492468) + (xy 107.985408 113.48131) + (xy 107.942077 113.416459) + (xy 107.933539 113.407921) + (xy 107.925076 113.402266) + (xy 107.898501 113.362492) + (xy 107.907834 113.315576) + (xy 107.925077 113.298333) + (xy 107.933901 113.292437) + (xy 107.939018 113.289018) + (xy 107.950701 113.271533) + (xy 107.98588 113.218885) + (xy 107.985881 113.218883) + (xy 107.9893 113.213766) + (xy 108.000323 113.158352) + (xy 108.001901 113.150419) + (xy 108.001901 113.150416) + (xy 108.0025 113.147406) + (xy 108.0025 112.902594) + (xy 108.001582 112.897975) + (xy 107.991201 112.845791) + (xy 107.9893 112.836234) + (xy 107.978325 112.819808) + (xy 107.942437 112.766099) + (xy 107.939018 112.760982) + (xy 107.91153 112.742615) + (xy 107.868885 112.71412) + (xy 107.868883 112.714119) + (xy 107.863766 112.7107) + (xy 107.833192 112.704618) + (xy 107.800419 112.698099) + (xy 107.800416 112.698099) + (xy 107.797406 112.6975) + (xy 106.477594 112.6975) + (xy 106.474584 112.698099) + (xy 106.474581 112.698099) + (xy 106.441808 112.704618) + (xy 106.411234 112.7107) + (xy 106.406117 112.714119) + (xy 106.406115 112.71412) + (xy 106.36347 112.742615) + (xy 106.335982 112.760982) + (xy 106.332563 112.766099) + (xy 106.296676 112.819808) + (xy 106.2857 112.836234) + (xy 106.283799 112.845791) + (xy 106.273419 112.897975) + (xy 106.2725 112.902594) + (xy 106.2725 113.147406) + (xy 99.3 113.147406) + (xy 99.3 108.562558) + (xy 106.7225 108.562558) + (xy 106.723099 108.565569) + (xy 106.728287 108.591648) + (xy 106.729898 108.599748) + (xy 106.758078 108.641922) + (xy 106.800252 108.670102) + (xy 106.806285 108.671302) + (xy 106.806287 108.671303) + (xy 106.832384 108.676494) + (xy 106.837442 108.6775) + (xy 107.406 108.6775) + (xy 107.450194 108.695806) + (xy 107.4685 108.74) + (xy 107.4685 110.552624) + (xy 107.4671 110.565778) + (xy 107.463655 110.58178) + (xy 107.464262 110.58691) + (xy 107.464262 110.586912) + (xy 107.468067 110.619059) + (xy 107.4685 110.626405) + (xy 107.4685 110.631692) + (xy 107.471936 110.652336) + (xy 107.472347 110.655223) + (xy 107.478582 110.707907) + (xy 107.480818 110.712563) + (xy 107.481933 110.716402) + (xy 107.48323 110.720191) + (xy 107.484078 110.725283) + (xy 107.486529 110.729826) + (xy 107.48653 110.729828) + (xy 107.509263 110.771958) + (xy 107.5106 110.774583) + (xy 107.53356 110.822398) + (xy 107.53717 110.826692) + (xy 107.537355 110.826877) + (xy 107.539944 110.829944) + (xy 107.541935 110.83251) + (xy 107.544388 110.837057) + (xy 107.549598 110.841873) + (xy 107.585108 110.874698) + (xy 107.586877 110.876399) + (xy 109.971741 113.261264) + (xy 109.98005 113.271553) + (xy 109.986124 113.280961) + (xy 109.986127 113.280964) + (xy 109.988929 113.285304) + (xy 109.992987 113.288503) + (xy 110.018411 113.308546) + (xy 110.023911 113.313434) + (xy 110.027648 113.317171) + (xy 110.029748 113.318672) + (xy 110.029752 113.318675) + (xy 110.04466 113.329329) + (xy 110.047014 113.331095) + (xy 110.060193 113.341484) + (xy 110.083567 113.383219) + (xy 110.084 113.390567) + (xy 110.084 115.269997) + (xy 110.065694 115.314191) + (xy 108.992646 116.387239) + (xy 108.948452 116.405545) + (xy 108.936071 116.403778) + (xy 108.936071 116.403779) + (xy 108.890407 116.397767) + (xy 108.890399 116.397767) + (xy 108.888375 116.3975) + (xy 108.886328 116.3975) + (xy 108.649358 116.397501) + (xy 108.411626 116.397501) + (xy 108.409615 116.397766) + (xy 108.40961 116.397766) + (xy 108.368669 116.403155) + (xy 108.368668 116.403155) + (xy 108.363929 116.403779) + (xy 108.359595 116.4058) + (xy 108.264213 116.450277) + (xy 108.264211 116.450279) + (xy 108.259256 116.452589) + (xy 108.177589 116.534256) + (xy 108.175279 116.539211) + (xy 108.175277 116.539213) + (xy 108.152521 116.588015) + (xy 108.128779 116.638929) + (xy 108.128155 116.643669) + (xy 108.128155 116.64367) + (xy 108.122767 116.684593) + (xy 108.122767 116.684601) + (xy 108.1225 116.686625) + (xy 108.122501 117.313374) + (xy 108.122766 117.315385) + (xy 108.122766 117.31539) + (xy 108.128155 117.35633) + (xy 108.128779 117.361071) + (xy 108.1308 117.365404) + (xy 108.1308 117.365405) + (xy 108.175277 117.460787) + (xy 108.175279 117.460789) + (xy 108.177589 117.465744) + (xy 108.259256 117.547411) + (xy 108.264211 117.549721) + (xy 108.264213 117.549723) + (xy 108.295751 117.564429) + (xy 108.363929 117.596221) + (xy 108.377295 117.597981) + (xy 108.409593 117.602233) + (xy 108.409601 117.602233) + (xy 108.411625 117.6025) + (xy 108.413672 117.6025) + (xy 108.650642 117.602499) + (xy 108.888374 117.602499) + (xy 108.890385 117.602234) + (xy 108.89039 117.602234) + (xy 108.931331 117.596845) + (xy 108.931332 117.596845) + (xy 108.936071 117.596221) + (xy 108.952386 117.588613) + (xy 109.035787 117.549723) + (xy 109.035789 117.549721) + (xy 109.040744 117.547411) + (xy 109.122411 117.465744) + (xy 109.124721 117.460789) + (xy 109.124723 117.460787) + (xy 109.1692 117.365404) + (xy 109.171221 117.361071) + (xy 109.172981 117.347705) + (xy 109.177233 117.315407) + (xy 109.177233 117.315399) + (xy 109.1775 117.313375) + (xy 109.177499 116.768504) + (xy 109.195805 116.72431) + (xy 110.379485 115.540629) + (xy 110.38556 115.536322) + (xy 110.385105 115.53575) + (xy 110.390613 115.531369) + (xy 110.396958 115.528322) + (xy 110.415422 115.505234) + (xy 110.420039 115.500075) + (xy 110.425283 115.494831) + (xy 110.427145 115.491868) + (xy 110.427151 115.491861) + (xy 110.429058 115.488826) + (xy 110.433163 115.48305) + (xy 110.446987 115.465764) + (xy 110.451383 115.460267) + (xy 110.45296 115.453407) + (xy 110.454778 115.449647) + (xy 110.456156 115.445711) + (xy 110.459902 115.439752) + (xy 110.463179 115.410763) + (xy 110.464371 115.403787) + (xy 110.466 115.396703) + (xy 110.466 115.389329) + (xy 110.466396 115.382308) + (xy 110.467822 115.369695) + (xy 110.469691 115.353162) + (xy 110.46737 115.346517) + (xy 110.466586 115.339523) + (xy 110.467264 115.339447) + (xy 110.466 115.331995) + (xy 110.466 115.094285) + (xy 111.998 115.094285) + (xy 111.998599 115.100369) + (xy 112.00997 115.157532) + (xy 112.014592 115.16869) + (xy 112.057923 115.233541) + (xy 112.066459 115.242077) + (xy 112.13131 115.285408) + (xy 112.142468 115.29003) + (xy 112.199631 115.301401) + (xy 112.205715 115.302) + (xy 112.786569 115.302) + (xy 112.795359 115.298359) + (xy 112.799 115.289569) + (xy 112.926 115.289569) + (xy 112.929641 115.298359) + (xy 112.938431 115.302) + (xy 113.519285 115.302) + (xy 113.525369 115.301401) + (xy 113.582532 115.29003) + (xy 113.59369 115.285408) + (xy 113.658541 115.242077) + (xy 113.667077 115.233541) + (xy 113.710408 115.16869) + (xy 113.71503 115.157532) + (xy 113.726401 115.100369) + (xy 113.727 115.094285) + (xy 113.727 115.050931) + (xy 113.723359 115.042141) + (xy 113.714569 115.0385) + (xy 112.938431 115.0385) + (xy 112.929641 115.042141) + (xy 112.926 115.050931) + (xy 112.926 115.289569) + (xy 112.799 115.289569) + (xy 112.799 115.050931) + (xy 112.795359 115.042141) + (xy 112.786569 115.0385) + (xy 112.010431 115.0385) + (xy 112.001641 115.042141) + (xy 111.998 115.050931) + (xy 111.998 115.094285) + (xy 110.466 115.094285) + (xy 110.466 113.469) + (xy 110.484306 113.424806) + (xy 110.5285 113.4065) + (xy 111.951489 113.4065) + (xy 111.995683 113.424806) + (xy 112.013989 113.469) + (xy 112.010567 113.486207) + (xy 112.0107 113.486234) + (xy 112.003714 113.521357) + (xy 111.9975 113.552594) + (xy 111.9975 113.797406) + (xy 111.998099 113.800416) + (xy 111.998099 113.800419) + (xy 112.002467 113.822375) + (xy 112.0107 113.863766) + (xy 112.014119 113.868883) + (xy 112.01412 113.868885) + (xy 112.042569 113.911461) + (xy 112.060982 113.939018) + (xy 112.074027 113.947734) + (xy 112.074474 113.948033) + (xy 112.10105 113.987807) + (xy 112.091718 114.034723) + (xy 112.074474 114.051967) + (xy 112.060982 114.060982) + (xy 112.057563 114.066099) + (xy 112.016118 114.128126) + (xy 112.0107 114.136234) + (xy 112.006444 114.157631) + (xy 111.998286 114.198645) + (xy 111.9975 114.202594) + (xy 111.9975 114.447406) + (xy 111.998099 114.450416) + (xy 111.998099 114.450419) + (xy 112.002591 114.473) + (xy 112.0107 114.513766) + (xy 112.014119 114.518883) + (xy 112.01412 114.518885) + (xy 112.050263 114.572976) + (xy 112.060982 114.589018) + (xy 112.073988 114.597708) + (xy 112.074923 114.598333) + (xy 112.101499 114.638107) + (xy 112.092167 114.685023) + (xy 112.074924 114.702266) + (xy 112.066461 114.707921) + (xy 112.057923 114.716459) + (xy 112.014592 114.78131) + (xy 112.00997 114.792468) + (xy 111.998599 114.849631) + (xy 111.998 114.855715) + (xy 111.998 114.899069) + (xy 112.001641 114.907859) + (xy 112.010431 114.9115) + (xy 113.714569 114.9115) + (xy 113.723359 114.907859) + (xy 113.727 114.899069) + (xy 113.727 114.855715) + (xy 113.726401 114.849631) + (xy 113.713829 114.786429) + (xy 113.715217 114.786153) + (xy 113.715216 114.745084) + (xy 113.74904 114.711258) + (xy 113.772959 114.7065) + (xy 118.306 114.7065) + (xy 118.350194 114.724806) + (xy 118.3685 114.769) + (xy 118.3685 115.882901) + (xy 118.350194 115.927095) + (xy 118.333545 115.939004) + (xy 118.291964 115.959419) + (xy 118.288318 115.963071) + (xy 118.288317 115.963072) + (xy 118.212704 116.038817) + (xy 118.212702 116.038819) + (xy 118.209056 116.042472) + (xy 118.17873 116.104511) + (xy 118.159943 116.142946) + (xy 118.15752 116.147902) + (xy 118.156819 116.152705) + (xy 118.156819 116.152706) + (xy 118.153983 116.172147) + (xy 118.1475 116.216589) + (xy 118.147501 116.73341) + (xy 118.157699 116.802695) + (xy 118.209419 116.908036) + (xy 118.213071 116.911682) + (xy 118.213072 116.911683) + (xy 118.288817 116.987296) + (xy 118.288819 116.987298) + (xy 118.292472 116.990944) + (xy 118.365762 117.026769) + (xy 118.393158 117.040161) + (xy 118.397902 117.04248) + (xy 118.402705 117.043181) + (xy 118.402706 117.043181) + (xy 118.424659 117.046383) + (xy 118.466589 117.0525) + (xy 118.749251 117.0525) + (xy 119.03341 117.052499) + (xy 119.102695 117.042301) + (xy 119.208036 116.990581) + (xy 119.211683 116.986928) + (xy 119.287296 116.911183) + (xy 119.287298 116.911181) + (xy 119.290944 116.907528) + (xy 119.326769 116.834238) + (xy 119.340349 116.806458) + (xy 119.340349 116.806457) + (xy 119.34248 116.802098) + (xy 119.3525 116.733411) + (xy 119.352499 116.21659) + (xy 119.342301 116.147305) + (xy 119.290581 116.041964) + (xy 119.284083 116.035477) + (xy 119.211184 115.962705) + (xy 119.211182 115.962703) + (xy 119.207528 115.959056) + (xy 119.202885 115.956786) + (xy 119.202883 115.956785) + (xy 119.166552 115.939025) + (xy 119.134887 115.903171) + (xy 119.1315 115.882875) + (xy 119.1315 114.769) + (xy 119.149806 114.724806) + (xy 119.194 114.7065) + (xy 119.39109 114.7065) + (xy 119.435284 114.724806) + (xy 120.008836 115.298359) + (xy 120.58153 115.871053) + (xy 120.594543 115.890075) + (xy 120.614317 115.935014) + (xy 120.633333 115.97823) + (xy 120.64549 115.992692) + (xy 120.648029 115.995713) + (xy 120.650157 115.998434) + (xy 120.652292 116.002625) + (xy 120.660081 116.010414) + (xy 120.66373 116.014392) + (xy 120.681454 116.035477) + (xy 120.712127 116.071968) + (xy 120.735399 116.087459) + (xy 120.741836 116.092733) + (xy 120.743899 116.094232) + (xy 120.747375 116.097708) + (xy 120.751753 116.099939) + (xy 120.751756 116.099941) + (xy 120.75873 116.103494) + (xy 120.764977 116.107148) + (xy 120.814064 116.139823) + (xy 120.818313 116.141151) + (xy 120.818314 116.141151) + (xy 120.850296 116.151143) + (xy 120.860027 116.155109) + (xy 120.862799 116.156521) + (xy 120.862803 116.156522) + (xy 120.867187 116.158756) + (xy 120.877852 116.160445) + (xy 120.886713 116.16252) + (xy 120.926696 116.175012) + (xy 120.926699 116.175012) + (xy 120.930948 116.17634) + (xy 120.980069 116.177241) + (xy 120.988683 116.177999) + (xy 120.99514 116.179022) + (xy 120.995144 116.179022) + (xy 121 116.179791) + (xy 121.006947 116.17869) + (xy 121.017853 116.177933) + (xy 121.053383 116.178584) + (xy 121.113532 116.162185) + (xy 121.12019 116.160755) + (xy 121.122147 116.160445) + (xy 121.132813 116.158756) + (xy 121.137196 116.156522) + (xy 121.141875 116.155002) + (xy 121.141878 116.15501) + (xy 121.146727 116.153136) + (xy 121.171527 116.146375) + (xy 121.229449 116.110811) + (xy 121.239709 116.104511) + (xy 121.244037 116.102085) + (xy 121.24824 116.099944) + (xy 121.248248 116.099938) + (xy 121.252625 116.097708) + (xy 121.255427 116.094906) + (xy 121.256264 116.094346) + (xy 121.258891 116.092733) + (xy 121.275881 116.082301) + (xy 121.358058 115.991513) + (xy 121.411451 115.881311) + (xy 121.412527 115.87492) + (xy 121.423018 115.812558) + (xy 124.9725 115.812558) + (xy 124.973099 115.815569) + (xy 124.978659 115.843518) + (xy 124.979898 115.849748) + (xy 125.008078 115.891922) + (xy 125.050252 115.920102) + (xy 125.056285 115.921302) + (xy 125.056287 115.921303) + (xy 125.081611 115.92634) + (xy 125.087442 115.9275) + (xy 126.512558 115.9275) + (xy 126.518389 115.92634) + (xy 126.543713 115.921303) + (xy 126.543715 115.921302) + (xy 126.549748 115.920102) + (xy 126.591922 115.891922) + (xy 126.620102 115.849748) + (xy 126.621342 115.843518) + (xy 126.626901 115.815569) + (xy 126.6275 115.812558) + (xy 126.6275 115.809438) + (xy 127.373 115.809438) + (xy 127.373599 115.815519) + (xy 127.379169 115.843518) + (xy 127.383788 115.85467) + (xy 127.405019 115.886445) + (xy 127.413555 115.894981) + (xy 127.44533 115.916212) + (xy 127.456482 115.920831) + (xy 127.484481 115.926401) + (xy 127.490562 115.927) + (xy 128.124069 115.927) + (xy 128.132859 115.923359) + (xy 128.1365 115.914569) + (xy 128.2635 115.914569) + (xy 128.267141 115.923359) + (xy 128.275931 115.927) + (xy 128.909438 115.927) + (xy 128.915519 115.926401) + (xy 128.943518 115.920831) + (xy 128.95467 115.916212) + (xy 128.986445 115.894981) + (xy 128.994981 115.886445) + (xy 129.016212 115.85467) + (xy 129.020831 115.843518) + (xy 129.026401 115.815519) + (xy 129.027 115.809438) + (xy 129.027 115.311284) + (xy 130.898001 115.311284) + (xy 130.898266 115.315335) + (xy 130.903645 115.3562) + (xy 130.90629 115.365274) + (xy 130.950693 115.460495) + (xy 130.956873 115.469321) + (xy 131.030679 115.543127) + (xy 131.039505 115.549307) + (xy 131.134727 115.59371) + (xy 131.143801 115.596355) + (xy 131.184647 115.601733) + (xy 131.188726 115.602) + (xy 131.424069 115.602) + (xy 131.432859 115.598359) + (xy 131.4365 115.589569) + (xy 131.4365 115.589568) + (xy 131.5635 115.589568) + (xy 131.567141 115.598358) + (xy 131.575931 115.601999) + (xy 131.811284 115.601999) + (xy 131.815335 115.601734) + (xy 131.8562 115.596355) + (xy 131.865274 115.59371) + (xy 131.960495 115.549307) + (xy 131.969321 115.543127) + (xy 132.043127 115.469321) + (xy 132.049307 115.460495) + (xy 132.09371 115.365273) + (xy 132.096355 115.356199) + (xy 132.101733 115.315353) + (xy 132.102 115.311274) + (xy 132.102 115.150931) + (xy 132.098359 115.142141) + (xy 132.089569 115.1385) + (xy 131.575931 115.1385) + (xy 131.567141 115.142141) + (xy 131.5635 115.150931) + (xy 131.5635 115.589568) + (xy 131.4365 115.589568) + (xy 131.4365 115.150931) + (xy 131.432859 115.142141) + (xy 131.424069 115.1385) + (xy 130.910432 115.1385) + (xy 130.901642 115.142141) + (xy 130.898001 115.150931) + (xy 130.898001 115.311284) + (xy 129.027 115.311284) + (xy 129.027 115.275931) + (xy 129.023359 115.267141) + (xy 129.014569 115.2635) + (xy 128.275931 115.2635) + (xy 128.267141 115.267141) + (xy 128.2635 115.275931) + (xy 128.2635 115.914569) + (xy 128.1365 115.914569) + (xy 128.1365 115.275931) + (xy 128.132859 115.267141) + (xy 128.124069 115.2635) + (xy 127.385431 115.2635) + (xy 127.376641 115.267141) + (xy 127.373 115.275931) + (xy 127.373 115.809438) + (xy 126.6275 115.809438) + (xy 126.6275 115.124069) + (xy 127.373 115.124069) + (xy 127.376641 115.132859) + (xy 127.385431 115.1365) + (xy 128.124069 115.1365) + (xy 128.132859 115.132859) + (xy 128.1365 115.124069) + (xy 128.2635 115.124069) + (xy 128.267141 115.132859) + (xy 128.275931 115.1365) + (xy 129.014569 115.1365) + (xy 129.023359 115.132859) + (xy 129.027 115.124069) + (xy 129.027 114.999069) + (xy 130.898 114.999069) + (xy 130.901641 115.007859) + (xy 130.910431 115.0115) + (xy 131.424069 115.0115) + (xy 131.432859 115.007859) + (xy 131.4365 114.999069) + (xy 131.5635 114.999069) + (xy 131.567141 115.007859) + (xy 131.575931 115.0115) + (xy 132.089568 115.0115) + (xy 132.098358 115.007859) + (xy 132.101999 114.999069) + (xy 132.101999 114.838716) + (xy 132.101734 114.834665) + (xy 132.096355 114.7938) + (xy 132.09371 114.784726) + (xy 132.049307 114.689505) + (xy 132.043127 114.680679) + (xy 131.969321 114.606873) + (xy 131.960495 114.600693) + (xy 131.865273 114.55629) + (xy 131.856199 114.553645) + (xy 131.815353 114.548267) + (xy 131.811274 114.548) + (xy 131.575931 114.548) + (xy 131.567141 114.551641) + (xy 131.5635 114.560431) + (xy 131.5635 114.999069) + (xy 131.4365 114.999069) + (xy 131.4365 114.560432) + (xy 131.432859 114.551642) + (xy 131.424069 114.548001) + (xy 131.188716 114.548001) + (xy 131.184665 114.548266) + (xy 131.1438 114.553645) + (xy 131.134726 114.55629) + (xy 131.039505 114.600693) + (xy 131.030679 114.606873) + (xy 130.956873 114.680679) + (xy 130.950693 114.689505) + (xy 130.90629 114.784727) + (xy 130.903645 114.793801) + (xy 130.898267 114.834647) + (xy 130.898 114.838726) + (xy 130.898 114.999069) + (xy 129.027 114.999069) + (xy 129.027 114.590562) + (xy 129.026401 114.584481) + (xy 129.020831 114.556482) + (xy 129.016212 114.54533) + (xy 128.994981 114.513555) + (xy 128.986445 114.505019) + (xy 128.95467 114.483788) + (xy 128.943518 114.479169) + (xy 128.915519 114.473599) + (xy 128.909438 114.473) + (xy 128.275931 114.473) + (xy 128.267141 114.476641) + (xy 128.2635 114.485431) + (xy 128.2635 115.124069) + (xy 128.1365 115.124069) + (xy 128.1365 114.485431) + (xy 128.132859 114.476641) + (xy 128.124069 114.473) + (xy 127.490562 114.473) + (xy 127.484481 114.473599) + (xy 127.456482 114.479169) + (xy 127.44533 114.483788) + (xy 127.413555 114.505019) + (xy 127.405019 114.513555) + (xy 127.383788 114.54533) + (xy 127.379169 114.556482) + (xy 127.373599 114.584481) + (xy 127.373 114.590562) + (xy 127.373 115.124069) + (xy 126.6275 115.124069) + (xy 126.6275 114.587442) + (xy 126.623744 114.568561) + (xy 126.621303 114.556287) + (xy 126.621302 114.556285) + (xy 126.620102 114.550252) + (xy 126.591922 114.508078) + (xy 126.549748 114.479898) + (xy 126.543715 114.478698) + (xy 126.543713 114.478697) + (xy 126.515569 114.473099) + (xy 126.512558 114.4725) + (xy 125.087442 114.4725) + (xy 125.084431 114.473099) + (xy 125.056287 114.478697) + (xy 125.056285 114.478698) + (xy 125.050252 114.479898) + (xy 125.008078 114.508078) + (xy 124.979898 114.550252) + (xy 124.978698 114.556285) + (xy 124.978697 114.556287) + (xy 124.976256 114.568561) + (xy 124.9725 114.587442) + (xy 124.9725 115.812558) + (xy 121.423018 115.812558) + (xy 121.426696 115.790694) + (xy 121.431767 115.760552) + (xy 121.431896 115.75) + (xy 121.414536 115.628781) + (xy 121.363852 115.517307) + (xy 121.349199 115.500302) + (xy 121.347708 115.497375) + (xy 121.3419 115.491567) + (xy 121.338746 115.48817) + (xy 121.286826 115.427914) + (xy 121.283918 115.424539) + (xy 121.263741 115.411461) + (xy 121.260155 115.408559) + (xy 121.260081 115.408661) + (xy 121.256106 115.405773) + (xy 121.252625 115.402292) + (xy 121.241343 115.396543) + (xy 121.235736 115.393309) + (xy 121.184893 115.360354) + (xy 121.18489 115.360353) + (xy 121.18116 115.357935) + (xy 121.176901 115.356661) + (xy 121.176898 115.35666) + (xy 121.158345 115.351112) + (xy 121.148839 115.348269) + (xy 121.138367 115.344074) + (xy 121.137442 115.343603) + (xy 121.12164 115.332118) + (xy 119.878263 114.088741) + (xy 119.86995 114.078448) + (xy 119.863873 114.069035) + (xy 119.863871 114.069033) + (xy 119.861071 114.064696) + (xy 119.857017 114.0615) + (xy 119.857015 114.061498) + (xy 119.840853 114.048757) + (xy 119.81748 114.00702) + (xy 119.830465 113.960981) + (xy 119.833635 113.957269) + (xy 119.849721 113.939867) + (xy 119.851399 113.938123) + (xy 121.139717 112.649806) + (xy 121.183911 112.6315) + (xy 123.033939 112.6315) + (xy 123.060635 112.63754) + (xy 123.064064 112.639823) + (xy 123.068316 112.641151) + (xy 123.068317 112.641152) + (xy 123.100296 112.651143) + (xy 123.110027 112.655109) + (xy 123.112799 112.656521) + (xy 123.112803 112.656522) + (xy 123.117187 112.658756) + (xy 123.127852 112.660445) + (xy 123.136713 112.66252) + (xy 123.176696 112.675012) + (xy 123.176699 112.675012) + (xy 123.180948 112.67634) + (xy 123.230069 112.677241) + (xy 123.238683 112.677999) + (xy 123.24514 112.679022) + (xy 123.245144 112.679022) + (xy 123.25 112.679791) + (xy 123.256947 112.67869) + (xy 123.267853 112.677933) + (xy 123.303383 112.678584) + (xy 123.363532 112.662185) + (xy 123.37019 112.660755) + (xy 123.372147 112.660445) + (xy 123.382813 112.658756) + (xy 123.387196 112.656522) + (xy 123.391875 112.655002) + (xy 123.391878 112.65501) + (xy 123.396727 112.653136) + (xy 123.421527 112.646375) + (xy 123.42621 112.6435) + (xy 123.489709 112.604511) + (xy 123.494037 112.602085) + (xy 123.49824 112.599944) + (xy 123.498248 112.599938) + (xy 123.502625 112.597708) + (xy 123.505427 112.594906) + (xy 123.506264 112.594346) + (xy 123.508891 112.592733) + (xy 123.525881 112.582301) + (xy 123.608058 112.491513) + (xy 123.615454 112.476248) + (xy 123.651198 112.444458) + (xy 123.6717 112.441) + (xy 124.644997 112.441) + (xy 124.689191 112.459306) + (xy 124.954194 112.724309) + (xy 124.9725 112.768503) + (xy 124.9725 113.912558) + (xy 124.973099 113.915569) + (xy 124.978444 113.942437) + (xy 124.979898 113.949748) + (xy 125.008078 113.991922) + (xy 125.050252 114.020102) + (xy 125.056285 114.021302) + (xy 125.056287 114.021303) + (xy 125.082384 114.026494) + (xy 125.087442 114.0275) + (xy 126.512558 114.0275) + (xy 126.517616 114.026494) + (xy 126.543713 114.021303) + (xy 126.543715 114.021302) + (xy 126.549748 114.020102) + (xy 126.591922 113.991922) + (xy 126.620102 113.949748) + (xy 126.621557 113.942437) + (xy 126.626901 113.915569) + (xy 126.6275 113.912558) + (xy 127.3725 113.912558) + (xy 127.373099 113.915569) + (xy 127.378444 113.942437) + (xy 127.379898 113.949748) + (xy 127.408078 113.991922) + (xy 127.450252 114.020102) + (xy 127.456285 114.021302) + (xy 127.456287 114.021303) + (xy 127.482384 114.026494) + (xy 127.487442 114.0275) + (xy 128.912558 114.0275) + (xy 128.917616 114.026494) + (xy 128.943713 114.021303) + (xy 128.943715 114.021302) + (xy 128.949748 114.020102) + (xy 128.991922 113.991922) + (xy 129.020102 113.949748) + (xy 129.021557 113.942437) + (xy 129.026901 113.915569) + (xy 129.0275 113.912558) + (xy 129.0275 112.768503) + (xy 129.045806 112.724309) + (xy 129.854487 111.915628) + (xy 129.860561 111.911323) + (xy 129.860105 111.91075) + (xy 129.865613 111.906369) + (xy 129.871958 111.903322) + (xy 129.890418 111.880239) + (xy 129.895035 111.87508) + (xy 129.900284 111.869831) + (xy 129.904057 111.863828) + (xy 129.908165 111.858047) + (xy 129.90896 111.857054) + (xy 129.926383 111.835267) + (xy 129.92796 111.828407) + (xy 129.929778 111.824647) + (xy 129.931156 111.820711) + (xy 129.934902 111.814752) + (xy 129.938179 111.785763) + (xy 129.939371 111.778787) + (xy 129.941 111.771703) + (xy 129.941 111.764329) + (xy 129.941396 111.757308) + (xy 129.942151 111.750627) + (xy 129.944691 111.728162) + (xy 129.94237 111.721517) + (xy 129.941586 111.714523) + (xy 129.942264 111.714447) + (xy 129.941 111.706995) + (xy 129.941 109.029119) + (xy 129.959306 108.984925) + (xy 130.0035 108.966619) + (xy 130.038223 108.977153) + (xy 130.095988 109.015751) + (xy 130.102024 109.016952) + (xy 130.102025 109.016952) + (xy 130.152043 109.026901) + (xy 130.152046 109.026901) + (xy 130.155056 109.0275) + (xy 130.344944 109.0275) + (xy 130.347954 109.026901) + (xy 130.347957 109.026901) + (xy 130.397975 109.016952) + (xy 130.397976 109.016952) + (xy 130.404012 109.015751) + (xy 130.461777 108.977153) + (xy 130.508692 108.96782) + (xy 130.548466 108.994395) + (xy 130.559 109.029119) + (xy 130.559 112.019998) + (xy 130.540694 112.064192) + (xy 130.395514 112.209372) + (xy 130.38944 112.213677) + (xy 130.389896 112.214251) + (xy 130.384391 112.21863) + (xy 130.378042 112.221678) + (xy 130.363128 112.240327) + (xy 130.359582 112.244761) + (xy 130.354965 112.24992) + (xy 130.349716 112.255169) + (xy 130.347849 112.25814) + (xy 130.347847 112.258143) + (xy 130.345943 112.261172) + (xy 130.341838 112.266948) + (xy 130.323617 112.289733) + (xy 130.32204 112.296593) + (xy 130.320222 112.300353) + (xy 130.318844 112.304289) + (xy 130.315098 112.310248) + (xy 130.314307 112.317242) + (xy 130.314307 112.317243) + (xy 130.311821 112.339236) + (xy 130.310629 112.346213) + (xy 130.309 112.353297) + (xy 130.309 112.360671) + (xy 130.308604 112.367692) + (xy 130.305309 112.396838) + (xy 130.30763 112.403483) + (xy 130.308414 112.410477) + (xy 130.307736 112.410553) + (xy 130.309 112.418005) + (xy 130.309 113.830525) + (xy 130.290694 113.874719) + (xy 130.279855 113.88338) + (xy 130.26281 113.894135) + (xy 130.257842 113.896959) + (xy 130.251757 113.900059) + (xy 130.251756 113.90006) + (xy 130.247375 113.902292) + (xy 130.243897 113.90577) + (xy 130.242445 113.906825) + (xy 130.239058 113.90912) + (xy 130.22008 113.921095) + (xy 130.217137 113.924427) + (xy 130.217135 113.924429) + (xy 130.157156 113.992342) + (xy 130.156032 113.993538) + (xy 130.155775 113.993892) + (xy 130.155554 113.994113) + (xy 130.155405 113.994204) + (xy 130.154504 113.995163) + (xy 130.152292 113.997375) + (xy 130.151509 113.996592) + (xy 130.150362 113.997296) + (xy 130.151721 113.998496) + (xy 130.144193 114.00702) + (xy 130.139018 114.012879) + (xy 130.137127 114.016907) + (xy 130.088868 114.119695) + (xy 130.088867 114.119698) + (xy 130.086976 114.123726) + (xy 130.068136 114.244724) + (xy 130.068713 114.249137) + (xy 130.068713 114.249138) + (xy 130.07988 114.334531) + (xy 130.084014 114.366145) + (xy 130.091185 114.382443) + (xy 130.091244 114.382813) + (xy 130.092007 114.384311) + (xy 130.094031 114.38891) + (xy 130.094031 114.388911) + (xy 130.131032 114.473) + (xy 130.133333 114.47823) + (xy 130.145583 114.492803) + (xy 130.148029 114.495713) + (xy 130.150157 114.498434) + (xy 130.152292 114.502625) + (xy 130.160081 114.510414) + (xy 130.16373 114.514392) + (xy 130.20179 114.55967) + (xy 130.212127 114.571968) + (xy 130.235399 114.587459) + (xy 130.241836 114.592733) + (xy 130.243899 114.594232) + (xy 130.247375 114.597708) + (xy 130.251753 114.599939) + (xy 130.251756 114.599941) + (xy 130.25873 114.603494) + (xy 130.264977 114.607148) + (xy 130.314064 114.639823) + (xy 130.318313 114.641151) + (xy 130.318314 114.641151) + (xy 130.350296 114.651143) + (xy 130.360027 114.655109) + (xy 130.362799 114.656521) + (xy 130.362803 114.656522) + (xy 130.367187 114.658756) + (xy 130.377852 114.660445) + (xy 130.386713 114.66252) + (xy 130.426696 114.675012) + (xy 130.426699 114.675012) + (xy 130.430948 114.67634) + (xy 130.480069 114.677241) + (xy 130.488683 114.677999) + (xy 130.49514 114.679022) + (xy 130.495144 114.679022) + (xy 130.5 114.679791) + (xy 130.506947 114.67869) + (xy 130.517853 114.677933) + (xy 130.553383 114.678584) + (xy 130.613532 114.662185) + (xy 130.62019 114.660755) + (xy 130.622147 114.660445) + (xy 130.632813 114.658756) + (xy 130.637196 114.656522) + (xy 130.641875 114.655002) + (xy 130.641878 114.65501) + (xy 130.646727 114.653136) + (xy 130.671527 114.646375) + (xy 130.685482 114.637807) + (xy 130.739709 114.604511) + (xy 130.744037 114.602085) + (xy 130.74824 114.599944) + (xy 130.748248 114.599938) + (xy 130.752625 114.597708) + (xy 130.755427 114.594906) + (xy 130.756264 114.594346) + (xy 130.759373 114.592437) + (xy 130.775881 114.582301) + (xy 130.858058 114.491513) + (xy 130.911451 114.381311) + (xy 130.9125 114.375081) + (xy 130.931367 114.262928) + (xy 130.931767 114.260552) + (xy 130.931896 114.25) + (xy 130.914536 114.128781) + (xy 130.863852 114.017307) + (xy 130.849199 114.000302) + (xy 130.847708 113.997375) + (xy 130.8419 113.991567) + (xy 130.838746 113.98817) + (xy 130.80801 113.952499) + (xy 130.783918 113.924539) + (xy 130.763741 113.911461) + (xy 130.760155 113.908559) + (xy 130.760081 113.908661) + (xy 130.756106 113.905773) + (xy 130.752625 113.902292) + (xy 130.741343 113.896543) + (xy 130.735735 113.893308) + (xy 130.719505 113.882788) + (xy 130.692377 113.843389) + (xy 130.691 113.830342) + (xy 130.691 113.186625) + (xy 130.8975 113.186625) + (xy 130.897501 113.663374) + (xy 130.897766 113.665385) + (xy 130.897766 113.66539) + (xy 130.900545 113.6865) + (xy 130.903779 113.711071) + (xy 130.9058 113.715404) + (xy 130.9058 113.715405) + (xy 130.950277 113.810787) + (xy 130.950279 113.810789) + (xy 130.952589 113.815744) + (xy 131.034256 113.897411) + (xy 131.039211 113.899721) + (xy 131.039213 113.899723) + (xy 131.079955 113.918721) + (xy 131.138929 113.946221) + (xy 131.150422 113.947734) + (xy 131.184593 113.952233) + (xy 131.184601 113.952233) + (xy 131.186625 113.9525) + (xy 131.188672 113.9525) + (xy 131.500844 113.952499) + (xy 131.813374 113.952499) + (xy 131.815385 113.952234) + (xy 131.81539 113.952234) + (xy 131.856331 113.946845) + (xy 131.856332 113.946845) + (xy 131.861071 113.946221) + (xy 131.876518 113.939018) + (xy 131.960787 113.899723) + (xy 131.960789 113.899721) + (xy 131.965744 113.897411) + (xy 132.047411 113.815744) + (xy 132.049721 113.810789) + (xy 132.049723 113.810787) + (xy 132.081733 113.742141) + (xy 132.096221 113.711071) + (xy 132.099935 113.682859) + (xy 132.102233 113.665407) + (xy 132.102233 113.665399) + (xy 132.1025 113.663375) + (xy 132.102499 113.186626) + (xy 132.102232 113.184593) + (xy 132.096845 113.143669) + (xy 132.096845 113.143668) + (xy 132.096221 113.138929) + (xy 132.088424 113.122209) + (xy 132.049723 113.039213) + (xy 132.049721 113.039211) + (xy 132.047411 113.034256) + (xy 131.965744 112.952589) + (xy 131.960789 112.950279) + (xy 131.960787 112.950277) + (xy 131.911985 112.927521) + (xy 131.861071 112.903779) + (xy 131.847705 112.902019) + (xy 131.815407 112.897767) + (xy 131.815399 112.897767) + (xy 131.813375 112.8975) + (xy 131.7535 112.8975) + (xy 131.709306 112.879194) + (xy 131.691 112.835) + (xy 131.691 112.480003) + (xy 131.709306 112.435809) + (xy 131.854487 112.290628) + (xy 131.860561 112.286323) + (xy 131.860105 112.28575) + (xy 131.865613 112.281369) + (xy 131.871958 112.278322) + (xy 131.890418 112.255239) + (xy 131.895035 112.25008) + (xy 131.900283 112.244832) + (xy 131.902369 112.241513) + (xy 131.904055 112.238831) + (xy 131.908159 112.233056) + (xy 131.921988 112.215764) + (xy 131.92199 112.21576) + (xy 131.926383 112.210267) + (xy 131.92796 112.20341) + (xy 131.929778 112.199648) + (xy 131.931157 112.19571) + (xy 131.934902 112.189752) + (xy 131.935692 112.182761) + (xy 131.935694 112.182756) + (xy 131.93818 112.160763) + (xy 131.939373 112.153778) + (xy 131.940208 112.150146) + (xy 131.941 112.146703) + (xy 131.941 112.139323) + (xy 131.941396 112.132303) + (xy 131.942371 112.12368) + (xy 131.94469 112.103162) + (xy 131.942369 112.096516) + (xy 131.941585 112.089522) + (xy 131.942264 112.089446) + (xy 131.941 112.081996) + (xy 131.941 109.029119) + (xy 131.959306 108.984925) + (xy 132.0035 108.966619) + (xy 132.038223 108.977153) + (xy 132.095988 109.015751) + (xy 132.102024 109.016952) + (xy 132.102025 109.016952) + (xy 132.152043 109.026901) + (xy 132.152046 109.026901) + (xy 132.155056 109.0275) + (xy 132.344944 109.0275) + (xy 132.347954 109.026901) + (xy 132.347957 109.026901) + (xy 132.397975 109.016952) + (xy 132.397976 109.016952) + (xy 132.404012 109.015751) + (xy 132.465278 108.974814) + (xy 132.512193 108.965482) + (xy 132.534721 108.974813) + (xy 132.595988 109.015751) + (xy 132.602024 109.016952) + (xy 132.602025 109.016952) + (xy 132.652043 109.026901) + (xy 132.652046 109.026901) + (xy 132.655056 109.0275) + (xy 132.844944 109.0275) + (xy 132.847954 109.026901) + (xy 132.847957 109.026901) + (xy 132.897975 109.016952) + (xy 132.897976 109.016952) + (xy 132.904012 109.015751) + (xy 132.961777 108.977153) + (xy 133.008692 108.96782) + (xy 133.048466 108.994395) + (xy 133.059 109.029119) + (xy 133.059 112.956768) + (xy 133.05775 112.964107) + (xy 133.058477 112.96419) + (xy 133.05768 112.971181) + (xy 133.055348 112.977822) + (xy 133.056126 112.984815) + (xy 133.056126 112.984816) + (xy 133.058617 113.007197) + (xy 133.059 113.01411) + (xy 133.059 113.021533) + (xy 133.060581 113.028465) + (xy 133.061757 113.035418) + (xy 133.064986 113.064429) + (xy 133.068719 113.070393) + (xy 133.070094 113.074341) + (xy 133.071903 113.0781) + (xy 133.073468 113.084959) + (xy 133.077853 113.090461) + (xy 133.077853 113.090462) + (xy 133.091648 113.107773) + (xy 133.095744 113.113559) + (xy 133.099596 113.119711) + (xy 133.104809 113.124924) + (xy 133.109494 113.130168) + (xy 133.120253 113.143669) + (xy 133.127775 113.153109) + (xy 133.134114 113.156167) + (xy 133.139615 113.160558) + (xy 133.139189 113.161092) + (xy 133.145353 113.165468) + (xy 134.066772 114.086887) + (xy 134.085078 114.131081) + (xy 134.084334 114.140691) + (xy 134.068136 114.244724) + (xy 134.068713 114.249137) + (xy 134.068713 114.249138) + (xy 134.07988 114.334531) + (xy 134.084014 114.366145) + (xy 134.091185 114.382443) + (xy 134.091244 114.382813) + (xy 134.092007 114.384311) + (xy 134.094031 114.38891) + (xy 134.094031 114.388911) + (xy 134.131032 114.473) + (xy 134.133333 114.47823) + (xy 134.145583 114.492803) + (xy 134.148029 114.495713) + (xy 134.150157 114.498434) + (xy 134.152292 114.502625) + (xy 134.160081 114.510414) + (xy 134.16373 114.514392) + (xy 134.20179 114.55967) + (xy 134.212127 114.571968) + (xy 134.235399 114.587459) + (xy 134.241836 114.592733) + (xy 134.243899 114.594232) + (xy 134.247375 114.597708) + (xy 134.251753 114.599939) + (xy 134.251756 114.599941) + (xy 134.25873 114.603494) + (xy 134.264977 114.607148) + (xy 134.314064 114.639823) + (xy 134.318313 114.641151) + (xy 134.318314 114.641151) + (xy 134.350296 114.651143) + (xy 134.360027 114.655109) + (xy 134.362799 114.656521) + (xy 134.362803 114.656522) + (xy 134.367187 114.658756) + (xy 134.377852 114.660445) + (xy 134.386713 114.66252) + (xy 134.426696 114.675012) + (xy 134.426699 114.675012) + (xy 134.430948 114.67634) + (xy 134.480069 114.677241) + (xy 134.488683 114.677999) + (xy 134.49514 114.679022) + (xy 134.495144 114.679022) + (xy 134.5 114.679791) + (xy 134.506947 114.67869) + (xy 134.517853 114.677933) + (xy 134.553383 114.678584) + (xy 134.613532 114.662185) + (xy 134.62019 114.660755) + (xy 134.622147 114.660445) + (xy 134.632813 114.658756) + (xy 134.637196 114.656522) + (xy 134.641875 114.655002) + (xy 134.641878 114.65501) + (xy 134.646727 114.653136) + (xy 134.671527 114.646375) + (xy 134.685482 114.637807) + (xy 134.739709 114.604511) + (xy 134.744037 114.602085) + (xy 134.74824 114.599944) + (xy 134.748248 114.599938) + (xy 134.752625 114.597708) + (xy 134.755427 114.594906) + (xy 134.756264 114.594346) + (xy 134.759373 114.592437) + (xy 134.775881 114.582301) + (xy 134.858058 114.491513) + (xy 134.911451 114.381311) + (xy 134.9125 114.375081) + (xy 134.931367 114.262928) + (xy 134.931767 114.260552) + (xy 134.931896 114.25) + (xy 134.914536 114.128781) + (xy 134.863852 114.017307) + (xy 134.849199 114.000302) + (xy 134.847708 113.997375) + (xy 134.8419 113.991567) + (xy 134.838746 113.98817) + (xy 134.80801 113.952499) + (xy 134.783918 113.924539) + (xy 134.763741 113.911461) + (xy 134.760155 113.908559) + (xy 134.760081 113.908661) + (xy 134.756106 113.905773) + (xy 134.752625 113.902292) + (xy 134.741343 113.896543) + (xy 134.735736 113.893309) + (xy 134.735735 113.893308) + (xy 134.710574 113.877) + (xy 134.684893 113.860354) + (xy 134.68489 113.860353) + (xy 134.68116 113.857935) + (xy 134.676901 113.856661) + (xy 134.676898 113.85666) + (xy 134.658345 113.851112) + (xy 134.648839 113.848269) + (xy 134.638377 113.844079) + (xy 134.632813 113.841244) + (xy 134.621067 113.839384) + (xy 134.612951 113.837536) + (xy 134.584793 113.829115) + (xy 134.563838 113.822848) + (xy 134.519496 113.822577) + (xy 134.510103 113.821809) + (xy 134.504857 113.820978) + (xy 134.504856 113.820978) + (xy 134.5 113.820209) + (xy 134.491373 113.821576) + (xy 134.48122 113.822344) + (xy 134.462836 113.822231) + (xy 134.445838 113.822127) + (xy 134.445836 113.822127) + (xy 134.441385 113.8221) + (xy 134.39962 113.834037) + (xy 134.352099 113.828581) + (xy 134.338252 113.818137) + (xy 133.459306 112.939191) + (xy 133.441 112.894997) + (xy 133.441 109.028518) + (xy 133.459306 108.984324) + (xy 133.5035 108.966018) + (xy 133.538223 108.976551) + (xy 133.591067 109.011859) + (xy 133.602221 109.01648) + (xy 133.652096 109.026401) + (xy 133.658177 109.027) + (xy 133.674069 109.027) + (xy 133.682859 109.023359) + (xy 133.6865 109.014569) + (xy 133.6865 109.014568) + (xy 133.8135 109.014568) + (xy 133.817141 109.023358) + (xy 133.825931 109.026999) + (xy 133.841821 109.026999) + (xy 133.847906 109.0264) + (xy 133.897776 109.01648) + (xy 133.908937 109.011857) + (xy 133.965278 108.974213) + (xy 134.012194 108.964881) + (xy 134.034722 108.974213) + (xy 134.091064 109.011858) + (xy 134.102221 109.01648) + (xy 134.152096 109.026401) + (xy 134.158177 109.027) + (xy 134.174069 109.027) + (xy 134.182859 109.023359) + (xy 134.1865 109.014569) + (xy 134.1865 109.014568) + (xy 134.3135 109.014568) + (xy 134.317141 109.023358) + (xy 134.325931 109.026999) + (xy 134.341821 109.026999) + (xy 134.347906 109.0264) + (xy 134.397776 109.01648) + (xy 134.408937 109.011857) + (xy 134.465278 108.974213) + (xy 134.512194 108.964881) + (xy 134.534722 108.974213) + (xy 134.591064 109.011858) + (xy 134.602221 109.01648) + (xy 134.652096 109.026401) + (xy 134.658177 109.027) + (xy 134.674069 109.027) + (xy 134.682859 109.023359) + (xy 134.6865 109.014569) + (xy 134.6865 108.238431) + (xy 134.682859 108.229641) + (xy 134.674069 108.226) + (xy 134.325931 108.226) + (xy 134.317141 108.229641) + (xy 134.3135 108.238431) + (xy 134.3135 109.014568) + (xy 134.1865 109.014568) + (xy 134.1865 108.238431) + (xy 134.182859 108.229641) + (xy 134.174069 108.226) + (xy 133.825931 108.226) + (xy 133.817141 108.229641) + (xy 133.8135 108.238431) + (xy 133.8135 109.014568) + (xy 133.6865 109.014568) + (xy 133.6865 108.086569) + (xy 133.8135 108.086569) + (xy 133.817141 108.095359) + (xy 133.825931 108.099) + (xy 134.174069 108.099) + (xy 134.182859 108.095359) + (xy 134.1865 108.086569) + (xy 134.3135 108.086569) + (xy 134.317141 108.095359) + (xy 134.325931 108.099) + (xy 134.674069 108.099) + (xy 134.682859 108.095359) + (xy 134.6865 108.086569) + (xy 134.6865 107.310432) + (xy 134.682859 107.301642) + (xy 134.674069 107.298001) + (xy 134.658179 107.298001) + (xy 134.652094 107.2986) + (xy 134.602224 107.30852) + (xy 134.591063 107.313143) + (xy 134.534722 107.350787) + (xy 134.487806 107.360119) + (xy 134.465278 107.350787) + (xy 134.408936 107.313142) + (xy 134.397779 107.30852) + (xy 134.347904 107.298599) + (xy 134.341823 107.298) + (xy 134.325931 107.298) + (xy 134.317141 107.301641) + (xy 134.3135 107.310431) + (xy 134.3135 108.086569) + (xy 134.1865 108.086569) + (xy 134.1865 107.310432) + (xy 134.182859 107.301642) + (xy 134.174069 107.298001) + (xy 134.158179 107.298001) + (xy 134.152094 107.2986) + (xy 134.102224 107.30852) + (xy 134.091063 107.313143) + (xy 134.034722 107.350787) + (xy 133.987806 107.360119) + (xy 133.965278 107.350787) + (xy 133.908936 107.313142) + (xy 133.897779 107.30852) + (xy 133.847904 107.298599) + (xy 133.841823 107.298) + (xy 133.825931 107.298) + (xy 133.817141 107.301641) + (xy 133.8135 107.310431) + (xy 133.8135 108.086569) + (xy 133.6865 108.086569) + (xy 133.6865 107.310432) + (xy 133.682859 107.301642) + (xy 133.674069 107.298001) + (xy 133.658179 107.298001) + (xy 133.652094 107.2986) + (xy 133.602224 107.30852) + (xy 133.591066 107.313142) + (xy 133.535173 107.350487) + (xy 133.488256 107.359819) + (xy 133.465726 107.350486) + (xy 133.465277 107.350186) + (xy 133.404012 107.309249) + (xy 133.397976 107.308048) + (xy 133.397975 107.308048) + (xy 133.347957 107.298099) + (xy 133.347954 107.298099) + (xy 133.344944 107.2975) + (xy 133.155056 107.2975) + (xy 133.152046 107.298099) + (xy 133.152043 107.298099) + (xy 133.102025 107.308048) + (xy 133.102024 107.308048) + (xy 133.095988 107.309249) + (xy 133.034722 107.350186) + (xy 132.987807 107.359518) + (xy 132.965277 107.350186) + (xy 132.907277 107.311431) + (xy 132.880702 107.271658) + (xy 132.879501 107.259465) + (xy 132.879501 106.990427) + (xy 132.897807 106.946233) + (xy 132.943147 106.927938) + (xy 132.94573 106.927985) + (xy 132.978383 106.928584) + (xy 133.038532 106.912185) + (xy 133.04519 106.910755) + (xy 133.052887 106.909536) + (xy 133.057813 106.908756) + (xy 133.062196 106.906522) + (xy 133.066875 106.905002) + (xy 133.066878 106.90501) + (xy 133.071727 106.903136) + (xy 133.096527 106.896375) + (xy 133.10192 106.893064) + (xy 133.164709 106.854511) + (xy 133.169037 106.852085) + (xy 133.17324 106.849944) + (xy 133.173248 106.849938) + (xy 133.177625 106.847708) + (xy 133.180427 106.844906) + (xy 133.181264 106.844346) + (xy 133.185236 106.841907) + (xy 133.200881 106.832301) + (xy 133.283058 106.741513) + (xy 133.336451 106.631311) + (xy 133.338317 106.620224) + (xy 133.351696 106.540694) + (xy 133.356767 106.510552) + (xy 133.356896 106.5) + (xy 133.339536 106.378781) + (xy 133.288852 106.267307) + (xy 133.274199 106.250302) + (xy 133.272708 106.247375) + (xy 133.2669 106.241567) + (xy 133.263746 106.23817) + (xy 133.211826 106.177914) + (xy 133.208918 106.174539) + (xy 133.188741 106.161461) + (xy 133.185155 106.158559) + (xy 133.185081 106.158661) + (xy 133.181106 106.155773) + (xy 133.177625 106.152292) + (xy 133.166343 106.146543) + (xy 133.160736 106.143309) + (xy 133.160735 106.143308) + (xy 133.143916 106.132407) + (xy 133.109893 106.110354) + (xy 133.10989 106.110353) + (xy 133.10616 106.107935) + (xy 133.101901 106.106661) + (xy 133.101898 106.10666) + (xy 133.079429 106.099941) + (xy 133.073839 106.098269) + (xy 133.063377 106.094079) + (xy 133.057813 106.091244) + (xy 133.046067 106.089384) + (xy 133.037951 106.087536) + (xy 132.988838 106.072848) + (xy 132.944496 106.072577) + (xy 132.935103 106.071809) + (xy 132.929857 106.070978) + (xy 132.929856 106.070978) + (xy 132.925 106.070209) + (xy 132.916373 106.071576) + (xy 132.90622 106.072344) + (xy 132.887836 106.072231) + (xy 132.870838 106.072127) + (xy 132.870836 106.072127) + (xy 132.866385 106.0721) + (xy 132.812011 106.087641) + (xy 132.804623 106.089275) + (xy 132.792187 106.091244) + (xy 132.787804 106.093477) + (xy 132.78687 106.093781) + (xy 132.777156 106.097603) + (xy 132.774821 106.09827) + (xy 132.752929 106.104526) + (xy 132.752927 106.104527) + (xy 132.748644 106.105751) + (xy 132.744875 106.108129) + (xy 132.728622 106.118384) + (xy 132.689119 106.143309) + (xy 132.687819 106.144129) + (xy 132.682842 106.146959) + (xy 132.676757 106.150059) + (xy 132.676756 106.15006) + (xy 132.672375 106.152292) + (xy 132.668897 106.15577) + (xy 132.667445 106.156825) + (xy 132.664058 106.15912) + (xy 132.64508 106.171095) + (xy 132.642137 106.174427) + (xy 132.642135 106.174429) + (xy 132.582156 106.242342) + (xy 132.581032 106.243538) + (xy 132.580775 106.243892) + (xy 132.580554 106.244113) + (xy 132.580405 106.244204) + (xy 132.579504 106.245163) + (xy 132.577292 106.247375) + (xy 132.576509 106.246592) + (xy 132.575362 106.247296) + (xy 132.576721 106.248496) + (xy 132.564018 106.262879) + (xy 132.562128 106.266906) + (xy 132.562124 106.266911) + (xy 132.556892 106.278055) + (xy 132.521539 106.310279) + (xy 132.473755 106.308066) + (xy 132.443422 106.277359) + (xy 132.440693 106.271356) + (xy 132.438852 106.267307) + (xy 132.424199 106.250302) + (xy 132.422708 106.247375) + (xy 132.4169 106.241567) + (xy 132.413746 106.23817) + (xy 132.361826 106.177914) + (xy 132.358918 106.174539) + (xy 132.338741 106.161461) + (xy 132.335155 106.158559) + (xy 132.335081 106.158661) + (xy 132.331106 106.155773) + (xy 132.327625 106.152292) + (xy 132.316343 106.146543) + (xy 132.310736 106.143309) + (xy 132.310735 106.143308) + (xy 132.293916 106.132407) + (xy 132.259893 106.110354) + (xy 132.25989 106.110353) + (xy 132.25616 106.107935) + (xy 132.251901 106.106661) + (xy 132.251898 106.10666) + (xy 132.229429 106.099941) + (xy 132.223839 106.098269) + (xy 132.213377 106.094079) + (xy 132.207813 106.091244) + (xy 132.196067 106.089384) + (xy 132.187951 106.087536) + (xy 132.138838 106.072848) + (xy 132.094496 106.072577) + (xy 132.085103 106.071809) + (xy 132.079857 106.070978) + (xy 132.079856 106.070978) + (xy 132.075 106.070209) + (xy 132.066373 106.071576) + (xy 132.05622 106.072344) + (xy 132.037836 106.072231) + (xy 132.020838 106.072127) + (xy 132.020836 106.072127) + (xy 132.016385 106.0721) + (xy 131.962011 106.087641) + (xy 131.954623 106.089275) + (xy 131.942187 106.091244) + (xy 131.937804 106.093477) + (xy 131.93687 106.093781) + (xy 131.927156 106.097603) + (xy 131.924821 106.09827) + (xy 131.902929 106.104526) + (xy 131.902927 106.104527) + (xy 131.898644 106.105751) + (xy 131.894875 106.108129) + (xy 131.878622 106.118384) + (xy 131.839119 106.143309) + (xy 131.837819 106.144129) + (xy 131.832842 106.146959) + (xy 131.826757 106.150059) + (xy 131.826756 106.15006) + (xy 131.822375 106.152292) + (xy 131.818897 106.15577) + (xy 131.817445 106.156825) + (xy 131.814058 106.15912) + (xy 131.79508 106.171095) + (xy 131.792137 106.174427) + (xy 131.792135 106.174429) + (xy 131.732156 106.242342) + (xy 131.731032 106.243538) + (xy 131.730775 106.243892) + (xy 131.730554 106.244113) + (xy 131.730405 106.244204) + (xy 131.729504 106.245163) + (xy 131.727292 106.247375) + (xy 131.726509 106.246592) + (xy 131.725362 106.247296) + (xy 131.726721 106.248496) + (xy 131.714018 106.262879) + (xy 131.712127 106.266907) + (xy 131.663868 106.369695) + (xy 131.663867 106.369698) + (xy 131.661976 106.373726) + (xy 131.643136 106.494724) + (xy 131.643713 106.499137) + (xy 131.643713 106.499138) + (xy 131.657322 106.603208) + (xy 131.659014 106.616145) + (xy 131.660809 106.620224) + (xy 131.664286 106.628126) + (xy 131.666185 106.632443) + (xy 131.666244 106.632813) + (xy 131.667007 106.634311) + (xy 131.669031 106.63891) + (xy 131.669031 106.638911) + (xy 131.697449 106.703494) + (xy 131.708333 106.72823) + (xy 131.722198 106.744724) + (xy 131.723029 106.745713) + (xy 131.725157 106.748434) + (xy 131.727292 106.752625) + (xy 131.735081 106.760414) + (xy 131.73873 106.764392) + (xy 131.78307 106.817141) + (xy 131.787127 106.821968) + (xy 131.810399 106.837459) + (xy 131.816836 106.842733) + (xy 131.818899 106.844232) + (xy 131.822375 106.847708) + (xy 131.826753 106.849939) + (xy 131.826756 106.849941) + (xy 131.83373 106.853494) + (xy 131.839977 106.857148) + (xy 131.889064 106.889823) + (xy 131.893313 106.891151) + (xy 131.893314 106.891151) + (xy 131.925296 106.901143) + (xy 131.935027 106.905109) + (xy 131.937799 106.906521) + (xy 131.937803 106.906522) + (xy 131.942187 106.908756) + (xy 131.952852 106.910445) + (xy 131.961713 106.91252) + (xy 132.001696 106.925012) + (xy 132.001699 106.925012) + (xy 132.005948 106.92634) + (xy 132.055069 106.927241) + (xy 132.063689 106.928) + (xy 132.064505 106.928129) + (xy 132.067785 106.928649) + (xy 132.108568 106.953648) + (xy 132.120499 106.990378) + (xy 132.120499 107.259465) + (xy 132.102193 107.303659) + (xy 132.092726 107.311428) + (xy 132.034723 107.350186) + (xy 131.987807 107.359518) + (xy 131.965279 107.350187) + (xy 131.904012 107.309249) + (xy 131.897976 107.308048) + (xy 131.897975 107.308048) + (xy 131.847957 107.298099) + (xy 131.847954 107.298099) + (xy 131.844944 107.2975) + (xy 131.655056 107.2975) + (xy 131.652046 107.298099) + (xy 131.652043 107.298099) + (xy 131.602025 107.308048) + (xy 131.602024 107.308048) + (xy 131.595988 107.309249) + (xy 131.534723 107.350186) + (xy 131.534274 107.350486) + (xy 131.487358 107.359819) + (xy 131.464827 107.350487) + (xy 131.408933 107.313141) + (xy 131.397779 107.30852) + (xy 131.347904 107.298599) + (xy 131.341823 107.298) + (xy 131.325931 107.298) + (xy 131.317141 107.301641) + (xy 131.3135 107.310431) + (xy 131.3135 109.014568) + (xy 131.317141 109.023358) + (xy 131.325931 109.026999) + (xy 131.341821 109.026999) + (xy 131.347906 109.0264) + (xy 131.397776 109.01648) + (xy 131.408934 109.011858) + (xy 131.461777 108.976551) + (xy 131.508694 108.967219) + (xy 131.548467 108.993795) + (xy 131.559 109.028518) + (xy 131.559 112.019998) + (xy 131.540694 112.064192) + (xy 131.395514 112.209372) + (xy 131.38944 112.213677) + (xy 131.389896 112.214251) + (xy 131.384391 112.21863) + (xy 131.378042 112.221678) + (xy 131.363128 112.240327) + (xy 131.359582 112.244761) + (xy 131.354965 112.24992) + (xy 131.349716 112.255169) + (xy 131.347849 112.25814) + (xy 131.347847 112.258143) + (xy 131.345943 112.261172) + (xy 131.341838 112.266948) + (xy 131.323617 112.289733) + (xy 131.32204 112.296593) + (xy 131.320222 112.300353) + (xy 131.318844 112.304289) + (xy 131.315098 112.310248) + (xy 131.314307 112.317242) + (xy 131.314307 112.317243) + (xy 131.311821 112.339236) + (xy 131.310629 112.346213) + (xy 131.309 112.353297) + (xy 131.309 112.360671) + (xy 131.308604 112.367692) + (xy 131.305309 112.396838) + (xy 131.30763 112.403483) + (xy 131.308414 112.410477) + (xy 131.307736 112.410553) + (xy 131.309 112.418005) + (xy 131.309 112.835001) + (xy 131.290694 112.879195) + (xy 131.2465 112.897501) + (xy 131.186626 112.897501) + (xy 131.184615 112.897766) + (xy 131.18461 112.897766) + (xy 131.143669 112.903155) + (xy 131.143668 112.903155) + (xy 131.138929 112.903779) + (xy 131.134595 112.9058) + (xy 131.039213 112.950277) + (xy 131.039211 112.950279) + (xy 131.034256 112.952589) + (xy 130.952589 113.034256) + (xy 130.950279 113.039211) + (xy 130.950277 113.039213) + (xy 130.939948 113.061365) + (xy 130.903779 113.138929) + (xy 130.903155 113.143669) + (xy 130.903155 113.14367) + (xy 130.897767 113.184593) + (xy 130.897767 113.184601) + (xy 130.8975 113.186625) + (xy 130.691 113.186625) + (xy 130.691 112.480003) + (xy 130.709306 112.435809) + (xy 130.854487 112.290628) + (xy 130.860561 112.286323) + (xy 130.860105 112.28575) + (xy 130.865613 112.281369) + (xy 130.871958 112.278322) + (xy 130.890418 112.255239) + (xy 130.895035 112.25008) + (xy 130.900283 112.244832) + (xy 130.902369 112.241513) + (xy 130.904055 112.238831) + (xy 130.908159 112.233056) + (xy 130.921988 112.215764) + (xy 130.92199 112.21576) + (xy 130.926383 112.210267) + (xy 130.92796 112.20341) + (xy 130.929778 112.199648) + (xy 130.931157 112.19571) + (xy 130.934902 112.189752) + (xy 130.935692 112.182761) + (xy 130.935694 112.182756) + (xy 130.93818 112.160763) + (xy 130.939373 112.153778) + (xy 130.940208 112.150146) + (xy 130.941 112.146703) + (xy 130.941 112.139323) + (xy 130.941396 112.132303) + (xy 130.942371 112.12368) + (xy 130.94469 112.103162) + (xy 130.942369 112.096516) + (xy 130.941585 112.089522) + (xy 130.942264 112.089446) + (xy 130.941 112.081996) + (xy 130.941 109.028518) + (xy 130.959306 108.984324) + (xy 131.0035 108.966018) + (xy 131.038223 108.976551) + (xy 131.091067 109.011859) + (xy 131.102221 109.01648) + (xy 131.152096 109.026401) + (xy 131.158177 109.027) + (xy 131.174069 109.027) + (xy 131.182859 109.023359) + (xy 131.1865 109.014569) + (xy 131.1865 107.310432) + (xy 131.182859 107.301642) + (xy 131.174069 107.298001) + (xy 131.158179 107.298001) + (xy 131.152094 107.2986) + (xy 131.102224 107.30852) + (xy 131.091066 107.313142) + (xy 131.035173 107.350487) + (xy 130.988256 107.359819) + (xy 130.965726 107.350486) + (xy 130.965277 107.350186) + (xy 130.904012 107.309249) + (xy 130.897976 107.308048) + (xy 130.897975 107.308048) + (xy 130.847957 107.298099) + (xy 130.847954 107.298099) + (xy 130.844944 107.2975) + (xy 130.655056 107.2975) + (xy 130.652046 107.298099) + (xy 130.652043 107.298099) + (xy 130.602025 107.308048) + (xy 130.602024 107.308048) + (xy 130.595988 107.309249) + (xy 130.534722 107.350186) + (xy 130.487807 107.359518) + (xy 130.465279 107.350187) + (xy 130.404012 107.309249) + (xy 130.397976 107.308048) + (xy 130.397975 107.308048) + (xy 130.347957 107.298099) + (xy 130.347954 107.298099) + (xy 130.344944 107.2975) + (xy 130.155056 107.2975) + (xy 130.152046 107.298099) + (xy 130.152043 107.298099) + (xy 130.102025 107.308048) + (xy 130.102024 107.308048) + (xy 130.095988 107.309249) + (xy 130.034722 107.350186) + (xy 129.987807 107.359518) + (xy 129.965279 107.350187) + (xy 129.904012 107.309249) + (xy 129.897976 107.308048) + (xy 129.897975 107.308048) + (xy 129.847957 107.298099) + (xy 129.847954 107.298099) + (xy 129.844944 107.2975) + (xy 129.655056 107.2975) + (xy 129.652046 107.298099) + (xy 129.652043 107.298099) + (xy 129.602025 107.308048) + (xy 129.602024 107.308048) + (xy 129.595988 107.309249) + (xy 129.529006 107.354006) + (xy 129.484249 107.420988) + (xy 129.4725 107.480056) + (xy 129.4725 108.844944) + (xy 129.473099 108.847954) + (xy 129.473099 108.847957) + (xy 129.47657 108.865405) + (xy 129.484249 108.904012) + (xy 129.529006 108.970994) + (xy 129.534124 108.974414) + (xy 129.538476 108.978766) + (xy 129.536648 108.980594) + (xy 129.557799 109.012248) + (xy 129.559 109.024442) + (xy 129.559 111.644997) + (xy 129.540694 111.689191) + (xy 128.675691 112.554194) + (xy 128.631497 112.5725) + (xy 127.487442 112.5725) + (xy 127.484431 112.573099) + (xy 127.456287 112.578697) + (xy 127.456285 112.578698) + (xy 127.450252 112.579898) + (xy 127.408078 112.608078) + (xy 127.379898 112.650252) + (xy 127.378698 112.656285) + (xy 127.378697 112.656287) + (xy 127.374495 112.677412) + (xy 127.3725 112.687442) + (xy 127.3725 113.912558) + (xy 126.6275 113.912558) + (xy 126.6275 112.687442) + (xy 126.625505 112.677412) + (xy 126.621303 112.656287) + (xy 126.621302 112.656285) + (xy 126.620102 112.650252) + (xy 126.591922 112.608078) + (xy 126.549748 112.579898) + (xy 126.543715 112.578698) + (xy 126.543713 112.578697) + (xy 126.515569 112.573099) + (xy 126.512558 112.5725) + (xy 125.368503 112.5725) + (xy 125.324309 112.554194) + (xy 124.915628 112.145513) + (xy 124.911323 112.139439) + (xy 124.91075 112.139895) + (xy 124.906369 112.134387) + (xy 124.903322 112.128042) + (xy 124.880239 112.109582) + (xy 124.87508 112.104965) + (xy 124.869831 112.099716) + (xy 124.863828 112.095943) + (xy 124.858052 112.091838) + (xy 124.835267 112.073617) + (xy 124.828407 112.07204) + (xy 124.824647 112.070222) + (xy 124.820711 112.068844) + (xy 124.814752 112.065098) + (xy 124.807758 112.064307) + (xy 124.807757 112.064307) + (xy 124.785764 112.061821) + (xy 124.778787 112.060629) + (xy 124.771703 112.059) + (xy 124.764329 112.059) + (xy 124.757308 112.058604) + (xy 124.755627 112.058414) + (xy 124.728162 112.055309) + (xy 124.721517 112.05763) + (xy 124.714523 112.058414) + (xy 124.714447 112.057736) + (xy 124.706995 112.059) + (xy 123.673049 112.059) + (xy 123.628855 112.040694) + (xy 123.616156 112.022373) + (xy 123.615695 112.02136) + (xy 123.615693 112.021357) + (xy 123.613852 112.017307) + (xy 123.599199 112.000302) + (xy 123.597708 111.997375) + (xy 123.5919 111.991567) + (xy 123.588746 111.98817) + (xy 123.533918 111.924539) + (xy 123.535159 111.923469) + (xy 123.516 111.881329) + (xy 123.516 110.913548) + (xy 123.534306 110.869354) + (xy 123.570343 110.851583) + (xy 123.606325 110.846847) + (xy 123.606333 110.846845) + (xy 123.611071 110.846221) + (xy 123.652951 110.826692) + (xy 123.710787 110.799723) + (xy 123.710789 110.799721) + (xy 123.715744 110.797411) + (xy 123.797411 110.715744) + (xy 123.799721 110.710789) + (xy 123.799723 110.710787) + (xy 123.826542 110.653273) + (xy 123.846221 110.611071) + (xy 123.849319 110.587536) + (xy 123.852233 110.565407) + (xy 123.852233 110.565399) + (xy 123.8525 110.563375) + (xy 123.852499 109.936626) + (xy 123.852232 109.934593) + (xy 123.846845 109.893669) + (xy 123.846845 109.893668) + (xy 123.846221 109.888929) + (xy 123.834363 109.8635) + (xy 123.799723 109.789213) + (xy 123.799721 109.789211) + (xy 123.797411 109.784256) + (xy 123.715744 109.702589) + (xy 123.710789 109.700279) + (xy 123.710787 109.700277) + (xy 123.661985 109.677521) + (xy 123.611071 109.653779) + (xy 123.597705 109.652019) + (xy 123.565407 109.647767) + (xy 123.565399 109.647767) + (xy 123.563375 109.6475) + (xy 123.561328 109.6475) + (xy 123.324358 109.647501) + (xy 123.086626 109.647501) + (xy 123.084615 109.647766) + (xy 123.08461 109.647766) + (xy 123.043669 109.653155) + (xy 123.043668 109.653155) + (xy 123.038929 109.653779) + (xy 123.034595 109.6558) + (xy 122.939213 109.700277) + (xy 122.939211 109.700279) + (xy 122.934256 109.702589) + (xy 122.852589 109.784256) + (xy 122.850279 109.789211) + (xy 122.850277 109.789213) + (xy 122.837529 109.816552) + (xy 122.803779 109.888929) + (xy 122.802597 109.897906) + (xy 122.797767 109.934593) + (xy 122.797767 109.934601) + (xy 122.7975 109.936625) + (xy 122.797501 110.563374) + (xy 122.797766 110.565385) + (xy 122.797766 110.56539) + (xy 122.803079 110.605751) + (xy 122.803779 110.611071) + (xy 122.8058 110.615404) + (xy 122.8058 110.615405) + (xy 122.850277 110.710787) + (xy 122.850279 110.710789) + (xy 122.852589 110.715744) + (xy 122.934256 110.797411) + (xy 122.939211 110.799721) + (xy 122.939213 110.799723) + (xy 122.986076 110.821575) + (xy 123.038929 110.846221) + (xy 123.059113 110.848878) + (xy 123.079658 110.851583) + (xy 123.121085 110.8755) + (xy 123.134 110.913548) + (xy 123.134 111.791362) + (xy 123.115694 111.835556) + (xy 123.088673 111.851456) + (xy 123.073644 111.855751) + (xy 123.069874 111.85813) + (xy 123.068721 111.858857) + (xy 123.067382 111.859244) + (xy 123.065813 111.859946) + (xy 123.065715 111.859726) + (xy 123.035369 111.8685) + (xy 121.047376 111.8685) + (xy 121.034221 111.8671) + (xy 121.01822 111.863655) + (xy 121.01309 111.864262) + (xy 121.013088 111.864262) + (xy 120.98094 111.868067) + (xy 120.973595 111.8685) + (xy 120.968308 111.8685) + (xy 120.965767 111.868923) + (xy 120.965766 111.868923) + (xy 120.964805 111.869083) + (xy 120.947653 111.871938) + (xy 120.944784 111.872346) + (xy 120.907825 111.87672) + (xy 120.89722 111.877975) + (xy 120.897219 111.877975) + (xy 120.892092 111.878582) + (xy 120.887438 111.880817) + (xy 120.883627 111.881924) + (xy 120.879815 111.883229) + (xy 120.874717 111.884078) + (xy 120.828043 111.909262) + (xy 120.825428 111.910594) + (xy 120.781151 111.931855) + (xy 120.781146 111.931858) + (xy 120.777602 111.93356) + (xy 120.773308 111.93717) + (xy 120.773123 111.937355) + (xy 120.770056 111.939944) + (xy 120.76749 111.941935) + (xy 120.762943 111.944388) + (xy 120.759435 111.948183) + (xy 120.725302 111.985108) + (xy 120.723601 111.986877) + (xy 119.435283 113.275194) + (xy 119.391089 113.2935) + (xy 119.194 113.2935) + (xy 119.149806 113.275194) + (xy 119.1315 113.231) + (xy 119.1315 112.117099) + (xy 119.149806 112.072905) + (xy 119.166455 112.060996) + (xy 119.167207 112.060627) + (xy 119.208036 112.040581) + (xy 119.219591 112.029006) + (xy 119.287296 111.961183) + (xy 119.287298 111.961181) + (xy 119.290944 111.957528) + (xy 119.331419 111.874726) + (xy 119.340349 111.856458) + (xy 119.340349 111.856457) + (xy 119.34248 111.852098) + (xy 119.343751 111.843389) + (xy 119.347928 111.814752) + (xy 119.3525 111.783411) + (xy 119.352499 111.26659) + (xy 119.342301 111.197305) + (xy 119.333325 111.179022) + (xy 119.324356 111.160755) + (xy 119.290581 111.091964) + (xy 119.284168 111.085562) + (xy 119.211183 111.012704) + (xy 119.211181 111.012702) + (xy 119.207528 111.009056) + (xy 119.130937 110.971617) + (xy 119.106458 110.959651) + (xy 119.106457 110.959651) + (xy 119.102098 110.95752) + (xy 119.097295 110.956819) + (xy 119.097294 110.956819) + (xy 119.073245 110.953311) + (xy 119.033411 110.9475) + (xy 118.750749 110.9475) + (xy 118.46659 110.947501) + (xy 118.397305 110.957699) + (xy 118.291964 111.009419) + (xy 118.288318 111.013071) + (xy 118.288317 111.013072) + (xy 118.212704 111.088817) + (xy 118.212702 111.088819) + (xy 118.209056 111.092472) + (xy 118.176976 111.158099) + (xy 118.159943 111.192946) + (xy 118.15752 111.197902) + (xy 118.156819 111.202705) + (xy 118.156819 111.202706) + (xy 118.155965 111.20856) + (xy 118.1475 111.266589) + (xy 118.147501 111.78341) + (xy 118.157699 111.852695) + (xy 118.159839 111.857053) + (xy 118.159839 111.857054) + (xy 118.165246 111.868067) + (xy 118.209419 111.958036) + (xy 118.213071 111.961682) + (xy 118.213072 111.961683) + (xy 118.288816 112.037295) + (xy 118.288818 112.037297) + (xy 118.292472 112.040944) + (xy 118.297115 112.043214) + (xy 118.297117 112.043215) + (xy 118.333448 112.060975) + (xy 118.365113 112.096829) + (xy 118.3685 112.117125) + (xy 118.3685 113.231) + (xy 118.350194 113.275194) + (xy 118.306 113.2935) + (xy 117.194 113.2935) + (xy 117.149806 113.275194) + (xy 117.1315 113.231) + (xy 117.1315 112.389999) + (xy 117.149806 112.345805) + (xy 117.194 112.327499) + (xy 117.26078 112.327499) + (xy 117.334979 112.316578) + (xy 117.367298 112.30071) + (xy 117.443155 112.263466) + (xy 117.443156 112.263465) + (xy 117.44779 112.26119) + (xy 117.451437 112.257537) + (xy 117.53293 112.175902) + (xy 117.532932 112.1759) + (xy 117.536578 112.172247) + (xy 117.563535 112.117099) + (xy 117.589638 112.063699) + (xy 117.589638 112.063698) + (xy 117.591769 112.059339) + (xy 117.6025 111.985781) + (xy 117.602499 111.41422) + (xy 117.591578 111.340021) + (xy 117.587788 111.332301) + (xy 117.538466 111.231845) + (xy 117.538465 111.231844) + (xy 117.53619 111.22721) + (xy 117.530904 111.221933) + (xy 117.450902 111.14207) + (xy 117.4509 111.142068) + (xy 117.447247 111.138422) + (xy 117.377873 111.104511) + (xy 117.338699 111.085362) + (xy 117.338698 111.085362) + (xy 117.334339 111.083231) + (xy 117.329536 111.08253) + (xy 117.329535 111.08253) + (xy 117.305316 111.078997) + (xy 117.260781 111.0725) + (xy 116.751349 111.0725) + (xy 116.23922 111.072501) + (xy 116.165021 111.083422) + (xy 116.160663 111.085562) + (xy 116.160662 111.085562) + (xy 116.056845 111.136534) + (xy 116.056844 111.136535) + (xy 116.05221 111.13881) + (xy 116.048564 111.142462) + (xy 116.048563 111.142463) + (xy 115.96707 111.224098) + (xy 115.967068 111.2241) + (xy 115.963422 111.227753) + (xy 115.961154 111.232393) + (xy 115.910675 111.335662) + (xy 115.908231 111.340661) + (xy 115.90753 111.345464) + (xy 115.90753 111.345465) + (xy 115.90621 111.354511) + (xy 115.8975 111.414219) + (xy 115.897501 111.98578) + (xy 115.908422 112.059979) + (xy 115.910562 112.064337) + (xy 115.910562 112.064338) + (xy 115.957948 112.16085) + (xy 115.96381 112.17279) + (xy 115.967462 112.176436) + (xy 115.967463 112.176437) + (xy 116.049098 112.25793) + (xy 116.0491 112.257932) + (xy 116.052753 112.261578) + (xy 116.057393 112.263846) + (xy 116.152321 112.310248) + (xy 116.165661 112.316769) + (xy 116.170464 112.31747) + (xy 116.170465 112.31747) + (xy 116.19244 112.320676) + (xy 116.239219 112.3275) + (xy 116.306 112.3275) + (xy 116.350194 112.345806) + (xy 116.3685 112.39) + (xy 116.3685 113.231) + (xy 116.350194 113.275194) + (xy 116.306 113.2935) + (xy 113.773511 113.2935) + (xy 113.729317 113.275194) + (xy 113.711011 113.231) + (xy 113.714433 113.213793) + (xy 113.7143 113.213766) + (xy 113.726901 113.150419) + (xy 113.726901 113.150416) + (xy 113.7275 113.147406) + (xy 113.7275 112.902594) + (xy 113.726582 112.897975) + (xy 113.716201 112.845791) + (xy 113.7143 112.836234) + (xy 113.703325 112.819808) + (xy 113.667437 112.766099) + (xy 113.664018 112.760982) + (xy 113.63653 112.742615) + (xy 113.593885 112.71412) + (xy 113.593883 112.714119) + (xy 113.588766 112.7107) + (xy 113.558192 112.704618) + (xy 113.525419 112.698099) + (xy 113.525416 112.698099) + (xy 113.522406 112.6975) + (xy 113.3065 112.6975) + (xy 113.262306 112.679194) + (xy 113.244 112.635) + (xy 113.244 112.32141) + (xy 113.262306 112.277216) + (xy 113.614716 111.924806) + (xy 113.65891 111.9065) + (xy 114.145175 111.9065) + (xy 114.189369 111.924806) + (xy 114.201278 111.941455) + (xy 114.204057 111.947114) + (xy 114.209419 111.958036) + (xy 114.213071 111.961682) + (xy 114.213072 111.961683) + (xy 114.288817 112.037296) + (xy 114.288819 112.037298) + (xy 114.292472 112.040944) + (xy 114.357856 112.072905) + (xy 114.393158 112.090161) + (xy 114.397902 112.09248) + (xy 114.402705 112.093181) + (xy 114.402706 112.093181) + (xy 114.420249 112.09574) + (xy 114.466589 112.1025) + (xy 114.749251 112.1025) + (xy 115.03341 112.102499) + (xy 115.102695 112.092301) + (xy 115.10937 112.089024) + (xy 115.13809 112.074923) + (xy 115.208036 112.040581) + (xy 115.219591 112.029006) + (xy 115.287296 111.961183) + (xy 115.287298 111.961181) + (xy 115.290944 111.957528) + (xy 115.331419 111.874726) + (xy 115.340349 111.856458) + (xy 115.340349 111.856457) + (xy 115.34248 111.852098) + (xy 115.343751 111.843389) + (xy 115.347928 111.814752) + (xy 115.3525 111.783411) + (xy 115.352499 111.26659) + (xy 115.342301 111.197305) + (xy 115.333325 111.179022) + (xy 115.324356 111.160755) + (xy 115.290581 111.091964) + (xy 115.284168 111.085562) + (xy 115.211183 111.012704) + (xy 115.211181 111.012702) + (xy 115.207528 111.009056) + (xy 115.130937 110.971617) + (xy 115.106458 110.959651) + (xy 115.106457 110.959651) + (xy 115.102098 110.95752) + (xy 115.097295 110.956819) + (xy 115.097294 110.956819) + (xy 115.073245 110.953311) + (xy 115.033411 110.9475) + (xy 114.750749 110.9475) + (xy 114.46659 110.947501) + (xy 114.397305 110.957699) + (xy 114.291964 111.009419) + (xy 114.288318 111.013071) + (xy 114.288317 111.013072) + (xy 114.212704 111.088817) + (xy 114.212702 111.088819) + (xy 114.209056 111.092472) + (xy 114.206787 111.097113) + (xy 114.206786 111.097115) + (xy 114.201246 111.108448) + (xy 114.165392 111.140113) + (xy 114.145096 111.1435) + (xy 113.52238 111.1435) + (xy 113.509226 111.1421) + (xy 113.509087 111.14207) + (xy 113.49322 111.138654) + (xy 113.48809 111.139261) + (xy 113.488088 111.139261) + (xy 113.455934 111.143067) + (xy 113.448588 111.1435) + (xy 113.443308 111.1435) + (xy 113.440767 111.143923) + (xy 113.440755 111.143924) + (xy 113.422688 111.146932) + (xy 113.41978 111.147346) + (xy 113.367093 111.153582) + (xy 113.362437 111.155818) + (xy 113.358598 111.156933) + (xy 113.354809 111.15823) + (xy 113.349717 111.159078) + (xy 113.345174 111.161529) + (xy 113.345172 111.16153) + (xy 113.303042 111.184263) + (xy 113.300417 111.1856) + (xy 113.256148 111.206857) + (xy 113.256146 111.206858) + (xy 113.252602 111.20856) + (xy 113.248308 111.212169) + (xy 113.248116 111.212361) + (xy 113.245051 111.214948) + (xy 113.24249 111.216934) + (xy 113.237943 111.219388) + (xy 113.234435 111.223183) + (xy 113.200314 111.260095) + (xy 113.198613 111.261864) + (xy 112.62624 111.834237) + (xy 112.615948 111.842549) + (xy 112.606539 111.848624) + (xy 112.606536 111.848627) + (xy 112.602196 111.851429) + (xy 112.597762 111.857054) + (xy 112.578954 111.880911) + (xy 112.574066 111.886411) + (xy 112.570329 111.890148) + (xy 112.568828 111.892248) + (xy 112.568825 111.892252) + (xy 112.558161 111.907174) + (xy 112.556393 111.909529) + (xy 112.554979 111.911323) + (xy 112.523566 111.95117) + (xy 112.521855 111.956043) + (xy 112.519941 111.959523) + (xy 112.518168 111.963141) + (xy 112.515166 111.967343) + (xy 112.513687 111.972287) + (xy 112.513687 111.972288) + (xy 112.499969 112.018159) + (xy 112.499059 112.020956) + (xy 112.481484 112.071002) + (xy 112.481 112.076591) + (xy 112.481 112.07685) + (xy 112.480661 112.080854) + (xy 112.480254 112.084079) + (xy 112.478775 112.089024) + (xy 112.480137 112.12368) + (xy 112.480952 112.144424) + (xy 112.481 112.146878) + (xy 112.481 112.581) + (xy 112.462694 112.625194) + (xy 112.4185 112.6435) + (xy 110.45891 112.6435) + (xy 110.414716 112.625194) + (xy 108.249806 110.460283) + (xy 108.2315 110.416089) + (xy 108.2315 110.231083) + (xy 114.148001 110.231083) + (xy 114.148333 110.235614) + (xy 114.157478 110.297743) + (xy 114.160326 110.30691) + (xy 114.207556 110.403105) + (xy 114.213484 110.411387) + (xy 114.289111 110.486883) + (xy 114.297406 110.492799) + (xy 114.393687 110.539863) + (xy 114.402851 110.542695) + (xy 114.464391 110.551672) + (xy 114.468904 110.552) + (xy 114.674069 110.552) + (xy 114.682859 110.548359) + (xy 114.6865 110.539569) + (xy 114.6865 110.539568) + (xy 114.8135 110.539568) + (xy 114.817141 110.548358) + (xy 114.825931 110.551999) + (xy 115.031083 110.551999) + (xy 115.035614 110.551667) + (xy 115.097743 110.542522) + (xy 115.10691 110.539674) + (xy 115.203105 110.492444) + (xy 115.211387 110.486516) + (xy 115.286883 110.410889) + (xy 115.292799 110.402594) + (xy 115.339863 110.306313) + (xy 115.342695 110.297149) + (xy 115.351672 110.235609) + (xy 115.352 110.231096) + (xy 115.352 110.083453) + (xy 115.898001 110.083453) + (xy 115.898333 110.087985) + (xy 115.908201 110.155028) + (xy 115.911048 110.164192) + (xy 115.961947 110.267861) + (xy 115.967875 110.276142) + (xy 116.049393 110.357518) + (xy 116.057688 110.363434) + (xy 116.161446 110.414152) + (xy 116.17061 110.416984) + (xy 116.237021 110.426672) + (xy 116.241534 110.427) + (xy 116.674069 110.427) + (xy 116.682859 110.423359) + (xy 116.6865 110.414569) + (xy 116.6865 110.414568) + (xy 116.8135 110.414568) + (xy 116.817141 110.423358) + (xy 116.825931 110.426999) + (xy 117.258453 110.426999) + (xy 117.262985 110.426667) + (xy 117.330028 110.416799) + (xy 117.339192 110.413952) + (xy 117.442861 110.363053) + (xy 117.451142 110.357125) + (xy 117.532518 110.275607) + (xy 117.538434 110.267312) + (xy 117.556143 110.231083) + (xy 118.148001 110.231083) + (xy 118.148333 110.235614) + (xy 118.157478 110.297743) + (xy 118.160326 110.30691) + (xy 118.207556 110.403105) + (xy 118.213484 110.411387) + (xy 118.289111 110.486883) + (xy 118.297406 110.492799) + (xy 118.393687 110.539863) + (xy 118.402851 110.542695) + (xy 118.464391 110.551672) + (xy 118.468904 110.552) + (xy 118.674069 110.552) + (xy 118.682859 110.548359) + (xy 118.6865 110.539569) + (xy 118.6865 110.539568) + (xy 118.8135 110.539568) + (xy 118.817141 110.548358) + (xy 118.825931 110.551999) + (xy 119.031083 110.551999) + (xy 119.035614 110.551667) + (xy 119.097743 110.542522) + (xy 119.10691 110.539674) + (xy 119.203105 110.492444) + (xy 119.211387 110.486516) + (xy 119.286883 110.410889) + (xy 119.292799 110.402594) + (xy 119.339863 110.306313) + (xy 119.342695 110.297149) + (xy 119.351672 110.235609) + (xy 119.352 110.231096) + (xy 119.352 110.050931) + (xy 119.348359 110.042141) + (xy 119.339569 110.0385) + (xy 118.825931 110.0385) + (xy 118.817141 110.042141) + (xy 118.8135 110.050931) + (xy 118.8135 110.539568) + (xy 118.6865 110.539568) + (xy 118.6865 110.050931) + (xy 118.682859 110.042141) + (xy 118.674069 110.0385) + (xy 118.160432 110.0385) + (xy 118.151642 110.042141) + (xy 118.148001 110.050931) + (xy 118.148001 110.231083) + (xy 117.556143 110.231083) + (xy 117.589152 110.163554) + (xy 117.591984 110.15439) + (xy 117.601672 110.087979) + (xy 117.602 110.083466) + (xy 117.602 109.936625) + (xy 121.1475 109.936625) + (xy 121.147501 110.563374) + (xy 121.147766 110.565385) + (xy 121.147766 110.56539) + (xy 121.153079 110.605751) + (xy 121.153779 110.611071) + (xy 121.1558 110.615404) + (xy 121.1558 110.615405) + (xy 121.200277 110.710787) + (xy 121.200279 110.710789) + (xy 121.202589 110.715744) + (xy 121.284256 110.797411) + (xy 121.289211 110.799721) + (xy 121.289213 110.799723) + (xy 121.336076 110.821575) + (xy 121.388929 110.846221) + (xy 121.399427 110.847603) + (xy 121.434593 110.852233) + (xy 121.434601 110.852233) + (xy 121.436625 110.8525) + (xy 121.438672 110.8525) + (xy 121.675642 110.852499) + (xy 121.913374 110.852499) + (xy 121.915385 110.852234) + (xy 121.91539 110.852234) + (xy 121.956331 110.846845) + (xy 121.956332 110.846845) + (xy 121.961071 110.846221) + (xy 122.002951 110.826692) + (xy 122.060787 110.799723) + (xy 122.060789 110.799721) + (xy 122.065744 110.797411) + (xy 122.147411 110.715744) + (xy 122.149721 110.710789) + (xy 122.149723 110.710787) + (xy 122.176542 110.653273) + (xy 122.196221 110.611071) + (xy 122.199319 110.587536) + (xy 122.202233 110.565407) + (xy 122.202233 110.565399) + (xy 122.2025 110.563375) + (xy 122.202499 109.936626) + (xy 122.202232 109.934593) + (xy 122.196845 109.893669) + (xy 122.196845 109.893668) + (xy 122.196221 109.888929) + (xy 122.184363 109.8635) + (xy 122.149723 109.789213) + (xy 122.149721 109.789211) + (xy 122.147411 109.784256) + (xy 122.065744 109.702589) + (xy 122.060789 109.700279) + (xy 122.060787 109.700277) + (xy 122.011985 109.677521) + (xy 121.961071 109.653779) + (xy 121.940887 109.651122) + (xy 121.920342 109.648417) + (xy 121.878915 109.6245) + (xy 121.866 109.586452) + (xy 121.866 109.163548) + (xy 121.884306 109.119354) + (xy 121.920343 109.101583) + (xy 121.956325 109.096847) + (xy 121.956333 109.096845) + (xy 121.961071 109.096221) + (xy 122.028057 109.064985) + (xy 122.060787 109.049723) + (xy 122.060789 109.049721) + (xy 122.065744 109.047411) + (xy 122.147411 108.965744) + (xy 122.149721 108.960789) + (xy 122.149723 108.960787) + (xy 122.173811 108.90913) + (xy 122.196221 108.861071) + (xy 122.201943 108.817607) + (xy 122.202233 108.815407) + (xy 122.202233 108.815399) + (xy 122.2025 108.813375) + (xy 122.202499 108.268504) + (xy 122.220805 108.22431) + (xy 122.256443 108.188672) + (xy 122.7975 108.188672) + (xy 122.797501 108.500843) + (xy 122.797501 108.813374) + (xy 122.797766 108.815385) + (xy 122.797766 108.81539) + (xy 122.802053 108.847957) + (xy 122.803779 108.861071) + (xy 122.8058 108.865404) + (xy 122.8058 108.865405) + (xy 122.850277 108.960787) + (xy 122.850279 108.960789) + (xy 122.852589 108.965744) + (xy 122.934256 109.047411) + (xy 122.939211 109.049721) + (xy 122.939213 109.049723) + (xy 122.971943 109.064985) + (xy 123.038929 109.096221) + (xy 123.050316 109.09772) + (xy 123.084593 109.102233) + (xy 123.084601 109.102233) + (xy 123.086625 109.1025) + (xy 123.088672 109.1025) + (xy 123.325642 109.102499) + (xy 123.563374 109.102499) + (xy 123.565385 109.102234) + (xy 123.56539 109.102234) + (xy 123.606331 109.096845) + (xy 123.606332 109.096845) + (xy 123.611071 109.096221) + (xy 123.678057 109.064985) + (xy 123.710787 109.049723) + (xy 123.710789 109.049721) + (xy 123.715744 109.047411) + (xy 123.797411 108.965744) + (xy 123.799721 108.960789) + (xy 123.799723 108.960787) + (xy 123.823811 108.90913) + (xy 123.846221 108.861071) + (xy 123.851943 108.817607) + (xy 123.852233 108.815407) + (xy 123.852233 108.815399) + (xy 123.8525 108.813375) + (xy 123.8525 108.7535) + (xy 123.870806 108.709306) + (xy 123.915 108.691) + (xy 124.706768 108.691) + (xy 124.714107 108.69225) + (xy 124.71419 108.691523) + (xy 124.721181 108.69232) + (xy 124.727822 108.694652) + (xy 124.734815 108.693874) + (xy 124.734816 108.693874) + (xy 124.757197 108.691383) + (xy 124.76411 108.691) + (xy 124.771533 108.691) + (xy 124.778465 108.689419) + (xy 124.785418 108.688243) + (xy 124.814429 108.685014) + (xy 124.820393 108.681281) + (xy 124.824341 108.679906) + (xy 124.8281 108.678097) + (xy 124.834959 108.676532) + (xy 124.841435 108.671372) + (xy 124.857773 108.658352) + (xy 124.863559 108.654256) + (xy 124.866715 108.65228) + (xy 124.866717 108.652279) + (xy 124.869711 108.650404) + (xy 124.874924 108.645191) + (xy 124.880168 108.640506) + (xy 124.897604 108.626612) + (xy 124.897604 108.626611) + (xy 124.903109 108.622225) + (xy 124.906167 108.615886) + (xy 124.910558 108.610385) + (xy 124.911092 108.610811) + (xy 124.915468 108.604647) + (xy 125.104487 108.415628) + (xy 125.110561 108.411323) + (xy 125.110105 108.41075) + (xy 125.115613 108.406369) + (xy 125.121958 108.403322) + (xy 125.140418 108.380239) + (xy 125.145035 108.37508) + (xy 125.150283 108.369832) + (xy 125.154055 108.363831) + (xy 125.158159 108.358056) + (xy 125.171988 108.340764) + (xy 125.17199 108.34076) + (xy 125.176383 108.335267) + (xy 125.17796 108.32841) + (xy 125.179778 108.324648) + (xy 125.181157 108.32071) + (xy 125.184902 108.314752) + (xy 125.185692 108.307761) + (xy 125.185694 108.307756) + (xy 125.18818 108.285763) + (xy 125.189373 108.278778) + (xy 125.190208 108.275146) + (xy 125.191 108.271703) + (xy 125.191 108.264323) + (xy 125.191396 108.257303) + (xy 125.193899 108.235158) + (xy 125.19469 108.228162) + (xy 125.192369 108.221516) + (xy 125.191585 108.214522) + (xy 125.192264 108.214446) + (xy 125.191 108.206996) + (xy 125.191 107.105003) + (xy 125.209306 107.060809) + (xy 125.310809 106.959306) + (xy 125.355003 106.941) + (xy 126.076187 106.941) + (xy 126.120381 106.959306) + (xy 126.129248 106.970473) + (xy 126.13154 106.974155) + (xy 126.133333 106.97823) + (xy 126.14549 106.992692) + (xy 126.148029 106.995713) + (xy 126.150157 106.998434) + (xy 126.152292 107.002625) + (xy 126.160081 107.010414) + (xy 126.16373 107.014392) + (xy 126.204189 107.062524) + (xy 126.212127 107.071968) + (xy 126.235399 107.087459) + (xy 126.241836 107.092733) + (xy 126.243899 107.094232) + (xy 126.247375 107.097708) + (xy 126.251753 107.099939) + (xy 126.251756 107.099941) + (xy 126.25873 107.103494) + (xy 126.264977 107.107148) + (xy 126.314064 107.139823) + (xy 126.318313 107.141151) + (xy 126.318314 107.141151) + (xy 126.350296 107.151143) + (xy 126.360027 107.155109) + (xy 126.362799 107.156521) + (xy 126.362803 107.156522) + (xy 126.367187 107.158756) + (xy 126.377852 107.160445) + (xy 126.386713 107.16252) + (xy 126.426696 107.175012) + (xy 126.426699 107.175012) + (xy 126.430948 107.17634) + (xy 126.480069 107.177241) + (xy 126.488683 107.177999) + (xy 126.49514 107.179022) + (xy 126.495144 107.179022) + (xy 126.5 107.179791) + (xy 126.506947 107.17869) + (xy 126.517853 107.177933) + (xy 126.553383 107.178584) + (xy 126.613532 107.162185) + (xy 126.62019 107.160755) + (xy 126.622147 107.160445) + (xy 126.632813 107.158756) + (xy 126.637196 107.156522) + (xy 126.641875 107.155002) + (xy 126.641878 107.15501) + (xy 126.646727 107.153136) + (xy 126.671527 107.146375) + (xy 126.683231 107.139189) + (xy 126.739709 107.104511) + (xy 126.744037 107.102085) + (xy 126.74824 107.099944) + (xy 126.748248 107.099938) + (xy 126.752625 107.097708) + (xy 126.755427 107.094906) + (xy 126.756264 107.094346) + (xy 126.758891 107.092733) + (xy 126.775881 107.082301) + (xy 126.858058 106.991513) + (xy 126.911451 106.881311) + (xy 126.912527 106.87492) + (xy 126.918095 106.841821) + (xy 127.473001 106.841821) + (xy 127.4736 106.847906) + (xy 127.48352 106.897776) + (xy 127.488143 106.908937) + (xy 127.525945 106.965514) + (xy 127.534486 106.974055) + (xy 127.591064 107.011858) + (xy 127.602221 107.01648) + (xy 127.652096 107.026401) + (xy 127.658177 107.027) + (xy 128.261569 107.027) + (xy 128.270359 107.023359) + (xy 128.274 107.014569) + (xy 128.274 107.014568) + (xy 128.401 107.014568) + (xy 128.404641 107.023358) + (xy 128.413431 107.026999) + (xy 129.016821 107.026999) + (xy 129.022906 107.0264) + (xy 129.072776 107.01648) + (xy 129.083937 107.011857) + (xy 129.140514 106.974055) + (xy 129.149055 106.965514) + (xy 129.186858 106.908936) + (xy 129.19148 106.897779) + (xy 129.201401 106.847904) + (xy 129.202 106.841823) + (xy 129.202 106.825931) + (xy 129.198359 106.817141) + (xy 129.189569 106.8135) + (xy 128.413431 106.8135) + (xy 128.404641 106.817141) + (xy 128.401 106.825931) + (xy 128.401 107.014568) + (xy 128.274 107.014568) + (xy 128.274 106.825931) + (xy 128.270359 106.817141) + (xy 128.261569 106.8135) + (xy 127.485432 106.8135) + (xy 127.476642 106.817141) + (xy 127.473001 106.825931) + (xy 127.473001 106.841821) + (xy 126.918095 106.841821) + (xy 126.931367 106.762928) + (xy 126.931767 106.760552) + (xy 126.931896 106.75) + (xy 126.921022 106.674069) + (xy 127.473 106.674069) + (xy 127.476641 106.682859) + (xy 127.485431 106.6865) + (xy 128.261569 106.6865) + (xy 128.270359 106.682859) + (xy 128.274 106.674069) + (xy 128.401 106.674069) + (xy 128.404641 106.682859) + (xy 128.413431 106.6865) + (xy 129.189568 106.6865) + (xy 129.198358 106.682859) + (xy 129.201999 106.674069) + (xy 129.201999 106.658179) + (xy 129.2014 106.652094) + (xy 129.19148 106.602224) + (xy 129.186857 106.591063) + (xy 129.149213 106.534722) + (xy 129.139881 106.487806) + (xy 129.149213 106.465278) + (xy 129.186858 106.408936) + (xy 129.19148 106.397779) + (xy 129.201401 106.347904) + (xy 129.202 106.341823) + (xy 129.202 106.325931) + (xy 129.198359 106.317141) + (xy 129.189569 106.3135) + (xy 128.413431 106.3135) + (xy 128.404641 106.317141) + (xy 128.401 106.325931) + (xy 128.401 106.674069) + (xy 128.274 106.674069) + (xy 128.274 106.325931) + (xy 128.270359 106.317141) + (xy 128.261569 106.3135) + (xy 127.485432 106.3135) + (xy 127.476642 106.317141) + (xy 127.473001 106.325931) + (xy 127.473001 106.341821) + (xy 127.4736 106.347906) + (xy 127.48352 106.397776) + (xy 127.488143 106.408937) + (xy 127.525787 106.465278) + (xy 127.535119 106.512194) + (xy 127.525787 106.534722) + (xy 127.488142 106.591064) + (xy 127.48352 106.602221) + (xy 127.473599 106.652096) + (xy 127.473 106.658177) + (xy 127.473 106.674069) + (xy 126.921022 106.674069) + (xy 126.914536 106.628781) + (xy 126.863852 106.517307) + (xy 126.849199 106.500302) + (xy 126.847708 106.497375) + (xy 126.8419 106.491567) + (xy 126.838746 106.48817) + (xy 126.786826 106.427914) + (xy 126.786823 106.427911) + (xy 126.783918 106.424539) + (xy 126.763741 106.411461) + (xy 126.760155 106.408559) + (xy 126.760081 106.408661) + (xy 126.756106 106.405773) + (xy 126.752625 106.402292) + (xy 126.741343 106.396543) + (xy 126.735736 106.393309) + (xy 126.723408 106.385318) + (xy 126.713322 106.378781) + (xy 126.684893 106.360354) + (xy 126.68489 106.360353) + (xy 126.68116 106.357935) + (xy 126.676901 106.356661) + (xy 126.676898 106.35666) + (xy 126.658345 106.351112) + (xy 126.648839 106.348269) + (xy 126.638377 106.344079) + (xy 126.632813 106.341244) + (xy 126.621067 106.339384) + (xy 126.612951 106.337536) + (xy 126.563838 106.322848) + (xy 126.519496 106.322577) + (xy 126.510103 106.321809) + (xy 126.504857 106.320978) + (xy 126.504856 106.320978) + (xy 126.5 106.320209) + (xy 126.491373 106.321576) + (xy 126.48122 106.322344) + (xy 126.462836 106.322231) + (xy 126.445838 106.322127) + (xy 126.445836 106.322127) + (xy 126.441385 106.3221) + (xy 126.387011 106.337641) + (xy 126.379623 106.339275) + (xy 126.367187 106.341244) + (xy 126.362804 106.343477) + (xy 126.36187 106.343781) + (xy 126.352156 106.347603) + (xy 126.350916 106.347957) + (xy 126.327929 106.354526) + (xy 126.327927 106.354527) + (xy 126.323644 106.355751) + (xy 126.264119 106.393309) + (xy 126.262819 106.394129) + (xy 126.257842 106.396959) + (xy 126.251757 106.400059) + (xy 126.251756 106.40006) + (xy 126.247375 106.402292) + (xy 126.243897 106.40577) + (xy 126.242445 106.406825) + (xy 126.239059 106.40912) + (xy 126.239043 106.40913) + (xy 126.22008 106.421095) + (xy 126.217137 106.424427) + (xy 126.217135 106.424429) + (xy 126.157156 106.492342) + (xy 126.156032 106.493538) + (xy 126.155775 106.493892) + (xy 126.155554 106.494113) + (xy 126.155405 106.494204) + (xy 126.154504 106.495163) + (xy 126.152292 106.497375) + (xy 126.151509 106.496592) + (xy 126.150362 106.497296) + (xy 126.151721 106.498496) + (xy 126.145002 106.506104) + (xy 126.139018 106.512879) + (xy 126.137127 106.516906) + (xy 126.137126 106.516908) + (xy 126.134237 106.523062) + (xy 126.098884 106.555287) + (xy 126.077662 106.559) + (xy 125.293231 106.559) + (xy 125.285892 106.55775) + (xy 125.285809 106.558477) + (xy 125.278818 106.55768) + (xy 125.272177 106.555348) + (xy 125.265185 106.556126) + (xy 125.265183 106.556126) + (xy 125.245677 106.558297) + (xy 125.24292 106.558604) + (xy 125.242803 106.558617) + (xy 125.23589 106.559) + (xy 125.228467 106.559) + (xy 125.225043 106.559781) + (xy 125.221553 106.560577) + (xy 125.214567 106.561759) + (xy 125.206883 106.562614) + (xy 125.185571 106.564986) + (xy 125.179608 106.568719) + (xy 125.175662 106.570093) + (xy 125.171902 106.571903) + (xy 125.165041 106.573468) + (xy 125.159539 106.577853) + (xy 125.159538 106.577853) + (xy 125.153956 106.582301) + (xy 125.143199 106.590874) + (xy 125.142221 106.591653) + (xy 125.136441 106.595746) + (xy 125.130289 106.599597) + (xy 125.125081 106.604805) + (xy 125.119837 106.60949) + (xy 125.107031 106.619695) + (xy 125.096891 106.627775) + (xy 125.093833 106.634114) + (xy 125.089442 106.639615) + (xy 125.088909 106.639189) + (xy 125.084531 106.645355) + (xy 124.895514 106.834372) + (xy 124.88944 106.838677) + (xy 124.889896 106.839251) + (xy 124.884391 106.84363) + (xy 124.878042 106.846678) + (xy 124.866008 106.861726) + (xy 124.859582 106.869761) + (xy 124.854965 106.87492) + (xy 124.849716 106.880169) + (xy 124.847113 106.884311) + (xy 124.845943 106.886172) + (xy 124.841838 106.891948) + (xy 124.823617 106.914733) + (xy 124.82204 106.921593) + (xy 124.820222 106.925353) + (xy 124.818844 106.929289) + (xy 124.815098 106.935248) + (xy 124.814307 106.942242) + (xy 124.814307 106.942243) + (xy 124.811821 106.964236) + (xy 124.810629 106.971213) + (xy 124.809 106.978297) + (xy 124.809 106.985671) + (xy 124.808604 106.992692) + (xy 124.805309 107.021838) + (xy 124.80763 107.028483) + (xy 124.808414 107.035477) + (xy 124.807736 107.035553) + (xy 124.809 107.043005) + (xy 124.809 108.144998) + (xy 124.790694 108.189192) + (xy 124.689191 108.290694) + (xy 124.644997 108.309) + (xy 123.914999 108.309) + (xy 123.870805 108.290694) + (xy 123.852499 108.2465) + (xy 123.852499 108.186626) + (xy 123.852232 108.184593) + (xy 123.846845 108.143669) + (xy 123.846845 108.143668) + (xy 123.846221 108.138929) + (xy 123.830311 108.104809) + (xy 123.799723 108.039213) + (xy 123.799721 108.039211) + (xy 123.797411 108.034256) + (xy 123.715744 107.952589) + (xy 123.710789 107.950279) + (xy 123.710787 107.950277) + (xy 123.661985 107.927521) + (xy 123.611071 107.903779) + (xy 123.597705 107.902019) + (xy 123.565407 107.897767) + (xy 123.565399 107.897767) + (xy 123.563375 107.8975) + (xy 123.561328 107.8975) + (xy 123.324358 107.897501) + (xy 123.086626 107.897501) + (xy 123.084615 107.897766) + (xy 123.08461 107.897766) + (xy 123.043669 107.903155) + (xy 123.043668 107.903155) + (xy 123.038929 107.903779) + (xy 123.034595 107.9058) + (xy 122.939213 107.950277) + (xy 122.939211 107.950279) + (xy 122.934256 107.952589) + (xy 122.852589 108.034256) + (xy 122.850279 108.039211) + (xy 122.850277 108.039213) + (xy 122.839948 108.061365) + (xy 122.803779 108.138929) + (xy 122.803155 108.143669) + (xy 122.803155 108.14367) + (xy 122.797767 108.184593) + (xy 122.797767 108.184601) + (xy 122.7975 108.186625) + (xy 122.7975 108.188672) + (xy 122.256443 108.188672) + (xy 123.299309 107.145806) + (xy 123.343503 107.1275) + (xy 124.19123 107.1275) + (xy 124.19306 107.127282) + (xy 124.193064 107.127282) + (xy 124.199647 107.126498) + (xy 124.215424 107.124621) + (xy 124.219711 107.122717) + (xy 124.304628 107.084999) + (xy 124.304629 107.084998) + (xy 124.3099 107.082657) + (xy 124.382935 107.009494) + (xy 124.403404 106.963195) + (xy 124.422835 106.919244) + (xy 124.422836 106.919241) + (xy 124.424735 106.914945) + (xy 124.425279 106.910278) + (xy 124.42528 106.910275) + (xy 124.4269 106.896375) + (xy 124.4275 106.89123) + (xy 124.4275 106.50877) + (xy 124.427027 106.50479) + (xy 124.425839 106.494813) + (xy 124.424621 106.484576) + (xy 124.416049 106.465278) + (xy 124.384999 106.395372) + (xy 124.384998 106.395371) + (xy 124.382657 106.3901) + (xy 124.309494 106.317065) + (xy 124.230005 106.281923) + (xy 124.196987 106.247311) + (xy 124.198114 106.199488) + (xy 124.229906 106.167641) + (xy 124.304339 106.134579) + (xy 124.313688 106.128154) + (xy 124.37844 106.063289) + (xy 124.384848 106.053931) + (xy 124.422341 105.969124) + (xy 124.424784 105.960162) + (xy 124.426791 105.94295) + (xy 124.427 105.939342) + (xy 124.427 105.825931) + (xy 124.423359 105.817141) + (xy 124.414569 105.8135) + (xy 122.860431 105.8135) + (xy 122.851641 105.817141) + (xy 122.848 105.825931) + (xy 122.848 105.939309) + (xy 122.848218 105.942988) + (xy 122.85032 105.960647) + (xy 122.852778 105.969593) + (xy 122.890421 106.054339) + (xy 122.896846 106.063688) + (xy 122.961711 106.12844) + (xy 122.971069 106.134848) + (xy 123.044994 106.16753) + (xy 123.078012 106.202143) + (xy 123.076885 106.249965) + (xy 123.045093 106.281812) + (xy 122.970372 106.315001) + (xy 122.970371 106.315002) + (xy 122.9651 106.317343) + (xy 122.961024 106.321426) + (xy 122.943799 106.338681) + (xy 122.892065 106.390506) + (xy 122.882801 106.411461) + (xy 122.852165 106.480756) + (xy 122.852164 106.480759) + (xy 122.850265 106.485055) + (xy 122.849721 106.489722) + (xy 122.84972 106.489725) + (xy 122.848487 106.500302) + (xy 122.8475 106.50877) + (xy 122.8475 106.89123) + (xy 122.850379 106.915424) + (xy 122.852283 106.91971) + (xy 122.852283 106.919711) + (xy 122.875735 106.97251) + (xy 122.876945 107.02033) + (xy 122.86281 107.042075) + (xy 122.017646 107.887239) + (xy 121.973452 107.905545) + (xy 121.961071 107.903778) + (xy 121.961071 107.903779) + (xy 121.915407 107.897767) + (xy 121.915399 107.897767) + (xy 121.913375 107.8975) + (xy 121.911328 107.8975) + (xy 121.674358 107.897501) + (xy 121.436626 107.897501) + (xy 121.434615 107.897766) + (xy 121.43461 107.897766) + (xy 121.393669 107.903155) + (xy 121.393668 107.903155) + (xy 121.388929 107.903779) + (xy 121.384595 107.9058) + (xy 121.289213 107.950277) + (xy 121.289211 107.950279) + (xy 121.284256 107.952589) + (xy 121.202589 108.034256) + (xy 121.200279 108.039211) + (xy 121.200277 108.039213) + (xy 121.189948 108.061365) + (xy 121.153779 108.138929) + (xy 121.153155 108.143669) + (xy 121.153155 108.14367) + (xy 121.147767 108.184593) + (xy 121.147767 108.184601) + (xy 121.1475 108.186625) + (xy 121.1475 108.188672) + (xy 121.147501 108.500843) + (xy 121.147501 108.813374) + (xy 121.147766 108.815385) + (xy 121.147766 108.81539) + (xy 121.152053 108.847957) + (xy 121.153779 108.861071) + (xy 121.1558 108.865404) + (xy 121.1558 108.865405) + (xy 121.200277 108.960787) + (xy 121.200279 108.960789) + (xy 121.202589 108.965744) + (xy 121.284256 109.047411) + (xy 121.289211 109.049721) + (xy 121.289213 109.049723) + (xy 121.321943 109.064985) + (xy 121.388929 109.096221) + (xy 121.400316 109.09772) + (xy 121.429658 109.101583) + (xy 121.471085 109.1255) + (xy 121.484 109.163548) + (xy 121.484 109.586452) + (xy 121.465694 109.630646) + (xy 121.429657 109.648417) + (xy 121.393675 109.653153) + (xy 121.393667 109.653155) + (xy 121.388929 109.653779) + (xy 121.384595 109.6558) + (xy 121.289213 109.700277) + (xy 121.289211 109.700279) + (xy 121.284256 109.702589) + (xy 121.202589 109.784256) + (xy 121.200279 109.789211) + (xy 121.200277 109.789213) + (xy 121.187529 109.816552) + (xy 121.153779 109.888929) + (xy 121.152597 109.897906) + (xy 121.147767 109.934593) + (xy 121.147767 109.934601) + (xy 121.1475 109.936625) + (xy 117.602 109.936625) + (xy 117.602 109.899069) + (xy 118.148 109.899069) + (xy 118.151641 109.907859) + (xy 118.160431 109.9115) + (xy 118.674069 109.9115) + (xy 118.682859 109.907859) + (xy 118.6865 109.899069) + (xy 118.8135 109.899069) + (xy 118.817141 109.907859) + (xy 118.825931 109.9115) + (xy 119.339568 109.9115) + (xy 119.348358 109.907859) + (xy 119.351999 109.899069) + (xy 119.351999 109.718917) + (xy 119.351667 109.714386) + (xy 119.342522 109.652257) + (xy 119.339674 109.64309) + (xy 119.292444 109.546895) + (xy 119.286516 109.538613) + (xy 119.210889 109.463117) + (xy 119.202594 109.457201) + (xy 119.106313 109.410137) + (xy 119.097149 109.407305) + (xy 119.035609 109.398328) + (xy 119.031096 109.398) + (xy 118.825931 109.398) + (xy 118.817141 109.401641) + (xy 118.8135 109.410431) + (xy 118.8135 109.899069) + (xy 118.6865 109.899069) + (xy 118.6865 109.410432) + (xy 118.682859 109.401642) + (xy 118.674069 109.398001) + (xy 118.468917 109.398001) + (xy 118.464386 109.398333) + (xy 118.402257 109.407478) + (xy 118.39309 109.410326) + (xy 118.296895 109.457556) + (xy 118.288613 109.463484) + (xy 118.213117 109.539111) + (xy 118.207201 109.547406) + (xy 118.160137 109.643687) + (xy 118.157305 109.652851) + (xy 118.148328 109.714391) + (xy 118.148 109.718904) + (xy 118.148 109.899069) + (xy 117.602 109.899069) + (xy 117.602 109.875931) + (xy 117.598359 109.867141) + (xy 117.589569 109.8635) + (xy 116.825931 109.8635) + (xy 116.817141 109.867141) + (xy 116.8135 109.875931) + (xy 116.8135 110.414568) + (xy 116.6865 110.414568) + (xy 116.6865 109.875931) + (xy 116.682859 109.867141) + (xy 116.674069 109.8635) + (xy 115.910432 109.8635) + (xy 115.901642 109.867141) + (xy 115.898001 109.875931) + (xy 115.898001 110.083453) + (xy 115.352 110.083453) + (xy 115.352 110.050931) + (xy 115.348359 110.042141) + (xy 115.339569 110.0385) + (xy 114.825931 110.0385) + (xy 114.817141 110.042141) + (xy 114.8135 110.050931) + (xy 114.8135 110.539568) + (xy 114.6865 110.539568) + (xy 114.6865 110.050931) + (xy 114.682859 110.042141) + (xy 114.674069 110.0385) + (xy 114.160432 110.0385) + (xy 114.151642 110.042141) + (xy 114.148001 110.050931) + (xy 114.148001 110.231083) + (xy 108.2315 110.231083) + (xy 108.2315 109.899069) + (xy 114.148 109.899069) + (xy 114.151641 109.907859) + (xy 114.160431 109.9115) + (xy 114.674069 109.9115) + (xy 114.682859 109.907859) + (xy 114.6865 109.899069) + (xy 114.8135 109.899069) + (xy 114.817141 109.907859) + (xy 114.825931 109.9115) + (xy 115.339568 109.9115) + (xy 115.348358 109.907859) + (xy 115.351999 109.899069) + (xy 115.351999 109.724069) + (xy 115.898 109.724069) + (xy 115.901641 109.732859) + (xy 115.910431 109.7365) + (xy 116.674069 109.7365) + (xy 116.682859 109.732859) + (xy 116.6865 109.724069) + (xy 116.8135 109.724069) + (xy 116.817141 109.732859) + (xy 116.825931 109.7365) + (xy 117.589568 109.7365) + (xy 117.598358 109.732859) + (xy 117.601999 109.724069) + (xy 117.601999 109.516547) + (xy 117.601667 109.512011) + (xy 117.591799 109.444972) + (xy 117.588952 109.435808) + (xy 117.538053 109.332139) + (xy 117.532125 109.323858) + (xy 117.450607 109.242482) + (xy 117.442312 109.236566) + (xy 117.338554 109.185848) + (xy 117.32939 109.183016) + (xy 117.262979 109.173328) + (xy 117.258466 109.173) + (xy 116.825931 109.173) + (xy 116.817141 109.176641) + (xy 116.8135 109.185431) + (xy 116.8135 109.724069) + (xy 116.6865 109.724069) + (xy 116.6865 109.185432) + (xy 116.682859 109.176642) + (xy 116.674069 109.173001) + (xy 116.241547 109.173001) + (xy 116.237015 109.173333) + (xy 116.169972 109.183201) + (xy 116.160808 109.186048) + (xy 116.057139 109.236947) + (xy 116.048858 109.242875) + (xy 115.967482 109.324393) + (xy 115.961566 109.332688) + (xy 115.910848 109.436446) + (xy 115.908016 109.44561) + (xy 115.898328 109.512021) + (xy 115.898 109.516534) + (xy 115.898 109.724069) + (xy 115.351999 109.724069) + (xy 115.351999 109.718917) + (xy 115.351667 109.714386) + (xy 115.342522 109.652257) + (xy 115.339674 109.64309) + (xy 115.292444 109.546895) + (xy 115.286516 109.538613) + (xy 115.210889 109.463117) + (xy 115.202594 109.457201) + (xy 115.106313 109.410137) + (xy 115.097149 109.407305) + (xy 115.035609 109.398328) + (xy 115.031096 109.398) + (xy 114.825931 109.398) + (xy 114.817141 109.401641) + (xy 114.8135 109.410431) + (xy 114.8135 109.899069) + (xy 114.6865 109.899069) + (xy 114.6865 109.410432) + (xy 114.682859 109.401642) + (xy 114.674069 109.398001) + (xy 114.468917 109.398001) + (xy 114.464386 109.398333) + (xy 114.402257 109.407478) + (xy 114.39309 109.410326) + (xy 114.296895 109.457556) + (xy 114.288613 109.463484) + (xy 114.213117 109.539111) + (xy 114.207201 109.547406) + (xy 114.160137 109.643687) + (xy 114.157305 109.652851) + (xy 114.148328 109.714391) + (xy 114.148 109.718904) + (xy 114.148 109.899069) + (xy 108.2315 109.899069) + (xy 108.2315 108.74) + (xy 108.249806 108.695806) + (xy 108.294 108.6775) + (xy 108.862558 108.6775) + (xy 108.867616 108.676494) + (xy 108.893713 108.671303) + (xy 108.893715 108.671302) + (xy 108.899748 108.670102) + (xy 108.941922 108.641922) + (xy 108.970102 108.599748) + (xy 108.971714 108.591648) + (xy 108.976901 108.565569) + (xy 108.9775 108.562558) + (xy 108.9775 107.037442) + (xy 108.975304 107.026401) + (xy 108.971303 107.006287) + (xy 108.971302 107.006285) + (xy 108.970102 107.000252) + (xy 108.941922 106.958078) + (xy 108.899748 106.929898) + (xy 108.893715 106.928698) + (xy 108.893713 106.928697) + (xy 108.865569 106.923099) + (xy 108.862558 106.9225) + (xy 106.837442 106.9225) + (xy 106.834431 106.923099) + (xy 106.806287 106.928697) + (xy 106.806285 106.928698) + (xy 106.800252 106.929898) + (xy 106.758078 106.958078) + (xy 106.729898 107.000252) + (xy 106.728698 107.006285) + (xy 106.728697 107.006287) + (xy 106.724696 107.026401) + (xy 106.7225 107.037442) + (xy 106.7225 108.562558) + (xy 99.3 108.562558) + (xy 99.3 106.744724) + (xy 119.068136 106.744724) + (xy 119.068713 106.749137) + (xy 119.068713 106.749138) + (xy 119.081895 106.849941) + (xy 119.084014 106.866145) + (xy 119.085809 106.870224) + (xy 119.089092 106.877685) + (xy 119.091185 106.882443) + (xy 119.091244 106.882813) + (xy 119.092007 106.884311) + (xy 119.094031 106.88891) + (xy 119.094031 106.888911) + (xy 119.130251 106.971225) + (xy 119.133333 106.97823) + (xy 119.14549 106.992692) + (xy 119.148029 106.995713) + (xy 119.150157 106.998434) + (xy 119.152292 107.002625) + (xy 119.160081 107.010414) + (xy 119.16373 107.014392) + (xy 119.204189 107.062524) + (xy 119.212127 107.071968) + (xy 119.235399 107.087459) + (xy 119.241836 107.092733) + (xy 119.243899 107.094232) + (xy 119.247375 107.097708) + (xy 119.251753 107.099939) + (xy 119.251756 107.099941) + (xy 119.25873 107.103494) + (xy 119.264977 107.107148) + (xy 119.314064 107.139823) + (xy 119.318313 107.141151) + (xy 119.318314 107.141151) + (xy 119.350296 107.151143) + (xy 119.360027 107.155109) + (xy 119.362799 107.156521) + (xy 119.362803 107.156522) + (xy 119.367187 107.158756) + (xy 119.377852 107.160445) + (xy 119.386713 107.16252) + (xy 119.426696 107.175012) + (xy 119.426699 107.175012) + (xy 119.430948 107.17634) + (xy 119.480069 107.177241) + (xy 119.488683 107.177999) + (xy 119.49514 107.179022) + (xy 119.495144 107.179022) + (xy 119.5 107.179791) + (xy 119.506947 107.17869) + (xy 119.517853 107.177933) + (xy 119.553383 107.178584) + (xy 119.613532 107.162185) + (xy 119.62019 107.160755) + (xy 119.622147 107.160445) + (xy 119.632813 107.158756) + (xy 119.637196 107.156522) + (xy 119.641875 107.155002) + (xy 119.641878 107.15501) + (xy 119.646727 107.153136) + (xy 119.671527 107.146375) + (xy 119.683231 107.139189) + (xy 119.739709 107.104511) + (xy 119.744037 107.102085) + (xy 119.74824 107.099944) + (xy 119.748248 107.099938) + (xy 119.752625 107.097708) + (xy 119.755427 107.094906) + (xy 119.756264 107.094346) + (xy 119.758891 107.092733) + (xy 119.775881 107.082301) + (xy 119.858058 106.991513) + (xy 119.860889 106.985671) + (xy 119.881774 106.942563) + (xy 119.889679 106.926248) + (xy 119.925423 106.894458) + (xy 119.945925 106.891) + (xy 120.523903 106.891) + (xy 120.568097 106.909306) + (xy 120.581022 106.928129) + (xy 120.614112 107.002625) + (xy 120.617343 107.0099) + (xy 120.621426 107.013976) + (xy 120.642965 107.035477) + (xy 120.690506 107.082935) + (xy 120.723922 107.097708) + (xy 120.780756 107.122835) + (xy 120.780759 107.122836) + (xy 120.785055 107.124735) + (xy 120.789722 107.125279) + (xy 120.789725 107.12528) + (xy 120.801038 107.126599) + (xy 120.80877 107.1275) + (xy 121.91623 107.1275) + (xy 121.91806 107.127282) + (xy 121.918064 107.127282) + (xy 121.924647 107.126498) + (xy 121.940424 107.124621) + (xy 121.944711 107.122717) + (xy 122.029628 107.084999) + (xy 122.029629 107.084998) + (xy 122.0349 107.082657) + (xy 122.107935 107.009494) + (xy 122.128404 106.963195) + (xy 122.147835 106.919244) + (xy 122.147836 106.919241) + (xy 122.149735 106.914945) + (xy 122.150279 106.910278) + (xy 122.15028 106.910275) + (xy 122.1519 106.896375) + (xy 122.1525 106.89123) + (xy 122.1525 106.50877) + (xy 122.152027 106.50479) + (xy 122.150839 106.494813) + (xy 122.149621 106.484576) + (xy 122.141049 106.465278) + (xy 122.109999 106.395372) + (xy 122.109998 106.395371) + (xy 122.107657 106.3901) + (xy 122.034494 106.317065) + (xy 121.978057 106.292114) + (xy 121.955623 106.282196) + (xy 121.922605 106.247583) + (xy 121.923732 106.199761) + (xy 121.955524 106.167914) + (xy 122.029628 106.134999) + (xy 122.029629 106.134998) + (xy 122.0349 106.132657) + (xy 122.064298 106.103208) + (xy 122.073144 106.094346) + (xy 122.107935 106.059494) + (xy 122.135744 105.996592) + (xy 122.147835 105.969244) + (xy 122.147836 105.969241) + (xy 122.149735 105.964945) + (xy 122.150279 105.960278) + (xy 122.15028 105.960275) + (xy 122.151599 105.948962) + (xy 122.1525 105.94123) + (xy 122.1525 105.55877) + (xy 122.152027 105.55479) + (xy 122.150175 105.539235) + (xy 122.149621 105.534576) + (xy 122.138502 105.509543) + (xy 122.109999 105.445372) + (xy 122.109998 105.445371) + (xy 122.107657 105.4401) + (xy 122.089643 105.422117) + (xy 122.038577 105.371141) + (xy 122.034494 105.367065) + (xy 121.960893 105.334526) + (xy 121.955623 105.332196) + (xy 121.922605 105.297583) + (xy 121.923732 105.249761) + (xy 121.955524 105.217914) + (xy 122.029628 105.184999) + (xy 122.029629 105.184998) + (xy 122.0349 105.182657) + (xy 122.107935 105.109494) + (xy 122.134915 105.048467) + (xy 122.147835 105.019244) + (xy 122.147836 105.019241) + (xy 122.149735 105.014945) + (xy 122.150279 105.010278) + (xy 122.15028 105.010275) + (xy 122.151716 104.997952) + (xy 122.1525 104.99123) + (xy 122.8475 104.99123) + (xy 122.847718 104.99306) + (xy 122.847718 104.993064) + (xy 122.848033 104.995713) + (xy 122.850379 105.015424) + (xy 122.852283 105.01971) + (xy 122.852283 105.019711) + (xy 122.889498 105.103494) + (xy 122.892343 105.1099) + (xy 122.965506 105.182935) + (xy 123.043854 105.217572) + (xy 123.044995 105.218077) + (xy 123.078013 105.252689) + (xy 123.076886 105.300512) + (xy 123.045094 105.332359) + (xy 122.970661 105.365421) + (xy 122.961312 105.371846) + (xy 122.89656 105.436711) + (xy 122.890152 105.446069) + (xy 122.852659 105.530876) + (xy 122.850216 105.539838) + (xy 122.848209 105.55705) + (xy 122.848 105.560658) + (xy 122.848 105.674069) + (xy 122.851641 105.682859) + (xy 122.860431 105.6865) + (xy 124.414569 105.6865) + (xy 124.423359 105.682859) + (xy 124.427 105.674069) + (xy 124.427 105.560691) + (xy 124.426782 105.557012) + (xy 124.42468 105.539353) + (xy 124.422222 105.530407) + (xy 124.384579 105.445661) + (xy 124.378154 105.436312) + (xy 124.313289 105.37156) + (xy 124.303931 105.365152) + (xy 124.230006 105.33247) + (xy 124.196988 105.297857) + (xy 124.198115 105.250035) + (xy 124.229907 105.218188) + (xy 124.304628 105.184999) + (xy 124.304629 105.184998) + (xy 124.3099 105.182657) + (xy 124.382935 105.109494) + (xy 124.409915 105.048467) + (xy 124.422835 105.019244) + (xy 124.422836 105.019241) + (xy 124.424735 105.014945) + (xy 124.425279 105.010278) + (xy 124.42528 105.010275) + (xy 124.426716 104.997952) + (xy 124.4275 104.99123) + (xy 124.4275 104.60877) + (xy 124.427027 104.60479) + (xy 124.425349 104.590694) + (xy 124.424621 104.584576) + (xy 124.399878 104.528871) + (xy 124.398668 104.481051) + (xy 124.431626 104.446381) + (xy 124.456997 104.441) + (xy 125.324376 104.441) + (xy 125.36857 104.459306) + (xy 125.386876 104.5035) + (xy 125.380951 104.530061) + (xy 125.366543 104.56075) + (xy 125.338868 104.619695) + (xy 125.338867 104.619698) + (xy 125.336976 104.623726) + (xy 125.318136 104.744724) + (xy 125.318713 104.749137) + (xy 125.318713 104.749138) + (xy 125.33251 104.854647) + (xy 125.334014 104.866145) + (xy 125.341185 104.882443) + (xy 125.341244 104.882813) + (xy 125.342007 104.884311) + (xy 125.344031 104.88891) + (xy 125.344031 104.888911) + (xy 125.380812 104.9725) + (xy 125.383333 104.97823) + (xy 125.395787 104.993046) + (xy 125.398029 104.995713) + (xy 125.400157 104.998434) + (xy 125.402292 105.002625) + (xy 125.410081 105.010414) + (xy 125.413729 105.014391) + (xy 125.462127 105.071968) + (xy 125.485399 105.087459) + (xy 125.491836 105.092733) + (xy 125.493899 105.094232) + (xy 125.497375 105.097708) + (xy 125.501753 105.099939) + (xy 125.501756 105.099941) + (xy 125.50873 105.103494) + (xy 125.514977 105.107148) + (xy 125.564064 105.139823) + (xy 125.568313 105.141151) + (xy 125.568314 105.141151) + (xy 125.600296 105.151143) + (xy 125.610027 105.155109) + (xy 125.612799 105.156521) + (xy 125.612803 105.156522) + (xy 125.617187 105.158756) + (xy 125.627852 105.160445) + (xy 125.636713 105.16252) + (xy 125.676696 105.175012) + (xy 125.676699 105.175012) + (xy 125.680948 105.17634) + (xy 125.730069 105.177241) + (xy 125.738683 105.177999) + (xy 125.74514 105.179022) + (xy 125.745144 105.179022) + (xy 125.75 105.179791) + (xy 125.756947 105.17869) + (xy 125.767853 105.177933) + (xy 125.803383 105.178584) + (xy 125.863532 105.162185) + (xy 125.87019 105.160755) + (xy 125.872147 105.160445) + (xy 125.882813 105.158756) + (xy 125.887196 105.156522) + (xy 125.891875 105.155002) + (xy 125.891878 105.15501) + (xy 125.896727 105.153136) + (xy 125.921527 105.146375) + (xy 125.958415 105.123726) + (xy 125.985297 105.10722) + (xy 126.032537 105.099695) + (xy 126.071261 105.127778) + (xy 126.079756 105.170096) + (xy 126.068136 105.244724) + (xy 126.068713 105.249137) + (xy 126.068713 105.249138) + (xy 126.082655 105.355751) + (xy 126.084014 105.366145) + (xy 126.091185 105.382443) + (xy 126.091244 105.382813) + (xy 126.092007 105.384311) + (xy 126.094031 105.38891) + (xy 126.094031 105.388911) + (xy 126.130812 105.4725) + (xy 126.133333 105.47823) + (xy 126.147273 105.494814) + (xy 126.148029 105.495713) + (xy 126.150157 105.498434) + (xy 126.152292 105.502625) + (xy 126.160081 105.510414) + (xy 126.16373 105.514392) + (xy 126.200894 105.558604) + (xy 126.212127 105.571968) + (xy 126.235399 105.587459) + (xy 126.241836 105.592733) + (xy 126.243899 105.594232) + (xy 126.247375 105.597708) + (xy 126.251753 105.599939) + (xy 126.251756 105.599941) + (xy 126.25873 105.603494) + (xy 126.264977 105.607148) + (xy 126.314064 105.639823) + (xy 126.318313 105.641151) + (xy 126.318314 105.641151) + (xy 126.350296 105.651143) + (xy 126.360027 105.655109) + (xy 126.362799 105.656521) + (xy 126.362803 105.656522) + (xy 126.367187 105.658756) + (xy 126.377852 105.660445) + (xy 126.386713 105.66252) + (xy 126.426696 105.675012) + (xy 126.426699 105.675012) + (xy 126.430948 105.67634) + (xy 126.480069 105.677241) + (xy 126.488683 105.677999) + (xy 126.49514 105.679022) + (xy 126.495144 105.679022) + (xy 126.5 105.679791) + (xy 126.506947 105.67869) + (xy 126.517853 105.677933) + (xy 126.553383 105.678584) + (xy 126.613532 105.662185) + (xy 126.62019 105.660755) + (xy 126.622147 105.660445) + (xy 126.632813 105.658756) + (xy 126.637196 105.656522) + (xy 126.641875 105.655002) + (xy 126.641878 105.65501) + (xy 126.646727 105.653136) + (xy 126.671527 105.646375) + (xy 126.682824 105.639439) + (xy 126.739709 105.604511) + (xy 126.744037 105.602085) + (xy 126.74824 105.599944) + (xy 126.748248 105.599938) + (xy 126.752625 105.597708) + (xy 126.755427 105.594906) + (xy 126.756264 105.594346) + (xy 126.758891 105.592733) + (xy 126.775881 105.582301) + (xy 126.858058 105.491513) + (xy 126.861578 105.484249) + (xy 126.865454 105.476248) + (xy 126.901198 105.444458) + (xy 126.9217 105.441) + (xy 127.470881 105.441) + (xy 127.515075 105.459306) + (xy 127.533381 105.5035) + (xy 127.522847 105.538223) + (xy 127.484249 105.595988) + (xy 127.483048 105.602024) + (xy 127.483048 105.602025) + (xy 127.473994 105.647546) + (xy 127.4725 105.655056) + (xy 127.4725 105.844944) + (xy 127.473099 105.847954) + (xy 127.473099 105.847957) + (xy 127.479959 105.882443) + (xy 127.484249 105.904012) + (xy 127.495664 105.921095) + (xy 127.525486 105.965726) + (xy 127.534819 106.012642) + (xy 127.525487 106.035173) + (xy 127.488141 106.091067) + (xy 127.48352 106.102221) + (xy 127.473599 106.152096) + (xy 127.473 106.158177) + (xy 127.473 106.174069) + (xy 127.476641 106.182859) + (xy 127.485431 106.1865) + (xy 129.189568 106.1865) + (xy 129.198358 106.182859) + (xy 129.201999 106.174069) + (xy 129.201999 106.158179) + (xy 129.2014 106.152094) + (xy 129.19148 106.102224) + (xy 129.186858 106.091066) + (xy 129.151551 106.038223) + (xy 129.142219 105.991306) + (xy 129.168795 105.951533) + (xy 129.203518 105.941) + (xy 129.824376 105.941) + (xy 129.86857 105.959306) + (xy 129.886876 106.0035) + (xy 129.880951 106.030061) + (xy 129.867133 106.059494) + (xy 129.838868 106.119695) + (xy 129.838867 106.119698) + (xy 129.836976 106.123726) + (xy 129.818136 106.244724) + (xy 129.818713 106.249137) + (xy 129.818713 106.249138) + (xy 129.832655 106.355751) + (xy 129.834014 106.366145) + (xy 129.835809 106.370224) + (xy 129.839286 106.378126) + (xy 129.841185 106.382443) + (xy 129.841244 106.382813) + (xy 129.842007 106.384311) + (xy 129.844031 106.38891) + (xy 129.844031 106.388911) + (xy 129.871448 106.451219) + (xy 129.883333 106.47823) + (xy 129.897198 106.494724) + (xy 129.898029 106.495713) + (xy 129.900157 106.498434) + (xy 129.902292 106.502625) + (xy 129.910081 106.510414) + (xy 129.91373 106.514392) + (xy 129.953546 106.561759) + (xy 129.962127 106.571968) + (xy 129.985399 106.587459) + (xy 129.991836 106.592733) + (xy 129.993899 106.594232) + (xy 129.997375 106.597708) + (xy 130.001753 106.599939) + (xy 130.001756 106.599941) + (xy 130.00873 106.603494) + (xy 130.014977 106.607148) + (xy 130.064064 106.639823) + (xy 130.068313 106.641151) + (xy 130.068314 106.641151) + (xy 130.100296 106.651143) + (xy 130.110027 106.655109) + (xy 130.112799 106.656521) + (xy 130.112803 106.656522) + (xy 130.117187 106.658756) + (xy 130.127852 106.660445) + (xy 130.136713 106.66252) + (xy 130.176696 106.675012) + (xy 130.176699 106.675012) + (xy 130.180948 106.67634) + (xy 130.230069 106.677241) + (xy 130.238683 106.677999) + (xy 130.24514 106.679022) + (xy 130.245144 106.679022) + (xy 130.25 106.679791) + (xy 130.256947 106.67869) + (xy 130.267853 106.677933) + (xy 130.303383 106.678584) + (xy 130.363532 106.662185) + (xy 130.37019 106.660755) + (xy 130.372147 106.660445) + (xy 130.382813 106.658756) + (xy 130.387196 106.656522) + (xy 130.391875 106.655002) + (xy 130.391878 106.65501) + (xy 130.396727 106.653136) + (xy 130.421527 106.646375) + (xy 130.432824 106.639439) + (xy 130.489709 106.604511) + (xy 130.494037 106.602085) + (xy 130.49824 106.599944) + (xy 130.498248 106.599938) + (xy 130.502625 106.597708) + (xy 130.505427 106.594906) + (xy 130.506264 106.594346) + (xy 130.508891 106.592733) + (xy 130.525881 106.582301) + (xy 130.608058 106.491513) + (xy 130.661451 106.381311) + (xy 130.663317 106.370224) + (xy 130.678144 106.282086) + (xy 130.681767 106.260552) + (xy 130.681896 106.25) + (xy 130.664536 106.128781) + (xy 130.613852 106.017307) + (xy 130.599199 106.000302) + (xy 130.597708 105.997375) + (xy 130.5919 105.991567) + (xy 130.588746 105.98817) + (xy 130.557178 105.951534) + (xy 130.533918 105.924539) + (xy 130.513741 105.911461) + (xy 130.510155 105.908559) + (xy 130.510081 105.908661) + (xy 130.506106 105.905773) + (xy 130.502625 105.902292) + (xy 130.491343 105.896543) + (xy 130.485735 105.893308) + (xy 130.469505 105.882788) + (xy 130.442377 105.843389) + (xy 130.441 105.830342) + (xy 130.441 105.755899) + (xy 130.441043 105.706844) + (xy 130.441043 105.706596) + (xy 130.441007 105.70652) + (xy 130.441 105.706461) + (xy 130.441 104.2535) + (xy 130.459306 104.209306) + (xy 130.5035 104.191) + (xy 134.4965 104.191) + (xy 134.540694 104.209306) + (xy 134.559 104.2535) + (xy 134.559 106.080525) + (xy 134.540694 106.124719) + (xy 134.529855 106.13338) + (xy 134.51281 106.144135) + (xy 134.507842 106.146959) + (xy 134.501757 106.150059) + (xy 134.501756 106.15006) + (xy 134.497375 106.152292) + (xy 134.493897 106.15577) + (xy 134.492445 106.156825) + (xy 134.489058 106.15912) + (xy 134.47008 106.171095) + (xy 134.467137 106.174427) + (xy 134.467135 106.174429) + (xy 134.407156 106.242342) + (xy 134.406032 106.243538) + (xy 134.405775 106.243892) + (xy 134.405554 106.244113) + (xy 134.405405 106.244204) + (xy 134.404504 106.245163) + (xy 134.402292 106.247375) + (xy 134.401509 106.246592) + (xy 134.400362 106.247296) + (xy 134.401721 106.248496) + (xy 134.389018 106.262879) + (xy 134.387127 106.266907) + (xy 134.338868 106.369695) + (xy 134.338867 106.369698) + (xy 134.336976 106.373726) + (xy 134.318136 106.494724) + (xy 134.318713 106.499137) + (xy 134.318713 106.499138) + (xy 134.332322 106.603208) + (xy 134.334014 106.616145) + (xy 134.335809 106.620224) + (xy 134.339286 106.628126) + (xy 134.341185 106.632443) + (xy 134.341244 106.632813) + (xy 134.342007 106.634311) + (xy 134.344031 106.63891) + (xy 134.344031 106.638911) + (xy 134.372449 106.703494) + (xy 134.383333 106.72823) + (xy 134.397198 106.744724) + (xy 134.398029 106.745713) + (xy 134.400157 106.748434) + (xy 134.402292 106.752625) + (xy 134.410081 106.760414) + (xy 134.41373 106.764392) + (xy 134.45807 106.817141) + (xy 134.462127 106.821968) + (xy 134.485399 106.837459) + (xy 134.491836 106.842733) + (xy 134.493899 106.844232) + (xy 134.497375 106.847708) + (xy 134.501753 106.849939) + (xy 134.501756 106.849941) + (xy 134.50873 106.853494) + (xy 134.514977 106.857148) + (xy 134.564064 106.889823) + (xy 134.568313 106.891151) + (xy 134.568314 106.891151) + (xy 134.600296 106.901143) + (xy 134.610027 106.905109) + (xy 134.612799 106.906521) + (xy 134.612803 106.906522) + (xy 134.617187 106.908756) + (xy 134.627852 106.910445) + (xy 134.636713 106.91252) + (xy 134.676696 106.925012) + (xy 134.676699 106.925012) + (xy 134.680948 106.92634) + (xy 134.730069 106.927241) + (xy 134.738683 106.927999) + (xy 134.74514 106.929022) + (xy 134.745144 106.929022) + (xy 134.75 106.929791) + (xy 134.756947 106.92869) + (xy 134.767853 106.927933) + (xy 134.803383 106.928584) + (xy 134.808019 106.92732) + (xy 134.850968 106.915611) + (xy 134.898421 106.921648) + (xy 134.911601 106.931716) + (xy 135.040694 107.060809) + (xy 135.059 107.105003) + (xy 135.059 107.296482) + (xy 135.040694 107.340676) + (xy 134.9965 107.358982) + (xy 134.961777 107.348449) + (xy 134.908933 107.313141) + (xy 134.897779 107.30852) + (xy 134.847904 107.298599) + (xy 134.841823 107.298) + (xy 134.825931 107.298) + (xy 134.817141 107.301641) + (xy 134.8135 107.310431) + (xy 134.8135 109.014568) + (xy 134.817141 109.023358) + (xy 134.825931 109.026999) + (xy 134.841821 109.026999) + (xy 134.847906 109.0264) + (xy 134.897776 109.01648) + (xy 134.908934 109.011858) + (xy 134.961777 108.976551) + (xy 135.008694 108.967219) + (xy 135.048467 108.993795) + (xy 135.059 109.028518) + (xy 135.059 111.830525) + (xy 135.040694 111.874719) + (xy 135.029855 111.88338) + (xy 135.01281 111.894135) + (xy 135.007842 111.896959) + (xy 135.001757 111.900059) + (xy 135.001756 111.90006) + (xy 134.997375 111.902292) + (xy 134.993897 111.90577) + (xy 134.992445 111.906825) + (xy 134.989059 111.90912) + (xy 134.988842 111.909257) + (xy 134.97008 111.921095) + (xy 134.967137 111.924427) + (xy 134.967135 111.924429) + (xy 134.907156 111.992342) + (xy 134.906032 111.993538) + (xy 134.905775 111.993892) + (xy 134.905554 111.994113) + (xy 134.905405 111.994204) + (xy 134.904504 111.995163) + (xy 134.902292 111.997375) + (xy 134.901509 111.996592) + (xy 134.900362 111.997296) + (xy 134.901721 111.998496) + (xy 134.889018 112.012879) + (xy 134.878762 112.034724) + (xy 134.838868 112.119695) + (xy 134.838867 112.119698) + (xy 134.836976 112.123726) + (xy 134.818136 112.244724) + (xy 134.818713 112.249137) + (xy 134.818713 112.249138) + (xy 134.833298 112.360671) + (xy 134.834014 112.366145) + (xy 134.841185 112.382443) + (xy 134.841244 112.382813) + (xy 134.842007 112.384311) + (xy 134.844031 112.38891) + (xy 134.844031 112.388911) + (xy 134.880397 112.471557) + (xy 134.883333 112.47823) + (xy 134.895575 112.492794) + (xy 134.898029 112.495713) + (xy 134.900157 112.498434) + (xy 134.902292 112.502625) + (xy 134.910081 112.510414) + (xy 134.91373 112.514392) + (xy 134.947187 112.554194) + (xy 134.962127 112.571968) + (xy 134.985399 112.587459) + (xy 134.991836 112.592733) + (xy 134.993899 112.594232) + (xy 134.997375 112.597708) + (xy 135.001753 112.599939) + (xy 135.001756 112.599941) + (xy 135.00873 112.603494) + (xy 135.014983 112.607152) + (xy 135.02846 112.616123) + (xy 135.031134 112.617903) + (xy 135.057778 112.657631) + (xy 135.059 112.669929) + (xy 135.059 113.206768) + (xy 135.05775 113.214107) + (xy 135.058477 113.21419) + (xy 135.05768 113.221181) + (xy 135.055348 113.227822) + (xy 135.056126 113.234815) + (xy 135.056126 113.234816) + (xy 135.058617 113.257197) + (xy 135.059 113.26411) + (xy 135.059 113.271533) + (xy 135.060581 113.278465) + (xy 135.061757 113.285418) + (xy 135.064986 113.314429) + (xy 135.068719 113.320393) + (xy 135.070094 113.324341) + (xy 135.071903 113.3281) + (xy 135.073468 113.334959) + (xy 135.077853 113.340461) + (xy 135.077853 113.340462) + (xy 135.091648 113.357773) + (xy 135.095744 113.363559) + (xy 135.099596 113.369711) + (xy 135.104809 113.374924) + (xy 135.109494 113.380168) + (xy 135.119966 113.393309) + (xy 135.127775 113.403109) + (xy 135.134114 113.406167) + (xy 135.139615 113.410558) + (xy 135.139189 113.411092) + (xy 135.145353 113.415468) + (xy 137.224844 115.494959) + (xy 137.24315 115.539153) + (xy 137.234777 115.570403) + (xy 137.19788 115.634311) + (xy 137.193948 115.641122) + (xy 137.136947 115.816552) + (xy 137.117666 116) + (xy 137.136947 116.183448) + (xy 137.137959 116.186562) + (xy 137.137959 116.186563) + (xy 137.146985 116.214343) + (xy 137.193948 116.358878) + (xy 137.195583 116.36171) + (xy 137.195584 116.361712) + (xy 137.240062 116.43875) + (xy 137.286177 116.518623) + (xy 137.409603 116.655702) + (xy 137.558833 116.764124) + (xy 137.727344 116.83915) + (xy 137.730548 116.839831) + (xy 137.90457 116.87682) + (xy 137.904574 116.87682) + (xy 137.907771 116.8775) + (xy 138.092229 116.8775) + (xy 138.095426 116.87682) + (xy 138.09543 116.87682) + (xy 138.269452 116.839831) + (xy 138.272656 116.83915) + (xy 138.441167 116.764124) + (xy 138.590397 116.655702) + (xy 138.713823 116.518623) + (xy 138.759938 116.43875) + (xy 138.804416 116.361712) + (xy 138.804417 116.36171) + (xy 138.806052 116.358878) + (xy 138.853015 116.214343) + (xy 138.862041 116.186563) + (xy 138.862041 116.186562) + (xy 138.863053 116.183448) + (xy 138.882334 116) + (xy 138.863053 115.816552) + (xy 138.806052 115.641122) + (xy 138.801473 115.63319) + (xy 138.737105 115.521703) + (xy 138.713823 115.481377) + (xy 138.590397 115.344298) + (xy 138.441167 115.235876) + (xy 138.272656 115.16085) + (xy 138.221892 115.15006) + (xy 138.09543 115.12318) + (xy 138.095426 115.12318) + (xy 138.092229 115.1225) + (xy 137.907771 115.1225) + (xy 137.904574 115.12318) + (xy 137.90457 115.12318) + (xy 137.778108 115.15006) + (xy 137.727344 115.16085) + (xy 137.56151 115.234684) + (xy 137.513692 115.235936) + (xy 137.491896 115.221781) + (xy 135.935767 113.665652) + (xy 137.429299 113.665652) + (xy 137.431516 113.671004) + (xy 137.556432 113.761761) + (xy 137.562076 113.76502) + (xy 137.72451 113.83734) + (xy 137.730703 113.839352) + (xy 137.904623 113.87632) + (xy 137.911095 113.877) + (xy 138.088905 113.877) + (xy 138.095377 113.87632) + (xy 138.269297 113.839352) + (xy 138.27549 113.83734) + (xy 138.437924 113.76502) + (xy 138.443568 113.761761) + (xy 138.565793 113.672959) + (xy 138.570764 113.664847) + (xy 138.569411 113.659213) + (xy 138.008791 113.098593) + (xy 138 113.094952) + (xy 137.991209 113.098593) + (xy 137.43294 113.656862) + (xy 137.429299 113.665652) + (xy 135.935767 113.665652) + (xy 135.459306 113.189191) + (xy 135.441 113.144997) + (xy 135.441 113.003254) + (xy 137.118511 113.003254) + (xy 137.137097 113.180087) + (xy 137.138451 113.186458) + (xy 137.193395 113.35556) + (xy 137.196045 113.361511) + (xy 137.284946 113.51549) + (xy 137.288773 113.520758) + (xy 137.32815 113.564491) + (xy 137.335867 113.568171) + (xy 137.345863 113.564334) + (xy 137.901407 113.00879) + (xy 137.905048 113) + (xy 138.094952 113) + (xy 138.098593 113.00879) + (xy 138.654742 113.564939) + (xy 138.662642 113.568211) + (xy 138.672421 113.563857) + (xy 138.711227 113.520758) + (xy 138.715054 113.51549) + (xy 138.803955 113.361511) + (xy 138.806605 113.35556) + (xy 138.861549 113.186458) + (xy 138.862903 113.180087) + (xy 138.881489 113.003254) + (xy 138.881489 112.996746) + (xy 138.862903 112.819913) + (xy 138.861549 112.813542) + (xy 138.806605 112.64444) + (xy 138.803955 112.638489) + (xy 138.715054 112.48451) + (xy 138.711227 112.479242) + (xy 138.67185 112.435509) + (xy 138.664133 112.431829) + (xy 138.654137 112.435666) + (xy 138.098593 112.99121) + (xy 138.094952 113) + (xy 137.905048 113) + (xy 137.901407 112.99121) + (xy 137.345258 112.435061) + (xy 137.337358 112.431789) + (xy 137.327579 112.436143) + (xy 137.288773 112.479242) + (xy 137.284946 112.48451) + (xy 137.196045 112.638489) + (xy 137.193395 112.64444) + (xy 137.138451 112.813542) + (xy 137.137097 112.819913) + (xy 137.118511 112.996746) + (xy 137.118511 113.003254) + (xy 135.441 113.003254) + (xy 135.441 112.669384) + (xy 135.459306 112.62519) + (xy 135.470797 112.616123) + (xy 135.488686 112.605139) + (xy 135.489713 112.604508) + (xy 135.494034 112.602085) + (xy 135.502625 112.597708) + (xy 135.505427 112.594906) + (xy 135.506264 112.594346) + (xy 135.508891 112.592733) + (xy 135.525881 112.582301) + (xy 135.608058 112.491513) + (xy 135.661451 112.381311) + (xy 135.6625 112.375081) + (xy 135.669217 112.335154) + (xy 137.429235 112.335154) + (xy 137.430587 112.340785) + (xy 137.991209 112.901407) + (xy 138 112.905048) + (xy 138.008791 112.901407) + (xy 138.56706 112.343138) + (xy 138.570701 112.334348) + (xy 138.568484 112.328996) + (xy 138.443568 112.238239) + (xy 138.437924 112.23498) + (xy 138.27549 112.16266) + (xy 138.269297 112.160648) + (xy 138.095377 112.12368) + (xy 138.088905 112.123) + (xy 137.911095 112.123) + (xy 137.904623 112.12368) + (xy 137.730703 112.160648) + (xy 137.72451 112.16266) + (xy 137.562073 112.234982) + (xy 137.55644 112.238234) + (xy 137.434206 112.327042) + (xy 137.429235 112.335154) + (xy 135.669217 112.335154) + (xy 135.677528 112.28575) + (xy 135.681767 112.260552) + (xy 135.681896 112.25) + (xy 135.664536 112.128781) + (xy 135.613852 112.017307) + (xy 135.599199 112.000302) + (xy 135.597708 111.997375) + (xy 135.5919 111.991567) + (xy 135.588746 111.98817) + (xy 135.545054 111.937463) + (xy 135.533918 111.924539) + (xy 135.513741 111.911461) + (xy 135.510155 111.908559) + (xy 135.510081 111.908661) + (xy 135.506106 111.905773) + (xy 135.502625 111.902292) + (xy 135.491343 111.896543) + (xy 135.485735 111.893308) + (xy 135.469505 111.882788) + (xy 135.442377 111.843389) + (xy 135.441 111.830342) + (xy 135.441 109.024442) + (xy 135.459306 108.980248) + (xy 135.463411 108.976879) + (xy 135.465876 108.974414) + (xy 135.470994 108.970994) + (xy 135.515751 108.904012) + (xy 135.52343 108.865405) + (xy 135.526901 108.847957) + (xy 135.526901 108.847954) + (xy 135.5275 108.844944) + (xy 135.5275 107.480056) + (xy 135.515751 107.420988) + (xy 135.470994 107.354006) + (xy 135.465876 107.350586) + (xy 135.461524 107.346234) + (xy 135.463352 107.344406) + (xy 135.442201 107.312752) + (xy 135.441 107.300558) + (xy 135.441 107.043234) + (xy 135.442253 107.035893) + (xy 135.441524 107.03581) + (xy 135.442321 107.028819) + (xy 135.444653 107.022178) + (xy 135.443807 107.014569) + (xy 135.441383 106.992794) + (xy 135.441 106.985881) + (xy 135.441 106.978467) + (xy 135.439421 106.971544) + (xy 135.438245 106.964591) + (xy 135.435015 106.935571) + (xy 135.431281 106.929607) + (xy 135.42991 106.92567) + (xy 135.428097 106.921904) + (xy 135.426532 106.915041) + (xy 135.408354 106.892229) + (xy 135.40426 106.886446) + (xy 135.402284 106.88329) + (xy 135.402279 106.883284) + (xy 135.400404 106.880289) + (xy 135.395191 106.875076) + (xy 135.390506 106.869832) + (xy 135.376612 106.852396) + (xy 135.376611 106.852396) + (xy 135.372225 106.846891) + (xy 135.365886 106.843833) + (xy 135.360385 106.839442) + (xy 135.360811 106.838908) + (xy 135.354647 106.834532) + (xy 135.182793 106.662678) + (xy 135.164487 106.618484) + (xy 135.165353 106.608115) + (xy 135.181767 106.510552) + (xy 135.181896 106.5) + (xy 135.164536 106.378781) + (xy 135.113852 106.267307) + (xy 135.099199 106.250302) + (xy 135.097708 106.247375) + (xy 135.0919 106.241567) + (xy 135.088746 106.23817) + (xy 135.036826 106.177914) + (xy 135.033918 106.174539) + (xy 135.013741 106.161461) + (xy 135.010155 106.158559) + (xy 135.010081 106.158661) + (xy 135.006106 106.155773) + (xy 135.002625 106.152292) + (xy 134.991343 106.146543) + (xy 134.985735 106.143308) + (xy 134.969505 106.132788) + (xy 134.942377 106.093389) + (xy 134.941 106.080342) + (xy 134.941 104.005899) + (xy 134.941043 103.956844) + (xy 134.941043 103.956596) + (xy 134.941007 103.95652) + (xy 134.941 103.956461) + (xy 134.941 102.669384) + (xy 134.959306 102.62519) + (xy 134.970797 102.616123) + (xy 134.989712 102.604509) + (xy 134.994034 102.602085) + (xy 135.002625 102.597708) + (xy 135.005427 102.594906) + (xy 135.006264 102.594346) + (xy 135.011316 102.591244) + (xy 135.025881 102.582301) + (xy 135.108058 102.491513) + (xy 135.161451 102.381311) + (xy 135.163317 102.370224) + (xy 135.181367 102.262928) + (xy 135.181767 102.260552) + (xy 135.181896 102.25) + (xy 135.171022 102.174069) + (xy 135.798 102.174069) + (xy 135.801641 102.182859) + (xy 135.810431 102.1865) + (xy 136.586569 102.1865) + (xy 136.595359 102.182859) + (xy 136.599 102.174069) + (xy 136.726 102.174069) + (xy 136.729641 102.182859) + (xy 136.738431 102.1865) + (xy 137.514568 102.1865) + (xy 137.523358 102.182859) + (xy 137.526999 102.174069) + (xy 137.526999 102.158179) + (xy 137.5264 102.152094) + (xy 137.51648 102.102224) + (xy 137.511857 102.091063) + (xy 137.474213 102.034722) + (xy 137.464881 101.987806) + (xy 137.474213 101.965278) + (xy 137.511858 101.908936) + (xy 137.51648 101.897779) + (xy 137.526401 101.847904) + (xy 137.527 101.841823) + (xy 137.527 101.825931) + (xy 137.523359 101.817141) + (xy 137.514569 101.8135) + (xy 136.738431 101.8135) + (xy 136.729641 101.817141) + (xy 136.726 101.825931) + (xy 136.726 102.174069) + (xy 136.599 102.174069) + (xy 136.599 101.825931) + (xy 136.595359 101.817141) + (xy 136.586569 101.8135) + (xy 135.810432 101.8135) + (xy 135.801642 101.817141) + (xy 135.798001 101.825931) + (xy 135.798001 101.841821) + (xy 135.7986 101.847906) + (xy 135.80852 101.897776) + (xy 135.813143 101.908937) + (xy 135.850787 101.965278) + (xy 135.860119 102.012194) + (xy 135.850787 102.034722) + (xy 135.813142 102.091064) + (xy 135.80852 102.102221) + (xy 135.798599 102.152096) + (xy 135.798 102.158177) + (xy 135.798 102.174069) + (xy 135.171022 102.174069) + (xy 135.166061 102.139432) + (xy 135.177917 102.093091) + (xy 135.183736 102.086379) + (xy 135.697749 101.572366) + (xy 135.741943 101.55406) + (xy 135.786137 101.572366) + (xy 135.804443 101.61656) + (xy 135.803242 101.628753) + (xy 135.798599 101.652094) + (xy 135.798 101.658177) + (xy 135.798 101.674069) + (xy 135.801641 101.682859) + (xy 135.810431 101.6865) + (xy 137.514568 101.6865) + (xy 137.523358 101.682859) + (xy 137.526999 101.674069) + (xy 137.526999 101.658179) + (xy 137.5264 101.652094) + (xy 137.51648 101.602224) + (xy 137.511858 101.591066) + (xy 137.474513 101.535173) + (xy 137.465181 101.488256) + (xy 137.474514 101.465726) + (xy 137.488195 101.445252) + (xy 137.515751 101.404012) + (xy 137.518024 101.392586) + (xy 137.526901 101.347957) + (xy 137.526901 101.347954) + (xy 137.5275 101.344944) + (xy 137.5275 101.155056) + (xy 137.518438 101.109494) + (xy 137.516952 101.102025) + (xy 137.516952 101.102024) + (xy 137.515751 101.095988) + (xy 137.470994 101.029006) + (xy 137.404012 100.984249) + (xy 137.397976 100.983048) + (xy 137.397975 100.983048) + (xy 137.347957 100.973099) + (xy 137.347954 100.973099) + (xy 137.344944 100.9725) + (xy 135.980056 100.9725) + (xy 135.977046 100.973099) + (xy 135.977043 100.973099) + (xy 135.927025 100.983048) + (xy 135.927024 100.983048) + (xy 135.920988 100.984249) + (xy 135.854006 101.029006) + (xy 135.850587 101.034123) + (xy 135.846234 101.038476) + (xy 135.844406 101.036648) + (xy 135.812752 101.057799) + (xy 135.800558 101.059) + (xy 135.793234 101.059) + (xy 135.785893 101.057747) + (xy 135.78581 101.058476) + (xy 135.778819 101.057679) + (xy 135.772178 101.055347) + (xy 135.765186 101.056125) + (xy 135.765184 101.056125) + (xy 135.742795 101.058617) + (xy 135.735882 101.059) + (xy 135.728467 101.059) + (xy 135.721538 101.06058) + (xy 135.714595 101.061755) + (xy 135.685572 101.064985) + (xy 135.679606 101.06872) + (xy 135.675667 101.070092) + (xy 135.671904 101.071903) + (xy 135.665041 101.073468) + (xy 135.659537 101.077854) + (xy 135.642227 101.091648) + (xy 135.636441 101.095744) + (xy 135.633285 101.09772) + (xy 135.630289 101.099596) + (xy 135.625076 101.104809) + (xy 135.619832 101.109494) + (xy 135.596891 101.127775) + (xy 135.593833 101.134114) + (xy 135.589442 101.139615) + (xy 135.588908 101.139189) + (xy 135.584532 101.145353) + (xy 134.911953 101.817932) + (xy 134.867759 101.836238) + (xy 134.849851 101.833618) + (xy 134.833008 101.828581) + (xy 134.813838 101.822848) + (xy 134.769496 101.822577) + (xy 134.760103 101.821809) + (xy 134.754857 101.820978) + (xy 134.754856 101.820978) + (xy 134.75 101.820209) + (xy 134.741373 101.821576) + (xy 134.73122 101.822344) + (xy 134.712836 101.822231) + (xy 134.695838 101.822127) + (xy 134.695836 101.822127) + (xy 134.691385 101.8221) + (xy 134.637011 101.837641) + (xy 134.629623 101.839275) + (xy 134.617187 101.841244) + (xy 134.612804 101.843477) + (xy 134.61187 101.843781) + (xy 134.602156 101.847603) + (xy 134.600916 101.847957) + (xy 134.577929 101.854526) + (xy 134.577927 101.854527) + (xy 134.573644 101.855751) + (xy 134.514119 101.893309) + (xy 134.512819 101.894129) + (xy 134.507842 101.896959) + (xy 134.501757 101.900059) + (xy 134.501756 101.90006) + (xy 134.497375 101.902292) + (xy 134.493897 101.90577) + (xy 134.492445 101.906825) + (xy 134.489059 101.90912) + (xy 134.487794 101.909918) + (xy 134.47008 101.921095) + (xy 134.467137 101.924427) + (xy 134.467135 101.924429) + (xy 134.407156 101.992342) + (xy 134.406032 101.993538) + (xy 134.405775 101.993892) + (xy 134.405554 101.994113) + (xy 134.405405 101.994204) + (xy 134.404504 101.995163) + (xy 134.402292 101.997375) + (xy 134.401509 101.996592) + (xy 134.400362 101.997296) + (xy 134.401721 101.998496) + (xy 134.389018 102.012879) + (xy 134.378763 102.034722) + (xy 134.338868 102.119695) + (xy 134.338867 102.119698) + (xy 134.336976 102.123726) + (xy 134.318136 102.244724) + (xy 134.318713 102.249137) + (xy 134.318713 102.249138) + (xy 134.332512 102.354659) + (xy 134.334014 102.366145) + (xy 134.341185 102.382443) + (xy 134.341244 102.382813) + (xy 134.342007 102.384311) + (xy 134.344031 102.38891) + (xy 134.344031 102.388911) + (xy 134.380812 102.4725) + (xy 134.383333 102.47823) + (xy 134.397272 102.494813) + (xy 134.398029 102.495713) + (xy 134.400157 102.498434) + (xy 134.402292 102.502625) + (xy 134.410081 102.510414) + (xy 134.413729 102.514391) + (xy 134.462127 102.571968) + (xy 134.485399 102.587459) + (xy 134.491836 102.592733) + (xy 134.493899 102.594232) + (xy 134.497375 102.597708) + (xy 134.501753 102.599939) + (xy 134.501756 102.599941) + (xy 134.50873 102.603494) + (xy 134.514983 102.607152) + (xy 134.52846 102.616123) + (xy 134.531134 102.617903) + (xy 134.557778 102.657631) + (xy 134.559 102.669929) + (xy 134.559 103.7465) + (xy 134.540694 103.790694) + (xy 134.4965 103.809) + (xy 130.5035 103.809) + (xy 130.459306 103.790694) + (xy 130.441 103.7465) + (xy 130.441 102.669384) + (xy 130.459306 102.62519) + (xy 130.470797 102.616123) + (xy 130.489712 102.604509) + (xy 130.494034 102.602085) + (xy 130.502625 102.597708) + (xy 130.505427 102.594906) + (xy 130.506264 102.594346) + (xy 130.511316 102.591244) + (xy 130.525881 102.582301) + (xy 130.608058 102.491513) + (xy 130.661451 102.381311) + (xy 130.663317 102.370224) + (xy 130.681367 102.262928) + (xy 130.681767 102.260552) + (xy 130.681896 102.25) + (xy 130.664536 102.128781) + (xy 130.645378 102.086645) + (xy 130.64375 102.038837) + (xy 130.676404 102.003881) + (xy 130.724212 102.002253) + (xy 130.746467 102.016582) + (xy 130.816772 102.086887) + (xy 130.835078 102.131081) + (xy 130.834334 102.140691) + (xy 130.818136 102.244724) + (xy 130.818713 102.249137) + (xy 130.818713 102.249138) + (xy 130.832512 102.354659) + (xy 130.834014 102.366145) + (xy 130.841185 102.382443) + (xy 130.841244 102.382813) + (xy 130.842007 102.384311) + (xy 130.844031 102.38891) + (xy 130.844031 102.388911) + (xy 130.880812 102.4725) + (xy 130.883333 102.47823) + (xy 130.897272 102.494813) + (xy 130.898029 102.495713) + (xy 130.900157 102.498434) + (xy 130.902292 102.502625) + (xy 130.910081 102.510414) + (xy 130.913729 102.514391) + (xy 130.962127 102.571968) + (xy 130.985399 102.587459) + (xy 130.991836 102.592733) + (xy 130.993899 102.594232) + (xy 130.997375 102.597708) + (xy 131.001753 102.599939) + (xy 131.001756 102.599941) + (xy 131.00873 102.603494) + (xy 131.014977 102.607148) + (xy 131.064064 102.639823) + (xy 131.068313 102.641151) + (xy 131.068314 102.641151) + (xy 131.100296 102.651143) + (xy 131.110027 102.655109) + (xy 131.112799 102.656521) + (xy 131.112803 102.656522) + (xy 131.117187 102.658756) + (xy 131.127852 102.660445) + (xy 131.136713 102.66252) + (xy 131.176696 102.675012) + (xy 131.176699 102.675012) + (xy 131.180948 102.67634) + (xy 131.230069 102.677241) + (xy 131.238683 102.677999) + (xy 131.24514 102.679022) + (xy 131.245144 102.679022) + (xy 131.25 102.679791) + (xy 131.256947 102.67869) + (xy 131.267853 102.677933) + (xy 131.303383 102.678584) + (xy 131.363532 102.662185) + (xy 131.37019 102.660755) + (xy 131.372147 102.660445) + (xy 131.382813 102.658756) + (xy 131.387196 102.656522) + (xy 131.391875 102.655002) + (xy 131.391878 102.65501) + (xy 131.396727 102.653136) + (xy 131.421527 102.646375) + (xy 131.426521 102.643309) + (xy 131.489709 102.604511) + (xy 131.494037 102.602085) + (xy 131.49824 102.599944) + (xy 131.498248 102.599938) + (xy 131.502625 102.597708) + (xy 131.505427 102.594906) + (xy 131.506264 102.594346) + (xy 131.511316 102.591244) + (xy 131.525881 102.582301) + (xy 131.608058 102.491513) + (xy 131.661451 102.381311) + (xy 131.663317 102.370224) + (xy 131.681367 102.262928) + (xy 131.681767 102.260552) + (xy 131.681896 102.25) + (xy 131.664536 102.128781) + (xy 131.613852 102.017307) + (xy 131.599199 102.000302) + (xy 131.597708 101.997375) + (xy 131.5919 101.991567) + (xy 131.588746 101.98817) + (xy 131.536826 101.927914) + (xy 131.533918 101.924539) + (xy 131.513741 101.911461) + (xy 131.510155 101.908559) + (xy 131.510081 101.908661) + (xy 131.506106 101.905773) + (xy 131.502625 101.902292) + (xy 131.491343 101.896543) + (xy 131.485736 101.893309) + (xy 131.434893 101.860354) + (xy 131.43489 101.860353) + (xy 131.43116 101.857935) + (xy 131.426901 101.856661) + (xy 131.426898 101.85666) + (xy 131.408345 101.851112) + (xy 131.398839 101.848269) + (xy 131.388377 101.844079) + (xy 131.382813 101.841244) + (xy 131.371067 101.839384) + (xy 131.362951 101.837536) + (xy 131.34985 101.833618) + (xy 131.313838 101.822848) + (xy 131.269496 101.822577) + (xy 131.260103 101.821809) + (xy 131.254857 101.820978) + (xy 131.254856 101.820978) + (xy 131.25 101.820209) + (xy 131.241373 101.821576) + (xy 131.23122 101.822344) + (xy 131.212836 101.822231) + (xy 131.195838 101.822127) + (xy 131.195836 101.822127) + (xy 131.191385 101.8221) + (xy 131.14962 101.834037) + (xy 131.102099 101.828581) + (xy 131.088252 101.818137) + (xy 130.915628 101.645513) + (xy 130.911323 101.639439) + (xy 130.91075 101.639895) + (xy 130.906369 101.634387) + (xy 130.903322 101.628042) + (xy 130.880239 101.609582) + (xy 130.87508 101.604965) + (xy 130.869831 101.599716) + (xy 130.863828 101.595943) + (xy 130.858052 101.591838) + (xy 130.835267 101.573617) + (xy 130.828407 101.57204) + (xy 130.824647 101.570222) + (xy 130.820711 101.568844) + (xy 130.814752 101.565098) + (xy 130.807758 101.564307) + (xy 130.807757 101.564307) + (xy 130.785764 101.561821) + (xy 130.778787 101.560629) + (xy 130.771703 101.559) + (xy 130.764329 101.559) + (xy 130.757308 101.558604) + (xy 130.755627 101.558414) + (xy 130.728162 101.555309) + (xy 130.721517 101.55763) + (xy 130.714523 101.558414) + (xy 130.714447 101.557736) + (xy 130.706995 101.559) + (xy 129.204119 101.559) + (xy 129.159925 101.540694) + (xy 129.141619 101.4965) + (xy 129.152153 101.461776) + (xy 129.152441 101.461346) + (xy 129.190751 101.404012) + (xy 129.193024 101.392586) + (xy 129.201901 101.347957) + (xy 129.201901 101.347954) + (xy 129.2025 101.344944) + (xy 129.2025 101.155056) + (xy 129.193438 101.109494) + (xy 129.191952 101.102025) + (xy 129.191952 101.102024) + (xy 129.190751 101.095988) + (xy 129.145994 101.029006) + (xy 129.079012 100.984249) + (xy 129.072976 100.983048) + (xy 129.072975 100.983048) + (xy 129.022957 100.973099) + (xy 129.022954 100.973099) + (xy 129.019944 100.9725) + (xy 128.591 100.9725) + (xy 128.546806 100.954194) + (xy 128.5285 100.91) + (xy 128.5285 100.603493) + (xy 128.544663 100.561551) + (xy 128.568946 100.534724) + (xy 128.585151 100.516821) + (xy 129.473001 100.516821) + (xy 129.4736 100.522906) + (xy 129.48352 100.572776) + (xy 129.488143 100.583937) + (xy 129.525945 100.640514) + (xy 129.534486 100.649055) + (xy 129.591064 100.686858) + (xy 129.602221 100.69148) + (xy 129.652096 100.701401) + (xy 129.658177 100.702) + (xy 129.674069 100.702) + (xy 129.682859 100.698359) + (xy 129.6865 100.689569) + (xy 129.6865 100.689568) + (xy 129.8135 100.689568) + (xy 129.817141 100.698358) + (xy 129.825931 100.701999) + (xy 129.841821 100.701999) + (xy 129.847906 100.7014) + (xy 129.897776 100.69148) + (xy 129.908937 100.686857) + (xy 129.965278 100.649213) + (xy 130.012194 100.639881) + (xy 130.034722 100.649213) + (xy 130.091064 100.686858) + (xy 130.102221 100.69148) + (xy 130.152096 100.701401) + (xy 130.158177 100.702) + (xy 130.174069 100.702) + (xy 130.182859 100.698359) + (xy 130.1865 100.689569) + (xy 130.1865 99.913431) + (xy 130.182859 99.904641) + (xy 130.174069 99.901) + (xy 129.825931 99.901) + (xy 129.817141 99.904641) + (xy 129.8135 99.913431) + (xy 129.8135 100.689568) + (xy 129.6865 100.689568) + (xy 129.6865 99.913431) + (xy 129.682859 99.904641) + (xy 129.674069 99.901) + (xy 129.485432 99.901) + (xy 129.476642 99.904641) + (xy 129.473001 99.913431) + (xy 129.473001 100.516821) + (xy 128.585151 100.516821) + (xy 128.608058 100.491513) + (xy 128.661451 100.381311) + (xy 128.663317 100.370224) + (xy 128.680092 100.270509) + (xy 128.681767 100.260552) + (xy 128.681896 100.25) + (xy 128.664536 100.128781) + (xy 128.613852 100.017307) + (xy 128.599199 100.000302) + (xy 128.597708 99.997375) + (xy 128.5919 99.991567) + (xy 128.588746 99.98817) + (xy 128.536826 99.927914) + (xy 128.533918 99.924539) + (xy 128.513741 99.911461) + (xy 128.510155 99.908559) + (xy 128.510081 99.908661) + (xy 128.506106 99.905773) + (xy 128.502625 99.902292) + (xy 128.491343 99.896543) + (xy 128.485736 99.893309) + (xy 128.434893 99.860354) + (xy 128.43489 99.860353) + (xy 128.43116 99.857935) + (xy 128.426901 99.856661) + (xy 128.426898 99.85666) + (xy 128.399139 99.848359) + (xy 128.398839 99.848269) + (xy 128.388377 99.844079) + (xy 128.382813 99.841244) + (xy 128.371067 99.839384) + (xy 128.362951 99.837536) + (xy 128.313838 99.822848) + (xy 128.269496 99.822577) + (xy 128.260103 99.821809) + (xy 128.254857 99.820978) + (xy 128.254856 99.820978) + (xy 128.25 99.820209) + (xy 128.241373 99.821576) + (xy 128.23122 99.822344) + (xy 128.212836 99.822231) + (xy 128.195838 99.822127) + (xy 128.195836 99.822127) + (xy 128.191385 99.8221) + (xy 128.137011 99.837641) + (xy 128.129623 99.839275) + (xy 128.117187 99.841244) + (xy 128.112804 99.843477) + (xy 128.11187 99.843781) + (xy 128.102156 99.847603) + (xy 128.099821 99.84827) + (xy 128.077929 99.854526) + (xy 128.077927 99.854527) + (xy 128.073644 99.855751) + (xy 128.014119 99.893309) + (xy 128.012819 99.894129) + (xy 128.007842 99.896959) + (xy 128.001757 99.900059) + (xy 128.001756 99.90006) + (xy 127.997375 99.902292) + (xy 127.993897 99.90577) + (xy 127.992445 99.906825) + (xy 127.989058 99.90912) + (xy 127.97008 99.921095) + (xy 127.967137 99.924427) + (xy 127.967135 99.924429) + (xy 127.907156 99.992342) + (xy 127.906032 99.993538) + (xy 127.905775 99.993892) + (xy 127.905554 99.994113) + (xy 127.905405 99.994204) + (xy 127.904504 99.995163) + (xy 127.902292 99.997375) + (xy 127.901509 99.996592) + (xy 127.900362 99.997296) + (xy 127.901721 99.998496) + (xy 127.889018 100.012879) + (xy 127.879422 100.033317) + (xy 127.838868 100.119695) + (xy 127.838867 100.119698) + (xy 127.836976 100.123726) + (xy 127.818136 100.244724) + (xy 127.818713 100.249137) + (xy 127.818713 100.249138) + (xy 127.833436 100.361726) + (xy 127.834014 100.366145) + (xy 127.841185 100.382443) + (xy 127.841244 100.382813) + (xy 127.842007 100.384311) + (xy 127.844031 100.38891) + (xy 127.844031 100.388911) + (xy 127.86591 100.438633) + (xy 127.883333 100.47823) + (xy 127.897272 100.494813) + (xy 127.898029 100.495713) + (xy 127.900157 100.498434) + (xy 127.902292 100.502625) + (xy 127.910081 100.510414) + (xy 127.913729 100.514391) + (xy 127.962127 100.571968) + (xy 127.985399 100.587459) + (xy 127.991836 100.592733) + (xy 127.993899 100.594232) + (xy 127.997375 100.597708) + (xy 128.001753 100.599939) + (xy 128.001756 100.599941) + (xy 128.00873 100.603494) + (xy 128.014977 100.607148) + (xy 128.064064 100.639823) + (xy 128.068313 100.641151) + (xy 128.068314 100.641151) + (xy 128.100296 100.651143) + (xy 128.110016 100.655103) + (xy 128.112359 100.656296) + (xy 128.143436 100.692662) + (xy 128.1465 100.711992) + (xy 128.1465 100.91) + (xy 128.128194 100.954194) + (xy 128.084 100.9725) + (xy 127.655056 100.9725) + (xy 127.652046 100.973099) + (xy 127.652043 100.973099) + (xy 127.602025 100.983048) + (xy 127.602024 100.983048) + (xy 127.595988 100.984249) + (xy 127.529006 101.029006) + (xy 127.484249 101.095988) + (xy 127.483048 101.102024) + (xy 127.483048 101.102025) + (xy 127.481563 101.109494) + (xy 127.4725 101.155056) + (xy 127.4725 101.344944) + (xy 127.473099 101.347954) + (xy 127.473099 101.347957) + (xy 127.481976 101.392586) + (xy 127.484249 101.404012) + (xy 127.525186 101.465278) + (xy 127.534518 101.512193) + (xy 127.525187 101.534721) + (xy 127.484249 101.595988) + (xy 127.483048 101.602024) + (xy 127.483048 101.602025) + (xy 127.475516 101.639895) + (xy 127.4725 101.655056) + (xy 127.4725 101.844944) + (xy 127.473099 101.847954) + (xy 127.473099 101.847957) + (xy 127.483009 101.897779) + (xy 127.484249 101.904012) + (xy 127.525186 101.965278) + (xy 127.534518 102.012193) + (xy 127.525187 102.034721) + (xy 127.484249 102.095988) + (xy 127.483048 102.102024) + (xy 127.483048 102.102025) + (xy 127.477857 102.128126) + (xy 127.4725 102.155056) + (xy 127.4725 102.344944) + (xy 127.473099 102.347954) + (xy 127.473099 102.347957) + (xy 127.483009 102.397779) + (xy 127.484249 102.404012) + (xy 127.525186 102.465278) + (xy 127.534518 102.512193) + (xy 127.525187 102.534721) + (xy 127.484249 102.595988) + (xy 127.483048 102.602024) + (xy 127.483048 102.602025) + (xy 127.473494 102.65006) + (xy 127.4725 102.655056) + (xy 127.4725 102.844944) + (xy 127.484249 102.904012) + (xy 127.520033 102.957565) + (xy 127.525486 102.965726) + (xy 127.534819 103.012642) + (xy 127.525487 103.035173) + (xy 127.488141 103.091067) + (xy 127.48352 103.102221) + (xy 127.473599 103.152096) + (xy 127.473 103.158177) + (xy 127.473 103.174069) + (xy 127.476641 103.182859) + (xy 127.485431 103.1865) + (xy 129.189568 103.1865) + (xy 129.198358 103.182859) + (xy 129.201999 103.174069) + (xy 129.201999 103.158179) + (xy 129.2014 103.152094) + (xy 129.19148 103.102224) + (xy 129.186858 103.091066) + (xy 129.149513 103.035173) + (xy 129.140181 102.988256) + (xy 129.149514 102.965726) + (xy 129.154967 102.957565) + (xy 129.190751 102.904012) + (xy 129.2025 102.844944) + (xy 129.2025 102.655056) + (xy 129.201507 102.65006) + (xy 129.191952 102.602025) + (xy 129.191952 102.602024) + (xy 129.190751 102.595988) + (xy 129.152153 102.538223) + (xy 129.14282 102.491308) + (xy 129.169395 102.451534) + (xy 129.204119 102.441) + (xy 129.826187 102.441) + (xy 129.870381 102.459306) + (xy 129.879248 102.470473) + (xy 129.88154 102.474155) + (xy 129.883333 102.47823) + (xy 129.897272 102.494813) + (xy 129.898029 102.495713) + (xy 129.900157 102.498434) + (xy 129.902292 102.502625) + (xy 129.910081 102.510414) + (xy 129.913729 102.514391) + (xy 129.962127 102.571968) + (xy 129.985399 102.587459) + (xy 129.991836 102.592733) + (xy 129.993899 102.594232) + (xy 129.997375 102.597708) + (xy 130.001753 102.599939) + (xy 130.001756 102.599941) + (xy 130.00873 102.603494) + (xy 130.014983 102.607152) + (xy 130.02846 102.616123) + (xy 130.031134 102.617903) + (xy 130.057778 102.657631) + (xy 130.059 102.669929) + (xy 130.059 103.994101) + (xy 130.058962 104.038224) + (xy 130.058957 104.043404) + (xy 130.058993 104.04348) + (xy 130.059 104.043539) + (xy 130.059 105.4965) + (xy 130.040694 105.540694) + (xy 129.9965 105.559) + (xy 129.204119 105.559) + (xy 129.159925 105.540694) + (xy 129.141619 105.4965) + (xy 129.152153 105.461776) + (xy 129.153804 105.459306) + (xy 129.190751 105.404012) + (xy 129.191991 105.397779) + (xy 129.201901 105.347957) + (xy 129.201901 105.347954) + (xy 129.2025 105.344944) + (xy 129.2025 105.155056) + (xy 129.201007 105.147546) + (xy 129.191952 105.102025) + (xy 129.191952 105.102024) + (xy 129.190751 105.095988) + (xy 129.149814 105.034722) + (xy 129.140482 104.987807) + (xy 129.149813 104.965279) + (xy 129.190751 104.904012) + (xy 129.191991 104.897779) + (xy 129.201901 104.847957) + (xy 129.201901 104.847954) + (xy 129.2025 104.844944) + (xy 129.2025 104.655056) + (xy 129.199345 104.639191) + (xy 129.191952 104.602025) + (xy 129.191952 104.602024) + (xy 129.190751 104.595988) + (xy 129.149814 104.534722) + (xy 129.140482 104.487807) + (xy 129.149813 104.465279) + (xy 129.190751 104.404012) + (xy 129.192717 104.394129) + (xy 129.201901 104.347957) + (xy 129.201901 104.347954) + (xy 129.2025 104.344944) + (xy 129.2025 104.155056) + (xy 129.201007 104.147546) + (xy 129.191952 104.102025) + (xy 129.191952 104.102024) + (xy 129.190751 104.095988) + (xy 129.149514 104.034274) + (xy 129.140181 103.987358) + (xy 129.149513 103.964827) + (xy 129.186859 103.908933) + (xy 129.19148 103.897779) + (xy 129.201401 103.847904) + (xy 129.202 103.841823) + (xy 129.202 103.825931) + (xy 129.198359 103.817141) + (xy 129.189569 103.8135) + (xy 127.485432 103.8135) + (xy 127.476642 103.817141) + (xy 127.473001 103.825931) + (xy 127.473001 103.841821) + (xy 127.4736 103.847906) + (xy 127.48352 103.897776) + (xy 127.488142 103.908934) + (xy 127.523449 103.961777) + (xy 127.532781 104.008694) + (xy 127.506205 104.048467) + (xy 127.471482 104.059) + (xy 126.923049 104.059) + (xy 126.878855 104.040694) + (xy 126.866156 104.022373) + (xy 126.865695 104.02136) + (xy 126.865694 104.021359) + (xy 126.863852 104.017307) + (xy 126.849199 104.000302) + (xy 126.847708 103.997375) + (xy 126.8419 103.991567) + (xy 126.838746 103.98817) + (xy 126.81154 103.956596) + (xy 126.783918 103.924539) + (xy 126.763741 103.911461) + (xy 126.760155 103.908559) + (xy 126.760081 103.908661) + (xy 126.756106 103.905773) + (xy 126.752625 103.902292) + (xy 126.741343 103.896543) + (xy 126.735736 103.893309) + (xy 126.723408 103.885318) + (xy 126.713322 103.878781) + (xy 126.684893 103.860354) + (xy 126.68489 103.860353) + (xy 126.68116 103.857935) + (xy 126.676901 103.856661) + (xy 126.676898 103.85666) + (xy 126.658345 103.851112) + (xy 126.648839 103.848269) + (xy 126.638377 103.844079) + (xy 126.632813 103.841244) + (xy 126.621067 103.839384) + (xy 126.612951 103.837536) + (xy 126.563838 103.822848) + (xy 126.519496 103.822577) + (xy 126.510103 103.821809) + (xy 126.504857 103.820978) + (xy 126.504856 103.820978) + (xy 126.5 103.820209) + (xy 126.491373 103.821576) + (xy 126.48122 103.822344) + (xy 126.462836 103.822231) + (xy 126.445838 103.822127) + (xy 126.445836 103.822127) + (xy 126.441385 103.8221) + (xy 126.387011 103.837641) + (xy 126.379623 103.839275) + (xy 126.367187 103.841244) + (xy 126.362804 103.843477) + (xy 126.36187 103.843781) + (xy 126.352156 103.847603) + (xy 126.350916 103.847957) + (xy 126.327929 103.854526) + (xy 126.327927 103.854527) + (xy 126.323644 103.855751) + (xy 126.264119 103.893309) + (xy 126.262819 103.894129) + (xy 126.257842 103.896959) + (xy 126.251757 103.900059) + (xy 126.251756 103.90006) + (xy 126.247375 103.902292) + (xy 126.243897 103.90577) + (xy 126.242445 103.906825) + (xy 126.239059 103.90912) + (xy 126.239043 103.90913) + (xy 126.22008 103.921095) + (xy 126.217137 103.924427) + (xy 126.217135 103.924429) + (xy 126.157156 103.992342) + (xy 126.156032 103.993538) + (xy 126.155775 103.993892) + (xy 126.155554 103.994113) + (xy 126.155405 103.994204) + (xy 126.154504 103.995163) + (xy 126.152292 103.997375) + (xy 126.151509 103.996592) + (xy 126.150362 103.997296) + (xy 126.151721 103.998496) + (xy 126.145002 104.006104) + (xy 126.139018 104.012879) + (xy 126.137127 104.016906) + (xy 126.137126 104.016908) + (xy 126.134237 104.023062) + (xy 126.098884 104.055287) + (xy 126.077662 104.059) + (xy 124.230731 104.059) + (xy 124.223392 104.05775) + (xy 124.223309 104.058477) + (xy 124.216318 104.05768) + (xy 124.209677 104.055348) + (xy 124.202685 104.056126) + (xy 124.202683 104.056126) + (xy 124.180303 104.058617) + (xy 124.17339 104.059) + (xy 124.165967 104.059) + (xy 124.162543 104.059781) + (xy 124.159053 104.060577) + (xy 124.152067 104.061759) + (xy 124.144383 104.062614) + (xy 124.123071 104.064986) + (xy 124.117108 104.068719) + (xy 124.113162 104.070093) + (xy 124.109402 104.071903) + (xy 124.102541 104.073468) + (xy 124.097039 104.077853) + (xy 124.097038 104.077853) + (xy 124.091456 104.082301) + (xy 124.07973 104.091646) + (xy 124.079721 104.091653) + (xy 124.073941 104.095746) + (xy 124.067789 104.099597) + (xy 124.062581 104.104805) + (xy 124.057337 104.10949) + (xy 124.048986 104.116145) + (xy 124.034391 104.127775) + (xy 124.031333 104.134114) + (xy 124.026942 104.139615) + (xy 124.026409 104.139189) + (xy 124.022031 104.145355) + (xy 123.813192 104.354194) + (xy 123.768998 104.3725) + (xy 123.08377 104.3725) + (xy 123.08194 104.372718) + (xy 123.081936 104.372718) + (xy 123.075353 104.373502) + (xy 123.059576 104.375379) + (xy 123.05529 104.377283) + (xy 123.055289 104.377283) + (xy 122.970372 104.415001) + (xy 122.970371 104.415002) + (xy 122.9651 104.417343) + (xy 122.961024 104.421426) + (xy 122.953879 104.428584) + (xy 122.892065 104.490506) + (xy 122.878426 104.521357) + (xy 122.852165 104.580756) + (xy 122.852164 104.580759) + (xy 122.850265 104.585055) + (xy 122.849721 104.589722) + (xy 122.84972 104.589725) + (xy 122.849564 104.591066) + (xy 122.8475 104.60877) + (xy 122.8475 104.99123) + (xy 122.1525 104.99123) + (xy 122.1525 104.60877) + (xy 122.152027 104.60479) + (xy 122.150349 104.590694) + (xy 122.149621 104.584576) + (xy 122.138261 104.559) + (xy 122.109999 104.495372) + (xy 122.109998 104.495371) + (xy 122.107657 104.4901) + (xy 122.08279 104.465276) + (xy 122.052474 104.435014) + (xy 122.034494 104.417065) + (xy 121.987695 104.396375) + (xy 121.944244 104.377165) + (xy 121.944241 104.377164) + (xy 121.939945 104.375265) + (xy 121.935278 104.374721) + (xy 121.935275 104.37472) + (xy 121.923962 104.373401) + (xy 121.91623 104.3725) + (xy 120.80877 104.3725) + (xy 120.80694 104.372718) + (xy 120.806936 104.372718) + (xy 120.800353 104.373502) + (xy 120.784576 104.375379) + (xy 120.78029 104.377283) + (xy 120.780289 104.377283) + (xy 120.695372 104.415001) + (xy 120.695371 104.415002) + (xy 120.6901 104.417343) + (xy 120.686024 104.421426) + (xy 120.678879 104.428584) + (xy 120.617065 104.490506) + (xy 120.603426 104.521357) + (xy 120.581137 104.571772) + (xy 120.546524 104.60479) + (xy 120.523974 104.609) + (xy 119.945782 104.609) + (xy 119.901588 104.590694) + (xy 119.888887 104.572369) + (xy 119.888616 104.571772) + (xy 119.863852 104.517307) + (xy 119.849199 104.500302) + (xy 119.847708 104.497375) + (xy 119.8419 104.491567) + (xy 119.838746 104.48817) + (xy 119.78778 104.429021) + (xy 119.783918 104.424539) + (xy 119.763741 104.411461) + (xy 119.760155 104.408559) + (xy 119.760081 104.408661) + (xy 119.756106 104.405773) + (xy 119.752625 104.402292) + (xy 119.741343 104.396543) + (xy 119.735736 104.393309) + (xy 119.684893 104.360354) + (xy 119.68489 104.360353) + (xy 119.68116 104.357935) + (xy 119.676901 104.356661) + (xy 119.676898 104.35666) + (xy 119.654429 104.349941) + (xy 119.648839 104.348269) + (xy 119.638377 104.344079) + (xy 119.632813 104.341244) + (xy 119.621067 104.339384) + (xy 119.612951 104.337536) + (xy 119.563838 104.322848) + (xy 119.519496 104.322577) + (xy 119.510103 104.321809) + (xy 119.504857 104.320978) + (xy 119.504856 104.320978) + (xy 119.5 104.320209) + (xy 119.491373 104.321576) + (xy 119.48122 104.322344) + (xy 119.462836 104.322231) + (xy 119.445838 104.322127) + (xy 119.445836 104.322127) + (xy 119.441385 104.3221) + (xy 119.387011 104.337641) + (xy 119.379623 104.339275) + (xy 119.367187 104.341244) + (xy 119.362804 104.343477) + (xy 119.36187 104.343781) + (xy 119.352156 104.347603) + (xy 119.350916 104.347957) + (xy 119.327929 104.354526) + (xy 119.327927 104.354527) + (xy 119.323644 104.355751) + (xy 119.319875 104.358129) + (xy 119.315624 104.360811) + (xy 119.264119 104.393309) + (xy 119.262819 104.394129) + (xy 119.257842 104.396959) + (xy 119.251757 104.400059) + (xy 119.251756 104.40006) + (xy 119.247375 104.402292) + (xy 119.243897 104.40577) + (xy 119.242445 104.406825) + (xy 119.239059 104.40912) + (xy 119.239043 104.40913) + (xy 119.22008 104.421095) + (xy 119.217137 104.424427) + (xy 119.217135 104.424429) + (xy 119.169619 104.47823) + (xy 119.158778 104.490506) + (xy 119.157156 104.492342) + (xy 119.156032 104.493538) + (xy 119.155775 104.493892) + (xy 119.155554 104.494113) + (xy 119.155405 104.494204) + (xy 119.154504 104.495163) + (xy 119.152292 104.497375) + (xy 119.151509 104.496592) + (xy 119.150362 104.497296) + (xy 119.151721 104.498496) + (xy 119.139018 104.512879) + (xy 119.13113 104.52968) + (xy 119.088868 104.619695) + (xy 119.088867 104.619698) + (xy 119.086976 104.623726) + (xy 119.068136 104.744724) + (xy 119.068713 104.749137) + (xy 119.068713 104.749138) + (xy 119.08251 104.854647) + (xy 119.084014 104.866145) + (xy 119.091185 104.882443) + (xy 119.091244 104.882813) + (xy 119.092007 104.884311) + (xy 119.094031 104.88891) + (xy 119.094031 104.888911) + (xy 119.130812 104.9725) + (xy 119.133333 104.97823) + (xy 119.145787 104.993046) + (xy 119.148029 104.995713) + (xy 119.150157 104.998434) + (xy 119.152292 105.002625) + (xy 119.160081 105.010414) + (xy 119.163729 105.014391) + (xy 119.212127 105.071968) + (xy 119.235399 105.087459) + (xy 119.241836 105.092733) + (xy 119.243899 105.094232) + (xy 119.247375 105.097708) + (xy 119.251753 105.099939) + (xy 119.251756 105.099941) + (xy 119.25873 105.103494) + (xy 119.264977 105.107148) + (xy 119.314064 105.139823) + (xy 119.318313 105.141151) + (xy 119.318314 105.141151) + (xy 119.350296 105.151143) + (xy 119.360027 105.155109) + (xy 119.362799 105.156521) + (xy 119.362803 105.156522) + (xy 119.367187 105.158756) + (xy 119.377852 105.160445) + (xy 119.386713 105.16252) + (xy 119.426696 105.175012) + (xy 119.426699 105.175012) + (xy 119.430948 105.17634) + (xy 119.480069 105.177241) + (xy 119.488683 105.177999) + (xy 119.49514 105.179022) + (xy 119.495144 105.179022) + (xy 119.5 105.179791) + (xy 119.506947 105.17869) + (xy 119.517853 105.177933) + (xy 119.553383 105.178584) + (xy 119.613532 105.162185) + (xy 119.62019 105.160755) + (xy 119.622147 105.160445) + (xy 119.632813 105.158756) + (xy 119.637196 105.156522) + (xy 119.641875 105.155002) + (xy 119.641878 105.15501) + (xy 119.646727 105.153136) + (xy 119.671527 105.146375) + (xy 119.708415 105.123726) + (xy 119.739709 105.104511) + (xy 119.744037 105.102085) + (xy 119.74824 105.099944) + (xy 119.748248 105.099938) + (xy 119.752625 105.097708) + (xy 119.755427 105.094906) + (xy 119.756264 105.094346) + (xy 119.761606 105.091066) + (xy 119.775881 105.082301) + (xy 119.839914 105.011558) + (xy 119.886251 104.991) + (xy 120.523903 104.991) + (xy 120.568097 105.009306) + (xy 120.581022 105.028129) + (xy 120.614498 105.103494) + (xy 120.617343 105.1099) + (xy 120.690506 105.182935) + (xy 120.746943 105.207886) + (xy 120.769377 105.217804) + (xy 120.802395 105.252417) + (xy 120.801268 105.300239) + (xy 120.769476 105.332086) + (xy 120.695372 105.365001) + (xy 120.695371 105.365002) + (xy 120.6901 105.367343) + (xy 120.686024 105.371426) + (xy 120.660944 105.39655) + (xy 120.617065 105.440506) + (xy 120.601264 105.476248) + (xy 120.581137 105.521772) + (xy 120.546524 105.55479) + (xy 120.523974 105.559) + (xy 119.923049 105.559) + (xy 119.878855 105.540694) + (xy 119.866156 105.522373) + (xy 119.865695 105.52136) + (xy 119.865694 105.521359) + (xy 119.863852 105.517307) + (xy 119.849199 105.500302) + (xy 119.847708 105.497375) + (xy 119.8419 105.491567) + (xy 119.838746 105.48817) + (xy 119.786826 105.427914) + (xy 119.783918 105.424539) + (xy 119.763741 105.411461) + (xy 119.760155 105.408559) + (xy 119.760081 105.408661) + (xy 119.756106 105.405773) + (xy 119.752625 105.402292) + (xy 119.741343 105.396543) + (xy 119.735736 105.393309) + (xy 119.684893 105.360354) + (xy 119.68489 105.360353) + (xy 119.68116 105.357935) + (xy 119.676901 105.356661) + (xy 119.676898 105.35666) + (xy 119.658345 105.351112) + (xy 119.648839 105.348269) + (xy 119.638377 105.344079) + (xy 119.632813 105.341244) + (xy 119.621067 105.339384) + (xy 119.612951 105.337536) + (xy 119.602886 105.334526) + (xy 119.563838 105.322848) + (xy 119.519496 105.322577) + (xy 119.510103 105.321809) + (xy 119.504857 105.320978) + (xy 119.504856 105.320978) + (xy 119.5 105.320209) + (xy 119.491373 105.321576) + (xy 119.48122 105.322344) + (xy 119.462836 105.322231) + (xy 119.445838 105.322127) + (xy 119.445836 105.322127) + (xy 119.441385 105.3221) + (xy 119.387011 105.337641) + (xy 119.379623 105.339275) + (xy 119.367187 105.341244) + (xy 119.362804 105.343477) + (xy 119.36187 105.343781) + (xy 119.352156 105.347603) + (xy 119.350916 105.347957) + (xy 119.327929 105.354526) + (xy 119.327927 105.354527) + (xy 119.323644 105.355751) + (xy 119.264119 105.393309) + (xy 119.262819 105.394129) + (xy 119.257842 105.396959) + (xy 119.251757 105.400059) + (xy 119.251756 105.40006) + (xy 119.247375 105.402292) + (xy 119.243897 105.40577) + (xy 119.242445 105.406825) + (xy 119.239059 105.40912) + (xy 119.239043 105.40913) + (xy 119.22008 105.421095) + (xy 119.217137 105.424427) + (xy 119.217135 105.424429) + (xy 119.157156 105.492342) + (xy 119.156032 105.493538) + (xy 119.155775 105.493892) + (xy 119.155554 105.494113) + (xy 119.155405 105.494204) + (xy 119.154504 105.495163) + (xy 119.152292 105.497375) + (xy 119.151509 105.496592) + (xy 119.150362 105.497296) + (xy 119.151721 105.498496) + (xy 119.145002 105.506104) + (xy 119.139018 105.512879) + (xy 119.130844 105.530289) + (xy 119.088868 105.619695) + (xy 119.088867 105.619698) + (xy 119.086976 105.623726) + (xy 119.068136 105.744724) + (xy 119.068713 105.749137) + (xy 119.068713 105.749138) + (xy 119.082655 105.855751) + (xy 119.084014 105.866145) + (xy 119.091185 105.882443) + (xy 119.091244 105.882813) + (xy 119.092007 105.884311) + (xy 119.094031 105.88891) + (xy 119.094031 105.888911) + (xy 119.129533 105.969593) + (xy 119.133333 105.97823) + (xy 119.147273 105.994814) + (xy 119.148029 105.995713) + (xy 119.150157 105.998434) + (xy 119.152292 106.002625) + (xy 119.160081 106.010414) + (xy 119.16373 106.014392) + (xy 119.204832 106.063289) + (xy 119.212127 106.071968) + (xy 119.235399 106.087459) + (xy 119.241836 106.092733) + (xy 119.243899 106.094232) + (xy 119.247375 106.097708) + (xy 119.251753 106.099939) + (xy 119.251756 106.099941) + (xy 119.25873 106.103494) + (xy 119.264977 106.107148) + (xy 119.314064 106.139823) + (xy 119.318313 106.141151) + (xy 119.318314 106.141151) + (xy 119.350296 106.151143) + (xy 119.360027 106.155109) + (xy 119.362799 106.156521) + (xy 119.362803 106.156522) + (xy 119.367187 106.158756) + (xy 119.377852 106.160445) + (xy 119.386713 106.16252) + (xy 119.426696 106.175012) + (xy 119.426699 106.175012) + (xy 119.430948 106.17634) + (xy 119.480069 106.177241) + (xy 119.488683 106.177999) + (xy 119.49514 106.179022) + (xy 119.495144 106.179022) + (xy 119.5 106.179791) + (xy 119.506947 106.17869) + (xy 119.517853 106.177933) + (xy 119.553383 106.178584) + (xy 119.613532 106.162185) + (xy 119.62019 106.160755) + (xy 119.622147 106.160445) + (xy 119.632813 106.158756) + (xy 119.637196 106.156522) + (xy 119.641875 106.155002) + (xy 119.641878 106.15501) + (xy 119.646727 106.153136) + (xy 119.671527 106.146375) + (xy 119.676521 106.143309) + (xy 119.739709 106.104511) + (xy 119.744037 106.102085) + (xy 119.74824 106.099944) + (xy 119.748248 106.099938) + (xy 119.752625 106.097708) + (xy 119.755427 106.094906) + (xy 119.756264 106.094346) + (xy 119.757681 106.093476) + (xy 119.775881 106.082301) + (xy 119.858058 105.991513) + (xy 119.865454 105.976248) + (xy 119.901198 105.944458) + (xy 119.9217 105.941) + (xy 120.523903 105.941) + (xy 120.568097 105.959306) + (xy 120.581022 105.978129) + (xy 120.614692 106.053931) + (xy 120.617343 106.0599) + (xy 120.621426 106.063976) + (xy 120.646769 106.089275) + (xy 120.690506 106.132935) + (xy 120.744544 106.156825) + (xy 120.769377 106.167804) + (xy 120.802395 106.202417) + (xy 120.801268 106.250239) + (xy 120.769476 106.282086) + (xy 120.695372 106.315001) + (xy 120.695371 106.315002) + (xy 120.6901 106.317343) + (xy 120.686024 106.321426) + (xy 120.668799 106.338681) + (xy 120.617065 106.390506) + (xy 120.607801 106.411461) + (xy 120.581137 106.471772) + (xy 120.546524 106.50479) + (xy 120.523974 106.509) + (xy 119.885342 106.509) + (xy 119.837995 106.487298) + (xy 119.783918 106.424539) + (xy 119.763741 106.411461) + (xy 119.760155 106.408559) + (xy 119.760081 106.408661) + (xy 119.756106 106.405773) + (xy 119.752625 106.402292) + (xy 119.741343 106.396543) + (xy 119.735736 106.393309) + (xy 119.723408 106.385318) + (xy 119.713322 106.378781) + (xy 119.684893 106.360354) + (xy 119.68489 106.360353) + (xy 119.68116 106.357935) + (xy 119.676901 106.356661) + (xy 119.676898 106.35666) + (xy 119.658345 106.351112) + (xy 119.648839 106.348269) + (xy 119.638377 106.344079) + (xy 119.632813 106.341244) + (xy 119.621067 106.339384) + (xy 119.612951 106.337536) + (xy 119.563838 106.322848) + (xy 119.519496 106.322577) + (xy 119.510103 106.321809) + (xy 119.504857 106.320978) + (xy 119.504856 106.320978) + (xy 119.5 106.320209) + (xy 119.491373 106.321576) + (xy 119.48122 106.322344) + (xy 119.462836 106.322231) + (xy 119.445838 106.322127) + (xy 119.445836 106.322127) + (xy 119.441385 106.3221) + (xy 119.387011 106.337641) + (xy 119.379623 106.339275) + (xy 119.367187 106.341244) + (xy 119.362804 106.343477) + (xy 119.36187 106.343781) + (xy 119.352156 106.347603) + (xy 119.350916 106.347957) + (xy 119.327929 106.354526) + (xy 119.327927 106.354527) + (xy 119.323644 106.355751) + (xy 119.264119 106.393309) + (xy 119.262819 106.394129) + (xy 119.257842 106.396959) + (xy 119.251757 106.400059) + (xy 119.251756 106.40006) + (xy 119.247375 106.402292) + (xy 119.243897 106.40577) + (xy 119.242445 106.406825) + (xy 119.239059 106.40912) + (xy 119.239043 106.40913) + (xy 119.22008 106.421095) + (xy 119.217137 106.424427) + (xy 119.217135 106.424429) + (xy 119.157156 106.492342) + (xy 119.156032 106.493538) + (xy 119.155775 106.493892) + (xy 119.155554 106.494113) + (xy 119.155405 106.494204) + (xy 119.154504 106.495163) + (xy 119.152292 106.497375) + (xy 119.151509 106.496592) + (xy 119.150362 106.497296) + (xy 119.151721 106.498496) + (xy 119.145002 106.506104) + (xy 119.139018 106.512879) + (xy 119.128763 106.534722) + (xy 119.088868 106.619695) + (xy 119.088867 106.619698) + (xy 119.086976 106.623726) + (xy 119.068136 106.744724) + (xy 99.3 106.744724) + (xy 99.3 103.3625) + (xy 99.318306 103.318306) + (xy 99.3625 103.3) + (xy 100.594123 103.3) + (xy 100.638411 103.300039) + (xy 100.638412 103.300039) + (xy 100.645449 103.300045) + (xy 100.651794 103.296998) + (xy 100.651795 103.296998) + (xy 100.660034 103.293042) + (xy 100.673188 103.288448) + (xy 100.673776 103.288314) + (xy 100.688962 103.28485) + (xy 100.701435 103.274911) + (xy 100.713329 103.26745) + (xy 100.727705 103.260547) + (xy 100.732102 103.255049) + (xy 100.737813 103.247908) + (xy 100.747673 103.238065) + (xy 100.748373 103.237507) + (xy 100.760323 103.227985) + (xy 100.76338 103.221648) + (xy 100.763382 103.221645) + (xy 100.767251 103.213622) + (xy 100.774735 103.201738) + (xy 100.780298 103.194782) + (xy 100.784694 103.189285) + (xy 100.786271 103.182428) + (xy 100.786273 103.182423) + (xy 100.788322 103.173511) + (xy 100.792938 103.160366) + (xy 100.795499 103.155056) + (xy 100.799965 103.145798) + (xy 100.799985 103.122799) + (xy 100.799986 103.122783) + (xy 100.8 103.122723) + (xy 100.8 103.105877) + (xy 100.800039 103.061365) + (xy 100.800045 103.054808) + (xy 100.800045 103.054551) + (xy 100.800007 103.054472) + (xy 100.8 103.054407) + (xy 100.8 100.3625) + (xy 100.818306 100.318306) + (xy 100.8625 100.3) + (xy 103.094123 100.3) + (xy 103.138411 100.300039) + (xy 103.138412 100.300039) + (xy 103.145449 100.300045) + (xy 103.151794 100.296998) + (xy 103.151795 100.296998) + (xy 103.160034 100.293042) + (xy 103.173188 100.288448) + (xy 103.173776 100.288314) + (xy 103.188962 100.28485) + (xy 103.201435 100.274911) + (xy 103.213329 100.26745) + (xy 103.227705 100.260547) + (xy 103.232102 100.255049) + (xy 103.237813 100.247908) + (xy 103.247673 100.238065) + (xy 103.249311 100.23676) + (xy 103.260323 100.227985) + (xy 103.26338 100.221648) + (xy 103.263382 100.221645) + (xy 103.267251 100.213622) + (xy 103.274735 100.201738) + (xy 103.280298 100.194782) + (xy 103.284694 100.189285) + (xy 103.286271 100.182428) + (xy 103.286273 100.182423) + (xy 103.288322 100.173511) + (xy 103.292938 100.160366) + (xy 103.295499 100.155056) + (xy 103.299965 100.145798) + (xy 103.299985 100.122799) + (xy 103.299986 100.122783) + (xy 103.3 100.122723) + (xy 103.3 100.105877) + (xy 103.300008 100.096355) + (xy 103.300045 100.054808) + (xy 103.300045 100.054551) + (xy 103.300007 100.054472) + (xy 103.3 100.054407) + (xy 103.3 98.605877) + (xy 103.300039 98.561589) + (xy 103.300039 98.561588) + (xy 103.300045 98.554551) + (xy 103.296998 98.548205) + (xy 103.293042 98.539966) + (xy 103.288448 98.526812) + (xy 103.286415 98.517901) + (xy 103.28485 98.511038) + (xy 103.276054 98.5) + (xy 103.274911 98.498565) + (xy 103.26745 98.486671) + (xy 103.263593 98.478639) + (xy 103.260547 98.472295) + (xy 103.255049 98.467898) + (xy 103.247908 98.462187) + (xy 103.238065 98.452327) + (xy 103.227985 98.439677) + (xy 103.221648 98.43662) + (xy 103.221645 98.436618) + (xy 103.213622 98.432749) + (xy 103.201738 98.425265) + (xy 103.194782 98.419702) + (xy 103.189285 98.415306) + (xy 103.182428 98.413729) + (xy 103.182423 98.413727) + (xy 103.173511 98.411678) + (xy 103.160366 98.407062) + (xy 103.1598 98.406789) + (xy 103.145798 98.400035) + (xy 103.124114 98.400016) + (xy 103.122799 98.400015) + (xy 103.122783 98.400014) + (xy 103.122723 98.4) + (xy 103.105877 98.4) + (xy 103.054808 98.399955) + (xy 103.054551 98.399955) + (xy 103.054472 98.399993) + (xy 103.054407 98.4) + (xy 99.3625 98.4) + (xy 99.318306 98.381694) + (xy 99.3 98.3375) + (xy 99.3 96.893415) + (xy 99.626392 96.893415) + (xy 99.635958 96.984436) + (xy 99.637447 96.991207) + (xy 99.691375 97.149618) + (xy 99.694331 97.1559) + (xy 99.782009 97.298417) + (xy 99.786289 97.303896) + (xy 99.903359 97.423443) + (xy 99.908745 97.427836) + (xy 100.049396 97.51848) + (xy 100.055613 97.521566) + (xy 100.212854 97.578798) + (xy 100.219607 97.580431) + (xy 100.348804 97.596753) + (xy 100.352734 97.597) + (xy 100.974069 97.597) + (xy 100.982859 97.593359) + (xy 100.9865 97.584569) + (xy 101.1135 97.584569) + (xy 101.117141 97.593359) + (xy 101.125931 97.597) + (xy 101.742089 97.597) + (xy 101.745567 97.596806) + (xy 101.86976 97.582876) + (xy 101.876538 97.581335) + (xy 102.034549 97.526309) + (xy 102.040822 97.523304) + (xy 102.182721 97.434636) + (xy 102.188167 97.430319) + (xy 102.306902 97.312411) + (xy 102.311248 97.307006) + (xy 102.400913 97.165716) + (xy 102.403952 97.159484) + (xy 102.460085 97.001844) + (xy 102.461672 96.995076) + (xy 102.473505 96.895844) + (xy 102.472822 96.893415) + (xy 103.601392 96.893415) + (xy 103.610958 96.984436) + (xy 103.612447 96.991207) + (xy 103.666375 97.149618) + (xy 103.669331 97.1559) + (xy 103.757009 97.298417) + (xy 103.761289 97.303896) + (xy 103.878359 97.423443) + (xy 103.883745 97.427836) + (xy 104.024396 97.51848) + (xy 104.030613 97.521566) + (xy 104.187854 97.578798) + (xy 104.194607 97.580431) + (xy 104.323804 97.596753) + (xy 104.327734 97.597) + (xy 104.799069 97.597) + (xy 104.807859 97.593359) + (xy 104.8115 97.584569) + (xy 104.9385 97.584569) + (xy 104.942141 97.593359) + (xy 104.950931 97.597) + (xy 105.417089 97.597) + (xy 105.420567 97.596806) + (xy 105.54476 97.582876) + (xy 105.551538 97.581335) + (xy 105.709549 97.526309) + (xy 105.715822 97.523304) + (xy 105.857721 97.434636) + (xy 105.863167 97.430319) + (xy 105.981902 97.312411) + (xy 105.986248 97.307006) + (xy 106.075913 97.165716) + (xy 106.078952 97.159484) + (xy 106.135085 97.001844) + (xy 106.136672 96.995076) + (xy 106.148505 96.895844) + (xy 106.145931 96.886685) + (xy 106.140255 96.8835) + (xy 104.950931 96.8835) + (xy 104.942141 96.887141) + (xy 104.9385 96.895931) + (xy 104.9385 97.584569) + (xy 104.8115 97.584569) + (xy 104.8115 96.895931) + (xy 104.807859 96.887141) + (xy 104.799069 96.8835) + (xy 103.612781 96.8835) + (xy 103.603991 96.887141) + (xy 103.601392 96.893415) + (xy 102.472822 96.893415) + (xy 102.470931 96.886685) + (xy 102.465255 96.8835) + (xy 101.125931 96.8835) + (xy 101.117141 96.887141) + (xy 101.1135 96.895931) + (xy 101.1135 97.584569) + (xy 100.9865 97.584569) + (xy 100.9865 96.895931) + (xy 100.982859 96.887141) + (xy 100.974069 96.8835) + (xy 99.637781 96.8835) + (xy 99.628991 96.887141) + (xy 99.626392 96.893415) + (xy 99.3 96.893415) + (xy 99.3 96.744156) + (xy 99.626495 96.744156) + (xy 99.629069 96.753315) + (xy 99.634745 96.7565) + (xy 100.974069 96.7565) + (xy 100.982859 96.752859) + (xy 100.9865 96.744069) + (xy 101.1135 96.744069) + (xy 101.117141 96.752859) + (xy 101.125931 96.7565) + (xy 102.462219 96.7565) + (xy 102.471009 96.752859) + (xy 102.473608 96.746585) + (xy 102.464042 96.655564) + (xy 102.462553 96.648793) + (xy 102.408625 96.490382) + (xy 102.405669 96.4841) + (xy 102.317991 96.341583) + (xy 102.313711 96.336104) + (xy 102.196641 96.216557) + (xy 102.191255 96.212164) + (xy 102.050604 96.12152) + (xy 102.044387 96.118434) + (xy 101.887146 96.061202) + (xy 101.880393 96.059569) + (xy 101.751196 96.043247) + (xy 101.747266 96.043) + (xy 101.125931 96.043) + (xy 101.117141 96.046641) + (xy 101.1135 96.055431) + (xy 101.1135 96.744069) + (xy 100.9865 96.744069) + (xy 100.9865 96.055431) + (xy 100.982859 96.046641) + (xy 100.974069 96.043) + (xy 100.357911 96.043) + (xy 100.354433 96.043194) + (xy 100.23024 96.057124) + (xy 100.223462 96.058665) + (xy 100.065451 96.113691) + (xy 100.059178 96.116696) + (xy 99.917279 96.205364) + (xy 99.911833 96.209681) + (xy 99.793098 96.327589) + (xy 99.788752 96.332994) + (xy 99.699087 96.474284) + (xy 99.696048 96.480516) + (xy 99.639915 96.638156) + (xy 99.638328 96.644924) + (xy 99.626495 96.744156) + (xy 99.3 96.744156) + (xy 99.3 94.412558) + (xy 99.9225 94.412558) + (xy 99.923099 94.415569) + (xy 99.927967 94.440039) + (xy 99.929898 94.449748) + (xy 99.958078 94.491922) + (xy 100.000252 94.520102) + (xy 100.006285 94.521302) + (xy 100.006287 94.521303) + (xy 100.032384 94.526494) + (xy 100.037442 94.5275) + (xy 102.062558 94.5275) + (xy 102.067616 94.526494) + (xy 102.093713 94.521303) + (xy 102.093715 94.521302) + (xy 102.099748 94.520102) + (xy 102.141922 94.491922) + (xy 102.170102 94.449748) + (xy 102.172034 94.440039) + (xy 102.176901 94.415569) + (xy 102.1775 94.412558) + (xy 102.1775 93.387442) + (xy 102.173264 93.366145) + (xy 102.171303 93.356287) + (xy 102.171302 93.356285) + (xy 102.170102 93.350252) + (xy 102.141922 93.308078) + (xy 102.099748 93.279898) + (xy 102.093715 93.278698) + (xy 102.093713 93.278697) + (xy 102.065569 93.273099) + (xy 102.062558 93.2725) + (xy 100.037442 93.2725) + (xy 100.034431 93.273099) + (xy 100.006287 93.278697) + (xy 100.006285 93.278698) + (xy 100.000252 93.279898) + (xy 99.958078 93.308078) + (xy 99.929898 93.350252) + (xy 99.928698 93.356285) + (xy 99.928697 93.356287) + (xy 99.926736 93.366145) + (xy 99.9225 93.387442) + (xy 99.9225 94.412558) + (xy 99.3 94.412558) + (xy 99.3 91.612558) + (xy 99.9225 91.612558) + (xy 99.923099 91.615569) + (xy 99.926004 91.630171) + (xy 99.929898 91.649748) + (xy 99.958078 91.691922) + (xy 100.000252 91.720102) + (xy 100.006285 91.721302) + (xy 100.006287 91.721303) + (xy 100.032384 91.726494) + (xy 100.037442 91.7275) + (xy 102.062558 91.7275) + (xy 102.067616 91.726494) + (xy 102.093713 91.721303) + (xy 102.093715 91.721302) + (xy 102.099748 91.720102) + (xy 102.141922 91.691922) + (xy 102.170102 91.649748) + (xy 102.173997 91.630171) + (xy 102.176901 91.615569) + (xy 102.1775 91.612558) + (xy 102.1775 90.587442) + (xy 102.174692 90.573324) + (xy 102.171303 90.556287) + (xy 102.171302 90.556285) + (xy 102.170102 90.550252) + (xy 102.141922 90.508078) + (xy 102.099748 90.479898) + (xy 102.093715 90.478698) + (xy 102.093713 90.478697) + (xy 102.065569 90.473099) + (xy 102.062558 90.4725) + (xy 100.037442 90.4725) + (xy 100.034431 90.473099) + (xy 100.006287 90.478697) + (xy 100.006285 90.478698) + (xy 100.000252 90.479898) + (xy 99.958078 90.508078) + (xy 99.929898 90.550252) + (xy 99.928698 90.556285) + (xy 99.928697 90.556287) + (xy 99.925308 90.573324) + (xy 99.9225 90.587442) + (xy 99.9225 91.612558) + (xy 99.3 91.612558) + (xy 99.3 89.535145) + (xy 103.591391 89.535145) + (xy 103.606917 89.612143) + (xy 103.620179 89.677914) + (xy 103.62142 89.684071) + (xy 103.690392 89.819436) + (xy 103.718236 89.849716) + (xy 103.790144 89.927914) + (xy 103.793226 89.931266) + (xy 103.796847 89.933511) + (xy 103.796848 89.933512) + (xy 103.918719 90.009076) + (xy 103.918722 90.009078) + (xy 103.922344 90.011323) + (xy 104.068235 90.053709) + (xy 104.071501 90.053949) + (xy 104.071502 90.053949) + (xy 104.077859 90.054416) + (xy 104.077867 90.054416) + (xy 104.079007 90.0545) + (xy 104.188057 90.0545) + (xy 104.300518 90.039095) + (xy 104.304429 90.037403) + (xy 104.304431 90.037402) + (xy 104.368807 90.009543) + (xy 104.439946 89.978758) + (xy 104.520668 89.913391) + (xy 104.566533 89.899805) + (xy 104.608572 89.922631) + (xy 104.6225 89.961963) + (xy 104.6225 90.422558) + (xy 104.629898 90.459748) + (xy 104.633317 90.464865) + (xy 104.641944 90.477776) + (xy 104.651277 90.524692) + (xy 104.641944 90.547224) + (xy 104.629898 90.565252) + (xy 104.628698 90.571285) + (xy 104.628697 90.571287) + (xy 104.624223 90.593781) + (xy 104.6225 90.602442) + (xy 104.6225 90.897558) + (xy 104.623099 90.900569) + (xy 104.628672 90.928584) + (xy 104.629898 90.934748) + (xy 104.650297 90.965277) + (xy 104.659629 91.012193) + (xy 104.650297 91.034723) + (xy 104.629898 91.065252) + (xy 104.6225 91.102442) + (xy 104.6225 91.397558) + (xy 104.623099 91.400569) + (xy 104.628539 91.427914) + (xy 104.629898 91.434748) + (xy 104.641132 91.45156) + (xy 104.650297 91.465277) + (xy 104.659629 91.512193) + (xy 104.650297 91.534723) + (xy 104.629898 91.565252) + (xy 104.628698 91.571285) + (xy 104.628697 91.571287) + (xy 104.624164 91.594076) + (xy 104.6225 91.602442) + (xy 104.6225 91.897558) + (xy 104.629898 91.934748) + (xy 104.638207 91.947183) + (xy 104.650297 91.965277) + (xy 104.659629 92.012193) + (xy 104.650297 92.034723) + (xy 104.629898 92.065252) + (xy 104.628698 92.071285) + (xy 104.628697 92.071287) + (xy 104.626304 92.083317) + (xy 104.6225 92.102442) + (xy 104.6225 92.397558) + (xy 104.623099 92.400569) + (xy 104.628672 92.428584) + (xy 104.629898 92.434748) + (xy 104.635783 92.443555) + (xy 104.650297 92.465277) + (xy 104.659629 92.512193) + (xy 104.650297 92.534723) + (xy 104.629898 92.565252) + (xy 104.628698 92.571285) + (xy 104.628697 92.571287) + (xy 104.627772 92.575939) + (xy 104.6225 92.602442) + (xy 104.6225 92.897558) + (xy 104.623099 92.900569) + (xy 104.628539 92.927914) + (xy 104.629898 92.934748) + (xy 104.640279 92.950284) + (xy 104.650297 92.965277) + (xy 104.659629 93.012193) + (xy 104.650297 93.034723) + (xy 104.629898 93.065252) + (xy 104.628698 93.071285) + (xy 104.628697 93.071287) + (xy 104.623953 93.095136) + (xy 104.6225 93.102442) + (xy 104.6225 93.397558) + (xy 104.623099 93.400569) + (xy 104.628264 93.426532) + (xy 104.629898 93.434748) + (xy 104.643339 93.454864) + (xy 104.650297 93.465277) + (xy 104.659629 93.512193) + (xy 104.650297 93.534723) + (xy 104.629898 93.565252) + (xy 104.628698 93.571285) + (xy 104.628697 93.571287) + (xy 104.626043 93.584631) + (xy 104.6225 93.602442) + (xy 104.6225 93.897558) + (xy 104.629898 93.934748) + (xy 104.646307 93.959306) + (xy 104.650297 93.965277) + (xy 104.659629 94.012193) + (xy 104.650297 94.034723) + (xy 104.629898 94.065252) + (xy 104.628698 94.071285) + (xy 104.628697 94.071287) + (xy 104.625484 94.087442) + (xy 104.6225 94.102442) + (xy 104.6225 94.397558) + (xy 104.623099 94.400569) + (xy 104.628539 94.427914) + (xy 104.629898 94.434748) + (xy 104.633317 94.439865) + (xy 104.641944 94.452776) + (xy 104.651277 94.499692) + (xy 104.641944 94.522224) + (xy 104.629898 94.540252) + (xy 104.628698 94.546285) + (xy 104.628697 94.546287) + (xy 104.626566 94.557) + (xy 104.6225 94.577442) + (xy 104.6225 94.909394) + (xy 104.604194 94.953588) + (xy 104.56 94.971894) + (xy 104.523795 94.960339) + (xy 104.412787 94.881449) + (xy 104.412788 94.881449) + (xy 104.409313 94.87898) + (xy 104.28314 94.833555) + (xy 104.27038 94.828961) + (xy 104.270378 94.828961) + (xy 104.266371 94.827518) + (xy 104.244083 94.825881) + (xy 104.119107 94.816703) + (xy 104.119105 94.816703) + (xy 104.114855 94.816391) + (xy 104.029732 94.833555) + (xy 103.970103 94.845578) + (xy 103.9701 94.845579) + (xy 103.965929 94.84642) + (xy 103.830564 94.915392) + (xy 103.718734 95.018226) + (xy 103.716489 95.021847) + (xy 103.716488 95.021848) + (xy 103.640924 95.143719) + (xy 103.640922 95.143722) + (xy 103.638677 95.147344) + (xy 103.596291 95.293235) + (xy 103.596051 95.296501) + (xy 103.596051 95.296502) + (xy 103.595815 95.299723) + (xy 103.5955 95.304007) + (xy 103.5955 95.663057) + (xy 103.610905 95.775518) + (xy 103.671242 95.914946) + (xy 103.76685 96.033013) + (xy 103.77032 96.035479) + (xy 103.770322 96.035481) + (xy 103.879981 96.113412) + (xy 103.905401 96.153934) + (xy 103.894721 96.200562) + (xy 103.887815 96.208705) + (xy 103.768102 96.327584) + (xy 103.763752 96.332994) + (xy 103.674087 96.474284) + (xy 103.671048 96.480516) + (xy 103.614915 96.638156) + (xy 103.613328 96.644924) + (xy 103.601495 96.744156) + (xy 103.604069 96.753315) + (xy 103.609745 96.7565) + (xy 106.137219 96.7565) + (xy 106.146009 96.752859) + (xy 106.148608 96.746585) + (xy 106.139042 96.655564) + (xy 106.137553 96.648793) + (xy 106.083625 96.490382) + (xy 106.080669 96.4841) + (xy 105.992991 96.341583) + (xy 105.988711 96.336104) + (xy 105.871641 96.216557) + (xy 105.866255 96.212164) + (xy 105.725604 96.12152) + (xy 105.719387 96.118434) + (xy 105.691355 96.108231) + (xy 105.656087 96.075914) + (xy 105.654 96.028124) + (xy 105.686317 95.992856) + (xy 105.712731 95.987) + (xy 105.759438 95.987) + (xy 105.765519 95.986401) + (xy 105.793518 95.980831) + (xy 105.80467 95.976212) + (xy 105.836445 95.954981) + (xy 105.844981 95.946445) + (xy 105.866212 95.91467) + (xy 105.870831 95.903518) + (xy 105.876401 95.875519) + (xy 105.877 95.869438) + (xy 105.877 95.675931) + (xy 105.873359 95.667141) + (xy 105.864569 95.6635) + (xy 104.767 95.6635) + (xy 104.722806 95.645194) + (xy 104.7045 95.601) + (xy 104.7045 95.599) + (xy 104.722806 95.554806) + (xy 104.767 95.5365) + (xy 105.174069 95.5365) + (xy 105.182859 95.532859) + (xy 105.1865 95.524069) + (xy 105.1865 95.3) + (xy 105.204806 95.255806) + (xy 105.249 95.2375) + (xy 105.251 95.2375) + (xy 105.295194 95.255806) + (xy 105.3135 95.3) + (xy 105.3135 95.524069) + (xy 105.317141 95.532859) + (xy 105.325931 95.5365) + (xy 105.864569 95.5365) + (xy 105.873359 95.532859) + (xy 105.877 95.524069) + (xy 105.877 95.330562) + (xy 105.876401 95.324484) + (xy 105.872763 95.306195) + (xy 105.882094 95.259278) + (xy 105.921867 95.232701) + (xy 105.934062 95.2315) + (xy 106.352624 95.2315) + (xy 106.365778 95.2329) + (xy 106.38178 95.236345) + (xy 106.38691 95.235738) + (xy 106.386913 95.235738) + (xy 106.409837 95.233025) + (xy 106.455876 95.246011) + (xy 106.461376 95.250898) + (xy 107.450194 96.239717) + (xy 107.4685 96.283911) + (xy 107.4685 97.536743) + (xy 107.468007 97.544575) + (xy 107.467754 97.546579) + (xy 107.466275 97.551524) + (xy 107.468274 97.602396) + (xy 107.468452 97.606924) + (xy 107.4685 97.609378) + (xy 107.4685 99.102624) + (xy 107.4671 99.115778) + (xy 107.463655 99.13178) + (xy 107.464262 99.13691) + (xy 107.464262 99.136912) + (xy 107.468067 99.169059) + (xy 107.4685 99.176405) + (xy 107.4685 102.26) + (xy 107.450194 102.304194) + (xy 107.406 102.3225) + (xy 106.837442 102.3225) + (xy 106.834431 102.323099) + (xy 106.806287 102.328697) + (xy 106.806285 102.328698) + (xy 106.800252 102.329898) + (xy 106.758078 102.358078) + (xy 106.729898 102.400252) + (xy 106.728698 102.406285) + (xy 106.728697 102.406287) + (xy 106.727894 102.410326) + (xy 106.7225 102.437442) + (xy 106.7225 103.962558) + (xy 106.723099 103.965569) + (xy 106.728663 103.993538) + (xy 106.729898 103.999748) + (xy 106.758078 104.041922) + (xy 106.800252 104.070102) + (xy 106.806285 104.071302) + (xy 106.806287 104.071303) + (xy 106.832384 104.076494) + (xy 106.837442 104.0775) + (xy 108.862558 104.0775) + (xy 108.867616 104.076494) + (xy 108.893713 104.071303) + (xy 108.893715 104.071302) + (xy 108.899748 104.070102) + (xy 108.941922 104.041922) + (xy 108.970102 103.999748) + (xy 108.971338 103.993538) + (xy 108.976901 103.965569) + (xy 108.9775 103.962558) + (xy 108.9775 103.674069) + (xy 127.473 103.674069) + (xy 127.476641 103.682859) + (xy 127.485431 103.6865) + (xy 128.261569 103.6865) + (xy 128.270359 103.682859) + (xy 128.274 103.674069) + (xy 128.401 103.674069) + (xy 128.404641 103.682859) + (xy 128.413431 103.6865) + (xy 129.189568 103.6865) + (xy 129.198358 103.682859) + (xy 129.201999 103.674069) + (xy 129.201999 103.658179) + (xy 129.2014 103.652094) + (xy 129.19148 103.602224) + (xy 129.186857 103.591063) + (xy 129.149213 103.534722) + (xy 129.139881 103.487806) + (xy 129.149213 103.465278) + (xy 129.186858 103.408936) + (xy 129.19148 103.397779) + (xy 129.201401 103.347904) + (xy 129.202 103.341823) + (xy 129.202 103.325931) + (xy 129.198359 103.317141) + (xy 129.189569 103.3135) + (xy 128.413431 103.3135) + (xy 128.404641 103.317141) + (xy 128.401 103.325931) + (xy 128.401 103.674069) + (xy 128.274 103.674069) + (xy 128.274 103.325931) + (xy 128.270359 103.317141) + (xy 128.261569 103.3135) + (xy 127.485432 103.3135) + (xy 127.476642 103.317141) + (xy 127.473001 103.325931) + (xy 127.473001 103.341821) + (xy 127.4736 103.347906) + (xy 127.48352 103.397776) + (xy 127.488143 103.408937) + (xy 127.525787 103.465278) + (xy 127.535119 103.512194) + (xy 127.525787 103.534722) + (xy 127.488142 103.591064) + (xy 127.48352 103.602221) + (xy 127.473599 103.652096) + (xy 127.473 103.658177) + (xy 127.473 103.674069) + (xy 108.9775 103.674069) + (xy 108.9775 102.994724) + (xy 119.068136 102.994724) + (xy 119.068713 102.999137) + (xy 119.068713 102.999138) + (xy 119.082671 103.105877) + (xy 119.084014 103.116145) + (xy 119.086942 103.122799) + (xy 119.090727 103.131401) + (xy 119.091185 103.132443) + (xy 119.091244 103.132813) + (xy 119.092007 103.134311) + (xy 119.094031 103.13891) + (xy 119.094031 103.138911) + (xy 119.118473 103.194458) + (xy 119.133333 103.22823) + (xy 119.147273 103.244814) + (xy 119.148029 103.245713) + (xy 119.150157 103.248434) + (xy 119.152292 103.252625) + (xy 119.160081 103.260414) + (xy 119.16373 103.264392) + (xy 119.20807 103.317141) + (xy 119.212127 103.321968) + (xy 119.235399 103.337459) + (xy 119.241836 103.342733) + (xy 119.243899 103.344232) + (xy 119.247375 103.347708) + (xy 119.251753 103.349939) + (xy 119.251756 103.349941) + (xy 119.25873 103.353494) + (xy 119.264977 103.357148) + (xy 119.314064 103.389823) + (xy 119.318313 103.391151) + (xy 119.318314 103.391151) + (xy 119.350296 103.401143) + (xy 119.360027 103.405109) + (xy 119.362799 103.406521) + (xy 119.362803 103.406522) + (xy 119.367187 103.408756) + (xy 119.377852 103.410445) + (xy 119.386713 103.41252) + (xy 119.426696 103.425012) + (xy 119.426699 103.425012) + (xy 119.430948 103.42634) + (xy 119.480069 103.427241) + (xy 119.488683 103.427999) + (xy 119.49514 103.429022) + (xy 119.495144 103.429022) + (xy 119.5 103.429791) + (xy 119.506947 103.42869) + (xy 119.517853 103.427933) + (xy 119.553383 103.428584) + (xy 119.613532 103.412185) + (xy 119.62019 103.410755) + (xy 119.622147 103.410445) + (xy 119.632813 103.408756) + (xy 119.637196 103.406522) + (xy 119.641875 103.405002) + (xy 119.641878 103.40501) + (xy 119.646727 103.403136) + (xy 119.671527 103.396375) + (xy 119.676521 103.393309) + (xy 119.739709 103.354511) + (xy 119.744037 103.352085) + (xy 119.74824 103.349944) + (xy 119.748248 103.349938) + (xy 119.752625 103.347708) + (xy 119.755427 103.344906) + (xy 119.756264 103.344346) + (xy 119.758891 103.342733) + (xy 119.775881 103.332301) + (xy 119.858058 103.241513) + (xy 119.865454 103.226248) + (xy 119.901198 103.194458) + (xy 119.9217 103.191) + (xy 121.085001 103.191) + (xy 121.129195 103.209306) + (xy 121.147501 103.2535) + (xy 121.147501 103.28341) + (xy 121.157699 103.352695) + (xy 121.209419 103.458036) + (xy 121.213071 103.461682) + (xy 121.213072 103.461683) + (xy 121.288817 103.537296) + (xy 121.288819 103.537298) + (xy 121.292472 103.540944) + (xy 121.365762 103.576769) + (xy 121.393158 103.590161) + (xy 121.397902 103.59248) + (xy 121.402705 103.593181) + (xy 121.402706 103.593181) + (xy 121.421949 103.595988) + (xy 121.466589 103.6025) + (xy 121.724317 103.6025) + (xy 121.98341 103.602499) + (xy 122.052695 103.592301) + (xy 122.05826 103.589569) + (xy 122.077053 103.580342) + (xy 122.158036 103.540581) + (xy 122.169591 103.529006) + (xy 122.237296 103.461183) + (xy 122.237298 103.461181) + (xy 122.240944 103.457528) + (xy 122.276769 103.384238) + (xy 122.290349 103.356458) + (xy 122.290349 103.356457) + (xy 122.29248 103.352098) + (xy 122.293218 103.347043) + (xy 122.297372 103.318561) + (xy 122.3025 103.283411) + (xy 122.3025 103.281083) + (xy 122.698001 103.281083) + (xy 122.698333 103.285614) + (xy 122.707478 103.347743) + (xy 122.710326 103.35691) + (xy 122.757556 103.453105) + (xy 122.763484 103.461387) + (xy 122.839111 103.536883) + (xy 122.847406 103.542799) + (xy 122.943687 103.589863) + (xy 122.952851 103.592695) + (xy 123.014391 103.601672) + (xy 123.018904 103.602) + (xy 123.199069 103.602) + (xy 123.207859 103.598359) + (xy 123.2115 103.589569) + (xy 123.2115 103.589568) + (xy 123.3385 103.589568) + (xy 123.342141 103.598358) + (xy 123.350931 103.601999) + (xy 123.531083 103.601999) + (xy 123.535614 103.601667) + (xy 123.597743 103.592522) + (xy 123.60691 103.589674) + (xy 123.703105 103.542444) + (xy 123.711387 103.536516) + (xy 123.786883 103.460889) + (xy 123.792799 103.452594) + (xy 123.839863 103.356313) + (xy 123.842695 103.347149) + (xy 123.851672 103.285609) + (xy 123.852 103.281096) + (xy 123.852 103.075931) + (xy 123.848359 103.067141) + (xy 123.839569 103.0635) + (xy 123.350931 103.0635) + (xy 123.342141 103.067141) + (xy 123.3385 103.075931) + (xy 123.3385 103.589568) + (xy 123.2115 103.589568) + (xy 123.2115 103.075931) + (xy 123.207859 103.067141) + (xy 123.199069 103.0635) + (xy 122.710432 103.0635) + (xy 122.701642 103.067141) + (xy 122.698001 103.075931) + (xy 122.698001 103.281083) + (xy 122.3025 103.281083) + (xy 122.302499 102.924069) + (xy 122.698 102.924069) + (xy 122.701641 102.932859) + (xy 122.710431 102.9365) + (xy 123.199069 102.9365) + (xy 123.207859 102.932859) + (xy 123.2115 102.924069) + (xy 123.3385 102.924069) + (xy 123.342141 102.932859) + (xy 123.350931 102.9365) + (xy 123.839568 102.9365) + (xy 123.848358 102.932859) + (xy 123.851999 102.924069) + (xy 123.851999 102.718917) + (xy 123.851667 102.714386) + (xy 123.842522 102.652257) + (xy 123.839674 102.64309) + (xy 123.792444 102.546895) + (xy 123.786516 102.538613) + (xy 123.710889 102.463117) + (xy 123.702594 102.457201) + (xy 123.606313 102.410137) + (xy 123.597149 102.407305) + (xy 123.535609 102.398328) + (xy 123.531096 102.398) + (xy 123.350931 102.398) + (xy 123.342141 102.401641) + (xy 123.3385 102.410431) + (xy 123.3385 102.924069) + (xy 123.2115 102.924069) + (xy 123.2115 102.410432) + (xy 123.207859 102.401642) + (xy 123.199069 102.398001) + (xy 123.018917 102.398001) + (xy 123.014386 102.398333) + (xy 122.952257 102.407478) + (xy 122.94309 102.410326) + (xy 122.846895 102.457556) + (xy 122.838613 102.463484) + (xy 122.763117 102.539111) + (xy 122.757201 102.547406) + (xy 122.710137 102.643687) + (xy 122.707305 102.652851) + (xy 122.698328 102.714391) + (xy 122.698 102.718904) + (xy 122.698 102.924069) + (xy 122.302499 102.924069) + (xy 122.302499 102.71659) + (xy 122.292301 102.647305) + (xy 122.286973 102.636452) + (xy 122.270097 102.602081) + (xy 122.240581 102.541964) + (xy 122.236928 102.538317) + (xy 122.161183 102.462704) + (xy 122.161181 102.462702) + (xy 122.157528 102.459056) + (xy 122.084238 102.423231) + (xy 122.056458 102.409651) + (xy 122.056457 102.409651) + (xy 122.052098 102.40752) + (xy 122.047295 102.406819) + (xy 122.047294 102.406819) + (xy 122.011804 102.401642) + (xy 121.983411 102.3975) + (xy 121.725683 102.3975) + (xy 121.46659 102.397501) + (xy 121.397305 102.407699) + (xy 121.392947 102.409839) + (xy 121.392946 102.409839) + (xy 121.373777 102.419251) + (xy 121.291964 102.459419) + (xy 121.288318 102.463071) + (xy 121.288317 102.463072) + (xy 121.212704 102.538817) + (xy 121.212702 102.538819) + (xy 121.209056 102.542472) + (xy 121.178731 102.604509) + (xy 121.159943 102.642946) + (xy 121.15752 102.647902) + (xy 121.156819 102.652705) + (xy 121.156819 102.652706) + (xy 121.154483 102.668721) + (xy 121.1475 102.716589) + (xy 121.1475 102.7465) + (xy 121.129194 102.790694) + (xy 121.085 102.809) + (xy 119.923049 102.809) + (xy 119.878855 102.790694) + (xy 119.866156 102.772373) + (xy 119.865695 102.77136) + (xy 119.865694 102.771359) + (xy 119.863852 102.767307) + (xy 119.849199 102.750302) + (xy 119.847708 102.747375) + (xy 119.8419 102.741567) + (xy 119.838746 102.73817) + (xy 119.786826 102.677914) + (xy 119.783918 102.674539) + (xy 119.763741 102.661461) + (xy 119.760155 102.658559) + (xy 119.760081 102.658661) + (xy 119.756106 102.655773) + (xy 119.752625 102.652292) + (xy 119.741343 102.646543) + (xy 119.735736 102.643309) + (xy 119.735399 102.64309) + (xy 119.707782 102.62519) + (xy 119.684893 102.610354) + (xy 119.68489 102.610353) + (xy 119.68116 102.607935) + (xy 119.676901 102.606661) + (xy 119.676898 102.60666) + (xy 119.654429 102.599941) + (xy 119.648839 102.598269) + (xy 119.638377 102.594079) + (xy 119.632813 102.591244) + (xy 119.621067 102.589384) + (xy 119.612951 102.587536) + (xy 119.563838 102.572848) + (xy 119.519496 102.572577) + (xy 119.510103 102.571809) + (xy 119.504857 102.570978) + (xy 119.504856 102.570978) + (xy 119.5 102.570209) + (xy 119.491373 102.571576) + (xy 119.48122 102.572344) + (xy 119.462836 102.572231) + (xy 119.445838 102.572127) + (xy 119.445836 102.572127) + (xy 119.441385 102.5721) + (xy 119.387011 102.587641) + (xy 119.379623 102.589275) + (xy 119.367187 102.591244) + (xy 119.362804 102.593477) + (xy 119.36187 102.593781) + (xy 119.352156 102.597603) + (xy 119.349821 102.59827) + (xy 119.327929 102.604526) + (xy 119.327927 102.604527) + (xy 119.323644 102.605751) + (xy 119.26352 102.643687) + (xy 119.262819 102.644129) + (xy 119.257842 102.646959) + (xy 119.251757 102.650059) + (xy 119.251756 102.65006) + (xy 119.247375 102.652292) + (xy 119.243897 102.65577) + (xy 119.242445 102.656825) + (xy 119.239058 102.65912) + (xy 119.22008 102.671095) + (xy 119.217137 102.674427) + (xy 119.217135 102.674429) + (xy 119.157156 102.742342) + (xy 119.156032 102.743538) + (xy 119.155775 102.743892) + (xy 119.155554 102.744113) + (xy 119.155405 102.744204) + (xy 119.154504 102.745163) + (xy 119.152292 102.747375) + (xy 119.151509 102.746592) + (xy 119.150362 102.747296) + (xy 119.151721 102.748496) + (xy 119.139018 102.762879) + (xy 119.137127 102.766907) + (xy 119.088868 102.869695) + (xy 119.088867 102.869698) + (xy 119.086976 102.873726) + (xy 119.068136 102.994724) + (xy 108.9775 102.994724) + (xy 108.9775 102.437442) + (xy 108.972106 102.410326) + (xy 108.971303 102.406287) + (xy 108.971302 102.406285) + (xy 108.970102 102.400252) + (xy 108.941922 102.358078) + (xy 108.899748 102.329898) + (xy 108.893715 102.328698) + (xy 108.893713 102.328697) + (xy 108.865569 102.323099) + (xy 108.862558 102.3225) + (xy 108.294 102.3225) + (xy 108.249806 102.304194) + (xy 108.2315 102.26) + (xy 108.2315 99.694) + (xy 108.249806 99.649806) + (xy 108.294 99.6315) + (xy 108.632901 99.6315) + (xy 108.677095 99.649806) + (xy 108.689004 99.666455) + (xy 108.709419 99.708036) + (xy 108.713071 99.711682) + (xy 108.713072 99.711683) + (xy 108.788817 99.787296) + (xy 108.788819 99.787298) + (xy 108.792472 99.790944) + (xy 108.86035 99.824124) + (xy 108.893158 99.840161) + (xy 108.897902 99.84248) + (xy 108.902705 99.843181) + (xy 108.902706 99.843181) + (xy 108.910693 99.844346) + (xy 108.966589 99.8525) + (xy 108.9715 99.8525) + (xy 109.015694 99.870806) + (xy 109.034 99.915) + (xy 109.034 100.681768) + (xy 109.03275 100.689107) + (xy 109.033477 100.68919) + (xy 109.03268 100.696181) + (xy 109.030348 100.702822) + (xy 109.031126 100.709815) + (xy 109.031126 100.709816) + (xy 109.033617 100.732197) + (xy 109.034 100.73911) + (xy 109.034 100.746533) + (xy 109.035581 100.753465) + (xy 109.036757 100.760418) + (xy 109.039986 100.789429) + (xy 109.043719 100.795393) + (xy 109.045094 100.799341) + (xy 109.046903 100.8031) + (xy 109.048468 100.809959) + (xy 109.052853 100.815461) + (xy 109.052853 100.815462) + (xy 109.066648 100.832773) + (xy 109.070744 100.838559) + (xy 109.071297 100.839442) + (xy 109.074596 100.844711) + (xy 109.079808 100.849923) + (xy 109.084493 100.855167) + (xy 109.102775 100.878109) + (xy 109.109114 100.881167) + (xy 109.114615 100.885558) + (xy 109.114189 100.886092) + (xy 109.120353 100.890468) + (xy 109.584371 101.354485) + (xy 109.588678 101.36056) + (xy 109.58925 101.360105) + (xy 109.593631 101.365613) + (xy 109.596678 101.371958) + (xy 109.607273 101.380431) + (xy 109.619766 101.390422) + (xy 109.624921 101.395035) + (xy 109.630169 101.400283) + (xy 109.633132 101.402145) + (xy 109.633139 101.402151) + (xy 109.636174 101.404058) + (xy 109.64195 101.408163) + (xy 109.664733 101.426383) + (xy 109.671591 101.42796) + (xy 109.675356 101.42978) + (xy 109.679292 101.431158) + (xy 109.685248 101.434902) + (xy 109.692239 101.435692) + (xy 109.692244 101.435694) + (xy 109.714237 101.43818) + (xy 109.721223 101.439373) + (xy 109.728297 101.441) + (xy 109.735677 101.441) + (xy 109.742698 101.441396) + (xy 109.771838 101.44469) + (xy 109.778484 101.442369) + (xy 109.785478 101.441585) + (xy 109.785554 101.442264) + (xy 109.793004 101.441) + (xy 121.085001 101.441) + (xy 121.129195 101.459306) + (xy 121.147501 101.5035) + (xy 121.147501 101.563374) + (xy 121.147766 101.565385) + (xy 121.147766 101.56539) + (xy 121.152955 101.604809) + (xy 121.153779 101.611071) + (xy 121.1558 101.615404) + (xy 121.1558 101.615405) + (xy 121.200277 101.710787) + (xy 121.200279 101.710789) + (xy 121.202589 101.715744) + (xy 121.284256 101.797411) + (xy 121.289211 101.799721) + (xy 121.289213 101.799723) + (xy 121.336076 101.821575) + (xy 121.388929 101.846221) + (xy 121.402116 101.847957) + (xy 121.434593 101.852233) + (xy 121.434601 101.852233) + (xy 121.436625 101.8525) + (xy 121.438672 101.8525) + (xy 121.675642 101.852499) + (xy 121.913374 101.852499) + (xy 121.915385 101.852234) + (xy 121.91539 101.852234) + (xy 121.956331 101.846845) + (xy 121.956332 101.846845) + (xy 121.961071 101.846221) + (xy 122.010176 101.823323) + (xy 122.060787 101.799723) + (xy 122.060789 101.799721) + (xy 122.065744 101.797411) + (xy 122.147411 101.715744) + (xy 122.149721 101.710789) + (xy 122.149723 101.710787) + (xy 122.17571 101.655056) + (xy 122.196221 101.611071) + (xy 122.201152 101.573617) + (xy 122.202233 101.565407) + (xy 122.202233 101.565399) + (xy 122.2025 101.563375) + (xy 122.202499 100.936626) + (xy 122.202499 100.936625) + (xy 122.7975 100.936625) + (xy 122.797501 101.563374) + (xy 122.797766 101.565385) + (xy 122.797766 101.56539) + (xy 122.802955 101.604809) + (xy 122.803779 101.611071) + (xy 122.8058 101.615404) + (xy 122.8058 101.615405) + (xy 122.850277 101.710787) + (xy 122.850279 101.710789) + (xy 122.852589 101.715744) + (xy 122.934256 101.797411) + (xy 122.939211 101.799721) + (xy 122.939213 101.799723) + (xy 122.986076 101.821575) + (xy 123.038929 101.846221) + (xy 123.052116 101.847957) + (xy 123.084593 101.852233) + (xy 123.084601 101.852233) + (xy 123.086625 101.8525) + (xy 123.088672 101.8525) + (xy 123.325642 101.852499) + (xy 123.563374 101.852499) + (xy 123.565385 101.852234) + (xy 123.56539 101.852234) + (xy 123.606331 101.846845) + (xy 123.606332 101.846845) + (xy 123.611071 101.846221) + (xy 123.660176 101.823323) + (xy 123.710787 101.799723) + (xy 123.710789 101.799721) + (xy 123.715744 101.797411) + (xy 123.797411 101.715744) + (xy 123.799721 101.710789) + (xy 123.799723 101.710787) + (xy 123.82571 101.655056) + (xy 123.846221 101.611071) + (xy 123.851152 101.573617) + (xy 123.852233 101.565407) + (xy 123.852233 101.565399) + (xy 123.8525 101.563375) + (xy 123.852499 100.936626) + (xy 123.852232 100.934593) + (xy 123.846845 100.893669) + (xy 123.846845 100.893668) + (xy 123.846221 100.888929) + (xy 123.839761 100.875076) + (xy 123.799723 100.789213) + (xy 123.799721 100.789211) + (xy 123.797411 100.784256) + (xy 123.715744 100.702589) + (xy 123.710789 100.700279) + (xy 123.710787 100.700277) + (xy 123.661985 100.677521) + (xy 123.611071 100.653779) + (xy 123.590887 100.651122) + (xy 123.570342 100.648417) + (xy 123.528915 100.6245) + (xy 123.516 100.586452) + (xy 123.516 100.163548) + (xy 123.534306 100.119354) + (xy 123.570343 100.101583) + (xy 123.606325 100.096847) + (xy 123.606333 100.096845) + (xy 123.611071 100.096221) + (xy 123.622546 100.09087) + (xy 123.710787 100.049723) + (xy 123.710789 100.049721) + (xy 123.715744 100.047411) + (xy 123.797411 99.965744) + (xy 123.799721 99.960789) + (xy 123.799723 99.960787) + (xy 123.823902 99.908934) + (xy 123.846221 99.861071) + (xy 123.848663 99.842522) + (xy 123.852233 99.815407) + (xy 123.852233 99.815399) + (xy 123.8525 99.813375) + (xy 123.8525 99.7535) + (xy 123.870806 99.709306) + (xy 123.915 99.691) + (xy 124.326187 99.691) + (xy 124.370381 99.709306) + (xy 124.379248 99.720473) + (xy 124.38154 99.724155) + (xy 124.383333 99.72823) + (xy 124.397272 99.744813) + (xy 124.398029 99.745713) + (xy 124.400157 99.748434) + (xy 124.402292 99.752625) + (xy 124.410081 99.760414) + (xy 124.41373 99.764392) + (xy 124.45807 99.817141) + (xy 124.462127 99.821968) + (xy 124.485399 99.837459) + (xy 124.491836 99.842733) + (xy 124.493899 99.844232) + (xy 124.497375 99.847708) + (xy 124.501753 99.849939) + (xy 124.501756 99.849941) + (xy 124.50873 99.853494) + (xy 124.514977 99.857148) + (xy 124.564064 99.889823) + (xy 124.568313 99.891151) + (xy 124.568314 99.891151) + (xy 124.600296 99.901143) + (xy 124.610027 99.905109) + (xy 124.612799 99.906521) + (xy 124.612803 99.906522) + (xy 124.617187 99.908756) + (xy 124.627852 99.910445) + (xy 124.636713 99.91252) + (xy 124.676696 99.925012) + (xy 124.676699 99.925012) + (xy 124.680948 99.92634) + (xy 124.730069 99.927241) + (xy 124.738683 99.927999) + (xy 124.74514 99.929022) + (xy 124.745144 99.929022) + (xy 124.75 99.929791) + (xy 124.756947 99.92869) + (xy 124.767853 99.927933) + (xy 124.803383 99.928584) + (xy 124.863532 99.912185) + (xy 124.87019 99.910755) + (xy 124.872147 99.910445) + (xy 124.882813 99.908756) + (xy 124.887196 99.906522) + (xy 124.891875 99.905002) + (xy 124.891878 99.90501) + (xy 124.896727 99.903136) + (xy 124.921527 99.896375) + (xy 124.926521 99.893309) + (xy 124.989709 99.854511) + (xy 124.994037 99.852085) + (xy 124.99824 99.849944) + (xy 124.998248 99.849938) + (xy 125.002625 99.847708) + (xy 125.005427 99.844906) + (xy 125.006264 99.844346) + (xy 125.007681 99.843476) + (xy 125.025881 99.832301) + (xy 125.089904 99.761569) + (xy 129.473 99.761569) + (xy 129.476641 99.770359) + (xy 129.485431 99.774) + (xy 129.674069 99.774) + (xy 129.682859 99.770359) + (xy 129.6865 99.761569) + (xy 129.8135 99.761569) + (xy 129.817141 99.770359) + (xy 129.825931 99.774) + (xy 130.174069 99.774) + (xy 130.182859 99.770359) + (xy 130.1865 99.761569) + (xy 130.1865 98.985432) + (xy 130.182859 98.976642) + (xy 130.174069 98.973001) + (xy 130.158179 98.973001) + (xy 130.152094 98.9736) + (xy 130.102224 98.98352) + (xy 130.091063 98.988143) + (xy 130.034722 99.025787) + (xy 129.987806 99.035119) + (xy 129.965278 99.025787) + (xy 129.908936 98.988142) + (xy 129.897779 98.98352) + (xy 129.847904 98.973599) + (xy 129.841823 98.973) + (xy 129.825931 98.973) + (xy 129.817141 98.976641) + (xy 129.8135 98.985431) + (xy 129.8135 99.761569) + (xy 129.6865 99.761569) + (xy 129.6865 98.985432) + (xy 129.682859 98.976642) + (xy 129.674069 98.973001) + (xy 129.658179 98.973001) + (xy 129.652094 98.9736) + (xy 129.602224 98.98352) + (xy 129.591063 98.988143) + (xy 129.534486 99.025945) + (xy 129.525945 99.034486) + (xy 129.488142 99.091064) + (xy 129.48352 99.102221) + (xy 129.473599 99.152096) + (xy 129.473 99.158177) + (xy 129.473 99.761569) + (xy 125.089904 99.761569) + (xy 125.108058 99.741513) + (xy 125.161451 99.631311) + (xy 125.166345 99.602224) + (xy 125.177551 99.535614) + (xy 125.181767 99.510552) + (xy 125.181896 99.5) + (xy 125.164536 99.378781) + (xy 125.113852 99.267307) + (xy 125.099199 99.250302) + (xy 125.097708 99.247375) + (xy 125.0919 99.241567) + (xy 125.088746 99.23817) + (xy 125.036826 99.177914) + (xy 125.033918 99.174539) + (xy 125.013741 99.161461) + (xy 125.010155 99.158559) + (xy 125.010081 99.158661) + (xy 125.006106 99.155773) + (xy 125.002625 99.152292) + (xy 124.991343 99.146543) + (xy 124.985736 99.143309) + (xy 124.934893 99.110354) + (xy 124.93489 99.110353) + (xy 124.93116 99.107935) + (xy 124.926901 99.106661) + (xy 124.926898 99.10666) + (xy 124.908345 99.101112) + (xy 124.898839 99.098269) + (xy 124.888377 99.094079) + (xy 124.882813 99.091244) + (xy 124.871067 99.089384) + (xy 124.862951 99.087536) + (xy 124.823889 99.075854) + (xy 124.813838 99.072848) + (xy 124.769496 99.072577) + (xy 124.760103 99.071809) + (xy 124.754857 99.070978) + (xy 124.754856 99.070978) + (xy 124.75 99.070209) + (xy 124.741373 99.071576) + (xy 124.73122 99.072344) + (xy 124.712836 99.072231) + (xy 124.695838 99.072127) + (xy 124.695836 99.072127) + (xy 124.691385 99.0721) + (xy 124.637011 99.087641) + (xy 124.629623 99.089275) + (xy 124.617187 99.091244) + (xy 124.612804 99.093477) + (xy 124.61187 99.093781) + (xy 124.602155 99.097603) + (xy 124.577929 99.104526) + (xy 124.577927 99.104527) + (xy 124.573644 99.105751) + (xy 124.514119 99.143309) + (xy 124.512819 99.144129) + (xy 124.507842 99.146959) + (xy 124.501757 99.150059) + (xy 124.501756 99.15006) + (xy 124.497375 99.152292) + (xy 124.493897 99.15577) + (xy 124.492445 99.156825) + (xy 124.489058 99.15912) + (xy 124.47008 99.171095) + (xy 124.467137 99.174427) + (xy 124.467135 99.174429) + (xy 124.407156 99.242342) + (xy 124.406032 99.243538) + (xy 124.405775 99.243892) + (xy 124.405554 99.244113) + (xy 124.405405 99.244204) + (xy 124.404504 99.245163) + (xy 124.402292 99.247375) + (xy 124.401509 99.246592) + (xy 124.400362 99.247296) + (xy 124.401721 99.248496) + (xy 124.389018 99.262879) + (xy 124.387127 99.266906) + (xy 124.387126 99.266908) + (xy 124.384237 99.273062) + (xy 124.348884 99.305287) + (xy 124.327662 99.309) + (xy 123.914999 99.309) + (xy 123.870805 99.290694) + (xy 123.852499 99.2465) + (xy 123.852499 99.186626) + (xy 123.852232 99.184593) + (xy 123.846845 99.143669) + (xy 123.846845 99.143668) + (xy 123.846221 99.138929) + (xy 123.837252 99.119695) + (xy 123.799723 99.039213) + (xy 123.799721 99.039211) + (xy 123.797411 99.034256) + (xy 123.715744 98.952589) + (xy 123.710789 98.950279) + (xy 123.710787 98.950277) + (xy 123.642224 98.918306) + (xy 123.611071 98.903779) + (xy 123.594831 98.901641) + (xy 123.565407 98.897767) + (xy 123.565399 98.897767) + (xy 123.563375 98.8975) + (xy 123.561328 98.8975) + (xy 123.324358 98.897501) + (xy 123.086626 98.897501) + (xy 123.084615 98.897766) + (xy 123.08461 98.897766) + (xy 123.043669 98.903155) + (xy 123.043668 98.903155) + (xy 123.038929 98.903779) + (xy 123.034595 98.9058) + (xy 122.939213 98.950277) + (xy 122.939211 98.950279) + (xy 122.934256 98.952589) + (xy 122.852589 99.034256) + (xy 122.850279 99.039211) + (xy 122.850277 99.039213) + (xy 122.834606 99.072821) + (xy 122.803779 99.138929) + (xy 122.80297 99.145073) + (xy 122.797767 99.184593) + (xy 122.797767 99.184601) + (xy 122.7975 99.186625) + (xy 122.7975 99.188672) + (xy 122.797501 99.500844) + (xy 122.797501 99.813374) + (xy 122.797766 99.815385) + (xy 122.797766 99.81539) + (xy 122.802998 99.855139) + (xy 122.803779 99.861071) + (xy 122.8058 99.865404) + (xy 122.8058 99.865405) + (xy 122.850277 99.960787) + (xy 122.850279 99.960789) + (xy 122.852589 99.965744) + (xy 122.934256 100.047411) + (xy 122.939211 100.049721) + (xy 122.939213 100.049723) + (xy 122.988015 100.072479) + (xy 123.038929 100.096221) + (xy 123.059113 100.098878) + (xy 123.079658 100.101583) + (xy 123.121085 100.1255) + (xy 123.134 100.163548) + (xy 123.134 100.586452) + (xy 123.115694 100.630646) + (xy 123.079657 100.648417) + (xy 123.043675 100.653153) + (xy 123.043667 100.653155) + (xy 123.038929 100.653779) + (xy 123.034595 100.6558) + (xy 122.939213 100.700277) + (xy 122.939211 100.700279) + (xy 122.934256 100.702589) + (xy 122.852589 100.784256) + (xy 122.850279 100.789211) + (xy 122.850277 100.789213) + (xy 122.840603 100.809959) + (xy 122.803779 100.888929) + (xy 122.803155 100.893669) + (xy 122.803155 100.89367) + (xy 122.797767 100.934593) + (xy 122.797767 100.934601) + (xy 122.7975 100.936625) + (xy 122.202499 100.936625) + (xy 122.202232 100.934593) + (xy 122.196845 100.893669) + (xy 122.196845 100.893668) + (xy 122.196221 100.888929) + (xy 122.189761 100.875076) + (xy 122.149723 100.789213) + (xy 122.149721 100.789211) + (xy 122.147411 100.784256) + (xy 122.065744 100.702589) + (xy 122.060789 100.700279) + (xy 122.060787 100.700277) + (xy 122.011985 100.677521) + (xy 121.961071 100.653779) + (xy 121.941048 100.651143) + (xy 121.915407 100.647767) + (xy 121.915399 100.647767) + (xy 121.913375 100.6475) + (xy 121.911328 100.6475) + (xy 121.674358 100.647501) + (xy 121.436626 100.647501) + (xy 121.434615 100.647766) + (xy 121.43461 100.647766) + (xy 121.393669 100.653155) + (xy 121.393668 100.653155) + (xy 121.388929 100.653779) + (xy 121.384595 100.6558) + (xy 121.289213 100.700277) + (xy 121.289211 100.700279) + (xy 121.284256 100.702589) + (xy 121.202589 100.784256) + (xy 121.200279 100.789211) + (xy 121.200277 100.789213) + (xy 121.190603 100.809959) + (xy 121.153779 100.888929) + (xy 121.153155 100.893669) + (xy 121.153155 100.89367) + (xy 121.147767 100.934593) + (xy 121.147767 100.934601) + (xy 121.1475 100.936625) + (xy 121.1475 100.9965) + (xy 121.129194 101.040694) + (xy 121.085 101.059) + (xy 109.855003 101.059) + (xy 109.810809 101.040694) + (xy 109.434306 100.664191) + (xy 109.416 100.619997) + (xy 109.416 99.914999) + (xy 109.434306 99.870805) + (xy 109.4785 99.852499) + (xy 109.48341 99.852499) + (xy 109.552695 99.842301) + (xy 109.55826 99.839569) + (xy 109.589717 99.824124) + (xy 109.658036 99.790581) + (xy 109.678223 99.770359) + (xy 109.737296 99.711183) + (xy 109.737298 99.711181) + (xy 109.740944 99.707528) + (xy 109.79248 99.602098) + (xy 109.793218 99.597043) + (xy 109.802172 99.535657) + (xy 109.8025 99.533411) + (xy 109.8025 99.531083) + (xy 110.198001 99.531083) + (xy 110.198333 99.535614) + (xy 110.207478 99.597743) + (xy 110.210326 99.60691) + (xy 110.257556 99.703105) + (xy 110.263484 99.711387) + (xy 110.339111 99.786883) + (xy 110.347406 99.792799) + (xy 110.443687 99.839863) + (xy 110.452851 99.842695) + (xy 110.514391 99.851672) + (xy 110.518904 99.852) + (xy 110.699069 99.852) + (xy 110.707859 99.848359) + (xy 110.7115 99.839569) + (xy 110.7115 99.839568) + (xy 110.8385 99.839568) + (xy 110.842141 99.848358) + (xy 110.850931 99.851999) + (xy 111.031083 99.851999) + (xy 111.035614 99.851667) + (xy 111.097743 99.842522) + (xy 111.10691 99.839674) + (xy 111.164733 99.811284) + (xy 121.148001 99.811284) + (xy 121.148266 99.815335) + (xy 121.153645 99.8562) + (xy 121.15629 99.865274) + (xy 121.200693 99.960495) + (xy 121.206873 99.969321) + (xy 121.280679 100.043127) + (xy 121.289505 100.049307) + (xy 121.384727 100.09371) + (xy 121.393801 100.096355) + (xy 121.434647 100.101733) + (xy 121.438726 100.102) + (xy 121.599069 100.102) + (xy 121.607859 100.098359) + (xy 121.6115 100.089569) + (xy 121.6115 100.089568) + (xy 121.7385 100.089568) + (xy 121.742141 100.098358) + (xy 121.750931 100.101999) + (xy 121.911284 100.101999) + (xy 121.915335 100.101734) + (xy 121.9562 100.096355) + (xy 121.965274 100.09371) + (xy 122.060495 100.049307) + (xy 122.069321 100.043127) + (xy 122.143127 99.969321) + (xy 122.149307 99.960495) + (xy 122.19371 99.865273) + (xy 122.196355 99.856199) + (xy 122.201733 99.815353) + (xy 122.202 99.811274) + (xy 122.202 99.575931) + (xy 122.198359 99.567141) + (xy 122.189569 99.5635) + (xy 121.750931 99.5635) + (xy 121.742141 99.567141) + (xy 121.7385 99.575931) + (xy 121.7385 100.089568) + (xy 121.6115 100.089568) + (xy 121.6115 99.575931) + (xy 121.607859 99.567141) + (xy 121.599069 99.5635) + (xy 121.160432 99.5635) + (xy 121.151642 99.567141) + (xy 121.148001 99.575931) + (xy 121.148001 99.811284) + (xy 111.164733 99.811284) + (xy 111.203105 99.792444) + (xy 111.211387 99.786516) + (xy 111.286883 99.710889) + (xy 111.292799 99.702594) + (xy 111.339863 99.606313) + (xy 111.342695 99.597149) + (xy 111.351672 99.535609) + (xy 111.352 99.531096) + (xy 111.352 99.424069) + (xy 121.148 99.424069) + (xy 121.151641 99.432859) + (xy 121.160431 99.4365) + (xy 121.599069 99.4365) + (xy 121.607859 99.432859) + (xy 121.6115 99.424069) + (xy 121.7385 99.424069) + (xy 121.742141 99.432859) + (xy 121.750931 99.4365) + (xy 122.189568 99.4365) + (xy 122.198358 99.432859) + (xy 122.201999 99.424069) + (xy 122.201999 99.188716) + (xy 122.201734 99.184665) + (xy 122.196355 99.1438) + (xy 122.19371 99.134726) + (xy 122.149307 99.039505) + (xy 122.143127 99.030679) + (xy 122.069321 98.956873) + (xy 122.060495 98.950693) + (xy 121.965273 98.90629) + (xy 121.956199 98.903645) + (xy 121.915353 98.898267) + (xy 121.911274 98.898) + (xy 121.750931 98.898) + (xy 121.742141 98.901641) + (xy 121.7385 98.910431) + (xy 121.7385 99.424069) + (xy 121.6115 99.424069) + (xy 121.6115 98.910432) + (xy 121.607859 98.901642) + (xy 121.599069 98.898001) + (xy 121.438716 98.898001) + (xy 121.434665 98.898266) + (xy 121.3938 98.903645) + (xy 121.384726 98.90629) + (xy 121.289505 98.950693) + (xy 121.280679 98.956873) + (xy 121.206873 99.030679) + (xy 121.200693 99.039505) + (xy 121.15629 99.134727) + (xy 121.153645 99.143801) + (xy 121.148267 99.184647) + (xy 121.148 99.188726) + (xy 121.148 99.424069) + (xy 111.352 99.424069) + (xy 111.352 99.325931) + (xy 111.348359 99.317141) + (xy 111.339569 99.3135) + (xy 110.850931 99.3135) + (xy 110.842141 99.317141) + (xy 110.8385 99.325931) + (xy 110.8385 99.839568) + (xy 110.7115 99.839568) + (xy 110.7115 99.325931) + (xy 110.707859 99.317141) + (xy 110.699069 99.3135) + (xy 110.210432 99.3135) + (xy 110.201642 99.317141) + (xy 110.198001 99.325931) + (xy 110.198001 99.531083) + (xy 109.8025 99.531083) + (xy 109.802499 99.174069) + (xy 110.198 99.174069) + (xy 110.201641 99.182859) + (xy 110.210431 99.1865) + (xy 110.699069 99.1865) + (xy 110.707859 99.182859) + (xy 110.7115 99.174069) + (xy 110.8385 99.174069) + (xy 110.842141 99.182859) + (xy 110.850931 99.1865) + (xy 111.339568 99.1865) + (xy 111.348358 99.182859) + (xy 111.351999 99.174069) + (xy 111.351999 98.968917) + (xy 111.351667 98.964386) + (xy 111.342522 98.902257) + (xy 111.339674 98.89309) + (xy 111.292444 98.796895) + (xy 111.286516 98.788613) + (xy 111.210889 98.713117) + (xy 111.202594 98.707201) + (xy 111.106313 98.660137) + (xy 111.097149 98.657305) + (xy 111.035609 98.648328) + (xy 111.031096 98.648) + (xy 110.850931 98.648) + (xy 110.842141 98.651641) + (xy 110.8385 98.660431) + (xy 110.8385 99.174069) + (xy 110.7115 99.174069) + (xy 110.7115 98.660432) + (xy 110.707859 98.651642) + (xy 110.699069 98.648001) + (xy 110.518917 98.648001) + (xy 110.514386 98.648333) + (xy 110.452257 98.657478) + (xy 110.44309 98.660326) + (xy 110.346895 98.707556) + (xy 110.338613 98.713484) + (xy 110.263117 98.789111) + (xy 110.257201 98.797406) + (xy 110.210137 98.893687) + (xy 110.207305 98.902851) + (xy 110.198328 98.964391) + (xy 110.198 98.968904) + (xy 110.198 99.174069) + (xy 109.802499 99.174069) + (xy 109.802499 98.96659) + (xy 109.792301 98.897305) + (xy 109.740581 98.791964) + (xy 109.736928 98.788317) + (xy 109.661183 98.712704) + (xy 109.661181 98.712702) + (xy 109.657528 98.709056) + (xy 109.570168 98.666353) + (xy 109.556458 98.659651) + (xy 109.556457 98.659651) + (xy 109.552098 98.65752) + (xy 109.547295 98.656819) + (xy 109.547294 98.656819) + (xy 109.511804 98.651642) + (xy 109.483411 98.6475) + (xy 109.225683 98.6475) + (xy 108.96659 98.647501) + (xy 108.897305 98.657699) + (xy 108.892947 98.659839) + (xy 108.892946 98.659839) + (xy 108.879679 98.666353) + (xy 108.791964 98.709419) + (xy 108.788318 98.713071) + (xy 108.788317 98.713072) + (xy 108.712705 98.788816) + (xy 108.712703 98.788818) + (xy 108.709056 98.792472) + (xy 108.706786 98.797115) + (xy 108.706785 98.797117) + (xy 108.689025 98.833448) + (xy 108.653171 98.865113) + (xy 108.632875 98.8685) + (xy 108.294 98.8685) + (xy 108.249806 98.850194) + (xy 108.2315 98.806) + (xy 108.2315 97.944) + (xy 108.249806 97.899806) + (xy 108.294 97.8815) + (xy 108.632901 97.8815) + (xy 108.677095 97.899806) + (xy 108.689004 97.916455) + (xy 108.709419 97.958036) + (xy 108.713071 97.961682) + (xy 108.713072 97.961683) + (xy 108.788817 98.037296) + (xy 108.788819 98.037298) + (xy 108.792472 98.040944) + (xy 108.860982 98.074433) + (xy 108.893158 98.090161) + (xy 108.897902 98.09248) + (xy 108.902705 98.093181) + (xy 108.902706 98.093181) + (xy 108.910693 98.094346) + (xy 108.966589 98.1025) + (xy 109.224317 98.1025) + (xy 109.48341 98.102499) + (xy 109.552695 98.092301) + (xy 109.55826 98.089569) + (xy 109.594108 98.071968) + (xy 109.658036 98.040581) + (xy 109.680997 98.01758) + (xy 109.737296 97.961183) + (xy 109.737298 97.961181) + (xy 109.740944 97.957528) + (xy 109.79248 97.852098) + (xy 109.8025 97.783411) + (xy 109.8025 97.781083) + (xy 110.198001 97.781083) + (xy 110.198333 97.785614) + (xy 110.207478 97.847743) + (xy 110.210326 97.85691) + (xy 110.257556 97.953105) + (xy 110.263484 97.961387) + (xy 110.339111 98.036883) + (xy 110.347406 98.042799) + (xy 110.443687 98.089863) + (xy 110.452851 98.092695) + (xy 110.514391 98.101672) + (xy 110.518904 98.102) + (xy 110.699069 98.102) + (xy 110.707859 98.098359) + (xy 110.7115 98.089569) + (xy 110.7115 98.089568) + (xy 110.8385 98.089568) + (xy 110.842141 98.098358) + (xy 110.850931 98.101999) + (xy 111.031083 98.101999) + (xy 111.035614 98.101667) + (xy 111.097743 98.092522) + (xy 111.10691 98.089674) + (xy 111.203105 98.042444) + (xy 111.211387 98.036516) + (xy 111.286883 97.960889) + (xy 111.292799 97.952594) + (xy 111.339863 97.856313) + (xy 111.342695 97.847149) + (xy 111.351672 97.785609) + (xy 111.352 97.781096) + (xy 111.352 97.744724) + (xy 119.068136 97.744724) + (xy 119.068713 97.749137) + (xy 119.068713 97.749138) + (xy 119.082177 97.852098) + (xy 119.084014 97.866145) + (xy 119.085809 97.870224) + (xy 119.089286 97.878126) + (xy 119.091185 97.882443) + (xy 119.091244 97.882813) + (xy 119.092007 97.884311) + (xy 119.094031 97.88891) + (xy 119.094031 97.888911) + (xy 119.131202 97.973386) + (xy 119.133333 97.97823) + (xy 119.147198 97.994724) + (xy 119.148029 97.995713) + (xy 119.150157 97.998434) + (xy 119.152292 98.002625) + (xy 119.160081 98.010414) + (xy 119.16373 98.014392) + (xy 119.182983 98.037296) + (xy 119.212127 98.071968) + (xy 119.235399 98.087459) + (xy 119.241836 98.092733) + (xy 119.243899 98.094232) + (xy 119.247375 98.097708) + (xy 119.251753 98.099939) + (xy 119.251756 98.099941) + (xy 119.25873 98.103494) + (xy 119.264977 98.107148) + (xy 119.314064 98.139823) + (xy 119.318313 98.141151) + (xy 119.318314 98.141151) + (xy 119.350296 98.151143) + (xy 119.360027 98.155109) + (xy 119.362799 98.156521) + (xy 119.362803 98.156522) + (xy 119.367187 98.158756) + (xy 119.377852 98.160445) + (xy 119.386713 98.16252) + (xy 119.426696 98.175012) + (xy 119.426699 98.175012) + (xy 119.430948 98.17634) + (xy 119.480069 98.177241) + (xy 119.488683 98.177999) + (xy 119.49514 98.179022) + (xy 119.495144 98.179022) + (xy 119.5 98.179791) + (xy 119.506947 98.17869) + (xy 119.517853 98.177933) + (xy 119.553383 98.178584) + (xy 119.613532 98.162185) + (xy 119.62019 98.160755) + (xy 119.622147 98.160445) + (xy 119.632813 98.158756) + (xy 119.637196 98.156522) + (xy 119.641875 98.155002) + (xy 119.641878 98.15501) + (xy 119.646727 98.153136) + (xy 119.671527 98.146375) + (xy 119.694218 98.132443) + (xy 119.739709 98.104511) + (xy 119.744037 98.102085) + (xy 119.74824 98.099944) + (xy 119.748248 98.099938) + (xy 119.752625 98.097708) + (xy 119.755427 98.094906) + (xy 119.756264 98.094346) + (xy 119.775881 98.082301) + (xy 119.858058 97.991513) + (xy 119.865454 97.976248) + (xy 119.901198 97.944458) + (xy 119.9217 97.941) + (xy 121.085001 97.941) + (xy 121.129195 97.959306) + (xy 121.147501 98.0035) + (xy 121.147501 98.063374) + (xy 121.147766 98.065385) + (xy 121.147766 98.06539) + (xy 121.152998 98.105139) + (xy 121.153779 98.111071) + (xy 121.1558 98.115404) + (xy 121.1558 98.115405) + (xy 121.200277 98.210787) + (xy 121.200279 98.210789) + (xy 121.202589 98.215744) + (xy 121.284256 98.297411) + (xy 121.289211 98.299721) + (xy 121.289213 98.299723) + (xy 121.322606 98.315294) + (xy 121.388929 98.346221) + (xy 121.402116 98.347957) + (xy 121.434593 98.352233) + (xy 121.434601 98.352233) + (xy 121.436625 98.3525) + (xy 121.438672 98.3525) + (xy 121.675642 98.352499) + (xy 121.913374 98.352499) + (xy 121.915385 98.352234) + (xy 121.91539 98.352234) + (xy 121.956331 98.346845) + (xy 121.956332 98.346845) + (xy 121.961071 98.346221) + (xy 121.979868 98.337456) + (xy 122.060787 98.299723) + (xy 122.060789 98.299721) + (xy 122.065744 98.297411) + (xy 122.147411 98.215744) + (xy 122.149721 98.210789) + (xy 122.149723 98.210787) + (xy 122.175732 98.15501) + (xy 122.196221 98.111071) + (xy 122.198663 98.092522) + (xy 122.202233 98.065407) + (xy 122.202233 98.065399) + (xy 122.2025 98.063375) + (xy 122.202499 97.436626) + (xy 122.202232 97.434593) + (xy 122.196845 97.393669) + (xy 122.196845 97.393668) + (xy 122.196221 97.388929) + (xy 122.180179 97.354526) + (xy 122.149723 97.289213) + (xy 122.149721 97.289211) + (xy 122.147411 97.284256) + (xy 122.065744 97.202589) + (xy 122.060789 97.200279) + (xy 122.060787 97.200277) + (xy 122.003148 97.1734) + (xy 121.961071 97.153779) + (xy 121.941048 97.151143) + (xy 121.915407 97.147767) + (xy 121.915399 97.147767) + (xy 121.913375 97.1475) + (xy 121.911328 97.1475) + (xy 121.674358 97.147501) + (xy 121.436626 97.147501) + (xy 121.434615 97.147766) + (xy 121.43461 97.147766) + (xy 121.393669 97.153155) + (xy 121.393668 97.153155) + (xy 121.388929 97.153779) + (xy 121.384595 97.1558) + (xy 121.289213 97.200277) + (xy 121.289211 97.200279) + (xy 121.284256 97.202589) + (xy 121.202589 97.284256) + (xy 121.200279 97.289211) + (xy 121.200277 97.289213) + (xy 121.184606 97.322821) + (xy 121.153779 97.388929) + (xy 121.152975 97.395035) + (xy 121.147767 97.434593) + (xy 121.147767 97.434601) + (xy 121.1475 97.436625) + (xy 121.1475 97.4965) + (xy 121.129194 97.540694) + (xy 121.085 97.559) + (xy 119.923049 97.559) + (xy 119.878855 97.540694) + (xy 119.866156 97.522373) + (xy 119.865695 97.52136) + (xy 119.865694 97.521359) + (xy 119.863852 97.517307) + (xy 119.849199 97.500302) + (xy 119.847708 97.497375) + (xy 119.8419 97.491567) + (xy 119.838746 97.48817) + (xy 119.786826 97.427914) + (xy 119.783918 97.424539) + (xy 119.763741 97.411461) + (xy 119.760155 97.408559) + (xy 119.760081 97.408661) + (xy 119.756106 97.405773) + (xy 119.752625 97.402292) + (xy 119.741343 97.396543) + (xy 119.735736 97.393309) + (xy 119.734615 97.392582) + (xy 119.709578 97.376354) + (xy 119.684893 97.360354) + (xy 119.68489 97.360353) + (xy 119.68116 97.357935) + (xy 119.676901 97.356661) + (xy 119.676898 97.35666) + (xy 119.658345 97.351112) + (xy 119.648839 97.348269) + (xy 119.638377 97.344079) + (xy 119.632813 97.341244) + (xy 119.621067 97.339384) + (xy 119.612951 97.337536) + (xy 119.563838 97.322848) + (xy 119.519496 97.322577) + (xy 119.510103 97.321809) + (xy 119.504857 97.320978) + (xy 119.504856 97.320978) + (xy 119.5 97.320209) + (xy 119.491373 97.321576) + (xy 119.48122 97.322344) + (xy 119.462836 97.322231) + (xy 119.445838 97.322127) + (xy 119.445836 97.322127) + (xy 119.441385 97.3221) + (xy 119.387011 97.337641) + (xy 119.379623 97.339275) + (xy 119.367187 97.341244) + (xy 119.362804 97.343477) + (xy 119.36187 97.343781) + (xy 119.352155 97.347603) + (xy 119.327929 97.354526) + (xy 119.327927 97.354527) + (xy 119.323644 97.355751) + (xy 119.264119 97.393309) + (xy 119.262819 97.394129) + (xy 119.257842 97.396959) + (xy 119.251757 97.400059) + (xy 119.251756 97.40006) + (xy 119.247375 97.402292) + (xy 119.243897 97.40577) + (xy 119.242445 97.406825) + (xy 119.239059 97.40912) + (xy 119.237794 97.409918) + (xy 119.22008 97.421095) + (xy 119.217137 97.424427) + (xy 119.217135 97.424429) + (xy 119.157156 97.492342) + (xy 119.156032 97.493538) + (xy 119.155775 97.493892) + (xy 119.155554 97.494113) + (xy 119.155405 97.494204) + (xy 119.154504 97.495163) + (xy 119.152292 97.497375) + (xy 119.151509 97.496592) + (xy 119.150362 97.497296) + (xy 119.151721 97.498496) + (xy 119.139018 97.512879) + (xy 119.128762 97.534724) + (xy 119.088868 97.619695) + (xy 119.088867 97.619698) + (xy 119.086976 97.623726) + (xy 119.068136 97.744724) + (xy 111.352 97.744724) + (xy 111.352 97.575931) + (xy 111.348359 97.567141) + (xy 111.339569 97.5635) + (xy 110.850931 97.5635) + (xy 110.842141 97.567141) + (xy 110.8385 97.575931) + (xy 110.8385 98.089568) + (xy 110.7115 98.089568) + (xy 110.7115 97.575931) + (xy 110.707859 97.567141) + (xy 110.699069 97.5635) + (xy 110.210432 97.5635) + (xy 110.201642 97.567141) + (xy 110.198001 97.575931) + (xy 110.198001 97.781083) + (xy 109.8025 97.781083) + (xy 109.802499 97.424069) + (xy 110.198 97.424069) + (xy 110.201641 97.432859) + (xy 110.210431 97.4365) + (xy 110.699069 97.4365) + (xy 110.707859 97.432859) + (xy 110.7115 97.424069) + (xy 110.8385 97.424069) + (xy 110.842141 97.432859) + (xy 110.850931 97.4365) + (xy 111.339568 97.4365) + (xy 111.348358 97.432859) + (xy 111.351999 97.424069) + (xy 111.351999 97.218917) + (xy 111.351667 97.214386) + (xy 111.342522 97.152257) + (xy 111.339674 97.14309) + (xy 111.292444 97.046895) + (xy 111.286516 97.038613) + (xy 111.210889 96.963117) + (xy 111.202594 96.957201) + (xy 111.106313 96.910137) + (xy 111.097149 96.907305) + (xy 111.035609 96.898328) + (xy 111.031096 96.898) + (xy 110.850931 96.898) + (xy 110.842141 96.901641) + (xy 110.8385 96.910431) + (xy 110.8385 97.424069) + (xy 110.7115 97.424069) + (xy 110.7115 96.910432) + (xy 110.707859 96.901642) + (xy 110.699069 96.898001) + (xy 110.518917 96.898001) + (xy 110.514386 96.898333) + (xy 110.452257 96.907478) + (xy 110.44309 96.910326) + (xy 110.346895 96.957556) + (xy 110.338613 96.963484) + (xy 110.263117 97.039111) + (xy 110.257201 97.047406) + (xy 110.210137 97.143687) + (xy 110.207305 97.152851) + (xy 110.198328 97.214391) + (xy 110.198 97.218904) + (xy 110.198 97.424069) + (xy 109.802499 97.424069) + (xy 109.802499 97.21659) + (xy 109.792301 97.147305) + (xy 109.788526 97.139615) + (xy 109.770099 97.102085) + (xy 109.740581 97.041964) + (xy 109.736928 97.038317) + (xy 109.661183 96.962704) + (xy 109.661181 96.962702) + (xy 109.657528 96.959056) + (xy 109.568358 96.915468) + (xy 109.556458 96.909651) + (xy 109.556457 96.909651) + (xy 109.552098 96.90752) + (xy 109.547295 96.906819) + (xy 109.547294 96.906819) + (xy 109.525341 96.903617) + (xy 109.483411 96.8975) + (xy 109.225683 96.8975) + (xy 108.96659 96.897501) + (xy 108.897305 96.907699) + (xy 108.892947 96.909839) + (xy 108.892946 96.909839) + (xy 108.891482 96.910558) + (xy 108.791964 96.959419) + (xy 108.788318 96.963071) + (xy 108.788317 96.963072) + (xy 108.712705 97.038816) + (xy 108.712703 97.038818) + (xy 108.709056 97.042472) + (xy 108.706786 97.047115) + (xy 108.706785 97.047117) + (xy 108.689025 97.083448) + (xy 108.653171 97.115113) + (xy 108.632875 97.1185) + (xy 108.294 97.1185) + (xy 108.249806 97.100194) + (xy 108.2315 97.056) + (xy 108.2315 96.147376) + (xy 108.2329 96.134221) + (xy 108.234212 96.128126) + (xy 108.236345 96.11822) + (xy 108.234429 96.102025) + (xy 108.231933 96.08094) + (xy 108.2315 96.073595) + (xy 108.2315 96.068308) + (xy 108.228062 96.047653) + (xy 108.227654 96.044784) + (xy 108.221418 95.992092) + (xy 108.219183 95.987438) + (xy 108.218076 95.983627) + (xy 108.216771 95.979815) + (xy 108.215922 95.974717) + (xy 108.190738 95.928043) + (xy 108.189406 95.925428) + (xy 108.168145 95.881151) + (xy 108.168142 95.881146) + (xy 108.16644 95.877602) + (xy 108.16283 95.873308) + (xy 108.162645 95.873123) + (xy 108.160056 95.870056) + (xy 108.158065 95.86749) + (xy 108.155612 95.862943) + (xy 108.114892 95.825302) + (xy 108.113123 95.823601) + (xy 106.919407 94.629884) + (xy 106.906706 94.611559) + (xy 106.879094 94.550831) + (xy 106.863852 94.517307) + (xy 106.849199 94.500302) + (xy 106.847708 94.497375) + (xy 106.8419 94.491567) + (xy 106.838746 94.48817) + (xy 106.810622 94.455531) + (xy 106.783918 94.424539) + (xy 106.763741 94.411461) + (xy 106.760155 94.408559) + (xy 106.760081 94.408661) + (xy 106.756106 94.405773) + (xy 106.752625 94.402292) + (xy 106.741343 94.396543) + (xy 106.735736 94.393309) + (xy 106.735652 94.393254) + (xy 106.707418 94.374954) + (xy 106.684893 94.360354) + (xy 106.68489 94.360353) + (xy 106.68116 94.357935) + (xy 106.676901 94.356661) + (xy 106.676898 94.35666) + (xy 106.658345 94.351112) + (xy 106.648839 94.348269) + (xy 106.638377 94.344079) + (xy 106.632813 94.341244) + (xy 106.621067 94.339384) + (xy 106.612951 94.337536) + (xy 106.563838 94.322848) + (xy 106.519496 94.322577) + (xy 106.510103 94.321809) + (xy 106.504857 94.320978) + (xy 106.504856 94.320978) + (xy 106.5 94.320209) + (xy 106.491373 94.321576) + (xy 106.48122 94.322344) + (xy 106.462836 94.322231) + (xy 106.445838 94.322127) + (xy 106.445836 94.322127) + (xy 106.441385 94.3221) + (xy 106.387011 94.337641) + (xy 106.379623 94.339275) + (xy 106.367187 94.341244) + (xy 106.362804 94.343477) + (xy 106.36187 94.343781) + (xy 106.352155 94.347603) + (xy 106.327929 94.354526) + (xy 106.327927 94.354527) + (xy 106.323644 94.355751) + (xy 106.264119 94.393309) + (xy 106.262819 94.394129) + (xy 106.257842 94.396959) + (xy 106.251757 94.400059) + (xy 106.251756 94.40006) + (xy 106.247375 94.402292) + (xy 106.243897 94.40577) + (xy 106.242445 94.406825) + (xy 106.239058 94.40912) + (xy 106.22008 94.421095) + (xy 106.217137 94.424427) + (xy 106.217135 94.424429) + (xy 106.196872 94.447373) + (xy 106.150026 94.4685) + (xy 105.939169 94.4685) + (xy 105.894975 94.450194) + (xy 105.876669 94.406) + (xy 105.876947 94.400336) + (xy 105.8775 94.397558) + (xy 105.8775 94.102442) + (xy 105.874516 94.087442) + (xy 105.871303 94.071287) + (xy 105.871302 94.071285) + (xy 105.870102 94.065252) + (xy 105.858664 94.048134) + (xy 105.852042 94.038223) + (xy 105.84271 93.991307) + (xy 105.869286 93.951533) + (xy 105.904009 93.941) + (xy 108.069997 93.941) + (xy 108.114191 93.959306) + (xy 108.629194 94.474309) + (xy 108.6475 94.518503) + (xy 108.647501 94.790102) + (xy 108.647501 95.063374) + (xy 108.647766 95.065385) + (xy 108.647766 95.06539) + (xy 108.649337 95.077326) + (xy 108.653779 95.111071) + (xy 108.6558 95.115404) + (xy 108.6558 95.115405) + (xy 108.700277 95.210787) + (xy 108.700279 95.210789) + (xy 108.702589 95.215744) + (xy 108.784256 95.297411) + (xy 108.789211 95.299721) + (xy 108.789213 95.299723) + (xy 108.838015 95.322479) + (xy 108.888929 95.346221) + (xy 108.902295 95.347981) + (xy 108.934593 95.352233) + (xy 108.934601 95.352233) + (xy 108.936625 95.3525) + (xy 108.938672 95.3525) + (xy 109.175642 95.352499) + (xy 109.413374 95.352499) + (xy 109.415385 95.352234) + (xy 109.41539 95.352234) + (xy 109.456331 95.346845) + (xy 109.456332 95.346845) + (xy 109.461071 95.346221) + (xy 109.507686 95.324484) + (xy 109.560787 95.299723) + (xy 109.560789 95.299721) + (xy 109.565744 95.297411) + (xy 109.647411 95.215744) + (xy 109.649721 95.210789) + (xy 109.649723 95.210787) + (xy 109.67372 95.159324) + (xy 109.696221 95.111071) + (xy 109.699768 95.08413) + (xy 109.702233 95.065407) + (xy 109.702233 95.065399) + (xy 109.7025 95.063375) + (xy 109.7025 95.061284) + (xy 110.298001 95.061284) + (xy 110.298266 95.065335) + (xy 110.303645 95.1062) + (xy 110.30629 95.115274) + (xy 110.350693 95.210495) + (xy 110.356873 95.219321) + (xy 110.430679 95.293127) + (xy 110.439505 95.299307) + (xy 110.534727 95.34371) + (xy 110.543801 95.346355) + (xy 110.584647 95.351733) + (xy 110.588726 95.352) + (xy 110.749069 95.352) + (xy 110.757859 95.348359) + (xy 110.7615 95.339569) + (xy 110.7615 95.339568) + (xy 110.8885 95.339568) + (xy 110.892141 95.348358) + (xy 110.900931 95.351999) + (xy 111.061284 95.351999) + (xy 111.065335 95.351734) + (xy 111.1062 95.346355) + (xy 111.115274 95.34371) + (xy 111.182079 95.312558) + (xy 137.9725 95.312558) + (xy 137.973099 95.315569) + (xy 137.978697 95.34371) + (xy 137.979898 95.349748) + (xy 138.008078 95.391922) + (xy 138.050252 95.420102) + (xy 138.056285 95.421302) + (xy 138.056287 95.421303) + (xy 138.081917 95.426401) + (xy 138.087442 95.4275) + (xy 139.512558 95.4275) + (xy 139.518083 95.426401) + (xy 139.543713 95.421303) + (xy 139.543715 95.421302) + (xy 139.549748 95.420102) + (xy 139.591922 95.391922) + (xy 139.620102 95.349748) + (xy 139.621304 95.34371) + (xy 139.626901 95.315569) + (xy 139.6275 95.312558) + (xy 139.6275 95.309438) + (xy 140.373 95.309438) + (xy 140.373599 95.315519) + (xy 140.379169 95.343518) + (xy 140.383788 95.35467) + (xy 140.405019 95.386445) + (xy 140.413555 95.394981) + (xy 140.44533 95.416212) + (xy 140.456482 95.420831) + (xy 140.484481 95.426401) + (xy 140.490562 95.427) + (xy 141.124069 95.427) + (xy 141.132859 95.423359) + (xy 141.1365 95.414569) + (xy 141.2635 95.414569) + (xy 141.267141 95.423359) + (xy 141.275931 95.427) + (xy 141.909438 95.427) + (xy 141.915519 95.426401) + (xy 141.943518 95.420831) + (xy 141.95467 95.416212) + (xy 141.986445 95.394981) + (xy 141.994981 95.386445) + (xy 142.016212 95.35467) + (xy 142.020831 95.343518) + (xy 142.026401 95.315519) + (xy 142.027 95.309438) + (xy 142.027 94.775931) + (xy 142.023359 94.767141) + (xy 142.014569 94.7635) + (xy 141.275931 94.7635) + (xy 141.267141 94.767141) + (xy 141.2635 94.775931) + (xy 141.2635 95.414569) + (xy 141.1365 95.414569) + (xy 141.1365 94.775931) + (xy 141.132859 94.767141) + (xy 141.124069 94.7635) + (xy 140.385431 94.7635) + (xy 140.376641 94.767141) + (xy 140.373 94.775931) + (xy 140.373 95.309438) + (xy 139.6275 95.309438) + (xy 139.6275 94.624069) + (xy 140.373 94.624069) + (xy 140.376641 94.632859) + (xy 140.385431 94.6365) + (xy 141.124069 94.6365) + (xy 141.132859 94.632859) + (xy 141.1365 94.624069) + (xy 141.2635 94.624069) + (xy 141.267141 94.632859) + (xy 141.275931 94.6365) + (xy 142.014569 94.6365) + (xy 142.023359 94.632859) + (xy 142.027 94.624069) + (xy 142.027 94.090562) + (xy 142.026401 94.084481) + (xy 142.020831 94.056482) + (xy 142.016212 94.04533) + (xy 141.994981 94.013555) + (xy 141.986445 94.005019) + (xy 141.95467 93.983788) + (xy 141.943518 93.979169) + (xy 141.915519 93.973599) + (xy 141.909438 93.973) + (xy 141.275931 93.973) + (xy 141.267141 93.976641) + (xy 141.2635 93.985431) + (xy 141.2635 94.624069) + (xy 141.1365 94.624069) + (xy 141.1365 93.985431) + (xy 141.132859 93.976641) + (xy 141.124069 93.973) + (xy 140.490562 93.973) + (xy 140.484481 93.973599) + (xy 140.456482 93.979169) + (xy 140.44533 93.983788) + (xy 140.413555 94.005019) + (xy 140.405019 94.013555) + (xy 140.383788 94.04533) + (xy 140.379169 94.056482) + (xy 140.373599 94.084481) + (xy 140.373 94.090562) + (xy 140.373 94.624069) + (xy 139.6275 94.624069) + (xy 139.6275 94.087442) + (xy 139.626494 94.082384) + (xy 139.621303 94.056287) + (xy 139.621302 94.056285) + (xy 139.620102 94.050252) + (xy 139.591922 94.008078) + (xy 139.549748 93.979898) + (xy 139.543715 93.978698) + (xy 139.543713 93.978697) + (xy 139.515569 93.973099) + (xy 139.512558 93.9725) + (xy 138.087442 93.9725) + (xy 138.084431 93.973099) + (xy 138.056287 93.978697) + (xy 138.056285 93.978698) + (xy 138.050252 93.979898) + (xy 138.008078 94.008078) + (xy 137.979898 94.050252) + (xy 137.978698 94.056285) + (xy 137.978697 94.056287) + (xy 137.973506 94.082384) + (xy 137.9725 94.087442) + (xy 137.9725 95.312558) + (xy 111.182079 95.312558) + (xy 111.210495 95.299307) + (xy 111.219321 95.293127) + (xy 111.293127 95.219321) + (xy 111.299307 95.210495) + (xy 111.34371 95.115273) + (xy 111.346355 95.106199) + (xy 111.351733 95.065353) + (xy 111.352 95.061274) + (xy 111.352 94.825931) + (xy 111.348359 94.817141) + (xy 111.339569 94.8135) + (xy 110.900931 94.8135) + (xy 110.892141 94.817141) + (xy 110.8885 94.825931) + (xy 110.8885 95.339568) + (xy 110.7615 95.339568) + (xy 110.7615 94.825931) + (xy 110.757859 94.817141) + (xy 110.749069 94.8135) + (xy 110.310432 94.8135) + (xy 110.301642 94.817141) + (xy 110.298001 94.825931) + (xy 110.298001 95.061284) + (xy 109.7025 95.061284) + (xy 109.702499 94.674069) + (xy 110.298 94.674069) + (xy 110.301641 94.682859) + (xy 110.310431 94.6865) + (xy 110.749069 94.6865) + (xy 110.757859 94.682859) + (xy 110.7615 94.674069) + (xy 110.8885 94.674069) + (xy 110.892141 94.682859) + (xy 110.900931 94.6865) + (xy 111.339568 94.6865) + (xy 111.348358 94.682859) + (xy 111.351999 94.674069) + (xy 111.351999 94.438716) + (xy 111.351734 94.434665) + (xy 111.346355 94.3938) + (xy 111.34371 94.384726) + (xy 111.299307 94.289505) + (xy 111.293127 94.280679) + (xy 111.219321 94.206873) + (xy 111.210495 94.200693) + (xy 111.115273 94.15629) + (xy 111.106199 94.153645) + (xy 111.065353 94.148267) + (xy 111.061274 94.148) + (xy 110.900931 94.148) + (xy 110.892141 94.151641) + (xy 110.8885 94.160431) + (xy 110.8885 94.674069) + (xy 110.7615 94.674069) + (xy 110.7615 94.160432) + (xy 110.757859 94.151642) + (xy 110.749069 94.148001) + (xy 110.588716 94.148001) + (xy 110.584665 94.148266) + (xy 110.5438 94.153645) + (xy 110.534726 94.15629) + (xy 110.439505 94.200693) + (xy 110.430679 94.206873) + (xy 110.356873 94.280679) + (xy 110.350693 94.289505) + (xy 110.30629 94.384727) + (xy 110.303645 94.393801) + (xy 110.298267 94.434647) + (xy 110.298 94.438726) + (xy 110.298 94.674069) + (xy 109.702499 94.674069) + (xy 109.702499 94.436626) + (xy 109.701458 94.428713) + (xy 109.696845 94.393669) + (xy 109.696845 94.393668) + (xy 109.696221 94.388929) + (xy 109.680179 94.354526) + (xy 109.649723 94.289213) + (xy 109.649721 94.289211) + (xy 109.647411 94.284256) + (xy 109.565744 94.202589) + (xy 109.560789 94.200279) + (xy 109.560787 94.200277) + (xy 109.511816 94.177442) + (xy 109.461071 94.153779) + (xy 109.444831 94.151641) + (xy 109.415407 94.147767) + (xy 109.415399 94.147767) + (xy 109.413375 94.1475) + (xy 109.411328 94.1475) + (xy 109.174358 94.147501) + (xy 108.936626 94.147501) + (xy 108.934615 94.147766) + (xy 108.93461 94.147766) + (xy 108.888929 94.153779) + (xy 108.888756 94.152468) + (xy 108.846492 94.147844) + (xy 108.832354 94.137239) + (xy 108.340628 93.645513) + (xy 108.336323 93.639439) + (xy 108.33575 93.639895) + (xy 108.331369 93.634387) + (xy 108.328322 93.628042) + (xy 108.305239 93.609582) + (xy 108.30008 93.604965) + (xy 108.294831 93.599716) + (xy 108.288828 93.595943) + (xy 108.283052 93.591838) + (xy 108.260267 93.573617) + (xy 108.253407 93.57204) + (xy 108.249647 93.570222) + (xy 108.245712 93.568844) + (xy 108.239752 93.565098) + (xy 108.232757 93.564307) + (xy 108.227562 93.562488) + (xy 108.191901 93.530604) + (xy 108.18923 93.482844) + (xy 108.221114 93.447183) + (xy 108.248218 93.441) + (xy 108.476187 93.441) + (xy 108.520381 93.459306) + (xy 108.529248 93.470473) + (xy 108.53154 93.474155) + (xy 108.533333 93.47823) + (xy 108.544842 93.491922) + (xy 108.548029 93.495713) + (xy 108.550157 93.498434) + (xy 108.552292 93.502625) + (xy 108.560081 93.510414) + (xy 108.563729 93.514391) + (xy 108.612127 93.571968) + (xy 108.635399 93.587459) + (xy 108.641836 93.592733) + (xy 108.643899 93.594232) + (xy 108.647375 93.597708) + (xy 108.651753 93.599939) + (xy 108.651756 93.599941) + (xy 108.65873 93.603494) + (xy 108.664977 93.607148) + (xy 108.714064 93.639823) + (xy 108.718313 93.641151) + (xy 108.718314 93.641151) + (xy 108.750296 93.651143) + (xy 108.760027 93.655109) + (xy 108.762799 93.656521) + (xy 108.762803 93.656522) + (xy 108.767187 93.658756) + (xy 108.777852 93.660445) + (xy 108.786713 93.66252) + (xy 108.826696 93.675012) + (xy 108.826699 93.675012) + (xy 108.830948 93.67634) + (xy 108.880069 93.677241) + (xy 108.888683 93.677999) + (xy 108.89514 93.679022) + (xy 108.895144 93.679022) + (xy 108.9 93.679791) + (xy 108.906947 93.67869) + (xy 108.917853 93.677933) + (xy 108.953383 93.678584) + (xy 109.013532 93.662185) + (xy 109.02019 93.660755) + (xy 109.022147 93.660445) + (xy 109.032813 93.658756) + (xy 109.037196 93.656522) + (xy 109.041875 93.655002) + (xy 109.041878 93.65501) + (xy 109.046727 93.653136) + (xy 109.071527 93.646375) + (xy 109.082824 93.639439) + (xy 109.139709 93.604511) + (xy 109.144037 93.602085) + (xy 109.14824 93.599944) + (xy 109.148248 93.599938) + (xy 109.152625 93.597708) + (xy 109.155427 93.594906) + (xy 109.156264 93.594346) + (xy 109.158891 93.592733) + (xy 109.175881 93.582301) + (xy 109.258058 93.491513) + (xy 109.261578 93.484249) + (xy 109.265454 93.476248) + (xy 109.301198 93.444458) + (xy 109.3217 93.441) + (xy 109.478041 93.441) + (xy 109.48538 93.44225) + (xy 109.485463 93.441523) + (xy 109.492454 93.44232) + (xy 109.499095 93.444652) + (xy 109.506088 93.443874) + (xy 109.506089 93.443874) + (xy 109.52847 93.441383) + (xy 109.535383 93.441) + (xy 109.542806 93.441) + (xy 109.549738 93.439419) + (xy 109.556691 93.438243) + (xy 109.585702 93.435014) + (xy 109.591666 93.431281) + (xy 109.595614 93.429906) + (xy 109.599373 93.428097) + (xy 109.606232 93.426532) + (xy 109.629047 93.408351) + (xy 109.634832 93.404256) + (xy 109.637988 93.40228) + (xy 109.63799 93.402279) + (xy 109.640984 93.400404) + (xy 109.646197 93.395191) + (xy 109.651441 93.390506) + (xy 109.668877 93.376612) + (xy 109.668877 93.376611) + (xy 109.674382 93.372225) + (xy 109.67744 93.365886) + (xy 109.681831 93.360385) + (xy 109.682365 93.360811) + (xy 109.686741 93.354647) + (xy 109.768582 93.272806) + (xy 109.812776 93.2545) + (xy 130.691917 93.2545) + (xy 130.736111 93.272806) + (xy 131.135226 93.671921) + (xy 131.153532 93.716115) + (xy 131.137877 93.757488) + (xy 131.132862 93.763167) + (xy 131.106634 93.792864) + (xy 131.105511 93.794058) + (xy 131.105252 93.794415) + (xy 131.105033 93.794634) + (xy 131.104884 93.794725) + (xy 131.103983 93.795684) + (xy 131.101771 93.797896) + (xy 131.100988 93.797113) + (xy 131.099841 93.797817) + (xy 131.1012 93.799017) + (xy 131.092333 93.809057) + (xy 131.088497 93.8134) + (xy 131.086606 93.817428) + (xy 131.038347 93.920216) + (xy 131.038346 93.920219) + (xy 131.036455 93.924247) + (xy 131.017615 94.045245) + (xy 131.018192 94.049658) + (xy 131.018192 94.049659) + (xy 131.031032 94.147844) + (xy 131.033493 94.166666) + (xy 131.040664 94.182964) + (xy 131.040723 94.183334) + (xy 131.041486 94.184832) + (xy 131.082812 94.278751) + (xy 131.096751 94.295334) + (xy 131.097508 94.296234) + (xy 131.099636 94.298955) + (xy 131.101771 94.303146) + (xy 131.10956 94.310935) + (xy 131.113209 94.314913) + (xy 131.151406 94.360354) + (xy 131.161606 94.372489) + (xy 131.184878 94.38798) + (xy 131.191315 94.393254) + (xy 131.193378 94.394753) + (xy 131.196854 94.398229) + (xy 131.201232 94.40046) + (xy 131.201235 94.400462) + (xy 131.208209 94.404015) + (xy 131.214456 94.407669) + (xy 131.263543 94.440344) + (xy 131.267792 94.441672) + (xy 131.267793 94.441672) + (xy 131.299775 94.451664) + (xy 131.309506 94.45563) + (xy 131.312278 94.457042) + (xy 131.312282 94.457043) + (xy 131.316666 94.459277) + (xy 131.327331 94.460966) + (xy 131.336192 94.463041) + (xy 131.376175 94.475533) + (xy 131.376178 94.475533) + (xy 131.380427 94.476861) + (xy 131.429548 94.477762) + (xy 131.438162 94.47852) + (xy 131.444619 94.479543) + (xy 131.444623 94.479543) + (xy 131.449479 94.480312) + (xy 131.456426 94.479211) + (xy 131.467332 94.478454) + (xy 131.502862 94.479105) + (xy 131.563011 94.462706) + (xy 131.569669 94.461276) + (xy 131.571626 94.460966) + (xy 131.582292 94.459277) + (xy 131.586675 94.457043) + (xy 131.591354 94.455523) + (xy 131.591357 94.455531) + (xy 131.596206 94.453657) + (xy 131.621006 94.446896) + (xy 131.633153 94.439438) + (xy 131.689188 94.405032) + (xy 131.693516 94.402606) + (xy 131.697719 94.400465) + (xy 131.697727 94.400459) + (xy 131.702104 94.398229) + (xy 131.704906 94.395427) + (xy 131.705743 94.394867) + (xy 131.707694 94.393669) + (xy 131.72536 94.382822) + (xy 131.807537 94.292034) + (xy 131.86093 94.181832) + (xy 131.862796 94.170745) + (xy 131.877316 94.084431) + (xy 131.881246 94.061073) + (xy 131.881375 94.050521) + (xy 131.864538 93.932955) + (xy 131.876394 93.886612) + (xy 131.917547 93.862226) + (xy 131.945044 93.864439) + (xy 131.981469 93.875819) + (xy 132.03059 93.87672) + (xy 132.039204 93.877478) + (xy 132.045661 93.878501) + (xy 132.045665 93.878501) + (xy 132.050521 93.87927) + (xy 132.057468 93.878169) + (xy 132.068374 93.877412) + (xy 132.103904 93.878063) + (xy 132.164053 93.861664) + (xy 132.170711 93.860234) + (xy 132.172221 93.859995) + (xy 132.183334 93.858235) + (xy 132.187717 93.856001) + (xy 132.192396 93.854481) + (xy 132.192399 93.854489) + (xy 132.197248 93.852615) + (xy 132.222048 93.845854) + (xy 132.280338 93.810064) + (xy 132.29023 93.80399) + (xy 132.294558 93.801564) + (xy 132.298761 93.799423) + (xy 132.298769 93.799417) + (xy 132.303146 93.797187) + (xy 132.305948 93.794385) + (xy 132.306785 93.793825) + (xy 132.30835 93.792864) + (xy 132.326402 93.78178) + (xy 132.408579 93.690992) + (xy 132.461972 93.58079) + (xy 132.463042 93.574433) + (xy 132.477638 93.487669) + (xy 132.482288 93.460031) + (xy 132.482417 93.449479) + (xy 132.465057 93.32826) + (xy 132.414373 93.216786) + (xy 132.39972 93.199781) + (xy 132.398229 93.196854) + (xy 132.392421 93.191046) + (xy 132.389267 93.187649) + (xy 132.337347 93.127393) + (xy 132.334439 93.124018) + (xy 132.314262 93.11094) + (xy 132.310676 93.108038) + (xy 132.310602 93.10814) + (xy 132.306627 93.105252) + (xy 132.303146 93.101771) + (xy 132.291864 93.096022) + (xy 132.286257 93.092788) + (xy 132.285085 93.092028) + (xy 132.265162 93.079115) + (xy 132.235414 93.059833) + (xy 132.235411 93.059832) + (xy 132.231681 93.057414) + (xy 132.227422 93.05614) + (xy 132.227419 93.056139) + (xy 132.208866 93.050591) + (xy 132.19936 93.047748) + (xy 132.188898 93.043558) + (xy 132.183334 93.040723) + (xy 132.171588 93.038863) + (xy 132.163472 93.037015) + (xy 132.159055 93.035694) + (xy 132.114359 93.022327) + (xy 132.070017 93.022056) + (xy 132.060624 93.021288) + (xy 132.055378 93.020457) + (xy 132.055377 93.020457) + (xy 132.050521 93.019688) + (xy 132.041894 93.021055) + (xy 132.031741 93.021823) + (xy 132.013357 93.02171) + (xy 131.996359 93.021606) + (xy 131.996357 93.021606) + (xy 131.991906 93.021579) + (xy 131.937532 93.03712) + (xy 131.930144 93.038754) + (xy 131.917708 93.040723) + (xy 131.913325 93.042956) + (xy 131.912391 93.04326) + (xy 131.902676 93.047082) + (xy 131.87845 93.054005) + (xy 131.878448 93.054006) + (xy 131.874165 93.05523) + (xy 131.81464 93.092788) + (xy 131.81334 93.093608) + (xy 131.808363 93.096438) + (xy 131.802278 93.099538) + (xy 131.802277 93.099539) + (xy 131.797896 93.101771) + (xy 131.794418 93.105249) + (xy 131.792966 93.106304) + (xy 131.789579 93.108599) + (xy 131.770601 93.120574) + (xy 131.767657 93.123908) + (xy 131.767654 93.12391) + (xy 131.761467 93.130915) + (xy 131.71849 93.15192) + (xy 131.670429 93.133734) + (xy 131.118708 92.582013) + (xy 131.114403 92.575939) + (xy 131.11383 92.576395) + (xy 131.109449 92.570887) + (xy 131.106402 92.564542) + (xy 131.083319 92.546082) + (xy 131.07816 92.541465) + (xy 131.072911 92.536216) + (xy 131.066908 92.532443) + (xy 131.061132 92.528338) + (xy 131.038347 92.510117) + (xy 131.031487 92.50854) + (xy 131.027727 92.506722) + (xy 131.023791 92.505344) + (xy 131.017832 92.501598) + (xy 131.010838 92.500807) + (xy 131.010837 92.500807) + (xy 130.988844 92.498321) + (xy 130.981867 92.497129) + (xy 130.974783 92.4955) + (xy 130.967409 92.4955) + (xy 130.960388 92.495104) + (xy 130.958707 92.494914) + (xy 130.931242 92.491809) + (xy 130.924597 92.49413) + (xy 130.917603 92.494914) + (xy 130.917527 92.494236) + (xy 130.910075 92.4955) + (xy 109.812776 92.4955) + (xy 109.768582 92.477194) + (xy 109.686901 92.395513) + (xy 109.682596 92.389439) + (xy 109.682023 92.389895) + (xy 109.677642 92.384387) + (xy 109.674595 92.378042) + (xy 109.651512 92.359582) + (xy 109.646353 92.354965) + (xy 109.641104 92.349716) + (xy 109.635101 92.345943) + (xy 109.629325 92.341838) + (xy 109.60654 92.323617) + (xy 109.59968 92.32204) + (xy 109.59592 92.320222) + (xy 109.591984 92.318844) + (xy 109.586025 92.315098) + (xy 109.579031 92.314307) + (xy 109.57903 92.314307) + (xy 109.557037 92.311821) + (xy 109.55006 92.310629) + (xy 109.542976 92.309) + (xy 109.535602 92.309) + (xy 109.528581 92.308604) + (xy 109.5269 92.308414) + (xy 109.499435 92.305309) + (xy 109.49279 92.30763) + (xy 109.485796 92.308414) + (xy 109.48572 92.307736) + (xy 109.478268 92.309) + (xy 107.105002 92.309) + (xy 107.060808 92.290694) + (xy 106.915628 92.145514) + (xy 106.911323 92.13944) + (xy 106.910749 92.139896) + (xy 106.90637 92.134391) + (xy 106.903322 92.128042) + (xy 106.880239 92.109582) + (xy 106.87508 92.104965) + (xy 106.869831 92.099716) + (xy 106.863828 92.095943) + (xy 106.858052 92.091838) + (xy 106.835267 92.073617) + (xy 106.828407 92.07204) + (xy 106.824647 92.070222) + (xy 106.820712 92.068844) + (xy 106.814752 92.065098) + (xy 106.807757 92.064307) + (xy 106.802562 92.062488) + (xy 106.766901 92.030604) + (xy 106.76423 91.982844) + (xy 106.796114 91.947183) + (xy 106.823218 91.941) + (xy 106.976187 91.941) + (xy 107.020381 91.959306) + (xy 107.029248 91.970473) + (xy 107.03154 91.974155) + (xy 107.033333 91.97823) + (xy 107.047198 91.994724) + (xy 107.048029 91.995713) + (xy 107.050157 91.998434) + (xy 107.052292 92.002625) + (xy 107.060081 92.010414) + (xy 107.063729 92.014391) + (xy 107.112127 92.071968) + (xy 107.135399 92.087459) + (xy 107.141836 92.092733) + (xy 107.143899 92.094232) + (xy 107.147375 92.097708) + (xy 107.151753 92.099939) + (xy 107.151756 92.099941) + (xy 107.15873 92.103494) + (xy 107.164977 92.107148) + (xy 107.214064 92.139823) + (xy 107.218313 92.141151) + (xy 107.218314 92.141151) + (xy 107.250296 92.151143) + (xy 107.260027 92.155109) + (xy 107.262799 92.156521) + (xy 107.262803 92.156522) + (xy 107.267187 92.158756) + (xy 107.277852 92.160445) + (xy 107.286713 92.16252) + (xy 107.326696 92.175012) + (xy 107.326699 92.175012) + (xy 107.330948 92.17634) + (xy 107.380069 92.177241) + (xy 107.388683 92.177999) + (xy 107.39514 92.179022) + (xy 107.395144 92.179022) + (xy 107.4 92.179791) + (xy 107.406947 92.17869) + (xy 107.417853 92.177933) + (xy 107.453383 92.178584) + (xy 107.513532 92.162185) + (xy 107.52019 92.160755) + (xy 107.522147 92.160445) + (xy 107.532813 92.158756) + (xy 107.537196 92.156522) + (xy 107.541875 92.155002) + (xy 107.541878 92.15501) + (xy 107.546727 92.153136) + (xy 107.571527 92.146375) + (xy 107.594218 92.132443) + (xy 107.639709 92.104511) + (xy 107.644037 92.102085) + (xy 107.64824 92.099944) + (xy 107.648248 92.099938) + (xy 107.652625 92.097708) + (xy 107.655427 92.094906) + (xy 107.656264 92.094346) + (xy 107.658891 92.092733) + (xy 107.675881 92.082301) + (xy 107.758058 91.991513) + (xy 107.811451 91.881311) + (xy 107.814632 91.862406) + (xy 107.829949 91.771357) + (xy 107.831767 91.760552) + (xy 107.831896 91.75) + (xy 107.814536 91.628781) + (xy 107.763852 91.517307) + (xy 107.749199 91.500302) + (xy 107.747708 91.497375) + (xy 107.7419 91.491567) + (xy 107.738746 91.48817) + (xy 107.692715 91.434748) + (xy 107.683918 91.424539) + (xy 107.663741 91.411461) + (xy 107.660155 91.408559) + (xy 107.660081 91.408661) + (xy 107.656106 91.405773) + (xy 107.652625 91.402292) + (xy 107.641343 91.396543) + (xy 107.635736 91.393309) + (xy 107.584893 91.360354) + (xy 107.58489 91.360353) + (xy 107.58116 91.357935) + (xy 107.576901 91.356661) + (xy 107.576898 91.35666) + (xy 107.554429 91.349941) + (xy 107.548839 91.348269) + (xy 107.538377 91.344079) + (xy 107.532813 91.341244) + (xy 107.521067 91.339384) + (xy 107.512951 91.337536) + (xy 107.463838 91.322848) + (xy 107.419496 91.322577) + (xy 107.410103 91.321809) + (xy 107.404857 91.320978) + (xy 107.404856 91.320978) + (xy 107.4 91.320209) + (xy 107.391373 91.321576) + (xy 107.38122 91.322344) + (xy 107.362836 91.322231) + (xy 107.345838 91.322127) + (xy 107.345836 91.322127) + (xy 107.341385 91.3221) + (xy 107.287011 91.337641) + (xy 107.279623 91.339275) + (xy 107.267187 91.341244) + (xy 107.262804 91.343477) + (xy 107.26187 91.343781) + (xy 107.252156 91.347603) + (xy 107.249821 91.34827) + (xy 107.227929 91.354526) + (xy 107.227927 91.354527) + (xy 107.223644 91.355751) + (xy 107.164119 91.393309) + (xy 107.162819 91.394129) + (xy 107.157842 91.396959) + (xy 107.151757 91.400059) + (xy 107.151756 91.40006) + (xy 107.147375 91.402292) + (xy 107.143897 91.40577) + (xy 107.142445 91.406825) + (xy 107.139058 91.40912) + (xy 107.12008 91.421095) + (xy 107.117137 91.424427) + (xy 107.117135 91.424429) + (xy 107.057156 91.492342) + (xy 107.056032 91.493538) + (xy 107.055775 91.493892) + (xy 107.055554 91.494113) + (xy 107.055405 91.494204) + (xy 107.054504 91.495163) + (xy 107.052292 91.497375) + (xy 107.051509 91.496592) + (xy 107.050362 91.497296) + (xy 107.051721 91.498496) + (xy 107.039018 91.512879) + (xy 107.037127 91.516906) + (xy 107.037126 91.516908) + (xy 107.034237 91.523062) + (xy 106.998884 91.555287) + (xy 106.977662 91.559) + (xy 105.904009 91.559) + (xy 105.859815 91.540694) + (xy 105.841509 91.4965) + (xy 105.852042 91.461777) + (xy 105.866683 91.439865) + (xy 105.870102 91.434748) + (xy 105.871462 91.427914) + (xy 105.876901 91.400569) + (xy 105.8775 91.397558) + (xy 105.8775 91.102442) + (xy 105.870102 91.065252) + (xy 105.852042 91.038223) + (xy 105.84271 90.991307) + (xy 105.869286 90.951533) + (xy 105.904009 90.941) + (xy 108.131768 90.941) + (xy 108.139107 90.94225) + (xy 108.13919 90.941523) + (xy 108.146181 90.94232) + (xy 108.152822 90.944652) + (xy 108.159815 90.943874) + (xy 108.159816 90.943874) + (xy 108.182197 90.941383) + (xy 108.18911 90.941) + (xy 108.196533 90.941) + (xy 108.203465 90.939419) + (xy 108.210418 90.938243) + (xy 108.239429 90.935014) + (xy 108.245393 90.931281) + (xy 108.249341 90.929906) + (xy 108.2531 90.928097) + (xy 108.259959 90.926532) + (xy 108.282774 90.908351) + (xy 108.288559 90.904256) + (xy 108.291715 90.90228) + (xy 108.291717 90.902279) + (xy 108.294711 90.900404) + (xy 108.299924 90.895191) + (xy 108.305168 90.890506) + (xy 108.322604 90.876612) + (xy 108.322604 90.876611) + (xy 108.328109 90.872225) + (xy 108.331167 90.865886) + (xy 108.335558 90.860385) + (xy 108.336092 90.860811) + (xy 108.340468 90.854647) + (xy 108.832354 90.362761) + (xy 108.876548 90.344455) + (xy 108.888929 90.346222) + (xy 108.888929 90.346221) + (xy 108.934593 90.352233) + (xy 108.934601 90.352233) + (xy 108.936625 90.3525) + (xy 108.938672 90.3525) + (xy 109.175642 90.352499) + (xy 109.413374 90.352499) + (xy 109.415385 90.352234) + (xy 109.41539 90.352234) + (xy 109.456331 90.346845) + (xy 109.456332 90.346845) + (xy 109.461071 90.346221) + (xy 109.48355 90.335739) + (xy 109.560787 90.299723) + (xy 109.560789 90.299721) + (xy 109.565744 90.297411) + (xy 109.647411 90.215744) + (xy 109.649721 90.210789) + (xy 109.649723 90.210787) + (xy 109.677064 90.152153) + (xy 109.696221 90.111071) + (xy 109.701085 90.074124) + (xy 109.702233 90.065407) + (xy 109.702233 90.065399) + (xy 109.7025 90.063375) + (xy 109.7025 90.061284) + (xy 110.298001 90.061284) + (xy 110.298266 90.065335) + (xy 110.303645 90.1062) + (xy 110.30629 90.115274) + (xy 110.350693 90.210495) + (xy 110.356873 90.219321) + (xy 110.430679 90.293127) + (xy 110.439505 90.299307) + (xy 110.534727 90.34371) + (xy 110.543801 90.346355) + (xy 110.584647 90.351733) + (xy 110.588726 90.352) + (xy 110.749069 90.352) + (xy 110.757859 90.348359) + (xy 110.7615 90.339569) + (xy 110.7615 90.339568) + (xy 110.8885 90.339568) + (xy 110.892141 90.348358) + (xy 110.900931 90.351999) + (xy 111.061284 90.351999) + (xy 111.065335 90.351734) + (xy 111.1062 90.346355) + (xy 111.115274 90.34371) + (xy 111.210495 90.299307) + (xy 111.219321 90.293127) + (xy 111.293127 90.219321) + (xy 111.299307 90.210495) + (xy 111.34371 90.115273) + (xy 111.346355 90.106199) + (xy 111.351733 90.065353) + (xy 111.352 90.061274) + (xy 111.352 89.825931) + (xy 111.348359 89.817141) + (xy 111.339569 89.8135) + (xy 110.900931 89.8135) + (xy 110.892141 89.817141) + (xy 110.8885 89.825931) + (xy 110.8885 90.339568) + (xy 110.7615 90.339568) + (xy 110.7615 89.825931) + (xy 110.757859 89.817141) + (xy 110.749069 89.8135) + (xy 110.310432 89.8135) + (xy 110.301642 89.817141) + (xy 110.298001 89.825931) + (xy 110.298001 90.061284) + (xy 109.7025 90.061284) + (xy 109.702499 89.674069) + (xy 110.298 89.674069) + (xy 110.301641 89.682859) + (xy 110.310431 89.6865) + (xy 110.749069 89.6865) + (xy 110.757859 89.682859) + (xy 110.7615 89.674069) + (xy 110.8885 89.674069) + (xy 110.892141 89.682859) + (xy 110.900931 89.6865) + (xy 111.339568 89.6865) + (xy 111.348358 89.682859) + (xy 111.351999 89.674069) + (xy 111.351999 89.559438) + (xy 114.423 89.559438) + (xy 114.423599 89.565519) + (xy 114.429169 89.593518) + (xy 114.433788 89.60467) + (xy 114.455019 89.636445) + (xy 114.463555 89.644981) + (xy 114.49533 89.666212) + (xy 114.506482 89.670831) + (xy 114.534481 89.676401) + (xy 114.540562 89.677) + (xy 115.174069 89.677) + (xy 115.182859 89.673359) + (xy 115.1865 89.664569) + (xy 115.3135 89.664569) + (xy 115.317141 89.673359) + (xy 115.325931 89.677) + (xy 115.959438 89.677) + (xy 115.965519 89.676401) + (xy 115.993518 89.670831) + (xy 116.00467 89.666212) + (xy 116.036445 89.644981) + (xy 116.044981 89.636445) + (xy 116.066212 89.60467) + (xy 116.070831 89.593518) + (xy 116.076401 89.565519) + (xy 116.076693 89.562558) + (xy 118.9225 89.562558) + (xy 118.923099 89.565569) + (xy 118.928659 89.593518) + (xy 118.929898 89.599748) + (xy 118.958078 89.641922) + (xy 119.000252 89.670102) + (xy 119.006285 89.671302) + (xy 119.006287 89.671303) + (xy 119.027468 89.675516) + (xy 119.037442 89.6775) + (xy 119.631497 89.6775) + (xy 119.675691 89.695806) + (xy 120.084372 90.104487) + (xy 120.088677 90.110561) + (xy 120.08925 90.110105) + (xy 120.093631 90.115613) + (xy 120.096678 90.121958) + (xy 120.110723 90.13319) + (xy 120.119761 90.140418) + (xy 120.12492 90.145035) + (xy 120.130169 90.150284) + (xy 120.133143 90.152153) + (xy 120.136172 90.154057) + (xy 120.141948 90.158162) + (xy 120.164733 90.176383) + (xy 120.171593 90.17796) + (xy 120.175353 90.179778) + (xy 120.179289 90.181156) + (xy 120.185248 90.184902) + (xy 120.192242 90.185693) + (xy 120.192243 90.185693) + (xy 120.214236 90.188179) + (xy 120.221213 90.189371) + (xy 120.228297 90.191) + (xy 120.235671 90.191) + (xy 120.242692 90.191396) + (xy 120.271838 90.194691) + (xy 120.278483 90.19237) + (xy 120.285477 90.191586) + (xy 120.285553 90.192264) + (xy 120.293005 90.191) + (xy 127.076187 90.191) + (xy 127.120381 90.209306) + (xy 127.129248 90.220473) + (xy 127.13154 90.224155) + (xy 127.133333 90.22823) + (xy 127.147198 90.244724) + (xy 127.148029 90.245713) + (xy 127.150157 90.248434) + (xy 127.152292 90.252625) + (xy 127.160081 90.260414) + (xy 127.16373 90.264392) + (xy 127.199913 90.307437) + (xy 127.212127 90.321968) + (xy 127.235399 90.337459) + (xy 127.241836 90.342733) + (xy 127.243899 90.344232) + (xy 127.247375 90.347708) + (xy 127.251753 90.349939) + (xy 127.251756 90.349941) + (xy 127.25873 90.353494) + (xy 127.264977 90.357148) + (xy 127.314064 90.389823) + (xy 127.318313 90.391151) + (xy 127.318314 90.391151) + (xy 127.350296 90.401143) + (xy 127.360027 90.405109) + (xy 127.362799 90.406521) + (xy 127.362803 90.406522) + (xy 127.367187 90.408756) + (xy 127.377852 90.410445) + (xy 127.386713 90.41252) + (xy 127.426696 90.425012) + (xy 127.426699 90.425012) + (xy 127.430948 90.42634) + (xy 127.480069 90.427241) + (xy 127.488683 90.427999) + (xy 127.49514 90.429022) + (xy 127.495144 90.429022) + (xy 127.5 90.429791) + (xy 127.506947 90.42869) + (xy 127.517853 90.427933) + (xy 127.553383 90.428584) + (xy 127.613532 90.412185) + (xy 127.62019 90.410755) + (xy 127.622147 90.410445) + (xy 127.632813 90.408756) + (xy 127.637196 90.406522) + (xy 127.641875 90.405002) + (xy 127.641878 90.40501) + (xy 127.646727 90.403136) + (xy 127.671527 90.396375) + (xy 127.694218 90.382443) + (xy 127.739709 90.354511) + (xy 127.744037 90.352085) + (xy 127.74824 90.349944) + (xy 127.748248 90.349938) + (xy 127.752625 90.347708) + (xy 127.755427 90.344906) + (xy 127.756264 90.344346) + (xy 127.758891 90.342733) + (xy 127.775881 90.332301) + (xy 127.858058 90.241513) + (xy 127.911451 90.131311) + (xy 127.913317 90.120224) + (xy 127.924373 90.0545) + (xy 127.931767 90.010552) + (xy 127.931896 90) + (xy 127.914536 89.878781) + (xy 127.863852 89.767307) + (xy 127.849199 89.750302) + (xy 127.847708 89.747375) + (xy 127.8419 89.741567) + (xy 127.838746 89.73817) + (xy 127.813875 89.709306) + (xy 127.783918 89.674539) + (xy 127.763741 89.661461) + (xy 127.760155 89.658559) + (xy 127.760081 89.658661) + (xy 127.756106 89.655773) + (xy 127.752625 89.652292) + (xy 127.741343 89.646543) + (xy 127.735736 89.643309) + (xy 127.733597 89.641922) + (xy 127.709976 89.626612) + (xy 127.684893 89.610354) + (xy 127.68489 89.610353) + (xy 127.68116 89.607935) + (xy 127.676901 89.606661) + (xy 127.676898 89.60666) + (xy 127.653784 89.599748) + (xy 127.648839 89.598269) + (xy 127.638377 89.594079) + (xy 127.632813 89.591244) + (xy 127.621067 89.589384) + (xy 127.612951 89.587536) + (xy 127.583041 89.578591) + (xy 127.563838 89.572848) + (xy 127.519496 89.572577) + (xy 127.510103 89.571809) + (xy 127.504857 89.570978) + (xy 127.504856 89.570978) + (xy 127.5 89.570209) + (xy 127.491373 89.571576) + (xy 127.48122 89.572344) + (xy 127.462836 89.572231) + (xy 127.445838 89.572127) + (xy 127.445836 89.572127) + (xy 127.441385 89.5721) + (xy 127.387011 89.587641) + (xy 127.379623 89.589275) + (xy 127.367187 89.591244) + (xy 127.362804 89.593477) + (xy 127.36187 89.593781) + (xy 127.352155 89.597603) + (xy 127.327929 89.604526) + (xy 127.327927 89.604527) + (xy 127.323644 89.605751) + (xy 127.319875 89.608129) + (xy 127.315624 89.610811) + (xy 127.264119 89.643309) + (xy 127.262819 89.644129) + (xy 127.257842 89.646959) + (xy 127.251757 89.650059) + (xy 127.251756 89.65006) + (xy 127.247375 89.652292) + (xy 127.243897 89.65577) + (xy 127.242445 89.656825) + (xy 127.239058 89.65912) + (xy 127.22008 89.671095) + (xy 127.217137 89.674427) + (xy 127.217135 89.674429) + (xy 127.157156 89.742342) + (xy 127.156032 89.743538) + (xy 127.155775 89.743892) + (xy 127.155554 89.744113) + (xy 127.155405 89.744204) + (xy 127.154504 89.745163) + (xy 127.152292 89.747375) + (xy 127.151509 89.746592) + (xy 127.150362 89.747296) + (xy 127.151721 89.748496) + (xy 127.139018 89.762879) + (xy 127.137127 89.766906) + (xy 127.137126 89.766908) + (xy 127.134237 89.773062) + (xy 127.098884 89.805287) + (xy 127.077662 89.809) + (xy 120.355003 89.809) + (xy 120.310809 89.790694) + (xy 120.304309 89.784194) + (xy 120.286003 89.74) + (xy 120.304309 89.695806) + (xy 120.348503 89.6775) + (xy 120.462558 89.6775) + (xy 120.472532 89.675516) + (xy 120.493713 89.671303) + (xy 120.493715 89.671302) + (xy 120.499748 89.670102) + (xy 120.541922 89.641922) + (xy 120.570102 89.599748) + (xy 120.571342 89.593518) + (xy 120.576901 89.565569) + (xy 120.5775 89.562558) + (xy 120.5775 88.600824) + (xy 130.230201 88.600824) + (xy 130.25981 88.773141) + (xy 130.328267 88.934024) + (xy 130.431898 89.074843) + (xy 130.434664 89.077193) + (xy 130.434666 89.077195) + (xy 130.481344 89.11685) + (xy 130.565146 89.188045) + (xy 130.720862 89.267558) + (xy 130.890693 89.309115) + (xy 130.898268 89.309585) + (xy 130.900765 89.30974) + (xy 130.900769 89.30974) + (xy 130.901734 89.3098) + (xy 131.027779 89.3098) + (xy 131.029569 89.309591) + (xy 131.029574 89.309591) + (xy 131.082022 89.303476) + (xy 131.157665 89.294657) + (xy 131.16108 89.293418) + (xy 131.161082 89.293417) + (xy 131.218109 89.272717) + (xy 131.322015 89.235001) + (xy 131.468233 89.139136) + (xy 131.588475 89.012205) + (xy 131.590297 89.009067) + (xy 131.5903 89.009064) + (xy 131.674473 88.864149) + (xy 131.674474 88.864148) + (xy 131.676292 88.861017) + (xy 131.726973 88.693682) + (xy 131.737799 88.519176) + (xy 131.70819 88.346859) + (xy 131.639733 88.185976) + (xy 131.536102 88.045157) + (xy 131.512022 88.024699) + (xy 131.442407 87.965558) + (xy 131.402854 87.931955) + (xy 131.392288 87.926559) + (xy 131.361254 87.890158) + (xy 131.365049 87.842473) + (xy 131.401451 87.811439) + (xy 131.412554 87.808932) + (xy 131.49687 87.797832) + (xy 131.504711 87.795731) + (xy 131.623812 87.746398) + (xy 131.630849 87.742335) + (xy 131.675691 87.707927) + (xy 131.680449 87.699685) + (xy 131.678826 87.693629) + (xy 131.381891 87.396694) + (xy 131.37032 87.36876) + (xy 131.362136 87.376939) + (xy 131.365 87.379803) + (xy 131.053235 87.691568) + (xy 131.049594 87.700358) + (xy 131.057993 87.720634) + (xy 131.055404 87.721707) + (xy 131.066207 87.743618) + (xy 131.050827 87.788913) + (xy 131.00384 87.8102) + (xy 130.940221 87.8102) + (xy 130.938431 87.810409) + (xy 130.938426 87.810409) + (xy 130.888784 87.816197) + (xy 130.810335 87.825343) + (xy 130.80692 87.826582) + (xy 130.806918 87.826583) + (xy 130.75866 87.8441) + (xy 130.645985 87.884999) + (xy 130.642949 87.88699) + (xy 130.642948 87.88699) + (xy 130.630228 87.89533) + (xy 130.499767 87.980864) + (xy 130.379525 88.107795) + (xy 130.377703 88.110933) + (xy 130.3777 88.110936) + (xy 130.295401 88.252625) + (xy 130.291708 88.258983) + (xy 130.279316 88.299898) + (xy 130.245619 88.411158) + (xy 130.241027 88.426318) + (xy 130.230201 88.600824) + (xy 120.5775 88.600824) + (xy 120.5775 87.937442) + (xy 120.574879 87.924266) + (xy 120.571303 87.906287) + (xy 120.571302 87.906285) + (xy 120.570102 87.900252) + (xy 120.541922 87.858078) + (xy 120.499748 87.829898) + (xy 120.493715 87.828698) + (xy 120.493713 87.828697) + (xy 120.465569 87.823099) + (xy 120.462558 87.8225) + (xy 119.037442 87.8225) + (xy 119.034431 87.823099) + (xy 119.006287 87.828697) + (xy 119.006285 87.828698) + (xy 119.000252 87.829898) + (xy 118.958078 87.858078) + (xy 118.929898 87.900252) + (xy 118.928698 87.906285) + (xy 118.928697 87.906287) + (xy 118.925121 87.924266) + (xy 118.9225 87.937442) + (xy 118.9225 89.562558) + (xy 116.076693 89.562558) + (xy 116.077 89.559438) + (xy 116.077 88.825931) + (xy 116.073359 88.817141) + (xy 116.064569 88.8135) + (xy 115.325931 88.8135) + (xy 115.317141 88.817141) + (xy 115.3135 88.825931) + (xy 115.3135 89.664569) + (xy 115.1865 89.664569) + (xy 115.1865 88.825931) + (xy 115.182859 88.817141) + (xy 115.174069 88.8135) + (xy 114.435431 88.8135) + (xy 114.426641 88.817141) + (xy 114.423 88.825931) + (xy 114.423 89.559438) + (xy 111.351999 89.559438) + (xy 111.351999 89.438716) + (xy 111.351734 89.434665) + (xy 111.346355 89.3938) + (xy 111.34371 89.384726) + (xy 111.299307 89.289505) + (xy 111.293127 89.280679) + (xy 111.219321 89.206873) + (xy 111.210495 89.200693) + (xy 111.115273 89.15629) + (xy 111.106199 89.153645) + (xy 111.065353 89.148267) + (xy 111.061274 89.148) + (xy 110.900931 89.148) + (xy 110.892141 89.151641) + (xy 110.8885 89.160431) + (xy 110.8885 89.674069) + (xy 110.7615 89.674069) + (xy 110.7615 89.160432) + (xy 110.757859 89.151642) + (xy 110.749069 89.148001) + (xy 110.588716 89.148001) + (xy 110.584665 89.148266) + (xy 110.5438 89.153645) + (xy 110.534726 89.15629) + (xy 110.439505 89.200693) + (xy 110.430679 89.206873) + (xy 110.356873 89.280679) + (xy 110.350693 89.289505) + (xy 110.30629 89.384727) + (xy 110.303645 89.393801) + (xy 110.298267 89.434647) + (xy 110.298 89.438726) + (xy 110.298 89.674069) + (xy 109.702499 89.674069) + (xy 109.702499 89.436626) + (xy 109.702232 89.434593) + (xy 109.696845 89.393669) + (xy 109.696845 89.393668) + (xy 109.696221 89.388929) + (xy 109.689777 89.375109) + (xy 109.649723 89.289213) + (xy 109.649721 89.289211) + (xy 109.647411 89.284256) + (xy 109.565744 89.202589) + (xy 109.560789 89.200279) + (xy 109.560787 89.200277) + (xy 109.506903 89.175151) + (xy 109.461071 89.153779) + (xy 109.444831 89.151641) + (xy 109.415407 89.147767) + (xy 109.415399 89.147767) + (xy 109.413375 89.1475) + (xy 109.411328 89.1475) + (xy 109.174358 89.147501) + (xy 108.936626 89.147501) + (xy 108.934615 89.147766) + (xy 108.93461 89.147766) + (xy 108.893669 89.153155) + (xy 108.893668 89.153155) + (xy 108.888929 89.153779) + (xy 108.884595 89.1558) + (xy 108.789213 89.200277) + (xy 108.789211 89.200279) + (xy 108.784256 89.202589) + (xy 108.702589 89.284256) + (xy 108.700279 89.289211) + (xy 108.700277 89.289213) + (xy 108.682393 89.327566) + (xy 108.653779 89.388929) + (xy 108.653155 89.393669) + (xy 108.653155 89.39367) + (xy 108.647767 89.434593) + (xy 108.647767 89.434601) + (xy 108.6475 89.436625) + (xy 108.647501 89.721948) + (xy 108.647501 89.981496) + (xy 108.629195 90.02569) + (xy 108.114191 90.540694) + (xy 108.069997 90.559) + (xy 106.925091 90.559) + (xy 106.880897 90.540694) + (xy 106.862591 90.4965) + (xy 106.868845 90.469249) + (xy 106.888587 90.428501) + (xy 106.911451 90.381311) + (xy 106.912983 90.372209) + (xy 106.92758 90.28544) + (xy 106.931767 90.260552) + (xy 106.931896 90.25) + (xy 106.914536 90.128781) + (xy 106.863852 90.017307) + (xy 106.849199 90.000302) + (xy 106.847708 89.997375) + (xy 106.8419 89.991567) + (xy 106.838746 89.98817) + (xy 106.786826 89.927914) + (xy 106.783918 89.924539) + (xy 106.763741 89.911461) + (xy 106.760155 89.908559) + (xy 106.760081 89.908661) + (xy 106.756106 89.905773) + (xy 106.752625 89.902292) + (xy 106.741343 89.896543) + (xy 106.735736 89.893309) + (xy 106.733637 89.891948) + (xy 106.715464 89.880169) + (xy 106.684893 89.860354) + (xy 106.68489 89.860353) + (xy 106.68116 89.857935) + (xy 106.676901 89.856661) + (xy 106.676898 89.85666) + (xy 106.653677 89.849716) + (xy 106.648839 89.848269) + (xy 106.638377 89.844079) + (xy 106.632813 89.841244) + (xy 106.629772 89.840762) + (xy 106.611844 89.83118) + (xy 106.58633 89.811066) + (xy 106.581458 89.809355) + (xy 106.577977 89.807441) + (xy 106.574359 89.805668) + (xy 106.570157 89.802666) + (xy 106.547266 89.79582) + (xy 106.519341 89.787469) + (xy 106.51654 89.786558) + (xy 106.466498 89.768984) + (xy 106.46258 89.768645) + (xy 106.462577 89.768644) + (xy 106.46224 89.768615) + (xy 106.462234 89.768615) + (xy 106.460909 89.7685) + (xy 106.46065 89.7685) + (xy 106.456646 89.768161) + (xy 106.453421 89.767754) + (xy 106.448476 89.766275) + (xy 106.393076 89.768452) + (xy 106.390622 89.7685) + (xy 105.934062 89.7685) + (xy 105.889868 89.750194) + (xy 105.871562 89.706) + (xy 105.872763 89.693805) + (xy 105.876401 89.675516) + (xy 105.877 89.669438) + (xy 105.877 89.475931) + (xy 105.873359 89.467141) + (xy 105.864569 89.4635) + (xy 104.759492 89.4635) + (xy 104.715298 89.445194) + (xy 104.698229 89.413375) + (xy 104.697825 89.411375) + (xy 104.707018 89.364431) + (xy 104.746713 89.337737) + (xy 104.759088 89.3365) + (xy 105.174069 89.3365) + (xy 105.182859 89.332859) + (xy 105.1865 89.324069) + (xy 105.1865 89.0195) + (xy 105.204806 88.975306) + (xy 105.249 88.957) + (xy 105.251 88.957) + (xy 105.295194 88.975306) + (xy 105.3135 89.0195) + (xy 105.3135 89.324069) + (xy 105.317141 89.332859) + (xy 105.325931 89.3365) + (xy 105.864569 89.3365) + (xy 105.873359 89.332859) + (xy 105.877 89.324069) + (xy 105.877 89.130562) + (xy 105.876401 89.124481) + (xy 105.870831 89.096482) + (xy 105.866212 89.08533) + (xy 105.844981 89.053555) + (xy 105.836445 89.045019) + (xy 105.80467 89.023788) + (xy 105.793518 89.019169) + (xy 105.765519 89.013599) + (xy 105.759438 89.013) + (xy 105.715263 89.013) + (xy 105.671069 88.994694) + (xy 105.652763 88.9505) + (xy 105.671069 88.906306) + (xy 105.694709 88.891476) + (xy 105.709557 88.886306) + (xy 105.715822 88.883304) + (xy 105.857721 88.794636) + (xy 105.863167 88.790319) + (xy 105.980232 88.674069) + (xy 114.423 88.674069) + (xy 114.426641 88.682859) + (xy 114.435431 88.6865) + (xy 115.174069 88.6865) + (xy 115.182859 88.682859) + (xy 115.1865 88.674069) + (xy 115.3135 88.674069) + (xy 115.317141 88.682859) + (xy 115.325931 88.6865) + (xy 116.064569 88.6865) + (xy 116.073359 88.682859) + (xy 116.077 88.674069) + (xy 116.077 87.940562) + (xy 116.076401 87.934481) + (xy 116.070831 87.906482) + (xy 116.066212 87.89533) + (xy 116.044981 87.863555) + (xy 116.036445 87.855019) + (xy 116.00467 87.833788) + (xy 115.993518 87.829169) + (xy 115.965519 87.823599) + (xy 115.959438 87.823) + (xy 115.325931 87.823) + (xy 115.317141 87.826641) + (xy 115.3135 87.835431) + (xy 115.3135 88.674069) + (xy 115.1865 88.674069) + (xy 115.1865 87.835431) + (xy 115.182859 87.826641) + (xy 115.174069 87.823) + (xy 114.540562 87.823) + (xy 114.534481 87.823599) + (xy 114.506482 87.829169) + (xy 114.49533 87.833788) + (xy 114.463555 87.855019) + (xy 114.455019 87.863555) + (xy 114.433788 87.89533) + (xy 114.429169 87.906482) + (xy 114.423599 87.934481) + (xy 114.423 87.940562) + (xy 114.423 88.674069) + (xy 105.980232 88.674069) + (xy 105.981902 88.672411) + (xy 105.986248 88.667006) + (xy 106.075913 88.525716) + (xy 106.078952 88.519484) + (xy 106.135085 88.361844) + (xy 106.136672 88.355076) + (xy 106.148505 88.255844) + (xy 106.145931 88.246685) + (xy 106.140255 88.2435) + (xy 103.612781 88.2435) + (xy 103.603991 88.247141) + (xy 103.601392 88.253415) + (xy 103.610958 88.344436) + (xy 103.612447 88.351207) + (xy 103.666375 88.509618) + (xy 103.669331 88.5159) + (xy 103.757009 88.658417) + (xy 103.761289 88.663896) + (xy 103.878359 88.783443) + (xy 103.883745 88.787836) + (xy 103.992517 88.857935) + (xy 104.019749 88.897262) + (xy 104.011195 88.944327) + (xy 103.983485 88.967828) + (xy 103.860054 89.021242) + (xy 103.741987 89.11685) + (xy 103.739521 89.12032) + (xy 103.739519 89.120322) + (xy 103.675215 89.210806) + (xy 103.65398 89.240687) + (xy 103.638906 89.282558) + (xy 103.60943 89.364431) + (xy 103.602518 89.383629) + (xy 103.602206 89.387878) + (xy 103.592614 89.518497) + (xy 103.591391 89.535145) + (xy 99.3 89.535145) + (xy 99.3 88.253415) + (xy 99.626392 88.253415) + (xy 99.635958 88.344436) + (xy 99.637447 88.351207) + (xy 99.691375 88.509618) + (xy 99.694331 88.5159) + (xy 99.782009 88.658417) + (xy 99.786289 88.663896) + (xy 99.903359 88.783443) + (xy 99.908745 88.787836) + (xy 100.049396 88.87848) + (xy 100.055613 88.881566) + (xy 100.212854 88.938798) + (xy 100.219607 88.940431) + (xy 100.348804 88.956753) + (xy 100.352734 88.957) + (xy 100.974069 88.957) + (xy 100.982859 88.953359) + (xy 100.9865 88.944569) + (xy 101.1135 88.944569) + (xy 101.117141 88.953359) + (xy 101.125931 88.957) + (xy 101.742089 88.957) + (xy 101.745567 88.956806) + (xy 101.86976 88.942876) + (xy 101.876538 88.941335) + (xy 102.034549 88.886309) + (xy 102.040822 88.883304) + (xy 102.182721 88.794636) + (xy 102.188167 88.790319) + (xy 102.306902 88.672411) + (xy 102.311248 88.667006) + (xy 102.400913 88.525716) + (xy 102.403952 88.519484) + (xy 102.460085 88.361844) + (xy 102.461672 88.355076) + (xy 102.473505 88.255844) + (xy 102.470931 88.246685) + (xy 102.465255 88.2435) + (xy 101.125931 88.2435) + (xy 101.117141 88.247141) + (xy 101.1135 88.255931) + (xy 101.1135 88.944569) + (xy 100.9865 88.944569) + (xy 100.9865 88.255931) + (xy 100.982859 88.247141) + (xy 100.974069 88.2435) + (xy 99.637781 88.2435) + (xy 99.628991 88.247141) + (xy 99.626392 88.253415) + (xy 99.3 88.253415) + (xy 99.3 88.104156) + (xy 99.626495 88.104156) + (xy 99.629069 88.113315) + (xy 99.634745 88.1165) + (xy 100.974069 88.1165) + (xy 100.982859 88.112859) + (xy 100.9865 88.104069) + (xy 101.1135 88.104069) + (xy 101.117141 88.112859) + (xy 101.125931 88.1165) + (xy 102.462219 88.1165) + (xy 102.471009 88.112859) + (xy 102.473608 88.106585) + (xy 102.473353 88.104156) + (xy 103.601495 88.104156) + (xy 103.604069 88.113315) + (xy 103.609745 88.1165) + (xy 104.799069 88.1165) + (xy 104.807859 88.112859) + (xy 104.8115 88.104069) + (xy 104.9385 88.104069) + (xy 104.942141 88.112859) + (xy 104.950931 88.1165) + (xy 106.137219 88.1165) + (xy 106.146009 88.112859) + (xy 106.148608 88.106585) + (xy 106.139042 88.015564) + (xy 106.137553 88.008793) + (xy 106.083625 87.850382) + (xy 106.080669 87.8441) + (xy 105.992991 87.701583) + (xy 105.988711 87.696104) + (xy 105.871641 87.576557) + (xy 105.866254 87.572163) + (xy 105.725604 87.48152) + (xy 105.719387 87.478434) + (xy 105.562146 87.421202) + (xy 105.555393 87.419569) + (xy 105.426196 87.403247) + (xy 105.422266 87.403) + (xy 104.950931 87.403) + (xy 104.942141 87.406641) + (xy 104.9385 87.415431) + (xy 104.9385 88.104069) + (xy 104.8115 88.104069) + (xy 104.8115 87.415431) + (xy 104.807859 87.406641) + (xy 104.799069 87.403) + (xy 104.332911 87.403) + (xy 104.329433 87.403194) + (xy 104.20524 87.417124) + (xy 104.198462 87.418665) + (xy 104.040451 87.473691) + (xy 104.034178 87.476696) + (xy 103.892279 87.565364) + (xy 103.886833 87.569681) + (xy 103.768098 87.687589) + (xy 103.763752 87.692994) + (xy 103.674087 87.834284) + (xy 103.671048 87.840516) + (xy 103.614915 87.998156) + (xy 103.613328 88.004924) + (xy 103.601495 88.104156) + (xy 102.473353 88.104156) + (xy 102.464042 88.015564) + (xy 102.462553 88.008793) + (xy 102.408625 87.850382) + (xy 102.405669 87.8441) + (xy 102.317991 87.701583) + (xy 102.313711 87.696104) + (xy 102.196641 87.576557) + (xy 102.191254 87.572163) + (xy 102.050604 87.48152) + (xy 102.044387 87.478434) + (xy 101.887146 87.421202) + (xy 101.880393 87.419569) + (xy 101.751196 87.403247) + (xy 101.747266 87.403) + (xy 101.125931 87.403) + (xy 101.117141 87.406641) + (xy 101.1135 87.415431) + (xy 101.1135 88.104069) + (xy 100.9865 88.104069) + (xy 100.9865 87.415431) + (xy 100.982859 87.406641) + (xy 100.974069 87.403) + (xy 100.357911 87.403) + (xy 100.354433 87.403194) + (xy 100.23024 87.417124) + (xy 100.223462 87.418665) + (xy 100.065451 87.473691) + (xy 100.059178 87.476696) + (xy 99.917279 87.565364) + (xy 99.911833 87.569681) + (xy 99.793098 87.687589) + (xy 99.788752 87.692994) + (xy 99.699087 87.834284) + (xy 99.696048 87.840516) + (xy 99.639915 87.998156) + (xy 99.638328 88.004924) + (xy 99.626495 88.104156) + (xy 99.3 88.104156) + (xy 99.3 87.291286) + (xy 124.017866 87.291286) + (xy 124.023279 87.355751) + (xy 124.032627 87.467065) + (xy 124.033907 87.482311) + (xy 124.086746 87.666583) + (xy 124.17437 87.837082) + (xy 124.293443 87.987314) + (xy 124.295773 87.989297) + (xy 124.431147 88.104509) + (xy 124.439428 88.111557) + (xy 124.442092 88.113046) + (xy 124.442095 88.113048) + (xy 124.580157 88.190208) + (xy 124.606765 88.205079) + (xy 124.609669 88.206023) + (xy 124.60967 88.206023) + (xy 124.786168 88.263371) + (xy 124.786173 88.263372) + (xy 124.789081 88.264317) + (xy 124.97943 88.287015) + (xy 124.982472 88.286781) + (xy 124.982475 88.286781) + (xy 125.167514 88.272543) + (xy 125.167519 88.272542) + (xy 125.170562 88.272308) + (xy 125.179282 88.269873) + (xy 125.35226 88.221577) + (xy 125.352264 88.221576) + (xy 125.355199 88.220756) + (xy 125.41743 88.189321) + (xy 125.523585 88.135698) + (xy 125.526305 88.134324) + (xy 125.528703 88.132451) + (xy 125.528707 88.132448) + (xy 125.636687 88.048084) + (xy 125.677365 88.016303) + (xy 125.679712 88.013584) + (xy 125.80063 87.8735) + (xy 125.800634 87.873495) + (xy 125.802624 87.871189) + (xy 125.804132 87.868535) + (xy 125.895801 87.70717) + (xy 125.895803 87.707165) + (xy 125.897312 87.704509) + (xy 125.957821 87.522612) + (xy 125.958492 87.517307) + (xy 125.981627 87.334167) + (xy 125.981627 87.334166) + (xy 125.981847 87.332425) + (xy 125.98223 87.305) + (xy 125.982045 87.303105) + (xy 125.963822 87.117257) + (xy 125.963524 87.114217) + (xy 125.908117 86.930701) + (xy 125.859505 86.839275) + (xy 125.819555 86.76414) + (xy 125.819553 86.764137) + (xy 125.81812 86.761442) + (xy 125.696962 86.612887) + (xy 125.549256 86.490694) + (xy 125.380629 86.399518) + (xy 125.327881 86.38319) + (xy 125.20042 86.343734) + (xy 125.200417 86.343733) + (xy 125.197505 86.342832) + (xy 125.194472 86.342513) + (xy 125.194471 86.342513) + (xy 125.134644 86.336225) + (xy 125.006857 86.322794) + (xy 125.003824 86.32307) + (xy 125.00382 86.32307) + (xy 124.921118 86.330597) + (xy 124.815948 86.340168) + (xy 124.813019 86.34103) + (xy 124.803832 86.343734) + (xy 124.63205 86.394292) + (xy 124.462167 86.483105) + (xy 124.31277 86.603223) + (xy 124.189549 86.750072) + (xy 124.137479 86.844787) + (xy 124.099188 86.914439) + (xy 124.097198 86.918058) + (xy 124.039234 87.100783) + (xy 124.038894 87.103815) + (xy 124.018568 87.285031) + (xy 124.017866 87.291286) + (xy 99.3 87.291286) + (xy 99.3 84.751286) + (xy 124.017866 84.751286) + (xy 124.022778 84.809781) + (xy 124.033078 84.932436) + (xy 124.033907 84.942311) + (xy 124.086746 85.126583) + (xy 124.104746 85.161607) + (xy 124.168248 85.285169) + (xy 124.17437 85.297082) + (xy 124.293443 85.447314) + (xy 124.295773 85.449297) + (xy 124.412474 85.548617) + (xy 124.439428 85.571557) + (xy 124.442092 85.573046) + (xy 124.442095 85.573048) + (xy 124.578119 85.649069) + (xy 124.606765 85.665079) + (xy 124.609669 85.666023) + (xy 124.60967 85.666023) + (xy 124.786168 85.723371) + (xy 124.786173 85.723372) + (xy 124.789081 85.724317) + (xy 124.97943 85.747015) + (xy 124.982472 85.746781) + (xy 124.982475 85.746781) + (xy 125.167514 85.732543) + (xy 125.167519 85.732542) + (xy 125.170562 85.732308) + (xy 125.201475 85.723677) + (xy 125.35226 85.681577) + (xy 125.352264 85.681576) + (xy 125.355199 85.680756) + (xy 125.413965 85.651071) + (xy 125.523585 85.595698) + (xy 125.526305 85.594324) + (xy 125.528703 85.592451) + (xy 125.528707 85.592448) + (xy 125.613763 85.525994) + (xy 125.677365 85.476303) + (xy 125.679362 85.47399) + (xy 125.80063 85.3335) + (xy 125.800634 85.333495) + (xy 125.802624 85.331189) + (xy 125.807093 85.323323) + (xy 125.895801 85.16717) + (xy 125.895803 85.167165) + (xy 125.897312 85.164509) + (xy 125.957821 84.982612) + (xy 125.95935 84.970513) + (xy 125.981627 84.794167) + (xy 125.981627 84.794166) + (xy 125.981847 84.792425) + (xy 125.982202 84.766989) + (xy 125.982206 84.766738) + (xy 125.982206 84.766733) + (xy 125.98223 84.765) + (xy 125.981926 84.761893) + (xy 125.963822 84.577257) + (xy 125.963524 84.574217) + (xy 125.908117 84.390701) + (xy 125.861366 84.302775) + (xy 125.819555 84.22414) + (xy 125.819553 84.224137) + (xy 125.81812 84.221442) + (xy 125.696962 84.072887) + (xy 125.549256 83.950694) + (xy 125.380629 83.859518) + (xy 125.282031 83.828997) + (xy 125.20042 83.803734) + (xy 125.200417 83.803733) + (xy 125.197505 83.802832) + (xy 125.194472 83.802513) + (xy 125.194471 83.802513) + (xy 125.133378 83.796092) + (xy 125.006857 83.782794) + (xy 125.003824 83.78307) + (xy 125.00382 83.78307) + (xy 124.921118 83.790597) + (xy 124.815948 83.800168) + (xy 124.63205 83.854292) + (xy 124.462167 83.943105) + (xy 124.31277 84.063223) + (xy 124.189549 84.210072) + (xy 124.154877 84.27314) + (xy 124.101505 84.370224) + (xy 124.097198 84.378058) + (xy 124.059165 84.497952) + (xy 124.042538 84.550369) + (xy 124.039234 84.560783) + (xy 124.037827 84.573324) + (xy 124.018291 84.7475) + (xy 124.017866 84.751286) + (xy 99.3 84.751286) + (xy 99.3 83.084438) + (xy 124.023 83.084438) + (xy 124.023599 83.090519) + (xy 124.029169 83.118518) + (xy 124.033788 83.12967) + (xy 124.055019 83.161445) + (xy 124.063555 83.169981) + (xy 124.09533 83.191212) + (xy 124.106482 83.195831) + (xy 124.134481 83.201401) + (xy 124.140562 83.202) + (xy 124.924069 83.202) + (xy 124.932859 83.198359) + (xy 124.9365 83.189569) + (xy 125.0635 83.189569) + (xy 125.067141 83.198359) + (xy 125.075931 83.202) + (xy 125.859438 83.202) + (xy 125.865519 83.201401) + (xy 125.893518 83.195831) + (xy 125.90467 83.191212) + (xy 125.936445 83.169981) + (xy 125.944981 83.161445) + (xy 125.966212 83.12967) + (xy 125.970831 83.118518) + (xy 125.976401 83.090519) + (xy 125.977 83.084438) + (xy 125.977 82.744724) + (xy 127.018136 82.744724) + (xy 127.018713 82.749137) + (xy 127.018713 82.749138) + (xy 127.03251 82.854647) + (xy 127.034014 82.866145) + (xy 127.041185 82.882443) + (xy 127.041244 82.882813) + (xy 127.042007 82.884311) + (xy 127.044031 82.88891) + (xy 127.044031 82.888911) + (xy 127.081376 82.973782) + (xy 127.083333 82.97823) + (xy 127.097188 82.994713) + (xy 127.098029 82.995713) + (xy 127.100157 82.998434) + (xy 127.102292 83.002625) + (xy 127.110081 83.010414) + (xy 127.113729 83.014391) + (xy 127.162127 83.071968) + (xy 127.185399 83.087459) + (xy 127.191836 83.092733) + (xy 127.193899 83.094232) + (xy 127.197375 83.097708) + (xy 127.201753 83.099939) + (xy 127.201756 83.099941) + (xy 127.20873 83.103494) + (xy 127.214977 83.107148) + (xy 127.264064 83.139823) + (xy 127.268313 83.141151) + (xy 127.268314 83.141151) + (xy 127.300296 83.151143) + (xy 127.310027 83.155109) + (xy 127.312799 83.156521) + (xy 127.312803 83.156522) + (xy 127.317187 83.158756) + (xy 127.327852 83.160445) + (xy 127.336713 83.16252) + (xy 127.376696 83.175012) + (xy 127.376699 83.175012) + (xy 127.380948 83.17634) + (xy 127.430069 83.177241) + (xy 127.438683 83.177999) + (xy 127.44514 83.179022) + (xy 127.445144 83.179022) + (xy 127.45 83.179791) + (xy 127.456947 83.17869) + (xy 127.467853 83.177933) + (xy 127.503383 83.178584) + (xy 127.563532 83.162185) + (xy 127.57019 83.160755) + (xy 127.582814 83.158756) + (xy 127.583257 83.161552) + (xy 127.621663 83.16459) + (xy 127.652716 83.200977) + (xy 127.648944 83.248663) + (xy 127.644176 83.255667) + (xy 127.64441 83.25582) + (xy 127.641964 83.259543) + (xy 127.639018 83.262879) + (xy 127.629806 83.2825) + (xy 127.588868 83.369695) + (xy 127.588867 83.369698) + (xy 127.586976 83.373726) + (xy 127.568136 83.494724) + (xy 127.568713 83.499137) + (xy 127.568713 83.499138) + (xy 127.583224 83.610105) + (xy 127.584014 83.616145) + (xy 127.585809 83.620224) + (xy 127.590095 83.629965) + (xy 127.591185 83.632443) + (xy 127.591244 83.632813) + (xy 127.592007 83.634311) + (xy 127.594031 83.63891) + (xy 127.594031 83.638911) + (xy 127.597942 83.6478) + (xy 127.633333 83.72823) + (xy 127.635301 83.730571) + (xy 127.643031 83.777256) + (xy 127.615185 83.816151) + (xy 127.572954 83.821801) + (xy 127.572509 83.824782) + (xy 127.568104 83.824124) + (xy 127.563838 83.822848) + (xy 127.519496 83.822577) + (xy 127.510103 83.821809) + (xy 127.510053 83.821801) + (xy 127.508469 83.82155) + (xy 127.504857 83.820978) + (xy 127.504856 83.820978) + (xy 127.5 83.820209) + (xy 127.491373 83.821576) + (xy 127.48122 83.822344) + (xy 127.462836 83.822231) + (xy 127.445838 83.822127) + (xy 127.445836 83.822127) + (xy 127.441385 83.8221) + (xy 127.387011 83.837641) + (xy 127.379623 83.839275) + (xy 127.367187 83.841244) + (xy 127.362804 83.843477) + (xy 127.36187 83.843781) + (xy 127.352156 83.847603) + (xy 127.349821 83.84827) + (xy 127.327929 83.854526) + (xy 127.327927 83.854527) + (xy 127.323644 83.855751) + (xy 127.264119 83.893309) + (xy 127.262819 83.894129) + (xy 127.257845 83.896957) + (xy 127.25669 83.897546) + (xy 127.251757 83.900059) + (xy 127.251756 83.90006) + (xy 127.247375 83.902292) + (xy 127.243897 83.90577) + (xy 127.242445 83.906825) + (xy 127.239058 83.90912) + (xy 127.22008 83.921095) + (xy 127.217137 83.924427) + (xy 127.217135 83.924429) + (xy 127.157156 83.992342) + (xy 127.156032 83.993538) + (xy 127.155775 83.993892) + (xy 127.155554 83.994113) + (xy 127.155405 83.994204) + (xy 127.154504 83.995163) + (xy 127.152292 83.997375) + (xy 127.151509 83.996592) + (xy 127.150362 83.997296) + (xy 127.151721 83.998496) + (xy 127.147453 84.003329) + (xy 127.139018 84.012879) + (xy 127.137127 84.016907) + (xy 127.088868 84.119695) + (xy 127.088867 84.119698) + (xy 127.086976 84.123726) + (xy 127.068136 84.244724) + (xy 127.068713 84.249137) + (xy 127.068713 84.249138) + (xy 127.083436 84.361726) + (xy 127.084014 84.366145) + (xy 127.091185 84.382443) + (xy 127.091244 84.382813) + (xy 127.092007 84.384311) + (xy 127.094031 84.38891) + (xy 127.094031 84.388911) + (xy 127.095356 84.391921) + (xy 127.133333 84.47823) + (xy 127.145026 84.492141) + (xy 127.148029 84.495713) + (xy 127.150157 84.498434) + (xy 127.152292 84.502625) + (xy 127.160081 84.510414) + (xy 127.16373 84.514392) + (xy 127.200277 84.55787) + (xy 127.212127 84.571968) + (xy 127.235399 84.587459) + (xy 127.241836 84.592733) + (xy 127.243899 84.594232) + (xy 127.247375 84.597708) + (xy 127.251753 84.599939) + (xy 127.251756 84.599941) + (xy 127.25873 84.603494) + (xy 127.264977 84.607148) + (xy 127.314064 84.639823) + (xy 127.318313 84.641151) + (xy 127.318314 84.641151) + (xy 127.350296 84.651143) + (xy 127.360027 84.655109) + (xy 127.362799 84.656521) + (xy 127.362803 84.656522) + (xy 127.367187 84.658756) + (xy 127.377852 84.660445) + (xy 127.386713 84.66252) + (xy 127.426696 84.675012) + (xy 127.426699 84.675012) + (xy 127.430948 84.67634) + (xy 127.480069 84.677241) + (xy 127.488683 84.677999) + (xy 127.49514 84.679022) + (xy 127.495144 84.679022) + (xy 127.5 84.679791) + (xy 127.506947 84.67869) + (xy 127.517853 84.677933) + (xy 127.553383 84.678584) + (xy 127.566704 84.674952) + (xy 127.614155 84.680988) + (xy 127.643442 84.71881) + (xy 127.636625 84.761755) + (xy 127.639018 84.762879) + (xy 127.588868 84.869695) + (xy 127.588867 84.869698) + (xy 127.586976 84.873726) + (xy 127.568136 84.994724) + (xy 127.568713 84.999137) + (xy 127.568713 84.999138) + (xy 127.580124 85.086401) + (xy 127.584014 85.116145) + (xy 127.591185 85.132443) + (xy 127.591244 85.132813) + (xy 127.592007 85.134311) + (xy 127.594031 85.13891) + (xy 127.594031 85.138911) + (xy 127.62992 85.220473) + (xy 127.633333 85.22823) + (xy 127.646318 85.243677) + (xy 127.648029 85.245713) + (xy 127.650157 85.248434) + (xy 127.652292 85.252625) + (xy 127.660081 85.260414) + (xy 127.663729 85.264391) + (xy 127.712127 85.321968) + (xy 127.735399 85.337459) + (xy 127.741836 85.342733) + (xy 127.743899 85.344232) + (xy 127.747375 85.347708) + (xy 127.751753 85.349939) + (xy 127.751756 85.349941) + (xy 127.75873 85.353494) + (xy 127.764977 85.357148) + (xy 127.814064 85.389823) + (xy 127.818313 85.391151) + (xy 127.818314 85.391151) + (xy 127.850296 85.401143) + (xy 127.860027 85.405109) + (xy 127.862799 85.406521) + (xy 127.862803 85.406522) + (xy 127.867187 85.408756) + (xy 127.877852 85.410445) + (xy 127.886713 85.41252) + (xy 127.926696 85.425012) + (xy 127.926699 85.425012) + (xy 127.930948 85.42634) + (xy 127.980069 85.427241) + (xy 127.988683 85.427999) + (xy 127.99514 85.429022) + (xy 127.995144 85.429022) + (xy 128 85.429791) + (xy 128.006947 85.42869) + (xy 128.017853 85.427933) + (xy 128.053383 85.428584) + (xy 128.113532 85.412185) + (xy 128.12019 85.410755) + (xy 128.122147 85.410445) + (xy 128.132813 85.408756) + (xy 128.137196 85.406522) + (xy 128.141875 85.405002) + (xy 128.141878 85.40501) + (xy 128.146727 85.403136) + (xy 128.171527 85.396375) + (xy 128.176521 85.393309) + (xy 128.239709 85.354511) + (xy 128.244037 85.352085) + (xy 128.24824 85.349944) + (xy 128.248248 85.349938) + (xy 128.252625 85.347708) + (xy 128.255427 85.344906) + (xy 128.256264 85.344346) + (xy 128.256704 85.344076) + (xy 128.275881 85.332301) + (xy 128.358058 85.241513) + (xy 128.365454 85.226248) + (xy 128.401198 85.194458) + (xy 128.4217 85.191) + (xy 128.910113 85.191) + (xy 128.954307 85.209306) + (xy 128.972613 85.2535) + (xy 128.954307 85.297694) + (xy 128.935035 85.310816) + (xy 128.877099 85.336007) + (xy 128.77627 85.379849) + (xy 128.577186 85.508642) + (xy 128.572535 85.512874) + (xy 128.406902 85.663589) + (xy 128.40181 85.668222) + (xy 128.400222 85.670233) + (xy 128.400219 85.670236) + (xy 128.256443 85.852288) + (xy 128.25644 85.852292) + (xy 128.254853 85.854302) + (xy 128.253614 85.856547) + (xy 128.253613 85.856548) + (xy 128.225361 85.907727) + (xy 128.140261 86.061886) + (xy 128.139403 86.064309) + (xy 128.065064 86.274236) + (xy 128.061111 86.285398) + (xy 128.060661 86.287924) + (xy 128.06066 86.287928) + (xy 128.01998 86.5163) + (xy 128.019979 86.516307) + (xy 128.019529 86.518835) + (xy 128.018072 86.638112) + (xy 128.016672 86.752756) + (xy 128.016633 86.75593) + (xy 128.052498 86.990314) + (xy 128.053296 86.992754) + (xy 128.053296 86.992756) + (xy 128.123293 87.20691) + (xy 128.126164 87.215693) + (xy 128.127349 87.21797) + (xy 128.127351 87.217974) + (xy 128.234463 87.423735) + (xy 128.234467 87.423741) + (xy 128.23565 87.426014) + (xy 128.378017 87.61563) + (xy 128.379869 87.617399) + (xy 128.37987 87.617401) + (xy 128.423819 87.659399) + (xy 128.549441 87.779446) + (xy 128.551561 87.780892) + (xy 128.551562 87.780893) + (xy 128.735669 87.906482) + (xy 128.745319 87.913065) + (xy 128.747651 87.914148) + (xy 128.747652 87.914148) + (xy 128.95504 88.010414) + (xy 128.960391 88.012898) + (xy 128.962858 88.013582) + (xy 128.962863 88.013584) + (xy 129.087266 88.048084) + (xy 129.188879 88.076264) + (xy 129.246886 88.082463) + (xy 129.380798 88.096774) + (xy 129.380802 88.096774) + (xy 129.382447 88.09695) + (xy 129.52011 88.09695) + (xy 129.696315 88.082463) + (xy 129.738098 88.071968) + (xy 129.923797 88.025324) + (xy 129.9238 88.025323) + (xy 129.926284 88.024699) + (xy 129.935238 88.020806) + (xy 130.027098 87.980864) + (xy 130.14373 87.930151) + (xy 130.342814 87.801358) + (xy 130.401879 87.747613) + (xy 130.51629 87.643507) + (xy 130.516291 87.643506) + (xy 130.51819 87.641778) + (xy 130.519781 87.639764) + (xy 130.663557 87.457712) + (xy 130.66356 87.457708) + (xy 130.665147 87.455698) + (xy 130.666913 87.4525) + (xy 130.731918 87.334742) + (xy 130.769303 87.304898) + (xy 130.81684 87.31023) + (xy 130.846684 87.347615) + (xy 130.8486 87.356789) + (xy 130.857168 87.421867) + (xy 130.859271 87.429716) + (xy 130.908602 87.548811) + (xy 130.912663 87.555846) + (xy 130.947074 87.600692) + (xy 130.955314 87.605449) + (xy 130.961371 87.603826) + (xy 131.275197 87.29) + (xy 131.27806 87.292863) + (xy 131.286246 87.284682) + (xy 131.258306 87.273109) + (xy 130.963432 86.978235) + (xy 130.942938 86.969746) + (xy 130.918515 86.969748) + (xy 130.884689 86.935924) + (xy 130.880899 86.901044) + (xy 130.900019 86.793702) + (xy 130.900019 86.7937) + (xy 130.900471 86.791165) + (xy 130.902331 86.638911) + (xy 130.903336 86.556638) + (xy 130.903336 86.556634) + (xy 130.903367 86.55407) + (xy 130.886495 86.44381) + (xy 130.897905 86.397356) + (xy 130.938822 86.372576) + (xy 130.985277 86.383986) + (xy 130.991321 86.389177) + (xy 130.993276 86.391724) + (xy 131.102151 86.475267) + (xy 131.105928 86.476832) + (xy 131.105929 86.476832) + (xy 131.225156 86.526217) + (xy 131.225158 86.526218) + (xy 131.22894 86.527784) + (xy 131.233002 86.528319) + (xy 131.233003 86.528319) + (xy 131.310658 86.538543) + (xy 131.352085 86.562461) + (xy 131.365 86.600508) + (xy 131.365 86.709996) + (xy 131.346694 86.75419) + (xy 131.310658 86.771961) + (xy 131.233133 86.782168) + (xy 131.225284 86.784271) + (xy 131.106189 86.833602) + (xy 131.099154 86.837663) + (xy 131.054308 86.872074) + (xy 131.049551 86.880314) + (xy 131.051174 86.886371) + (xy 131.346694 87.181891) + (xy 131.365 87.226085) + (xy 131.365 87.228915) + (xy 131.346694 87.273109) + (xy 131.342733 87.27475) + (xy 131.344032 87.27475) + (xy 131.346447 87.277166) + (xy 131.380263 87.310999) + (xy 131.380263 87.312237) + (xy 131.381891 87.308306) + (xy 131.426085 87.29) + (xy 131.428915 87.29) + (xy 131.473109 87.308306) + (xy 131.766568 87.601765) + (xy 131.775358 87.605406) + (xy 131.78115 87.603007) + (xy 131.817337 87.555846) + (xy 131.821398 87.548811) + (xy 131.870729 87.429716) + (xy 131.872832 87.421867) + (xy 131.883039 87.344342) + (xy 131.906957 87.302915) + (xy 131.945004 87.29) + (xy 132.054492 87.29) + (xy 132.098686 87.308306) + (xy 132.116457 87.344342) + (xy 132.126664 87.421867) + (xy 132.127216 87.42606) + (xy 132.128782 87.42984) + (xy 132.128782 87.429841) + (xy 132.174453 87.5401) + (xy 132.179733 87.552848) + (xy 132.182227 87.556098) + (xy 132.182228 87.5561) + (xy 132.215871 87.599944) + (xy 132.263276 87.661724) + (xy 132.266521 87.664214) + (xy 132.266522 87.664215) + (xy 132.284486 87.677999) + (xy 132.372151 87.745267) + (xy 132.375928 87.746832) + (xy 132.375929 87.746832) + (xy 132.495156 87.796217) + (xy 132.495158 87.796218) + (xy 132.49894 87.797784) + (xy 132.503002 87.798319) + (xy 132.503003 87.798319) + (xy 132.512961 87.79963) + (xy 132.591983 87.810034) + (xy 132.633408 87.83395) + (xy 132.645789 87.880156) + (xy 132.618093 87.924266) + (xy 132.531767 87.980864) + (xy 132.411525 88.107795) + (xy 132.409703 88.110933) + (xy 132.4097 88.110936) + (xy 132.327401 88.252625) + (xy 132.323708 88.258983) + (xy 132.311316 88.299898) + (xy 132.277619 88.411158) + (xy 132.273027 88.426318) + (xy 132.262201 88.600824) + (xy 132.29181 88.773141) + (xy 132.360267 88.934024) + (xy 132.463898 89.074843) + (xy 132.466664 89.077193) + (xy 132.466666 89.077195) + (xy 132.513344 89.11685) + (xy 132.597146 89.188045) + (xy 132.752862 89.267558) + (xy 132.922693 89.309115) + (xy 132.930268 89.309585) + (xy 132.932765 89.30974) + (xy 132.932769 89.30974) + (xy 132.933734 89.3098) + (xy 133.059779 89.3098) + (xy 133.061569 89.309591) + (xy 133.061574 89.309591) + (xy 133.114022 89.303476) + (xy 133.189665 89.294657) + (xy 133.19308 89.293418) + (xy 133.193082 89.293417) + (xy 133.250109 89.272717) + (xy 133.354015 89.235001) + (xy 133.500233 89.139136) + (xy 133.620475 89.012205) + (xy 133.622297 89.009067) + (xy 133.6223 89.009064) + (xy 133.706473 88.864149) + (xy 133.706474 88.864148) + (xy 133.708292 88.861017) + (xy 133.758973 88.693682) + (xy 133.769799 88.519176) + (xy 133.765862 88.496265) + (xy 133.764386 88.487672) + (xy 133.774943 88.441016) + (xy 133.815399 88.415491) + (xy 133.862055 88.426048) + (xy 133.870177 88.432894) + (xy 134.061032 88.623749) + (xy 134.079338 88.667943) + (xy 134.078594 88.677559) + (xy 134.068136 88.744724) + (xy 134.068713 88.749137) + (xy 134.068713 88.749138) + (xy 134.08289 88.85755) + (xy 134.084014 88.866145) + (xy 134.091185 88.882443) + (xy 134.091244 88.882813) + (xy 134.092007 88.884311) + (xy 134.094031 88.88891) + (xy 134.094031 88.888911) + (xy 134.128757 88.96783) + (xy 134.133333 88.97823) + (xy 134.147172 88.994694) + (xy 134.148029 88.995713) + (xy 134.150157 88.998434) + (xy 134.152292 89.002625) + (xy 134.160081 89.010414) + (xy 134.163729 89.014391) + (xy 134.172767 89.025143) + (xy 134.208323 89.067442) + (xy 134.212127 89.071968) + (xy 134.235399 89.087459) + (xy 134.241836 89.092733) + (xy 134.243899 89.094232) + (xy 134.247375 89.097708) + (xy 134.251753 89.099939) + (xy 134.251756 89.099941) + (xy 134.25873 89.103494) + (xy 134.264983 89.107152) + (xy 134.275526 89.11417) + (xy 134.281134 89.117903) + (xy 134.307778 89.157631) + (xy 134.309 89.169929) + (xy 134.309 90.206768) + (xy 134.30775 90.214107) + (xy 134.308477 90.21419) + (xy 134.30768 90.221181) + (xy 134.305348 90.227822) + (xy 134.306126 90.234815) + (xy 134.306126 90.234816) + (xy 134.308617 90.257197) + (xy 134.309 90.26411) + (xy 134.309 90.271533) + (xy 134.310581 90.278465) + (xy 134.311757 90.285418) + (xy 134.314986 90.314429) + (xy 134.318719 90.320393) + (xy 134.320094 90.324341) + (xy 134.321903 90.3281) + (xy 134.323468 90.334959) + (xy 134.327853 90.340461) + (xy 134.327853 90.340462) + (xy 134.329663 90.342733) + (xy 134.341156 90.357155) + (xy 134.341648 90.357773) + (xy 134.345744 90.363559) + (xy 134.349596 90.369711) + (xy 134.354809 90.374924) + (xy 134.359494 90.380168) + (xy 134.361399 90.382558) + (xy 134.377775 90.403109) + (xy 134.384114 90.406167) + (xy 134.389615 90.410558) + (xy 134.389189 90.411092) + (xy 134.395353 90.415468) + (xy 135.816772 91.836887) + (xy 135.835078 91.881081) + (xy 135.834334 91.890691) + (xy 135.818136 91.994724) + (xy 135.818713 91.999137) + (xy 135.818713 91.999138) + (xy 135.832838 92.107155) + (xy 135.834014 92.116145) + (xy 135.835809 92.120224) + (xy 135.839249 92.128042) + (xy 135.841185 92.132443) + (xy 135.841244 92.132813) + (xy 135.842007 92.134311) + (xy 135.844031 92.13891) + (xy 135.844031 92.138911) + (xy 135.881299 92.223607) + (xy 135.883333 92.22823) + (xy 135.886197 92.231637) + (xy 135.898029 92.245713) + (xy 135.900157 92.248434) + (xy 135.902292 92.252625) + (xy 135.910081 92.260414) + (xy 135.913729 92.264391) + (xy 135.924758 92.277512) + (xy 135.950894 92.308604) + (xy 135.962127 92.321968) + (xy 135.985399 92.337459) + (xy 135.991836 92.342733) + (xy 135.993899 92.344232) + (xy 135.997375 92.347708) + (xy 136.001753 92.349939) + (xy 136.001756 92.349941) + (xy 136.00873 92.353494) + (xy 136.014977 92.357148) + (xy 136.064064 92.389823) + (xy 136.068313 92.391151) + (xy 136.068314 92.391151) + (xy 136.100296 92.401143) + (xy 136.110027 92.405109) + (xy 136.112799 92.406521) + (xy 136.112803 92.406522) + (xy 136.117187 92.408756) + (xy 136.127852 92.410445) + (xy 136.136713 92.41252) + (xy 136.176696 92.425012) + (xy 136.176699 92.425012) + (xy 136.180948 92.42634) + (xy 136.230069 92.427241) + (xy 136.238683 92.427999) + (xy 136.24514 92.429022) + (xy 136.245144 92.429022) + (xy 136.25 92.429791) + (xy 136.256947 92.42869) + (xy 136.267853 92.427933) + (xy 136.303383 92.428584) + (xy 136.308019 92.42732) + (xy 136.350968 92.415611) + (xy 136.398421 92.421648) + (xy 136.411601 92.431716) + (xy 136.884372 92.904487) + (xy 136.888677 92.910561) + (xy 136.88925 92.910105) + (xy 136.893631 92.915613) + (xy 136.896678 92.921958) + (xy 136.904126 92.927914) + (xy 136.919761 92.940418) + (xy 136.92492 92.945035) + (xy 136.930169 92.950284) + (xy 136.934673 92.953115) + (xy 136.936172 92.954057) + (xy 136.941948 92.958162) + (xy 136.964733 92.976383) + (xy 136.971593 92.97796) + (xy 136.975353 92.979778) + (xy 136.979289 92.981156) + (xy 136.985248 92.984902) + (xy 136.992242 92.985693) + (xy 136.992243 92.985693) + (xy 137.014236 92.988179) + (xy 137.021213 92.989371) + (xy 137.028297 92.991) + (xy 137.035671 92.991) + (xy 137.042692 92.991396) + (xy 137.071838 92.994691) + (xy 137.078483 92.99237) + (xy 137.085477 92.991586) + (xy 137.085553 92.992264) + (xy 137.093005 92.991) + (xy 137.91 92.991) + (xy 137.954194 93.009306) + (xy 137.9725 93.0535) + (xy 137.9725 93.412558) + (xy 137.973099 93.415569) + (xy 137.978262 93.441523) + (xy 137.979898 93.449748) + (xy 138.008078 93.491922) + (xy 138.050252 93.520102) + (xy 138.056285 93.521302) + (xy 138.056287 93.521303) + (xy 138.077825 93.525587) + (xy 138.087442 93.5275) + (xy 139.512558 93.5275) + (xy 139.522175 93.525587) + (xy 139.543713 93.521303) + (xy 139.543715 93.521302) + (xy 139.549748 93.520102) + (xy 139.591922 93.491922) + (xy 139.620102 93.449748) + (xy 139.621739 93.441523) + (xy 139.626901 93.415569) + (xy 139.6275 93.412558) + (xy 139.6275 92.187442) + (xy 139.625505 92.177412) + (xy 139.621303 92.156287) + (xy 139.621302 92.156285) + (xy 139.620102 92.150252) + (xy 139.591922 92.108078) + (xy 139.549748 92.079898) + (xy 139.543715 92.078698) + (xy 139.543713 92.078697) + (xy 139.515569 92.073099) + (xy 139.512558 92.0725) + (xy 138.087442 92.0725) + (xy 138.084431 92.073099) + (xy 138.056287 92.078697) + (xy 138.056285 92.078698) + (xy 138.050252 92.079898) + (xy 138.008078 92.108078) + (xy 137.979898 92.150252) + (xy 137.978698 92.156285) + (xy 137.978697 92.156287) + (xy 137.974495 92.177412) + (xy 137.9725 92.187442) + (xy 137.9725 92.5465) + (xy 137.954194 92.590694) + (xy 137.91 92.609) + (xy 137.155003 92.609) + (xy 137.110809 92.590694) + (xy 136.682793 92.162678) + (xy 136.664487 92.118484) + (xy 136.665353 92.108115) + (xy 136.681767 92.010552) + (xy 136.681896 92) + (xy 136.664536 91.878781) + (xy 136.613852 91.767307) + (xy 136.599199 91.750302) + (xy 136.597708 91.747375) + (xy 136.5919 91.741567) + (xy 136.588746 91.73817) + (xy 136.536826 91.677914) + (xy 136.533918 91.674539) + (xy 136.513741 91.661461) + (xy 136.510155 91.658559) + (xy 136.510081 91.658661) + (xy 136.506106 91.655773) + (xy 136.502625 91.652292) + (xy 136.491343 91.646543) + (xy 136.485736 91.643309) + (xy 136.434893 91.610354) + (xy 136.43489 91.610353) + (xy 136.43116 91.607935) + (xy 136.426901 91.606661) + (xy 136.426898 91.60666) + (xy 136.402724 91.599431) + (xy 136.398839 91.598269) + (xy 136.388377 91.594079) + (xy 136.382813 91.591244) + (xy 136.371067 91.589384) + (xy 136.362951 91.587536) + (xy 136.351251 91.584037) + (xy 136.313838 91.572848) + (xy 136.269496 91.572577) + (xy 136.260103 91.571809) + (xy 136.254857 91.570978) + (xy 136.254856 91.570978) + (xy 136.25 91.570209) + (xy 136.241373 91.571576) + (xy 136.23122 91.572344) + (xy 136.212836 91.572231) + (xy 136.195838 91.572127) + (xy 136.195836 91.572127) + (xy 136.191385 91.5721) + (xy 136.14962 91.584037) + (xy 136.102099 91.578581) + (xy 136.088252 91.568137) + (xy 134.709306 90.189191) + (xy 134.691 90.144997) + (xy 134.691 89.169384) + (xy 134.709306 89.12519) + (xy 134.720797 89.116123) + (xy 134.739712 89.104509) + (xy 134.744034 89.102085) + (xy 134.752625 89.097708) + (xy 134.755427 89.094906) + (xy 134.756264 89.094346) + (xy 134.75972 89.092224) + (xy 134.775881 89.082301) + (xy 134.858058 88.991513) + (xy 134.911451 88.881311) + (xy 134.913317 88.870224) + (xy 134.931367 88.762928) + (xy 134.931767 88.760552) + (xy 134.931896 88.75) + (xy 134.914536 88.628781) + (xy 134.863852 88.517307) + (xy 134.849199 88.500302) + (xy 134.847708 88.497375) + (xy 134.8419 88.491567) + (xy 134.838746 88.48817) + (xy 134.786826 88.427914) + (xy 134.783918 88.424539) + (xy 134.763741 88.411461) + (xy 134.760155 88.408559) + (xy 134.760081 88.408661) + (xy 134.756106 88.405773) + (xy 134.752625 88.402292) + (xy 134.741343 88.396543) + (xy 134.735736 88.393309) + (xy 134.684893 88.360354) + (xy 134.68489 88.360353) + (xy 134.68116 88.357935) + (xy 134.676901 88.356661) + (xy 134.676898 88.35666) + (xy 134.654429 88.349941) + (xy 134.648839 88.348269) + (xy 134.638377 88.344079) + (xy 134.632813 88.341244) + (xy 134.621067 88.339384) + (xy 134.612951 88.337536) + (xy 134.563838 88.322848) + (xy 134.519496 88.322577) + (xy 134.510103 88.321809) + (xy 134.504857 88.320978) + (xy 134.504856 88.320978) + (xy 134.5 88.320209) + (xy 134.491373 88.321576) + (xy 134.48122 88.322344) + (xy 134.462836 88.322231) + (xy 134.445838 88.322127) + (xy 134.445836 88.322127) + (xy 134.441385 88.3221) + (xy 134.387011 88.337641) + (xy 134.379623 88.339275) + (xy 134.367187 88.341244) + (xy 134.366143 88.341776) + (xy 134.319981 88.338142) + (xy 134.304162 88.326649) + (xy 134.139093 88.16158) + (xy 134.120787 88.117386) + (xy 134.139093 88.073192) + (xy 134.183287 88.054886) + (xy 134.199989 88.057159) + (xy 134.268879 88.076264) + (xy 134.326886 88.082463) + (xy 134.460798 88.096774) + (xy 134.460802 88.096774) + (xy 134.462447 88.09695) + (xy 134.60011 88.09695) + (xy 134.776315 88.082463) + (xy 134.818098 88.071968) + (xy 135.003797 88.025324) + (xy 135.0038 88.025323) + (xy 135.006284 88.024699) + (xy 135.015238 88.020806) + (xy 135.107098 87.980864) + (xy 135.22373 87.930151) + (xy 135.422814 87.801358) + (xy 135.481879 87.747613) + (xy 135.59629 87.643507) + (xy 135.596291 87.643506) + (xy 135.59819 87.641778) + (xy 135.599781 87.639764) + (xy 135.743557 87.457712) + (xy 135.74356 87.457708) + (xy 135.745147 87.455698) + (xy 135.746913 87.4525) + (xy 135.835036 87.292863) + (xy 135.859739 87.248114) + (xy 135.880282 87.190102) + (xy 135.938032 87.027023) + (xy 135.938033 87.027019) + (xy 135.938889 87.024602) + (xy 135.93934 87.022072) + (xy 135.98002 86.7937) + (xy 135.980021 86.793693) + (xy 135.980471 86.791165) + (xy 135.982331 86.638911) + (xy 135.983336 86.556638) + (xy 135.983336 86.556634) + (xy 135.983367 86.55407) + (xy 135.947502 86.319686) + (xy 135.938856 86.293232) + (xy 135.874635 86.096751) + (xy 135.874634 86.096749) + (xy 135.873836 86.094307) + (xy 135.872242 86.091244) + (xy 135.765537 85.886265) + (xy 135.765533 85.886259) + (xy 135.76435 85.883986) + (xy 135.621983 85.69437) + (xy 135.61859 85.691127) + (xy 135.528057 85.604613) + (xy 135.450559 85.530554) + (xy 135.443876 85.525995) + (xy 135.256807 85.398385) + (xy 135.256805 85.398384) + (xy 135.254681 85.396935) + (xy 135.25067 85.395073) + (xy 135.067805 85.31019) + (xy 135.035427 85.274979) + (xy 135.03743 85.227185) + (xy 135.072641 85.194807) + (xy 135.09412 85.191) + (xy 137.576187 85.191) + (xy 137.620381 85.209306) + (xy 137.629248 85.220473) + (xy 137.63154 85.224155) + (xy 137.633333 85.22823) + (xy 137.646318 85.243677) + (xy 137.648029 85.245713) + (xy 137.650157 85.248434) + (xy 137.652292 85.252625) + (xy 137.660081 85.260414) + (xy 137.663729 85.264391) + (xy 137.712127 85.321968) + (xy 137.735399 85.337459) + (xy 137.741836 85.342733) + (xy 137.743899 85.344232) + (xy 137.747375 85.347708) + (xy 137.751753 85.349939) + (xy 137.751756 85.349941) + (xy 137.75873 85.353494) + (xy 137.764977 85.357148) + (xy 137.814064 85.389823) + (xy 137.818313 85.391151) + (xy 137.818314 85.391151) + (xy 137.850296 85.401143) + (xy 137.860027 85.405109) + (xy 137.862799 85.406521) + (xy 137.862803 85.406522) + (xy 137.867187 85.408756) + (xy 137.877852 85.410445) + (xy 137.886713 85.41252) + (xy 137.926696 85.425012) + (xy 137.926699 85.425012) + (xy 137.930948 85.42634) + (xy 137.980069 85.427241) + (xy 137.988683 85.427999) + (xy 137.99514 85.429022) + (xy 137.995144 85.429022) + (xy 138 85.429791) + (xy 138.006947 85.42869) + (xy 138.017853 85.427933) + (xy 138.053383 85.428584) + (xy 138.113532 85.412185) + (xy 138.12019 85.410755) + (xy 138.122147 85.410445) + (xy 138.132813 85.408756) + (xy 138.137196 85.406522) + (xy 138.141875 85.405002) + (xy 138.141878 85.40501) + (xy 138.146727 85.403136) + (xy 138.171527 85.396375) + (xy 138.176521 85.393309) + (xy 138.239709 85.354511) + (xy 138.244037 85.352085) + (xy 138.24824 85.349944) + (xy 138.248248 85.349938) + (xy 138.252625 85.347708) + (xy 138.255427 85.344906) + (xy 138.256264 85.344346) + (xy 138.256704 85.344076) + (xy 138.275881 85.332301) + (xy 138.358058 85.241513) + (xy 138.411451 85.131311) + (xy 138.412247 85.126583) + (xy 138.424292 85.054981) + (xy 138.431767 85.010552) + (xy 138.431896 85) + (xy 138.414536 84.878781) + (xy 138.363852 84.767307) + (xy 138.364551 84.766989) + (xy 138.356795 84.723478) + (xy 138.38416 84.684242) + (xy 138.427503 84.675264) + (xy 138.430948 84.67634) + (xy 138.480069 84.677241) + (xy 138.488683 84.677999) + (xy 138.49514 84.679022) + (xy 138.495144 84.679022) + (xy 138.5 84.679791) + (xy 138.506947 84.67869) + (xy 138.517853 84.677933) + (xy 138.553383 84.678584) + (xy 138.613532 84.662185) + (xy 138.62019 84.660755) + (xy 138.622147 84.660445) + (xy 138.632813 84.658756) + (xy 138.637196 84.656522) + (xy 138.641875 84.655002) + (xy 138.641878 84.65501) + (xy 138.646727 84.653136) + (xy 138.671527 84.646375) + (xy 138.676521 84.643309) + (xy 138.739709 84.604511) + (xy 138.744037 84.602085) + (xy 138.74824 84.599944) + (xy 138.748248 84.599938) + (xy 138.752625 84.597708) + (xy 138.755427 84.594906) + (xy 138.756264 84.594346) + (xy 138.756704 84.594076) + (xy 138.775881 84.582301) + (xy 138.858058 84.491513) + (xy 138.911451 84.381311) + (xy 138.91245 84.375378) + (xy 138.924237 84.305309) + (xy 138.931767 84.260552) + (xy 138.931896 84.25) + (xy 138.914536 84.128781) + (xy 138.863852 84.017307) + (xy 138.849199 84.000302) + (xy 138.847708 83.997375) + (xy 138.8419 83.991567) + (xy 138.838746 83.98817) + (xy 138.799915 83.943105) + (xy 138.783918 83.924539) + (xy 138.763741 83.911461) + (xy 138.760155 83.908559) + (xy 138.760081 83.908661) + (xy 138.756106 83.905773) + (xy 138.752625 83.902292) + (xy 138.741343 83.896543) + (xy 138.735736 83.893309) + (xy 138.726037 83.887022) + (xy 138.714408 83.879485) + (xy 138.684893 83.860354) + (xy 138.68489 83.860353) + (xy 138.68116 83.857935) + (xy 138.676901 83.856661) + (xy 138.676898 83.85666) + (xy 138.654429 83.849941) + (xy 138.648839 83.848269) + (xy 138.638377 83.844079) + (xy 138.632813 83.841244) + (xy 138.621067 83.839384) + (xy 138.612951 83.837536) + (xy 138.563838 83.822848) + (xy 138.519496 83.822577) + (xy 138.510103 83.821809) + (xy 138.510053 83.821801) + (xy 138.508469 83.82155) + (xy 138.504857 83.820978) + (xy 138.504856 83.820978) + (xy 138.5 83.820209) + (xy 138.491373 83.821576) + (xy 138.48122 83.822344) + (xy 138.462836 83.822231) + (xy 138.445838 83.822127) + (xy 138.445836 83.822127) + (xy 138.441385 83.8221) + (xy 138.437104 83.823324) + (xy 138.437101 83.823324) + (xy 138.433686 83.8243) + (xy 138.386163 83.818843) + (xy 138.356418 83.78138) + (xy 138.360266 83.736955) + (xy 138.362843 83.731637) + (xy 138.411451 83.631311) + (xy 138.413196 83.620943) + (xy 138.428289 83.531224) + (xy 138.431767 83.510552) + (xy 138.431896 83.5) + (xy 138.414536 83.378781) + (xy 138.363852 83.267307) + (xy 138.364551 83.266989) + (xy 138.356795 83.223478) + (xy 138.38416 83.184242) + (xy 138.427503 83.175264) + (xy 138.430948 83.17634) + (xy 138.480069 83.177241) + (xy 138.488683 83.177999) + (xy 138.49514 83.179022) + (xy 138.495144 83.179022) + (xy 138.5 83.179791) + (xy 138.506947 83.17869) + (xy 138.517853 83.177933) + (xy 138.553383 83.178584) + (xy 138.613532 83.162185) + (xy 138.62019 83.160755) + (xy 138.622147 83.160445) + (xy 138.632813 83.158756) + (xy 138.637196 83.156522) + (xy 138.641875 83.155002) + (xy 138.641878 83.15501) + (xy 138.646727 83.153136) + (xy 138.671527 83.146375) + (xy 138.676521 83.143309) + (xy 138.739709 83.104511) + (xy 138.744037 83.102085) + (xy 138.74824 83.099944) + (xy 138.748248 83.099938) + (xy 138.752625 83.097708) + (xy 138.755427 83.094906) + (xy 138.756264 83.094346) + (xy 138.775881 83.082301) + (xy 138.858058 82.991513) + (xy 138.911451 82.881311) + (xy 138.913317 82.870224) + (xy 138.926727 82.790508) + (xy 138.931767 82.760552) + (xy 138.931896 82.75) + (xy 138.914536 82.628781) + (xy 138.863852 82.517307) + (xy 138.849199 82.500302) + (xy 138.847708 82.497375) + (xy 138.8419 82.491567) + (xy 138.838746 82.48817) + (xy 138.786826 82.427914) + (xy 138.783918 82.424539) + (xy 138.763741 82.411461) + (xy 138.760155 82.408559) + (xy 138.760081 82.408661) + (xy 138.756106 82.405773) + (xy 138.752625 82.402292) + (xy 138.741343 82.396543) + (xy 138.735736 82.393309) + (xy 138.684893 82.360354) + (xy 138.68489 82.360353) + (xy 138.68116 82.357935) + (xy 138.676901 82.356661) + (xy 138.676898 82.35666) + (xy 138.654115 82.349847) + (xy 138.648839 82.348269) + (xy 138.638377 82.344079) + (xy 138.632813 82.341244) + (xy 138.621067 82.339384) + (xy 138.612951 82.337536) + (xy 138.602425 82.334388) + (xy 138.563838 82.322848) + (xy 138.519496 82.322577) + (xy 138.510103 82.321809) + (xy 138.504857 82.320978) + (xy 138.504856 82.320978) + (xy 138.5 82.320209) + (xy 138.491373 82.321576) + (xy 138.48122 82.322344) + (xy 138.462836 82.322231) + (xy 138.445838 82.322127) + (xy 138.445836 82.322127) + (xy 138.441385 82.3221) + (xy 138.387011 82.337641) + (xy 138.379623 82.339275) + (xy 138.367187 82.341244) + (xy 138.362804 82.343477) + (xy 138.36187 82.343781) + (xy 138.352155 82.347603) + (xy 138.327929 82.354526) + (xy 138.327927 82.354527) + (xy 138.323644 82.355751) + (xy 138.319875 82.358129) + (xy 138.314906 82.361264) + (xy 138.264119 82.393309) + (xy 138.262819 82.394129) + (xy 138.257842 82.396959) + (xy 138.251757 82.400059) + (xy 138.251756 82.40006) + (xy 138.247375 82.402292) + (xy 138.243897 82.40577) + (xy 138.242445 82.406825) + (xy 138.239058 82.40912) + (xy 138.22008 82.421095) + (xy 138.217137 82.424427) + (xy 138.217135 82.424429) + (xy 138.157156 82.492342) + (xy 138.156032 82.493538) + (xy 138.155775 82.493892) + (xy 138.155554 82.494113) + (xy 138.155405 82.494204) + (xy 138.154504 82.495163) + (xy 138.152292 82.497375) + (xy 138.151509 82.496592) + (xy 138.150362 82.497296) + (xy 138.151721 82.498496) + (xy 138.139018 82.512879) + (xy 138.137127 82.516906) + (xy 138.137126 82.516908) + (xy 138.134237 82.523062) + (xy 138.098884 82.555287) + (xy 138.077662 82.559) + (xy 133.280003 82.559) + (xy 133.235809 82.540694) + (xy 133.142554 82.447439) + (xy 133.124248 82.403245) + (xy 133.129005 82.379329) + (xy 133.141216 82.349847) + (xy 133.141217 82.349843) + (xy 133.142784 82.34606) + (xy 133.143515 82.340512) + (xy 133.160162 82.214064) + (xy 133.160697 82.21) + (xy 133.154312 82.1615) + (xy 133.143319 82.078) + (xy 133.143318 82.077996) + (xy 133.142784 82.07394) + (xy 133.140681 82.068863) + (xy 133.091835 81.950937) + (xy 133.091834 81.950936) + (xy 133.090267 81.947152) + (xy 133.087088 81.943008) + (xy 133.023604 81.860275) + (xy 133.006724 81.838276) + (xy 132.897849 81.754733) + (xy 132.894071 81.753168) + (xy 132.774844 81.703783) + (xy 132.774842 81.703782) + (xy 132.77106 81.702216) + (xy 132.766998 81.701681) + (xy 132.766997 81.701681) + (xy 132.639064 81.684838) + (xy 132.635 81.684303) + (xy 132.630936 81.684838) + (xy 132.503 81.701681) + (xy 132.502996 81.701682) + (xy 132.49894 81.702216) + (xy 132.49516 81.703782) + (xy 132.495159 81.703782) + (xy 132.375937 81.753165) + (xy 132.375936 81.753166) + (xy 132.372152 81.754733) + (xy 132.263276 81.838276) + (xy 132.260784 81.841524) + (xy 132.260783 81.841525) + (xy 132.182913 81.943008) + (xy 132.179733 81.947152) + (xy 132.178166 81.950936) + (xy 132.178165 81.950937) + (xy 132.129319 82.068863) + (xy 132.127216 82.07394) + (xy 132.126682 82.077996) + (xy 132.126681 82.078) + (xy 132.116457 82.155658) + (xy 132.092539 82.197085) + (xy 132.054492 82.21) + (xy 131.945508 82.21) + (xy 131.901314 82.191694) + (xy 131.883543 82.155658) + (xy 131.873319 82.078) + (xy 131.873318 82.077996) + (xy 131.872784 82.07394) + (xy 131.870681 82.068863) + (xy 131.821835 81.950937) + (xy 131.821834 81.950936) + (xy 131.820267 81.947152) + (xy 131.817088 81.943008) + (xy 131.753604 81.860275) + (xy 131.736724 81.838276) + (xy 131.627849 81.754733) + (xy 131.624071 81.753168) + (xy 131.504844 81.703783) + (xy 131.504842 81.703782) + (xy 131.50106 81.702216) + (xy 131.496998 81.701681) + (xy 131.496997 81.701681) + (xy 131.369064 81.684838) + (xy 131.365 81.684303) + (xy 131.360936 81.684838) + (xy 131.233 81.701681) + (xy 131.232996 81.701682) + (xy 131.22894 81.702216) + (xy 131.22516 81.703782) + (xy 131.225159 81.703782) + (xy 131.105937 81.753165) + (xy 131.105936 81.753166) + (xy 131.102152 81.754733) + (xy 130.993276 81.838276) + (xy 130.990784 81.841524) + (xy 130.990783 81.841525) + (xy 130.912913 81.943008) + (xy 130.909733 81.947152) + (xy 130.908166 81.950936) + (xy 130.908165 81.950937) + (xy 130.859319 82.068863) + (xy 130.857216 82.07394) + (xy 130.856682 82.077996) + (xy 130.856681 82.078) + (xy 130.845688 82.1615) + (xy 130.839303 82.21) + (xy 130.839838 82.214064) + (xy 130.856486 82.340512) + (xy 130.857216 82.34606) + (xy 130.858783 82.349843) + (xy 130.858784 82.349847) + (xy 130.870995 82.379329) + (xy 130.870994 82.427164) + (xy 130.857446 82.447439) + (xy 130.764191 82.540694) + (xy 130.719997 82.559) + (xy 127.873049 82.559) + (xy 127.828855 82.540694) + (xy 127.816156 82.522373) + (xy 127.815695 82.52136) + (xy 127.815693 82.521357) + (xy 127.813852 82.517307) + (xy 127.799199 82.500302) + (xy 127.797708 82.497375) + (xy 127.7919 82.491567) + (xy 127.788746 82.48817) + (xy 127.736826 82.427914) + (xy 127.733918 82.424539) + (xy 127.713741 82.411461) + (xy 127.710155 82.408559) + (xy 127.710081 82.408661) + (xy 127.706106 82.405773) + (xy 127.702625 82.402292) + (xy 127.691343 82.396543) + (xy 127.685736 82.393309) + (xy 127.634893 82.360354) + (xy 127.63489 82.360353) + (xy 127.63116 82.357935) + (xy 127.626901 82.356661) + (xy 127.626898 82.35666) + (xy 127.604115 82.349847) + (xy 127.598839 82.348269) + (xy 127.588377 82.344079) + (xy 127.582813 82.341244) + (xy 127.571067 82.339384) + (xy 127.562951 82.337536) + (xy 127.552425 82.334388) + (xy 127.513838 82.322848) + (xy 127.469496 82.322577) + (xy 127.460103 82.321809) + (xy 127.454857 82.320978) + (xy 127.454856 82.320978) + (xy 127.45 82.320209) + (xy 127.441373 82.321576) + (xy 127.43122 82.322344) + (xy 127.412836 82.322231) + (xy 127.395838 82.322127) + (xy 127.395836 82.322127) + (xy 127.391385 82.3221) + (xy 127.337011 82.337641) + (xy 127.329623 82.339275) + (xy 127.317187 82.341244) + (xy 127.312804 82.343477) + (xy 127.31187 82.343781) + (xy 127.302155 82.347603) + (xy 127.277929 82.354526) + (xy 127.277927 82.354527) + (xy 127.273644 82.355751) + (xy 127.269875 82.358129) + (xy 127.264906 82.361264) + (xy 127.214119 82.393309) + (xy 127.212819 82.394129) + (xy 127.207842 82.396959) + (xy 127.201757 82.400059) + (xy 127.201756 82.40006) + (xy 127.197375 82.402292) + (xy 127.193897 82.40577) + (xy 127.192445 82.406825) + (xy 127.189058 82.40912) + (xy 127.17008 82.421095) + (xy 127.167137 82.424427) + (xy 127.167135 82.424429) + (xy 127.107156 82.492342) + (xy 127.106032 82.493538) + (xy 127.105775 82.493892) + (xy 127.105554 82.494113) + (xy 127.105405 82.494204) + (xy 127.104504 82.495163) + (xy 127.102292 82.497375) + (xy 127.101509 82.496592) + (xy 127.100362 82.497296) + (xy 127.101721 82.498496) + (xy 127.089018 82.512879) + (xy 127.086939 82.517307) + (xy 127.038868 82.619695) + (xy 127.038867 82.619698) + (xy 127.036976 82.623726) + (xy 127.018136 82.744724) + (xy 125.977 82.744724) + (xy 125.977 82.300931) + (xy 125.973359 82.292141) + (xy 125.964569 82.2885) + (xy 125.075931 82.2885) + (xy 125.067141 82.292141) + (xy 125.0635 82.300931) + (xy 125.0635 83.189569) + (xy 124.9365 83.189569) + (xy 124.9365 82.300931) + (xy 124.932859 82.292141) + (xy 124.924069 82.2885) + (xy 124.035431 82.2885) + (xy 124.026641 82.292141) + (xy 124.023 82.300931) + (xy 124.023 83.084438) + (xy 99.3 83.084438) + (xy 99.3 82.149069) + (xy 124.023 82.149069) + (xy 124.026641 82.157859) + (xy 124.035431 82.1615) + (xy 124.924069 82.1615) + (xy 124.932859 82.157859) + (xy 124.9365 82.149069) + (xy 125.0635 82.149069) + (xy 125.067141 82.157859) + (xy 125.075931 82.1615) + (xy 125.964569 82.1615) + (xy 125.973359 82.157859) + (xy 125.977 82.149069) + (xy 125.977 81.365562) + (xy 125.976401 81.359481) + (xy 125.970831 81.331482) + (xy 125.966212 81.32033) + (xy 125.944981 81.288555) + (xy 125.936445 81.280019) + (xy 125.90467 81.258788) + (xy 125.893518 81.254169) + (xy 125.865519 81.248599) + (xy 125.859438 81.248) + (xy 125.075931 81.248) + (xy 125.067141 81.251641) + (xy 125.0635 81.260431) + (xy 125.0635 82.149069) + (xy 124.9365 82.149069) + (xy 124.9365 81.260431) + (xy 124.932859 81.251641) + (xy 124.924069 81.248) + (xy 124.140562 81.248) + (xy 124.134481 81.248599) + (xy 124.106482 81.254169) + (xy 124.09533 81.258788) + (xy 124.063555 81.280019) + (xy 124.055019 81.288555) + (xy 124.033788 81.32033) + (xy 124.029169 81.331482) + (xy 124.023599 81.359481) + (xy 124.023 81.365562) + (xy 124.023 82.149069) + (xy 99.3 82.149069) + (xy 99.3 81.559438) + (xy 114.423 81.559438) + (xy 114.423599 81.565519) + (xy 114.429169 81.593518) + (xy 114.433788 81.60467) + (xy 114.455019 81.636445) + (xy 114.463555 81.644981) + (xy 114.49533 81.666212) + (xy 114.506482 81.670831) + (xy 114.534481 81.676401) + (xy 114.540562 81.677) + (xy 115.174069 81.677) + (xy 115.182859 81.673359) + (xy 115.1865 81.664569) + (xy 115.3135 81.664569) + (xy 115.317141 81.673359) + (xy 115.325931 81.677) + (xy 115.959438 81.677) + (xy 115.965519 81.676401) + (xy 115.993518 81.670831) + (xy 116.00467 81.666212) + (xy 116.036445 81.644981) + (xy 116.044981 81.636445) + (xy 116.066212 81.60467) + (xy 116.070831 81.593518) + (xy 116.076401 81.565519) + (xy 116.076693 81.562558) + (xy 118.9225 81.562558) + (xy 118.923099 81.565569) + (xy 118.928659 81.593518) + (xy 118.929898 81.599748) + (xy 118.958078 81.641922) + (xy 119.000252 81.670102) + (xy 119.006285 81.671302) + (xy 119.006287 81.671303) + (xy 119.025261 81.675077) + (xy 119.037442 81.6775) + (xy 120.462558 81.6775) + (xy 120.474739 81.675077) + (xy 120.493713 81.671303) + (xy 120.493715 81.671302) + (xy 120.499748 81.670102) + (xy 120.541922 81.641922) + (xy 120.570102 81.599748) + (xy 120.571342 81.593518) + (xy 120.576901 81.565569) + (xy 120.5775 81.562558) + (xy 120.5775 81.04093) + (xy 128.016633 81.04093) + (xy 128.017021 81.043465) + (xy 128.017021 81.043466) + (xy 128.021089 81.070054) + (xy 128.052498 81.275314) + (xy 128.053296 81.277754) + (xy 128.053296 81.277756) + (xy 128.117055 81.472825) + (xy 128.126164 81.500693) + (xy 128.127349 81.50297) + (xy 128.127351 81.502974) + (xy 128.234463 81.708735) + (xy 128.234467 81.708741) + (xy 128.23565 81.711014) + (xy 128.378017 81.90063) + (xy 128.379869 81.902399) + (xy 128.37987 81.902401) + (xy 128.431772 81.951999) + (xy 128.549441 82.064446) + (xy 128.551561 82.065892) + (xy 128.551562 82.065893) + (xy 128.692733 82.162193) + (xy 128.745319 82.198065) + (xy 128.747651 82.199148) + (xy 128.747652 82.199148) + (xy 128.947989 82.292141) + (xy 128.960391 82.297898) + (xy 128.962858 82.298582) + (xy 128.962863 82.298584) + (xy 129.11405 82.340512) + (xy 129.188879 82.361264) + (xy 129.246886 82.367463) + (xy 129.380798 82.381774) + (xy 129.380802 82.381774) + (xy 129.382447 82.38195) + (xy 129.52011 82.38195) + (xy 129.696315 82.367463) + (xy 129.766448 82.349847) + (xy 129.923797 82.310324) + (xy 129.9238 82.310323) + (xy 129.926284 82.309699) + (xy 129.973183 82.289307) + (xy 129.992057 82.2811) + (xy 130.14373 82.215151) + (xy 130.342814 82.086358) + (xy 130.418763 82.01725) + (xy 130.51629 81.928507) + (xy 130.516291 81.928506) + (xy 130.51819 81.926778) + (xy 130.537442 81.902401) + (xy 130.663557 81.742712) + (xy 130.66356 81.742708) + (xy 130.665147 81.740698) + (xy 130.682792 81.708735) + (xy 130.778498 81.535362) + (xy 130.779739 81.533114) + (xy 130.801089 81.472825) + (xy 130.858032 81.312023) + (xy 130.858033 81.312019) + (xy 130.858889 81.309602) + (xy 130.860036 81.303162) + (xy 130.90002 81.0787) + (xy 130.900021 81.078693) + (xy 130.900471 81.076165) + (xy 130.901636 80.980824) + (xy 131.246201 80.980824) + (xy 131.27581 81.153141) + (xy 131.344267 81.314024) + (xy 131.447898 81.454843) + (xy 131.450664 81.457193) + (xy 131.450666 81.457195) + (xy 131.49002 81.490628) + (xy 131.581146 81.568045) + (xy 131.736862 81.647558) + (xy 131.906693 81.689115) + (xy 131.914268 81.689585) + (xy 131.916765 81.68974) + (xy 131.916769 81.68974) + (xy 131.917734 81.6898) + (xy 132.043779 81.6898) + (xy 132.045569 81.689591) + (xy 132.045574 81.689591) + (xy 132.095216 81.683803) + (xy 132.173665 81.674657) + (xy 132.17708 81.673418) + (xy 132.177082 81.673417) + (xy 132.245944 81.648421) + (xy 132.338015 81.615001) + (xy 132.353477 81.604864) + (xy 132.407118 81.569695) + (xy 132.484233 81.519136) + (xy 132.604475 81.392205) + (xy 132.606297 81.389067) + (xy 132.6063 81.389064) + (xy 132.690473 81.244149) + (xy 132.690474 81.244148) + (xy 132.692292 81.241017) + (xy 132.742973 81.073682) + (xy 132.745005 81.04093) + (xy 133.096633 81.04093) + (xy 133.097021 81.043465) + (xy 133.097021 81.043466) + (xy 133.101089 81.070054) + (xy 133.132498 81.275314) + (xy 133.133296 81.277754) + (xy 133.133296 81.277756) + (xy 133.197055 81.472825) + (xy 133.206164 81.500693) + (xy 133.207349 81.50297) + (xy 133.207351 81.502974) + (xy 133.314463 81.708735) + (xy 133.314467 81.708741) + (xy 133.31565 81.711014) + (xy 133.458017 81.90063) + (xy 133.459869 81.902399) + (xy 133.45987 81.902401) + (xy 133.511772 81.951999) + (xy 133.629441 82.064446) + (xy 133.631561 82.065892) + (xy 133.631562 82.065893) + (xy 133.772733 82.162193) + (xy 133.825319 82.198065) + (xy 133.827651 82.199148) + (xy 133.827652 82.199148) + (xy 134.027989 82.292141) + (xy 134.040391 82.297898) + (xy 134.042858 82.298582) + (xy 134.042863 82.298584) + (xy 134.19405 82.340512) + (xy 134.268879 82.361264) + (xy 134.326886 82.367463) + (xy 134.460798 82.381774) + (xy 134.460802 82.381774) + (xy 134.462447 82.38195) + (xy 134.60011 82.38195) + (xy 134.776315 82.367463) + (xy 134.846448 82.349847) + (xy 135.003797 82.310324) + (xy 135.0038 82.310323) + (xy 135.006284 82.309699) + (xy 135.053183 82.289307) + (xy 135.072057 82.2811) + (xy 135.22373 82.215151) + (xy 135.422814 82.086358) + (xy 135.498763 82.01725) + (xy 135.59629 81.928507) + (xy 135.596291 81.928506) + (xy 135.59819 81.926778) + (xy 135.617442 81.902401) + (xy 135.667269 81.839309) + (xy 144.168 81.839309) + (xy 144.168218 81.842988) + (xy 144.17032 81.860647) + (xy 144.172778 81.869593) + (xy 144.210421 81.954339) + (xy 144.216846 81.963688) + (xy 144.281711 82.02844) + (xy 144.291069 82.034848) + (xy 144.375876 82.072341) + (xy 144.384838 82.074784) + (xy 144.40205 82.076791) + (xy 144.405658 82.077) + (xy 144.519069 82.077) + (xy 144.527859 82.073359) + (xy 144.5315 82.064569) + (xy 144.6585 82.064569) + (xy 144.662141 82.073359) + (xy 144.670931 82.077) + (xy 144.784309 82.077) + (xy 144.787988 82.076782) + (xy 144.805647 82.07468) + (xy 144.814593 82.072222) + (xy 144.899339 82.034579) + (xy 144.908688 82.028154) + (xy 144.97344 81.963289) + (xy 144.979848 81.953931) + (xy 145.017341 81.869124) + (xy 145.019784 81.860162) + (xy 145.021791 81.84295) + (xy 145.022 81.839342) + (xy 145.022 81.225931) + (xy 145.018359 81.217141) + (xy 145.009569 81.2135) + (xy 144.670931 81.2135) + (xy 144.662141 81.217141) + (xy 144.6585 81.225931) + (xy 144.6585 82.064569) + (xy 144.5315 82.064569) + (xy 144.5315 81.225931) + (xy 144.527859 81.217141) + (xy 144.519069 81.2135) + (xy 144.180431 81.2135) + (xy 144.171641 81.217141) + (xy 144.168 81.225931) + (xy 144.168 81.839309) + (xy 135.667269 81.839309) + (xy 135.743557 81.742712) + (xy 135.74356 81.742708) + (xy 135.745147 81.740698) + (xy 135.762792 81.708735) + (xy 135.858498 81.535362) + (xy 135.859739 81.533114) + (xy 135.881089 81.472825) + (xy 135.938032 81.312023) + (xy 135.938033 81.312019) + (xy 135.938889 81.309602) + (xy 135.940036 81.303162) + (xy 135.98002 81.0787) + (xy 135.980021 81.078693) + (xy 135.980471 81.076165) + (xy 135.980497 81.074069) + (xy 144.168 81.074069) + (xy 144.171641 81.082859) + (xy 144.180431 81.0865) + (xy 144.519069 81.0865) + (xy 144.527859 81.082859) + (xy 144.5315 81.074069) + (xy 144.6585 81.074069) + (xy 144.662141 81.082859) + (xy 144.670931 81.0865) + (xy 145.009569 81.0865) + (xy 145.018359 81.082859) + (xy 145.022 81.074069) + (xy 145.022 80.460691) + (xy 145.021782 80.457012) + (xy 145.01968 80.439353) + (xy 145.017222 80.430407) + (xy 144.979579 80.345661) + (xy 144.973154 80.336312) + (xy 144.908289 80.27156) + (xy 144.898931 80.265152) + (xy 144.814124 80.227659) + (xy 144.805162 80.225216) + (xy 144.78795 80.223209) + (xy 144.784342 80.223) + (xy 144.670931 80.223) + (xy 144.662141 80.226641) + (xy 144.6585 80.235431) + (xy 144.6585 81.074069) + (xy 144.5315 81.074069) + (xy 144.5315 80.235431) + (xy 144.527859 80.226641) + (xy 144.519069 80.223) + (xy 144.405691 80.223) + (xy 144.402012 80.223218) + (xy 144.384353 80.22532) + (xy 144.375407 80.227778) + (xy 144.290661 80.265421) + (xy 144.281312 80.271846) + (xy 144.21656 80.336711) + (xy 144.210152 80.346069) + (xy 144.172659 80.430876) + (xy 144.170216 80.439838) + (xy 144.168209 80.45705) + (xy 144.168 80.460658) + (xy 144.168 81.074069) + (xy 135.980497 81.074069) + (xy 135.982485 80.911288) + (xy 135.983336 80.841638) + (xy 135.983336 80.841634) + (xy 135.983367 80.83907) + (xy 135.981357 80.825931) + (xy 135.969614 80.749193) + (xy 135.947502 80.604686) + (xy 135.943109 80.591244) + (xy 135.874635 80.381751) + (xy 135.874634 80.381749) + (xy 135.873836 80.379307) + (xy 135.872649 80.377026) + (xy 135.765537 80.171265) + (xy 135.765533 80.171259) + (xy 135.76435 80.168986) + (xy 135.621983 79.97937) + (xy 135.614217 79.971948) + (xy 135.500789 79.863555) + (xy 135.450559 79.815554) + (xy 135.448438 79.814107) + (xy 135.256807 79.683385) + (xy 135.256805 79.683384) + (xy 135.254681 79.681935) + (xy 135.039609 79.582102) + (xy 135.037142 79.581418) + (xy 135.037137 79.581416) + (xy 134.813587 79.51942) + (xy 134.813588 79.51942) + (xy 134.811121 79.518736) + (xy 134.721582 79.509167) + (xy 134.619202 79.498226) + (xy 134.619198 79.498226) + (xy 134.617553 79.49805) + (xy 134.47989 79.49805) + (xy 134.303685 79.512537) + (xy 134.301192 79.513163) + (xy 134.301193 79.513163) + (xy 134.076203 79.569676) + (xy 134.0762 79.569677) + (xy 134.073716 79.570301) + (xy 133.85627 79.664849) + (xy 133.657186 79.793642) + (xy 133.624922 79.823) + (xy 133.533177 79.906482) + (xy 133.48181 79.953222) + (xy 133.480222 79.955233) + (xy 133.480219 79.955236) + (xy 133.336443 80.137288) + (xy 133.33644 80.137292) + (xy 133.334853 80.139302) + (xy 133.333614 80.141547) + (xy 133.333613 80.141548) + (xy 133.273399 80.250627) + (xy 133.220261 80.346886) + (xy 133.219403 80.349309) + (xy 133.142378 80.566821) + (xy 133.141111 80.570398) + (xy 133.140661 80.572924) + (xy 133.14066 80.572928) + (xy 133.09998 80.8013) + (xy 133.099979 80.801307) + (xy 133.099529 80.803835) + (xy 133.098238 80.909525) + (xy 133.097034 81.00814) + (xy 133.096633 81.04093) + (xy 132.745005 81.04093) + (xy 132.753799 80.899176) + (xy 132.72419 80.726859) + (xy 132.655733 80.565976) + (xy 132.552102 80.425157) + (xy 132.418854 80.311955) + (xy 132.263138 80.232442) + (xy 132.093307 80.190885) + (xy 132.085635 80.190409) + (xy 132.083235 80.19026) + (xy 132.083231 80.19026) + (xy 132.082266 80.1902) + (xy 131.956221 80.1902) + (xy 131.954431 80.190409) + (xy 131.954426 80.190409) + (xy 131.904784 80.196197) + (xy 131.826335 80.205343) + (xy 131.82292 80.206582) + (xy 131.822918 80.206583) + (xy 131.777115 80.223209) + (xy 131.661985 80.264999) + (xy 131.658949 80.26699) + (xy 131.658948 80.26699) + (xy 131.626297 80.288397) + (xy 131.515767 80.360864) + (xy 131.395525 80.487795) + (xy 131.393703 80.490933) + (xy 131.3937 80.490936) + (xy 131.309837 80.635318) + (xy 131.307708 80.638983) + (xy 131.306658 80.64245) + (xy 131.271807 80.75752) + (xy 131.257027 80.806318) + (xy 131.246201 80.980824) + (xy 130.901636 80.980824) + (xy 130.902485 80.911288) + (xy 130.903336 80.841638) + (xy 130.903336 80.841634) + (xy 130.903367 80.83907) + (xy 130.901357 80.825931) + (xy 130.889614 80.749193) + (xy 130.867502 80.604686) + (xy 130.863109 80.591244) + (xy 130.794635 80.381751) + (xy 130.794634 80.381749) + (xy 130.793836 80.379307) + (xy 130.792649 80.377026) + (xy 130.685537 80.171265) + (xy 130.685533 80.171259) + (xy 130.68435 80.168986) + (xy 130.541983 79.97937) + (xy 130.534217 79.971948) + (xy 130.420789 79.863555) + (xy 130.370559 79.815554) + (xy 130.368438 79.814107) + (xy 130.176807 79.683385) + (xy 130.176805 79.683384) + (xy 130.174681 79.681935) + (xy 129.959609 79.582102) + (xy 129.957142 79.581418) + (xy 129.957137 79.581416) + (xy 129.733587 79.51942) + (xy 129.733588 79.51942) + (xy 129.731121 79.518736) + (xy 129.641582 79.509167) + (xy 129.539202 79.498226) + (xy 129.539198 79.498226) + (xy 129.537553 79.49805) + (xy 129.39989 79.49805) + (xy 129.223685 79.512537) + (xy 129.221192 79.513163) + (xy 129.221193 79.513163) + (xy 128.996203 79.569676) + (xy 128.9962 79.569677) + (xy 128.993716 79.570301) + (xy 128.77627 79.664849) + (xy 128.577186 79.793642) + (xy 128.544922 79.823) + (xy 128.453177 79.906482) + (xy 128.40181 79.953222) + (xy 128.400222 79.955233) + (xy 128.400219 79.955236) + (xy 128.256443 80.137288) + (xy 128.25644 80.137292) + (xy 128.254853 80.139302) + (xy 128.253614 80.141547) + (xy 128.253613 80.141548) + (xy 128.193399 80.250627) + (xy 128.140261 80.346886) + (xy 128.139403 80.349309) + (xy 128.062378 80.566821) + (xy 128.061111 80.570398) + (xy 128.060661 80.572924) + (xy 128.06066 80.572928) + (xy 128.01998 80.8013) + (xy 128.019979 80.801307) + (xy 128.019529 80.803835) + (xy 128.018238 80.909525) + (xy 128.017034 81.00814) + (xy 128.016633 81.04093) + (xy 120.5775 81.04093) + (xy 120.5775 79.937442) + (xy 120.576494 79.932384) + (xy 120.571303 79.906287) + (xy 120.571302 79.906285) + (xy 120.570102 79.900252) + (xy 120.541922 79.858078) + (xy 120.499748 79.829898) + (xy 120.493715 79.828698) + (xy 120.493713 79.828697) + (xy 120.465569 79.823099) + (xy 120.462558 79.8225) + (xy 119.037442 79.8225) + (xy 119.034431 79.823099) + (xy 119.006287 79.828697) + (xy 119.006285 79.828698) + (xy 119.000252 79.829898) + (xy 118.958078 79.858078) + (xy 118.929898 79.900252) + (xy 118.928698 79.906285) + (xy 118.928697 79.906287) + (xy 118.923506 79.932384) + (xy 118.9225 79.937442) + (xy 118.9225 81.562558) + (xy 116.076693 81.562558) + (xy 116.077 81.559438) + (xy 116.077 80.825931) + (xy 116.073359 80.817141) + (xy 116.064569 80.8135) + (xy 115.325931 80.8135) + (xy 115.317141 80.817141) + (xy 115.3135 80.825931) + (xy 115.3135 81.664569) + (xy 115.1865 81.664569) + (xy 115.1865 80.825931) + (xy 115.182859 80.817141) + (xy 115.174069 80.8135) + (xy 114.435431 80.8135) + (xy 114.426641 80.817141) + (xy 114.423 80.825931) + (xy 114.423 81.559438) + (xy 99.3 81.559438) + (xy 99.3 80.674069) + (xy 114.423 80.674069) + (xy 114.426641 80.682859) + (xy 114.435431 80.6865) + (xy 115.174069 80.6865) + (xy 115.182859 80.682859) + (xy 115.1865 80.674069) + (xy 115.3135 80.674069) + (xy 115.317141 80.682859) + (xy 115.325931 80.6865) + (xy 116.064569 80.6865) + (xy 116.073359 80.682859) + (xy 116.077 80.674069) + (xy 116.077 79.940562) + (xy 116.076401 79.934481) + (xy 116.070831 79.906482) + (xy 116.066212 79.89533) + (xy 116.044981 79.863555) + (xy 116.036445 79.855019) + (xy 116.00467 79.833788) + (xy 115.993518 79.829169) + (xy 115.965519 79.823599) + (xy 115.959438 79.823) + (xy 115.325931 79.823) + (xy 115.317141 79.826641) + (xy 115.3135 79.835431) + (xy 115.3135 80.674069) + (xy 115.1865 80.674069) + (xy 115.1865 79.835431) + (xy 115.182859 79.826641) + (xy 115.174069 79.823) + (xy 114.540562 79.823) + (xy 114.534481 79.823599) + (xy 114.506482 79.829169) + (xy 114.49533 79.833788) + (xy 114.463555 79.855019) + (xy 114.455019 79.863555) + (xy 114.433788 79.89533) + (xy 114.429169 79.906482) + (xy 114.423599 79.934481) + (xy 114.423 79.940562) + (xy 114.423 80.674069) + (xy 99.3 80.674069) + (xy 99.3 77.9625) + (xy 99.318306 77.918306) + (xy 99.3625 77.9) + (xy 200.6375 77.9) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 146.765075 113.459306) + (xy 146.783381 113.5035) + (xy 146.772847 113.538223) + (xy 146.734249 113.595988) + (xy 146.733048 113.602024) + (xy 146.733048 113.602025) + (xy 146.731164 113.6115) + (xy 146.7225 113.655056) + (xy 146.7225 113.844944) + (xy 146.723099 113.847954) + (xy 146.723099 113.847957) + (xy 146.732283 113.89413) + (xy 146.734249 113.904012) + (xy 146.779006 113.970994) + (xy 146.845988 114.015751) + (xy 146.852024 114.016952) + (xy 146.852025 114.016952) + (xy 146.902043 114.026901) + (xy 146.902046 114.026901) + (xy 146.905056 114.0275) + (xy 148.269944 114.0275) + (xy 148.272954 114.026901) + (xy 148.272957 114.026901) + (xy 148.322975 114.016952) + (xy 148.322976 114.016952) + (xy 148.329012 114.015751) + (xy 148.395994 113.970994) + (xy 148.399414 113.965876) + (xy 148.403766 113.961524) + (xy 148.405594 113.963352) + (xy 148.437248 113.942201) + (xy 148.449442 113.941) + (xy 149.076187 113.941) + (xy 149.120381 113.959306) + (xy 149.129248 113.970473) + (xy 149.13154 113.974155) + (xy 149.133333 113.97823) + (xy 149.147272 113.994813) + (xy 149.148029 113.995713) + (xy 149.150157 113.998434) + (xy 149.152292 114.002625) + (xy 149.160081 114.010414) + (xy 149.163729 114.014391) + (xy 149.212127 114.071968) + (xy 149.235399 114.087459) + (xy 149.241836 114.092733) + (xy 149.243899 114.094232) + (xy 149.247375 114.097708) + (xy 149.251753 114.099939) + (xy 149.251756 114.099941) + (xy 149.25873 114.103494) + (xy 149.264983 114.107152) + (xy 149.272876 114.112406) + (xy 149.281134 114.117903) + (xy 149.307778 114.157631) + (xy 149.309 114.169929) + (xy 149.309 114.800558) + (xy 149.290694 114.844752) + (xy 149.286589 114.848121) + (xy 149.284124 114.850586) + (xy 149.279006 114.854006) + (xy 149.234249 114.920988) + (xy 149.233048 114.927024) + (xy 149.233048 114.927025) + (xy 149.224979 114.967595) + (xy 149.2225 114.980056) + (xy 149.2225 116.344944) + (xy 149.223099 116.347954) + (xy 149.223099 116.347957) + (xy 149.233007 116.397767) + (xy 149.234249 116.404012) + (xy 149.279006 116.470994) + (xy 149.345988 116.515751) + (xy 149.352024 116.516952) + (xy 149.352025 116.516952) + (xy 149.402043 116.526901) + (xy 149.402046 116.526901) + (xy 149.405056 116.5275) + (xy 149.594944 116.5275) + (xy 149.597954 116.526901) + (xy 149.597957 116.526901) + (xy 149.647975 116.516952) + (xy 149.647976 116.516952) + (xy 149.654012 116.515751) + (xy 149.711777 116.477153) + (xy 149.758692 116.46782) + (xy 149.798466 116.494395) + (xy 149.809 116.529119) + (xy 149.809 122.394997) + (xy 149.790694 122.439191) + (xy 149.189191 123.040694) + (xy 149.144997 123.059) + (xy 144.293234 123.059) + (xy 144.285893 123.057747) + (xy 144.28581 123.058476) + (xy 144.278819 123.057679) + (xy 144.272178 123.055347) + (xy 144.265185 123.056125) + (xy 144.265184 123.056125) + (xy 144.242794 123.058617) + (xy 144.235881 123.059) + (xy 144.228467 123.059) + (xy 144.221544 123.060579) + (xy 144.214591 123.061755) + (xy 144.185571 123.064985) + (xy 144.179607 123.068719) + (xy 144.17567 123.07009) + (xy 144.171904 123.071903) + (xy 144.165041 123.073468) + (xy 144.159535 123.077855) + (xy 144.159536 123.077855) + (xy 144.142229 123.091646) + (xy 144.136446 123.09574) + (xy 144.13329 123.097716) + (xy 144.133284 123.097721) + (xy 144.130289 123.099596) + (xy 144.125076 123.104809) + (xy 144.119832 123.109494) + (xy 144.096891 123.127775) + (xy 144.093833 123.134114) + (xy 144.089442 123.139615) + (xy 144.088908 123.139189) + (xy 144.084532 123.145353) + (xy 142.395513 124.834372) + (xy 142.389439 124.838677) + (xy 142.389895 124.83925) + (xy 142.384387 124.843631) + (xy 142.378042 124.846678) + (xy 142.373646 124.852175) + (xy 142.359582 124.869761) + (xy 142.354965 124.87492) + (xy 142.349716 124.880169) + (xy 142.34785 124.883137) + (xy 142.347849 124.883139) + (xy 142.347754 124.88329) + (xy 142.345942 124.886174) + (xy 142.341839 124.891947) + (xy 142.341204 124.892741) + (xy 142.323617 124.914733) + (xy 142.32204 124.921593) + (xy 142.320222 124.925353) + (xy 142.318844 124.929289) + (xy 142.315098 124.935248) + (xy 142.314307 124.942242) + (xy 142.314307 124.942243) + (xy 142.311821 124.964236) + (xy 142.310629 124.971213) + (xy 142.309 124.978297) + (xy 142.309 124.985671) + (xy 142.308604 124.992692) + (xy 142.305309 125.021838) + (xy 142.30763 125.028483) + (xy 142.308414 125.035477) + (xy 142.307736 125.035553) + (xy 142.309 125.043005) + (xy 142.309 126.9375) + (xy 142.290694 126.981694) + (xy 142.2465 127) + (xy 140.444 127) + (xy 140.399806 126.981694) + (xy 140.3815 126.9375) + (xy 140.3815 125.957472) + (xy 140.387754 125.930221) + (xy 140.389012 125.927625) + (xy 140.411451 125.881311) + (xy 140.413317 125.870224) + (xy 140.431367 125.762928) + (xy 140.431767 125.760552) + (xy 140.431896 125.75) + (xy 140.414536 125.628781) + (xy 140.363852 125.517307) + (xy 140.349199 125.500302) + (xy 140.347708 125.497375) + (xy 140.3419 125.491567) + (xy 140.338746 125.48817) + (xy 140.286826 125.427914) + (xy 140.283918 125.424539) + (xy 140.263741 125.411461) + (xy 140.260155 125.408559) + (xy 140.260081 125.408661) + (xy 140.256106 125.405773) + (xy 140.252625 125.402292) + (xy 140.241343 125.396543) + (xy 140.235736 125.393309) + (xy 140.184893 125.360354) + (xy 140.18489 125.360353) + (xy 140.18116 125.357935) + (xy 140.176901 125.356661) + (xy 140.176898 125.35666) + (xy 140.154429 125.349941) + (xy 140.148839 125.348269) + (xy 140.138377 125.344079) + (xy 140.132813 125.341244) + (xy 140.121067 125.339384) + (xy 140.112951 125.337536) + (xy 140.063838 125.322848) + (xy 140.019496 125.322577) + (xy 140.010103 125.321809) + (xy 140.004857 125.320978) + (xy 140.004856 125.320978) + (xy 140 125.320209) + (xy 139.991373 125.321576) + (xy 139.98122 125.322344) + (xy 139.962836 125.322231) + (xy 139.945838 125.322127) + (xy 139.945836 125.322127) + (xy 139.941385 125.3221) + (xy 139.887011 125.337641) + (xy 139.879623 125.339275) + (xy 139.867187 125.341244) + (xy 139.862804 125.343477) + (xy 139.86187 125.343781) + (xy 139.852156 125.347603) + (xy 139.849821 125.34827) + (xy 139.827929 125.354526) + (xy 139.827927 125.354527) + (xy 139.823644 125.355751) + (xy 139.764119 125.393309) + (xy 139.762819 125.394129) + (xy 139.757842 125.396959) + (xy 139.751757 125.400059) + (xy 139.751756 125.40006) + (xy 139.747375 125.402292) + (xy 139.743897 125.40577) + (xy 139.742445 125.406825) + (xy 139.739058 125.40912) + (xy 139.72008 125.421095) + (xy 139.717137 125.424427) + (xy 139.717135 125.424429) + (xy 139.657156 125.492342) + (xy 139.656032 125.493538) + (xy 139.655775 125.493892) + (xy 139.655554 125.494113) + (xy 139.655405 125.494204) + (xy 139.654504 125.495163) + (xy 139.652292 125.497375) + (xy 139.651509 125.496592) + (xy 139.650362 125.497296) + (xy 139.651721 125.498496) + (xy 139.639018 125.512879) + (xy 139.637127 125.516907) + (xy 139.588868 125.619695) + (xy 139.588867 125.619698) + (xy 139.586976 125.623726) + (xy 139.568136 125.744724) + (xy 139.568713 125.749137) + (xy 139.568713 125.749138) + (xy 139.583436 125.861726) + (xy 139.584014 125.866145) + (xy 139.591185 125.882443) + (xy 139.591244 125.882813) + (xy 139.592007 125.884311) + (xy 139.594031 125.88891) + (xy 139.594031 125.888911) + (xy 139.613207 125.932491) + (xy 139.6185 125.957663) + (xy 139.6185 126.9375) + (xy 139.600194 126.981694) + (xy 139.556 127) + (xy 137.7535 127) + (xy 137.709306 126.981694) + (xy 137.691 126.9375) + (xy 137.691 125.105003) + (xy 137.709306 125.060809) + (xy 138.803769 123.966346) + (xy 138.847963 123.94804) + (xy 139.380958 123.94804) + (xy 139.425152 123.966346) + (xy 139.443458 124.01054) + (xy 139.425152 124.054734) + (xy 139.038885 124.441) + (xy 138.911953 124.567932) + (xy 138.867759 124.586238) + (xy 138.849851 124.583618) + (xy 138.833008 124.578581) + (xy 138.813838 124.572848) + (xy 138.769496 124.572577) + (xy 138.760103 124.571809) + (xy 138.754857 124.570978) + (xy 138.754856 124.570978) + (xy 138.75 124.570209) + (xy 138.741373 124.571576) + (xy 138.73122 124.572344) + (xy 138.712836 124.572231) + (xy 138.695838 124.572127) + (xy 138.695836 124.572127) + (xy 138.691385 124.5721) + (xy 138.637011 124.587641) + (xy 138.629623 124.589275) + (xy 138.617187 124.591244) + (xy 138.612804 124.593477) + (xy 138.61187 124.593781) + (xy 138.602155 124.597603) + (xy 138.577929 124.604526) + (xy 138.577927 124.604527) + (xy 138.573644 124.605751) + (xy 138.569875 124.608129) + (xy 138.553622 124.618384) + (xy 138.514119 124.643309) + (xy 138.512819 124.644129) + (xy 138.507842 124.646959) + (xy 138.501757 124.650059) + (xy 138.501756 124.65006) + (xy 138.497375 124.652292) + (xy 138.493897 124.65577) + (xy 138.492445 124.656825) + (xy 138.489058 124.65912) + (xy 138.47008 124.671095) + (xy 138.467137 124.674427) + (xy 138.467135 124.674429) + (xy 138.407156 124.742342) + (xy 138.406032 124.743538) + (xy 138.405775 124.743892) + (xy 138.405554 124.744113) + (xy 138.405405 124.744204) + (xy 138.404504 124.745163) + (xy 138.402292 124.747375) + (xy 138.401509 124.746592) + (xy 138.400362 124.747296) + (xy 138.401721 124.748496) + (xy 138.389018 124.762879) + (xy 138.387127 124.766907) + (xy 138.338868 124.869695) + (xy 138.338867 124.869698) + (xy 138.336976 124.873726) + (xy 138.318136 124.994724) + (xy 138.318713 124.999137) + (xy 138.318713 124.999138) + (xy 138.332557 125.105002) + (xy 138.334014 125.116145) + (xy 138.341185 125.132443) + (xy 138.341244 125.132813) + (xy 138.342007 125.134311) + (xy 138.383333 125.22823) + (xy 138.397272 125.244813) + (xy 138.398029 125.245713) + (xy 138.400157 125.248434) + (xy 138.402292 125.252625) + (xy 138.410081 125.260414) + (xy 138.413729 125.264391) + (xy 138.462127 125.321968) + (xy 138.485399 125.337459) + (xy 138.491836 125.342733) + (xy 138.493899 125.344232) + (xy 138.497375 125.347708) + (xy 138.501753 125.349939) + (xy 138.501756 125.349941) + (xy 138.50873 125.353494) + (xy 138.514977 125.357148) + (xy 138.564064 125.389823) + (xy 138.568313 125.391151) + (xy 138.568314 125.391151) + (xy 138.600296 125.401143) + (xy 138.610027 125.405109) + (xy 138.612799 125.406521) + (xy 138.612803 125.406522) + (xy 138.617187 125.408756) + (xy 138.627852 125.410445) + (xy 138.636713 125.41252) + (xy 138.676696 125.425012) + (xy 138.676699 125.425012) + (xy 138.680948 125.42634) + (xy 138.730069 125.427241) + (xy 138.738683 125.427999) + (xy 138.74514 125.429022) + (xy 138.745144 125.429022) + (xy 138.75 125.429791) + (xy 138.756947 125.42869) + (xy 138.767853 125.427933) + (xy 138.803383 125.428584) + (xy 138.863532 125.412185) + (xy 138.87019 125.410755) + (xy 138.872147 125.410445) + (xy 138.882813 125.408756) + (xy 138.887196 125.406522) + (xy 138.891875 125.405002) + (xy 138.891878 125.40501) + (xy 138.896727 125.403136) + (xy 138.921527 125.396375) + (xy 138.926521 125.393309) + (xy 138.989709 125.354511) + (xy 138.994037 125.352085) + (xy 138.99824 125.349944) + (xy 138.998248 125.349938) + (xy 139.002625 125.347708) + (xy 139.005427 125.344906) + (xy 139.006264 125.344346) + (xy 139.011316 125.341244) + (xy 139.025881 125.332301) + (xy 139.108058 125.241513) + (xy 139.161451 125.131311) + (xy 139.163317 125.120224) + (xy 139.178061 125.03258) + (xy 139.181767 125.010552) + (xy 139.181896 125) + (xy 139.166061 124.889432) + (xy 139.177917 124.843091) + (xy 139.183736 124.836379) + (xy 139.800249 124.219866) + (xy 139.844443 124.20156) + (xy 141.271801 124.20156) + (xy 141.27914 124.20281) + (xy 141.279223 124.202083) + (xy 141.286214 124.20288) + (xy 141.292855 124.205212) + (xy 141.299848 124.204434) + (xy 141.299849 124.204434) + (xy 141.32223 124.201943) + (xy 141.329143 124.20156) + (xy 141.336566 124.20156) + (xy 141.343498 124.199979) + (xy 141.350451 124.198803) + (xy 141.379462 124.195574) + (xy 141.385426 124.191841) + (xy 141.389374 124.190466) + (xy 141.393133 124.188657) + (xy 141.399992 124.187092) + (xy 141.405498 124.182705) + (xy 141.416186 124.174187) + (xy 141.422807 124.168911) + (xy 141.428592 124.164816) + (xy 141.431748 124.16284) + (xy 141.43175 124.162839) + (xy 141.434744 124.160964) + (xy 141.439957 124.155751) + (xy 141.445201 124.151066) + (xy 141.462637 124.137172) + (xy 141.462637 124.137171) + (xy 141.468142 124.132785) + (xy 141.4712 124.126446) + (xy 141.475591 124.120945) + (xy 141.476125 124.121371) + (xy 141.480501 124.115207) + (xy 145.604485 119.991222) + (xy 145.61056 119.986915) + (xy 145.610105 119.986343) + (xy 145.615613 119.981962) + (xy 145.621958 119.978915) + (xy 145.640422 119.955827) + (xy 145.645039 119.950668) + (xy 145.650283 119.945424) + (xy 145.652145 119.942461) + (xy 145.652151 119.942454) + (xy 145.654058 119.939419) + (xy 145.658163 119.933643) + (xy 145.671987 119.916357) + (xy 145.676383 119.91086) + (xy 145.67796 119.904002) + (xy 145.67978 119.900237) + (xy 145.681158 119.896301) + (xy 145.684902 119.890345) + (xy 145.685692 119.883354) + (xy 145.685694 119.883349) + (xy 145.68818 119.861356) + (xy 145.689373 119.854371) + (xy 145.690208 119.850739) + (xy 145.691 119.847296) + (xy 145.691 119.839916) + (xy 145.691396 119.832896) + (xy 145.693899 119.810751) + (xy 145.69469 119.803755) + (xy 145.692369 119.797109) + (xy 145.691585 119.790115) + (xy 145.692264 119.790039) + (xy 145.691 119.782589) + (xy 145.691 113.855003) + (xy 145.709306 113.810809) + (xy 146.060809 113.459306) + (xy 146.105003 113.441) + (xy 146.720881 113.441) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 157.797694 121.817809) + (xy 160.816772 124.836887) + (xy 160.835078 124.881081) + (xy 160.834334 124.890691) + (xy 160.818136 124.994724) + (xy 160.818713 124.999137) + (xy 160.818713 124.999138) + (xy 160.832557 125.105002) + (xy 160.834014 125.116145) + (xy 160.841185 125.132443) + (xy 160.841244 125.132813) + (xy 160.842007 125.134311) + (xy 160.883333 125.22823) + (xy 160.897272 125.244813) + (xy 160.898029 125.245713) + (xy 160.900157 125.248434) + (xy 160.902292 125.252625) + (xy 160.910081 125.260414) + (xy 160.913729 125.264391) + (xy 160.962127 125.321968) + (xy 160.985399 125.337459) + (xy 160.991836 125.342733) + (xy 160.993899 125.344232) + (xy 160.997375 125.347708) + (xy 161.001753 125.349939) + (xy 161.001756 125.349941) + (xy 161.00873 125.353494) + (xy 161.014977 125.357148) + (xy 161.064064 125.389823) + (xy 161.068313 125.391151) + (xy 161.068314 125.391151) + (xy 161.100296 125.401143) + (xy 161.110027 125.405109) + (xy 161.112799 125.406521) + (xy 161.112803 125.406522) + (xy 161.117187 125.408756) + (xy 161.127852 125.410445) + (xy 161.136713 125.41252) + (xy 161.176696 125.425012) + (xy 161.176699 125.425012) + (xy 161.180948 125.42634) + (xy 161.230069 125.427241) + (xy 161.238683 125.427999) + (xy 161.24514 125.429022) + (xy 161.245144 125.429022) + (xy 161.25 125.429791) + (xy 161.256947 125.42869) + (xy 161.267853 125.427933) + (xy 161.303383 125.428584) + (xy 161.363532 125.412185) + (xy 161.37019 125.410755) + (xy 161.372147 125.410445) + (xy 161.382813 125.408756) + (xy 161.387196 125.406522) + (xy 161.391875 125.405002) + (xy 161.391878 125.40501) + (xy 161.396727 125.403136) + (xy 161.421527 125.396375) + (xy 161.426521 125.393309) + (xy 161.489709 125.354511) + (xy 161.494037 125.352085) + (xy 161.49824 125.349944) + (xy 161.498248 125.349938) + (xy 161.502625 125.347708) + (xy 161.505427 125.344906) + (xy 161.506264 125.344346) + (xy 161.511316 125.341244) + (xy 161.525881 125.332301) + (xy 161.608058 125.241513) + (xy 161.661451 125.131311) + (xy 161.663317 125.120224) + (xy 161.678061 125.03258) + (xy 161.681767 125.010552) + (xy 161.681896 125) + (xy 161.664536 124.878781) + (xy 161.613852 124.767307) + (xy 161.599199 124.750302) + (xy 161.597708 124.747375) + (xy 161.5919 124.741567) + (xy 161.588746 124.73817) + (xy 161.536826 124.677914) + (xy 161.533918 124.674539) + (xy 161.513741 124.661461) + (xy 161.510155 124.658559) + (xy 161.510081 124.658661) + (xy 161.506106 124.655773) + (xy 161.502625 124.652292) + (xy 161.491343 124.646543) + (xy 161.485736 124.643309) + (xy 161.485735 124.643308) + (xy 161.457055 124.624719) + (xy 161.434893 124.610354) + (xy 161.43489 124.610353) + (xy 161.43116 124.607935) + (xy 161.426901 124.606661) + (xy 161.426898 124.60666) + (xy 161.408345 124.601112) + (xy 161.398839 124.598269) + (xy 161.388377 124.594079) + (xy 161.382813 124.591244) + (xy 161.371067 124.589384) + (xy 161.362951 124.587536) + (xy 161.338896 124.580342) + (xy 161.313838 124.572848) + (xy 161.269496 124.572577) + (xy 161.260103 124.571809) + (xy 161.254857 124.570978) + (xy 161.254856 124.570978) + (xy 161.25 124.570209) + (xy 161.241373 124.571576) + (xy 161.23122 124.572344) + (xy 161.212836 124.572231) + (xy 161.195838 124.572127) + (xy 161.195836 124.572127) + (xy 161.191385 124.5721) + (xy 161.14962 124.584037) + (xy 161.102099 124.578581) + (xy 161.088252 124.568137) + (xy 161.067809 124.547694) + (xy 161.049503 124.5035) + (xy 161.067809 124.459306) + (xy 161.112003 124.441) + (xy 161.644997 124.441) + (xy 161.689191 124.459306) + (xy 162.290694 125.060808) + (xy 162.309 125.105002) + (xy 162.309 126.9375) + (xy 162.290694 126.981694) + (xy 162.2465 127) + (xy 160.444 127) + (xy 160.399806 126.981694) + (xy 160.3815 126.9375) + (xy 160.3815 125.957472) + (xy 160.387754 125.930221) + (xy 160.389012 125.927625) + (xy 160.411451 125.881311) + (xy 160.413317 125.870224) + (xy 160.431367 125.762928) + (xy 160.431767 125.760552) + (xy 160.431896 125.75) + (xy 160.414536 125.628781) + (xy 160.363852 125.517307) + (xy 160.349199 125.500302) + (xy 160.347708 125.497375) + (xy 160.3419 125.491567) + (xy 160.338746 125.48817) + (xy 160.286826 125.427914) + (xy 160.283918 125.424539) + (xy 160.263741 125.411461) + (xy 160.260155 125.408559) + (xy 160.260081 125.408661) + (xy 160.256106 125.405773) + (xy 160.252625 125.402292) + (xy 160.241343 125.396543) + (xy 160.235736 125.393309) + (xy 160.184893 125.360354) + (xy 160.18489 125.360353) + (xy 160.18116 125.357935) + (xy 160.176901 125.356661) + (xy 160.176898 125.35666) + (xy 160.154429 125.349941) + (xy 160.148839 125.348269) + (xy 160.138377 125.344079) + (xy 160.132813 125.341244) + (xy 160.121067 125.339384) + (xy 160.112951 125.337536) + (xy 160.063838 125.322848) + (xy 160.019496 125.322577) + (xy 160.010103 125.321809) + (xy 160.004857 125.320978) + (xy 160.004856 125.320978) + (xy 160 125.320209) + (xy 159.991373 125.321576) + (xy 159.98122 125.322344) + (xy 159.962836 125.322231) + (xy 159.945838 125.322127) + (xy 159.945836 125.322127) + (xy 159.941385 125.3221) + (xy 159.887011 125.337641) + (xy 159.879623 125.339275) + (xy 159.867187 125.341244) + (xy 159.862804 125.343477) + (xy 159.86187 125.343781) + (xy 159.852156 125.347603) + (xy 159.849821 125.34827) + (xy 159.827929 125.354526) + (xy 159.827927 125.354527) + (xy 159.823644 125.355751) + (xy 159.764119 125.393309) + (xy 159.762819 125.394129) + (xy 159.757842 125.396959) + (xy 159.751757 125.400059) + (xy 159.751756 125.40006) + (xy 159.747375 125.402292) + (xy 159.743897 125.40577) + (xy 159.742445 125.406825) + (xy 159.739058 125.40912) + (xy 159.72008 125.421095) + (xy 159.717137 125.424427) + (xy 159.717135 125.424429) + (xy 159.657156 125.492342) + (xy 159.656032 125.493538) + (xy 159.655775 125.493892) + (xy 159.655554 125.494113) + (xy 159.655405 125.494204) + (xy 159.654504 125.495163) + (xy 159.652292 125.497375) + (xy 159.651509 125.496592) + (xy 159.650362 125.497296) + (xy 159.651721 125.498496) + (xy 159.639018 125.512879) + (xy 159.637127 125.516907) + (xy 159.588868 125.619695) + (xy 159.588867 125.619698) + (xy 159.586976 125.623726) + (xy 159.568136 125.744724) + (xy 159.568713 125.749137) + (xy 159.568713 125.749138) + (xy 159.583436 125.861726) + (xy 159.584014 125.866145) + (xy 159.591185 125.882443) + (xy 159.591244 125.882813) + (xy 159.592007 125.884311) + (xy 159.594031 125.88891) + (xy 159.594031 125.888911) + (xy 159.613207 125.932491) + (xy 159.6185 125.957663) + (xy 159.6185 126.9375) + (xy 159.600194 126.981694) + (xy 159.556 127) + (xy 157.7535 127) + (xy 157.709306 126.981694) + (xy 157.691 126.9375) + (xy 157.691 121.862003) + (xy 157.709306 121.817809) + (xy 157.7535 121.799503) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 135.439231 122.952266) + (xy 135.457537 122.99646) + (xy 135.439231 123.040654) + (xy 133.911953 124.567932) + (xy 133.867759 124.586238) + (xy 133.849851 124.583618) + (xy 133.833008 124.578581) + (xy 133.813838 124.572848) + (xy 133.769496 124.572577) + (xy 133.760103 124.571809) + (xy 133.754857 124.570978) + (xy 133.754856 124.570978) + (xy 133.75 124.570209) + (xy 133.741373 124.571576) + (xy 133.73122 124.572344) + (xy 133.712836 124.572231) + (xy 133.695838 124.572127) + (xy 133.695836 124.572127) + (xy 133.691385 124.5721) + (xy 133.637011 124.587641) + (xy 133.629623 124.589275) + (xy 133.617187 124.591244) + (xy 133.612804 124.593477) + (xy 133.61187 124.593781) + (xy 133.602155 124.597603) + (xy 133.577929 124.604526) + (xy 133.577927 124.604527) + (xy 133.573644 124.605751) + (xy 133.569875 124.608129) + (xy 133.553622 124.618384) + (xy 133.514119 124.643309) + (xy 133.512819 124.644129) + (xy 133.507842 124.646959) + (xy 133.501757 124.650059) + (xy 133.501756 124.65006) + (xy 133.497375 124.652292) + (xy 133.493897 124.65577) + (xy 133.492445 124.656825) + (xy 133.489058 124.65912) + (xy 133.47008 124.671095) + (xy 133.467137 124.674427) + (xy 133.467135 124.674429) + (xy 133.407156 124.742342) + (xy 133.406032 124.743538) + (xy 133.405775 124.743892) + (xy 133.405554 124.744113) + (xy 133.405405 124.744204) + (xy 133.404504 124.745163) + (xy 133.402292 124.747375) + (xy 133.401509 124.746592) + (xy 133.400362 124.747296) + (xy 133.401721 124.748496) + (xy 133.389018 124.762879) + (xy 133.387127 124.766907) + (xy 133.338868 124.869695) + (xy 133.338867 124.869698) + (xy 133.336976 124.873726) + (xy 133.318136 124.994724) + (xy 133.318713 124.999137) + (xy 133.318713 124.999138) + (xy 133.332557 125.105002) + (xy 133.334014 125.116145) + (xy 133.341185 125.132443) + (xy 133.341244 125.132813) + (xy 133.342007 125.134311) + (xy 133.383333 125.22823) + (xy 133.397272 125.244813) + (xy 133.398029 125.245713) + (xy 133.400157 125.248434) + (xy 133.402292 125.252625) + (xy 133.410081 125.260414) + (xy 133.413729 125.264391) + (xy 133.462127 125.321968) + (xy 133.485399 125.337459) + (xy 133.491836 125.342733) + (xy 133.493899 125.344232) + (xy 133.497375 125.347708) + (xy 133.501753 125.349939) + (xy 133.501756 125.349941) + (xy 133.50873 125.353494) + (xy 133.514977 125.357148) + (xy 133.564064 125.389823) + (xy 133.568313 125.391151) + (xy 133.568314 125.391151) + (xy 133.600296 125.401143) + (xy 133.610027 125.405109) + (xy 133.612799 125.406521) + (xy 133.612803 125.406522) + (xy 133.617187 125.408756) + (xy 133.627852 125.410445) + (xy 133.636713 125.41252) + (xy 133.676696 125.425012) + (xy 133.676699 125.425012) + (xy 133.680948 125.42634) + (xy 133.730069 125.427241) + (xy 133.738683 125.427999) + (xy 133.74514 125.429022) + (xy 133.745144 125.429022) + (xy 133.75 125.429791) + (xy 133.756947 125.42869) + (xy 133.767853 125.427933) + (xy 133.803383 125.428584) + (xy 133.863532 125.412185) + (xy 133.87019 125.410755) + (xy 133.872147 125.410445) + (xy 133.882813 125.408756) + (xy 133.887196 125.406522) + (xy 133.891875 125.405002) + (xy 133.891878 125.40501) + (xy 133.896727 125.403136) + (xy 133.921527 125.396375) + (xy 133.926521 125.393309) + (xy 133.989709 125.354511) + (xy 133.994037 125.352085) + (xy 133.99824 125.349944) + (xy 133.998248 125.349938) + (xy 134.002625 125.347708) + (xy 134.005427 125.344906) + (xy 134.006264 125.344346) + (xy 134.011316 125.341244) + (xy 134.025881 125.332301) + (xy 134.108058 125.241513) + (xy 134.161451 125.131311) + (xy 134.163317 125.120224) + (xy 134.178061 125.03258) + (xy 134.181767 125.010552) + (xy 134.181896 125) + (xy 134.166061 124.889432) + (xy 134.177917 124.843091) + (xy 134.183736 124.836379) + (xy 135.814328 123.205786) + (xy 135.858522 123.18748) + (xy 136.391517 123.18748) + (xy 136.435711 123.205786) + (xy 136.454017 123.24998) + (xy 136.435711 123.294174) + (xy 134.895513 124.834372) + (xy 134.889439 124.838677) + (xy 134.889895 124.83925) + (xy 134.884387 124.843631) + (xy 134.878042 124.846678) + (xy 134.873646 124.852175) + (xy 134.859582 124.869761) + (xy 134.854965 124.87492) + (xy 134.849716 124.880169) + (xy 134.84785 124.883137) + (xy 134.847849 124.883139) + (xy 134.847754 124.88329) + (xy 134.845942 124.886174) + (xy 134.841839 124.891947) + (xy 134.841204 124.892741) + (xy 134.823617 124.914733) + (xy 134.82204 124.921593) + (xy 134.820222 124.925353) + (xy 134.818844 124.929289) + (xy 134.815098 124.935248) + (xy 134.814307 124.942242) + (xy 134.814307 124.942243) + (xy 134.811821 124.964236) + (xy 134.810629 124.971213) + (xy 134.809 124.978297) + (xy 134.809 124.985671) + (xy 134.808604 124.992692) + (xy 134.805309 125.021838) + (xy 134.80763 125.028483) + (xy 134.808414 125.035477) + (xy 134.807736 125.035553) + (xy 134.809 125.043005) + (xy 134.809 126.9375) + (xy 134.790694 126.981694) + (xy 134.7465 127) + (xy 132.7535 127) + (xy 132.709306 126.981694) + (xy 132.691 126.9375) + (xy 132.691 125.105003) + (xy 132.709306 125.060809) + (xy 134.817849 122.952266) + (xy 134.862043 122.93396) + (xy 135.395037 122.93396) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 133.446271 122.445226) + (xy 133.464577 122.48942) + (xy 133.446271 122.533614) + (xy 131.411953 124.567932) + (xy 131.367759 124.586238) + (xy 131.349851 124.583618) + (xy 131.333008 124.578581) + (xy 131.313838 124.572848) + (xy 131.269496 124.572577) + (xy 131.260103 124.571809) + (xy 131.254857 124.570978) + (xy 131.254856 124.570978) + (xy 131.25 124.570209) + (xy 131.241373 124.571576) + (xy 131.23122 124.572344) + (xy 131.212836 124.572231) + (xy 131.195838 124.572127) + (xy 131.195836 124.572127) + (xy 131.191385 124.5721) + (xy 131.137011 124.587641) + (xy 131.129623 124.589275) + (xy 131.117187 124.591244) + (xy 131.112804 124.593477) + (xy 131.11187 124.593781) + (xy 131.102155 124.597603) + (xy 131.077929 124.604526) + (xy 131.077927 124.604527) + (xy 131.073644 124.605751) + (xy 131.069875 124.608129) + (xy 131.053622 124.618384) + (xy 131.014119 124.643309) + (xy 131.012819 124.644129) + (xy 131.007842 124.646959) + (xy 131.001757 124.650059) + (xy 131.001756 124.65006) + (xy 130.997375 124.652292) + (xy 130.993897 124.65577) + (xy 130.992445 124.656825) + (xy 130.989058 124.65912) + (xy 130.97008 124.671095) + (xy 130.967137 124.674427) + (xy 130.967135 124.674429) + (xy 130.907156 124.742342) + (xy 130.906032 124.743538) + (xy 130.905775 124.743892) + (xy 130.905554 124.744113) + (xy 130.905405 124.744204) + (xy 130.904504 124.745163) + (xy 130.902292 124.747375) + (xy 130.901509 124.746592) + (xy 130.900362 124.747296) + (xy 130.901721 124.748496) + (xy 130.889018 124.762879) + (xy 130.887127 124.766907) + (xy 130.838868 124.869695) + (xy 130.838867 124.869698) + (xy 130.836976 124.873726) + (xy 130.818136 124.994724) + (xy 130.818713 124.999137) + (xy 130.818713 124.999138) + (xy 130.832557 125.105002) + (xy 130.834014 125.116145) + (xy 130.841185 125.132443) + (xy 130.841244 125.132813) + (xy 130.842007 125.134311) + (xy 130.883333 125.22823) + (xy 130.897272 125.244813) + (xy 130.898029 125.245713) + (xy 130.900157 125.248434) + (xy 130.902292 125.252625) + (xy 130.910081 125.260414) + (xy 130.913729 125.264391) + (xy 130.962127 125.321968) + (xy 130.985399 125.337459) + (xy 130.991836 125.342733) + (xy 130.993899 125.344232) + (xy 130.997375 125.347708) + (xy 131.001753 125.349939) + (xy 131.001756 125.349941) + (xy 131.00873 125.353494) + (xy 131.014977 125.357148) + (xy 131.064064 125.389823) + (xy 131.068313 125.391151) + (xy 131.068314 125.391151) + (xy 131.100296 125.401143) + (xy 131.110027 125.405109) + (xy 131.112799 125.406521) + (xy 131.112803 125.406522) + (xy 131.117187 125.408756) + (xy 131.127852 125.410445) + (xy 131.136713 125.41252) + (xy 131.176696 125.425012) + (xy 131.176699 125.425012) + (xy 131.180948 125.42634) + (xy 131.230069 125.427241) + (xy 131.238683 125.427999) + (xy 131.24514 125.429022) + (xy 131.245144 125.429022) + (xy 131.25 125.429791) + (xy 131.256947 125.42869) + (xy 131.267853 125.427933) + (xy 131.303383 125.428584) + (xy 131.363532 125.412185) + (xy 131.37019 125.410755) + (xy 131.372147 125.410445) + (xy 131.382813 125.408756) + (xy 131.387196 125.406522) + (xy 131.391875 125.405002) + (xy 131.391878 125.40501) + (xy 131.396727 125.403136) + (xy 131.421527 125.396375) + (xy 131.426521 125.393309) + (xy 131.489709 125.354511) + (xy 131.494037 125.352085) + (xy 131.49824 125.349944) + (xy 131.498248 125.349938) + (xy 131.502625 125.347708) + (xy 131.505427 125.344906) + (xy 131.506264 125.344346) + (xy 131.511316 125.341244) + (xy 131.525881 125.332301) + (xy 131.608058 125.241513) + (xy 131.661451 125.131311) + (xy 131.663317 125.120224) + (xy 131.678061 125.03258) + (xy 131.681767 125.010552) + (xy 131.681896 125) + (xy 131.666061 124.889432) + (xy 131.677917 124.843091) + (xy 131.683736 124.836379) + (xy 133.821369 122.698746) + (xy 133.865563 122.68044) + (xy 134.398557 122.68044) + (xy 134.442751 122.698746) + (xy 134.461057 122.74294) + (xy 134.442751 122.787134) + (xy 132.395513 124.834372) + (xy 132.389439 124.838677) + (xy 132.389895 124.83925) + (xy 132.384387 124.843631) + (xy 132.378042 124.846678) + (xy 132.373646 124.852175) + (xy 132.359582 124.869761) + (xy 132.354965 124.87492) + (xy 132.349716 124.880169) + (xy 132.34785 124.883137) + (xy 132.347849 124.883139) + (xy 132.347754 124.88329) + (xy 132.345942 124.886174) + (xy 132.341839 124.891947) + (xy 132.341204 124.892741) + (xy 132.323617 124.914733) + (xy 132.32204 124.921593) + (xy 132.320222 124.925353) + (xy 132.318844 124.929289) + (xy 132.315098 124.935248) + (xy 132.314307 124.942242) + (xy 132.314307 124.942243) + (xy 132.311821 124.964236) + (xy 132.310629 124.971213) + (xy 132.309 124.978297) + (xy 132.309 124.985671) + (xy 132.308604 124.992692) + (xy 132.305309 125.021838) + (xy 132.30763 125.028483) + (xy 132.308414 125.035477) + (xy 132.307736 125.035553) + (xy 132.309 125.043005) + (xy 132.309 126.9375) + (xy 132.290694 126.981694) + (xy 132.2465 127) + (xy 130.2535 127) + (xy 130.209306 126.981694) + (xy 130.191 126.9375) + (xy 130.191 125.105003) + (xy 130.209306 125.060809) + (xy 132.824889 122.445226) + (xy 132.869083 122.42692) + (xy 133.402077 122.42692) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 137.432191 123.459306) + (xy 137.450497 123.5035) + (xy 137.432191 123.547694) + (xy 136.411953 124.567932) + (xy 136.367759 124.586238) + (xy 136.349851 124.583618) + (xy 136.333008 124.578581) + (xy 136.313838 124.572848) + (xy 136.269496 124.572577) + (xy 136.260103 124.571809) + (xy 136.254857 124.570978) + (xy 136.254856 124.570978) + (xy 136.25 124.570209) + (xy 136.241373 124.571576) + (xy 136.23122 124.572344) + (xy 136.212836 124.572231) + (xy 136.195838 124.572127) + (xy 136.195836 124.572127) + (xy 136.191385 124.5721) + (xy 136.137011 124.587641) + (xy 136.129623 124.589275) + (xy 136.117187 124.591244) + (xy 136.112804 124.593477) + (xy 136.11187 124.593781) + (xy 136.102155 124.597603) + (xy 136.077929 124.604526) + (xy 136.077927 124.604527) + (xy 136.073644 124.605751) + (xy 136.069875 124.608129) + (xy 136.053622 124.618384) + (xy 136.014119 124.643309) + (xy 136.012819 124.644129) + (xy 136.007842 124.646959) + (xy 136.001757 124.650059) + (xy 136.001756 124.65006) + (xy 135.997375 124.652292) + (xy 135.993897 124.65577) + (xy 135.992445 124.656825) + (xy 135.989058 124.65912) + (xy 135.97008 124.671095) + (xy 135.967137 124.674427) + (xy 135.967135 124.674429) + (xy 135.907156 124.742342) + (xy 135.906032 124.743538) + (xy 135.905775 124.743892) + (xy 135.905554 124.744113) + (xy 135.905405 124.744204) + (xy 135.904504 124.745163) + (xy 135.902292 124.747375) + (xy 135.901509 124.746592) + (xy 135.900362 124.747296) + (xy 135.901721 124.748496) + (xy 135.889018 124.762879) + (xy 135.887127 124.766907) + (xy 135.838868 124.869695) + (xy 135.838867 124.869698) + (xy 135.836976 124.873726) + (xy 135.818136 124.994724) + (xy 135.818713 124.999137) + (xy 135.818713 124.999138) + (xy 135.832557 125.105002) + (xy 135.834014 125.116145) + (xy 135.841185 125.132443) + (xy 135.841244 125.132813) + (xy 135.842007 125.134311) + (xy 135.883333 125.22823) + (xy 135.897272 125.244813) + (xy 135.898029 125.245713) + (xy 135.900157 125.248434) + (xy 135.902292 125.252625) + (xy 135.910081 125.260414) + (xy 135.913729 125.264391) + (xy 135.962127 125.321968) + (xy 135.985399 125.337459) + (xy 135.991836 125.342733) + (xy 135.993899 125.344232) + (xy 135.997375 125.347708) + (xy 136.001753 125.349939) + (xy 136.001756 125.349941) + (xy 136.00873 125.353494) + (xy 136.014977 125.357148) + (xy 136.064064 125.389823) + (xy 136.068313 125.391151) + (xy 136.068314 125.391151) + (xy 136.100296 125.401143) + (xy 136.110027 125.405109) + (xy 136.112799 125.406521) + (xy 136.112803 125.406522) + (xy 136.117187 125.408756) + (xy 136.127852 125.410445) + (xy 136.136713 125.41252) + (xy 136.176696 125.425012) + (xy 136.176699 125.425012) + (xy 136.180948 125.42634) + (xy 136.230069 125.427241) + (xy 136.238683 125.427999) + (xy 136.24514 125.429022) + (xy 136.245144 125.429022) + (xy 136.25 125.429791) + (xy 136.256947 125.42869) + (xy 136.267853 125.427933) + (xy 136.303383 125.428584) + (xy 136.363532 125.412185) + (xy 136.37019 125.410755) + (xy 136.372147 125.410445) + (xy 136.382813 125.408756) + (xy 136.387196 125.406522) + (xy 136.391875 125.405002) + (xy 136.391878 125.40501) + (xy 136.396727 125.403136) + (xy 136.421527 125.396375) + (xy 136.426521 125.393309) + (xy 136.489709 125.354511) + (xy 136.494037 125.352085) + (xy 136.49824 125.349944) + (xy 136.498248 125.349938) + (xy 136.502625 125.347708) + (xy 136.505427 125.344906) + (xy 136.506264 125.344346) + (xy 136.511316 125.341244) + (xy 136.525881 125.332301) + (xy 136.608058 125.241513) + (xy 136.661451 125.131311) + (xy 136.663317 125.120224) + (xy 136.678061 125.03258) + (xy 136.681767 125.010552) + (xy 136.681896 125) + (xy 136.666061 124.889432) + (xy 136.677917 124.843091) + (xy 136.683736 124.836379) + (xy 137.807288 123.712826) + (xy 137.851482 123.69452) + (xy 138.384477 123.69452) + (xy 138.428671 123.712826) + (xy 138.446977 123.75702) + (xy 138.428671 123.801214) + (xy 137.395513 124.834372) + (xy 137.389439 124.838677) + (xy 137.389895 124.83925) + (xy 137.384387 124.843631) + (xy 137.378042 124.846678) + (xy 137.373646 124.852175) + (xy 137.359582 124.869761) + (xy 137.354965 124.87492) + (xy 137.349716 124.880169) + (xy 137.34785 124.883137) + (xy 137.347849 124.883139) + (xy 137.347754 124.88329) + (xy 137.345942 124.886174) + (xy 137.341839 124.891947) + (xy 137.341204 124.892741) + (xy 137.323617 124.914733) + (xy 137.32204 124.921593) + (xy 137.320222 124.925353) + (xy 137.318844 124.929289) + (xy 137.315098 124.935248) + (xy 137.314307 124.942242) + (xy 137.314307 124.942243) + (xy 137.311821 124.964236) + (xy 137.310629 124.971213) + (xy 137.309 124.978297) + (xy 137.309 124.985671) + (xy 137.308604 124.992692) + (xy 137.305309 125.021838) + (xy 137.30763 125.028483) + (xy 137.308414 125.035477) + (xy 137.307736 125.035553) + (xy 137.309 125.043005) + (xy 137.309 126.9375) + (xy 137.290694 126.981694) + (xy 137.2465 127) + (xy 135.2535 127) + (xy 135.209306 126.981694) + (xy 135.191 126.9375) + (xy 135.191 125.105003) + (xy 135.209306 125.060809) + (xy 136.810809 123.459306) + (xy 136.855003 123.441) + (xy 137.387997 123.441) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 172.161031 122.431146) + (xy 174.790694 125.060809) + (xy 174.809 125.105003) + (xy 174.809 126.9375) + (xy 174.790694 126.981694) + (xy 174.7465 127) + (xy 172.7535 127) + (xy 172.709306 126.981694) + (xy 172.691 126.9375) + (xy 172.691 125.043234) + (xy 172.692253 125.035893) + (xy 172.691524 125.03581) + (xy 172.692321 125.028819) + (xy 172.694653 125.022178) + (xy 172.691383 124.992793) + (xy 172.691 124.985881) + (xy 172.691 124.978467) + (xy 172.689421 124.971544) + (xy 172.688245 124.964591) + (xy 172.685015 124.935571) + (xy 172.681281 124.929607) + (xy 172.67991 124.92567) + (xy 172.678097 124.921904) + (xy 172.676532 124.915041) + (xy 172.658354 124.892229) + (xy 172.65426 124.886446) + (xy 172.652284 124.88329) + (xy 172.652279 124.883284) + (xy 172.650404 124.880289) + (xy 172.645191 124.875076) + (xy 172.640506 124.869832) + (xy 172.626612 124.852396) + (xy 172.626611 124.852396) + (xy 172.622225 124.846891) + (xy 172.615886 124.843833) + (xy 172.610385 124.839442) + (xy 172.610811 124.838908) + (xy 172.604647 124.834532) + (xy 170.543169 122.773054) + (xy 170.524863 122.72886) + (xy 170.543169 122.684666) + (xy 170.587363 122.66636) + (xy 171.120357 122.66636) + (xy 171.164551 122.684666) + (xy 173.316772 124.836886) + (xy 173.335078 124.88108) + (xy 173.334334 124.890692) + (xy 173.318136 124.994724) + (xy 173.318713 124.999137) + (xy 173.318713 124.999138) + (xy 173.332557 125.105002) + (xy 173.334014 125.116145) + (xy 173.341185 125.132443) + (xy 173.341244 125.132813) + (xy 173.342007 125.134311) + (xy 173.383333 125.22823) + (xy 173.397272 125.244813) + (xy 173.398029 125.245713) + (xy 173.400157 125.248434) + (xy 173.402292 125.252625) + (xy 173.410081 125.260414) + (xy 173.413729 125.264391) + (xy 173.462127 125.321968) + (xy 173.485399 125.337459) + (xy 173.491836 125.342733) + (xy 173.493899 125.344232) + (xy 173.497375 125.347708) + (xy 173.501753 125.349939) + (xy 173.501756 125.349941) + (xy 173.50873 125.353494) + (xy 173.514977 125.357148) + (xy 173.564064 125.389823) + (xy 173.568313 125.391151) + (xy 173.568314 125.391151) + (xy 173.600296 125.401143) + (xy 173.610027 125.405109) + (xy 173.612799 125.406521) + (xy 173.612803 125.406522) + (xy 173.617187 125.408756) + (xy 173.627852 125.410445) + (xy 173.636713 125.41252) + (xy 173.676696 125.425012) + (xy 173.676699 125.425012) + (xy 173.680948 125.42634) + (xy 173.730069 125.427241) + (xy 173.738683 125.427999) + (xy 173.74514 125.429022) + (xy 173.745144 125.429022) + (xy 173.75 125.429791) + (xy 173.756947 125.42869) + (xy 173.767853 125.427933) + (xy 173.803383 125.428584) + (xy 173.863532 125.412185) + (xy 173.87019 125.410755) + (xy 173.872147 125.410445) + (xy 173.882813 125.408756) + (xy 173.887196 125.406522) + (xy 173.891875 125.405002) + (xy 173.891878 125.40501) + (xy 173.896727 125.403136) + (xy 173.921527 125.396375) + (xy 173.926521 125.393309) + (xy 173.989709 125.354511) + (xy 173.994037 125.352085) + (xy 173.99824 125.349944) + (xy 173.998248 125.349938) + (xy 174.002625 125.347708) + (xy 174.005427 125.344906) + (xy 174.006264 125.344346) + (xy 174.011316 125.341244) + (xy 174.025881 125.332301) + (xy 174.108058 125.241513) + (xy 174.161451 125.131311) + (xy 174.163317 125.120224) + (xy 174.178061 125.03258) + (xy 174.181767 125.010552) + (xy 174.181896 125) + (xy 174.164536 124.878781) + (xy 174.113852 124.767307) + (xy 174.099199 124.750302) + (xy 174.097708 124.747375) + (xy 174.0919 124.741567) + (xy 174.088746 124.73817) + (xy 174.036826 124.677914) + (xy 174.033918 124.674539) + (xy 174.013741 124.661461) + (xy 174.010155 124.658559) + (xy 174.010081 124.658661) + (xy 174.006106 124.655773) + (xy 174.002625 124.652292) + (xy 173.991343 124.646543) + (xy 173.985736 124.643309) + (xy 173.985735 124.643308) + (xy 173.957055 124.624719) + (xy 173.934893 124.610354) + (xy 173.93489 124.610353) + (xy 173.93116 124.607935) + (xy 173.926901 124.606661) + (xy 173.926898 124.60666) + (xy 173.908345 124.601112) + (xy 173.898839 124.598269) + (xy 173.888377 124.594079) + (xy 173.882813 124.591244) + (xy 173.871067 124.589384) + (xy 173.862951 124.587536) + (xy 173.838896 124.580342) + (xy 173.813838 124.572848) + (xy 173.769496 124.572577) + (xy 173.760103 124.571809) + (xy 173.754857 124.570978) + (xy 173.754856 124.570978) + (xy 173.75 124.570209) + (xy 173.741373 124.571576) + (xy 173.73122 124.572344) + (xy 173.712836 124.572231) + (xy 173.695838 124.572127) + (xy 173.695836 124.572127) + (xy 173.691385 124.5721) + (xy 173.64962 124.584037) + (xy 173.602099 124.578581) + (xy 173.588252 124.568137) + (xy 171.539649 122.519534) + (xy 171.521343 122.47534) + (xy 171.539649 122.431146) + (xy 171.583843 122.41284) + (xy 172.116837 122.41284) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 152.797694 118.213085) + (xy 152.812525 118.236728) + (xy 152.814207 118.241559) + (xy 152.814986 118.248557) + (xy 152.818721 118.254524) + (xy 152.820095 118.258469) + (xy 152.821902 118.262225) + (xy 152.823468 118.269087) + (xy 152.827853 118.274589) + (xy 152.827853 118.27459) + (xy 152.841648 118.291901) + (xy 152.845744 118.297687) + (xy 152.849596 118.303839) + (xy 152.854808 118.309051) + (xy 152.859493 118.314295) + (xy 152.877775 118.337237) + (xy 152.884114 118.340295) + (xy 152.889615 118.344686) + (xy 152.889189 118.34522) + (xy 152.895353 118.349596) + (xy 153.219827 118.674069) + (xy 153.540694 118.994936) + (xy 153.559 119.03913) + (xy 153.559 124.580525) + (xy 153.540694 124.624719) + (xy 153.529855 124.63338) + (xy 153.51281 124.644135) + (xy 153.507842 124.646959) + (xy 153.501757 124.650059) + (xy 153.501756 124.65006) + (xy 153.497375 124.652292) + (xy 153.493897 124.65577) + (xy 153.492445 124.656825) + (xy 153.489058 124.65912) + (xy 153.47008 124.671095) + (xy 153.467137 124.674427) + (xy 153.467135 124.674429) + (xy 153.407156 124.742342) + (xy 153.406032 124.743538) + (xy 153.405775 124.743892) + (xy 153.405554 124.744113) + (xy 153.405405 124.744204) + (xy 153.404504 124.745163) + (xy 153.402292 124.747375) + (xy 153.401509 124.746592) + (xy 153.400362 124.747296) + (xy 153.401721 124.748496) + (xy 153.389018 124.762879) + (xy 153.387127 124.766907) + (xy 153.338868 124.869695) + (xy 153.338867 124.869698) + (xy 153.336976 124.873726) + (xy 153.318136 124.994724) + (xy 153.318713 124.999137) + (xy 153.318713 124.999138) + (xy 153.332557 125.105002) + (xy 153.334014 125.116145) + (xy 153.341185 125.132443) + (xy 153.341244 125.132813) + (xy 153.342007 125.134311) + (xy 153.383333 125.22823) + (xy 153.397272 125.244813) + (xy 153.398029 125.245713) + (xy 153.400157 125.248434) + (xy 153.402292 125.252625) + (xy 153.410081 125.260414) + (xy 153.413729 125.264391) + (xy 153.462127 125.321968) + (xy 153.485399 125.337459) + (xy 153.491836 125.342733) + (xy 153.493899 125.344232) + (xy 153.497375 125.347708) + (xy 153.501753 125.349939) + (xy 153.501756 125.349941) + (xy 153.50873 125.353494) + (xy 153.514977 125.357148) + (xy 153.564064 125.389823) + (xy 153.568313 125.391151) + (xy 153.568314 125.391151) + (xy 153.600296 125.401143) + (xy 153.610027 125.405109) + (xy 153.612799 125.406521) + (xy 153.612803 125.406522) + (xy 153.617187 125.408756) + (xy 153.627852 125.410445) + (xy 153.636713 125.41252) + (xy 153.676696 125.425012) + (xy 153.676699 125.425012) + (xy 153.680948 125.42634) + (xy 153.730069 125.427241) + (xy 153.738683 125.427999) + (xy 153.74514 125.429022) + (xy 153.745144 125.429022) + (xy 153.75 125.429791) + (xy 153.756947 125.42869) + (xy 153.767853 125.427933) + (xy 153.803383 125.428584) + (xy 153.863532 125.412185) + (xy 153.87019 125.410755) + (xy 153.872147 125.410445) + (xy 153.882813 125.408756) + (xy 153.887196 125.406522) + (xy 153.891875 125.405002) + (xy 153.891878 125.40501) + (xy 153.896727 125.403136) + (xy 153.921527 125.396375) + (xy 153.926521 125.393309) + (xy 153.989709 125.354511) + (xy 153.994037 125.352085) + (xy 153.99824 125.349944) + (xy 153.998248 125.349938) + (xy 154.002625 125.347708) + (xy 154.005427 125.344906) + (xy 154.006264 125.344346) + (xy 154.011316 125.341244) + (xy 154.025881 125.332301) + (xy 154.108058 125.241513) + (xy 154.161451 125.131311) + (xy 154.163317 125.120224) + (xy 154.178061 125.03258) + (xy 154.181767 125.010552) + (xy 154.181896 125) + (xy 154.164536 124.878781) + (xy 154.113852 124.767307) + (xy 154.099199 124.750302) + (xy 154.097708 124.747375) + (xy 154.0919 124.741567) + (xy 154.088746 124.73817) + (xy 154.036826 124.677914) + (xy 154.033918 124.674539) + (xy 154.013741 124.661461) + (xy 154.010155 124.658559) + (xy 154.010081 124.658661) + (xy 154.006106 124.655773) + (xy 154.002625 124.652292) + (xy 153.991343 124.646543) + (xy 153.985735 124.643308) + (xy 153.969505 124.632788) + (xy 153.942377 124.593389) + (xy 153.941 124.580342) + (xy 153.941 119.187599) + (xy 153.959306 119.143405) + (xy 154.0035 119.125099) + (xy 154.047694 119.143405) + (xy 154.790694 119.886405) + (xy 154.809 119.930599) + (xy 154.809 126.9375) + (xy 154.790694 126.981694) + (xy 154.7465 127) + (xy 152.7535 127) + (xy 152.709306 126.981694) + (xy 152.691 126.9375) + (xy 152.691 118.257279) + (xy 152.709306 118.213085) + (xy 152.7535 118.194779) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 168.175111 123.445226) + (xy 169.790694 125.060809) + (xy 169.809 125.105003) + (xy 169.809 126.9375) + (xy 169.790694 126.981694) + (xy 169.7465 127) + (xy 165.2535 127) + (xy 165.209306 126.981694) + (xy 165.191 126.9375) + (xy 165.191 125.043232) + (xy 165.19225 125.035893) + (xy 165.191523 125.03581) + (xy 165.19232 125.028819) + (xy 165.194652 125.022178) + (xy 165.191383 124.9928) + (xy 165.191 124.98589) + (xy 165.191 124.978467) + (xy 165.189419 124.971535) + (xy 165.188241 124.964569) + (xy 165.185014 124.935571) + (xy 165.181281 124.929607) + (xy 165.179906 124.925659) + (xy 165.178097 124.9219) + (xy 165.176532 124.915041) + (xy 165.158351 124.892226) + (xy 165.154256 124.886441) + (xy 165.15228 124.883285) + (xy 165.152279 124.883283) + (xy 165.150404 124.880289) + (xy 165.145191 124.875076) + (xy 165.140506 124.869832) + (xy 165.126612 124.852396) + (xy 165.126611 124.852396) + (xy 165.122225 124.846891) + (xy 165.115886 124.843833) + (xy 165.110385 124.839442) + (xy 165.110811 124.838908) + (xy 165.104647 124.834532) + (xy 164.057249 123.787134) + (xy 164.038943 123.74294) + (xy 164.057249 123.698746) + (xy 164.101443 123.68044) + (xy 167.134437 123.68044) + (xy 167.178631 123.698746) + (xy 168.316772 124.836887) + (xy 168.335078 124.881081) + (xy 168.334334 124.890691) + (xy 168.318136 124.994724) + (xy 168.318713 124.999137) + (xy 168.318713 124.999138) + (xy 168.332557 125.105002) + (xy 168.334014 125.116145) + (xy 168.341185 125.132443) + (xy 168.341244 125.132813) + (xy 168.342007 125.134311) + (xy 168.383333 125.22823) + (xy 168.397272 125.244813) + (xy 168.398029 125.245713) + (xy 168.400157 125.248434) + (xy 168.402292 125.252625) + (xy 168.410081 125.260414) + (xy 168.413729 125.264391) + (xy 168.462127 125.321968) + (xy 168.485399 125.337459) + (xy 168.491836 125.342733) + (xy 168.493899 125.344232) + (xy 168.497375 125.347708) + (xy 168.501753 125.349939) + (xy 168.501756 125.349941) + (xy 168.50873 125.353494) + (xy 168.514977 125.357148) + (xy 168.564064 125.389823) + (xy 168.568313 125.391151) + (xy 168.568314 125.391151) + (xy 168.600296 125.401143) + (xy 168.610027 125.405109) + (xy 168.612799 125.406521) + (xy 168.612803 125.406522) + (xy 168.617187 125.408756) + (xy 168.627852 125.410445) + (xy 168.636713 125.41252) + (xy 168.676696 125.425012) + (xy 168.676699 125.425012) + (xy 168.680948 125.42634) + (xy 168.730069 125.427241) + (xy 168.738683 125.427999) + (xy 168.74514 125.429022) + (xy 168.745144 125.429022) + (xy 168.75 125.429791) + (xy 168.756947 125.42869) + (xy 168.767853 125.427933) + (xy 168.803383 125.428584) + (xy 168.863532 125.412185) + (xy 168.87019 125.410755) + (xy 168.872147 125.410445) + (xy 168.882813 125.408756) + (xy 168.887196 125.406522) + (xy 168.891875 125.405002) + (xy 168.891878 125.40501) + (xy 168.896727 125.403136) + (xy 168.921527 125.396375) + (xy 168.926521 125.393309) + (xy 168.989709 125.354511) + (xy 168.994037 125.352085) + (xy 168.99824 125.349944) + (xy 168.998248 125.349938) + (xy 169.002625 125.347708) + (xy 169.005427 125.344906) + (xy 169.006264 125.344346) + (xy 169.011316 125.341244) + (xy 169.025881 125.332301) + (xy 169.108058 125.241513) + (xy 169.161451 125.131311) + (xy 169.163317 125.120224) + (xy 169.178061 125.03258) + (xy 169.181767 125.010552) + (xy 169.181896 125) + (xy 169.164536 124.878781) + (xy 169.113852 124.767307) + (xy 169.099199 124.750302) + (xy 169.097708 124.747375) + (xy 169.0919 124.741567) + (xy 169.088746 124.73817) + (xy 169.036826 124.677914) + (xy 169.033918 124.674539) + (xy 169.013741 124.661461) + (xy 169.010155 124.658559) + (xy 169.010081 124.658661) + (xy 169.006106 124.655773) + (xy 169.002625 124.652292) + (xy 168.991343 124.646543) + (xy 168.985736 124.643309) + (xy 168.985735 124.643308) + (xy 168.957055 124.624719) + (xy 168.934893 124.610354) + (xy 168.93489 124.610353) + (xy 168.93116 124.607935) + (xy 168.926901 124.606661) + (xy 168.926898 124.60666) + (xy 168.908345 124.601112) + (xy 168.898839 124.598269) + (xy 168.888377 124.594079) + (xy 168.882813 124.591244) + (xy 168.871067 124.589384) + (xy 168.862951 124.587536) + (xy 168.838896 124.580342) + (xy 168.813838 124.572848) + (xy 168.769496 124.572577) + (xy 168.760103 124.571809) + (xy 168.754857 124.570978) + (xy 168.754856 124.570978) + (xy 168.75 124.570209) + (xy 168.741373 124.571576) + (xy 168.73122 124.572344) + (xy 168.712836 124.572231) + (xy 168.695838 124.572127) + (xy 168.695836 124.572127) + (xy 168.691385 124.5721) + (xy 168.64962 124.584037) + (xy 168.602099 124.578581) + (xy 168.588252 124.568137) + (xy 167.553729 123.533614) + (xy 167.535423 123.48942) + (xy 167.553729 123.445226) + (xy 167.597923 123.42692) + (xy 168.130917 123.42692) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 144.932191 123.459306) + (xy 144.950497 123.5035) + (xy 144.932191 123.547694) + (xy 143.911953 124.567932) + (xy 143.867759 124.586238) + (xy 143.849851 124.583618) + (xy 143.833008 124.578581) + (xy 143.813838 124.572848) + (xy 143.769496 124.572577) + (xy 143.760103 124.571809) + (xy 143.754857 124.570978) + (xy 143.754856 124.570978) + (xy 143.75 124.570209) + (xy 143.741373 124.571576) + (xy 143.73122 124.572344) + (xy 143.712836 124.572231) + (xy 143.695838 124.572127) + (xy 143.695836 124.572127) + (xy 143.691385 124.5721) + (xy 143.637011 124.587641) + (xy 143.629623 124.589275) + (xy 143.617187 124.591244) + (xy 143.612804 124.593477) + (xy 143.61187 124.593781) + (xy 143.602155 124.597603) + (xy 143.577929 124.604526) + (xy 143.577927 124.604527) + (xy 143.573644 124.605751) + (xy 143.569875 124.608129) + (xy 143.553622 124.618384) + (xy 143.514119 124.643309) + (xy 143.512819 124.644129) + (xy 143.507842 124.646959) + (xy 143.501757 124.650059) + (xy 143.501756 124.65006) + (xy 143.497375 124.652292) + (xy 143.493897 124.65577) + (xy 143.492445 124.656825) + (xy 143.489058 124.65912) + (xy 143.47008 124.671095) + (xy 143.467137 124.674427) + (xy 143.467135 124.674429) + (xy 143.407156 124.742342) + (xy 143.406032 124.743538) + (xy 143.405775 124.743892) + (xy 143.405554 124.744113) + (xy 143.405405 124.744204) + (xy 143.404504 124.745163) + (xy 143.402292 124.747375) + (xy 143.401509 124.746592) + (xy 143.400362 124.747296) + (xy 143.401721 124.748496) + (xy 143.389018 124.762879) + (xy 143.387127 124.766907) + (xy 143.338868 124.869695) + (xy 143.338867 124.869698) + (xy 143.336976 124.873726) + (xy 143.318136 124.994724) + (xy 143.318713 124.999137) + (xy 143.318713 124.999138) + (xy 143.332557 125.105002) + (xy 143.334014 125.116145) + (xy 143.341185 125.132443) + (xy 143.341244 125.132813) + (xy 143.342007 125.134311) + (xy 143.383333 125.22823) + (xy 143.397272 125.244813) + (xy 143.398029 125.245713) + (xy 143.400157 125.248434) + (xy 143.402292 125.252625) + (xy 143.410081 125.260414) + (xy 143.413729 125.264391) + (xy 143.462127 125.321968) + (xy 143.485399 125.337459) + (xy 143.491836 125.342733) + (xy 143.493899 125.344232) + (xy 143.497375 125.347708) + (xy 143.501753 125.349939) + (xy 143.501756 125.349941) + (xy 143.50873 125.353494) + (xy 143.514977 125.357148) + (xy 143.564064 125.389823) + (xy 143.568313 125.391151) + (xy 143.568314 125.391151) + (xy 143.600296 125.401143) + (xy 143.610027 125.405109) + (xy 143.612799 125.406521) + (xy 143.612803 125.406522) + (xy 143.617187 125.408756) + (xy 143.627852 125.410445) + (xy 143.636713 125.41252) + (xy 143.676696 125.425012) + (xy 143.676699 125.425012) + (xy 143.680948 125.42634) + (xy 143.730069 125.427241) + (xy 143.738683 125.427999) + (xy 143.74514 125.429022) + (xy 143.745144 125.429022) + (xy 143.75 125.429791) + (xy 143.756947 125.42869) + (xy 143.767853 125.427933) + (xy 143.803383 125.428584) + (xy 143.863532 125.412185) + (xy 143.87019 125.410755) + (xy 143.872147 125.410445) + (xy 143.882813 125.408756) + (xy 143.887196 125.406522) + (xy 143.891875 125.405002) + (xy 143.891878 125.40501) + (xy 143.896727 125.403136) + (xy 143.921527 125.396375) + (xy 143.926521 125.393309) + (xy 143.989709 125.354511) + (xy 143.994037 125.352085) + (xy 143.99824 125.349944) + (xy 143.998248 125.349938) + (xy 144.002625 125.347708) + (xy 144.005427 125.344906) + (xy 144.006264 125.344346) + (xy 144.011316 125.341244) + (xy 144.025881 125.332301) + (xy 144.108058 125.241513) + (xy 144.161451 125.131311) + (xy 144.163317 125.120224) + (xy 144.178061 125.03258) + (xy 144.181767 125.010552) + (xy 144.181896 125) + (xy 144.166061 124.889432) + (xy 144.177917 124.843091) + (xy 144.183736 124.836379) + (xy 145.307288 123.712826) + (xy 145.351482 123.69452) + (xy 145.884477 123.69452) + (xy 145.928671 123.712826) + (xy 145.946977 123.75702) + (xy 145.928671 123.801214) + (xy 144.895513 124.834372) + (xy 144.889439 124.838677) + (xy 144.889895 124.83925) + (xy 144.884387 124.843631) + (xy 144.878042 124.846678) + (xy 144.873646 124.852175) + (xy 144.859582 124.869761) + (xy 144.854965 124.87492) + (xy 144.849716 124.880169) + (xy 144.84785 124.883137) + (xy 144.847849 124.883139) + (xy 144.847754 124.88329) + (xy 144.845942 124.886174) + (xy 144.841839 124.891947) + (xy 144.841204 124.892741) + (xy 144.823617 124.914733) + (xy 144.82204 124.921593) + (xy 144.820222 124.925353) + (xy 144.818844 124.929289) + (xy 144.815098 124.935248) + (xy 144.814307 124.942242) + (xy 144.814307 124.942243) + (xy 144.811821 124.964236) + (xy 144.810629 124.971213) + (xy 144.809 124.978297) + (xy 144.809 124.985671) + (xy 144.808604 124.992692) + (xy 144.805309 125.021838) + (xy 144.80763 125.028483) + (xy 144.808414 125.035477) + (xy 144.807736 125.035553) + (xy 144.809 125.043005) + (xy 144.809 126.9375) + (xy 144.790694 126.981694) + (xy 144.7465 127) + (xy 142.7535 127) + (xy 142.709306 126.981694) + (xy 142.691 126.9375) + (xy 142.691 125.105003) + (xy 142.709306 125.060809) + (xy 144.310809 123.459306) + (xy 144.355003 123.441) + (xy 144.887997 123.441) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 152.302817 121.980239) + (xy 152.309 122.007343) + (xy 152.309 126.9375) + (xy 152.290694 126.981694) + (xy 152.2465 127) + (xy 145.2535 127) + (xy 145.209306 126.981694) + (xy 145.191 126.9375) + (xy 145.191 125.105003) + (xy 145.209306 125.060809) + (xy 146.303769 123.966346) + (xy 146.347963 123.94804) + (xy 146.880958 123.94804) + (xy 146.925152 123.966346) + (xy 146.943458 124.01054) + (xy 146.925152 124.054734) + (xy 146.538885 124.441) + (xy 146.411953 124.567932) + (xy 146.367759 124.586238) + (xy 146.349851 124.583618) + (xy 146.333008 124.578581) + (xy 146.313838 124.572848) + (xy 146.269496 124.572577) + (xy 146.260103 124.571809) + (xy 146.254857 124.570978) + (xy 146.254856 124.570978) + (xy 146.25 124.570209) + (xy 146.241373 124.571576) + (xy 146.23122 124.572344) + (xy 146.212836 124.572231) + (xy 146.195838 124.572127) + (xy 146.195836 124.572127) + (xy 146.191385 124.5721) + (xy 146.137011 124.587641) + (xy 146.129623 124.589275) + (xy 146.117187 124.591244) + (xy 146.112804 124.593477) + (xy 146.11187 124.593781) + (xy 146.102155 124.597603) + (xy 146.077929 124.604526) + (xy 146.077927 124.604527) + (xy 146.073644 124.605751) + (xy 146.069875 124.608129) + (xy 146.053622 124.618384) + (xy 146.014119 124.643309) + (xy 146.012819 124.644129) + (xy 146.007842 124.646959) + (xy 146.001757 124.650059) + (xy 146.001756 124.65006) + (xy 145.997375 124.652292) + (xy 145.993897 124.65577) + (xy 145.992445 124.656825) + (xy 145.989058 124.65912) + (xy 145.97008 124.671095) + (xy 145.967137 124.674427) + (xy 145.967135 124.674429) + (xy 145.907156 124.742342) + (xy 145.906032 124.743538) + (xy 145.905775 124.743892) + (xy 145.905554 124.744113) + (xy 145.905405 124.744204) + (xy 145.904504 124.745163) + (xy 145.902292 124.747375) + (xy 145.901509 124.746592) + (xy 145.900362 124.747296) + (xy 145.901721 124.748496) + (xy 145.889018 124.762879) + (xy 145.887127 124.766907) + (xy 145.838868 124.869695) + (xy 145.838867 124.869698) + (xy 145.836976 124.873726) + (xy 145.818136 124.994724) + (xy 145.818713 124.999137) + (xy 145.818713 124.999138) + (xy 145.832557 125.105002) + (xy 145.834014 125.116145) + (xy 145.841185 125.132443) + (xy 145.841244 125.132813) + (xy 145.842007 125.134311) + (xy 145.883333 125.22823) + (xy 145.897272 125.244813) + (xy 145.898029 125.245713) + (xy 145.900157 125.248434) + (xy 145.902292 125.252625) + (xy 145.910081 125.260414) + (xy 145.913729 125.264391) + (xy 145.962127 125.321968) + (xy 145.985399 125.337459) + (xy 145.991836 125.342733) + (xy 145.993899 125.344232) + (xy 145.997375 125.347708) + (xy 146.001753 125.349939) + (xy 146.001756 125.349941) + (xy 146.00873 125.353494) + (xy 146.014977 125.357148) + (xy 146.064064 125.389823) + (xy 146.068313 125.391151) + (xy 146.068314 125.391151) + (xy 146.100296 125.401143) + (xy 146.110027 125.405109) + (xy 146.112799 125.406521) + (xy 146.112803 125.406522) + (xy 146.117187 125.408756) + (xy 146.127852 125.410445) + (xy 146.136713 125.41252) + (xy 146.176696 125.425012) + (xy 146.176699 125.425012) + (xy 146.180948 125.42634) + (xy 146.230069 125.427241) + (xy 146.238683 125.427999) + (xy 146.24514 125.429022) + (xy 146.245144 125.429022) + (xy 146.25 125.429791) + (xy 146.256947 125.42869) + (xy 146.267853 125.427933) + (xy 146.303383 125.428584) + (xy 146.363532 125.412185) + (xy 146.37019 125.410755) + (xy 146.372147 125.410445) + (xy 146.382813 125.408756) + (xy 146.387196 125.406522) + (xy 146.391875 125.405002) + (xy 146.391878 125.40501) + (xy 146.396727 125.403136) + (xy 146.421527 125.396375) + (xy 146.426521 125.393309) + (xy 146.489709 125.354511) + (xy 146.494037 125.352085) + (xy 146.49824 125.349944) + (xy 146.498248 125.349938) + (xy 146.502625 125.347708) + (xy 146.505427 125.344906) + (xy 146.506264 125.344346) + (xy 146.511316 125.341244) + (xy 146.525881 125.332301) + (xy 146.608058 125.241513) + (xy 146.661451 125.131311) + (xy 146.663317 125.120224) + (xy 146.678061 125.03258) + (xy 146.681767 125.010552) + (xy 146.681896 125) + (xy 146.666061 124.889432) + (xy 146.677917 124.843091) + (xy 146.683736 124.836379) + (xy 147.300249 124.219866) + (xy 147.344443 124.20156) + (xy 149.521801 124.20156) + (xy 149.52914 124.20281) + (xy 149.529223 124.202083) + (xy 149.536214 124.20288) + (xy 149.542855 124.205212) + (xy 149.549848 124.204434) + (xy 149.549849 124.204434) + (xy 149.572233 124.201943) + (xy 149.579145 124.20156) + (xy 149.586566 124.20156) + (xy 149.58999 124.200779) + (xy 149.593481 124.199983) + (xy 149.600464 124.198802) + (xy 149.622471 124.196353) + (xy 149.629462 124.195575) + (xy 149.635425 124.191842) + (xy 149.639358 124.190472) + (xy 149.643128 124.188658) + (xy 149.649992 124.187092) + (xy 149.672804 124.168914) + (xy 149.678587 124.16482) + (xy 149.681743 124.162844) + (xy 149.681749 124.162839) + (xy 149.684744 124.160964) + (xy 149.689957 124.155751) + (xy 149.695201 124.151066) + (xy 149.712637 124.137172) + (xy 149.712637 124.137171) + (xy 149.718142 124.132785) + (xy 149.7212 124.126446) + (xy 149.725591 124.120945) + (xy 149.726125 124.121371) + (xy 149.730501 124.115207) + (xy 150.952306 122.893403) + (xy 150.9965 122.875097) + (xy 151.040694 122.893403) + (xy 151.059 122.937597) + (xy 151.059 124.580525) + (xy 151.040694 124.624719) + (xy 151.029855 124.63338) + (xy 151.01281 124.644135) + (xy 151.007842 124.646959) + (xy 151.001757 124.650059) + (xy 151.001756 124.65006) + (xy 150.997375 124.652292) + (xy 150.993897 124.65577) + (xy 150.992445 124.656825) + (xy 150.989058 124.65912) + (xy 150.97008 124.671095) + (xy 150.967137 124.674427) + (xy 150.967135 124.674429) + (xy 150.907156 124.742342) + (xy 150.906032 124.743538) + (xy 150.905775 124.743892) + (xy 150.905554 124.744113) + (xy 150.905405 124.744204) + (xy 150.904504 124.745163) + (xy 150.902292 124.747375) + (xy 150.901509 124.746592) + (xy 150.900362 124.747296) + (xy 150.901721 124.748496) + (xy 150.889018 124.762879) + (xy 150.887127 124.766907) + (xy 150.838868 124.869695) + (xy 150.838867 124.869698) + (xy 150.836976 124.873726) + (xy 150.818136 124.994724) + (xy 150.818713 124.999137) + (xy 150.818713 124.999138) + (xy 150.832557 125.105002) + (xy 150.834014 125.116145) + (xy 150.841185 125.132443) + (xy 150.841244 125.132813) + (xy 150.842007 125.134311) + (xy 150.883333 125.22823) + (xy 150.897272 125.244813) + (xy 150.898029 125.245713) + (xy 150.900157 125.248434) + (xy 150.902292 125.252625) + (xy 150.910081 125.260414) + (xy 150.913729 125.264391) + (xy 150.962127 125.321968) + (xy 150.985399 125.337459) + (xy 150.991836 125.342733) + (xy 150.993899 125.344232) + (xy 150.997375 125.347708) + (xy 151.001753 125.349939) + (xy 151.001756 125.349941) + (xy 151.00873 125.353494) + (xy 151.014977 125.357148) + (xy 151.064064 125.389823) + (xy 151.068313 125.391151) + (xy 151.068314 125.391151) + (xy 151.100296 125.401143) + (xy 151.110027 125.405109) + (xy 151.112799 125.406521) + (xy 151.112803 125.406522) + (xy 151.117187 125.408756) + (xy 151.127852 125.410445) + (xy 151.136713 125.41252) + (xy 151.176696 125.425012) + (xy 151.176699 125.425012) + (xy 151.180948 125.42634) + (xy 151.230069 125.427241) + (xy 151.238683 125.427999) + (xy 151.24514 125.429022) + (xy 151.245144 125.429022) + (xy 151.25 125.429791) + (xy 151.256947 125.42869) + (xy 151.267853 125.427933) + (xy 151.303383 125.428584) + (xy 151.363532 125.412185) + (xy 151.37019 125.410755) + (xy 151.372147 125.410445) + (xy 151.382813 125.408756) + (xy 151.387196 125.406522) + (xy 151.391875 125.405002) + (xy 151.391878 125.40501) + (xy 151.396727 125.403136) + (xy 151.421527 125.396375) + (xy 151.426521 125.393309) + (xy 151.489709 125.354511) + (xy 151.494037 125.352085) + (xy 151.49824 125.349944) + (xy 151.498248 125.349938) + (xy 151.502625 125.347708) + (xy 151.505427 125.344906) + (xy 151.506264 125.344346) + (xy 151.511316 125.341244) + (xy 151.525881 125.332301) + (xy 151.608058 125.241513) + (xy 151.661451 125.131311) + (xy 151.663317 125.120224) + (xy 151.678061 125.03258) + (xy 151.681767 125.010552) + (xy 151.681896 125) + (xy 151.664536 124.878781) + (xy 151.613852 124.767307) + (xy 151.599199 124.750302) + (xy 151.597708 124.747375) + (xy 151.5919 124.741567) + (xy 151.588746 124.73817) + (xy 151.536826 124.677914) + (xy 151.533918 124.674539) + (xy 151.513741 124.661461) + (xy 151.510155 124.658559) + (xy 151.510081 124.658661) + (xy 151.506106 124.655773) + (xy 151.502625 124.652292) + (xy 151.491343 124.646543) + (xy 151.485735 124.643308) + (xy 151.469505 124.632788) + (xy 151.442377 124.593389) + (xy 151.441 124.580342) + (xy 151.441 122.789129) + (xy 151.459306 122.744935) + (xy 152.104487 122.099753) + (xy 152.110561 122.095448) + (xy 152.110105 122.094875) + (xy 152.115613 122.090494) + (xy 152.121958 122.087447) + (xy 152.140418 122.064364) + (xy 152.145035 122.059205) + (xy 152.150284 122.053956) + (xy 152.154057 122.047953) + (xy 152.158165 122.042172) + (xy 152.162984 122.036147) + (xy 152.176383 122.019392) + (xy 152.17796 122.012532) + (xy 152.179778 122.008772) + (xy 152.181156 122.004837) + (xy 152.184902 121.998877) + (xy 152.185693 121.991882) + (xy 152.187512 121.986687) + (xy 152.219396 121.951026) + (xy 152.267156 121.948355) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 163.682151 123.952266) + (xy 164.790694 125.060809) + (xy 164.809 125.105003) + (xy 164.809 126.9375) + (xy 164.790694 126.981694) + (xy 164.7465 127) + (xy 162.7535 127) + (xy 162.709306 126.981694) + (xy 162.691 126.9375) + (xy 162.691 125.043232) + (xy 162.69225 125.035893) + (xy 162.691523 125.03581) + (xy 162.69232 125.028819) + (xy 162.694652 125.022178) + (xy 162.691383 124.9928) + (xy 162.691 124.98589) + (xy 162.691 124.978467) + (xy 162.689419 124.971535) + (xy 162.688241 124.964569) + (xy 162.685014 124.935571) + (xy 162.681281 124.929607) + (xy 162.679906 124.925659) + (xy 162.678097 124.9219) + (xy 162.676532 124.915041) + (xy 162.658351 124.892226) + (xy 162.654256 124.886441) + (xy 162.65228 124.883285) + (xy 162.652279 124.883283) + (xy 162.650404 124.880289) + (xy 162.645191 124.875076) + (xy 162.640506 124.869832) + (xy 162.626612 124.852396) + (xy 162.626611 124.852396) + (xy 162.622225 124.846891) + (xy 162.615886 124.843833) + (xy 162.610385 124.839442) + (xy 162.610811 124.838908) + (xy 162.604647 124.834532) + (xy 162.064289 124.294174) + (xy 162.045983 124.24998) + (xy 162.064289 124.205786) + (xy 162.108483 124.18748) + (xy 162.641477 124.18748) + (xy 162.685671 124.205786) + (xy 163.316772 124.836887) + (xy 163.335078 124.881081) + (xy 163.334334 124.890691) + (xy 163.318136 124.994724) + (xy 163.318713 124.999137) + (xy 163.318713 124.999138) + (xy 163.332557 125.105002) + (xy 163.334014 125.116145) + (xy 163.341185 125.132443) + (xy 163.341244 125.132813) + (xy 163.342007 125.134311) + (xy 163.383333 125.22823) + (xy 163.397272 125.244813) + (xy 163.398029 125.245713) + (xy 163.400157 125.248434) + (xy 163.402292 125.252625) + (xy 163.410081 125.260414) + (xy 163.413729 125.264391) + (xy 163.462127 125.321968) + (xy 163.485399 125.337459) + (xy 163.491836 125.342733) + (xy 163.493899 125.344232) + (xy 163.497375 125.347708) + (xy 163.501753 125.349939) + (xy 163.501756 125.349941) + (xy 163.50873 125.353494) + (xy 163.514977 125.357148) + (xy 163.564064 125.389823) + (xy 163.568313 125.391151) + (xy 163.568314 125.391151) + (xy 163.600296 125.401143) + (xy 163.610027 125.405109) + (xy 163.612799 125.406521) + (xy 163.612803 125.406522) + (xy 163.617187 125.408756) + (xy 163.627852 125.410445) + (xy 163.636713 125.41252) + (xy 163.676696 125.425012) + (xy 163.676699 125.425012) + (xy 163.680948 125.42634) + (xy 163.730069 125.427241) + (xy 163.738683 125.427999) + (xy 163.74514 125.429022) + (xy 163.745144 125.429022) + (xy 163.75 125.429791) + (xy 163.756947 125.42869) + (xy 163.767853 125.427933) + (xy 163.803383 125.428584) + (xy 163.863532 125.412185) + (xy 163.87019 125.410755) + (xy 163.872147 125.410445) + (xy 163.882813 125.408756) + (xy 163.887196 125.406522) + (xy 163.891875 125.405002) + (xy 163.891878 125.40501) + (xy 163.896727 125.403136) + (xy 163.921527 125.396375) + (xy 163.926521 125.393309) + (xy 163.989709 125.354511) + (xy 163.994037 125.352085) + (xy 163.99824 125.349944) + (xy 163.998248 125.349938) + (xy 164.002625 125.347708) + (xy 164.005427 125.344906) + (xy 164.006264 125.344346) + (xy 164.011316 125.341244) + (xy 164.025881 125.332301) + (xy 164.108058 125.241513) + (xy 164.161451 125.131311) + (xy 164.163317 125.120224) + (xy 164.178061 125.03258) + (xy 164.181767 125.010552) + (xy 164.181896 125) + (xy 164.164536 124.878781) + (xy 164.113852 124.767307) + (xy 164.099199 124.750302) + (xy 164.097708 124.747375) + (xy 164.0919 124.741567) + (xy 164.088746 124.73817) + (xy 164.036826 124.677914) + (xy 164.033918 124.674539) + (xy 164.013741 124.661461) + (xy 164.010155 124.658559) + (xy 164.010081 124.658661) + (xy 164.006106 124.655773) + (xy 164.002625 124.652292) + (xy 163.991343 124.646543) + (xy 163.985736 124.643309) + (xy 163.985735 124.643308) + (xy 163.957055 124.624719) + (xy 163.934893 124.610354) + (xy 163.93489 124.610353) + (xy 163.93116 124.607935) + (xy 163.926901 124.606661) + (xy 163.926898 124.60666) + (xy 163.908345 124.601112) + (xy 163.898839 124.598269) + (xy 163.888377 124.594079) + (xy 163.882813 124.591244) + (xy 163.871067 124.589384) + (xy 163.862951 124.587536) + (xy 163.838896 124.580342) + (xy 163.813838 124.572848) + (xy 163.769496 124.572577) + (xy 163.760103 124.571809) + (xy 163.754857 124.570978) + (xy 163.754856 124.570978) + (xy 163.75 124.570209) + (xy 163.741373 124.571576) + (xy 163.73122 124.572344) + (xy 163.712836 124.572231) + (xy 163.695838 124.572127) + (xy 163.695836 124.572127) + (xy 163.691385 124.5721) + (xy 163.64962 124.584037) + (xy 163.602099 124.578581) + (xy 163.588252 124.568137) + (xy 163.060769 124.040654) + (xy 163.042463 123.99646) + (xy 163.060769 123.952266) + (xy 163.104963 123.93396) + (xy 163.637957 123.93396) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 170.168071 122.938186) + (xy 172.290694 125.060809) + (xy 172.309 125.105003) + (xy 172.309 126.9375) + (xy 172.290694 126.981694) + (xy 172.2465 127) + (xy 170.2535 127) + (xy 170.209306 126.981694) + (xy 170.191 126.9375) + (xy 170.191 125.043232) + (xy 170.19225 125.035893) + (xy 170.191523 125.03581) + (xy 170.19232 125.028819) + (xy 170.194652 125.022178) + (xy 170.193359 125.010552) + (xy 170.191383 124.9928) + (xy 170.191 124.985888) + (xy 170.191 124.978467) + (xy 170.189423 124.971552) + (xy 170.188242 124.964569) + (xy 170.185793 124.942562) + (xy 170.185015 124.935571) + (xy 170.181282 124.929608) + (xy 170.179912 124.925675) + (xy 170.178098 124.921905) + (xy 170.176532 124.915041) + (xy 170.158354 124.892229) + (xy 170.15426 124.886446) + (xy 170.152284 124.88329) + (xy 170.152279 124.883284) + (xy 170.150404 124.880289) + (xy 170.145191 124.875076) + (xy 170.140506 124.869832) + (xy 170.126612 124.852396) + (xy 170.126611 124.852396) + (xy 170.122225 124.846891) + (xy 170.115886 124.843833) + (xy 170.110385 124.839442) + (xy 170.110811 124.838908) + (xy 170.104647 124.834532) + (xy 168.550209 123.280094) + (xy 168.531903 123.2359) + (xy 168.550209 123.191706) + (xy 168.594403 123.1734) + (xy 169.127397 123.1734) + (xy 169.171591 123.191706) + (xy 170.816772 124.836886) + (xy 170.835078 124.88108) + (xy 170.834334 124.890692) + (xy 170.818136 124.994724) + (xy 170.818713 124.999137) + (xy 170.818713 124.999138) + (xy 170.832557 125.105002) + (xy 170.834014 125.116145) + (xy 170.841185 125.132443) + (xy 170.841244 125.132813) + (xy 170.842007 125.134311) + (xy 170.883333 125.22823) + (xy 170.897272 125.244813) + (xy 170.898029 125.245713) + (xy 170.900157 125.248434) + (xy 170.902292 125.252625) + (xy 170.910081 125.260414) + (xy 170.913729 125.264391) + (xy 170.962127 125.321968) + (xy 170.985399 125.337459) + (xy 170.991836 125.342733) + (xy 170.993899 125.344232) + (xy 170.997375 125.347708) + (xy 171.001753 125.349939) + (xy 171.001756 125.349941) + (xy 171.00873 125.353494) + (xy 171.014977 125.357148) + (xy 171.064064 125.389823) + (xy 171.068313 125.391151) + (xy 171.068314 125.391151) + (xy 171.100296 125.401143) + (xy 171.110027 125.405109) + (xy 171.112799 125.406521) + (xy 171.112803 125.406522) + (xy 171.117187 125.408756) + (xy 171.127852 125.410445) + (xy 171.136713 125.41252) + (xy 171.176696 125.425012) + (xy 171.176699 125.425012) + (xy 171.180948 125.42634) + (xy 171.230069 125.427241) + (xy 171.238683 125.427999) + (xy 171.24514 125.429022) + (xy 171.245144 125.429022) + (xy 171.25 125.429791) + (xy 171.256947 125.42869) + (xy 171.267853 125.427933) + (xy 171.303383 125.428584) + (xy 171.363532 125.412185) + (xy 171.37019 125.410755) + (xy 171.372147 125.410445) + (xy 171.382813 125.408756) + (xy 171.387196 125.406522) + (xy 171.391875 125.405002) + (xy 171.391878 125.40501) + (xy 171.396727 125.403136) + (xy 171.421527 125.396375) + (xy 171.426521 125.393309) + (xy 171.489709 125.354511) + (xy 171.494037 125.352085) + (xy 171.49824 125.349944) + (xy 171.498248 125.349938) + (xy 171.502625 125.347708) + (xy 171.505427 125.344906) + (xy 171.506264 125.344346) + (xy 171.511316 125.341244) + (xy 171.525881 125.332301) + (xy 171.608058 125.241513) + (xy 171.661451 125.131311) + (xy 171.663317 125.120224) + (xy 171.678061 125.03258) + (xy 171.681767 125.010552) + (xy 171.681896 125) + (xy 171.664536 124.878781) + (xy 171.613852 124.767307) + (xy 171.599199 124.750302) + (xy 171.597708 124.747375) + (xy 171.5919 124.741567) + (xy 171.588746 124.73817) + (xy 171.536826 124.677914) + (xy 171.533918 124.674539) + (xy 171.513741 124.661461) + (xy 171.510155 124.658559) + (xy 171.510081 124.658661) + (xy 171.506106 124.655773) + (xy 171.502625 124.652292) + (xy 171.491343 124.646543) + (xy 171.485736 124.643309) + (xy 171.485735 124.643308) + (xy 171.457055 124.624719) + (xy 171.434893 124.610354) + (xy 171.43489 124.610353) + (xy 171.43116 124.607935) + (xy 171.426901 124.606661) + (xy 171.426898 124.60666) + (xy 171.408345 124.601112) + (xy 171.398839 124.598269) + (xy 171.388377 124.594079) + (xy 171.382813 124.591244) + (xy 171.371067 124.589384) + (xy 171.362951 124.587536) + (xy 171.338896 124.580342) + (xy 171.313838 124.572848) + (xy 171.269496 124.572577) + (xy 171.260103 124.571809) + (xy 171.254857 124.570978) + (xy 171.254856 124.570978) + (xy 171.25 124.570209) + (xy 171.241373 124.571576) + (xy 171.23122 124.572344) + (xy 171.212836 124.572231) + (xy 171.195838 124.572127) + (xy 171.195836 124.572127) + (xy 171.191385 124.5721) + (xy 171.14962 124.584037) + (xy 171.102099 124.578581) + (xy 171.088252 124.568137) + (xy 169.546689 123.026574) + (xy 169.528383 122.98238) + (xy 169.546689 122.938186) + (xy 169.590883 122.91988) + (xy 170.123877 122.91988) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 155.297694 120.034873) + (xy 156.040694 120.777873) + (xy 156.059 120.822067) + (xy 156.059 124.580525) + (xy 156.040694 124.624719) + (xy 156.029855 124.63338) + (xy 156.01281 124.644135) + (xy 156.007842 124.646959) + (xy 156.001757 124.650059) + (xy 156.001756 124.65006) + (xy 155.997375 124.652292) + (xy 155.993897 124.65577) + (xy 155.992445 124.656825) + (xy 155.989058 124.65912) + (xy 155.97008 124.671095) + (xy 155.967137 124.674427) + (xy 155.967135 124.674429) + (xy 155.907156 124.742342) + (xy 155.906032 124.743538) + (xy 155.905775 124.743892) + (xy 155.905554 124.744113) + (xy 155.905405 124.744204) + (xy 155.904504 124.745163) + (xy 155.902292 124.747375) + (xy 155.901509 124.746592) + (xy 155.900362 124.747296) + (xy 155.901721 124.748496) + (xy 155.889018 124.762879) + (xy 155.887127 124.766907) + (xy 155.838868 124.869695) + (xy 155.838867 124.869698) + (xy 155.836976 124.873726) + (xy 155.818136 124.994724) + (xy 155.818713 124.999137) + (xy 155.818713 124.999138) + (xy 155.832557 125.105002) + (xy 155.834014 125.116145) + (xy 155.841185 125.132443) + (xy 155.841244 125.132813) + (xy 155.842007 125.134311) + (xy 155.883333 125.22823) + (xy 155.897272 125.244813) + (xy 155.898029 125.245713) + (xy 155.900157 125.248434) + (xy 155.902292 125.252625) + (xy 155.910081 125.260414) + (xy 155.913729 125.264391) + (xy 155.962127 125.321968) + (xy 155.985399 125.337459) + (xy 155.991836 125.342733) + (xy 155.993899 125.344232) + (xy 155.997375 125.347708) + (xy 156.001753 125.349939) + (xy 156.001756 125.349941) + (xy 156.00873 125.353494) + (xy 156.014977 125.357148) + (xy 156.064064 125.389823) + (xy 156.068313 125.391151) + (xy 156.068314 125.391151) + (xy 156.100296 125.401143) + (xy 156.110027 125.405109) + (xy 156.112799 125.406521) + (xy 156.112803 125.406522) + (xy 156.117187 125.408756) + (xy 156.127852 125.410445) + (xy 156.136713 125.41252) + (xy 156.176696 125.425012) + (xy 156.176699 125.425012) + (xy 156.180948 125.42634) + (xy 156.230069 125.427241) + (xy 156.238683 125.427999) + (xy 156.24514 125.429022) + (xy 156.245144 125.429022) + (xy 156.25 125.429791) + (xy 156.256947 125.42869) + (xy 156.267853 125.427933) + (xy 156.303383 125.428584) + (xy 156.363532 125.412185) + (xy 156.37019 125.410755) + (xy 156.372147 125.410445) + (xy 156.382813 125.408756) + (xy 156.387196 125.406522) + (xy 156.391875 125.405002) + (xy 156.391878 125.40501) + (xy 156.396727 125.403136) + (xy 156.421527 125.396375) + (xy 156.426521 125.393309) + (xy 156.489709 125.354511) + (xy 156.494037 125.352085) + (xy 156.49824 125.349944) + (xy 156.498248 125.349938) + (xy 156.502625 125.347708) + (xy 156.505427 125.344906) + (xy 156.506264 125.344346) + (xy 156.511316 125.341244) + (xy 156.525881 125.332301) + (xy 156.608058 125.241513) + (xy 156.661451 125.131311) + (xy 156.663317 125.120224) + (xy 156.678061 125.03258) + (xy 156.681767 125.010552) + (xy 156.681896 125) + (xy 156.664536 124.878781) + (xy 156.613852 124.767307) + (xy 156.599199 124.750302) + (xy 156.597708 124.747375) + (xy 156.5919 124.741567) + (xy 156.588746 124.73817) + (xy 156.536826 124.677914) + (xy 156.533918 124.674539) + (xy 156.513741 124.661461) + (xy 156.510155 124.658559) + (xy 156.510081 124.658661) + (xy 156.506106 124.655773) + (xy 156.502625 124.652292) + (xy 156.491343 124.646543) + (xy 156.485735 124.643308) + (xy 156.469505 124.632788) + (xy 156.442377 124.593389) + (xy 156.441 124.580342) + (xy 156.441 120.970535) + (xy 156.459306 120.926341) + (xy 156.5035 120.908035) + (xy 156.547694 120.926341) + (xy 157.290694 121.669341) + (xy 157.309 121.713535) + (xy 157.309 126.9375) + (xy 157.290694 126.981694) + (xy 157.2465 127) + (xy 155.2535 127) + (xy 155.209306 126.981694) + (xy 155.191 126.9375) + (xy 155.191 120.079067) + (xy 155.209306 120.034873) + (xy 155.2535 120.016567) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 163.790694 114.149806) + (xy 163.809 114.194) + (xy 163.809 114.795881) + (xy 163.790694 114.840075) + (xy 163.7465 114.858381) + (xy 163.711777 114.847847) + (xy 163.654012 114.809249) + (xy 163.647976 114.808048) + (xy 163.647975 114.808048) + (xy 163.597957 114.798099) + (xy 163.597954 114.798099) + (xy 163.594944 114.7975) + (xy 163.405056 114.7975) + (xy 163.402046 114.798099) + (xy 163.402043 114.798099) + (xy 163.352025 114.808048) + (xy 163.352024 114.808048) + (xy 163.345988 114.809249) + (xy 163.284723 114.850186) + (xy 163.284274 114.850486) + (xy 163.237358 114.859819) + (xy 163.214827 114.850487) + (xy 163.158933 114.813141) + (xy 163.147779 114.80852) + (xy 163.097904 114.798599) + (xy 163.091823 114.798) + (xy 163.075931 114.798) + (xy 163.067141 114.801641) + (xy 163.0635 114.810431) + (xy 163.0635 116.514568) + (xy 163.067141 116.523358) + (xy 163.075931 116.526999) + (xy 163.091821 116.526999) + (xy 163.097906 116.5264) + (xy 163.147776 116.51648) + (xy 163.158934 116.511858) + (xy 163.211777 116.476551) + (xy 163.258694 116.467219) + (xy 163.298467 116.493795) + (xy 163.309 116.528518) + (xy 163.309 117.456768) + (xy 163.30775 117.464107) + (xy 163.308477 117.46419) + (xy 163.30768 117.471181) + (xy 163.305348 117.477822) + (xy 163.306126 117.484815) + (xy 163.306126 117.484816) + (xy 163.308617 117.507197) + (xy 163.309 117.51411) + (xy 163.309 117.521533) + (xy 163.310581 117.528465) + (xy 163.311757 117.535418) + (xy 163.314986 117.564429) + (xy 163.318719 117.570393) + (xy 163.320094 117.574341) + (xy 163.321903 117.5781) + (xy 163.323468 117.584959) + (xy 163.327853 117.590461) + (xy 163.327853 117.590462) + (xy 163.341648 117.607773) + (xy 163.345744 117.613559) + (xy 163.349596 117.619711) + (xy 163.354808 117.624923) + (xy 163.359493 117.630167) + (xy 163.377775 117.653109) + (xy 163.384114 117.656167) + (xy 163.389615 117.660558) + (xy 163.389189 117.661092) + (xy 163.395353 117.665468) + (xy 164.079482 118.349596) + (xy 164.675152 118.945266) + (xy 164.693458 118.98946) + (xy 164.675152 119.033654) + (xy 164.630958 119.05196) + (xy 163.847963 119.05196) + (xy 163.803769 119.033654) + (xy 162.709306 117.939191) + (xy 162.691 117.894997) + (xy 162.691 116.528518) + (xy 162.709306 116.484324) + (xy 162.7535 116.466018) + (xy 162.788223 116.476551) + (xy 162.841067 116.511859) + (xy 162.852221 116.51648) + (xy 162.902096 116.526401) + (xy 162.908177 116.527) + (xy 162.924069 116.527) + (xy 162.932859 116.523359) + (xy 162.9365 116.514569) + (xy 162.9365 114.810432) + (xy 162.932859 114.801642) + (xy 162.924069 114.798001) + (xy 162.908179 114.798001) + (xy 162.902094 114.7986) + (xy 162.852224 114.80852) + (xy 162.841066 114.813142) + (xy 162.785173 114.850487) + (xy 162.738256 114.859819) + (xy 162.715726 114.850486) + (xy 162.715277 114.850186) + (xy 162.654012 114.809249) + (xy 162.647976 114.808048) + (xy 162.647975 114.808048) + (xy 162.597957 114.798099) + (xy 162.597954 114.798099) + (xy 162.594944 114.7975) + (xy 162.405056 114.7975) + (xy 162.402046 114.798099) + (xy 162.402043 114.798099) + (xy 162.352025 114.808048) + (xy 162.352024 114.808048) + (xy 162.345988 114.809249) + (xy 162.284722 114.850186) + (xy 162.237807 114.859518) + (xy 162.215279 114.850187) + (xy 162.154012 114.809249) + (xy 162.147976 114.808048) + (xy 162.147975 114.808048) + (xy 162.097957 114.798099) + (xy 162.097954 114.798099) + (xy 162.094944 114.7975) + (xy 161.905056 114.7975) + (xy 161.902046 114.798099) + (xy 161.902043 114.798099) + (xy 161.852025 114.808048) + (xy 161.852024 114.808048) + (xy 161.845988 114.809249) + (xy 161.784722 114.850186) + (xy 161.737807 114.859518) + (xy 161.715279 114.850187) + (xy 161.654012 114.809249) + (xy 161.647976 114.808048) + (xy 161.647975 114.808048) + (xy 161.597957 114.798099) + (xy 161.597954 114.798099) + (xy 161.594944 114.7975) + (xy 161.405056 114.7975) + (xy 161.402046 114.798099) + (xy 161.402043 114.798099) + (xy 161.352025 114.808048) + (xy 161.352024 114.808048) + (xy 161.345988 114.809249) + (xy 161.284722 114.850186) + (xy 161.237807 114.859518) + (xy 161.215279 114.850187) + (xy 161.154012 114.809249) + (xy 161.147976 114.808048) + (xy 161.147975 114.808048) + (xy 161.097957 114.798099) + (xy 161.097954 114.798099) + (xy 161.094944 114.7975) + (xy 160.905056 114.7975) + (xy 160.902046 114.798099) + (xy 160.902043 114.798099) + (xy 160.852025 114.808048) + (xy 160.852024 114.808048) + (xy 160.845988 114.809249) + (xy 160.784722 114.850186) + (xy 160.737807 114.859518) + (xy 160.715279 114.850187) + (xy 160.654012 114.809249) + (xy 160.647976 114.808048) + (xy 160.647975 114.808048) + (xy 160.597957 114.798099) + (xy 160.597954 114.798099) + (xy 160.594944 114.7975) + (xy 160.405056 114.7975) + (xy 160.402046 114.798099) + (xy 160.402043 114.798099) + (xy 160.352025 114.808048) + (xy 160.352024 114.808048) + (xy 160.345988 114.809249) + (xy 160.284722 114.850186) + (xy 160.237807 114.859518) + (xy 160.215279 114.850187) + (xy 160.154012 114.809249) + (xy 160.147976 114.808048) + (xy 160.147975 114.808048) + (xy 160.097957 114.798099) + (xy 160.097954 114.798099) + (xy 160.094944 114.7975) + (xy 159.905056 114.7975) + (xy 159.902046 114.798099) + (xy 159.902043 114.798099) + (xy 159.852025 114.808048) + (xy 159.852024 114.808048) + (xy 159.845988 114.809249) + (xy 159.784722 114.850186) + (xy 159.737807 114.859518) + (xy 159.715279 114.850187) + (xy 159.654012 114.809249) + (xy 159.647976 114.808048) + (xy 159.647975 114.808048) + (xy 159.597957 114.798099) + (xy 159.597954 114.798099) + (xy 159.594944 114.7975) + (xy 159.405056 114.7975) + (xy 159.402046 114.798099) + (xy 159.402043 114.798099) + (xy 159.352025 114.808048) + (xy 159.352024 114.808048) + (xy 159.345988 114.809249) + (xy 159.284722 114.850186) + (xy 159.237807 114.859518) + (xy 159.215279 114.850187) + (xy 159.154012 114.809249) + (xy 159.147976 114.808048) + (xy 159.147975 114.808048) + (xy 159.097957 114.798099) + (xy 159.097954 114.798099) + (xy 159.094944 114.7975) + (xy 158.905056 114.7975) + (xy 158.902046 114.798099) + (xy 158.902043 114.798099) + (xy 158.852025 114.808048) + (xy 158.852024 114.808048) + (xy 158.845988 114.809249) + (xy 158.784722 114.850186) + (xy 158.737807 114.859518) + (xy 158.715279 114.850187) + (xy 158.654012 114.809249) + (xy 158.647976 114.808048) + (xy 158.647975 114.808048) + (xy 158.597957 114.798099) + (xy 158.597954 114.798099) + (xy 158.594944 114.7975) + (xy 158.405056 114.7975) + (xy 158.402046 114.798099) + (xy 158.402043 114.798099) + (xy 158.352025 114.808048) + (xy 158.352024 114.808048) + (xy 158.345988 114.809249) + (xy 158.284722 114.850186) + (xy 158.237807 114.859518) + (xy 158.215279 114.850187) + (xy 158.154012 114.809249) + (xy 158.147976 114.808048) + (xy 158.147975 114.808048) + (xy 158.097957 114.798099) + (xy 158.097954 114.798099) + (xy 158.094944 114.7975) + (xy 157.905056 114.7975) + (xy 157.902046 114.798099) + (xy 157.902043 114.798099) + (xy 157.852025 114.808048) + (xy 157.852024 114.808048) + (xy 157.845988 114.809249) + (xy 157.784723 114.850186) + (xy 157.784274 114.850486) + (xy 157.737358 114.859819) + (xy 157.714827 114.850487) + (xy 157.658933 114.813141) + (xy 157.647779 114.80852) + (xy 157.597904 114.798599) + (xy 157.591823 114.798) + (xy 157.575931 114.798) + (xy 157.567141 114.801641) + (xy 157.5635 114.810431) + (xy 157.5635 116.514568) + (xy 157.567141 116.523358) + (xy 157.575931 116.526999) + (xy 157.591821 116.526999) + (xy 157.597906 116.5264) + (xy 157.647776 116.51648) + (xy 157.658934 116.511858) + (xy 157.711777 116.476551) + (xy 157.758694 116.467219) + (xy 157.798467 116.493795) + (xy 157.809 116.528518) + (xy 157.809 120.420933) + (xy 157.790694 120.465127) + (xy 157.7465 120.483433) + (xy 157.702306 120.465127) + (xy 157.209306 119.972127) + (xy 157.191 119.927933) + (xy 157.191 116.528518) + (xy 157.209306 116.484324) + (xy 157.2535 116.466018) + (xy 157.288223 116.476551) + (xy 157.341067 116.511859) + (xy 157.352221 116.51648) + (xy 157.402096 116.526401) + (xy 157.408177 116.527) + (xy 157.424069 116.527) + (xy 157.432859 116.523359) + (xy 157.4365 116.514569) + (xy 157.4365 114.810432) + (xy 157.432859 114.801642) + (xy 157.424069 114.798001) + (xy 157.408179 114.798001) + (xy 157.402094 114.7986) + (xy 157.352224 114.80852) + (xy 157.341066 114.813142) + (xy 157.285173 114.850487) + (xy 157.238256 114.859819) + (xy 157.215726 114.850486) + (xy 157.215277 114.850186) + (xy 157.154012 114.809249) + (xy 157.147976 114.808048) + (xy 157.147975 114.808048) + (xy 157.097957 114.798099) + (xy 157.097954 114.798099) + (xy 157.094944 114.7975) + (xy 156.905056 114.7975) + (xy 156.902046 114.798099) + (xy 156.902043 114.798099) + (xy 156.852025 114.808048) + (xy 156.852024 114.808048) + (xy 156.845988 114.809249) + (xy 156.788223 114.847847) + (xy 156.741308 114.85718) + (xy 156.701534 114.830605) + (xy 156.691 114.795881) + (xy 156.691 114.194) + (xy 156.709306 114.149806) + (xy 156.7535 114.1315) + (xy 163.7465 114.1315) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 156.290694 114.149806) + (xy 156.309 114.194) + (xy 156.309 114.795881) + (xy 156.290694 114.840075) + (xy 156.2465 114.858381) + (xy 156.211777 114.847847) + (xy 156.154012 114.809249) + (xy 156.147976 114.808048) + (xy 156.147975 114.808048) + (xy 156.097957 114.798099) + (xy 156.097954 114.798099) + (xy 156.094944 114.7975) + (xy 155.905056 114.7975) + (xy 155.902046 114.798099) + (xy 155.902043 114.798099) + (xy 155.852025 114.808048) + (xy 155.852024 114.808048) + (xy 155.845988 114.809249) + (xy 155.784722 114.850186) + (xy 155.737807 114.859518) + (xy 155.715279 114.850187) + (xy 155.654012 114.809249) + (xy 155.647976 114.808048) + (xy 155.647975 114.808048) + (xy 155.597957 114.798099) + (xy 155.597954 114.798099) + (xy 155.594944 114.7975) + (xy 155.405056 114.7975) + (xy 155.402046 114.798099) + (xy 155.402043 114.798099) + (xy 155.352025 114.808048) + (xy 155.352024 114.808048) + (xy 155.345988 114.809249) + (xy 155.284722 114.850186) + (xy 155.237807 114.859518) + (xy 155.215279 114.850187) + (xy 155.154012 114.809249) + (xy 155.147976 114.808048) + (xy 155.147975 114.808048) + (xy 155.097957 114.798099) + (xy 155.097954 114.798099) + (xy 155.094944 114.7975) + (xy 154.905056 114.7975) + (xy 154.902046 114.798099) + (xy 154.902043 114.798099) + (xy 154.852025 114.808048) + (xy 154.852024 114.808048) + (xy 154.845988 114.809249) + (xy 154.784722 114.850186) + (xy 154.737807 114.859518) + (xy 154.715279 114.850187) + (xy 154.654012 114.809249) + (xy 154.647976 114.808048) + (xy 154.647975 114.808048) + (xy 154.597957 114.798099) + (xy 154.597954 114.798099) + (xy 154.594944 114.7975) + (xy 154.405056 114.7975) + (xy 154.402046 114.798099) + (xy 154.402043 114.798099) + (xy 154.352025 114.808048) + (xy 154.352024 114.808048) + (xy 154.345988 114.809249) + (xy 154.284723 114.850186) + (xy 154.284274 114.850486) + (xy 154.237358 114.859819) + (xy 154.214827 114.850487) + (xy 154.158933 114.813141) + (xy 154.147779 114.80852) + (xy 154.097904 114.798599) + (xy 154.091823 114.798) + (xy 154.075931 114.798) + (xy 154.067141 114.801641) + (xy 154.0635 114.810431) + (xy 154.0635 116.514568) + (xy 154.067141 116.523358) + (xy 154.075931 116.526999) + (xy 154.091821 116.526999) + (xy 154.097906 116.5264) + (xy 154.147776 116.51648) + (xy 154.158934 116.511858) + (xy 154.211777 116.476551) + (xy 154.258694 116.467219) + (xy 154.298467 116.493795) + (xy 154.309 116.528518) + (xy 154.309 118.713593) + (xy 154.290694 118.757787) + (xy 154.2465 118.776093) + (xy 154.202306 118.757787) + (xy 153.709306 118.264787) + (xy 153.691 118.220593) + (xy 153.691 116.528518) + (xy 153.709306 116.484324) + (xy 153.7535 116.466018) + (xy 153.788223 116.476551) + (xy 153.841067 116.511859) + (xy 153.852221 116.51648) + (xy 153.902096 116.526401) + (xy 153.908177 116.527) + (xy 153.924069 116.527) + (xy 153.932859 116.523359) + (xy 153.9365 116.514569) + (xy 153.9365 114.810432) + (xy 153.932859 114.801642) + (xy 153.924069 114.798001) + (xy 153.908179 114.798001) + (xy 153.902094 114.7986) + (xy 153.852224 114.80852) + (xy 153.841066 114.813142) + (xy 153.785173 114.850487) + (xy 153.738256 114.859819) + (xy 153.715726 114.850486) + (xy 153.715277 114.850186) + (xy 153.654012 114.809249) + (xy 153.647976 114.808048) + (xy 153.647975 114.808048) + (xy 153.597957 114.798099) + (xy 153.597954 114.798099) + (xy 153.594944 114.7975) + (xy 153.405056 114.7975) + (xy 153.402046 114.798099) + (xy 153.402043 114.798099) + (xy 153.352025 114.808048) + (xy 153.352024 114.808048) + (xy 153.345988 114.809249) + (xy 153.284722 114.850186) + (xy 153.237807 114.859518) + (xy 153.215279 114.850187) + (xy 153.154012 114.809249) + (xy 153.147976 114.808048) + (xy 153.147975 114.808048) + (xy 153.097957 114.798099) + (xy 153.097954 114.798099) + (xy 153.094944 114.7975) + (xy 152.905056 114.7975) + (xy 152.902046 114.798099) + (xy 152.902043 114.798099) + (xy 152.852025 114.808048) + (xy 152.852024 114.808048) + (xy 152.845988 114.809249) + (xy 152.784722 114.850186) + (xy 152.737807 114.859518) + (xy 152.715279 114.850187) + (xy 152.654012 114.809249) + (xy 152.647976 114.808048) + (xy 152.647975 114.808048) + (xy 152.597957 114.798099) + (xy 152.597954 114.798099) + (xy 152.594944 114.7975) + (xy 152.405056 114.7975) + (xy 152.402046 114.798099) + (xy 152.402043 114.798099) + (xy 152.352025 114.808048) + (xy 152.352024 114.808048) + (xy 152.345988 114.809249) + (xy 152.284722 114.850186) + (xy 152.237807 114.859518) + (xy 152.215279 114.850187) + (xy 152.154012 114.809249) + (xy 152.147976 114.808048) + (xy 152.147975 114.808048) + (xy 152.097957 114.798099) + (xy 152.097954 114.798099) + (xy 152.094944 114.7975) + (xy 151.905056 114.7975) + (xy 151.902046 114.798099) + (xy 151.902043 114.798099) + (xy 151.852025 114.808048) + (xy 151.852024 114.808048) + (xy 151.845988 114.809249) + (xy 151.784722 114.850186) + (xy 151.737807 114.859518) + (xy 151.715279 114.850187) + (xy 151.654012 114.809249) + (xy 151.647976 114.808048) + (xy 151.647975 114.808048) + (xy 151.597957 114.798099) + (xy 151.597954 114.798099) + (xy 151.594944 114.7975) + (xy 151.405056 114.7975) + (xy 151.402046 114.798099) + (xy 151.402043 114.798099) + (xy 151.352025 114.808048) + (xy 151.352024 114.808048) + (xy 151.345988 114.809249) + (xy 151.284722 114.850186) + (xy 151.237807 114.859518) + (xy 151.215279 114.850187) + (xy 151.154012 114.809249) + (xy 151.147976 114.808048) + (xy 151.147975 114.808048) + (xy 151.097957 114.798099) + (xy 151.097954 114.798099) + (xy 151.094944 114.7975) + (xy 150.905056 114.7975) + (xy 150.902046 114.798099) + (xy 150.902043 114.798099) + (xy 150.852025 114.808048) + (xy 150.852024 114.808048) + (xy 150.845988 114.809249) + (xy 150.784722 114.850186) + (xy 150.737807 114.859518) + (xy 150.715279 114.850187) + (xy 150.654012 114.809249) + (xy 150.647976 114.808048) + (xy 150.647975 114.808048) + (xy 150.597957 114.798099) + (xy 150.597954 114.798099) + (xy 150.594944 114.7975) + (xy 150.405056 114.7975) + (xy 150.402046 114.798099) + (xy 150.402043 114.798099) + (xy 150.352025 114.808048) + (xy 150.352024 114.808048) + (xy 150.345988 114.809249) + (xy 150.284722 114.850186) + (xy 150.237807 114.859518) + (xy 150.215279 114.850187) + (xy 150.154012 114.809249) + (xy 150.147976 114.808048) + (xy 150.147975 114.808048) + (xy 150.097957 114.798099) + (xy 150.097954 114.798099) + (xy 150.094944 114.7975) + (xy 149.905056 114.7975) + (xy 149.902046 114.798099) + (xy 149.902043 114.798099) + (xy 149.852025 114.808048) + (xy 149.852024 114.808048) + (xy 149.845988 114.809249) + (xy 149.788223 114.847847) + (xy 149.741308 114.85718) + (xy 149.701534 114.830605) + (xy 149.691 114.795881) + (xy 149.691 114.194) + (xy 149.709306 114.149806) + (xy 149.7535 114.1315) + (xy 156.2465 114.1315) + ) + ) + (filled_polygon + (layer "B.Cu") + (pts + (xy 200.681694 77.918306) + (xy 200.7 77.9625) + (xy 200.7 96.9375) + (xy 200.681694 96.981694) + (xy 200.6375 97) + (xy 196.905877 97) + (xy 196.861589 96.999961) + (xy 196.861588 96.999961) + (xy 196.854551 96.999955) + (xy 196.848206 97.003002) + (xy 196.848205 97.003002) + (xy 196.839966 97.006958) + (xy 196.826812 97.011552) + (xy 196.811038 97.01515) + (xy 196.805532 97.019537) + (xy 196.805533 97.019537) + (xy 196.798565 97.025089) + (xy 196.786672 97.032549) + (xy 196.772295 97.039453) + (xy 196.767899 97.04495) + (xy 196.767898 97.044951) + (xy 196.762187 97.052092) + (xy 196.752327 97.061935) + (xy 196.739677 97.072015) + (xy 196.73662 97.078352) + (xy 196.736618 97.078355) + (xy 196.732749 97.086378) + (xy 196.725266 97.098261) + (xy 196.715306 97.110715) + (xy 196.713729 97.117572) + (xy 196.713727 97.117577) + (xy 196.711678 97.126489) + (xy 196.707062 97.139634) + (xy 196.700035 97.154202) + (xy 196.700029 97.161239) + (xy 196.700015 97.177201) + (xy 196.700014 97.177217) + (xy 196.7 97.177277) + (xy 196.7 97.194123) + (xy 196.699955 97.245449) + (xy 196.699993 97.245528) + (xy 196.7 97.245593) + (xy 196.7 98.694123) + (xy 196.699971 98.727705) + (xy 196.699955 98.745449) + (xy 196.703002 98.751794) + (xy 196.703002 98.751795) + (xy 196.706958 98.760034) + (xy 196.711552 98.773188) + (xy 196.71515 98.788962) + (xy 196.721645 98.797113) + (xy 196.725089 98.801435) + (xy 196.732549 98.813328) + (xy 196.739453 98.827705) + (xy 196.74495 98.832101) + (xy 196.744951 98.832102) + (xy 196.752092 98.837813) + (xy 196.761935 98.847673) + (xy 196.772015 98.860323) + (xy 196.778352 98.86338) + (xy 196.778355 98.863382) + (xy 196.786378 98.867251) + (xy 196.798261 98.874734) + (xy 196.810715 98.884694) + (xy 196.817572 98.886271) + (xy 196.817577 98.886273) + (xy 196.826489 98.888322) + (xy 196.839634 98.892938) + (xy 196.854202 98.899965) + (xy 196.875886 98.899984) + (xy 196.877201 98.899985) + (xy 196.877217 98.899986) + (xy 196.877277 98.9) + (xy 196.894123 98.9) + (xy 196.945192 98.900045) + (xy 196.945449 98.900045) + (xy 196.945528 98.900007) + (xy 196.945593 98.9) + (xy 199.1375 98.9) + (xy 199.181694 98.918306) + (xy 199.2 98.9625) + (xy 199.2 104.694123) + (xy 199.199955 104.745449) + (xy 199.203002 104.751794) + (xy 199.203002 104.751795) + (xy 199.206958 104.760034) + (xy 199.211552 104.773188) + (xy 199.21515 104.788962) + (xy 199.219537 104.794467) + (xy 199.225089 104.801435) + (xy 199.232549 104.813328) + (xy 199.239453 104.827705) + (xy 199.24495 104.832101) + (xy 199.244951 104.832102) + (xy 199.252092 104.837813) + (xy 199.261935 104.847673) + (xy 199.272015 104.860323) + (xy 199.278352 104.86338) + (xy 199.278355 104.863382) + (xy 199.286378 104.867251) + (xy 199.298261 104.874734) + (xy 199.310715 104.884694) + (xy 199.317572 104.886271) + (xy 199.317577 104.886273) + (xy 199.326489 104.888322) + (xy 199.339634 104.892938) + (xy 199.354202 104.899965) + (xy 199.375886 104.899984) + (xy 199.377201 104.899985) + (xy 199.377217 104.899986) + (xy 199.377277 104.9) + (xy 199.394123 104.9) + (xy 199.445192 104.900045) + (xy 199.445449 104.900045) + (xy 199.445528 104.900007) + (xy 199.445593 104.9) + (xy 200.6375 104.9) + (xy 200.681694 104.918306) + (xy 200.7 104.9625) + (xy 200.7 131.2375) + (xy 200.681694 131.281694) + (xy 200.6375 131.3) + (xy 194.3625 131.3) + (xy 194.318306 131.281694) + (xy 194.3 131.2375) + (xy 194.3 128.289564) + (xy 196.241051 128.289564) + (xy 196.241386 128.292329) + (xy 196.267618 128.509108) + (xy 196.267619 128.509114) + (xy 196.267954 128.51188) + (xy 196.3338 128.725917) + (xy 196.436509 128.924912) + (xy 196.572833 129.102573) + (xy 196.574889 129.104444) + (xy 196.574891 129.104446) + (xy 196.736405 129.251413) + (xy 196.736409 129.251416) + (xy 196.738464 129.253286) + (xy 196.928167 129.372286) + (xy 196.930747 129.373323) + (xy 197.133361 129.454774) + (xy 197.133365 129.454775) + (xy 197.135944 129.455812) + (xy 197.248287 129.479077) + (xy 197.35298 129.500759) + (xy 197.352987 129.50076) + (xy 197.355228 129.501224) + (xy 197.412048 129.5045) + (xy 197.556819 129.5045) + (xy 197.558182 129.504378) + (xy 197.55819 129.504378) + (xy 197.720283 129.489911) + (xy 197.723051 129.489664) + (xy 197.846793 129.455812) + (xy 197.936366 129.431308) + (xy 197.936371 129.431306) + (xy 197.939051 129.430573) + (xy 198.141174 129.334166) + (xy 198.32303 129.203489) + (xy 198.324959 129.201499) + (xy 198.324963 129.201495) + (xy 198.476937 129.04467) + (xy 198.476938 129.044668) + (xy 198.478871 129.042674) + (xy 198.60377 128.856803) + (xy 198.693782 128.651752) + (xy 198.746059 128.434002) + (xy 198.754228 128.292329) + (xy 198.758789 128.213217) + (xy 198.758789 128.213213) + (xy 198.758949 128.210436) + (xy 198.741142 128.063286) + (xy 198.732382 127.990892) + (xy 198.732381 127.990886) + (xy 198.732046 127.98812) + (xy 198.6662 127.774083) + (xy 198.563491 127.575088) + (xy 198.530828 127.53252) + (xy 198.473129 127.457326) + (xy 198.427167 127.397427) + (xy 198.399773 127.3725) + (xy 198.263595 127.248587) + (xy 198.263591 127.248584) + (xy 198.261536 127.246714) + (xy 198.071833 127.127714) + (xy 197.92684 127.069427) + (xy 197.866639 127.045226) + (xy 197.866635 127.045225) + (xy 197.864056 127.044188) + (xy 197.751713 127.020923) + (xy 197.64702 126.999241) + (xy 197.647013 126.99924) + (xy 197.644772 126.998776) + (xy 197.587952 126.9955) + (xy 197.443181 126.9955) + (xy 197.441818 126.995622) + (xy 197.44181 126.995622) + (xy 197.296132 127.008624) + (xy 197.276949 127.010336) + (xy 197.194034 127.033019) + (xy 197.063634 127.068692) + (xy 197.063629 127.068694) + (xy 197.060949 127.069427) + (xy 196.858826 127.165834) + (xy 196.67697 127.296511) + (xy 196.675041 127.298501) + (xy 196.675037 127.298505) + (xy 196.58099 127.395554) + (xy 196.521129 127.457326) + (xy 196.39623 127.643197) + (xy 196.306218 127.848248) + (xy 196.253941 128.065998) + (xy 196.253781 128.068778) + (xy 196.25378 128.068783) + (xy 196.245613 128.210436) + (xy 196.241051 128.289564) + (xy 194.3 128.289564) + (xy 194.3 125.005877) + (xy 194.300039 124.961589) + (xy 194.300039 124.961588) + (xy 194.300045 124.954551) + (xy 194.296834 124.947864) + (xy 194.293042 124.939966) + (xy 194.288448 124.926812) + (xy 194.286415 124.917901) + (xy 194.28485 124.911038) + (xy 194.274911 124.898565) + (xy 194.26745 124.886671) + (xy 194.260547 124.872295) + (xy 194.255049 124.867898) + (xy 194.247908 124.862187) + (xy 194.238065 124.852327) + (xy 194.237878 124.852092) + (xy 194.227985 124.839677) + (xy 194.221648 124.83662) + (xy 194.221645 124.836618) + (xy 194.213622 124.832749) + (xy 194.201738 124.825265) + (xy 194.194782 124.819702) + (xy 194.189285 124.815306) + (xy 194.182428 124.813729) + (xy 194.182423 124.813727) + (xy 194.173511 124.811678) + (xy 194.160366 124.807062) + (xy 194.16015 124.806958) + (xy 194.145798 124.800035) + (xy 194.124114 124.800016) + (xy 194.122799 124.800015) + (xy 194.122783 124.800014) + (xy 194.122723 124.8) + (xy 194.105877 124.8) + (xy 194.054808 124.799955) + (xy 194.054551 124.799955) + (xy 194.054472 124.799993) + (xy 194.054407 124.8) + (xy 189.555877 124.8) + (xy 189.504808 124.799955) + (xy 189.504551 124.799955) + (xy 189.504472 124.799993) + (xy 189.504407 124.8) + (xy 187.605877 124.8) + (xy 187.554808 124.799955) + (xy 187.554551 124.799955) + (xy 187.554472 124.799993) + (xy 187.554407 124.8) + (xy 182.255877 124.8) + (xy 182.211589 124.799961) + (xy 182.211588 124.799961) + (xy 182.204551 124.799955) + (xy 182.198206 124.803002) + (xy 182.198205 124.803002) + (xy 182.189966 124.806958) + (xy 182.176812 124.811552) + (xy 182.161038 124.81515) + (xy 182.155532 124.819537) + (xy 182.155533 124.819537) + (xy 182.148565 124.825089) + (xy 182.136672 124.832549) + (xy 182.122295 124.839453) + (xy 182.117899 124.84495) + (xy 182.117898 124.844951) + (xy 182.112187 124.852092) + (xy 182.102327 124.861935) + (xy 182.089677 124.872015) + (xy 182.08662 124.878352) + (xy 182.086618 124.878355) + (xy 182.082749 124.886378) + (xy 182.075266 124.898261) + (xy 182.065306 124.910715) + (xy 182.063729 124.917572) + (xy 182.063727 124.917577) + (xy 182.061678 124.926489) + (xy 182.057062 124.939634) + (xy 182.050035 124.954202) + (xy 182.050029 124.961239) + (xy 182.050015 124.977201) + (xy 182.050014 124.977217) + (xy 182.05 124.977277) + (xy 182.05 124.994123) + (xy 182.049984 125.012928) + (xy 182.049955 125.045449) + (xy 182.049993 125.045528) + (xy 182.05 125.045593) + (xy 182.05 126.9375) + (xy 182.031694 126.981694) + (xy 181.9875 127) + (xy 175.2535 127) + (xy 175.209306 126.981694) + (xy 175.191 126.9375) + (xy 175.191 126.293232) + (xy 175.19225 126.285893) + (xy 175.191523 126.28581) + (xy 175.19232 126.278819) + (xy 175.194652 126.272178) + (xy 175.191383 126.2428) + (xy 175.191 126.235888) + (xy 175.191 126.228467) + (xy 175.189423 126.221552) + (xy 175.188242 126.214569) + (xy 175.185793 126.192562) + (xy 175.185015 126.185571) + (xy 175.181282 126.179608) + (xy 175.179912 126.175675) + (xy 175.178098 126.171905) + (xy 175.176532 126.165041) + (xy 175.158354 126.142229) + (xy 175.15426 126.136446) + (xy 175.152284 126.13329) + (xy 175.152279 126.133284) + (xy 175.150404 126.130289) + (xy 175.145191 126.125076) + (xy 175.140506 126.119832) + (xy 175.126612 126.102396) + (xy 175.126611 126.102396) + (xy 175.122225 126.096891) + (xy 175.115886 126.093833) + (xy 175.110385 126.089442) + (xy 175.110811 126.088908) + (xy 175.104647 126.084532) + (xy 174.182793 125.162678) + (xy 174.164487 125.118484) + (xy 174.165353 125.108115) + (xy 174.181767 125.010552) + (xy 174.181896 125) + (xy 174.164536 124.878781) + (xy 174.113852 124.767307) + (xy 174.099199 124.750302) + (xy 174.097708 124.747375) + (xy 174.0919 124.741567) + (xy 174.088746 124.73817) + (xy 174.036826 124.677914) + (xy 174.033918 124.674539) + (xy 174.013741 124.661461) + (xy 174.010155 124.658559) + (xy 174.010081 124.658661) + (xy 174.006106 124.655773) + (xy 174.002625 124.652292) + (xy 173.991343 124.646543) + (xy 173.985736 124.643309) + (xy 173.934893 124.610354) + (xy 173.93489 124.610353) + (xy 173.93116 124.607935) + (xy 173.926901 124.606661) + (xy 173.926898 124.60666) + (xy 173.908345 124.601112) + (xy 173.898839 124.598269) + (xy 173.888377 124.594079) + (xy 173.882813 124.591244) + (xy 173.871067 124.589384) + (xy 173.862951 124.587536) + (xy 173.813838 124.572848) + (xy 173.769496 124.572577) + (xy 173.760103 124.571809) + (xy 173.754857 124.570978) + (xy 173.754856 124.570978) + (xy 173.75 124.570209) + (xy 173.741373 124.571576) + (xy 173.73122 124.572344) + (xy 173.712836 124.572231) + (xy 173.695838 124.572127) + (xy 173.695836 124.572127) + (xy 173.691385 124.5721) + (xy 173.637011 124.587641) + (xy 173.629623 124.589275) + (xy 173.617187 124.591244) + (xy 173.612804 124.593477) + (xy 173.61187 124.593781) + (xy 173.602155 124.597603) + (xy 173.577929 124.604526) + (xy 173.577927 124.604527) + (xy 173.573644 124.605751) + (xy 173.514119 124.643309) + (xy 173.512819 124.644129) + (xy 173.507842 124.646959) + (xy 173.501757 124.650059) + (xy 173.501756 124.65006) + (xy 173.497375 124.652292) + (xy 173.493897 124.65577) + (xy 173.492445 124.656825) + (xy 173.489058 124.65912) + (xy 173.47008 124.671095) + (xy 173.467137 124.674427) + (xy 173.467135 124.674429) + (xy 173.407156 124.742342) + (xy 173.406032 124.743538) + (xy 173.405775 124.743892) + (xy 173.405554 124.744113) + (xy 173.405405 124.744204) + (xy 173.404504 124.745163) + (xy 173.402292 124.747375) + (xy 173.401509 124.746592) + (xy 173.400362 124.747296) + (xy 173.401721 124.748496) + (xy 173.389018 124.762879) + (xy 173.387127 124.766907) + (xy 173.338868 124.869695) + (xy 173.338867 124.869698) + (xy 173.336976 124.873726) + (xy 173.318136 124.994724) + (xy 173.318713 124.999137) + (xy 173.318713 124.999138) + (xy 173.324788 125.045593) + (xy 173.334014 125.116145) + (xy 173.341185 125.132443) + (xy 173.341244 125.132813) + (xy 173.342007 125.134311) + (xy 173.383333 125.22823) + (xy 173.397272 125.244813) + (xy 173.398029 125.245713) + (xy 173.400157 125.248434) + (xy 173.402292 125.252625) + (xy 173.410081 125.260414) + (xy 173.413729 125.264391) + (xy 173.462127 125.321968) + (xy 173.485399 125.337459) + (xy 173.491836 125.342733) + (xy 173.493899 125.344232) + (xy 173.497375 125.347708) + (xy 173.501753 125.349939) + (xy 173.501756 125.349941) + (xy 173.50873 125.353494) + (xy 173.514977 125.357148) + (xy 173.564064 125.389823) + (xy 173.568313 125.391151) + (xy 173.568314 125.391151) + (xy 173.600296 125.401143) + (xy 173.610027 125.405109) + (xy 173.612799 125.406521) + (xy 173.612803 125.406522) + (xy 173.617187 125.408756) + (xy 173.627852 125.410445) + (xy 173.636713 125.41252) + (xy 173.676696 125.425012) + (xy 173.676699 125.425012) + (xy 173.680948 125.42634) + (xy 173.730069 125.427241) + (xy 173.738683 125.427999) + (xy 173.74514 125.429022) + (xy 173.745144 125.429022) + (xy 173.75 125.429791) + (xy 173.756947 125.42869) + (xy 173.767853 125.427933) + (xy 173.803383 125.428584) + (xy 173.808019 125.42732) + (xy 173.850968 125.415611) + (xy 173.898421 125.421648) + (xy 173.911601 125.431716) + (xy 174.790694 126.310809) + (xy 174.809 126.355003) + (xy 174.809 126.9375) + (xy 174.790694 126.981694) + (xy 174.7465 127) + (xy 172.7535 127) + (xy 172.709306 126.981694) + (xy 172.691 126.9375) + (xy 172.691 126.293232) + (xy 172.69225 126.285893) + (xy 172.691523 126.28581) + (xy 172.69232 126.278819) + (xy 172.694652 126.272178) + (xy 172.691383 126.2428) + (xy 172.691 126.235888) + (xy 172.691 126.228467) + (xy 172.689423 126.221552) + (xy 172.688242 126.214569) + (xy 172.685793 126.192562) + (xy 172.685015 126.185571) + (xy 172.681282 126.179608) + (xy 172.679912 126.175675) + (xy 172.678098 126.171905) + (xy 172.676532 126.165041) + (xy 172.658354 126.142229) + (xy 172.65426 126.136446) + (xy 172.652284 126.13329) + (xy 172.652279 126.133284) + (xy 172.650404 126.130289) + (xy 172.645191 126.125076) + (xy 172.640506 126.119832) + (xy 172.626612 126.102396) + (xy 172.626611 126.102396) + (xy 172.622225 126.096891) + (xy 172.615886 126.093833) + (xy 172.610385 126.089442) + (xy 172.610811 126.088908) + (xy 172.604647 126.084532) + (xy 171.682793 125.162678) + (xy 171.664487 125.118484) + (xy 171.665353 125.108115) + (xy 171.681767 125.010552) + (xy 171.681896 125) + (xy 171.664536 124.878781) + (xy 171.613852 124.767307) + (xy 171.599199 124.750302) + (xy 171.597708 124.747375) + (xy 171.5919 124.741567) + (xy 171.588746 124.73817) + (xy 171.536826 124.677914) + (xy 171.533918 124.674539) + (xy 171.513741 124.661461) + (xy 171.510155 124.658559) + (xy 171.510081 124.658661) + (xy 171.506106 124.655773) + (xy 171.502625 124.652292) + (xy 171.491343 124.646543) + (xy 171.485736 124.643309) + (xy 171.434893 124.610354) + (xy 171.43489 124.610353) + (xy 171.43116 124.607935) + (xy 171.426901 124.606661) + (xy 171.426898 124.60666) + (xy 171.408345 124.601112) + (xy 171.398839 124.598269) + (xy 171.388377 124.594079) + (xy 171.382813 124.591244) + (xy 171.371067 124.589384) + (xy 171.362951 124.587536) + (xy 171.313838 124.572848) + (xy 171.269496 124.572577) + (xy 171.260103 124.571809) + (xy 171.254857 124.570978) + (xy 171.254856 124.570978) + (xy 171.25 124.570209) + (xy 171.241373 124.571576) + (xy 171.23122 124.572344) + (xy 171.212836 124.572231) + (xy 171.195838 124.572127) + (xy 171.195836 124.572127) + (xy 171.191385 124.5721) + (xy 171.137011 124.587641) + (xy 171.129623 124.589275) + (xy 171.117187 124.591244) + (xy 171.112804 124.593477) + (xy 171.11187 124.593781) + (xy 171.102155 124.597603) + (xy 171.077929 124.604526) + (xy 171.077927 124.604527) + (xy 171.073644 124.605751) + (xy 171.014119 124.643309) + (xy 171.012819 124.644129) + (xy 171.007842 124.646959) + (xy 171.001757 124.650059) + (xy 171.001756 124.65006) + (xy 170.997375 124.652292) + (xy 170.993897 124.65577) + (xy 170.992445 124.656825) + (xy 170.989058 124.65912) + (xy 170.97008 124.671095) + (xy 170.967137 124.674427) + (xy 170.967135 124.674429) + (xy 170.907156 124.742342) + (xy 170.906032 124.743538) + (xy 170.905775 124.743892) + (xy 170.905554 124.744113) + (xy 170.905405 124.744204) + (xy 170.904504 124.745163) + (xy 170.902292 124.747375) + (xy 170.901509 124.746592) + (xy 170.900362 124.747296) + (xy 170.901721 124.748496) + (xy 170.889018 124.762879) + (xy 170.887127 124.766907) + (xy 170.838868 124.869695) + (xy 170.838867 124.869698) + (xy 170.836976 124.873726) + (xy 170.818136 124.994724) + (xy 170.818713 124.999137) + (xy 170.818713 124.999138) + (xy 170.824788 125.045593) + (xy 170.834014 125.116145) + (xy 170.841185 125.132443) + (xy 170.841244 125.132813) + (xy 170.842007 125.134311) + (xy 170.883333 125.22823) + (xy 170.897272 125.244813) + (xy 170.898029 125.245713) + (xy 170.900157 125.248434) + (xy 170.902292 125.252625) + (xy 170.910081 125.260414) + (xy 170.913729 125.264391) + (xy 170.962127 125.321968) + (xy 170.985399 125.337459) + (xy 170.991836 125.342733) + (xy 170.993899 125.344232) + (xy 170.997375 125.347708) + (xy 171.001753 125.349939) + (xy 171.001756 125.349941) + (xy 171.00873 125.353494) + (xy 171.014977 125.357148) + (xy 171.064064 125.389823) + (xy 171.068313 125.391151) + (xy 171.068314 125.391151) + (xy 171.100296 125.401143) + (xy 171.110027 125.405109) + (xy 171.112799 125.406521) + (xy 171.112803 125.406522) + (xy 171.117187 125.408756) + (xy 171.127852 125.410445) + (xy 171.136713 125.41252) + (xy 171.176696 125.425012) + (xy 171.176699 125.425012) + (xy 171.180948 125.42634) + (xy 171.230069 125.427241) + (xy 171.238683 125.427999) + (xy 171.24514 125.429022) + (xy 171.245144 125.429022) + (xy 171.25 125.429791) + (xy 171.256947 125.42869) + (xy 171.267853 125.427933) + (xy 171.303383 125.428584) + (xy 171.308019 125.42732) + (xy 171.350968 125.415611) + (xy 171.398421 125.421648) + (xy 171.411601 125.431716) + (xy 172.290694 126.310809) + (xy 172.309 126.355003) + (xy 172.309 126.9375) + (xy 172.290694 126.981694) + (xy 172.2465 127) + (xy 170.2535 127) + (xy 170.209306 126.981694) + (xy 170.191 126.9375) + (xy 170.191 126.293232) + (xy 170.19225 126.285893) + (xy 170.191523 126.28581) + (xy 170.19232 126.278819) + (xy 170.194652 126.272178) + (xy 170.191383 126.2428) + (xy 170.191 126.235888) + (xy 170.191 126.228467) + (xy 170.189423 126.221552) + (xy 170.188242 126.214569) + (xy 170.185793 126.192562) + (xy 170.185015 126.185571) + (xy 170.181282 126.179608) + (xy 170.179912 126.175675) + (xy 170.178098 126.171905) + (xy 170.176532 126.165041) + (xy 170.158354 126.142229) + (xy 170.15426 126.136446) + (xy 170.152284 126.13329) + (xy 170.152279 126.133284) + (xy 170.150404 126.130289) + (xy 170.145191 126.125076) + (xy 170.140506 126.119832) + (xy 170.126612 126.102396) + (xy 170.126611 126.102396) + (xy 170.122225 126.096891) + (xy 170.115886 126.093833) + (xy 170.110385 126.089442) + (xy 170.110811 126.088908) + (xy 170.104647 126.084532) + (xy 169.182793 125.162678) + (xy 169.164487 125.118484) + (xy 169.165353 125.108115) + (xy 169.181767 125.010552) + (xy 169.181896 125) + (xy 169.164536 124.878781) + (xy 169.113852 124.767307) + (xy 169.099199 124.750302) + (xy 169.097708 124.747375) + (xy 169.0919 124.741567) + (xy 169.088746 124.73817) + (xy 169.036826 124.677914) + (xy 169.033918 124.674539) + (xy 169.013741 124.661461) + (xy 169.010155 124.658559) + (xy 169.010081 124.658661) + (xy 169.006106 124.655773) + (xy 169.002625 124.652292) + (xy 168.991343 124.646543) + (xy 168.985736 124.643309) + (xy 168.934893 124.610354) + (xy 168.93489 124.610353) + (xy 168.93116 124.607935) + (xy 168.926901 124.606661) + (xy 168.926898 124.60666) + (xy 168.908345 124.601112) + (xy 168.898839 124.598269) + (xy 168.888377 124.594079) + (xy 168.882813 124.591244) + (xy 168.871067 124.589384) + (xy 168.862951 124.587536) + (xy 168.813838 124.572848) + (xy 168.769496 124.572577) + (xy 168.760103 124.571809) + (xy 168.754857 124.570978) + (xy 168.754856 124.570978) + (xy 168.75 124.570209) + (xy 168.741373 124.571576) + (xy 168.73122 124.572344) + (xy 168.712836 124.572231) + (xy 168.695838 124.572127) + (xy 168.695836 124.572127) + (xy 168.691385 124.5721) + (xy 168.637011 124.587641) + (xy 168.629623 124.589275) + (xy 168.617187 124.591244) + (xy 168.612804 124.593477) + (xy 168.61187 124.593781) + (xy 168.602155 124.597603) + (xy 168.577929 124.604526) + (xy 168.577927 124.604527) + (xy 168.573644 124.605751) + (xy 168.514119 124.643309) + (xy 168.512819 124.644129) + (xy 168.507842 124.646959) + (xy 168.501757 124.650059) + (xy 168.501756 124.65006) + (xy 168.497375 124.652292) + (xy 168.493897 124.65577) + (xy 168.492445 124.656825) + (xy 168.489058 124.65912) + (xy 168.47008 124.671095) + (xy 168.467137 124.674427) + (xy 168.467135 124.674429) + (xy 168.407156 124.742342) + (xy 168.406032 124.743538) + (xy 168.405775 124.743892) + (xy 168.405554 124.744113) + (xy 168.405405 124.744204) + (xy 168.404504 124.745163) + (xy 168.402292 124.747375) + (xy 168.401509 124.746592) + (xy 168.400362 124.747296) + (xy 168.401721 124.748496) + (xy 168.389018 124.762879) + (xy 168.387127 124.766907) + (xy 168.338868 124.869695) + (xy 168.338867 124.869698) + (xy 168.336976 124.873726) + (xy 168.318136 124.994724) + (xy 168.318713 124.999137) + (xy 168.318713 124.999138) + (xy 168.324788 125.045593) + (xy 168.334014 125.116145) + (xy 168.341185 125.132443) + (xy 168.341244 125.132813) + (xy 168.342007 125.134311) + (xy 168.383333 125.22823) + (xy 168.397272 125.244813) + (xy 168.398029 125.245713) + (xy 168.400157 125.248434) + (xy 168.402292 125.252625) + (xy 168.410081 125.260414) + (xy 168.413729 125.264391) + (xy 168.462127 125.321968) + (xy 168.485399 125.337459) + (xy 168.491836 125.342733) + (xy 168.493899 125.344232) + (xy 168.497375 125.347708) + (xy 168.501753 125.349939) + (xy 168.501756 125.349941) + (xy 168.50873 125.353494) + (xy 168.514977 125.357148) + (xy 168.564064 125.389823) + (xy 168.568313 125.391151) + (xy 168.568314 125.391151) + (xy 168.600296 125.401143) + (xy 168.610027 125.405109) + (xy 168.612799 125.406521) + (xy 168.612803 125.406522) + (xy 168.617187 125.408756) + (xy 168.627852 125.410445) + (xy 168.636713 125.41252) + (xy 168.676696 125.425012) + (xy 168.676699 125.425012) + (xy 168.680948 125.42634) + (xy 168.730069 125.427241) + (xy 168.738683 125.427999) + (xy 168.74514 125.429022) + (xy 168.745144 125.429022) + (xy 168.75 125.429791) + (xy 168.756947 125.42869) + (xy 168.767853 125.427933) + (xy 168.803383 125.428584) + (xy 168.808019 125.42732) + (xy 168.850968 125.415611) + (xy 168.898421 125.421648) + (xy 168.911601 125.431716) + (xy 169.790694 126.310809) + (xy 169.809 126.355003) + (xy 169.809 126.9375) + (xy 169.790694 126.981694) + (xy 169.7465 127) + (xy 165.2535 127) + (xy 165.209306 126.981694) + (xy 165.191 126.9375) + (xy 165.191 126.293232) + (xy 165.19225 126.285893) + (xy 165.191523 126.28581) + (xy 165.19232 126.278819) + (xy 165.194652 126.272178) + (xy 165.191383 126.2428) + (xy 165.191 126.235888) + (xy 165.191 126.228467) + (xy 165.189423 126.221552) + (xy 165.188242 126.214569) + (xy 165.185793 126.192562) + (xy 165.185015 126.185571) + (xy 165.181282 126.179608) + (xy 165.179912 126.175675) + (xy 165.178098 126.171905) + (xy 165.176532 126.165041) + (xy 165.158354 126.142229) + (xy 165.15426 126.136446) + (xy 165.152284 126.13329) + (xy 165.152279 126.133284) + (xy 165.150404 126.130289) + (xy 165.145191 126.125076) + (xy 165.140506 126.119832) + (xy 165.126612 126.102396) + (xy 165.126611 126.102396) + (xy 165.122225 126.096891) + (xy 165.115886 126.093833) + (xy 165.110385 126.089442) + (xy 165.110811 126.088908) + (xy 165.104647 126.084532) + (xy 164.182793 125.162678) + (xy 164.164487 125.118484) + (xy 164.165353 125.108115) + (xy 164.181767 125.010552) + (xy 164.181896 125) + (xy 164.164536 124.878781) + (xy 164.113852 124.767307) + (xy 164.099199 124.750302) + (xy 164.097708 124.747375) + (xy 164.0919 124.741567) + (xy 164.088746 124.73817) + (xy 164.036826 124.677914) + (xy 164.033918 124.674539) + (xy 164.013741 124.661461) + (xy 164.010155 124.658559) + (xy 164.010081 124.658661) + (xy 164.006106 124.655773) + (xy 164.002625 124.652292) + (xy 163.991343 124.646543) + (xy 163.985736 124.643309) + (xy 163.934893 124.610354) + (xy 163.93489 124.610353) + (xy 163.93116 124.607935) + (xy 163.926901 124.606661) + (xy 163.926898 124.60666) + (xy 163.908345 124.601112) + (xy 163.898839 124.598269) + (xy 163.888377 124.594079) + (xy 163.882813 124.591244) + (xy 163.871067 124.589384) + (xy 163.862951 124.587536) + (xy 163.813838 124.572848) + (xy 163.769496 124.572577) + (xy 163.760103 124.571809) + (xy 163.754857 124.570978) + (xy 163.754856 124.570978) + (xy 163.75 124.570209) + (xy 163.741373 124.571576) + (xy 163.73122 124.572344) + (xy 163.712836 124.572231) + (xy 163.695838 124.572127) + (xy 163.695836 124.572127) + (xy 163.691385 124.5721) + (xy 163.637011 124.587641) + (xy 163.629623 124.589275) + (xy 163.617187 124.591244) + (xy 163.612804 124.593477) + (xy 163.61187 124.593781) + (xy 163.602155 124.597603) + (xy 163.577929 124.604526) + (xy 163.577927 124.604527) + (xy 163.573644 124.605751) + (xy 163.514119 124.643309) + (xy 163.512819 124.644129) + (xy 163.507842 124.646959) + (xy 163.501757 124.650059) + (xy 163.501756 124.65006) + (xy 163.497375 124.652292) + (xy 163.493897 124.65577) + (xy 163.492445 124.656825) + (xy 163.489058 124.65912) + (xy 163.47008 124.671095) + (xy 163.467137 124.674427) + (xy 163.467135 124.674429) + (xy 163.407156 124.742342) + (xy 163.406032 124.743538) + (xy 163.405775 124.743892) + (xy 163.405554 124.744113) + (xy 163.405405 124.744204) + (xy 163.404504 124.745163) + (xy 163.402292 124.747375) + (xy 163.401509 124.746592) + (xy 163.400362 124.747296) + (xy 163.401721 124.748496) + (xy 163.389018 124.762879) + (xy 163.387127 124.766907) + (xy 163.338868 124.869695) + (xy 163.338867 124.869698) + (xy 163.336976 124.873726) + (xy 163.318136 124.994724) + (xy 163.318713 124.999137) + (xy 163.318713 124.999138) + (xy 163.324788 125.045593) + (xy 163.334014 125.116145) + (xy 163.341185 125.132443) + (xy 163.341244 125.132813) + (xy 163.342007 125.134311) + (xy 163.383333 125.22823) + (xy 163.397272 125.244813) + (xy 163.398029 125.245713) + (xy 163.400157 125.248434) + (xy 163.402292 125.252625) + (xy 163.410081 125.260414) + (xy 163.413729 125.264391) + (xy 163.462127 125.321968) + (xy 163.485399 125.337459) + (xy 163.491836 125.342733) + (xy 163.493899 125.344232) + (xy 163.497375 125.347708) + (xy 163.501753 125.349939) + (xy 163.501756 125.349941) + (xy 163.50873 125.353494) + (xy 163.514977 125.357148) + (xy 163.564064 125.389823) + (xy 163.568313 125.391151) + (xy 163.568314 125.391151) + (xy 163.600296 125.401143) + (xy 163.610027 125.405109) + (xy 163.612799 125.406521) + (xy 163.612803 125.406522) + (xy 163.617187 125.408756) + (xy 163.627852 125.410445) + (xy 163.636713 125.41252) + (xy 163.676696 125.425012) + (xy 163.676699 125.425012) + (xy 163.680948 125.42634) + (xy 163.730069 125.427241) + (xy 163.738683 125.427999) + (xy 163.74514 125.429022) + (xy 163.745144 125.429022) + (xy 163.75 125.429791) + (xy 163.756947 125.42869) + (xy 163.767853 125.427933) + (xy 163.803383 125.428584) + (xy 163.808019 125.42732) + (xy 163.850968 125.415611) + (xy 163.898421 125.421648) + (xy 163.911601 125.431716) + (xy 164.790694 126.310809) + (xy 164.809 126.355003) + (xy 164.809 126.9375) + (xy 164.790694 126.981694) + (xy 164.7465 127) + (xy 162.7535 127) + (xy 162.709306 126.981694) + (xy 162.691 126.9375) + (xy 162.691 126.293232) + (xy 162.69225 126.285893) + (xy 162.691523 126.28581) + (xy 162.69232 126.278819) + (xy 162.694652 126.272178) + (xy 162.691383 126.2428) + (xy 162.691 126.235888) + (xy 162.691 126.228467) + (xy 162.689423 126.221552) + (xy 162.688242 126.214569) + (xy 162.685793 126.192562) + (xy 162.685015 126.185571) + (xy 162.681282 126.179608) + (xy 162.679912 126.175675) + (xy 162.678098 126.171905) + (xy 162.676532 126.165041) + (xy 162.658354 126.142229) + (xy 162.65426 126.136446) + (xy 162.652284 126.13329) + (xy 162.652279 126.133284) + (xy 162.650404 126.130289) + (xy 162.645191 126.125076) + (xy 162.640506 126.119832) + (xy 162.626612 126.102396) + (xy 162.626611 126.102396) + (xy 162.622225 126.096891) + (xy 162.615886 126.093833) + (xy 162.610385 126.089442) + (xy 162.610811 126.088908) + (xy 162.604647 126.084532) + (xy 161.682793 125.162678) + (xy 161.664487 125.118484) + (xy 161.665353 125.108115) + (xy 161.681767 125.010552) + (xy 161.681896 125) + (xy 161.664536 124.878781) + (xy 161.613852 124.767307) + (xy 161.599199 124.750302) + (xy 161.597708 124.747375) + (xy 161.5919 124.741567) + (xy 161.588746 124.73817) + (xy 161.536826 124.677914) + (xy 161.533918 124.674539) + (xy 161.513741 124.661461) + (xy 161.510155 124.658559) + (xy 161.510081 124.658661) + (xy 161.506106 124.655773) + (xy 161.502625 124.652292) + (xy 161.491343 124.646543) + (xy 161.485736 124.643309) + (xy 161.434893 124.610354) + (xy 161.43489 124.610353) + (xy 161.43116 124.607935) + (xy 161.426901 124.606661) + (xy 161.426898 124.60666) + (xy 161.408345 124.601112) + (xy 161.398839 124.598269) + (xy 161.388377 124.594079) + (xy 161.382813 124.591244) + (xy 161.371067 124.589384) + (xy 161.362951 124.587536) + (xy 161.313838 124.572848) + (xy 161.269496 124.572577) + (xy 161.260103 124.571809) + (xy 161.254857 124.570978) + (xy 161.254856 124.570978) + (xy 161.25 124.570209) + (xy 161.241373 124.571576) + (xy 161.23122 124.572344) + (xy 161.212836 124.572231) + (xy 161.195838 124.572127) + (xy 161.195836 124.572127) + (xy 161.191385 124.5721) + (xy 161.137011 124.587641) + (xy 161.129623 124.589275) + (xy 161.117187 124.591244) + (xy 161.112804 124.593477) + (xy 161.11187 124.593781) + (xy 161.102155 124.597603) + (xy 161.077929 124.604526) + (xy 161.077927 124.604527) + (xy 161.073644 124.605751) + (xy 161.014119 124.643309) + (xy 161.012819 124.644129) + (xy 161.007842 124.646959) + (xy 161.001757 124.650059) + (xy 161.001756 124.65006) + (xy 160.997375 124.652292) + (xy 160.993897 124.65577) + (xy 160.992445 124.656825) + (xy 160.989058 124.65912) + (xy 160.97008 124.671095) + (xy 160.967137 124.674427) + (xy 160.967135 124.674429) + (xy 160.907156 124.742342) + (xy 160.906032 124.743538) + (xy 160.905775 124.743892) + (xy 160.905554 124.744113) + (xy 160.905405 124.744204) + (xy 160.904504 124.745163) + (xy 160.902292 124.747375) + (xy 160.901509 124.746592) + (xy 160.900362 124.747296) + (xy 160.901721 124.748496) + (xy 160.889018 124.762879) + (xy 160.887127 124.766907) + (xy 160.838868 124.869695) + (xy 160.838867 124.869698) + (xy 160.836976 124.873726) + (xy 160.818136 124.994724) + (xy 160.818713 124.999137) + (xy 160.818713 124.999138) + (xy 160.824788 125.045593) + (xy 160.834014 125.116145) + (xy 160.841185 125.132443) + (xy 160.841244 125.132813) + (xy 160.842007 125.134311) + (xy 160.883333 125.22823) + (xy 160.897272 125.244813) + (xy 160.898029 125.245713) + (xy 160.900157 125.248434) + (xy 160.902292 125.252625) + (xy 160.910081 125.260414) + (xy 160.913729 125.264391) + (xy 160.962127 125.321968) + (xy 160.985399 125.337459) + (xy 160.991836 125.342733) + (xy 160.993899 125.344232) + (xy 160.997375 125.347708) + (xy 161.001753 125.349939) + (xy 161.001756 125.349941) + (xy 161.00873 125.353494) + (xy 161.014977 125.357148) + (xy 161.064064 125.389823) + (xy 161.068313 125.391151) + (xy 161.068314 125.391151) + (xy 161.100296 125.401143) + (xy 161.110027 125.405109) + (xy 161.112799 125.406521) + (xy 161.112803 125.406522) + (xy 161.117187 125.408756) + (xy 161.127852 125.410445) + (xy 161.136713 125.41252) + (xy 161.176696 125.425012) + (xy 161.176699 125.425012) + (xy 161.180948 125.42634) + (xy 161.230069 125.427241) + (xy 161.238683 125.427999) + (xy 161.24514 125.429022) + (xy 161.245144 125.429022) + (xy 161.25 125.429791) + (xy 161.256947 125.42869) + (xy 161.267853 125.427933) + (xy 161.303383 125.428584) + (xy 161.308019 125.42732) + (xy 161.350968 125.415611) + (xy 161.398421 125.421648) + (xy 161.411601 125.431716) + (xy 162.290694 126.310809) + (xy 162.309 126.355003) + (xy 162.309 126.9375) + (xy 162.290694 126.981694) + (xy 162.2465 127) + (xy 160.444 127) + (xy 160.399806 126.981694) + (xy 160.3815 126.9375) + (xy 160.3815 125.957472) + (xy 160.387754 125.930221) + (xy 160.407205 125.890074) + (xy 160.411451 125.881311) + (xy 160.413317 125.870224) + (xy 160.431367 125.762928) + (xy 160.431767 125.760552) + (xy 160.431896 125.75) + (xy 160.414536 125.628781) + (xy 160.363852 125.517307) + (xy 160.349199 125.500302) + (xy 160.347708 125.497375) + (xy 160.3419 125.491567) + (xy 160.338746 125.48817) + (xy 160.31602 125.461796) + (xy 160.283918 125.424539) + (xy 160.263741 125.411461) + (xy 160.260155 125.408559) + (xy 160.260081 125.408661) + (xy 160.256106 125.405773) + (xy 160.252625 125.402292) + (xy 160.241343 125.396543) + (xy 160.235736 125.393309) + (xy 160.184893 125.360354) + (xy 160.18489 125.360353) + (xy 160.18116 125.357935) + (xy 160.176901 125.356661) + (xy 160.176898 125.35666) + (xy 160.154429 125.349941) + (xy 160.148839 125.348269) + (xy 160.138362 125.344072) + (xy 160.137445 125.343604) + (xy 160.121642 125.332119) + (xy 154.803263 120.01374) + (xy 154.794951 120.003448) + (xy 154.788876 119.994039) + (xy 154.788873 119.994036) + (xy 154.786071 119.989696) + (xy 154.756589 119.966454) + (xy 154.751089 119.961566) + (xy 154.747352 119.957829) + (xy 154.745252 119.956328) + (xy 154.745248 119.956325) + (xy 154.730326 119.945661) + (xy 154.727971 119.943893) + (xy 154.716439 119.934802) + (xy 154.68633 119.911066) + (xy 154.681457 119.909355) + (xy 154.677977 119.907441) + (xy 154.674359 119.905668) + (xy 154.670157 119.902666) + (xy 154.619337 119.887468) + (xy 154.61654 119.886558) + (xy 154.566498 119.868984) + (xy 154.56258 119.868645) + (xy 154.562577 119.868644) + (xy 154.56224 119.868615) + (xy 154.562234 119.868615) + (xy 154.560909 119.8685) + (xy 154.56065 119.8685) + (xy 154.556646 119.868161) + (xy 154.553421 119.867754) + (xy 154.548476 119.866275) + (xy 154.493076 119.868452) + (xy 154.490622 119.8685) + (xy 140.019499 119.8685) + (xy 140.014106 119.868267) + (xy 139.974797 119.864862) + (xy 139.974794 119.864862) + (xy 139.969654 119.864417) + (xy 139.964647 119.865661) + (xy 139.964644 119.865661) + (xy 139.960636 119.866657) + (xy 139.945569 119.8685) + (xy 125.68391 119.8685) + (xy 125.639716 119.850194) + (xy 123.320606 117.531083) + (xy 148.898001 117.531083) + (xy 148.898333 117.535614) + (xy 148.907478 117.597743) + (xy 148.910326 117.60691) + (xy 148.957556 117.703105) + (xy 148.963484 117.711387) + (xy 149.039111 117.786883) + (xy 149.047406 117.792799) + (xy 149.143687 117.839863) + (xy 149.152851 117.842695) + (xy 149.214391 117.851672) + (xy 149.218904 117.852) + (xy 149.424069 117.852) + (xy 149.432859 117.848359) + (xy 149.4365 117.839569) + (xy 149.4365 117.839568) + (xy 149.5635 117.839568) + (xy 149.567141 117.848358) + (xy 149.575931 117.851999) + (xy 149.781083 117.851999) + (xy 149.785614 117.851667) + (xy 149.847743 117.842522) + (xy 149.85691 117.839674) + (xy 149.953105 117.792444) + (xy 149.961387 117.786516) + (xy 150.036883 117.710889) + (xy 150.042799 117.702594) + (xy 150.089863 117.606313) + (xy 150.092695 117.597149) + (xy 150.101672 117.535609) + (xy 150.102 117.531096) + (xy 150.102 117.531083) + (xy 155.648001 117.531083) + (xy 155.648333 117.535614) + (xy 155.657478 117.597743) + (xy 155.660326 117.60691) + (xy 155.707556 117.703105) + (xy 155.713484 117.711387) + (xy 155.789111 117.786883) + (xy 155.797406 117.792799) + (xy 155.893687 117.839863) + (xy 155.902851 117.842695) + (xy 155.964391 117.851672) + (xy 155.968904 117.852) + (xy 156.174069 117.852) + (xy 156.182859 117.848359) + (xy 156.1865 117.839569) + (xy 156.1865 117.839568) + (xy 156.3135 117.839568) + (xy 156.317141 117.848358) + (xy 156.325931 117.851999) + (xy 156.531083 117.851999) + (xy 156.535614 117.851667) + (xy 156.597743 117.842522) + (xy 156.60691 117.839674) + (xy 156.703105 117.792444) + (xy 156.711387 117.786516) + (xy 156.786883 117.710889) + (xy 156.792799 117.702594) + (xy 156.839863 117.606313) + (xy 156.842695 117.597149) + (xy 156.851672 117.535609) + (xy 156.852 117.531096) + (xy 156.852 117.531083) + (xy 163.648001 117.531083) + (xy 163.648333 117.535614) + (xy 163.657478 117.597743) + (xy 163.660326 117.60691) + (xy 163.707556 117.703105) + (xy 163.713484 117.711387) + (xy 163.789111 117.786883) + (xy 163.797406 117.792799) + (xy 163.893687 117.839863) + (xy 163.902851 117.842695) + (xy 163.964391 117.851672) + (xy 163.968904 117.852) + (xy 164.174069 117.852) + (xy 164.182859 117.848359) + (xy 164.1865 117.839569) + (xy 164.1865 117.839568) + (xy 164.3135 117.839568) + (xy 164.317141 117.848358) + (xy 164.325931 117.851999) + (xy 164.531083 117.851999) + (xy 164.535614 117.851667) + (xy 164.597743 117.842522) + (xy 164.60691 117.839674) + (xy 164.703105 117.792444) + (xy 164.711387 117.786516) + (xy 164.786883 117.710889) + (xy 164.792799 117.702594) + (xy 164.839863 117.606313) + (xy 164.842695 117.597149) + (xy 164.851672 117.535609) + (xy 164.852 117.531096) + (xy 164.852 117.531083) + (xy 166.398001 117.531083) + (xy 166.398333 117.535614) + (xy 166.407478 117.597743) + (xy 166.410326 117.60691) + (xy 166.457556 117.703105) + (xy 166.463484 117.711387) + (xy 166.539111 117.786883) + (xy 166.547406 117.792799) + (xy 166.643687 117.839863) + (xy 166.652851 117.842695) + (xy 166.714391 117.851672) + (xy 166.718904 117.852) + (xy 166.924069 117.852) + (xy 166.932859 117.848359) + (xy 166.9365 117.839569) + (xy 166.9365 117.839568) + (xy 167.0635 117.839568) + (xy 167.067141 117.848358) + (xy 167.075931 117.851999) + (xy 167.281083 117.851999) + (xy 167.285614 117.851667) + (xy 167.347743 117.842522) + (xy 167.35691 117.839674) + (xy 167.453105 117.792444) + (xy 167.461387 117.786516) + (xy 167.536883 117.710889) + (xy 167.542799 117.702594) + (xy 167.589863 117.606313) + (xy 167.592695 117.597149) + (xy 167.601672 117.535609) + (xy 167.602 117.531096) + (xy 167.602 117.350931) + (xy 167.598359 117.342141) + (xy 167.589569 117.3385) + (xy 167.075931 117.3385) + (xy 167.067141 117.342141) + (xy 167.0635 117.350931) + (xy 167.0635 117.839568) + (xy 166.9365 117.839568) + (xy 166.9365 117.350931) + (xy 166.932859 117.342141) + (xy 166.924069 117.3385) + (xy 166.410432 117.3385) + (xy 166.401642 117.342141) + (xy 166.398001 117.350931) + (xy 166.398001 117.531083) + (xy 164.852 117.531083) + (xy 164.852 117.350931) + (xy 164.848359 117.342141) + (xy 164.839569 117.3385) + (xy 164.325931 117.3385) + (xy 164.317141 117.342141) + (xy 164.3135 117.350931) + (xy 164.3135 117.839568) + (xy 164.1865 117.839568) + (xy 164.1865 117.350931) + (xy 164.182859 117.342141) + (xy 164.174069 117.3385) + (xy 163.660432 117.3385) + (xy 163.651642 117.342141) + (xy 163.648001 117.350931) + (xy 163.648001 117.531083) + (xy 156.852 117.531083) + (xy 156.852 117.350931) + (xy 156.848359 117.342141) + (xy 156.839569 117.3385) + (xy 156.325931 117.3385) + (xy 156.317141 117.342141) + (xy 156.3135 117.350931) + (xy 156.3135 117.839568) + (xy 156.1865 117.839568) + (xy 156.1865 117.350931) + (xy 156.182859 117.342141) + (xy 156.174069 117.3385) + (xy 155.660432 117.3385) + (xy 155.651642 117.342141) + (xy 155.648001 117.350931) + (xy 155.648001 117.531083) + (xy 150.102 117.531083) + (xy 150.102 117.350931) + (xy 150.098359 117.342141) + (xy 150.089569 117.3385) + (xy 149.575931 117.3385) + (xy 149.567141 117.342141) + (xy 149.5635 117.350931) + (xy 149.5635 117.839568) + (xy 149.4365 117.839568) + (xy 149.4365 117.350931) + (xy 149.432859 117.342141) + (xy 149.424069 117.3385) + (xy 148.910432 117.3385) + (xy 148.901642 117.342141) + (xy 148.898001 117.350931) + (xy 148.898001 117.531083) + (xy 123.320606 117.531083) + (xy 122.988592 117.199069) + (xy 148.898 117.199069) + (xy 148.901641 117.207859) + (xy 148.910431 117.2115) + (xy 149.424069 117.2115) + (xy 149.432859 117.207859) + (xy 149.4365 117.199069) + (xy 149.5635 117.199069) + (xy 149.567141 117.207859) + (xy 149.575931 117.2115) + (xy 150.089568 117.2115) + (xy 150.098358 117.207859) + (xy 150.101999 117.199069) + (xy 155.648 117.199069) + (xy 155.651641 117.207859) + (xy 155.660431 117.2115) + (xy 156.174069 117.2115) + (xy 156.182859 117.207859) + (xy 156.1865 117.199069) + (xy 156.3135 117.199069) + (xy 156.317141 117.207859) + (xy 156.325931 117.2115) + (xy 156.839568 117.2115) + (xy 156.848358 117.207859) + (xy 156.851999 117.199069) + (xy 163.648 117.199069) + (xy 163.651641 117.207859) + (xy 163.660431 117.2115) + (xy 164.174069 117.2115) + (xy 164.182859 117.207859) + (xy 164.1865 117.199069) + (xy 164.3135 117.199069) + (xy 164.317141 117.207859) + (xy 164.325931 117.2115) + (xy 164.839568 117.2115) + (xy 164.848358 117.207859) + (xy 164.851999 117.199069) + (xy 166.398 117.199069) + (xy 166.401641 117.207859) + (xy 166.410431 117.2115) + (xy 166.924069 117.2115) + (xy 166.932859 117.207859) + (xy 166.9365 117.199069) + (xy 167.0635 117.199069) + (xy 167.067141 117.207859) + (xy 167.075931 117.2115) + (xy 167.589568 117.2115) + (xy 167.598358 117.207859) + (xy 167.601999 117.199069) + (xy 167.601999 117.018917) + (xy 167.601667 117.014386) + (xy 167.592522 116.952257) + (xy 167.589674 116.94309) + (xy 167.542444 116.846895) + (xy 167.536516 116.838613) + (xy 167.460889 116.763117) + (xy 167.452594 116.757201) + (xy 167.356313 116.710137) + (xy 167.347149 116.707305) + (xy 167.285609 116.698328) + (xy 167.281096 116.698) + (xy 167.075931 116.698) + (xy 167.067141 116.701641) + (xy 167.0635 116.710431) + (xy 167.0635 117.199069) + (xy 166.9365 117.199069) + (xy 166.9365 116.710432) + (xy 166.932859 116.701642) + (xy 166.924069 116.698001) + (xy 166.718917 116.698001) + (xy 166.714386 116.698333) + (xy 166.652257 116.707478) + (xy 166.64309 116.710326) + (xy 166.546895 116.757556) + (xy 166.538613 116.763484) + (xy 166.463117 116.839111) + (xy 166.457201 116.847406) + (xy 166.410137 116.943687) + (xy 166.407305 116.952851) + (xy 166.398328 117.014391) + (xy 166.398 117.018904) + (xy 166.398 117.199069) + (xy 164.851999 117.199069) + (xy 164.851999 117.018917) + (xy 164.851667 117.014386) + (xy 164.842522 116.952257) + (xy 164.839674 116.94309) + (xy 164.792444 116.846895) + (xy 164.786516 116.838613) + (xy 164.710889 116.763117) + (xy 164.702594 116.757201) + (xy 164.606313 116.710137) + (xy 164.597149 116.707305) + (xy 164.535609 116.698328) + (xy 164.531096 116.698) + (xy 164.325931 116.698) + (xy 164.317141 116.701641) + (xy 164.3135 116.710431) + (xy 164.3135 117.199069) + (xy 164.1865 117.199069) + (xy 164.1865 116.710432) + (xy 164.182859 116.701642) + (xy 164.174069 116.698001) + (xy 163.968917 116.698001) + (xy 163.964386 116.698333) + (xy 163.902257 116.707478) + (xy 163.89309 116.710326) + (xy 163.796895 116.757556) + (xy 163.788613 116.763484) + (xy 163.713117 116.839111) + (xy 163.707201 116.847406) + (xy 163.660137 116.943687) + (xy 163.657305 116.952851) + (xy 163.648328 117.014391) + (xy 163.648 117.018904) + (xy 163.648 117.199069) + (xy 156.851999 117.199069) + (xy 156.851999 117.018917) + (xy 156.851667 117.014386) + (xy 156.842522 116.952257) + (xy 156.839674 116.94309) + (xy 156.792444 116.846895) + (xy 156.786516 116.838613) + (xy 156.710889 116.763117) + (xy 156.702594 116.757201) + (xy 156.606313 116.710137) + (xy 156.597149 116.707305) + (xy 156.535609 116.698328) + (xy 156.531096 116.698) + (xy 156.325931 116.698) + (xy 156.317141 116.701641) + (xy 156.3135 116.710431) + (xy 156.3135 117.199069) + (xy 156.1865 117.199069) + (xy 156.1865 116.710432) + (xy 156.182859 116.701642) + (xy 156.174069 116.698001) + (xy 155.968917 116.698001) + (xy 155.964386 116.698333) + (xy 155.902257 116.707478) + (xy 155.89309 116.710326) + (xy 155.796895 116.757556) + (xy 155.788613 116.763484) + (xy 155.713117 116.839111) + (xy 155.707201 116.847406) + (xy 155.660137 116.943687) + (xy 155.657305 116.952851) + (xy 155.648328 117.014391) + (xy 155.648 117.018904) + (xy 155.648 117.199069) + (xy 150.101999 117.199069) + (xy 150.101999 117.018917) + (xy 150.101667 117.014386) + (xy 150.092522 116.952257) + (xy 150.089674 116.94309) + (xy 150.042444 116.846895) + (xy 150.036516 116.838613) + (xy 149.960889 116.763117) + (xy 149.952594 116.757201) + (xy 149.856313 116.710137) + (xy 149.847149 116.707305) + (xy 149.785609 116.698328) + (xy 149.781096 116.698) + (xy 149.575931 116.698) + (xy 149.567141 116.701641) + (xy 149.5635 116.710431) + (xy 149.5635 117.199069) + (xy 149.4365 117.199069) + (xy 149.4365 116.710432) + (xy 149.432859 116.701642) + (xy 149.424069 116.698001) + (xy 149.218917 116.698001) + (xy 149.214386 116.698333) + (xy 149.152257 116.707478) + (xy 149.14309 116.710326) + (xy 149.046895 116.757556) + (xy 149.038613 116.763484) + (xy 148.963117 116.839111) + (xy 148.957201 116.847406) + (xy 148.910137 116.943687) + (xy 148.907305 116.952851) + (xy 148.898328 117.014391) + (xy 148.898 117.018904) + (xy 148.898 117.199069) + (xy 122.988592 117.199069) + (xy 121.419406 115.629883) + (xy 121.406705 115.611558) + (xy 121.398649 115.59384) + (xy 121.363852 115.517307) + (xy 121.349199 115.500302) + (xy 121.347708 115.497375) + (xy 121.3419 115.491567) + (xy 121.338746 115.48817) + (xy 121.286826 115.427914) + (xy 121.283918 115.424539) + (xy 121.263741 115.411461) + (xy 121.260155 115.408559) + (xy 121.260081 115.408661) + (xy 121.256106 115.405773) + (xy 121.252625 115.402292) + (xy 121.241343 115.396543) + (xy 121.235736 115.393309) + (xy 121.184893 115.360354) + (xy 121.18489 115.360353) + (xy 121.18116 115.357935) + (xy 121.176901 115.356661) + (xy 121.176898 115.35666) + (xy 121.158345 115.351112) + (xy 121.148839 115.348269) + (xy 121.138377 115.344079) + (xy 121.132813 115.341244) + (xy 121.121067 115.339384) + (xy 121.112951 115.337536) + (xy 121.063838 115.322848) + (xy 121.019496 115.322577) + (xy 121.010103 115.321809) + (xy 121.004857 115.320978) + (xy 121.004856 115.320978) + (xy 121 115.320209) + (xy 120.991373 115.321576) + (xy 120.98122 115.322344) + (xy 120.962836 115.322231) + (xy 120.945838 115.322127) + (xy 120.945836 115.322127) + (xy 120.941385 115.3221) + (xy 120.887011 115.337641) + (xy 120.879623 115.339275) + (xy 120.867187 115.341244) + (xy 120.862804 115.343477) + (xy 120.86187 115.343781) + (xy 120.852156 115.347603) + (xy 120.849821 115.34827) + (xy 120.827929 115.354526) + (xy 120.827927 115.354527) + (xy 120.823644 115.355751) + (xy 120.764119 115.393309) + (xy 120.762819 115.394129) + (xy 120.757842 115.396959) + (xy 120.751757 115.400059) + (xy 120.751756 115.40006) + (xy 120.747375 115.402292) + (xy 120.743897 115.40577) + (xy 120.742445 115.406825) + (xy 120.739058 115.40912) + (xy 120.72008 115.421095) + (xy 120.717137 115.424427) + (xy 120.717135 115.424429) + (xy 120.657156 115.492342) + (xy 120.656032 115.493538) + (xy 120.655775 115.493892) + (xy 120.655554 115.494113) + (xy 120.655405 115.494204) + (xy 120.654504 115.495163) + (xy 120.652292 115.497375) + (xy 120.651509 115.496592) + (xy 120.650362 115.497296) + (xy 120.651721 115.498496) + (xy 120.639018 115.512879) + (xy 120.637127 115.516907) + (xy 120.588868 115.619695) + (xy 120.588867 115.619698) + (xy 120.586976 115.623726) + (xy 120.568136 115.744724) + (xy 120.568713 115.749137) + (xy 120.568713 115.749138) + (xy 120.578237 115.821968) + (xy 120.584014 115.866145) + (xy 120.591185 115.882443) + (xy 120.591244 115.882813) + (xy 120.592007 115.884311) + (xy 120.594031 115.88891) + (xy 120.594031 115.888911) + (xy 120.611681 115.929022) + (xy 120.633333 115.97823) + (xy 120.636197 115.981637) + (xy 120.648029 115.995713) + (xy 120.650157 115.998434) + (xy 120.652292 116.002625) + (xy 120.660081 116.010414) + (xy 120.66373 116.014392) + (xy 120.707289 116.066212) + (xy 120.712127 116.071968) + (xy 120.735399 116.087459) + (xy 120.741836 116.092733) + (xy 120.743899 116.094232) + (xy 120.747375 116.097708) + (xy 120.751753 116.099939) + (xy 120.751756 116.099941) + (xy 120.75873 116.103494) + (xy 120.764977 116.107148) + (xy 120.814064 116.139823) + (xy 120.818313 116.141151) + (xy 120.818314 116.141151) + (xy 120.850296 116.151143) + (xy 120.860024 116.155107) + (xy 120.862535 116.156386) + (xy 120.878362 116.167884) + (xy 125.196737 120.48626) + (xy 125.205049 120.496552) + (xy 125.211124 120.505961) + (xy 125.211127 120.505964) + (xy 125.213929 120.510304) + (xy 125.217987 120.513503) + (xy 125.243411 120.533546) + (xy 125.248911 120.538434) + (xy 125.252648 120.542171) + (xy 125.254748 120.543672) + (xy 125.254752 120.543675) + (xy 125.269674 120.554339) + (xy 125.272029 120.556107) + (xy 125.31367 120.588934) + (xy 125.318543 120.590645) + (xy 125.322023 120.592559) + (xy 125.325641 120.594332) + (xy 125.329843 120.597334) + (xy 125.334787 120.598813) + (xy 125.334788 120.598813) + (xy 125.380659 120.612531) + (xy 125.383456 120.613441) + (xy 125.433502 120.631016) + (xy 125.43742 120.631355) + (xy 125.437423 120.631356) + (xy 125.43776 120.631385) + (xy 125.437766 120.631385) + (xy 125.439091 120.6315) + (xy 125.43935 120.6315) + (xy 125.443354 120.631839) + (xy 125.446579 120.632246) + (xy 125.451524 120.633725) + (xy 125.506925 120.631548) + (xy 125.509378 120.6315) + (xy 139.556 120.6315) + (xy 139.600194 120.649806) + (xy 139.6185 120.694) + (xy 139.6185 125.542639) + (xy 139.612575 125.5692) + (xy 139.588869 125.619692) + (xy 139.588867 125.619698) + (xy 139.586976 125.623726) + (xy 139.568136 125.744724) + (xy 139.568713 125.749137) + (xy 139.568713 125.749138) + (xy 139.583436 125.861726) + (xy 139.584014 125.866145) + (xy 139.591185 125.882443) + (xy 139.591244 125.882813) + (xy 139.592007 125.884311) + (xy 139.594031 125.88891) + (xy 139.594031 125.888911) + (xy 139.613207 125.932491) + (xy 139.6185 125.957663) + (xy 139.6185 126.9375) + (xy 139.600194 126.981694) + (xy 139.556 127) + (xy 137.7535 127) + (xy 137.709306 126.981694) + (xy 137.691 126.9375) + (xy 137.691 126.355003) + (xy 137.709306 126.310809) + (xy 138.587788 125.432327) + (xy 138.631982 125.414021) + (xy 138.65062 125.416865) + (xy 138.676696 125.425012) + (xy 138.676699 125.425012) + (xy 138.680948 125.42634) + (xy 138.730069 125.427241) + (xy 138.738683 125.427999) + (xy 138.74514 125.429022) + (xy 138.745144 125.429022) + (xy 138.75 125.429791) + (xy 138.756947 125.42869) + (xy 138.767853 125.427933) + (xy 138.803383 125.428584) + (xy 138.863532 125.412185) + (xy 138.87019 125.410755) + (xy 138.872147 125.410445) + (xy 138.882813 125.408756) + (xy 138.887196 125.406522) + (xy 138.891875 125.405002) + (xy 138.891878 125.40501) + (xy 138.896727 125.403136) + (xy 138.921527 125.396375) + (xy 138.926521 125.393309) + (xy 138.989709 125.354511) + (xy 138.994037 125.352085) + (xy 138.99824 125.349944) + (xy 138.998248 125.349938) + (xy 139.002625 125.347708) + (xy 139.005427 125.344906) + (xy 139.006264 125.344346) + (xy 139.025881 125.332301) + (xy 139.108058 125.241513) + (xy 139.161451 125.131311) + (xy 139.163317 125.120224) + (xy 139.181367 125.012928) + (xy 139.181367 125.012927) + (xy 139.181767 125.010552) + (xy 139.181896 125) + (xy 139.164536 124.878781) + (xy 139.113852 124.767307) + (xy 139.099199 124.750302) + (xy 139.097708 124.747375) + (xy 139.0919 124.741567) + (xy 139.088746 124.73817) + (xy 139.036826 124.677914) + (xy 139.033918 124.674539) + (xy 139.013741 124.661461) + (xy 139.010155 124.658559) + (xy 139.010081 124.658661) + (xy 139.006106 124.655773) + (xy 139.002625 124.652292) + (xy 138.991343 124.646543) + (xy 138.985736 124.643309) + (xy 138.934893 124.610354) + (xy 138.93489 124.610353) + (xy 138.93116 124.607935) + (xy 138.926901 124.606661) + (xy 138.926898 124.60666) + (xy 138.908345 124.601112) + (xy 138.898839 124.598269) + (xy 138.888377 124.594079) + (xy 138.882813 124.591244) + (xy 138.871067 124.589384) + (xy 138.862951 124.587536) + (xy 138.813838 124.572848) + (xy 138.769496 124.572577) + (xy 138.760103 124.571809) + (xy 138.754857 124.570978) + (xy 138.754856 124.570978) + (xy 138.75 124.570209) + (xy 138.741373 124.571576) + (xy 138.73122 124.572344) + (xy 138.712836 124.572231) + (xy 138.695838 124.572127) + (xy 138.695836 124.572127) + (xy 138.691385 124.5721) + (xy 138.637011 124.587641) + (xy 138.629623 124.589275) + (xy 138.617187 124.591244) + (xy 138.612804 124.593477) + (xy 138.61187 124.593781) + (xy 138.602155 124.597603) + (xy 138.577929 124.604526) + (xy 138.577927 124.604527) + (xy 138.573644 124.605751) + (xy 138.514119 124.643309) + (xy 138.512819 124.644129) + (xy 138.507842 124.646959) + (xy 138.501757 124.650059) + (xy 138.501756 124.65006) + (xy 138.497375 124.652292) + (xy 138.493897 124.65577) + (xy 138.492445 124.656825) + (xy 138.489058 124.65912) + (xy 138.47008 124.671095) + (xy 138.467137 124.674427) + (xy 138.467135 124.674429) + (xy 138.407156 124.742342) + (xy 138.406032 124.743538) + (xy 138.405775 124.743892) + (xy 138.405554 124.744113) + (xy 138.405405 124.744204) + (xy 138.404504 124.745163) + (xy 138.402292 124.747375) + (xy 138.401509 124.746592) + (xy 138.400362 124.747296) + (xy 138.401721 124.748496) + (xy 138.389018 124.762879) + (xy 138.387127 124.766907) + (xy 138.338868 124.869695) + (xy 138.338867 124.869698) + (xy 138.336976 124.873726) + (xy 138.318136 124.994724) + (xy 138.318713 124.999137) + (xy 138.318713 124.999138) + (xy 138.323366 125.034716) + (xy 138.333437 125.111726) + (xy 138.33346 125.111905) + (xy 138.32104 125.158099) + (xy 138.315682 125.164203) + (xy 137.395513 126.084372) + (xy 137.389439 126.088677) + (xy 137.389895 126.08925) + (xy 137.384387 126.093631) + (xy 137.378042 126.096678) + (xy 137.373646 126.102175) + (xy 137.359582 126.119761) + (xy 137.354965 126.12492) + (xy 137.349716 126.130169) + (xy 137.345943 126.136172) + (xy 137.341838 126.141948) + (xy 137.323617 126.164733) + (xy 137.32204 126.171593) + (xy 137.320222 126.175353) + (xy 137.318844 126.179289) + (xy 137.315098 126.185248) + (xy 137.314307 126.192242) + (xy 137.314307 126.192243) + (xy 137.311821 126.214236) + (xy 137.310629 126.221213) + (xy 137.309 126.228297) + (xy 137.309 126.235671) + (xy 137.308604 126.242692) + (xy 137.305309 126.271838) + (xy 137.30763 126.278483) + (xy 137.308414 126.285477) + (xy 137.307736 126.285553) + (xy 137.309 126.293005) + (xy 137.309 126.9375) + (xy 137.290694 126.981694) + (xy 137.2465 127) + (xy 135.2535 127) + (xy 135.209306 126.981694) + (xy 135.191 126.9375) + (xy 135.191 126.355003) + (xy 135.209306 126.310809) + (xy 136.087788 125.432327) + (xy 136.131982 125.414021) + (xy 136.15062 125.416865) + (xy 136.176696 125.425012) + (xy 136.176699 125.425012) + (xy 136.180948 125.42634) + (xy 136.230069 125.427241) + (xy 136.238683 125.427999) + (xy 136.24514 125.429022) + (xy 136.245144 125.429022) + (xy 136.25 125.429791) + (xy 136.256947 125.42869) + (xy 136.267853 125.427933) + (xy 136.303383 125.428584) + (xy 136.363532 125.412185) + (xy 136.37019 125.410755) + (xy 136.372147 125.410445) + (xy 136.382813 125.408756) + (xy 136.387196 125.406522) + (xy 136.391875 125.405002) + (xy 136.391878 125.40501) + (xy 136.396727 125.403136) + (xy 136.421527 125.396375) + (xy 136.426521 125.393309) + (xy 136.489709 125.354511) + (xy 136.494037 125.352085) + (xy 136.49824 125.349944) + (xy 136.498248 125.349938) + (xy 136.502625 125.347708) + (xy 136.505427 125.344906) + (xy 136.506264 125.344346) + (xy 136.525881 125.332301) + (xy 136.608058 125.241513) + (xy 136.661451 125.131311) + (xy 136.663317 125.120224) + (xy 136.681367 125.012928) + (xy 136.681367 125.012927) + (xy 136.681767 125.010552) + (xy 136.681896 125) + (xy 136.664536 124.878781) + (xy 136.613852 124.767307) + (xy 136.599199 124.750302) + (xy 136.597708 124.747375) + (xy 136.5919 124.741567) + (xy 136.588746 124.73817) + (xy 136.536826 124.677914) + (xy 136.533918 124.674539) + (xy 136.513741 124.661461) + (xy 136.510155 124.658559) + (xy 136.510081 124.658661) + (xy 136.506106 124.655773) + (xy 136.502625 124.652292) + (xy 136.491343 124.646543) + (xy 136.485736 124.643309) + (xy 136.434893 124.610354) + (xy 136.43489 124.610353) + (xy 136.43116 124.607935) + (xy 136.426901 124.606661) + (xy 136.426898 124.60666) + (xy 136.408345 124.601112) + (xy 136.398839 124.598269) + (xy 136.388377 124.594079) + (xy 136.382813 124.591244) + (xy 136.371067 124.589384) + (xy 136.362951 124.587536) + (xy 136.313838 124.572848) + (xy 136.269496 124.572577) + (xy 136.260103 124.571809) + (xy 136.254857 124.570978) + (xy 136.254856 124.570978) + (xy 136.25 124.570209) + (xy 136.241373 124.571576) + (xy 136.23122 124.572344) + (xy 136.212836 124.572231) + (xy 136.195838 124.572127) + (xy 136.195836 124.572127) + (xy 136.191385 124.5721) + (xy 136.137011 124.587641) + (xy 136.129623 124.589275) + (xy 136.117187 124.591244) + (xy 136.112804 124.593477) + (xy 136.11187 124.593781) + (xy 136.102155 124.597603) + (xy 136.077929 124.604526) + (xy 136.077927 124.604527) + (xy 136.073644 124.605751) + (xy 136.014119 124.643309) + (xy 136.012819 124.644129) + (xy 136.007842 124.646959) + (xy 136.001757 124.650059) + (xy 136.001756 124.65006) + (xy 135.997375 124.652292) + (xy 135.993897 124.65577) + (xy 135.992445 124.656825) + (xy 135.989058 124.65912) + (xy 135.97008 124.671095) + (xy 135.967137 124.674427) + (xy 135.967135 124.674429) + (xy 135.907156 124.742342) + (xy 135.906032 124.743538) + (xy 135.905775 124.743892) + (xy 135.905554 124.744113) + (xy 135.905405 124.744204) + (xy 135.904504 124.745163) + (xy 135.902292 124.747375) + (xy 135.901509 124.746592) + (xy 135.900362 124.747296) + (xy 135.901721 124.748496) + (xy 135.889018 124.762879) + (xy 135.887127 124.766907) + (xy 135.838868 124.869695) + (xy 135.838867 124.869698) + (xy 135.836976 124.873726) + (xy 135.818136 124.994724) + (xy 135.818713 124.999137) + (xy 135.818713 124.999138) + (xy 135.823366 125.034716) + (xy 135.833437 125.111726) + (xy 135.83346 125.111905) + (xy 135.82104 125.158099) + (xy 135.815682 125.164203) + (xy 134.895513 126.084372) + (xy 134.889439 126.088677) + (xy 134.889895 126.08925) + (xy 134.884387 126.093631) + (xy 134.878042 126.096678) + (xy 134.873646 126.102175) + (xy 134.859582 126.119761) + (xy 134.854965 126.12492) + (xy 134.849716 126.130169) + (xy 134.845943 126.136172) + (xy 134.841838 126.141948) + (xy 134.823617 126.164733) + (xy 134.82204 126.171593) + (xy 134.820222 126.175353) + (xy 134.818844 126.179289) + (xy 134.815098 126.185248) + (xy 134.814307 126.192242) + (xy 134.814307 126.192243) + (xy 134.811821 126.214236) + (xy 134.810629 126.221213) + (xy 134.809 126.228297) + (xy 134.809 126.235671) + (xy 134.808604 126.242692) + (xy 134.805309 126.271838) + (xy 134.80763 126.278483) + (xy 134.808414 126.285477) + (xy 134.807736 126.285553) + (xy 134.809 126.293005) + (xy 134.809 126.9375) + (xy 134.790694 126.981694) + (xy 134.7465 127) + (xy 132.7535 127) + (xy 132.709306 126.981694) + (xy 132.691 126.9375) + (xy 132.691 126.355003) + (xy 132.709306 126.310809) + (xy 133.587788 125.432327) + (xy 133.631982 125.414021) + (xy 133.65062 125.416865) + (xy 133.676696 125.425012) + (xy 133.676699 125.425012) + (xy 133.680948 125.42634) + (xy 133.730069 125.427241) + (xy 133.738683 125.427999) + (xy 133.74514 125.429022) + (xy 133.745144 125.429022) + (xy 133.75 125.429791) + (xy 133.756947 125.42869) + (xy 133.767853 125.427933) + (xy 133.803383 125.428584) + (xy 133.863532 125.412185) + (xy 133.87019 125.410755) + (xy 133.872147 125.410445) + (xy 133.882813 125.408756) + (xy 133.887196 125.406522) + (xy 133.891875 125.405002) + (xy 133.891878 125.40501) + (xy 133.896727 125.403136) + (xy 133.921527 125.396375) + (xy 133.926521 125.393309) + (xy 133.989709 125.354511) + (xy 133.994037 125.352085) + (xy 133.99824 125.349944) + (xy 133.998248 125.349938) + (xy 134.002625 125.347708) + (xy 134.005427 125.344906) + (xy 134.006264 125.344346) + (xy 134.025881 125.332301) + (xy 134.108058 125.241513) + (xy 134.161451 125.131311) + (xy 134.163317 125.120224) + (xy 134.181367 125.012928) + (xy 134.181367 125.012927) + (xy 134.181767 125.010552) + (xy 134.181896 125) + (xy 134.164536 124.878781) + (xy 134.113852 124.767307) + (xy 134.099199 124.750302) + (xy 134.097708 124.747375) + (xy 134.0919 124.741567) + (xy 134.088746 124.73817) + (xy 134.036826 124.677914) + (xy 134.033918 124.674539) + (xy 134.013741 124.661461) + (xy 134.010155 124.658559) + (xy 134.010081 124.658661) + (xy 134.006106 124.655773) + (xy 134.002625 124.652292) + (xy 133.991343 124.646543) + (xy 133.985736 124.643309) + (xy 133.934893 124.610354) + (xy 133.93489 124.610353) + (xy 133.93116 124.607935) + (xy 133.926901 124.606661) + (xy 133.926898 124.60666) + (xy 133.908345 124.601112) + (xy 133.898839 124.598269) + (xy 133.888377 124.594079) + (xy 133.882813 124.591244) + (xy 133.871067 124.589384) + (xy 133.862951 124.587536) + (xy 133.813838 124.572848) + (xy 133.769496 124.572577) + (xy 133.760103 124.571809) + (xy 133.754857 124.570978) + (xy 133.754856 124.570978) + (xy 133.75 124.570209) + (xy 133.741373 124.571576) + (xy 133.73122 124.572344) + (xy 133.712836 124.572231) + (xy 133.695838 124.572127) + (xy 133.695836 124.572127) + (xy 133.691385 124.5721) + (xy 133.637011 124.587641) + (xy 133.629623 124.589275) + (xy 133.617187 124.591244) + (xy 133.612804 124.593477) + (xy 133.61187 124.593781) + (xy 133.602155 124.597603) + (xy 133.577929 124.604526) + (xy 133.577927 124.604527) + (xy 133.573644 124.605751) + (xy 133.514119 124.643309) + (xy 133.512819 124.644129) + (xy 133.507842 124.646959) + (xy 133.501757 124.650059) + (xy 133.501756 124.65006) + (xy 133.497375 124.652292) + (xy 133.493897 124.65577) + (xy 133.492445 124.656825) + (xy 133.489058 124.65912) + (xy 133.47008 124.671095) + (xy 133.467137 124.674427) + (xy 133.467135 124.674429) + (xy 133.407156 124.742342) + (xy 133.406032 124.743538) + (xy 133.405775 124.743892) + (xy 133.405554 124.744113) + (xy 133.405405 124.744204) + (xy 133.404504 124.745163) + (xy 133.402292 124.747375) + (xy 133.401509 124.746592) + (xy 133.400362 124.747296) + (xy 133.401721 124.748496) + (xy 133.389018 124.762879) + (xy 133.387127 124.766907) + (xy 133.338868 124.869695) + (xy 133.338867 124.869698) + (xy 133.336976 124.873726) + (xy 133.318136 124.994724) + (xy 133.318713 124.999137) + (xy 133.318713 124.999138) + (xy 133.323366 125.034716) + (xy 133.333437 125.111726) + (xy 133.33346 125.111905) + (xy 133.32104 125.158099) + (xy 133.315682 125.164203) + (xy 132.395513 126.084372) + (xy 132.389439 126.088677) + (xy 132.389895 126.08925) + (xy 132.384387 126.093631) + (xy 132.378042 126.096678) + (xy 132.373646 126.102175) + (xy 132.359582 126.119761) + (xy 132.354965 126.12492) + (xy 132.349716 126.130169) + (xy 132.345943 126.136172) + (xy 132.341838 126.141948) + (xy 132.323617 126.164733) + (xy 132.32204 126.171593) + (xy 132.320222 126.175353) + (xy 132.318844 126.179289) + (xy 132.315098 126.185248) + (xy 132.314307 126.192242) + (xy 132.314307 126.192243) + (xy 132.311821 126.214236) + (xy 132.310629 126.221213) + (xy 132.309 126.228297) + (xy 132.309 126.235671) + (xy 132.308604 126.242692) + (xy 132.305309 126.271838) + (xy 132.30763 126.278483) + (xy 132.308414 126.285477) + (xy 132.307736 126.285553) + (xy 132.309 126.293005) + (xy 132.309 126.9375) + (xy 132.290694 126.981694) + (xy 132.2465 127) + (xy 130.2535 127) + (xy 130.209306 126.981694) + (xy 130.191 126.9375) + (xy 130.191 126.355003) + (xy 130.209306 126.310809) + (xy 131.087788 125.432327) + (xy 131.131982 125.414021) + (xy 131.15062 125.416865) + (xy 131.176696 125.425012) + (xy 131.176699 125.425012) + (xy 131.180948 125.42634) + (xy 131.230069 125.427241) + (xy 131.238683 125.427999) + (xy 131.24514 125.429022) + (xy 131.245144 125.429022) + (xy 131.25 125.429791) + (xy 131.256947 125.42869) + (xy 131.267853 125.427933) + (xy 131.303383 125.428584) + (xy 131.363532 125.412185) + (xy 131.37019 125.410755) + (xy 131.372147 125.410445) + (xy 131.382813 125.408756) + (xy 131.387196 125.406522) + (xy 131.391875 125.405002) + (xy 131.391878 125.40501) + (xy 131.396727 125.403136) + (xy 131.421527 125.396375) + (xy 131.426521 125.393309) + (xy 131.489709 125.354511) + (xy 131.494037 125.352085) + (xy 131.49824 125.349944) + (xy 131.498248 125.349938) + (xy 131.502625 125.347708) + (xy 131.505427 125.344906) + (xy 131.506264 125.344346) + (xy 131.525881 125.332301) + (xy 131.608058 125.241513) + (xy 131.661451 125.131311) + (xy 131.663317 125.120224) + (xy 131.681367 125.012928) + (xy 131.681367 125.012927) + (xy 131.681767 125.010552) + (xy 131.681896 125) + (xy 131.664536 124.878781) + (xy 131.613852 124.767307) + (xy 131.599199 124.750302) + (xy 131.597708 124.747375) + (xy 131.5919 124.741567) + (xy 131.588746 124.73817) + (xy 131.536826 124.677914) + (xy 131.533918 124.674539) + (xy 131.513741 124.661461) + (xy 131.510155 124.658559) + (xy 131.510081 124.658661) + (xy 131.506106 124.655773) + (xy 131.502625 124.652292) + (xy 131.491343 124.646543) + (xy 131.485736 124.643309) + (xy 131.434893 124.610354) + (xy 131.43489 124.610353) + (xy 131.43116 124.607935) + (xy 131.426901 124.606661) + (xy 131.426898 124.60666) + (xy 131.408345 124.601112) + (xy 131.398839 124.598269) + (xy 131.388377 124.594079) + (xy 131.382813 124.591244) + (xy 131.371067 124.589384) + (xy 131.362951 124.587536) + (xy 131.313838 124.572848) + (xy 131.269496 124.572577) + (xy 131.260103 124.571809) + (xy 131.254857 124.570978) + (xy 131.254856 124.570978) + (xy 131.25 124.570209) + (xy 131.241373 124.571576) + (xy 131.23122 124.572344) + (xy 131.212836 124.572231) + (xy 131.195838 124.572127) + (xy 131.195836 124.572127) + (xy 131.191385 124.5721) + (xy 131.137011 124.587641) + (xy 131.129623 124.589275) + (xy 131.117187 124.591244) + (xy 131.112804 124.593477) + (xy 131.11187 124.593781) + (xy 131.102155 124.597603) + (xy 131.077929 124.604526) + (xy 131.077927 124.604527) + (xy 131.073644 124.605751) + (xy 131.014119 124.643309) + (xy 131.012819 124.644129) + (xy 131.007842 124.646959) + (xy 131.001757 124.650059) + (xy 131.001756 124.65006) + (xy 130.997375 124.652292) + (xy 130.993897 124.65577) + (xy 130.992445 124.656825) + (xy 130.989058 124.65912) + (xy 130.97008 124.671095) + (xy 130.967137 124.674427) + (xy 130.967135 124.674429) + (xy 130.907156 124.742342) + (xy 130.906032 124.743538) + (xy 130.905775 124.743892) + (xy 130.905554 124.744113) + (xy 130.905405 124.744204) + (xy 130.904504 124.745163) + (xy 130.902292 124.747375) + (xy 130.901509 124.746592) + (xy 130.900362 124.747296) + (xy 130.901721 124.748496) + (xy 130.889018 124.762879) + (xy 130.887127 124.766907) + (xy 130.838868 124.869695) + (xy 130.838867 124.869698) + (xy 130.836976 124.873726) + (xy 130.818136 124.994724) + (xy 130.818713 124.999137) + (xy 130.818713 124.999138) + (xy 130.823366 125.034716) + (xy 130.833437 125.111726) + (xy 130.83346 125.111905) + (xy 130.82104 125.158099) + (xy 130.815682 125.164203) + (xy 129.895513 126.084372) + (xy 129.889439 126.088677) + (xy 129.889895 126.08925) + (xy 129.884387 126.093631) + (xy 129.878042 126.096678) + (xy 129.873646 126.102175) + (xy 129.859582 126.119761) + (xy 129.854965 126.12492) + (xy 129.849716 126.130169) + (xy 129.845943 126.136172) + (xy 129.841838 126.141948) + (xy 129.823617 126.164733) + (xy 129.82204 126.171593) + (xy 129.820222 126.175353) + (xy 129.818844 126.179289) + (xy 129.815098 126.185248) + (xy 129.814307 126.192242) + (xy 129.814307 126.192243) + (xy 129.811821 126.214236) + (xy 129.810629 126.221213) + (xy 129.809 126.228297) + (xy 129.809 126.235671) + (xy 129.808604 126.242692) + (xy 129.805309 126.271838) + (xy 129.80763 126.278483) + (xy 129.808414 126.285477) + (xy 129.807736 126.285553) + (xy 129.809 126.293005) + (xy 129.809 126.9375) + (xy 129.790694 126.981694) + (xy 129.7465 127) + (xy 118.0125 127) + (xy 117.968306 126.981694) + (xy 117.95 126.9375) + (xy 117.95 125.005877) + (xy 117.950039 124.961589) + (xy 117.950039 124.961588) + (xy 117.950045 124.954551) + (xy 117.946834 124.947864) + (xy 117.943042 124.939966) + (xy 117.938448 124.926812) + (xy 117.936415 124.917901) + (xy 117.93485 124.911038) + (xy 117.924911 124.898565) + (xy 117.91745 124.886671) + (xy 117.910547 124.872295) + (xy 117.905049 124.867898) + (xy 117.897908 124.862187) + (xy 117.888065 124.852327) + (xy 117.887878 124.852092) + (xy 117.877985 124.839677) + (xy 117.871648 124.83662) + (xy 117.871645 124.836618) + (xy 117.863622 124.832749) + (xy 117.851738 124.825265) + (xy 117.844782 124.819702) + (xy 117.839285 124.815306) + (xy 117.832428 124.813729) + (xy 117.832423 124.813727) + (xy 117.823511 124.811678) + (xy 117.810366 124.807062) + (xy 117.81015 124.806958) + (xy 117.795798 124.800035) + (xy 117.774114 124.800016) + (xy 117.772799 124.800015) + (xy 117.772783 124.800014) + (xy 117.772723 124.8) + (xy 117.755877 124.8) + (xy 117.704808 124.799955) + (xy 117.704551 124.799955) + (xy 117.704472 124.799993) + (xy 117.704407 124.8) + (xy 112.405877 124.8) + (xy 112.354808 124.799955) + (xy 112.354551 124.799955) + (xy 112.354472 124.799993) + (xy 112.354407 124.8) + (xy 110.455877 124.8) + (xy 110.404808 124.799955) + (xy 110.404551 124.799955) + (xy 110.404472 124.799993) + (xy 110.404407 124.8) + (xy 105.905877 124.8) + (xy 105.861589 124.799961) + (xy 105.861588 124.799961) + (xy 105.854551 124.799955) + (xy 105.848206 124.803002) + (xy 105.848205 124.803002) + (xy 105.839966 124.806958) + (xy 105.826812 124.811552) + (xy 105.811038 124.81515) + (xy 105.805532 124.819537) + (xy 105.805533 124.819537) + (xy 105.798565 124.825089) + (xy 105.786672 124.832549) + (xy 105.772295 124.839453) + (xy 105.767899 124.84495) + (xy 105.767898 124.844951) + (xy 105.762187 124.852092) + (xy 105.752327 124.861935) + (xy 105.739677 124.872015) + (xy 105.73662 124.878352) + (xy 105.736618 124.878355) + (xy 105.732749 124.886378) + (xy 105.725266 124.898261) + (xy 105.715306 124.910715) + (xy 105.713729 124.917572) + (xy 105.713727 124.917577) + (xy 105.711678 124.926489) + (xy 105.707062 124.939634) + (xy 105.700035 124.954202) + (xy 105.700029 124.961239) + (xy 105.700015 124.977201) + (xy 105.700014 124.977217) + (xy 105.7 124.977277) + (xy 105.7 124.994123) + (xy 105.699984 125.012928) + (xy 105.699955 125.045449) + (xy 105.699993 125.045528) + (xy 105.7 125.045593) + (xy 105.7 131.2375) + (xy 105.681694 131.281694) + (xy 105.6375 131.3) + (xy 99.3625 131.3) + (xy 99.318306 131.281694) + (xy 99.3 131.2375) + (xy 99.3 128.289564) + (xy 101.241051 128.289564) + (xy 101.241386 128.292329) + (xy 101.267618 128.509108) + (xy 101.267619 128.509114) + (xy 101.267954 128.51188) + (xy 101.3338 128.725917) + (xy 101.436509 128.924912) + (xy 101.572833 129.102573) + (xy 101.574889 129.104444) + (xy 101.574891 129.104446) + (xy 101.736405 129.251413) + (xy 101.736409 129.251416) + (xy 101.738464 129.253286) + (xy 101.928167 129.372286) + (xy 101.930747 129.373323) + (xy 102.133361 129.454774) + (xy 102.133365 129.454775) + (xy 102.135944 129.455812) + (xy 102.248287 129.479077) + (xy 102.35298 129.500759) + (xy 102.352987 129.50076) + (xy 102.355228 129.501224) + (xy 102.412048 129.5045) + (xy 102.556819 129.5045) + (xy 102.558182 129.504378) + (xy 102.55819 129.504378) + (xy 102.720283 129.489911) + (xy 102.723051 129.489664) + (xy 102.846793 129.455812) + (xy 102.936366 129.431308) + (xy 102.936371 129.431306) + (xy 102.939051 129.430573) + (xy 103.141174 129.334166) + (xy 103.32303 129.203489) + (xy 103.324959 129.201499) + (xy 103.324963 129.201495) + (xy 103.476937 129.04467) + (xy 103.476938 129.044668) + (xy 103.478871 129.042674) + (xy 103.60377 128.856803) + (xy 103.693782 128.651752) + (xy 103.746059 128.434002) + (xy 103.754228 128.292329) + (xy 103.758789 128.213217) + (xy 103.758789 128.213213) + (xy 103.758949 128.210436) + (xy 103.741142 128.063286) + (xy 103.732382 127.990892) + (xy 103.732381 127.990886) + (xy 103.732046 127.98812) + (xy 103.6662 127.774083) + (xy 103.563491 127.575088) + (xy 103.530828 127.53252) + (xy 103.473129 127.457326) + (xy 103.427167 127.397427) + (xy 103.399773 127.3725) + (xy 103.263595 127.248587) + (xy 103.263591 127.248584) + (xy 103.261536 127.246714) + (xy 103.071833 127.127714) + (xy 102.92684 127.069427) + (xy 102.866639 127.045226) + (xy 102.866635 127.045225) + (xy 102.864056 127.044188) + (xy 102.751713 127.020923) + (xy 102.64702 126.999241) + (xy 102.647013 126.99924) + (xy 102.644772 126.998776) + (xy 102.587952 126.9955) + (xy 102.443181 126.9955) + (xy 102.441818 126.995622) + (xy 102.44181 126.995622) + (xy 102.296132 127.008624) + (xy 102.276949 127.010336) + (xy 102.194034 127.033019) + (xy 102.063634 127.068692) + (xy 102.063629 127.068694) + (xy 102.060949 127.069427) + (xy 101.858826 127.165834) + (xy 101.67697 127.296511) + (xy 101.675041 127.298501) + (xy 101.675037 127.298505) + (xy 101.58099 127.395554) + (xy 101.521129 127.457326) + (xy 101.39623 127.643197) + (xy 101.306218 127.848248) + (xy 101.253941 128.065998) + (xy 101.253781 128.068778) + (xy 101.25378 128.068783) + (xy 101.245613 128.210436) + (xy 101.241051 128.289564) + (xy 99.3 128.289564) + (xy 99.3 115.959438) + (xy 113.073 115.959438) + (xy 113.073599 115.965519) + (xy 113.079169 115.993518) + (xy 113.083788 116.00467) + (xy 113.105019 116.036445) + (xy 113.113555 116.044981) + (xy 113.14533 116.066212) + (xy 113.156482 116.070831) + (xy 113.184481 116.076401) + (xy 113.190562 116.077) + (xy 114.924069 116.077) + (xy 114.932859 116.073359) + (xy 114.9365 116.064569) + (xy 115.0635 116.064569) + (xy 115.067141 116.073359) + (xy 115.075931 116.077) + (xy 116.809438 116.077) + (xy 116.815519 116.076401) + (xy 116.843518 116.070831) + (xy 116.85467 116.066212) + (xy 116.886445 116.044981) + (xy 116.894981 116.036445) + (xy 116.916212 116.00467) + (xy 116.920831 115.993518) + (xy 116.926401 115.965519) + (xy 116.927 115.959438) + (xy 116.927 115.281083) + (xy 125.148001 115.281083) + (xy 125.148333 115.285614) + (xy 125.157478 115.347743) + (xy 125.160326 115.35691) + (xy 125.207556 115.453105) + (xy 125.213484 115.461387) + (xy 125.289111 115.536883) + (xy 125.297406 115.542799) + (xy 125.393687 115.589863) + (xy 125.402851 115.592695) + (xy 125.464391 115.601672) + (xy 125.468904 115.602) + (xy 125.674069 115.602) + (xy 125.682859 115.598359) + (xy 125.6865 115.589569) + (xy 125.6865 115.589568) + (xy 125.8135 115.589568) + (xy 125.817141 115.598358) + (xy 125.825931 115.601999) + (xy 126.031083 115.601999) + (xy 126.035614 115.601667) + (xy 126.097743 115.592522) + (xy 126.10691 115.589674) + (xy 126.203105 115.542444) + (xy 126.211387 115.536516) + (xy 126.286883 115.460889) + (xy 126.292799 115.452594) + (xy 126.339863 115.356313) + (xy 126.342695 115.347149) + (xy 126.351672 115.285609) + (xy 126.352 115.281096) + (xy 126.352 115.100931) + (xy 126.348359 115.092141) + (xy 126.339569 115.0885) + (xy 125.825931 115.0885) + (xy 125.817141 115.092141) + (xy 125.8135 115.100931) + (xy 125.8135 115.589568) + (xy 125.6865 115.589568) + (xy 125.6865 115.100931) + (xy 125.682859 115.092141) + (xy 125.674069 115.0885) + (xy 125.160432 115.0885) + (xy 125.151642 115.092141) + (xy 125.148001 115.100931) + (xy 125.148001 115.281083) + (xy 116.927 115.281083) + (xy 116.927 114.949069) + (xy 125.148 114.949069) + (xy 125.151641 114.957859) + (xy 125.160431 114.9615) + (xy 125.674069 114.9615) + (xy 125.682859 114.957859) + (xy 125.6865 114.949069) + (xy 125.8135 114.949069) + (xy 125.817141 114.957859) + (xy 125.825931 114.9615) + (xy 126.339568 114.9615) + (xy 126.348358 114.957859) + (xy 126.351999 114.949069) + (xy 126.351999 114.778181) + (xy 128.8975 114.778181) + (xy 128.897501 115.296818) + (xy 128.897766 115.29883) + (xy 128.897766 115.298833) + (xy 128.903104 115.339387) + (xy 128.904139 115.347248) + (xy 128.90616 115.351581) + (xy 128.90616 115.351582) + (xy 128.94013 115.424429) + (xy 128.955744 115.457914) + (xy 129.042086 115.544256) + (xy 129.152752 115.595861) + (xy 129.170078 115.598142) + (xy 129.20115 115.602233) + (xy 129.201156 115.602233) + (xy 129.203181 115.6025) + (xy 129.205228 115.6025) + (xy 129.500799 115.602499) + (xy 129.796818 115.602499) + (xy 129.79883 115.602234) + (xy 129.798833 115.602234) + (xy 129.842508 115.596485) + (xy 129.842509 115.596485) + (xy 129.847248 115.595861) + (xy 129.957914 115.544256) + (xy 130.044256 115.457914) + (xy 130.095861 115.347248) + (xy 130.099319 115.320979) + (xy 130.102233 115.29885) + (xy 130.102233 115.298844) + (xy 130.1025 115.296819) + (xy 130.1025 115.291) + (xy 130.120806 115.246806) + (xy 130.165 115.2285) + (xy 130.169268 115.2285) + (xy 130.176607 115.22975) + (xy 130.17669 115.229023) + (xy 130.183681 115.22982) + (xy 130.190322 115.232152) + (xy 130.197315 115.231374) + (xy 130.197316 115.231374) + (xy 130.218439 115.229023) + (xy 130.219698 115.228883) + (xy 130.22661 115.2285) + (xy 130.234033 115.2285) + (xy 130.240965 115.226919) + (xy 130.247918 115.225743) + (xy 130.276929 115.222514) + (xy 130.282893 115.218781) + (xy 130.286841 115.217406) + (xy 130.2906 115.215597) + (xy 130.297459 115.214032) + (xy 130.303162 115.209488) + (xy 130.320273 115.195852) + (xy 130.326059 115.191756) + (xy 130.329215 115.18978) + (xy 130.329217 115.189779) + (xy 130.332211 115.187904) + (xy 130.337424 115.182691) + (xy 130.342668 115.178006) + (xy 130.360104 115.164112) + (xy 130.360104 115.164111) + (xy 130.365609 115.159725) + (xy 130.368667 115.153386) + (xy 130.373058 115.147885) + (xy 130.373592 115.148311) + (xy 130.377968 115.142147) + (xy 130.455806 115.064309) + (xy 130.5 115.046003) + (xy 130.544194 115.064309) + (xy 130.609372 115.129487) + (xy 130.613677 115.135561) + (xy 130.61425 115.135105) + (xy 130.618631 115.140613) + (xy 130.621678 115.146958) + (xy 130.627175 115.151354) + (xy 130.644761 115.165418) + (xy 130.64992 115.170035) + (xy 130.655169 115.175284) + (xy 130.65936 115.177918) + (xy 130.661172 115.179057) + (xy 130.666948 115.183162) + (xy 130.689733 115.201383) + (xy 130.696593 115.20296) + (xy 130.700353 115.204778) + (xy 130.704289 115.206156) + (xy 130.710248 115.209902) + (xy 130.717242 115.210693) + (xy 130.717243 115.210693) + (xy 130.739236 115.213179) + (xy 130.746213 115.214371) + (xy 130.753297 115.216) + (xy 130.760671 115.216) + (xy 130.767692 115.216396) + (xy 130.796838 115.219691) + (xy 130.803483 115.21737) + (xy 130.810477 115.216586) + (xy 130.810553 115.217264) + (xy 130.818005 115.216) + (xy 130.835001 115.216) + (xy 130.879195 115.234306) + (xy 130.897501 115.2785) + (xy 130.897501 115.28341) + (xy 130.907699 115.352695) + (xy 130.959419 115.458036) + (xy 130.963071 115.461682) + (xy 130.963072 115.461683) + (xy 131.038817 115.537296) + (xy 131.038819 115.537298) + (xy 131.042472 115.540944) + (xy 131.115762 115.576769) + (xy 131.143158 115.590161) + (xy 131.147902 115.59248) + (xy 131.152705 115.593181) + (xy 131.152706 115.593181) + (xy 131.171079 115.595861) + (xy 131.216589 115.6025) + (xy 131.499251 115.6025) + (xy 131.78341 115.602499) + (xy 131.852695 115.592301) + (xy 131.85826 115.589569) + (xy 131.876223 115.580749) + (xy 131.958036 115.540581) + (xy 131.962094 115.536516) + (xy 132.037296 115.461183) + (xy 132.037298 115.461181) + (xy 132.040944 115.457528) + (xy 132.081419 115.374726) + (xy 132.090349 115.356458) + (xy 132.090349 115.356457) + (xy 132.09248 115.352098) + (xy 132.094064 115.341244) + (xy 132.100841 115.294782) + (xy 132.1025 115.283411) + (xy 132.102499 114.76659) + (xy 132.102499 114.766589) + (xy 132.8975 114.766589) + (xy 132.897501 115.28341) + (xy 132.907699 115.352695) + (xy 132.959419 115.458036) + (xy 132.963071 115.461682) + (xy 132.963072 115.461683) + (xy 133.038817 115.537296) + (xy 133.038819 115.537298) + (xy 133.042472 115.540944) + (xy 133.115762 115.576769) + (xy 133.143158 115.590161) + (xy 133.147902 115.59248) + (xy 133.152705 115.593181) + (xy 133.152706 115.593181) + (xy 133.171079 115.595861) + (xy 133.216589 115.6025) + (xy 133.499251 115.6025) + (xy 133.78341 115.602499) + (xy 133.852695 115.592301) + (xy 133.85826 115.589569) + (xy 133.876223 115.580749) + (xy 133.958036 115.540581) + (xy 133.962094 115.536516) + (xy 134.037296 115.461183) + (xy 134.037298 115.461181) + (xy 134.040944 115.457528) + (xy 134.081419 115.374726) + (xy 134.090349 115.356458) + (xy 134.090349 115.356457) + (xy 134.09248 115.352098) + (xy 134.094064 115.341244) + (xy 134.100841 115.294782) + (xy 134.1025 115.283411) + (xy 134.1025 115.2785) + (xy 134.120806 115.234306) + (xy 134.165 115.216) + (xy 134.181768 115.216) + (xy 134.189107 115.21725) + (xy 134.18919 115.216523) + (xy 134.196181 115.21732) + (xy 134.202822 115.219652) + (xy 134.209815 115.218874) + (xy 134.209816 115.218874) + (xy 134.230373 115.216586) + (xy 134.232198 115.216383) + (xy 134.23911 115.216) + (xy 134.246533 115.216) + (xy 134.253465 115.214419) + (xy 134.260418 115.213243) + (xy 134.289429 115.210014) + (xy 134.295393 115.206281) + (xy 134.299341 115.204906) + (xy 134.3031 115.203097) + (xy 134.309959 115.201532) + (xy 134.320108 115.193445) + (xy 134.327213 115.187783) + (xy 134.332774 115.183351) + (xy 134.338559 115.179256) + (xy 134.341715 115.17728) + (xy 134.341717 115.177279) + (xy 134.344711 115.175404) + (xy 134.349924 115.170191) + (xy 134.355168 115.165506) + (xy 134.372604 115.151612) + (xy 134.372604 115.151611) + (xy 134.378109 115.147225) + (xy 134.381167 115.140886) + (xy 134.385558 115.135385) + (xy 134.386092 115.135811) + (xy 134.390468 115.129647) + (xy 134.455806 115.064309) + (xy 134.5 115.046003) + (xy 134.544194 115.064309) + (xy 134.621872 115.141987) + (xy 134.626177 115.148061) + (xy 134.62675 115.147605) + (xy 134.631131 115.153113) + (xy 134.634178 115.159458) + (xy 134.639675 115.163854) + (xy 134.657261 115.177918) + (xy 134.66242 115.182535) + (xy 134.667668 115.187783) + (xy 134.670639 115.18965) + (xy 134.67064 115.189651) + (xy 134.673669 115.191555) + (xy 134.679444 115.195659) + (xy 134.696736 115.209488) + (xy 134.69674 115.20949) + (xy 134.702233 115.213883) + (xy 134.70909 115.21546) + (xy 134.712852 115.217278) + (xy 134.71679 115.218657) + (xy 134.722748 115.222402) + (xy 134.729739 115.223192) + (xy 134.729744 115.223194) + (xy 134.751737 115.22568) + (xy 134.758723 115.226873) + (xy 134.765797 115.2285) + (xy 134.773177 115.2285) + (xy 134.780198 115.228896) + (xy 134.809338 115.23219) + (xy 134.815984 115.229869) + (xy 134.822978 115.229085) + (xy 134.823054 115.229764) + (xy 134.830504 115.2285) + (xy 134.835001 115.2285) + (xy 134.879195 115.246806) + (xy 134.897501 115.291) + (xy 134.897501 115.296818) + (xy 134.897766 115.29883) + (xy 134.897766 115.298833) + (xy 134.903104 115.339387) + (xy 134.904139 115.347248) + (xy 134.90616 115.351581) + (xy 134.90616 115.351582) + (xy 134.94013 115.424429) + (xy 134.955744 115.457914) + (xy 135.042086 115.544256) + (xy 135.152752 115.595861) + (xy 135.170078 115.598142) + (xy 135.20115 115.602233) + (xy 135.201156 115.602233) + (xy 135.203181 115.6025) + (xy 135.205228 115.6025) + (xy 135.500799 115.602499) + (xy 135.796818 115.602499) + (xy 135.79883 115.602234) + (xy 135.798833 115.602234) + (xy 135.842508 115.596485) + (xy 135.842509 115.596485) + (xy 135.847248 115.595861) + (xy 135.957914 115.544256) + (xy 136.044256 115.457914) + (xy 136.095861 115.347248) + (xy 136.099319 115.320979) + (xy 136.102233 115.29885) + (xy 136.102233 115.298844) + (xy 136.1025 115.296819) + (xy 136.102499 114.778182) + (xy 136.10128 114.768917) + (xy 136.096485 114.732492) + (xy 136.096485 114.732491) + (xy 136.095861 114.727752) + (xy 136.044256 114.617086) + (xy 135.957914 114.530744) + (xy 135.847248 114.479139) + (xy 135.829922 114.476858) + (xy 135.79885 114.472767) + (xy 135.798844 114.472767) + (xy 135.796819 114.4725) + (xy 135.794772 114.4725) + (xy 135.499201 114.472501) + (xy 135.203182 114.472501) + (xy 135.20117 114.472766) + (xy 135.201167 114.472766) + (xy 135.157492 114.478515) + (xy 135.157491 114.478515) + (xy 135.152752 114.479139) + (xy 135.042086 114.530744) + (xy 134.955744 114.617086) + (xy 134.904139 114.727752) + (xy 134.903515 114.732492) + (xy 134.903515 114.732493) + (xy 134.902501 114.740193) + (xy 134.878583 114.781619) + (xy 134.832377 114.793999) + (xy 134.796342 114.776228) + (xy 134.724416 114.704301) + (xy 134.70611 114.660107) + (xy 134.724416 114.615913) + (xy 134.7359 114.60685) + (xy 134.738686 114.605139) + (xy 134.739712 114.604509) + (xy 134.744034 114.602085) + (xy 134.752625 114.597708) + (xy 134.755427 114.594906) + (xy 134.756264 114.594346) + (xy 134.775881 114.582301) + (xy 134.858058 114.491513) + (xy 134.911451 114.381311) + (xy 134.913317 114.370224) + (xy 134.927268 114.287296) + (xy 134.931767 114.260552) + (xy 134.931896 114.25) + (xy 134.914536 114.128781) + (xy 134.870116 114.031083) + (xy 145.398001 114.031083) + (xy 145.398333 114.035614) + (xy 145.407478 114.097743) + (xy 145.410326 114.10691) + (xy 145.457556 114.203105) + (xy 145.463484 114.211387) + (xy 145.539111 114.286883) + (xy 145.547406 114.292799) + (xy 145.643687 114.339863) + (xy 145.652851 114.342695) + (xy 145.714391 114.351672) + (xy 145.718904 114.352) + (xy 145.899069 114.352) + (xy 145.907859 114.348359) + (xy 145.9115 114.339569) + (xy 145.9115 114.339568) + (xy 146.0385 114.339568) + (xy 146.042141 114.348358) + (xy 146.050931 114.351999) + (xy 146.231083 114.351999) + (xy 146.235614 114.351667) + (xy 146.297743 114.342522) + (xy 146.30691 114.339674) + (xy 146.403105 114.292444) + (xy 146.411387 114.286516) + (xy 146.486883 114.210889) + (xy 146.492799 114.202594) + (xy 146.539863 114.106313) + (xy 146.542695 114.097149) + (xy 146.551672 114.035609) + (xy 146.552 114.031096) + (xy 146.552 113.825931) + (xy 146.548359 113.817141) + (xy 146.539569 113.8135) + (xy 146.050931 113.8135) + (xy 146.042141 113.817141) + (xy 146.0385 113.825931) + (xy 146.0385 114.339568) + (xy 145.9115 114.339568) + (xy 145.9115 113.825931) + (xy 145.907859 113.817141) + (xy 145.899069 113.8135) + (xy 145.410432 113.8135) + (xy 145.401642 113.817141) + (xy 145.398001 113.825931) + (xy 145.398001 114.031083) + (xy 134.870116 114.031083) + (xy 134.863852 114.017307) + (xy 134.849199 114.000302) + (xy 134.847708 113.997375) + (xy 134.8419 113.991567) + (xy 134.838746 113.98817) + (xy 134.786826 113.927914) + (xy 134.783918 113.924539) + (xy 134.763741 113.911461) + (xy 134.760155 113.908559) + (xy 134.760081 113.908661) + (xy 134.756106 113.905773) + (xy 134.752625 113.902292) + (xy 134.741343 113.896543) + (xy 134.735736 113.893309) + (xy 134.723408 113.885318) + (xy 134.712049 113.877956) + (xy 134.684893 113.860354) + (xy 134.68489 113.860353) + (xy 134.68116 113.857935) + (xy 134.676901 113.856661) + (xy 134.676898 113.85666) + (xy 134.658345 113.851112) + (xy 134.648839 113.848269) + (xy 134.638377 113.844079) + (xy 134.632813 113.841244) + (xy 134.621067 113.839384) + (xy 134.612951 113.837536) + (xy 134.563838 113.822848) + (xy 134.519496 113.822577) + (xy 134.510103 113.821809) + (xy 134.504857 113.820978) + (xy 134.504856 113.820978) + (xy 134.5 113.820209) + (xy 134.491373 113.821576) + (xy 134.48122 113.822344) + (xy 134.462836 113.822231) + (xy 134.445838 113.822127) + (xy 134.445836 113.822127) + (xy 134.441385 113.8221) + (xy 134.387011 113.837641) + (xy 134.379623 113.839275) + (xy 134.367187 113.841244) + (xy 134.362804 113.843477) + (xy 134.36187 113.843781) + (xy 134.352155 113.847603) + (xy 134.327929 113.854526) + (xy 134.327927 113.854527) + (xy 134.323644 113.855751) + (xy 134.264119 113.893309) + (xy 134.262819 113.894129) + (xy 134.257842 113.896959) + (xy 134.251757 113.900059) + (xy 134.251756 113.90006) + (xy 134.247375 113.902292) + (xy 134.243897 113.90577) + (xy 134.242445 113.906825) + (xy 134.239058 113.90912) + (xy 134.22008 113.921095) + (xy 134.217137 113.924427) + (xy 134.217135 113.924429) + (xy 134.157156 113.992342) + (xy 134.156032 113.993538) + (xy 134.155775 113.993892) + (xy 134.155554 113.994113) + (xy 134.155405 113.994204) + (xy 134.154504 113.995163) + (xy 134.152292 113.997375) + (xy 134.151509 113.996592) + (xy 134.150362 113.997296) + (xy 134.151721 113.998496) + (xy 134.145002 114.006104) + (xy 134.139018 114.012879) + (xy 134.135038 114.021357) + (xy 134.088868 114.119695) + (xy 134.088867 114.119698) + (xy 134.086976 114.123726) + (xy 134.068136 114.244724) + (xy 134.068713 114.249137) + (xy 134.068713 114.249138) + (xy 134.08223 114.3525) + (xy 134.084014 114.366145) + (xy 134.091185 114.382443) + (xy 134.091244 114.382813) + (xy 134.092007 114.384311) + (xy 134.094031 114.38891) + (xy 134.094031 114.388911) + (xy 134.130929 114.472766) + (xy 134.133333 114.47823) + (xy 134.147272 114.494813) + (xy 134.148029 114.495713) + (xy 134.150157 114.498434) + (xy 134.152292 114.502625) + (xy 134.160081 114.510414) + (xy 134.16373 114.514392) + (xy 134.182983 114.537296) + (xy 134.212127 114.571968) + (xy 134.235399 114.587459) + (xy 134.241836 114.592733) + (xy 134.243899 114.594232) + (xy 134.247375 114.597708) + (xy 134.251753 114.599939) + (xy 134.251756 114.599941) + (xy 134.25873 114.603494) + (xy 134.264978 114.607149) + (xy 134.266171 114.607943) + (xy 134.292811 114.647672) + (xy 134.283556 114.694603) + (xy 134.275726 114.704159) + (xy 134.204636 114.775249) + (xy 134.160442 114.793555) + (xy 134.116248 114.775249) + (xy 134.098608 114.740156) + (xy 134.096514 114.725931) + (xy 134.092301 114.697305) + (xy 134.040581 114.591964) + (xy 134.036065 114.587456) + (xy 133.961183 114.512704) + (xy 133.961181 114.512702) + (xy 133.957528 114.509056) + (xy 133.882743 114.4725) + (xy 133.856458 114.459651) + (xy 133.856457 114.459651) + (xy 133.852098 114.45752) + (xy 133.847295 114.456819) + (xy 133.847294 114.456819) + (xy 133.811804 114.451642) + (xy 133.783411 114.4475) + (xy 133.500749 114.4475) + (xy 133.21659 114.447501) + (xy 133.147305 114.457699) + (xy 133.142947 114.459839) + (xy 133.142946 114.459839) + (xy 133.123777 114.469251) + (xy 133.041964 114.509419) + (xy 133.038318 114.513071) + (xy 133.038317 114.513072) + (xy 132.962704 114.588817) + (xy 132.962702 114.588819) + (xy 132.959056 114.592472) + (xy 132.945206 114.620806) + (xy 132.909943 114.692946) + (xy 132.90752 114.697902) + (xy 132.906819 114.702705) + (xy 132.906819 114.702706) + (xy 132.904713 114.717141) + (xy 132.8975 114.766589) + (xy 132.102499 114.766589) + (xy 132.092301 114.697305) + (xy 132.040581 114.591964) + (xy 132.036065 114.587456) + (xy 131.961183 114.512704) + (xy 131.961181 114.512702) + (xy 131.957528 114.509056) + (xy 131.882743 114.4725) + (xy 131.856458 114.459651) + (xy 131.856457 114.459651) + (xy 131.852098 114.45752) + (xy 131.847295 114.456819) + (xy 131.847294 114.456819) + (xy 131.811804 114.451642) + (xy 131.783411 114.4475) + (xy 131.500749 114.4475) + (xy 131.21659 114.447501) + (xy 131.147305 114.457699) + (xy 131.142947 114.459839) + (xy 131.142946 114.459839) + (xy 131.123777 114.469251) + (xy 131.041964 114.509419) + (xy 131.038318 114.513071) + (xy 131.038317 114.513072) + (xy 130.962704 114.588817) + (xy 130.962702 114.588819) + (xy 130.959056 114.592472) + (xy 130.945206 114.620806) + (xy 130.909943 114.692946) + (xy 130.90752 114.697902) + (xy 130.906819 114.702705) + (xy 130.906819 114.702706) + (xy 130.901372 114.740046) + (xy 130.876879 114.781135) + (xy 130.830505 114.792869) + (xy 130.795333 114.775218) + (xy 130.724416 114.704301) + (xy 130.70611 114.660107) + (xy 130.724416 114.615913) + (xy 130.7359 114.60685) + (xy 130.738686 114.605139) + (xy 130.739712 114.604509) + (xy 130.744034 114.602085) + (xy 130.752625 114.597708) + (xy 130.755427 114.594906) + (xy 130.756264 114.594346) + (xy 130.775881 114.582301) + (xy 130.858058 114.491513) + (xy 130.911451 114.381311) + (xy 130.913317 114.370224) + (xy 130.927268 114.287296) + (xy 130.931767 114.260552) + (xy 130.931896 114.25) + (xy 130.914536 114.128781) + (xy 130.863852 114.017307) + (xy 130.849199 114.000302) + (xy 130.847708 113.997375) + (xy 130.8419 113.991567) + (xy 130.838746 113.98817) + (xy 130.786826 113.927914) + (xy 130.783918 113.924539) + (xy 130.763741 113.911461) + (xy 130.760155 113.908559) + (xy 130.760081 113.908661) + (xy 130.756106 113.905773) + (xy 130.752625 113.902292) + (xy 130.741343 113.896543) + (xy 130.735736 113.893309) + (xy 130.723408 113.885318) + (xy 130.712049 113.877956) + (xy 130.684893 113.860354) + (xy 130.68489 113.860353) + (xy 130.68116 113.857935) + (xy 130.676901 113.856661) + (xy 130.676898 113.85666) + (xy 130.658345 113.851112) + (xy 130.648839 113.848269) + (xy 130.638377 113.844079) + (xy 130.632813 113.841244) + (xy 130.621067 113.839384) + (xy 130.612951 113.837536) + (xy 130.563838 113.822848) + (xy 130.519496 113.822577) + (xy 130.510103 113.821809) + (xy 130.504857 113.820978) + (xy 130.504856 113.820978) + (xy 130.5 113.820209) + (xy 130.491373 113.821576) + (xy 130.48122 113.822344) + (xy 130.462836 113.822231) + (xy 130.445838 113.822127) + (xy 130.445836 113.822127) + (xy 130.441385 113.8221) + (xy 130.387011 113.837641) + (xy 130.379623 113.839275) + (xy 130.367187 113.841244) + (xy 130.362804 113.843477) + (xy 130.36187 113.843781) + (xy 130.352155 113.847603) + (xy 130.327929 113.854526) + (xy 130.327927 113.854527) + (xy 130.323644 113.855751) + (xy 130.264119 113.893309) + (xy 130.262819 113.894129) + (xy 130.257842 113.896959) + (xy 130.251757 113.900059) + (xy 130.251756 113.90006) + (xy 130.247375 113.902292) + (xy 130.243897 113.90577) + (xy 130.242445 113.906825) + (xy 130.239058 113.90912) + (xy 130.22008 113.921095) + (xy 130.217137 113.924427) + (xy 130.217135 113.924429) + (xy 130.157156 113.992342) + (xy 130.156032 113.993538) + (xy 130.155775 113.993892) + (xy 130.155554 113.994113) + (xy 130.155405 113.994204) + (xy 130.154504 113.995163) + (xy 130.152292 113.997375) + (xy 130.151509 113.996592) + (xy 130.150362 113.997296) + (xy 130.151721 113.998496) + (xy 130.145002 114.006104) + (xy 130.139018 114.012879) + (xy 130.135038 114.021357) + (xy 130.088868 114.119695) + (xy 130.088867 114.119698) + (xy 130.086976 114.123726) + (xy 130.068136 114.244724) + (xy 130.068713 114.249137) + (xy 130.068713 114.249138) + (xy 130.08223 114.3525) + (xy 130.084014 114.366145) + (xy 130.091185 114.382443) + (xy 130.091244 114.382813) + (xy 130.092007 114.384311) + (xy 130.094031 114.38891) + (xy 130.094031 114.388911) + (xy 130.130929 114.472766) + (xy 130.133333 114.47823) + (xy 130.147272 114.494813) + (xy 130.148029 114.495713) + (xy 130.150157 114.498434) + (xy 130.152292 114.502625) + (xy 130.160081 114.510414) + (xy 130.16373 114.514392) + (xy 130.182983 114.537296) + (xy 130.212127 114.571968) + (xy 130.235399 114.587459) + (xy 130.241836 114.592733) + (xy 130.243899 114.594232) + (xy 130.247375 114.597708) + (xy 130.251753 114.599939) + (xy 130.251756 114.599941) + (xy 130.25873 114.603494) + (xy 130.264978 114.607149) + (xy 130.266171 114.607943) + (xy 130.292811 114.647672) + (xy 130.283556 114.694603) + (xy 130.275726 114.704159) + (xy 130.203658 114.776227) + (xy 130.159464 114.794533) + (xy 130.11527 114.776227) + (xy 130.097498 114.740189) + (xy 130.096485 114.732492) + (xy 130.096485 114.732491) + (xy 130.095861 114.727752) + (xy 130.044256 114.617086) + (xy 129.957914 114.530744) + (xy 129.847248 114.479139) + (xy 129.829922 114.476858) + (xy 129.79885 114.472767) + (xy 129.798844 114.472767) + (xy 129.796819 114.4725) + (xy 129.794772 114.4725) + (xy 129.499201 114.472501) + (xy 129.203182 114.472501) + (xy 129.20117 114.472766) + (xy 129.201167 114.472766) + (xy 129.157492 114.478515) + (xy 129.157491 114.478515) + (xy 129.152752 114.479139) + (xy 129.042086 114.530744) + (xy 128.955744 114.617086) + (xy 128.904139 114.727752) + (xy 128.902506 114.740156) + (xy 128.89872 114.768917) + (xy 128.8975 114.778181) + (xy 126.351999 114.778181) + (xy 126.351999 114.768917) + (xy 126.351667 114.764386) + (xy 126.342522 114.702257) + (xy 126.339674 114.69309) + (xy 126.292444 114.596895) + (xy 126.286516 114.588613) + (xy 126.210889 114.513117) + (xy 126.202594 114.507201) + (xy 126.106313 114.460137) + (xy 126.097149 114.457305) + (xy 126.035609 114.448328) + (xy 126.031096 114.448) + (xy 125.825931 114.448) + (xy 125.817141 114.451641) + (xy 125.8135 114.460431) + (xy 125.8135 114.949069) + (xy 125.6865 114.949069) + (xy 125.6865 114.460432) + (xy 125.682859 114.451642) + (xy 125.674069 114.448001) + (xy 125.468917 114.448001) + (xy 125.464386 114.448333) + (xy 125.402257 114.457478) + (xy 125.39309 114.460326) + (xy 125.296895 114.507556) + (xy 125.288613 114.513484) + (xy 125.213117 114.589111) + (xy 125.207201 114.597406) + (xy 125.160137 114.693687) + (xy 125.157305 114.702851) + (xy 125.148328 114.764391) + (xy 125.148 114.768904) + (xy 125.148 114.949069) + (xy 116.927 114.949069) + (xy 116.927 114.725931) + (xy 116.923359 114.717141) + (xy 116.914569 114.7135) + (xy 115.075931 114.7135) + (xy 115.067141 114.717141) + (xy 115.0635 114.725931) + (xy 115.0635 116.064569) + (xy 114.9365 116.064569) + (xy 114.9365 114.725931) + (xy 114.932859 114.717141) + (xy 114.924069 114.7135) + (xy 113.085431 114.7135) + (xy 113.076641 114.717141) + (xy 113.073 114.725931) + (xy 113.073 115.959438) + (xy 99.3 115.959438) + (xy 99.3 114.574069) + (xy 113.073 114.574069) + (xy 113.076641 114.582859) + (xy 113.085431 114.5865) + (xy 114.924069 114.5865) + (xy 114.932859 114.582859) + (xy 114.9365 114.574069) + (xy 115.0635 114.574069) + (xy 115.067141 114.582859) + (xy 115.075931 114.5865) + (xy 116.914569 114.5865) + (xy 116.923359 114.582859) + (xy 116.927 114.574069) + (xy 116.927 113.340562) + (xy 116.926401 113.334481) + (xy 116.920831 113.306482) + (xy 116.916212 113.29533) + (xy 116.894981 113.263555) + (xy 116.886445 113.255019) + (xy 116.85467 113.233788) + (xy 116.843518 113.229169) + (xy 116.815519 113.223599) + (xy 116.809438 113.223) + (xy 115.075931 113.223) + (xy 115.067141 113.226641) + (xy 115.0635 113.235431) + (xy 115.0635 114.574069) + (xy 114.9365 114.574069) + (xy 114.9365 113.235431) + (xy 114.932859 113.226641) + (xy 114.924069 113.223) + (xy 113.190562 113.223) + (xy 113.184481 113.223599) + (xy 113.156482 113.229169) + (xy 113.14533 113.233788) + (xy 113.113555 113.255019) + (xy 113.105019 113.263555) + (xy 113.083788 113.29533) + (xy 113.079169 113.306482) + (xy 113.073599 113.334481) + (xy 113.073 113.340562) + (xy 113.073 114.574069) + (xy 99.3 114.574069) + (xy 99.3 103.521838) + (xy 118.305309 103.521838) + (xy 118.30763 103.528483) + (xy 118.308414 103.535477) + (xy 118.307736 103.535553) + (xy 118.309 103.543005) + (xy 118.309 106.206768) + (xy 118.30775 106.214107) + (xy 118.308477 106.21419) + (xy 118.30768 106.221181) + (xy 118.305348 106.227822) + (xy 118.306126 106.234815) + (xy 118.306126 106.234816) + (xy 118.308617 106.257197) + (xy 118.309 106.26411) + (xy 118.309 106.271533) + (xy 118.310581 106.278465) + (xy 118.311757 106.285418) + (xy 118.314986 106.314429) + (xy 118.318719 106.320393) + (xy 118.320094 106.324341) + (xy 118.321903 106.3281) + (xy 118.323468 106.334959) + (xy 118.327853 106.340461) + (xy 118.327853 106.340462) + (xy 118.341648 106.357773) + (xy 118.345744 106.363559) + (xy 118.349596 106.369711) + (xy 118.354809 106.374924) + (xy 118.359494 106.380168) + (xy 118.371312 106.394998) + (xy 118.377775 106.403109) + (xy 118.384114 106.406167) + (xy 118.389615 106.410558) + (xy 118.389189 106.411092) + (xy 118.395353 106.415468) + (xy 118.834372 106.854487) + (xy 118.838677 106.860561) + (xy 118.83925 106.860105) + (xy 118.843631 106.865613) + (xy 118.846678 106.871958) + (xy 118.860664 106.883143) + (xy 118.869761 106.890418) + (xy 118.87492 106.895035) + (xy 118.880169 106.900284) + (xy 118.883143 106.902153) + (xy 118.886172 106.904057) + (xy 118.891948 106.908162) + (xy 118.914733 106.926383) + (xy 118.921593 106.92796) + (xy 118.925353 106.929778) + (xy 118.929289 106.931156) + (xy 118.935248 106.934902) + (xy 118.942242 106.935693) + (xy 118.942243 106.935693) + (xy 118.964236 106.938179) + (xy 118.971213 106.939371) + (xy 118.978297 106.941) + (xy 118.985671 106.941) + (xy 118.992692 106.941396) + (xy 119.021838 106.944691) + (xy 119.028483 106.94237) + (xy 119.035477 106.941586) + (xy 119.035553 106.942264) + (xy 119.043005 106.941) + (xy 119.076187 106.941) + (xy 119.120381 106.959306) + (xy 119.129248 106.970473) + (xy 119.13154 106.974155) + (xy 119.133333 106.97823) + (xy 119.14549 106.992692) + (xy 119.148029 106.995713) + (xy 119.150157 106.998434) + (xy 119.152292 107.002625) + (xy 119.160081 107.010414) + (xy 119.16373 107.014392) + (xy 119.181454 107.035477) + (xy 119.212127 107.071968) + (xy 119.235399 107.087459) + (xy 119.241836 107.092733) + (xy 119.243899 107.094232) + (xy 119.247375 107.097708) + (xy 119.251753 107.099939) + (xy 119.251756 107.099941) + (xy 119.25873 107.103494) + (xy 119.264977 107.107148) + (xy 119.314064 107.139823) + (xy 119.318313 107.141151) + (xy 119.318314 107.141151) + (xy 119.350296 107.151143) + (xy 119.360027 107.155109) + (xy 119.362799 107.156521) + (xy 119.362803 107.156522) + (xy 119.367187 107.158756) + (xy 119.377852 107.160445) + (xy 119.386713 107.16252) + (xy 119.426696 107.175012) + (xy 119.426699 107.175012) + (xy 119.430948 107.17634) + (xy 119.480069 107.177241) + (xy 119.488683 107.177999) + (xy 119.49514 107.179022) + (xy 119.495144 107.179022) + (xy 119.5 107.179791) + (xy 119.506947 107.17869) + (xy 119.517853 107.177933) + (xy 119.553383 107.178584) + (xy 119.613532 107.162185) + (xy 119.62019 107.160755) + (xy 119.627887 107.159536) + (xy 119.632813 107.158756) + (xy 119.637196 107.156522) + (xy 119.641875 107.155002) + (xy 119.641878 107.15501) + (xy 119.646727 107.153136) + (xy 119.671527 107.146375) + (xy 119.67828 107.142229) + (xy 119.739709 107.104511) + (xy 119.744037 107.102085) + (xy 119.74824 107.099944) + (xy 119.748248 107.099938) + (xy 119.752625 107.097708) + (xy 119.755427 107.094906) + (xy 119.756264 107.094346) + (xy 119.760039 107.092028) + (xy 119.775881 107.082301) + (xy 119.858058 106.991513) + (xy 119.865454 106.976248) + (xy 119.901198 106.944458) + (xy 119.9217 106.941) + (xy 122.644997 106.941) + (xy 122.689191 106.959306) + (xy 123.040694 107.310809) + (xy 123.059 107.355003) + (xy 123.059 111.830525) + (xy 123.040694 111.874719) + (xy 123.029855 111.88338) + (xy 123.01281 111.894135) + (xy 123.007842 111.896959) + (xy 123.001757 111.900059) + (xy 123.001756 111.90006) + (xy 122.997375 111.902292) + (xy 122.993897 111.90577) + (xy 122.992445 111.906825) + (xy 122.989058 111.90912) + (xy 122.97008 111.921095) + (xy 122.967137 111.924427) + (xy 122.967135 111.924429) + (xy 122.907156 111.992342) + (xy 122.906032 111.993538) + (xy 122.905774 111.993893) + (xy 122.905554 111.994113) + (xy 122.905405 111.994204) + (xy 122.904504 111.995163) + (xy 122.902292 111.997375) + (xy 122.901509 111.996592) + (xy 122.900362 111.997296) + (xy 122.901721 111.998496) + (xy 122.889018 112.012879) + (xy 122.887127 112.016907) + (xy 122.838868 112.119695) + (xy 122.838867 112.119698) + (xy 122.836976 112.123726) + (xy 122.818136 112.244724) + (xy 122.818713 112.249137) + (xy 122.818713 112.249138) + (xy 122.828237 112.321968) + (xy 122.834014 112.366145) + (xy 122.841185 112.382443) + (xy 122.841244 112.382813) + (xy 122.842007 112.384311) + (xy 122.844031 112.38891) + (xy 122.844031 112.388911) + (xy 122.861681 112.429022) + (xy 122.883333 112.47823) + (xy 122.886197 112.481637) + (xy 122.898029 112.495713) + (xy 122.900157 112.498434) + (xy 122.902292 112.502625) + (xy 122.910081 112.510414) + (xy 122.913729 112.514391) + (xy 122.962127 112.571968) + (xy 122.985399 112.587459) + (xy 122.991836 112.592733) + (xy 122.993899 112.594232) + (xy 122.997375 112.597708) + (xy 123.001753 112.599939) + (xy 123.001756 112.599941) + (xy 123.00873 112.603494) + (xy 123.014983 112.607152) + (xy 123.028878 112.616401) + (xy 123.031134 112.617903) + (xy 123.057778 112.657631) + (xy 123.059 112.669929) + (xy 123.059 112.956768) + (xy 123.05775 112.964107) + (xy 123.058477 112.96419) + (xy 123.05768 112.971181) + (xy 123.055348 112.977822) + (xy 123.056126 112.984815) + (xy 123.056126 112.984816) + (xy 123.058617 113.007197) + (xy 123.059 113.01411) + (xy 123.059 113.021533) + (xy 123.060581 113.028465) + (xy 123.061757 113.035418) + (xy 123.064986 113.064429) + (xy 123.068719 113.070393) + (xy 123.070094 113.074341) + (xy 123.071903 113.0781) + (xy 123.073468 113.084959) + (xy 123.077853 113.090461) + (xy 123.077853 113.090462) + (xy 123.091648 113.107773) + (xy 123.095744 113.113559) + (xy 123.099596 113.119711) + (xy 123.104809 113.124924) + (xy 123.109494 113.130168) + (xy 123.127775 113.153109) + (xy 123.134114 113.156167) + (xy 123.139615 113.160558) + (xy 123.139189 113.161092) + (xy 123.145353 113.165468) + (xy 123.559372 113.579487) + (xy 123.563677 113.585561) + (xy 123.56425 113.585105) + (xy 123.568631 113.590613) + (xy 123.571678 113.596958) + (xy 123.577175 113.601354) + (xy 123.594761 113.615418) + (xy 123.59992 113.620035) + (xy 123.605168 113.625283) + (xy 123.608139 113.62715) + (xy 123.60814 113.627151) + (xy 123.611169 113.629055) + (xy 123.616944 113.633159) + (xy 123.634236 113.646988) + (xy 123.63424 113.64699) + (xy 123.639733 113.651383) + (xy 123.64659 113.65296) + (xy 123.650352 113.654778) + (xy 123.65429 113.656157) + (xy 123.660248 113.659902) + (xy 123.667239 113.660692) + (xy 123.667244 113.660694) + (xy 123.689237 113.66318) + (xy 123.696223 113.664373) + (xy 123.703297 113.666) + (xy 123.710677 113.666) + (xy 123.717698 113.666396) + (xy 123.746838 113.66969) + (xy 123.753482 113.66737) + (xy 123.760478 113.666585) + (xy 123.760554 113.667264) + (xy 123.768003 113.666) + (xy 125.085001 113.666) + (xy 125.129195 113.684306) + (xy 125.147501 113.7285) + (xy 125.147501 113.73341) + (xy 125.157699 113.802695) + (xy 125.159839 113.807053) + (xy 125.159839 113.807054) + (xy 125.167226 113.8221) + (xy 125.209419 113.908036) + (xy 125.213071 113.911682) + (xy 125.213072 113.911683) + (xy 125.288817 113.987296) + (xy 125.288819 113.987298) + (xy 125.292472 113.990944) + (xy 125.365762 114.026769) + (xy 125.393158 114.040161) + (xy 125.397902 114.04248) + (xy 125.402705 114.043181) + (xy 125.402706 114.043181) + (xy 125.424659 114.046383) + (xy 125.466589 114.0525) + (xy 125.749251 114.0525) + (xy 126.03341 114.052499) + (xy 126.102695 114.042301) + (xy 126.10826 114.039569) + (xy 126.145092 114.021485) + (xy 126.208036 113.990581) + (xy 126.212094 113.986516) + (xy 126.287296 113.911183) + (xy 126.287298 113.911181) + (xy 126.290944 113.907528) + (xy 126.332568 113.822375) + (xy 126.340349 113.806458) + (xy 126.340349 113.806457) + (xy 126.34248 113.802098) + (xy 126.3525 113.733411) + (xy 126.352499 113.21659) + (xy 126.342301 113.147305) + (xy 126.290581 113.041964) + (xy 126.286928 113.038317) + (xy 126.211183 112.962704) + (xy 126.211181 112.962702) + (xy 126.207528 112.959056) + (xy 126.110009 112.911387) + (xy 126.106458 112.909651) + (xy 126.106457 112.909651) + (xy 126.102098 112.90752) + (xy 126.097295 112.906819) + (xy 126.097294 112.906819) + (xy 126.061804 112.901642) + (xy 126.033411 112.8975) + (xy 125.750749 112.8975) + (xy 125.46659 112.897501) + (xy 125.397305 112.907699) + (xy 125.392947 112.909839) + (xy 125.392946 112.909839) + (xy 125.389793 112.911387) + (xy 125.291964 112.959419) + (xy 125.288318 112.963071) + (xy 125.288317 112.963072) + (xy 125.212704 113.038817) + (xy 125.212702 113.038819) + (xy 125.209056 113.042472) + (xy 125.204399 113.052) + (xy 125.159943 113.142946) + (xy 125.15752 113.147902) + (xy 125.156819 113.152705) + (xy 125.156819 113.152706) + (xy 125.155692 113.160431) + (xy 125.1475 113.216589) + (xy 125.1475 113.2215) + (xy 125.129194 113.265694) + (xy 125.085 113.284) + (xy 123.830002 113.284) + (xy 123.785808 113.265694) + (xy 123.459306 112.939191) + (xy 123.441 112.894997) + (xy 123.441 112.694) + (xy 123.459306 112.649806) + (xy 123.5035 112.6315) + (xy 129.2465 112.6315) + (xy 129.290694 112.649806) + (xy 129.309 112.694) + (xy 129.309 112.835001) + (xy 129.290694 112.879195) + (xy 129.2465 112.897501) + (xy 129.203182 112.897501) + (xy 129.20117 112.897766) + (xy 129.201167 112.897766) + (xy 129.157492 112.903515) + (xy 129.157491 112.903515) + (xy 129.152752 112.904139) + (xy 129.148418 112.90616) + (xy 129.116841 112.920885) + (xy 129.042086 112.955744) + (xy 128.955744 113.042086) + (xy 128.904139 113.152752) + (xy 128.8975 113.203181) + (xy 128.897501 113.721818) + (xy 128.897766 113.72383) + (xy 128.897766 113.723833) + (xy 128.901528 113.752415) + (xy 128.904139 113.772248) + (xy 128.955744 113.882914) + (xy 129.042086 113.969256) + (xy 129.152752 114.020861) + (xy 129.170078 114.023142) + (xy 129.20115 114.027233) + (xy 129.201156 114.027233) + (xy 129.203181 114.0275) + (xy 129.205228 114.0275) + (xy 129.500799 114.027499) + (xy 129.796818 114.027499) + (xy 129.79883 114.027234) + (xy 129.798833 114.027234) + (xy 129.842508 114.021485) + (xy 129.842509 114.021485) + (xy 129.847248 114.020861) + (xy 129.908188 113.992444) + (xy 129.952956 113.971568) + (xy 129.957914 113.969256) + (xy 130.044256 113.882914) + (xy 130.095861 113.772248) + (xy 130.09879 113.75) + (xy 130.101281 113.731083) + (xy 130.898001 113.731083) + (xy 130.898333 113.735614) + (xy 130.907478 113.797743) + (xy 130.910326 113.80691) + (xy 130.957556 113.903105) + (xy 130.963484 113.911387) + (xy 131.039111 113.986883) + (xy 131.047406 113.992799) + (xy 131.143687 114.039863) + (xy 131.152851 114.042695) + (xy 131.214391 114.051672) + (xy 131.218904 114.052) + (xy 131.424069 114.052) + (xy 131.432859 114.048359) + (xy 131.4365 114.039569) + (xy 131.4365 114.039568) + (xy 131.5635 114.039568) + (xy 131.567141 114.048358) + (xy 131.575931 114.051999) + (xy 131.781083 114.051999) + (xy 131.785614 114.051667) + (xy 131.847743 114.042522) + (xy 131.85691 114.039674) + (xy 131.953105 113.992444) + (xy 131.961387 113.986516) + (xy 132.036883 113.910889) + (xy 132.042799 113.902594) + (xy 132.089863 113.806313) + (xy 132.092695 113.797149) + (xy 132.101672 113.735609) + (xy 132.102 113.731096) + (xy 132.102 113.731083) + (xy 132.898001 113.731083) + (xy 132.898333 113.735614) + (xy 132.907478 113.797743) + (xy 132.910326 113.80691) + (xy 132.957556 113.903105) + (xy 132.963484 113.911387) + (xy 133.039111 113.986883) + (xy 133.047406 113.992799) + (xy 133.143687 114.039863) + (xy 133.152851 114.042695) + (xy 133.214391 114.051672) + (xy 133.218904 114.052) + (xy 133.424069 114.052) + (xy 133.432859 114.048359) + (xy 133.4365 114.039569) + (xy 133.4365 114.039568) + (xy 133.5635 114.039568) + (xy 133.567141 114.048358) + (xy 133.575931 114.051999) + (xy 133.781083 114.051999) + (xy 133.785614 114.051667) + (xy 133.847743 114.042522) + (xy 133.85691 114.039674) + (xy 133.953105 113.992444) + (xy 133.961387 113.986516) + (xy 134.036883 113.910889) + (xy 134.042799 113.902594) + (xy 134.089863 113.806313) + (xy 134.092695 113.797149) + (xy 134.101672 113.735609) + (xy 134.102 113.731096) + (xy 134.102 113.550931) + (xy 134.098359 113.542141) + (xy 134.089569 113.5385) + (xy 133.575931 113.5385) + (xy 133.567141 113.542141) + (xy 133.5635 113.550931) + (xy 133.5635 114.039568) + (xy 133.4365 114.039568) + (xy 133.4365 113.550931) + (xy 133.432859 113.542141) + (xy 133.424069 113.5385) + (xy 132.910432 113.5385) + (xy 132.901642 113.542141) + (xy 132.898001 113.550931) + (xy 132.898001 113.731083) + (xy 132.102 113.731083) + (xy 132.102 113.550931) + (xy 132.098359 113.542141) + (xy 132.089569 113.5385) + (xy 131.575931 113.5385) + (xy 131.567141 113.542141) + (xy 131.5635 113.550931) + (xy 131.5635 114.039568) + (xy 131.4365 114.039568) + (xy 131.4365 113.550931) + (xy 131.432859 113.542141) + (xy 131.424069 113.5385) + (xy 130.910432 113.5385) + (xy 130.901642 113.542141) + (xy 130.898001 113.550931) + (xy 130.898001 113.731083) + (xy 130.101281 113.731083) + (xy 130.102233 113.72385) + (xy 130.102233 113.723844) + (xy 130.1025 113.721819) + (xy 130.102499 113.399069) + (xy 130.898 113.399069) + (xy 130.901641 113.407859) + (xy 130.910431 113.4115) + (xy 131.424069 113.4115) + (xy 131.432859 113.407859) + (xy 131.4365 113.399069) + (xy 131.5635 113.399069) + (xy 131.567141 113.407859) + (xy 131.575931 113.4115) + (xy 132.089568 113.4115) + (xy 132.098358 113.407859) + (xy 132.101999 113.399069) + (xy 132.898 113.399069) + (xy 132.901641 113.407859) + (xy 132.910431 113.4115) + (xy 133.424069 113.4115) + (xy 133.432859 113.407859) + (xy 133.4365 113.399069) + (xy 133.5635 113.399069) + (xy 133.567141 113.407859) + (xy 133.575931 113.4115) + (xy 134.089568 113.4115) + (xy 134.098358 113.407859) + (xy 134.101999 113.399069) + (xy 134.101999 113.218917) + (xy 134.101667 113.214386) + (xy 134.092522 113.152257) + (xy 134.089674 113.14309) + (xy 134.042444 113.046895) + (xy 134.036516 113.038613) + (xy 133.960889 112.963117) + (xy 133.952594 112.957201) + (xy 133.856313 112.910137) + (xy 133.847149 112.907305) + (xy 133.785609 112.898328) + (xy 133.781096 112.898) + (xy 133.575931 112.898) + (xy 133.567141 112.901641) + (xy 133.5635 112.910431) + (xy 133.5635 113.399069) + (xy 133.4365 113.399069) + (xy 133.4365 112.910432) + (xy 133.432859 112.901642) + (xy 133.424069 112.898001) + (xy 133.218917 112.898001) + (xy 133.214386 112.898333) + (xy 133.152257 112.907478) + (xy 133.14309 112.910326) + (xy 133.046895 112.957556) + (xy 133.038613 112.963484) + (xy 132.963117 113.039111) + (xy 132.957201 113.047406) + (xy 132.910137 113.143687) + (xy 132.907305 113.152851) + (xy 132.898328 113.214391) + (xy 132.898 113.218904) + (xy 132.898 113.399069) + (xy 132.101999 113.399069) + (xy 132.101999 113.218917) + (xy 132.101667 113.214386) + (xy 132.092522 113.152257) + (xy 132.089674 113.14309) + (xy 132.042444 113.046895) + (xy 132.036516 113.038613) + (xy 131.960889 112.963117) + (xy 131.952594 112.957201) + (xy 131.856313 112.910137) + (xy 131.847149 112.907305) + (xy 131.785609 112.898328) + (xy 131.781096 112.898) + (xy 131.575931 112.898) + (xy 131.567141 112.901641) + (xy 131.5635 112.910431) + (xy 131.5635 113.399069) + (xy 131.4365 113.399069) + (xy 131.4365 112.910432) + (xy 131.432859 112.901642) + (xy 131.424069 112.898001) + (xy 131.218917 112.898001) + (xy 131.214386 112.898333) + (xy 131.152257 112.907478) + (xy 131.14309 112.910326) + (xy 131.046895 112.957556) + (xy 131.038613 112.963484) + (xy 130.963117 113.039111) + (xy 130.957201 113.047406) + (xy 130.910137 113.143687) + (xy 130.907305 113.152851) + (xy 130.898328 113.214391) + (xy 130.898 113.218904) + (xy 130.898 113.399069) + (xy 130.102499 113.399069) + (xy 130.102499 113.203182) + (xy 130.096889 113.160558) + (xy 130.096485 113.157492) + (xy 130.096485 113.157491) + (xy 130.095861 113.152752) + (xy 130.044256 113.042086) + (xy 129.957914 112.955744) + (xy 129.847248 112.904139) + (xy 129.828274 112.901641) + (xy 129.79885 112.897767) + (xy 129.798844 112.897767) + (xy 129.796819 112.8975) + (xy 129.7535 112.8975) + (xy 129.709306 112.879194) + (xy 129.691 112.835) + (xy 129.691 112.694) + (xy 129.709306 112.649806) + (xy 129.7535 112.6315) + (xy 135.033939 112.6315) + (xy 135.060635 112.63754) + (xy 135.064064 112.639823) + (xy 135.068316 112.641151) + (xy 135.068317 112.641152) + (xy 135.100296 112.651143) + (xy 135.110027 112.655109) + (xy 135.112799 112.656521) + (xy 135.112803 112.656522) + (xy 135.117187 112.658756) + (xy 135.127852 112.660445) + (xy 135.136713 112.66252) + (xy 135.176696 112.675012) + (xy 135.176699 112.675012) + (xy 135.180948 112.67634) + (xy 135.230069 112.677241) + (xy 135.238683 112.677999) + (xy 135.245142 112.679022) + (xy 135.245144 112.679022) + (xy 135.247341 112.67937) + (xy 135.250003 112.679792) + (xy 135.249902 112.680431) + (xy 135.290694 112.697328) + (xy 135.309 112.741522) + (xy 135.309 112.835001) + (xy 135.290694 112.879195) + (xy 135.2465 112.897501) + (xy 135.203182 112.897501) + (xy 135.20117 112.897766) + (xy 135.201167 112.897766) + (xy 135.157492 112.903515) + (xy 135.157491 112.903515) + (xy 135.152752 112.904139) + (xy 135.148418 112.90616) + (xy 135.116841 112.920885) + (xy 135.042086 112.955744) + (xy 134.955744 113.042086) + (xy 134.904139 113.152752) + (xy 134.8975 113.203181) + (xy 134.897501 113.721818) + (xy 134.897766 113.72383) + (xy 134.897766 113.723833) + (xy 134.901528 113.752415) + (xy 134.904139 113.772248) + (xy 134.955744 113.882914) + (xy 135.042086 113.969256) + (xy 135.152752 114.020861) + (xy 135.170078 114.023142) + (xy 135.20115 114.027233) + (xy 135.201156 114.027233) + (xy 135.203181 114.0275) + (xy 135.205228 114.0275) + (xy 135.500799 114.027499) + (xy 135.796818 114.027499) + (xy 135.79883 114.027234) + (xy 135.798833 114.027234) + (xy 135.842508 114.021485) + (xy 135.842509 114.021485) + (xy 135.847248 114.020861) + (xy 135.908188 113.992444) + (xy 135.952956 113.971568) + (xy 135.957914 113.969256) + (xy 136.044256 113.882914) + (xy 136.095861 113.772248) + (xy 136.09879 113.75) + (xy 136.102233 113.72385) + (xy 136.102233 113.723844) + (xy 136.1025 113.721819) + (xy 136.1025 113.674069) + (xy 145.398 113.674069) + (xy 145.401641 113.682859) + (xy 145.410431 113.6865) + (xy 145.899069 113.6865) + (xy 145.907859 113.682859) + (xy 145.9115 113.674069) + (xy 146.0385 113.674069) + (xy 146.042141 113.682859) + (xy 146.050931 113.6865) + (xy 146.539568 113.6865) + (xy 146.548358 113.682859) + (xy 146.551999 113.674069) + (xy 146.551999 113.468917) + (xy 146.551667 113.464386) + (xy 146.542522 113.402257) + (xy 146.539674 113.39309) + (xy 146.492444 113.296895) + (xy 146.486516 113.288613) + (xy 146.410889 113.213117) + (xy 146.402594 113.207201) + (xy 146.306313 113.160137) + (xy 146.297149 113.157305) + (xy 146.235609 113.148328) + (xy 146.231096 113.148) + (xy 146.050931 113.148) + (xy 146.042141 113.151641) + (xy 146.0385 113.160431) + (xy 146.0385 113.674069) + (xy 145.9115 113.674069) + (xy 145.9115 113.160432) + (xy 145.907859 113.151642) + (xy 145.899069 113.148001) + (xy 145.718917 113.148001) + (xy 145.714386 113.148333) + (xy 145.652257 113.157478) + (xy 145.64309 113.160326) + (xy 145.546895 113.207556) + (xy 145.538613 113.213484) + (xy 145.463117 113.289111) + (xy 145.457201 113.297406) + (xy 145.410137 113.393687) + (xy 145.407305 113.402851) + (xy 145.398328 113.464391) + (xy 145.398 113.468904) + (xy 145.398 113.674069) + (xy 136.1025 113.674069) + (xy 136.102499 113.203182) + (xy 136.096889 113.160558) + (xy 136.096485 113.157492) + (xy 136.096485 113.157491) + (xy 136.095861 113.152752) + (xy 136.044256 113.042086) + (xy 135.957914 112.955744) + (xy 135.847248 112.904139) + (xy 135.828274 112.901641) + (xy 135.79885 112.897767) + (xy 135.798844 112.897767) + (xy 135.796819 112.8975) + (xy 135.7535 112.8975) + (xy 135.709306 112.879194) + (xy 135.691 112.835) + (xy 135.691 112.694) + (xy 135.709306 112.649806) + (xy 135.7535 112.6315) + (xy 149.056 112.6315) + (xy 149.100194 112.649806) + (xy 149.1185 112.694) + (xy 149.1185 113.4965) + (xy 149.100194 113.540694) + (xy 149.056 113.559) + (xy 148.164999 113.559) + (xy 148.120805 113.540694) + (xy 148.102499 113.4965) + (xy 148.102499 113.46659) + (xy 148.092301 113.397305) + (xy 148.040581 113.291964) + (xy 148.032603 113.284) + (xy 147.961183 113.212704) + (xy 147.961181 113.212702) + (xy 147.957528 113.209056) + (xy 147.868358 113.165468) + (xy 147.856458 113.159651) + (xy 147.856457 113.159651) + (xy 147.852098 113.15752) + (xy 147.847295 113.156819) + (xy 147.847294 113.156819) + (xy 147.825341 113.153617) + (xy 147.783411 113.1475) + (xy 147.525683 113.1475) + (xy 147.26659 113.147501) + (xy 147.197305 113.157699) + (xy 147.192947 113.159839) + (xy 147.192946 113.159839) + (xy 147.191482 113.160558) + (xy 147.091964 113.209419) + (xy 147.088318 113.213071) + (xy 147.088317 113.213072) + (xy 147.012704 113.288817) + (xy 147.012702 113.288819) + (xy 147.009056 113.292472) + (xy 146.982574 113.346648) + (xy 146.959943 113.392946) + (xy 146.95752 113.397902) + (xy 146.956819 113.402705) + (xy 146.956819 113.402706) + (xy 146.955542 113.411461) + (xy 146.9475 113.466589) + (xy 146.947501 114.03341) + (xy 146.957699 114.102695) + (xy 147.009419 114.208036) + (xy 147.013071 114.211682) + (xy 147.013072 114.211683) + (xy 147.088817 114.287296) + (xy 147.088819 114.287298) + (xy 147.092472 114.290944) + (xy 147.165762 114.326769) + (xy 147.193158 114.340161) + (xy 147.197902 114.34248) + (xy 147.202705 114.343181) + (xy 147.202706 114.343181) + (xy 147.224659 114.346383) + (xy 147.266589 114.3525) + (xy 147.524317 114.3525) + (xy 147.78341 114.352499) + (xy 147.852695 114.342301) + (xy 147.85826 114.339569) + (xy 147.876223 114.330749) + (xy 147.958036 114.290581) + (xy 147.962094 114.286516) + (xy 148.037296 114.211183) + (xy 148.037298 114.211181) + (xy 148.040944 114.207528) + (xy 148.090008 114.107156) + (xy 148.090349 114.106458) + (xy 148.090349 114.106457) + (xy 148.09248 114.102098) + (xy 148.093218 114.097043) + (xy 148.100319 114.048359) + (xy 148.1025 114.033411) + (xy 148.1025 114.0035) + (xy 148.120806 113.959306) + (xy 148.165 113.941) + (xy 149.076187 113.941) + (xy 149.120381 113.959306) + (xy 149.129248 113.970473) + (xy 149.13154 113.974155) + (xy 149.133333 113.97823) + (xy 149.147272 113.994813) + (xy 149.148029 113.995713) + (xy 149.150157 113.998434) + (xy 149.152292 114.002625) + (xy 149.160081 114.010414) + (xy 149.16373 114.014392) + (xy 149.195342 114.051999) + (xy 149.212127 114.071968) + (xy 149.235399 114.087459) + (xy 149.241836 114.092733) + (xy 149.243899 114.094232) + (xy 149.247375 114.097708) + (xy 149.251753 114.099939) + (xy 149.251756 114.099941) + (xy 149.25873 114.103494) + (xy 149.264983 114.107152) + (xy 149.27846 114.116123) + (xy 149.281134 114.117903) + (xy 149.307778 114.157631) + (xy 149.309 114.169929) + (xy 149.309 115.085001) + (xy 149.290694 115.129195) + (xy 149.2465 115.147501) + (xy 149.21659 115.147501) + (xy 149.147305 115.157699) + (xy 149.142947 115.159839) + (xy 149.142946 115.159839) + (xy 149.127176 115.167582) + (xy 149.041964 115.209419) + (xy 149.038318 115.213071) + (xy 149.038317 115.213072) + (xy 148.962704 115.288817) + (xy 148.962702 115.288819) + (xy 148.959056 115.292472) + (xy 148.927779 115.356458) + (xy 148.909943 115.392946) + (xy 148.90752 115.397902) + (xy 148.906819 115.402705) + (xy 148.906819 115.402706) + (xy 148.905542 115.411461) + (xy 148.8975 115.466589) + (xy 148.897501 115.98341) + (xy 148.907699 116.052695) + (xy 148.909839 116.057053) + (xy 148.909839 116.057054) + (xy 148.915489 116.068561) + (xy 148.959419 116.158036) + (xy 148.963071 116.161682) + (xy 148.963072 116.161683) + (xy 149.038817 116.237296) + (xy 149.038819 116.237298) + (xy 149.042472 116.240944) + (xy 149.115762 116.276769) + (xy 149.143158 116.290161) + (xy 149.147902 116.29248) + (xy 149.152705 116.293181) + (xy 149.152706 116.293181) + (xy 149.174659 116.296383) + (xy 149.216589 116.3025) + (xy 149.499251 116.3025) + (xy 149.78341 116.302499) + (xy 149.852695 116.292301) + (xy 149.958036 116.240581) + (xy 149.961683 116.236928) + (xy 150.037296 116.161183) + (xy 150.037298 116.161181) + (xy 150.040944 116.157528) + (xy 150.076769 116.084238) + (xy 150.090349 116.056458) + (xy 150.090349 116.056457) + (xy 150.09248 116.052098) + (xy 150.094764 116.036445) + (xy 150.096383 116.025341) + (xy 150.1025 115.983411) + (xy 150.102499 115.46659) + (xy 150.102499 115.466589) + (xy 155.6475 115.466589) + (xy 155.647501 115.98341) + (xy 155.657699 116.052695) + (xy 155.659839 116.057053) + (xy 155.659839 116.057054) + (xy 155.665489 116.068561) + (xy 155.709419 116.158036) + (xy 155.713071 116.161682) + (xy 155.713072 116.161683) + (xy 155.788817 116.237296) + (xy 155.788819 116.237298) + (xy 155.792472 116.240944) + (xy 155.865762 116.276769) + (xy 155.893158 116.290161) + (xy 155.897902 116.29248) + (xy 155.902705 116.293181) + (xy 155.902706 116.293181) + (xy 155.924659 116.296383) + (xy 155.966589 116.3025) + (xy 156.249251 116.3025) + (xy 156.53341 116.302499) + (xy 156.602695 116.292301) + (xy 156.708036 116.240581) + (xy 156.711683 116.236928) + (xy 156.787296 116.161183) + (xy 156.787298 116.161181) + (xy 156.790944 116.157528) + (xy 156.826769 116.084238) + (xy 156.840349 116.056458) + (xy 156.840349 116.056457) + (xy 156.84248 116.052098) + (xy 156.844764 116.036445) + (xy 156.846383 116.025341) + (xy 156.8525 115.983411) + (xy 156.852499 115.46659) + (xy 156.842301 115.397305) + (xy 156.790581 115.291964) + (xy 156.782012 115.28341) + (xy 156.709345 115.210869) + (xy 156.691 115.166636) + (xy 156.691 114.169384) + (xy 156.709306 114.12519) + (xy 156.720797 114.116123) + (xy 156.739712 114.104509) + (xy 156.744034 114.102085) + (xy 156.752625 114.097708) + (xy 156.755427 114.094906) + (xy 156.756264 114.094346) + (xy 156.758891 114.092733) + (xy 156.775881 114.082301) + (xy 156.858058 113.991513) + (xy 156.911451 113.881311) + (xy 156.913317 113.870224) + (xy 156.931367 113.762928) + (xy 156.931767 113.760552) + (xy 156.931896 113.75) + (xy 156.93114 113.744724) + (xy 163.568136 113.744724) + (xy 163.568713 113.749137) + (xy 163.568713 113.749138) + (xy 163.582655 113.855751) + (xy 163.584014 113.866145) + (xy 163.591185 113.882443) + (xy 163.591244 113.882813) + (xy 163.592007 113.884311) + (xy 163.594031 113.88891) + (xy 163.594031 113.888911) + (xy 163.630402 113.971568) + (xy 163.633333 113.97823) + (xy 163.647272 113.994813) + (xy 163.648029 113.995713) + (xy 163.650157 113.998434) + (xy 163.652292 114.002625) + (xy 163.660081 114.010414) + (xy 163.66373 114.014392) + (xy 163.695342 114.051999) + (xy 163.712127 114.071968) + (xy 163.735399 114.087459) + (xy 163.741836 114.092733) + (xy 163.743899 114.094232) + (xy 163.747375 114.097708) + (xy 163.751753 114.099939) + (xy 163.751756 114.099941) + (xy 163.75873 114.103494) + (xy 163.764983 114.107152) + (xy 163.77846 114.116123) + (xy 163.781134 114.117903) + (xy 163.807778 114.157631) + (xy 163.809 114.169929) + (xy 163.809 115.166496) + (xy 163.790733 115.210652) + (xy 163.712704 115.288817) + (xy 163.712702 115.288819) + (xy 163.709056 115.292472) + (xy 163.677779 115.356458) + (xy 163.659943 115.392946) + (xy 163.65752 115.397902) + (xy 163.656819 115.402705) + (xy 163.656819 115.402706) + (xy 163.655542 115.411461) + (xy 163.6475 115.466589) + (xy 163.647501 115.98341) + (xy 163.657699 116.052695) + (xy 163.659839 116.057053) + (xy 163.659839 116.057054) + (xy 163.665489 116.068561) + (xy 163.709419 116.158036) + (xy 163.713071 116.161682) + (xy 163.713072 116.161683) + (xy 163.788817 116.237296) + (xy 163.788819 116.237298) + (xy 163.792472 116.240944) + (xy 163.865762 116.276769) + (xy 163.893158 116.290161) + (xy 163.897902 116.29248) + (xy 163.902705 116.293181) + (xy 163.902706 116.293181) + (xy 163.924659 116.296383) + (xy 163.966589 116.3025) + (xy 164.249251 116.3025) + (xy 164.53341 116.302499) + (xy 164.602695 116.292301) + (xy 164.708036 116.240581) + (xy 164.711683 116.236928) + (xy 164.787296 116.161183) + (xy 164.787298 116.161181) + (xy 164.790944 116.157528) + (xy 164.826769 116.084238) + (xy 164.840349 116.056458) + (xy 164.840349 116.056457) + (xy 164.84248 116.052098) + (xy 164.844764 116.036445) + (xy 164.846383 116.025341) + (xy 164.8525 115.983411) + (xy 164.852499 115.46659) + (xy 164.852499 115.466589) + (xy 166.3975 115.466589) + (xy 166.397501 115.98341) + (xy 166.407699 116.052695) + (xy 166.409839 116.057053) + (xy 166.409839 116.057054) + (xy 166.415489 116.068561) + (xy 166.459419 116.158036) + (xy 166.463071 116.161682) + (xy 166.463072 116.161683) + (xy 166.538817 116.237296) + (xy 166.538819 116.237298) + (xy 166.542472 116.240944) + (xy 166.615762 116.276769) + (xy 166.643158 116.290161) + (xy 166.647902 116.29248) + (xy 166.652705 116.293181) + (xy 166.652706 116.293181) + (xy 166.674659 116.296383) + (xy 166.716589 116.3025) + (xy 166.999251 116.3025) + (xy 167.28341 116.302499) + (xy 167.352695 116.292301) + (xy 167.458036 116.240581) + (xy 167.461683 116.236928) + (xy 167.537296 116.161183) + (xy 167.537298 116.161181) + (xy 167.540944 116.157528) + (xy 167.576769 116.084238) + (xy 167.590349 116.056458) + (xy 167.590349 116.056457) + (xy 167.59248 116.052098) + (xy 167.594764 116.036445) + (xy 167.596383 116.025341) + (xy 167.6025 115.983411) + (xy 167.602499 115.46659) + (xy 167.592301 115.397305) + (xy 167.540581 115.291964) + (xy 167.529681 115.281083) + (xy 167.461183 115.212704) + (xy 167.461181 115.212702) + (xy 167.457528 115.209056) + (xy 167.377701 115.170035) + (xy 167.356458 115.159651) + (xy 167.356457 115.159651) + (xy 167.352098 115.15752) + (xy 167.347295 115.156819) + (xy 167.347294 115.156819) + (xy 167.31626 115.152292) + (xy 167.283411 115.1475) + (xy 167.2535 115.1475) + (xy 167.209306 115.129194) + (xy 167.191 115.085) + (xy 167.191 114.169384) + (xy 167.209306 114.12519) + (xy 167.220797 114.116123) + (xy 167.239712 114.104509) + (xy 167.244034 114.102085) + (xy 167.252625 114.097708) + (xy 167.255427 114.094906) + (xy 167.256264 114.094346) + (xy 167.258891 114.092733) + (xy 167.275881 114.082301) + (xy 167.358058 113.991513) + (xy 167.411451 113.881311) + (xy 167.413317 113.870224) + (xy 167.431367 113.762928) + (xy 167.431767 113.760552) + (xy 167.431896 113.75) + (xy 167.414536 113.628781) + (xy 167.387105 113.568449) + (xy 167.3815 113.542581) + (xy 167.3815 111.0035) + (xy 167.399806 110.959306) + (xy 167.444 110.941) + (xy 168.335001 110.941) + (xy 168.379195 110.959306) + (xy 168.397501 111.0035) + (xy 168.397501 111.03341) + (xy 168.407699 111.102695) + (xy 168.409839 111.107053) + (xy 168.409839 111.107054) + (xy 168.414303 111.116145) + (xy 168.459419 111.208036) + (xy 168.463071 111.211682) + (xy 168.463072 111.211683) + (xy 168.538817 111.287296) + (xy 168.538819 111.287298) + (xy 168.542472 111.290944) + (xy 168.610982 111.324433) + (xy 168.643158 111.340161) + (xy 168.647902 111.34248) + (xy 168.652705 111.343181) + (xy 168.652706 111.343181) + (xy 168.674659 111.346383) + (xy 168.716589 111.3525) + (xy 168.974317 111.3525) + (xy 169.23341 111.352499) + (xy 169.302695 111.342301) + (xy 169.30826 111.339569) + (xy 169.344108 111.321968) + (xy 169.408036 111.290581) + (xy 169.412094 111.286516) + (xy 169.487296 111.211183) + (xy 169.487298 111.211181) + (xy 169.490944 111.207528) + (xy 169.537774 111.111726) + (xy 169.540349 111.106458) + (xy 169.540349 111.106457) + (xy 169.54248 111.102098) + (xy 169.5525 111.033411) + (xy 169.5525 111.031083) + (xy 169.948001 111.031083) + (xy 169.948333 111.035614) + (xy 169.957478 111.097743) + (xy 169.960326 111.10691) + (xy 170.007556 111.203105) + (xy 170.013484 111.211387) + (xy 170.089111 111.286883) + (xy 170.097406 111.292799) + (xy 170.193687 111.339863) + (xy 170.202851 111.342695) + (xy 170.264391 111.351672) + (xy 170.268904 111.352) + (xy 170.449069 111.352) + (xy 170.457859 111.348359) + (xy 170.4615 111.339569) + (xy 170.4615 111.339568) + (xy 170.5885 111.339568) + (xy 170.592141 111.348358) + (xy 170.600931 111.351999) + (xy 170.781083 111.351999) + (xy 170.785614 111.351667) + (xy 170.847743 111.342522) + (xy 170.85691 111.339674) + (xy 170.953105 111.292444) + (xy 170.961387 111.286516) + (xy 171.036883 111.210889) + (xy 171.042799 111.202594) + (xy 171.089863 111.106313) + (xy 171.092695 111.097149) + (xy 171.101672 111.035609) + (xy 171.102 111.031096) + (xy 171.102 110.825931) + (xy 171.098359 110.817141) + (xy 171.089569 110.8135) + (xy 170.600931 110.8135) + (xy 170.592141 110.817141) + (xy 170.5885 110.825931) + (xy 170.5885 111.339568) + (xy 170.4615 111.339568) + (xy 170.4615 110.825931) + (xy 170.457859 110.817141) + (xy 170.449069 110.8135) + (xy 169.960432 110.8135) + (xy 169.951642 110.817141) + (xy 169.948001 110.825931) + (xy 169.948001 111.031083) + (xy 169.5525 111.031083) + (xy 169.552499 110.674069) + (xy 169.948 110.674069) + (xy 169.951641 110.682859) + (xy 169.960431 110.6865) + (xy 170.449069 110.6865) + (xy 170.457859 110.682859) + (xy 170.4615 110.674069) + (xy 170.5885 110.674069) + (xy 170.592141 110.682859) + (xy 170.600931 110.6865) + (xy 171.089568 110.6865) + (xy 171.098358 110.682859) + (xy 171.101999 110.674069) + (xy 171.101999 110.468917) + (xy 171.101667 110.464386) + (xy 171.092522 110.402257) + (xy 171.089674 110.39309) + (xy 171.042444 110.296895) + (xy 171.036516 110.288613) + (xy 170.960889 110.213117) + (xy 170.952594 110.207201) + (xy 170.856313 110.160137) + (xy 170.847149 110.157305) + (xy 170.785609 110.148328) + (xy 170.781096 110.148) + (xy 170.600931 110.148) + (xy 170.592141 110.151641) + (xy 170.5885 110.160431) + (xy 170.5885 110.674069) + (xy 170.4615 110.674069) + (xy 170.4615 110.160432) + (xy 170.457859 110.151642) + (xy 170.449069 110.148001) + (xy 170.268917 110.148001) + (xy 170.264386 110.148333) + (xy 170.202257 110.157478) + (xy 170.19309 110.160326) + (xy 170.096895 110.207556) + (xy 170.088613 110.213484) + (xy 170.013117 110.289111) + (xy 170.007201 110.297406) + (xy 169.960137 110.393687) + (xy 169.957305 110.402851) + (xy 169.948328 110.464391) + (xy 169.948 110.468904) + (xy 169.948 110.674069) + (xy 169.552499 110.674069) + (xy 169.552499 110.46659) + (xy 169.542301 110.397305) + (xy 169.490581 110.291964) + (xy 169.470317 110.271735) + (xy 169.411183 110.212704) + (xy 169.411181 110.212702) + (xy 169.407528 110.209056) + (xy 169.334238 110.173231) + (xy 169.306458 110.159651) + (xy 169.306457 110.159651) + (xy 169.302098 110.15752) + (xy 169.297295 110.156819) + (xy 169.297294 110.156819) + (xy 169.261804 110.151642) + (xy 169.233411 110.1475) + (xy 168.975683 110.1475) + (xy 168.71659 110.147501) + (xy 168.647305 110.157699) + (xy 168.642947 110.159839) + (xy 168.642946 110.159839) + (xy 168.634787 110.163845) + (xy 168.541964 110.209419) + (xy 168.538318 110.213071) + (xy 168.538317 110.213072) + (xy 168.462704 110.288817) + (xy 168.462702 110.288819) + (xy 168.459056 110.292472) + (xy 168.430443 110.351007) + (xy 168.409943 110.392946) + (xy 168.40752 110.397902) + (xy 168.3975 110.466589) + (xy 168.3975 110.4965) + (xy 168.379194 110.540694) + (xy 168.335 110.559) + (xy 167.444 110.559) + (xy 167.399806 110.540694) + (xy 167.3815 110.4965) + (xy 167.3815 106.5035) + (xy 167.399806 106.459306) + (xy 167.444 106.441) + (xy 168.335001 106.441) + (xy 168.379195 106.459306) + (xy 168.397501 106.5035) + (xy 168.397501 106.53341) + (xy 168.407699 106.602695) + (xy 168.409839 106.607053) + (xy 168.409839 106.607054) + (xy 168.414303 106.616145) + (xy 168.459419 106.708036) + (xy 168.463071 106.711682) + (xy 168.463072 106.711683) + (xy 168.538817 106.787296) + (xy 168.538819 106.787298) + (xy 168.542472 106.790944) + (xy 168.610982 106.824433) + (xy 168.643158 106.840161) + (xy 168.647902 106.84248) + (xy 168.652705 106.843181) + (xy 168.652706 106.843181) + (xy 168.660693 106.844346) + (xy 168.716589 106.8525) + (xy 168.974317 106.8525) + (xy 169.23341 106.852499) + (xy 169.302695 106.842301) + (xy 169.30826 106.839569) + (xy 169.344108 106.821968) + (xy 169.408036 106.790581) + (xy 169.412094 106.786516) + (xy 169.487296 106.711183) + (xy 169.487298 106.711181) + (xy 169.490944 106.707528) + (xy 169.539568 106.608056) + (xy 169.540349 106.606458) + (xy 169.540349 106.606457) + (xy 169.54248 106.602098) + (xy 169.543218 106.597043) + (xy 169.54713 106.570222) + (xy 169.5525 106.533411) + (xy 169.5525 106.531083) + (xy 169.948001 106.531083) + (xy 169.948333 106.535614) + (xy 169.957478 106.597743) + (xy 169.960326 106.60691) + (xy 170.007556 106.703105) + (xy 170.013484 106.711387) + (xy 170.089111 106.786883) + (xy 170.097406 106.792799) + (xy 170.193687 106.839863) + (xy 170.202851 106.842695) + (xy 170.264391 106.851672) + (xy 170.268904 106.852) + (xy 170.449069 106.852) + (xy 170.457859 106.848359) + (xy 170.4615 106.839569) + (xy 170.4615 106.839568) + (xy 170.5885 106.839568) + (xy 170.592141 106.848358) + (xy 170.600931 106.851999) + (xy 170.781083 106.851999) + (xy 170.785614 106.851667) + (xy 170.847743 106.842522) + (xy 170.85691 106.839674) + (xy 170.953105 106.792444) + (xy 170.961387 106.786516) + (xy 171.036883 106.710889) + (xy 171.042799 106.702594) + (xy 171.089863 106.606313) + (xy 171.092695 106.597149) + (xy 171.101672 106.535609) + (xy 171.102 106.531096) + (xy 171.102 106.325931) + (xy 171.098359 106.317141) + (xy 171.089569 106.3135) + (xy 170.600931 106.3135) + (xy 170.592141 106.317141) + (xy 170.5885 106.325931) + (xy 170.5885 106.839568) + (xy 170.4615 106.839568) + (xy 170.4615 106.325931) + (xy 170.457859 106.317141) + (xy 170.449069 106.3135) + (xy 169.960432 106.3135) + (xy 169.951642 106.317141) + (xy 169.948001 106.325931) + (xy 169.948001 106.531083) + (xy 169.5525 106.531083) + (xy 169.552499 106.174069) + (xy 169.948 106.174069) + (xy 169.951641 106.182859) + (xy 169.960431 106.1865) + (xy 170.449069 106.1865) + (xy 170.457859 106.182859) + (xy 170.4615 106.174069) + (xy 170.5885 106.174069) + (xy 170.592141 106.182859) + (xy 170.600931 106.1865) + (xy 171.089568 106.1865) + (xy 171.098358 106.182859) + (xy 171.101999 106.174069) + (xy 171.101999 105.968917) + (xy 171.101667 105.964386) + (xy 171.092522 105.902257) + (xy 171.089674 105.89309) + (xy 171.042444 105.796895) + (xy 171.036516 105.788613) + (xy 170.960889 105.713117) + (xy 170.952594 105.707201) + (xy 170.856313 105.660137) + (xy 170.847149 105.657305) + (xy 170.785609 105.648328) + (xy 170.781096 105.648) + (xy 170.600931 105.648) + (xy 170.592141 105.651641) + (xy 170.5885 105.660431) + (xy 170.5885 106.174069) + (xy 170.4615 106.174069) + (xy 170.4615 105.660432) + (xy 170.457859 105.651642) + (xy 170.449069 105.648001) + (xy 170.268917 105.648001) + (xy 170.264386 105.648333) + (xy 170.202257 105.657478) + (xy 170.19309 105.660326) + (xy 170.096895 105.707556) + (xy 170.088613 105.713484) + (xy 170.013117 105.789111) + (xy 170.007201 105.797406) + (xy 169.960137 105.893687) + (xy 169.957305 105.902851) + (xy 169.948328 105.964391) + (xy 169.948 105.968904) + (xy 169.948 106.174069) + (xy 169.552499 106.174069) + (xy 169.552499 105.96659) + (xy 169.542301 105.897305) + (xy 169.537788 105.888112) + (xy 169.525086 105.862242) + (xy 169.490581 105.791964) + (xy 169.485905 105.787296) + (xy 169.411183 105.712704) + (xy 169.411181 105.712702) + (xy 169.407528 105.709056) + (xy 169.311646 105.662187) + (xy 169.306458 105.659651) + (xy 169.306457 105.659651) + (xy 169.302098 105.65752) + (xy 169.297295 105.656819) + (xy 169.297294 105.656819) + (xy 169.261804 105.651642) + (xy 169.233411 105.6475) + (xy 168.975683 105.6475) + (xy 168.71659 105.647501) + (xy 168.647305 105.657699) + (xy 168.642947 105.659839) + (xy 168.642946 105.659839) + (xy 168.64026 105.661158) + (xy 168.541964 105.709419) + (xy 168.538318 105.713071) + (xy 168.538317 105.713072) + (xy 168.462704 105.788817) + (xy 168.462702 105.788819) + (xy 168.459056 105.792472) + (xy 168.430118 105.851672) + (xy 168.409943 105.892946) + (xy 168.40752 105.897902) + (xy 168.406819 105.902705) + (xy 168.406819 105.902706) + (xy 168.406065 105.907874) + (xy 168.3975 105.966589) + (xy 168.3975 105.9965) + (xy 168.379194 106.040694) + (xy 168.335 106.059) + (xy 167.444 106.059) + (xy 167.399806 106.040694) + (xy 167.3815 105.9965) + (xy 167.3815 104.444) + (xy 167.399806 104.399806) + (xy 167.444 104.3815) + (xy 174.633939 104.3815) + (xy 174.660635 104.38754) + (xy 174.664064 104.389823) + (xy 174.668316 104.391151) + (xy 174.668317 104.391152) + (xy 174.700296 104.401143) + (xy 174.710027 104.405109) + (xy 174.712799 104.406521) + (xy 174.712803 104.406522) + (xy 174.717187 104.408756) + (xy 174.727852 104.410445) + (xy 174.736713 104.41252) + (xy 174.776696 104.425012) + (xy 174.776699 104.425012) + (xy 174.780948 104.42634) + (xy 174.830069 104.427241) + (xy 174.838683 104.427999) + (xy 174.84514 104.429022) + (xy 174.845144 104.429022) + (xy 174.85 104.429791) + (xy 174.856947 104.42869) + (xy 174.867853 104.427933) + (xy 174.903383 104.428584) + (xy 174.963532 104.412185) + (xy 174.97019 104.410755) + (xy 174.972147 104.410445) + (xy 174.982813 104.408756) + (xy 174.987196 104.406522) + (xy 174.991875 104.405002) + (xy 174.991878 104.40501) + (xy 174.996727 104.403136) + (xy 175.021527 104.396375) + (xy 175.026521 104.393309) + (xy 175.030706 104.390739) + (xy 175.063409 104.3815) + (xy 185.033939 104.3815) + (xy 185.060635 104.38754) + (xy 185.064064 104.389823) + (xy 185.068316 104.391151) + (xy 185.068317 104.391152) + (xy 185.100296 104.401143) + (xy 185.110027 104.405109) + (xy 185.112799 104.406521) + (xy 185.112803 104.406522) + (xy 185.117187 104.408756) + (xy 185.127852 104.410445) + (xy 185.136713 104.41252) + (xy 185.176696 104.425012) + (xy 185.176699 104.425012) + (xy 185.180948 104.42634) + (xy 185.230069 104.427241) + (xy 185.238683 104.427999) + (xy 185.24514 104.429022) + (xy 185.245144 104.429022) + (xy 185.25 104.429791) + (xy 185.256947 104.42869) + (xy 185.267853 104.427933) + (xy 185.303383 104.428584) + (xy 185.363532 104.412185) + (xy 185.37019 104.410755) + (xy 185.372147 104.410445) + (xy 185.382813 104.408756) + (xy 185.387196 104.406522) + (xy 185.391875 104.405002) + (xy 185.391878 104.40501) + (xy 185.396727 104.403136) + (xy 185.421527 104.396375) + (xy 185.426521 104.393309) + (xy 185.430706 104.390739) + (xy 185.463409 104.3815) + (xy 188.806 104.3815) + (xy 188.850194 104.399806) + (xy 188.8685 104.444) + (xy 188.8685 115.056) + (xy 188.850194 115.100194) + (xy 188.806 115.1185) + (xy 187.1035 115.1185) + (xy 187.059306 115.100194) + (xy 187.041 115.056) + (xy 187.041 114.664999) + (xy 187.059306 114.620805) + (xy 187.1035 114.602499) + (xy 187.13341 114.602499) + (xy 187.202695 114.592301) + (xy 187.209193 114.589111) + (xy 187.244108 114.571968) + (xy 187.308036 114.540581) + (xy 187.320164 114.528432) + (xy 187.387296 114.461183) + (xy 187.387298 114.461181) + (xy 187.390944 114.457528) + (xy 187.437774 114.361726) + (xy 187.440349 114.356458) + (xy 187.440349 114.356457) + (xy 187.44248 114.352098) + (xy 187.444293 114.339674) + (xy 187.451987 114.286928) + (xy 187.4525 114.283411) + (xy 187.452499 113.76659) + (xy 187.442301 113.697305) + (xy 187.390581 113.591964) + (xy 187.386928 113.588317) + (xy 187.311183 113.512704) + (xy 187.311181 113.512702) + (xy 187.307528 113.509056) + (xy 187.234238 113.473231) + (xy 187.206458 113.459651) + (xy 187.206457 113.459651) + (xy 187.202098 113.45752) + (xy 187.197295 113.456819) + (xy 187.197294 113.456819) + (xy 187.175341 113.453617) + (xy 187.133411 113.4475) + (xy 186.850749 113.4475) + (xy 186.56659 113.447501) + (xy 186.497305 113.457699) + (xy 186.391964 113.509419) + (xy 186.388318 113.513071) + (xy 186.388317 113.513072) + (xy 186.312704 113.588817) + (xy 186.312702 113.588819) + (xy 186.309056 113.592472) + (xy 186.282408 113.646988) + (xy 186.259943 113.692946) + (xy 186.25752 113.697902) + (xy 186.2475 113.766589) + (xy 186.247501 114.28341) + (xy 186.257699 114.352695) + (xy 186.309419 114.458036) + (xy 186.313071 114.461682) + (xy 186.313072 114.461683) + (xy 186.388817 114.537296) + (xy 186.388819 114.537298) + (xy 186.392472 114.540944) + (xy 186.460238 114.574069) + (xy 186.493158 114.590161) + (xy 186.497902 114.59248) + (xy 186.502705 114.593181) + (xy 186.502706 114.593181) + (xy 186.510693 114.594346) + (xy 186.566589 114.6025) + (xy 186.5965 114.6025) + (xy 186.640694 114.620806) + (xy 186.659 114.665) + (xy 186.659 115.080525) + (xy 186.640694 115.124719) + (xy 186.629855 115.13338) + (xy 186.61281 115.144135) + (xy 186.607842 115.146959) + (xy 186.601757 115.150059) + (xy 186.601756 115.15006) + (xy 186.597375 115.152292) + (xy 186.593897 115.15577) + (xy 186.592445 115.156825) + (xy 186.589058 115.15912) + (xy 186.57008 115.171095) + (xy 186.567137 115.174427) + (xy 186.567135 115.174429) + (xy 186.507156 115.242342) + (xy 186.506032 115.243538) + (xy 186.505775 115.243892) + (xy 186.505554 115.244113) + (xy 186.505405 115.244204) + (xy 186.504504 115.245163) + (xy 186.502292 115.247375) + (xy 186.501509 115.246592) + (xy 186.500362 115.247296) + (xy 186.501721 115.248496) + (xy 186.489018 115.262879) + (xy 186.487127 115.266906) + (xy 186.487126 115.266908) + (xy 186.484237 115.273062) + (xy 186.448884 115.305287) + (xy 186.427662 115.309) + (xy 185.655002 115.309) + (xy 185.610808 115.290694) + (xy 183.051198 112.731083) + (xy 186.248001 112.731083) + (xy 186.248333 112.735614) + (xy 186.257478 112.797743) + (xy 186.260326 112.80691) + (xy 186.307556 112.903105) + (xy 186.313484 112.911387) + (xy 186.389111 112.986883) + (xy 186.397406 112.992799) + (xy 186.493687 113.039863) + (xy 186.502851 113.042695) + (xy 186.564391 113.051672) + (xy 186.568904 113.052) + (xy 186.774069 113.052) + (xy 186.782859 113.048359) + (xy 186.7865 113.039569) + (xy 186.7865 113.039568) + (xy 186.9135 113.039568) + (xy 186.917141 113.048358) + (xy 186.925931 113.051999) + (xy 187.131083 113.051999) + (xy 187.135614 113.051667) + (xy 187.197743 113.042522) + (xy 187.20691 113.039674) + (xy 187.303105 112.992444) + (xy 187.311387 112.986516) + (xy 187.386883 112.910889) + (xy 187.392799 112.902594) + (xy 187.439863 112.806313) + (xy 187.442695 112.797149) + (xy 187.451672 112.735609) + (xy 187.452 112.731096) + (xy 187.452 112.550931) + (xy 187.448359 112.542141) + (xy 187.439569 112.5385) + (xy 186.925931 112.5385) + (xy 186.917141 112.542141) + (xy 186.9135 112.550931) + (xy 186.9135 113.039568) + (xy 186.7865 113.039568) + (xy 186.7865 112.550931) + (xy 186.782859 112.542141) + (xy 186.774069 112.5385) + (xy 186.260432 112.5385) + (xy 186.251642 112.542141) + (xy 186.248001 112.550931) + (xy 186.248001 112.731083) + (xy 183.051198 112.731083) + (xy 182.719184 112.399069) + (xy 186.248 112.399069) + (xy 186.251641 112.407859) + (xy 186.260431 112.4115) + (xy 186.774069 112.4115) + (xy 186.782859 112.407859) + (xy 186.7865 112.399069) + (xy 186.9135 112.399069) + (xy 186.917141 112.407859) + (xy 186.925931 112.4115) + (xy 187.439568 112.4115) + (xy 187.448358 112.407859) + (xy 187.451999 112.399069) + (xy 187.451999 112.218917) + (xy 187.451667 112.214386) + (xy 187.442522 112.152257) + (xy 187.439674 112.14309) + (xy 187.392444 112.046895) + (xy 187.386516 112.038613) + (xy 187.310889 111.963117) + (xy 187.302594 111.957201) + (xy 187.206313 111.910137) + (xy 187.197149 111.907305) + (xy 187.135609 111.898328) + (xy 187.131096 111.898) + (xy 186.925931 111.898) + (xy 186.917141 111.901641) + (xy 186.9135 111.910431) + (xy 186.9135 112.399069) + (xy 186.7865 112.399069) + (xy 186.7865 111.910432) + (xy 186.782859 111.901642) + (xy 186.774069 111.898001) + (xy 186.568917 111.898001) + (xy 186.564386 111.898333) + (xy 186.502257 111.907478) + (xy 186.49309 111.910326) + (xy 186.396895 111.957556) + (xy 186.388613 111.963484) + (xy 186.313117 112.039111) + (xy 186.307201 112.047406) + (xy 186.260137 112.143687) + (xy 186.257305 112.152851) + (xy 186.248328 112.214391) + (xy 186.248 112.218904) + (xy 186.248 112.399069) + (xy 182.719184 112.399069) + (xy 182.482793 112.162678) + (xy 182.464487 112.118484) + (xy 182.465353 112.108115) + (xy 182.481767 112.010552) + (xy 182.481896 112) + (xy 182.464536 111.878781) + (xy 182.413852 111.767307) + (xy 182.399199 111.750302) + (xy 182.397708 111.747375) + (xy 182.3919 111.741567) + (xy 182.388746 111.73817) + (xy 182.336826 111.677914) + (xy 182.333918 111.674539) + (xy 182.313741 111.661461) + (xy 182.310155 111.658559) + (xy 182.310081 111.658661) + (xy 182.306106 111.655773) + (xy 182.302625 111.652292) + (xy 182.291343 111.646543) + (xy 182.285736 111.643309) + (xy 182.234893 111.610354) + (xy 182.23489 111.610353) + (xy 182.23116 111.607935) + (xy 182.226901 111.606661) + (xy 182.226898 111.60666) + (xy 182.199139 111.598359) + (xy 182.198839 111.598269) + (xy 182.188377 111.594079) + (xy 182.182813 111.591244) + (xy 182.171067 111.589384) + (xy 182.162951 111.587536) + (xy 182.113838 111.572848) + (xy 182.069496 111.572577) + (xy 182.060103 111.571809) + (xy 182.054857 111.570978) + (xy 182.054856 111.570978) + (xy 182.05 111.570209) + (xy 182.041373 111.571576) + (xy 182.03122 111.572344) + (xy 182.012836 111.572231) + (xy 181.995838 111.572127) + (xy 181.995836 111.572127) + (xy 181.991385 111.5721) + (xy 181.937011 111.587641) + (xy 181.929623 111.589275) + (xy 181.917187 111.591244) + (xy 181.912804 111.593477) + (xy 181.91187 111.593781) + (xy 181.902156 111.597603) + (xy 181.899821 111.59827) + (xy 181.877929 111.604526) + (xy 181.877927 111.604527) + (xy 181.873644 111.605751) + (xy 181.814119 111.643309) + (xy 181.812819 111.644129) + (xy 181.807842 111.646959) + (xy 181.801757 111.650059) + (xy 181.801756 111.65006) + (xy 181.797375 111.652292) + (xy 181.793897 111.65577) + (xy 181.792445 111.656825) + (xy 181.789058 111.65912) + (xy 181.77008 111.671095) + (xy 181.767137 111.674427) + (xy 181.767135 111.674429) + (xy 181.707156 111.742342) + (xy 181.706032 111.743538) + (xy 181.705775 111.743892) + (xy 181.705554 111.744113) + (xy 181.705405 111.744204) + (xy 181.704504 111.745163) + (xy 181.702292 111.747375) + (xy 181.701509 111.746592) + (xy 181.700362 111.747296) + (xy 181.701721 111.748496) + (xy 181.689018 111.762879) + (xy 181.687127 111.766907) + (xy 181.638868 111.869695) + (xy 181.638867 111.869698) + (xy 181.636976 111.873726) + (xy 181.618136 111.994724) + (xy 181.618713 111.999137) + (xy 181.618713 111.999138) + (xy 181.621037 112.016907) + (xy 181.634014 112.116145) + (xy 181.635809 112.120224) + (xy 181.639286 112.128126) + (xy 181.641185 112.132443) + (xy 181.641244 112.132813) + (xy 181.642007 112.134311) + (xy 181.644031 112.13891) + (xy 181.644031 112.138911) + (xy 181.677244 112.214391) + (xy 181.683333 112.22823) + (xy 181.697198 112.244724) + (xy 181.698029 112.245713) + (xy 181.700157 112.248434) + (xy 181.702292 112.252625) + (xy 181.710081 112.260414) + (xy 181.713729 112.264391) + (xy 181.762127 112.321968) + (xy 181.785399 112.337459) + (xy 181.791836 112.342733) + (xy 181.793899 112.344232) + (xy 181.797375 112.347708) + (xy 181.801753 112.349939) + (xy 181.801756 112.349941) + (xy 181.80873 112.353494) + (xy 181.814977 112.357148) + (xy 181.864064 112.389823) + (xy 181.868313 112.391151) + (xy 181.868314 112.391151) + (xy 181.900296 112.401143) + (xy 181.910027 112.405109) + (xy 181.912799 112.406521) + (xy 181.912803 112.406522) + (xy 181.917187 112.408756) + (xy 181.927852 112.410445) + (xy 181.936713 112.41252) + (xy 181.976696 112.425012) + (xy 181.976699 112.425012) + (xy 181.980948 112.42634) + (xy 182.030069 112.427241) + (xy 182.038683 112.427999) + (xy 182.04514 112.429022) + (xy 182.045144 112.429022) + (xy 182.05 112.429791) + (xy 182.056947 112.42869) + (xy 182.067853 112.427933) + (xy 182.103383 112.428584) + (xy 182.108019 112.42732) + (xy 182.150968 112.415611) + (xy 182.198421 112.421648) + (xy 182.211601 112.431716) + (xy 185.384372 115.604487) + (xy 185.388677 115.610561) + (xy 185.38925 115.610105) + (xy 185.393631 115.615613) + (xy 185.396678 115.621958) + (xy 185.402175 115.626354) + (xy 185.419761 115.640418) + (xy 185.42492 115.645035) + (xy 185.430168 115.650283) + (xy 185.433139 115.65215) + (xy 185.43314 115.652151) + (xy 185.436169 115.654055) + (xy 185.441944 115.658159) + (xy 185.459236 115.671988) + (xy 185.45924 115.67199) + (xy 185.464733 115.676383) + (xy 185.47159 115.67796) + (xy 185.475352 115.679778) + (xy 185.47929 115.681157) + (xy 185.485248 115.684902) + (xy 185.492239 115.685692) + (xy 185.492244 115.685694) + (xy 185.514237 115.68818) + (xy 185.521223 115.689373) + (xy 185.528297 115.691) + (xy 185.535677 115.691) + (xy 185.542698 115.691396) + (xy 185.571838 115.69469) + (xy 185.578482 115.69237) + (xy 185.585478 115.691585) + (xy 185.585554 115.692264) + (xy 185.593003 115.691) + (xy 186.426187 115.691) + (xy 186.470381 115.709306) + (xy 186.479248 115.720473) + (xy 186.48154 115.724155) + (xy 186.483333 115.72823) + (xy 186.497198 115.744724) + (xy 186.498029 115.745713) + (xy 186.500157 115.748434) + (xy 186.502292 115.752625) + (xy 186.510081 115.760414) + (xy 186.513729 115.764391) + (xy 186.562127 115.821968) + (xy 186.585399 115.837459) + (xy 186.591836 115.842733) + (xy 186.593899 115.844232) + (xy 186.597375 115.847708) + (xy 186.601753 115.849939) + (xy 186.601756 115.849941) + (xy 186.60873 115.853494) + (xy 186.614977 115.857148) + (xy 186.664064 115.889823) + (xy 186.668313 115.891151) + (xy 186.668314 115.891151) + (xy 186.700296 115.901143) + (xy 186.710027 115.905109) + (xy 186.712799 115.906521) + (xy 186.712803 115.906522) + (xy 186.717187 115.908756) + (xy 186.727852 115.910445) + (xy 186.736713 115.91252) + (xy 186.776696 115.925012) + (xy 186.776699 115.925012) + (xy 186.780948 115.92634) + (xy 186.830069 115.927241) + (xy 186.838683 115.927999) + (xy 186.84514 115.929022) + (xy 186.845144 115.929022) + (xy 186.85 115.929791) + (xy 186.856947 115.92869) + (xy 186.867853 115.927933) + (xy 186.903383 115.928584) + (xy 186.963532 115.912185) + (xy 186.97019 115.910755) + (xy 186.972147 115.910445) + (xy 186.982813 115.908756) + (xy 186.987196 115.906522) + (xy 186.991875 115.905002) + (xy 186.991878 115.90501) + (xy 186.996727 115.903136) + (xy 187.021527 115.896375) + (xy 187.030706 115.890739) + (xy 187.063409 115.8815) + (xy 189.230501 115.8815) + (xy 189.235894 115.881733) + (xy 189.275203 115.885138) + (xy 189.275206 115.885138) + (xy 189.280346 115.885583) + (xy 189.285353 115.884339) + (xy 189.285356 115.884339) + (xy 189.289364 115.883343) + (xy 189.304431 115.8815) + (xy 191.433939 115.8815) + (xy 191.460635 115.88754) + (xy 191.464064 115.889823) + (xy 191.468316 115.891151) + (xy 191.468317 115.891152) + (xy 191.500296 115.901143) + (xy 191.510027 115.905109) + (xy 191.512799 115.906521) + (xy 191.512803 115.906522) + (xy 191.517187 115.908756) + (xy 191.527852 115.910445) + (xy 191.536713 115.91252) + (xy 191.576696 115.925012) + (xy 191.576699 115.925012) + (xy 191.580948 115.92634) + (xy 191.630069 115.927241) + (xy 191.638683 115.927999) + (xy 191.64514 115.929022) + (xy 191.645144 115.929022) + (xy 191.65 115.929791) + (xy 191.656947 115.92869) + (xy 191.667853 115.927933) + (xy 191.703383 115.928584) + (xy 191.763532 115.912185) + (xy 191.77019 115.910755) + (xy 191.772147 115.910445) + (xy 191.782813 115.908756) + (xy 191.787196 115.906522) + (xy 191.791875 115.905002) + (xy 191.791878 115.90501) + (xy 191.796727 115.903136) + (xy 191.821527 115.896375) + (xy 191.830034 115.891152) + (xy 191.889709 115.854511) + (xy 191.894037 115.852085) + (xy 191.89824 115.849944) + (xy 191.898248 115.849938) + (xy 191.902625 115.847708) + (xy 191.905427 115.844906) + (xy 191.906264 115.844346) + (xy 191.908891 115.842733) + (xy 191.925881 115.832301) + (xy 192.008058 115.741513) + (xy 192.061451 115.631311) + (xy 192.06304 115.621871) + (xy 192.076715 115.540581) + (xy 192.081767 115.510552) + (xy 192.081896 115.5) + (xy 192.064536 115.378781) + (xy 192.013852 115.267307) + (xy 191.999199 115.250302) + (xy 191.997708 115.247375) + (xy 191.9919 115.241567) + (xy 191.988746 115.23817) + (xy 191.936905 115.178006) + (xy 191.933918 115.174539) + (xy 191.913741 115.161461) + (xy 191.910155 115.158559) + (xy 191.910081 115.158661) + (xy 191.906106 115.155773) + (xy 191.902625 115.152292) + (xy 191.891343 115.146543) + (xy 191.885735 115.143308) + (xy 191.869505 115.132788) + (xy 191.842377 115.093389) + (xy 191.841 115.080342) + (xy 191.841 114.664999) + (xy 191.859306 114.620805) + (xy 191.9035 114.602499) + (xy 191.93341 114.602499) + (xy 192.002695 114.592301) + (xy 192.009193 114.589111) + (xy 192.044108 114.571968) + (xy 192.108036 114.540581) + (xy 192.120164 114.528432) + (xy 192.187296 114.461183) + (xy 192.187298 114.461181) + (xy 192.190944 114.457528) + (xy 192.237774 114.361726) + (xy 192.240349 114.356458) + (xy 192.240349 114.356457) + (xy 192.24248 114.352098) + (xy 192.244293 114.339674) + (xy 192.251987 114.286928) + (xy 192.2525 114.283411) + (xy 192.252499 113.76659) + (xy 192.242301 113.697305) + (xy 192.190581 113.591964) + (xy 192.186928 113.588317) + (xy 192.111183 113.512704) + (xy 192.111181 113.512702) + (xy 192.107528 113.509056) + (xy 192.034238 113.473231) + (xy 192.006458 113.459651) + (xy 192.006457 113.459651) + (xy 192.002098 113.45752) + (xy 191.997295 113.456819) + (xy 191.997294 113.456819) + (xy 191.975341 113.453617) + (xy 191.933411 113.4475) + (xy 191.650749 113.4475) + (xy 191.36659 113.447501) + (xy 191.297305 113.457699) + (xy 191.191964 113.509419) + (xy 191.188318 113.513071) + (xy 191.188317 113.513072) + (xy 191.112704 113.588817) + (xy 191.112702 113.588819) + (xy 191.109056 113.592472) + (xy 191.082408 113.646988) + (xy 191.059943 113.692946) + (xy 191.05752 113.697902) + (xy 191.0475 113.766589) + (xy 191.047501 114.28341) + (xy 191.057699 114.352695) + (xy 191.109419 114.458036) + (xy 191.113071 114.461682) + (xy 191.113072 114.461683) + (xy 191.188817 114.537296) + (xy 191.188819 114.537298) + (xy 191.192472 114.540944) + (xy 191.260238 114.574069) + (xy 191.293158 114.590161) + (xy 191.297902 114.59248) + (xy 191.302705 114.593181) + (xy 191.302706 114.593181) + (xy 191.310693 114.594346) + (xy 191.366589 114.6025) + (xy 191.3965 114.6025) + (xy 191.440694 114.620806) + (xy 191.459 114.665) + (xy 191.459 115.056) + (xy 191.440694 115.100194) + (xy 191.3965 115.1185) + (xy 189.694 115.1185) + (xy 189.649806 115.100194) + (xy 189.6315 115.056) + (xy 189.6315 112.731083) + (xy 191.048001 112.731083) + (xy 191.048333 112.735614) + (xy 191.057478 112.797743) + (xy 191.060326 112.80691) + (xy 191.107556 112.903105) + (xy 191.113484 112.911387) + (xy 191.189111 112.986883) + (xy 191.197406 112.992799) + (xy 191.293687 113.039863) + (xy 191.302851 113.042695) + (xy 191.364391 113.051672) + (xy 191.368904 113.052) + (xy 191.574069 113.052) + (xy 191.582859 113.048359) + (xy 191.5865 113.039569) + (xy 191.5865 113.039568) + (xy 191.7135 113.039568) + (xy 191.717141 113.048358) + (xy 191.725931 113.051999) + (xy 191.931083 113.051999) + (xy 191.935614 113.051667) + (xy 191.997743 113.042522) + (xy 192.00691 113.039674) + (xy 192.103105 112.992444) + (xy 192.111387 112.986516) + (xy 192.186883 112.910889) + (xy 192.192799 112.902594) + (xy 192.239863 112.806313) + (xy 192.242695 112.797149) + (xy 192.251672 112.735609) + (xy 192.252 112.731096) + (xy 192.252 112.550931) + (xy 192.248359 112.542141) + (xy 192.239569 112.5385) + (xy 191.725931 112.5385) + (xy 191.717141 112.542141) + (xy 191.7135 112.550931) + (xy 191.7135 113.039568) + (xy 191.5865 113.039568) + (xy 191.5865 112.550931) + (xy 191.582859 112.542141) + (xy 191.574069 112.5385) + (xy 191.060432 112.5385) + (xy 191.051642 112.542141) + (xy 191.048001 112.550931) + (xy 191.048001 112.731083) + (xy 189.6315 112.731083) + (xy 189.6315 112.399069) + (xy 191.048 112.399069) + (xy 191.051641 112.407859) + (xy 191.060431 112.4115) + (xy 191.574069 112.4115) + (xy 191.582859 112.407859) + (xy 191.5865 112.399069) + (xy 191.7135 112.399069) + (xy 191.717141 112.407859) + (xy 191.725931 112.4115) + (xy 192.239568 112.4115) + (xy 192.248358 112.407859) + (xy 192.251999 112.399069) + (xy 192.251999 112.218917) + (xy 192.251667 112.214386) + (xy 192.242522 112.152257) + (xy 192.239674 112.14309) + (xy 192.192444 112.046895) + (xy 192.186516 112.038613) + (xy 192.110889 111.963117) + (xy 192.102594 111.957201) + (xy 192.006313 111.910137) + (xy 191.997149 111.907305) + (xy 191.935609 111.898328) + (xy 191.931096 111.898) + (xy 191.725931 111.898) + (xy 191.717141 111.901641) + (xy 191.7135 111.910431) + (xy 191.7135 112.399069) + (xy 191.5865 112.399069) + (xy 191.5865 111.910432) + (xy 191.582859 111.901642) + (xy 191.574069 111.898001) + (xy 191.368917 111.898001) + (xy 191.364386 111.898333) + (xy 191.302257 111.907478) + (xy 191.29309 111.910326) + (xy 191.196895 111.957556) + (xy 191.188613 111.963484) + (xy 191.113117 112.039111) + (xy 191.107201 112.047406) + (xy 191.060137 112.143687) + (xy 191.057305 112.152851) + (xy 191.048328 112.214391) + (xy 191.048 112.218904) + (xy 191.048 112.399069) + (xy 189.6315 112.399069) + (xy 189.6315 104.444) + (xy 189.649806 104.399806) + (xy 189.694 104.3815) + (xy 191.730501 104.3815) + (xy 191.735894 104.381733) + (xy 191.775203 104.385138) + (xy 191.775206 104.385138) + (xy 191.780346 104.385583) + (xy 191.785353 104.384339) + (xy 191.785356 104.384339) + (xy 191.789364 104.383343) + (xy 191.804431 104.3815) + (xy 193.833939 104.3815) + (xy 193.860635 104.38754) + (xy 193.864064 104.389823) + (xy 193.868316 104.391151) + (xy 193.868317 104.391152) + (xy 193.900296 104.401143) + (xy 193.910027 104.405109) + (xy 193.912799 104.406521) + (xy 193.912803 104.406522) + (xy 193.917187 104.408756) + (xy 193.927852 104.410445) + (xy 193.936713 104.41252) + (xy 193.976696 104.425012) + (xy 193.976699 104.425012) + (xy 193.980948 104.42634) + (xy 194.030069 104.427241) + (xy 194.038683 104.427999) + (xy 194.04514 104.429022) + (xy 194.045144 104.429022) + (xy 194.05 104.429791) + (xy 194.056947 104.42869) + (xy 194.067853 104.427933) + (xy 194.103383 104.428584) + (xy 194.163532 104.412185) + (xy 194.17019 104.410755) + (xy 194.172147 104.410445) + (xy 194.182813 104.408756) + (xy 194.187196 104.406522) + (xy 194.191875 104.405002) + (xy 194.191878 104.40501) + (xy 194.196727 104.403136) + (xy 194.221527 104.396375) + (xy 194.226521 104.393309) + (xy 194.230706 104.390739) + (xy 194.263409 104.3815) + (xy 195.433939 104.3815) + (xy 195.460635 104.38754) + (xy 195.464064 104.389823) + (xy 195.468316 104.391151) + (xy 195.468317 104.391152) + (xy 195.500296 104.401143) + (xy 195.510027 104.405109) + (xy 195.512799 104.406521) + (xy 195.512803 104.406522) + (xy 195.517187 104.408756) + (xy 195.527852 104.410445) + (xy 195.536713 104.41252) + (xy 195.576696 104.425012) + (xy 195.576699 104.425012) + (xy 195.580948 104.42634) + (xy 195.630069 104.427241) + (xy 195.638683 104.427999) + (xy 195.64514 104.429022) + (xy 195.645144 104.429022) + (xy 195.65 104.429791) + (xy 195.656947 104.42869) + (xy 195.667853 104.427933) + (xy 195.703383 104.428584) + (xy 195.763532 104.412185) + (xy 195.77019 104.410755) + (xy 195.772147 104.410445) + (xy 195.782813 104.408756) + (xy 195.787196 104.406522) + (xy 195.791875 104.405002) + (xy 195.791878 104.40501) + (xy 195.796727 104.403136) + (xy 195.821527 104.396375) + (xy 195.826521 104.393309) + (xy 195.889709 104.354511) + (xy 195.894037 104.352085) + (xy 195.89824 104.349944) + (xy 195.898248 104.349938) + (xy 195.902625 104.347708) + (xy 195.905427 104.344906) + (xy 195.906264 104.344346) + (xy 195.907681 104.343476) + (xy 195.925881 104.332301) + (xy 196.008058 104.241513) + (xy 196.061451 104.131311) + (xy 196.063406 104.119695) + (xy 196.077551 104.035614) + (xy 196.081767 104.010552) + (xy 196.081896 104) + (xy 196.064536 103.878781) + (xy 196.013852 103.767307) + (xy 195.999199 103.750302) + (xy 195.997708 103.747375) + (xy 195.9919 103.741567) + (xy 195.988746 103.73817) + (xy 195.936826 103.677914) + (xy 195.933918 103.674539) + (xy 195.913741 103.661461) + (xy 195.910155 103.658559) + (xy 195.910081 103.658661) + (xy 195.906106 103.655773) + (xy 195.902625 103.652292) + (xy 195.891343 103.646543) + (xy 195.885735 103.643308) + (xy 195.869505 103.632788) + (xy 195.842377 103.593389) + (xy 195.841 103.580342) + (xy 195.841 103.164999) + (xy 195.859306 103.120805) + (xy 195.9035 103.102499) + (xy 195.93341 103.102499) + (xy 196.002695 103.092301) + (xy 196.108036 103.040581) + (xy 196.111683 103.036928) + (xy 196.187296 102.961183) + (xy 196.187298 102.961181) + (xy 196.190944 102.957528) + (xy 196.239937 102.857301) + (xy 196.240349 102.856458) + (xy 196.240349 102.856457) + (xy 196.24248 102.852098) + (xy 196.243408 102.84574) + (xy 196.248007 102.814208) + (xy 196.2525 102.783411) + (xy 196.252499 102.26659) + (xy 196.242301 102.197305) + (xy 196.190581 102.091964) + (xy 196.119851 102.021357) + (xy 196.111183 102.012704) + (xy 196.111181 102.012702) + (xy 196.107528 102.009056) + (xy 196.034238 101.973231) + (xy 196.006458 101.959651) + (xy 196.006457 101.959651) + (xy 196.002098 101.95752) + (xy 195.997295 101.956819) + (xy 195.997294 101.956819) + (xy 195.975341 101.953617) + (xy 195.933411 101.9475) + (xy 195.650749 101.9475) + (xy 195.36659 101.947501) + (xy 195.297305 101.957699) + (xy 195.191964 102.009419) + (xy 195.188318 102.013071) + (xy 195.188317 102.013072) + (xy 195.112704 102.088817) + (xy 195.112702 102.088819) + (xy 195.109056 102.092472) + (xy 195.073231 102.165762) + (xy 195.059943 102.192946) + (xy 195.05752 102.197902) + (xy 195.0475 102.266589) + (xy 195.047501 102.78341) + (xy 195.057699 102.852695) + (xy 195.109419 102.958036) + (xy 195.113071 102.961682) + (xy 195.113072 102.961683) + (xy 195.188817 103.037296) + (xy 195.188819 103.037298) + (xy 195.192472 103.040944) + (xy 195.265762 103.076769) + (xy 195.293158 103.090161) + (xy 195.297902 103.09248) + (xy 195.302705 103.093181) + (xy 195.302706 103.093181) + (xy 195.324659 103.096383) + (xy 195.366589 103.1025) + (xy 195.3965 103.1025) + (xy 195.440694 103.120806) + (xy 195.459 103.165) + (xy 195.459 103.556) + (xy 195.440694 103.600194) + (xy 195.3965 103.6185) + (xy 194.3035 103.6185) + (xy 194.259306 103.600194) + (xy 194.241 103.556) + (xy 194.241 103.164999) + (xy 194.259306 103.120805) + (xy 194.3035 103.102499) + (xy 194.33341 103.102499) + (xy 194.402695 103.092301) + (xy 194.508036 103.040581) + (xy 194.511683 103.036928) + (xy 194.587296 102.961183) + (xy 194.587298 102.961181) + (xy 194.590944 102.957528) + (xy 194.639937 102.857301) + (xy 194.640349 102.856458) + (xy 194.640349 102.856457) + (xy 194.64248 102.852098) + (xy 194.643408 102.84574) + (xy 194.648007 102.814208) + (xy 194.6525 102.783411) + (xy 194.652499 102.26659) + (xy 194.642301 102.197305) + (xy 194.590581 102.091964) + (xy 194.519851 102.021357) + (xy 194.511183 102.012704) + (xy 194.511181 102.012702) + (xy 194.507528 102.009056) + (xy 194.434238 101.973231) + (xy 194.406458 101.959651) + (xy 194.406457 101.959651) + (xy 194.402098 101.95752) + (xy 194.397295 101.956819) + (xy 194.397294 101.956819) + (xy 194.375341 101.953617) + (xy 194.333411 101.9475) + (xy 194.050749 101.9475) + (xy 193.76659 101.947501) + (xy 193.697305 101.957699) + (xy 193.591964 102.009419) + (xy 193.588318 102.013071) + (xy 193.588317 102.013072) + (xy 193.512704 102.088817) + (xy 193.512702 102.088819) + (xy 193.509056 102.092472) + (xy 193.473231 102.165762) + (xy 193.459943 102.192946) + (xy 193.45752 102.197902) + (xy 193.4475 102.266589) + (xy 193.447501 102.78341) + (xy 193.457699 102.852695) + (xy 193.509419 102.958036) + (xy 193.513071 102.961682) + (xy 193.513072 102.961683) + (xy 193.588817 103.037296) + (xy 193.588819 103.037298) + (xy 193.592472 103.040944) + (xy 193.665762 103.076769) + (xy 193.693158 103.090161) + (xy 193.697902 103.09248) + (xy 193.702705 103.093181) + (xy 193.702706 103.093181) + (xy 193.724659 103.096383) + (xy 193.766589 103.1025) + (xy 193.7965 103.1025) + (xy 193.840694 103.120806) + (xy 193.859 103.165) + (xy 193.859 103.556) + (xy 193.840694 103.600194) + (xy 193.7965 103.6185) + (xy 192.194 103.6185) + (xy 192.149806 103.600194) + (xy 192.1315 103.556) + (xy 192.1315 101.231083) + (xy 193.448001 101.231083) + (xy 193.448333 101.235614) + (xy 193.457478 101.297743) + (xy 193.460326 101.30691) + (xy 193.507556 101.403105) + (xy 193.513484 101.411387) + (xy 193.589111 101.486883) + (xy 193.597406 101.492799) + (xy 193.693687 101.539863) + (xy 193.702851 101.542695) + (xy 193.764391 101.551672) + (xy 193.768904 101.552) + (xy 193.974069 101.552) + (xy 193.982859 101.548359) + (xy 193.9865 101.539569) + (xy 193.9865 101.539568) + (xy 194.1135 101.539568) + (xy 194.117141 101.548358) + (xy 194.125931 101.551999) + (xy 194.331083 101.551999) + (xy 194.335614 101.551667) + (xy 194.397743 101.542522) + (xy 194.40691 101.539674) + (xy 194.503105 101.492444) + (xy 194.511387 101.486516) + (xy 194.586883 101.410889) + (xy 194.592799 101.402594) + (xy 194.639863 101.306313) + (xy 194.642695 101.297149) + (xy 194.651672 101.235609) + (xy 194.652 101.231096) + (xy 194.652 101.231083) + (xy 195.048001 101.231083) + (xy 195.048333 101.235614) + (xy 195.057478 101.297743) + (xy 195.060326 101.30691) + (xy 195.107556 101.403105) + (xy 195.113484 101.411387) + (xy 195.189111 101.486883) + (xy 195.197406 101.492799) + (xy 195.293687 101.539863) + (xy 195.302851 101.542695) + (xy 195.364391 101.551672) + (xy 195.368904 101.552) + (xy 195.574069 101.552) + (xy 195.582859 101.548359) + (xy 195.5865 101.539569) + (xy 195.5865 101.539568) + (xy 195.7135 101.539568) + (xy 195.717141 101.548358) + (xy 195.725931 101.551999) + (xy 195.931083 101.551999) + (xy 195.935614 101.551667) + (xy 195.997743 101.542522) + (xy 196.00691 101.539674) + (xy 196.103105 101.492444) + (xy 196.111387 101.486516) + (xy 196.186883 101.410889) + (xy 196.192799 101.402594) + (xy 196.239863 101.306313) + (xy 196.242695 101.297149) + (xy 196.251672 101.235609) + (xy 196.252 101.231096) + (xy 196.252 101.050931) + (xy 196.248359 101.042141) + (xy 196.239569 101.0385) + (xy 195.725931 101.0385) + (xy 195.717141 101.042141) + (xy 195.7135 101.050931) + (xy 195.7135 101.539568) + (xy 195.5865 101.539568) + (xy 195.5865 101.050931) + (xy 195.582859 101.042141) + (xy 195.574069 101.0385) + (xy 195.060432 101.0385) + (xy 195.051642 101.042141) + (xy 195.048001 101.050931) + (xy 195.048001 101.231083) + (xy 194.652 101.231083) + (xy 194.652 101.050931) + (xy 194.648359 101.042141) + (xy 194.639569 101.0385) + (xy 194.125931 101.0385) + (xy 194.117141 101.042141) + (xy 194.1135 101.050931) + (xy 194.1135 101.539568) + (xy 193.9865 101.539568) + (xy 193.9865 101.050931) + (xy 193.982859 101.042141) + (xy 193.974069 101.0385) + (xy 193.460432 101.0385) + (xy 193.451642 101.042141) + (xy 193.448001 101.050931) + (xy 193.448001 101.231083) + (xy 192.1315 101.231083) + (xy 192.1315 100.899069) + (xy 193.448 100.899069) + (xy 193.451641 100.907859) + (xy 193.460431 100.9115) + (xy 193.974069 100.9115) + (xy 193.982859 100.907859) + (xy 193.9865 100.899069) + (xy 194.1135 100.899069) + (xy 194.117141 100.907859) + (xy 194.125931 100.9115) + (xy 194.639568 100.9115) + (xy 194.648358 100.907859) + (xy 194.651999 100.899069) + (xy 195.048 100.899069) + (xy 195.051641 100.907859) + (xy 195.060431 100.9115) + (xy 195.574069 100.9115) + (xy 195.582859 100.907859) + (xy 195.5865 100.899069) + (xy 195.7135 100.899069) + (xy 195.717141 100.907859) + (xy 195.725931 100.9115) + (xy 196.239568 100.9115) + (xy 196.248358 100.907859) + (xy 196.251999 100.899069) + (xy 196.251999 100.718917) + (xy 196.251667 100.714386) + (xy 196.242522 100.652257) + (xy 196.239674 100.64309) + (xy 196.192444 100.546895) + (xy 196.186516 100.538613) + (xy 196.110889 100.463117) + (xy 196.102594 100.457201) + (xy 196.006313 100.410137) + (xy 195.997149 100.407305) + (xy 195.935609 100.398328) + (xy 195.931096 100.398) + (xy 195.725931 100.398) + (xy 195.717141 100.401641) + (xy 195.7135 100.410431) + (xy 195.7135 100.899069) + (xy 195.5865 100.899069) + (xy 195.5865 100.410432) + (xy 195.582859 100.401642) + (xy 195.574069 100.398001) + (xy 195.368917 100.398001) + (xy 195.364386 100.398333) + (xy 195.302257 100.407478) + (xy 195.29309 100.410326) + (xy 195.196895 100.457556) + (xy 195.188613 100.463484) + (xy 195.113117 100.539111) + (xy 195.107201 100.547406) + (xy 195.060137 100.643687) + (xy 195.057305 100.652851) + (xy 195.048328 100.714391) + (xy 195.048 100.718904) + (xy 195.048 100.899069) + (xy 194.651999 100.899069) + (xy 194.651999 100.718917) + (xy 194.651667 100.714386) + (xy 194.642522 100.652257) + (xy 194.639674 100.64309) + (xy 194.592444 100.546895) + (xy 194.586516 100.538613) + (xy 194.510889 100.463117) + (xy 194.502594 100.457201) + (xy 194.406313 100.410137) + (xy 194.397149 100.407305) + (xy 194.335609 100.398328) + (xy 194.331096 100.398) + (xy 194.125931 100.398) + (xy 194.117141 100.401641) + (xy 194.1135 100.410431) + (xy 194.1135 100.899069) + (xy 193.9865 100.899069) + (xy 193.9865 100.410432) + (xy 193.982859 100.401642) + (xy 193.974069 100.398001) + (xy 193.768917 100.398001) + (xy 193.764386 100.398333) + (xy 193.702257 100.407478) + (xy 193.69309 100.410326) + (xy 193.596895 100.457556) + (xy 193.588613 100.463484) + (xy 193.513117 100.539111) + (xy 193.507201 100.547406) + (xy 193.460137 100.643687) + (xy 193.457305 100.652851) + (xy 193.448328 100.714391) + (xy 193.448 100.718904) + (xy 193.448 100.899069) + (xy 192.1315 100.899069) + (xy 192.1315 100.43391) + (xy 192.149806 100.389716) + (xy 194.236257 98.303265) + (xy 194.246549 98.294953) + (xy 194.255961 98.288876) + (xy 194.255964 98.288873) + (xy 194.260304 98.286071) + (xy 194.28355 98.256584) + (xy 194.288438 98.251084) + (xy 194.292171 98.247351) + (xy 194.304349 98.23031) + (xy 194.306072 98.228016) + (xy 194.338934 98.18633) + (xy 194.340647 98.181452) + (xy 194.342574 98.177947) + (xy 194.344331 98.174361) + (xy 194.347335 98.170157) + (xy 194.362532 98.119339) + (xy 194.363443 98.116538) + (xy 194.36852 98.102081) + (xy 194.381016 98.066498) + (xy 194.3815 98.060909) + (xy 194.3815 98.060641) + (xy 194.381839 98.056644) + (xy 194.382246 98.05342) + (xy 194.383725 98.048475) + (xy 194.381548 97.993063) + (xy 194.3815 97.99061) + (xy 194.3815 95.712353) + (xy 194.392174 95.679058) + (xy 194.392058 95.679001) + (xy 194.392446 95.678209) + (xy 194.393149 95.676016) + (xy 194.394329 95.674364) + (xy 194.39433 95.674362) + (xy 194.397335 95.670157) + (xy 194.398815 95.665206) + (xy 194.398817 95.665203) + (xy 194.399457 95.663063) + (xy 194.405791 95.648734) + (xy 194.406949 95.64681) + (xy 194.406949 95.646809) + (xy 194.409615 95.642382) + (xy 194.415428 95.615378) + (xy 194.442624 95.576026) + (xy 194.448983 95.572428) + (xy 194.518155 95.538466) + (xy 194.518156 95.538465) + (xy 194.52279 95.53619) + (xy 194.526848 95.532125) + (xy 194.60793 95.450902) + (xy 194.607932 95.4509) + (xy 194.611578 95.447247) + (xy 194.628923 95.411764) + (xy 194.664638 95.338699) + (xy 194.664638 95.338698) + (xy 194.666769 95.334339) + (xy 194.6775 95.260781) + (xy 194.6775 95.258453) + (xy 195.323001 95.258453) + (xy 195.323333 95.262985) + (xy 195.333201 95.330028) + (xy 195.336048 95.339192) + (xy 195.386947 95.442861) + (xy 195.392875 95.451142) + (xy 195.474393 95.532518) + (xy 195.482688 95.538434) + (xy 195.586446 95.589152) + (xy 195.59561 95.591984) + (xy 195.662021 95.601672) + (xy 195.666534 95.602) + (xy 195.874069 95.602) + (xy 195.882859 95.598359) + (xy 195.8865 95.589569) + (xy 195.8865 95.589568) + (xy 196.0135 95.589568) + (xy 196.017141 95.598358) + (xy 196.025931 95.601999) + (xy 196.233453 95.601999) + (xy 196.237985 95.601667) + (xy 196.305028 95.591799) + (xy 196.314192 95.588952) + (xy 196.417861 95.538053) + (xy 196.426142 95.532125) + (xy 196.507518 95.450607) + (xy 196.513434 95.442312) + (xy 196.564152 95.338554) + (xy 196.566984 95.32939) + (xy 196.576672 95.262979) + (xy 196.577 95.258466) + (xy 196.577 94.825931) + (xy 196.573359 94.817141) + (xy 196.564569 94.8135) + (xy 196.025931 94.8135) + (xy 196.017141 94.817141) + (xy 196.0135 94.825931) + (xy 196.0135 95.589568) + (xy 195.8865 95.589568) + (xy 195.8865 94.825931) + (xy 195.882859 94.817141) + (xy 195.874069 94.8135) + (xy 195.335432 94.8135) + (xy 195.326642 94.817141) + (xy 195.323001 94.825931) + (xy 195.323001 95.258453) + (xy 194.6775 95.258453) + (xy 194.677499 94.674069) + (xy 195.323 94.674069) + (xy 195.326641 94.682859) + (xy 195.335431 94.6865) + (xy 195.874069 94.6865) + (xy 195.882859 94.682859) + (xy 195.8865 94.674069) + (xy 196.0135 94.674069) + (xy 196.017141 94.682859) + (xy 196.025931 94.6865) + (xy 196.564568 94.6865) + (xy 196.573358 94.682859) + (xy 196.576999 94.674069) + (xy 196.576999 94.241547) + (xy 196.576667 94.237015) + (xy 196.566799 94.169972) + (xy 196.563952 94.160808) + (xy 196.513053 94.057139) + (xy 196.507125 94.048858) + (xy 196.425607 93.967482) + (xy 196.417312 93.961566) + (xy 196.313554 93.910848) + (xy 196.30439 93.908016) + (xy 196.237979 93.898328) + (xy 196.233466 93.898) + (xy 196.025931 93.898) + (xy 196.017141 93.901641) + (xy 196.0135 93.910431) + (xy 196.0135 94.674069) + (xy 195.8865 94.674069) + (xy 195.8865 93.910432) + (xy 195.882859 93.901642) + (xy 195.874069 93.898001) + (xy 195.666547 93.898001) + (xy 195.662015 93.898333) + (xy 195.594972 93.908201) + (xy 195.585808 93.911048) + (xy 195.482139 93.961947) + (xy 195.473858 93.967875) + (xy 195.392482 94.049393) + (xy 195.386566 94.057688) + (xy 195.335848 94.161446) + (xy 195.333016 94.17061) + (xy 195.323328 94.237021) + (xy 195.323 94.241534) + (xy 195.323 94.674069) + (xy 194.677499 94.674069) + (xy 194.677499 94.23922) + (xy 194.666578 94.165021) + (xy 194.639703 94.110283) + (xy 194.613466 94.056845) + (xy 194.613465 94.056844) + (xy 194.61119 94.05221) + (xy 194.601833 94.042869) + (xy 194.525902 93.96707) + (xy 194.5259 93.967068) + (xy 194.522247 93.963422) + (xy 194.409339 93.908231) + (xy 194.404541 93.907531) + (xy 194.400545 93.906296) + (xy 194.363727 93.875757) + (xy 194.3565 93.846583) + (xy 194.3565 93.104825) + (xy 194.374806 93.060631) + (xy 194.391455 93.048722) + (xy 194.403401 93.042857) + (xy 194.403402 93.042856) + (xy 194.408036 93.040581) + (xy 194.412094 93.036516) + (xy 194.487296 92.961183) + (xy 194.487298 92.961181) + (xy 194.490944 92.957528) + (xy 194.526769 92.884238) + (xy 194.540349 92.856458) + (xy 194.540349 92.856457) + (xy 194.54248 92.852098) + (xy 194.543777 92.843211) + (xy 194.551226 92.792141) + (xy 194.5525 92.783411) + (xy 194.5525 92.781083) + (xy 194.948001 92.781083) + (xy 194.948333 92.785614) + (xy 194.957478 92.847743) + (xy 194.960326 92.85691) + (xy 195.007556 92.953105) + (xy 195.013484 92.961387) + (xy 195.089111 93.036883) + (xy 195.097406 93.042799) + (xy 195.193687 93.089863) + (xy 195.202851 93.092695) + (xy 195.264391 93.101672) + (xy 195.268904 93.102) + (xy 195.449069 93.102) + (xy 195.457859 93.098359) + (xy 195.4615 93.089569) + (xy 195.4615 93.089568) + (xy 195.5885 93.089568) + (xy 195.592141 93.098358) + (xy 195.600931 93.101999) + (xy 195.781083 93.101999) + (xy 195.785614 93.101667) + (xy 195.847743 93.092522) + (xy 195.85691 93.089674) + (xy 195.953105 93.042444) + (xy 195.961387 93.036516) + (xy 196.036883 92.960889) + (xy 196.042799 92.952594) + (xy 196.089863 92.856313) + (xy 196.092695 92.847149) + (xy 196.101672 92.785609) + (xy 196.102 92.781096) + (xy 196.102 92.575931) + (xy 196.098359 92.567141) + (xy 196.089569 92.5635) + (xy 195.600931 92.5635) + (xy 195.592141 92.567141) + (xy 195.5885 92.575931) + (xy 195.5885 93.089568) + (xy 195.4615 93.089568) + (xy 195.4615 92.575931) + (xy 195.457859 92.567141) + (xy 195.449069 92.5635) + (xy 194.960432 92.5635) + (xy 194.951642 92.567141) + (xy 194.948001 92.575931) + (xy 194.948001 92.781083) + (xy 194.5525 92.781083) + (xy 194.552499 92.424069) + (xy 194.948 92.424069) + (xy 194.951641 92.432859) + (xy 194.960431 92.4365) + (xy 195.449069 92.4365) + (xy 195.457859 92.432859) + (xy 195.4615 92.424069) + (xy 195.5885 92.424069) + (xy 195.592141 92.432859) + (xy 195.600931 92.4365) + (xy 196.089568 92.4365) + (xy 196.098358 92.432859) + (xy 196.101999 92.424069) + (xy 196.101999 92.218917) + (xy 196.101667 92.214386) + (xy 196.092522 92.152257) + (xy 196.089674 92.14309) + (xy 196.042444 92.046895) + (xy 196.036516 92.038613) + (xy 195.960889 91.963117) + (xy 195.952594 91.957201) + (xy 195.856313 91.910137) + (xy 195.847149 91.907305) + (xy 195.785609 91.898328) + (xy 195.781096 91.898) + (xy 195.600931 91.898) + (xy 195.592141 91.901641) + (xy 195.5885 91.910431) + (xy 195.5885 92.424069) + (xy 195.4615 92.424069) + (xy 195.4615 91.910432) + (xy 195.457859 91.901642) + (xy 195.449069 91.898001) + (xy 195.268917 91.898001) + (xy 195.264386 91.898333) + (xy 195.202257 91.907478) + (xy 195.19309 91.910326) + (xy 195.096895 91.957556) + (xy 195.088613 91.963484) + (xy 195.013117 92.039111) + (xy 195.007201 92.047406) + (xy 194.960137 92.143687) + (xy 194.957305 92.152851) + (xy 194.948328 92.214391) + (xy 194.948 92.218904) + (xy 194.948 92.424069) + (xy 194.552499 92.424069) + (xy 194.552499 92.21659) + (xy 194.542301 92.147305) + (xy 194.537788 92.138112) + (xy 194.527002 92.116145) + (xy 194.490581 92.041964) + (xy 194.462961 92.014392) + (xy 194.411183 91.962704) + (xy 194.411181 91.962702) + (xy 194.407528 91.959056) + (xy 194.402887 91.956787) + (xy 194.402885 91.956786) + (xy 194.391552 91.951246) + (xy 194.359887 91.915392) + (xy 194.3565 91.895096) + (xy 194.3565 91.45891) + (xy 194.374806 91.414716) + (xy 195.34051 90.449013) + (xy 195.384704 90.430707) + (xy 195.428898 90.449013) + (xy 195.834371 90.854485) + (xy 195.838678 90.86056) + (xy 195.83925 90.860105) + (xy 195.843631 90.865613) + (xy 195.846678 90.871958) + (xy 195.852175 90.876354) + (xy 195.869766 90.890422) + (xy 195.874925 90.895039) + (xy 195.880169 90.900283) + (xy 195.883132 90.902145) + (xy 195.883139 90.902151) + (xy 195.886174 90.904058) + (xy 195.89195 90.908163) + (xy 195.914733 90.926383) + (xy 195.921591 90.92796) + (xy 195.925356 90.92978) + (xy 195.929292 90.931158) + (xy 195.935248 90.934902) + (xy 195.942239 90.935692) + (xy 195.942244 90.935694) + (xy 195.964237 90.93818) + (xy 195.971223 90.939373) + (xy 195.978297 90.941) + (xy 195.985677 90.941) + (xy 195.992698 90.941396) + (xy 196.021838 90.94469) + (xy 196.028484 90.942369) + (xy 196.035478 90.941585) + (xy 196.035554 90.942264) + (xy 196.043004 90.941) + (xy 198.956768 90.941) + (xy 198.964107 90.94225) + (xy 198.96419 90.941523) + (xy 198.971181 90.94232) + (xy 198.977822 90.944652) + (xy 198.984815 90.943874) + (xy 198.984816 90.943874) + (xy 199.005939 90.941523) + (xy 199.007198 90.941383) + (xy 199.01411 90.941) + (xy 199.021533 90.941) + (xy 199.028465 90.939419) + (xy 199.035418 90.938243) + (xy 199.064429 90.935014) + (xy 199.070393 90.931281) + (xy 199.074341 90.929906) + (xy 199.0781 90.928097) + (xy 199.084959 90.926532) + (xy 199.107774 90.908351) + (xy 199.113559 90.904256) + (xy 199.116715 90.90228) + (xy 199.116717 90.902279) + (xy 199.119711 90.900404) + (xy 199.124924 90.895191) + (xy 199.130168 90.890506) + (xy 199.147604 90.876612) + (xy 199.147604 90.876611) + (xy 199.153109 90.872225) + (xy 199.156167 90.865886) + (xy 199.160558 90.860385) + (xy 199.161092 90.860811) + (xy 199.165468 90.854647) + (xy 199.679487 90.340628) + (xy 199.685561 90.336323) + (xy 199.685105 90.33575) + (xy 199.690613 90.331369) + (xy 199.696958 90.328322) + (xy 199.71241 90.309) + (xy 199.715418 90.305239) + (xy 199.720035 90.30008) + (xy 199.725284 90.294831) + (xy 199.729057 90.288828) + (xy 199.733165 90.283047) + (xy 199.736387 90.279019) + (xy 199.751383 90.260267) + (xy 199.75296 90.253407) + (xy 199.754778 90.249647) + (xy 199.756156 90.245711) + (xy 199.759902 90.239752) + (xy 199.76082 90.231637) + (xy 199.763179 90.210764) + (xy 199.764371 90.203787) + (xy 199.766 90.196703) + (xy 199.766 90.189329) + (xy 199.766396 90.182307) + (xy 199.769355 90.156136) + (xy 199.79251 90.114278) + (xy 199.823303 90.101192) + (xy 199.845504 90.09827) + (xy 199.856331 90.096845) + (xy 199.856332 90.096845) + (xy 199.861071 90.096221) + (xy 199.877241 90.088681) + (xy 199.960787 90.049723) + (xy 199.960789 90.049721) + (xy 199.965744 90.047411) + (xy 200.047411 89.965744) + (xy 200.049721 89.960789) + (xy 200.049723 89.960787) + (xy 200.07804 89.90006) + (xy 200.096221 89.861071) + (xy 200.099835 89.833618) + (xy 200.102233 89.815407) + (xy 200.102233 89.815399) + (xy 200.1025 89.813375) + (xy 200.102499 89.186626) + (xy 200.102232 89.184593) + (xy 200.096845 89.143669) + (xy 200.096845 89.143668) + (xy 200.096221 89.138929) + (xy 200.084676 89.11417) + (xy 200.049723 89.039213) + (xy 200.049721 89.039211) + (xy 200.047411 89.034256) + (xy 199.965744 88.952589) + (xy 199.960789 88.950279) + (xy 199.960787 88.950277) + (xy 199.900461 88.922147) + (xy 199.861071 88.903779) + (xy 199.841048 88.901143) + (xy 199.815407 88.897767) + (xy 199.815399 88.897767) + (xy 199.813375 88.8975) + (xy 199.811328 88.8975) + (xy 199.574358 88.897501) + (xy 199.336626 88.897501) + (xy 199.334615 88.897766) + (xy 199.33461 88.897766) + (xy 199.293669 88.903155) + (xy 199.293668 88.903155) + (xy 199.288929 88.903779) + (xy 199.284595 88.9058) + (xy 199.189213 88.950277) + (xy 199.189211 88.950279) + (xy 199.184256 88.952589) + (xy 199.102589 89.034256) + (xy 199.100279 89.039211) + (xy 199.100277 89.039213) + (xy 199.083854 89.074433) + (xy 199.053779 89.138929) + (xy 199.052799 89.146375) + (xy 199.047767 89.184593) + (xy 199.047767 89.184601) + (xy 199.0475 89.186625) + (xy 199.047501 89.813374) + (xy 199.047766 89.815385) + (xy 199.047766 89.81539) + (xy 199.053079 89.855751) + (xy 199.053779 89.861071) + (xy 199.0558 89.865404) + (xy 199.0558 89.865405) + (xy 199.100277 89.960787) + (xy 199.100279 89.960789) + (xy 199.102589 89.965744) + (xy 199.184256 90.047411) + (xy 199.189211 90.049721) + (xy 199.189213 90.049723) + (xy 199.272641 90.088626) + (xy 199.304958 90.123894) + (xy 199.302871 90.171684) + (xy 199.290421 90.189464) + (xy 198.939191 90.540694) + (xy 198.894997 90.559) + (xy 196.105003 90.559) + (xy 196.060809 90.540694) + (xy 195.682793 90.162678) + (xy 195.664487 90.118484) + (xy 195.665353 90.108115) + (xy 195.681767 90.010552) + (xy 195.681896 90) + (xy 195.664536 89.878781) + (xy 195.613852 89.767307) + (xy 195.599199 89.750302) + (xy 195.597708 89.747375) + (xy 195.5919 89.741567) + (xy 195.588746 89.73817) + (xy 195.536826 89.677914) + (xy 195.533918 89.674539) + (xy 195.513741 89.661461) + (xy 195.510155 89.658559) + (xy 195.510081 89.658661) + (xy 195.506106 89.655773) + (xy 195.502625 89.652292) + (xy 195.491343 89.646543) + (xy 195.485736 89.643309) + (xy 195.485735 89.643308) + (xy 195.457055 89.624719) + (xy 195.434893 89.610354) + (xy 195.43489 89.610353) + (xy 195.43116 89.607935) + (xy 195.426901 89.606661) + (xy 195.426898 89.60666) + (xy 195.408345 89.601112) + (xy 195.398839 89.598269) + (xy 195.388377 89.594079) + (xy 195.382813 89.591244) + (xy 195.371067 89.589384) + (xy 195.362951 89.587536) + (xy 195.334793 89.579115) + (xy 195.313838 89.572848) + (xy 195.269496 89.572577) + (xy 195.260103 89.571809) + (xy 195.254857 89.570978) + (xy 195.254856 89.570978) + (xy 195.25 89.570209) + (xy 195.241373 89.571576) + (xy 195.23122 89.572344) + (xy 195.212836 89.572231) + (xy 195.195838 89.572127) + (xy 195.195836 89.572127) + (xy 195.191385 89.5721) + (xy 195.137011 89.587641) + (xy 195.129623 89.589275) + (xy 195.117187 89.591244) + (xy 195.112804 89.593477) + (xy 195.11187 89.593781) + (xy 195.102155 89.597603) + (xy 195.077929 89.604526) + (xy 195.077927 89.604527) + (xy 195.073644 89.605751) + (xy 195.069875 89.608129) + (xy 195.056812 89.616371) + (xy 195.014119 89.643309) + (xy 195.012819 89.644129) + (xy 195.007842 89.646959) + (xy 195.001757 89.650059) + (xy 195.001756 89.65006) + (xy 194.997375 89.652292) + (xy 194.993897 89.65577) + (xy 194.992445 89.656825) + (xy 194.989058 89.65912) + (xy 194.97008 89.671095) + (xy 194.967137 89.674427) + (xy 194.967135 89.674429) + (xy 194.907156 89.742342) + (xy 194.906032 89.743538) + (xy 194.905775 89.743892) + (xy 194.905554 89.744113) + (xy 194.905405 89.744204) + (xy 194.904504 89.745163) + (xy 194.902292 89.747375) + (xy 194.901509 89.746592) + (xy 194.900362 89.747296) + (xy 194.901721 89.748496) + (xy 194.889018 89.762879) + (xy 194.860993 89.822571) + (xy 194.841821 89.863405) + (xy 194.82944 89.881037) + (xy 193.738741 90.971737) + (xy 193.728448 90.98005) + (xy 193.719035 90.986127) + (xy 193.719033 90.986129) + (xy 193.714696 90.988929) + (xy 193.699551 91.00814) + (xy 193.691454 91.018411) + (xy 193.686566 91.023911) + (xy 193.682829 91.027648) + (xy 193.681328 91.029748) + (xy 193.681325 91.029752) + (xy 193.670661 91.044674) + (xy 193.668893 91.047029) + (xy 193.636066 91.08867) + (xy 193.634355 91.093543) + (xy 193.632441 91.097023) + (xy 193.630668 91.100641) + (xy 193.627666 91.104843) + (xy 193.626187 91.109787) + (xy 193.626187 91.109788) + (xy 193.619448 91.132321) + (xy 193.612889 91.154256) + (xy 193.612469 91.155659) + (xy 193.611559 91.158456) + (xy 193.593984 91.208502) + (xy 193.5935 91.214091) + (xy 193.5935 91.21435) + (xy 193.593161 91.218354) + (xy 193.592754 91.221579) + (xy 193.591275 91.226524) + (xy 193.592607 91.260414) + (xy 193.593452 91.281924) + (xy 193.5935 91.284378) + (xy 193.5935 91.895175) + (xy 193.575194 91.939369) + (xy 193.558545 91.951278) + (xy 193.546599 91.957143) + (xy 193.546598 91.957144) + (xy 193.541964 91.959419) + (xy 193.538318 91.963071) + (xy 193.538317 91.963072) + (xy 193.462704 92.038817) + (xy 193.462702 92.038819) + (xy 193.459056 92.042472) + (xy 193.428423 92.105139) + (xy 193.409943 92.142946) + (xy 193.40752 92.147902) + (xy 193.406819 92.152705) + (xy 193.406819 92.152706) + (xy 193.404937 92.165611) + (xy 193.3975 92.216589) + (xy 193.397501 92.78341) + (xy 193.407699 92.852695) + (xy 193.459419 92.958036) + (xy 193.463071 92.961682) + (xy 193.463072 92.961683) + (xy 193.538817 93.037296) + (xy 193.538819 93.037298) + (xy 193.542472 93.040944) + (xy 193.547113 93.043213) + (xy 193.547115 93.043214) + (xy 193.558448 93.048754) + (xy 193.590113 93.084608) + (xy 193.5935 93.104904) + (xy 193.5935 93.921634) + (xy 193.575233 93.96579) + (xy 193.49207 94.049098) + (xy 193.492068 94.0491) + (xy 193.488422 94.052753) + (xy 193.486154 94.057393) + (xy 193.435675 94.160662) + (xy 193.433231 94.165661) + (xy 193.43253 94.170464) + (xy 193.43253 94.170465) + (xy 193.430707 94.182964) + (xy 193.4225 94.239219) + (xy 193.422501 95.26078) + (xy 193.433422 95.334979) + (xy 193.48881 95.44779) + (xy 193.492462 95.451436) + (xy 193.492463 95.451437) + (xy 193.574098 95.53293) + (xy 193.5741 95.532932) + (xy 193.577753 95.536578) + (xy 193.583446 95.539361) + (xy 193.584009 95.539999) + (xy 193.586599 95.541846) + (xy 193.586171 95.542446) + (xy 193.615112 95.575213) + (xy 193.6185 95.595512) + (xy 193.6185 97.816089) + (xy 193.600194 97.860283) + (xy 191.51374 99.946737) + (xy 191.503448 99.955049) + (xy 191.494039 99.961124) + (xy 191.494036 99.961127) + (xy 191.489696 99.963929) + (xy 191.476725 99.980382) + (xy 191.466454 99.993411) + (xy 191.461566 99.998911) + (xy 191.457829 100.002648) + (xy 191.456328 100.004748) + (xy 191.456325 100.004752) + (xy 191.445661 100.019674) + (xy 191.443893 100.022029) + (xy 191.411066 100.06367) + (xy 191.409355 100.068543) + (xy 191.407441 100.072023) + (xy 191.405668 100.075641) + (xy 191.402666 100.079843) + (xy 191.388227 100.128126) + (xy 191.387469 100.130659) + (xy 191.386559 100.133456) + (xy 191.368984 100.183502) + (xy 191.3685 100.189091) + (xy 191.3685 100.18935) + (xy 191.368161 100.193354) + (xy 191.367754 100.196579) + (xy 191.366275 100.201524) + (xy 191.367066 100.221645) + (xy 191.368452 100.256924) + (xy 191.3685 100.259378) + (xy 191.3685 103.556) + (xy 191.350194 103.600194) + (xy 191.306 103.6185) + (xy 189.5035 103.6185) + (xy 189.459306 103.600194) + (xy 189.441 103.556) + (xy 189.441 103.164999) + (xy 189.459306 103.120805) + (xy 189.5035 103.102499) + (xy 189.53341 103.102499) + (xy 189.602695 103.092301) + (xy 189.708036 103.040581) + (xy 189.711683 103.036928) + (xy 189.787296 102.961183) + (xy 189.787298 102.961181) + (xy 189.790944 102.957528) + (xy 189.839937 102.857301) + (xy 189.840349 102.856458) + (xy 189.840349 102.856457) + (xy 189.84248 102.852098) + (xy 189.843408 102.84574) + (xy 189.848007 102.814208) + (xy 189.8525 102.783411) + (xy 189.852499 102.26659) + (xy 189.842301 102.197305) + (xy 189.790581 102.091964) + (xy 189.719851 102.021357) + (xy 189.711183 102.012704) + (xy 189.711181 102.012702) + (xy 189.707528 102.009056) + (xy 189.634238 101.973231) + (xy 189.606458 101.959651) + (xy 189.606457 101.959651) + (xy 189.602098 101.95752) + (xy 189.597295 101.956819) + (xy 189.597294 101.956819) + (xy 189.575341 101.953617) + (xy 189.533411 101.9475) + (xy 189.250749 101.9475) + (xy 188.96659 101.947501) + (xy 188.897305 101.957699) + (xy 188.791964 102.009419) + (xy 188.788318 102.013071) + (xy 188.788317 102.013072) + (xy 188.712704 102.088817) + (xy 188.712702 102.088819) + (xy 188.709056 102.092472) + (xy 188.673231 102.165762) + (xy 188.659943 102.192946) + (xy 188.65752 102.197902) + (xy 188.6475 102.266589) + (xy 188.647501 102.78341) + (xy 188.657699 102.852695) + (xy 188.709419 102.958036) + (xy 188.713071 102.961682) + (xy 188.713072 102.961683) + (xy 188.788817 103.037296) + (xy 188.788819 103.037298) + (xy 188.792472 103.040944) + (xy 188.865762 103.076769) + (xy 188.893158 103.090161) + (xy 188.897902 103.09248) + (xy 188.902705 103.093181) + (xy 188.902706 103.093181) + (xy 188.924659 103.096383) + (xy 188.966589 103.1025) + (xy 188.9965 103.1025) + (xy 189.040694 103.120806) + (xy 189.059 103.165) + (xy 189.059 103.556) + (xy 189.040694 103.600194) + (xy 188.9965 103.6185) + (xy 185.5035 103.6185) + (xy 185.459306 103.600194) + (xy 185.441 103.556) + (xy 185.441 103.164999) + (xy 185.459306 103.120805) + (xy 185.5035 103.102499) + (xy 185.53341 103.102499) + (xy 185.602695 103.092301) + (xy 185.708036 103.040581) + (xy 185.711683 103.036928) + (xy 185.787296 102.961183) + (xy 185.787298 102.961181) + (xy 185.790944 102.957528) + (xy 185.839937 102.857301) + (xy 185.840349 102.856458) + (xy 185.840349 102.856457) + (xy 185.84248 102.852098) + (xy 185.843408 102.84574) + (xy 185.848007 102.814208) + (xy 185.8525 102.783411) + (xy 185.852499 102.26659) + (xy 185.842301 102.197305) + (xy 185.790581 102.091964) + (xy 185.719851 102.021357) + (xy 185.711183 102.012704) + (xy 185.711181 102.012702) + (xy 185.707528 102.009056) + (xy 185.634238 101.973231) + (xy 185.606458 101.959651) + (xy 185.606457 101.959651) + (xy 185.602098 101.95752) + (xy 185.597295 101.956819) + (xy 185.597294 101.956819) + (xy 185.575341 101.953617) + (xy 185.533411 101.9475) + (xy 185.250749 101.9475) + (xy 184.96659 101.947501) + (xy 184.897305 101.957699) + (xy 184.791964 102.009419) + (xy 184.788318 102.013071) + (xy 184.788317 102.013072) + (xy 184.712704 102.088817) + (xy 184.712702 102.088819) + (xy 184.709056 102.092472) + (xy 184.673231 102.165762) + (xy 184.659943 102.192946) + (xy 184.65752 102.197902) + (xy 184.6475 102.266589) + (xy 184.647501 102.78341) + (xy 184.657699 102.852695) + (xy 184.709419 102.958036) + (xy 184.713071 102.961682) + (xy 184.713072 102.961683) + (xy 184.788817 103.037296) + (xy 184.788819 103.037298) + (xy 184.792472 103.040944) + (xy 184.865762 103.076769) + (xy 184.893158 103.090161) + (xy 184.897902 103.09248) + (xy 184.902705 103.093181) + (xy 184.902706 103.093181) + (xy 184.924659 103.096383) + (xy 184.966589 103.1025) + (xy 184.9965 103.1025) + (xy 185.040694 103.120806) + (xy 185.059 103.165) + (xy 185.059 103.556) + (xy 185.040694 103.600194) + (xy 184.9965 103.6185) + (xy 175.1035 103.6185) + (xy 175.059306 103.600194) + (xy 175.041 103.556) + (xy 175.041 103.164999) + (xy 175.059306 103.120805) + (xy 175.1035 103.102499) + (xy 175.13341 103.102499) + (xy 175.202695 103.092301) + (xy 175.308036 103.040581) + (xy 175.311683 103.036928) + (xy 175.387296 102.961183) + (xy 175.387298 102.961181) + (xy 175.390944 102.957528) + (xy 175.439937 102.857301) + (xy 175.440349 102.856458) + (xy 175.440349 102.856457) + (xy 175.44248 102.852098) + (xy 175.443408 102.84574) + (xy 175.448007 102.814208) + (xy 175.4525 102.783411) + (xy 175.452499 102.26659) + (xy 175.442301 102.197305) + (xy 175.390581 102.091964) + (xy 175.319851 102.021357) + (xy 175.311183 102.012704) + (xy 175.311181 102.012702) + (xy 175.307528 102.009056) + (xy 175.234238 101.973231) + (xy 175.206458 101.959651) + (xy 175.206457 101.959651) + (xy 175.202098 101.95752) + (xy 175.197295 101.956819) + (xy 175.197294 101.956819) + (xy 175.175341 101.953617) + (xy 175.133411 101.9475) + (xy 174.850749 101.9475) + (xy 174.56659 101.947501) + (xy 174.497305 101.957699) + (xy 174.391964 102.009419) + (xy 174.388318 102.013071) + (xy 174.388317 102.013072) + (xy 174.312704 102.088817) + (xy 174.312702 102.088819) + (xy 174.309056 102.092472) + (xy 174.273231 102.165762) + (xy 174.259943 102.192946) + (xy 174.25752 102.197902) + (xy 174.2475 102.266589) + (xy 174.247501 102.78341) + (xy 174.257699 102.852695) + (xy 174.309419 102.958036) + (xy 174.313071 102.961682) + (xy 174.313072 102.961683) + (xy 174.388817 103.037296) + (xy 174.388819 103.037298) + (xy 174.392472 103.040944) + (xy 174.465762 103.076769) + (xy 174.493158 103.090161) + (xy 174.497902 103.09248) + (xy 174.502705 103.093181) + (xy 174.502706 103.093181) + (xy 174.524659 103.096383) + (xy 174.566589 103.1025) + (xy 174.5965 103.1025) + (xy 174.640694 103.120806) + (xy 174.659 103.165) + (xy 174.659 103.556) + (xy 174.640694 103.600194) + (xy 174.5965 103.6185) + (xy 167.444 103.6185) + (xy 167.399806 103.600194) + (xy 167.3815 103.556) + (xy 167.3815 101.231083) + (xy 174.248001 101.231083) + (xy 174.248333 101.235614) + (xy 174.257478 101.297743) + (xy 174.260326 101.30691) + (xy 174.307556 101.403105) + (xy 174.313484 101.411387) + (xy 174.389111 101.486883) + (xy 174.397406 101.492799) + (xy 174.493687 101.539863) + (xy 174.502851 101.542695) + (xy 174.564391 101.551672) + (xy 174.568904 101.552) + (xy 174.774069 101.552) + (xy 174.782859 101.548359) + (xy 174.7865 101.539569) + (xy 174.7865 101.539568) + (xy 174.9135 101.539568) + (xy 174.917141 101.548358) + (xy 174.925931 101.551999) + (xy 175.131083 101.551999) + (xy 175.135614 101.551667) + (xy 175.197743 101.542522) + (xy 175.20691 101.539674) + (xy 175.303105 101.492444) + (xy 175.311387 101.486516) + (xy 175.386883 101.410889) + (xy 175.392799 101.402594) + (xy 175.439863 101.306313) + (xy 175.442695 101.297149) + (xy 175.451672 101.235609) + (xy 175.452 101.231096) + (xy 175.452 101.231083) + (xy 184.648001 101.231083) + (xy 184.648333 101.235614) + (xy 184.657478 101.297743) + (xy 184.660326 101.30691) + (xy 184.707556 101.403105) + (xy 184.713484 101.411387) + (xy 184.789111 101.486883) + (xy 184.797406 101.492799) + (xy 184.893687 101.539863) + (xy 184.902851 101.542695) + (xy 184.964391 101.551672) + (xy 184.968904 101.552) + (xy 185.174069 101.552) + (xy 185.182859 101.548359) + (xy 185.1865 101.539569) + (xy 185.1865 101.539568) + (xy 185.3135 101.539568) + (xy 185.317141 101.548358) + (xy 185.325931 101.551999) + (xy 185.531083 101.551999) + (xy 185.535614 101.551667) + (xy 185.597743 101.542522) + (xy 185.60691 101.539674) + (xy 185.703105 101.492444) + (xy 185.711387 101.486516) + (xy 185.786883 101.410889) + (xy 185.792799 101.402594) + (xy 185.839863 101.306313) + (xy 185.842695 101.297149) + (xy 185.851672 101.235609) + (xy 185.852 101.231096) + (xy 185.852 101.231083) + (xy 188.648001 101.231083) + (xy 188.648333 101.235614) + (xy 188.657478 101.297743) + (xy 188.660326 101.30691) + (xy 188.707556 101.403105) + (xy 188.713484 101.411387) + (xy 188.789111 101.486883) + (xy 188.797406 101.492799) + (xy 188.893687 101.539863) + (xy 188.902851 101.542695) + (xy 188.964391 101.551672) + (xy 188.968904 101.552) + (xy 189.174069 101.552) + (xy 189.182859 101.548359) + (xy 189.1865 101.539569) + (xy 189.1865 101.539568) + (xy 189.3135 101.539568) + (xy 189.317141 101.548358) + (xy 189.325931 101.551999) + (xy 189.531083 101.551999) + (xy 189.535614 101.551667) + (xy 189.597743 101.542522) + (xy 189.60691 101.539674) + (xy 189.703105 101.492444) + (xy 189.711387 101.486516) + (xy 189.786883 101.410889) + (xy 189.792799 101.402594) + (xy 189.839863 101.306313) + (xy 189.842695 101.297149) + (xy 189.851672 101.235609) + (xy 189.852 101.231096) + (xy 189.852 101.050931) + (xy 189.848359 101.042141) + (xy 189.839569 101.0385) + (xy 189.325931 101.0385) + (xy 189.317141 101.042141) + (xy 189.3135 101.050931) + (xy 189.3135 101.539568) + (xy 189.1865 101.539568) + (xy 189.1865 101.050931) + (xy 189.182859 101.042141) + (xy 189.174069 101.0385) + (xy 188.660432 101.0385) + (xy 188.651642 101.042141) + (xy 188.648001 101.050931) + (xy 188.648001 101.231083) + (xy 185.852 101.231083) + (xy 185.852 101.050931) + (xy 185.848359 101.042141) + (xy 185.839569 101.0385) + (xy 185.325931 101.0385) + (xy 185.317141 101.042141) + (xy 185.3135 101.050931) + (xy 185.3135 101.539568) + (xy 185.1865 101.539568) + (xy 185.1865 101.050931) + (xy 185.182859 101.042141) + (xy 185.174069 101.0385) + (xy 184.660432 101.0385) + (xy 184.651642 101.042141) + (xy 184.648001 101.050931) + (xy 184.648001 101.231083) + (xy 175.452 101.231083) + (xy 175.452 101.050931) + (xy 175.448359 101.042141) + (xy 175.439569 101.0385) + (xy 174.925931 101.0385) + (xy 174.917141 101.042141) + (xy 174.9135 101.050931) + (xy 174.9135 101.539568) + (xy 174.7865 101.539568) + (xy 174.7865 101.050931) + (xy 174.782859 101.042141) + (xy 174.774069 101.0385) + (xy 174.260432 101.0385) + (xy 174.251642 101.042141) + (xy 174.248001 101.050931) + (xy 174.248001 101.231083) + (xy 167.3815 101.231083) + (xy 167.3815 100.899069) + (xy 174.248 100.899069) + (xy 174.251641 100.907859) + (xy 174.260431 100.9115) + (xy 174.774069 100.9115) + (xy 174.782859 100.907859) + (xy 174.7865 100.899069) + (xy 174.9135 100.899069) + (xy 174.917141 100.907859) + (xy 174.925931 100.9115) + (xy 175.439568 100.9115) + (xy 175.448358 100.907859) + (xy 175.451999 100.899069) + (xy 184.648 100.899069) + (xy 184.651641 100.907859) + (xy 184.660431 100.9115) + (xy 185.174069 100.9115) + (xy 185.182859 100.907859) + (xy 185.1865 100.899069) + (xy 185.3135 100.899069) + (xy 185.317141 100.907859) + (xy 185.325931 100.9115) + (xy 185.839568 100.9115) + (xy 185.848358 100.907859) + (xy 185.851999 100.899069) + (xy 188.648 100.899069) + (xy 188.651641 100.907859) + (xy 188.660431 100.9115) + (xy 189.174069 100.9115) + (xy 189.182859 100.907859) + (xy 189.1865 100.899069) + (xy 189.3135 100.899069) + (xy 189.317141 100.907859) + (xy 189.325931 100.9115) + (xy 189.839568 100.9115) + (xy 189.848358 100.907859) + (xy 189.851999 100.899069) + (xy 189.851999 100.718917) + (xy 189.851667 100.714386) + (xy 189.842522 100.652257) + (xy 189.839674 100.64309) + (xy 189.792444 100.546895) + (xy 189.786516 100.538613) + (xy 189.710889 100.463117) + (xy 189.702594 100.457201) + (xy 189.606313 100.410137) + (xy 189.597149 100.407305) + (xy 189.535609 100.398328) + (xy 189.531096 100.398) + (xy 189.325931 100.398) + (xy 189.317141 100.401641) + (xy 189.3135 100.410431) + (xy 189.3135 100.899069) + (xy 189.1865 100.899069) + (xy 189.1865 100.410432) + (xy 189.182859 100.401642) + (xy 189.174069 100.398001) + (xy 188.968917 100.398001) + (xy 188.964386 100.398333) + (xy 188.902257 100.407478) + (xy 188.89309 100.410326) + (xy 188.796895 100.457556) + (xy 188.788613 100.463484) + (xy 188.713117 100.539111) + (xy 188.707201 100.547406) + (xy 188.660137 100.643687) + (xy 188.657305 100.652851) + (xy 188.648328 100.714391) + (xy 188.648 100.718904) + (xy 188.648 100.899069) + (xy 185.851999 100.899069) + (xy 185.851999 100.718917) + (xy 185.851667 100.714386) + (xy 185.842522 100.652257) + (xy 185.839674 100.64309) + (xy 185.792444 100.546895) + (xy 185.786516 100.538613) + (xy 185.710889 100.463117) + (xy 185.702594 100.457201) + (xy 185.606313 100.410137) + (xy 185.597149 100.407305) + (xy 185.535609 100.398328) + (xy 185.531096 100.398) + (xy 185.325931 100.398) + (xy 185.317141 100.401641) + (xy 185.3135 100.410431) + (xy 185.3135 100.899069) + (xy 185.1865 100.899069) + (xy 185.1865 100.410432) + (xy 185.182859 100.401642) + (xy 185.174069 100.398001) + (xy 184.968917 100.398001) + (xy 184.964386 100.398333) + (xy 184.902257 100.407478) + (xy 184.89309 100.410326) + (xy 184.796895 100.457556) + (xy 184.788613 100.463484) + (xy 184.713117 100.539111) + (xy 184.707201 100.547406) + (xy 184.660137 100.643687) + (xy 184.657305 100.652851) + (xy 184.648328 100.714391) + (xy 184.648 100.718904) + (xy 184.648 100.899069) + (xy 175.451999 100.899069) + (xy 175.451999 100.718917) + (xy 175.451667 100.714386) + (xy 175.442522 100.652257) + (xy 175.439674 100.64309) + (xy 175.392444 100.546895) + (xy 175.386516 100.538613) + (xy 175.310889 100.463117) + (xy 175.302594 100.457201) + (xy 175.206313 100.410137) + (xy 175.197149 100.407305) + (xy 175.135609 100.398328) + (xy 175.131096 100.398) + (xy 174.925931 100.398) + (xy 174.917141 100.401641) + (xy 174.9135 100.410431) + (xy 174.9135 100.899069) + (xy 174.7865 100.899069) + (xy 174.7865 100.410432) + (xy 174.782859 100.401642) + (xy 174.774069 100.398001) + (xy 174.568917 100.398001) + (xy 174.564386 100.398333) + (xy 174.502257 100.407478) + (xy 174.49309 100.410326) + (xy 174.396895 100.457556) + (xy 174.388613 100.463484) + (xy 174.313117 100.539111) + (xy 174.307201 100.547406) + (xy 174.260137 100.643687) + (xy 174.257305 100.652851) + (xy 174.248328 100.714391) + (xy 174.248 100.718904) + (xy 174.248 100.899069) + (xy 167.3815 100.899069) + (xy 167.3815 99.5035) + (xy 167.399806 99.459306) + (xy 167.444 99.441) + (xy 168.335001 99.441) + (xy 168.379195 99.459306) + (xy 168.397501 99.5035) + (xy 168.397501 99.53341) + (xy 168.407699 99.602695) + (xy 168.409839 99.607053) + (xy 168.409839 99.607054) + (xy 168.411684 99.610811) + (xy 168.459419 99.708036) + (xy 168.463071 99.711682) + (xy 168.463072 99.711683) + (xy 168.538817 99.787296) + (xy 168.538819 99.787298) + (xy 168.542472 99.790944) + (xy 168.61035 99.824124) + (xy 168.643158 99.840161) + (xy 168.647902 99.84248) + (xy 168.652705 99.843181) + (xy 168.652706 99.843181) + (xy 168.660693 99.844346) + (xy 168.716589 99.8525) + (xy 168.974317 99.8525) + (xy 169.23341 99.852499) + (xy 169.302695 99.842301) + (xy 169.30826 99.839569) + (xy 169.339717 99.824124) + (xy 169.408036 99.790581) + (xy 169.412094 99.786516) + (xy 169.487296 99.711183) + (xy 169.487298 99.711181) + (xy 169.490944 99.707528) + (xy 169.538429 99.610385) + (xy 169.540349 99.606458) + (xy 169.540349 99.606457) + (xy 169.54248 99.602098) + (xy 169.5525 99.533411) + (xy 169.5525 99.531083) + (xy 169.948001 99.531083) + (xy 169.948333 99.535614) + (xy 169.957478 99.597743) + (xy 169.960326 99.60691) + (xy 170.007556 99.703105) + (xy 170.013484 99.711387) + (xy 170.089111 99.786883) + (xy 170.097406 99.792799) + (xy 170.193687 99.839863) + (xy 170.202851 99.842695) + (xy 170.264391 99.851672) + (xy 170.268904 99.852) + (xy 170.449069 99.852) + (xy 170.457859 99.848359) + (xy 170.4615 99.839569) + (xy 170.4615 99.839568) + (xy 170.5885 99.839568) + (xy 170.592141 99.848358) + (xy 170.600931 99.851999) + (xy 170.781083 99.851999) + (xy 170.785614 99.851667) + (xy 170.847743 99.842522) + (xy 170.85691 99.839674) + (xy 170.953105 99.792444) + (xy 170.961387 99.786516) + (xy 171.036883 99.710889) + (xy 171.042799 99.702594) + (xy 171.089863 99.606313) + (xy 171.092695 99.597149) + (xy 171.101672 99.535609) + (xy 171.102 99.531096) + (xy 171.102 99.325931) + (xy 171.098359 99.317141) + (xy 171.089569 99.3135) + (xy 170.600931 99.3135) + (xy 170.592141 99.317141) + (xy 170.5885 99.325931) + (xy 170.5885 99.839568) + (xy 170.4615 99.839568) + (xy 170.4615 99.325931) + (xy 170.457859 99.317141) + (xy 170.449069 99.3135) + (xy 169.960432 99.3135) + (xy 169.951642 99.317141) + (xy 169.948001 99.325931) + (xy 169.948001 99.531083) + (xy 169.5525 99.531083) + (xy 169.552499 99.174069) + (xy 169.948 99.174069) + (xy 169.951641 99.182859) + (xy 169.960431 99.1865) + (xy 170.449069 99.1865) + (xy 170.457859 99.182859) + (xy 170.4615 99.174069) + (xy 170.5885 99.174069) + (xy 170.592141 99.182859) + (xy 170.600931 99.1865) + (xy 171.089568 99.1865) + (xy 171.098358 99.182859) + (xy 171.101999 99.174069) + (xy 171.101999 98.968917) + (xy 171.101667 98.964386) + (xy 171.092522 98.902257) + (xy 171.089674 98.89309) + (xy 171.042444 98.796895) + (xy 171.036516 98.788613) + (xy 170.960889 98.713117) + (xy 170.952594 98.707201) + (xy 170.856313 98.660137) + (xy 170.847149 98.657305) + (xy 170.785609 98.648328) + (xy 170.781096 98.648) + (xy 170.600931 98.648) + (xy 170.592141 98.651641) + (xy 170.5885 98.660431) + (xy 170.5885 99.174069) + (xy 170.4615 99.174069) + (xy 170.4615 98.660432) + (xy 170.457859 98.651642) + (xy 170.449069 98.648001) + (xy 170.268917 98.648001) + (xy 170.264386 98.648333) + (xy 170.202257 98.657478) + (xy 170.19309 98.660326) + (xy 170.096895 98.707556) + (xy 170.088613 98.713484) + (xy 170.013117 98.789111) + (xy 170.007201 98.797406) + (xy 169.960137 98.893687) + (xy 169.957305 98.902851) + (xy 169.948328 98.964391) + (xy 169.948 98.968904) + (xy 169.948 99.174069) + (xy 169.552499 99.174069) + (xy 169.552499 98.96659) + (xy 169.542301 98.897305) + (xy 169.490581 98.791964) + (xy 169.486928 98.788317) + (xy 169.411183 98.712704) + (xy 169.411181 98.712702) + (xy 169.407528 98.709056) + (xy 169.320168 98.666353) + (xy 169.306458 98.659651) + (xy 169.306457 98.659651) + (xy 169.302098 98.65752) + (xy 169.297295 98.656819) + (xy 169.297294 98.656819) + (xy 169.261804 98.651642) + (xy 169.233411 98.6475) + (xy 168.975683 98.6475) + (xy 168.71659 98.647501) + (xy 168.647305 98.657699) + (xy 168.642947 98.659839) + (xy 168.642946 98.659839) + (xy 168.629679 98.666353) + (xy 168.541964 98.709419) + (xy 168.538318 98.713071) + (xy 168.538317 98.713072) + (xy 168.462704 98.788817) + (xy 168.462702 98.788819) + (xy 168.459056 98.792472) + (xy 168.432073 98.847673) + (xy 168.409943 98.892946) + (xy 168.40752 98.897902) + (xy 168.406819 98.902705) + (xy 168.406819 98.902706) + (xy 168.405692 98.910431) + (xy 168.3975 98.966589) + (xy 168.3975 98.9965) + (xy 168.379194 99.040694) + (xy 168.335 99.059) + (xy 167.444 99.059) + (xy 167.399806 99.040694) + (xy 167.3815 98.9965) + (xy 167.3815 96.5035) + (xy 167.399806 96.459306) + (xy 167.444 96.441) + (xy 168.335001 96.441) + (xy 168.379195 96.459306) + (xy 168.397501 96.5035) + (xy 168.397501 96.53341) + (xy 168.407699 96.602695) + (xy 168.459419 96.708036) + (xy 168.463071 96.711682) + (xy 168.463072 96.711683) + (xy 168.538817 96.787296) + (xy 168.538819 96.787298) + (xy 168.542472 96.790944) + (xy 168.615762 96.826769) + (xy 168.643158 96.840161) + (xy 168.647902 96.84248) + (xy 168.652705 96.843181) + (xy 168.652706 96.843181) + (xy 168.674659 96.846383) + (xy 168.716589 96.8525) + (xy 168.974317 96.8525) + (xy 169.23341 96.852499) + (xy 169.302695 96.842301) + (xy 169.30826 96.839569) + (xy 169.326223 96.830749) + (xy 169.408036 96.790581) + (xy 169.438013 96.760552) + (xy 169.487296 96.711183) + (xy 169.487298 96.711181) + (xy 169.490944 96.707528) + (xy 169.540008 96.607155) + (xy 169.540349 96.606458) + (xy 169.540349 96.606457) + (xy 169.54248 96.602098) + (xy 169.543218 96.597043) + (xy 169.549309 96.555287) + (xy 169.5525 96.533411) + (xy 169.5525 96.531083) + (xy 169.948001 96.531083) + (xy 169.948333 96.535614) + (xy 169.957478 96.597743) + (xy 169.960326 96.60691) + (xy 170.007556 96.703105) + (xy 170.013484 96.711387) + (xy 170.089111 96.786883) + (xy 170.097406 96.792799) + (xy 170.193687 96.839863) + (xy 170.202851 96.842695) + (xy 170.264391 96.851672) + (xy 170.268904 96.852) + (xy 170.449069 96.852) + (xy 170.457859 96.848359) + (xy 170.4615 96.839569) + (xy 170.4615 96.839568) + (xy 170.5885 96.839568) + (xy 170.592141 96.848358) + (xy 170.600931 96.851999) + (xy 170.781083 96.851999) + (xy 170.785614 96.851667) + (xy 170.847743 96.842522) + (xy 170.85691 96.839674) + (xy 170.953105 96.792444) + (xy 170.961387 96.786516) + (xy 171.036883 96.710889) + (xy 171.042799 96.702594) + (xy 171.089863 96.606313) + (xy 171.092695 96.597149) + (xy 171.101672 96.535609) + (xy 171.102 96.531096) + (xy 171.102 96.325931) + (xy 171.098359 96.317141) + (xy 171.089569 96.3135) + (xy 170.600931 96.3135) + (xy 170.592141 96.317141) + (xy 170.5885 96.325931) + (xy 170.5885 96.839568) + (xy 170.4615 96.839568) + (xy 170.4615 96.325931) + (xy 170.457859 96.317141) + (xy 170.449069 96.3135) + (xy 169.960432 96.3135) + (xy 169.951642 96.317141) + (xy 169.948001 96.325931) + (xy 169.948001 96.531083) + (xy 169.5525 96.531083) + (xy 169.552499 96.174069) + (xy 169.948 96.174069) + (xy 169.951641 96.182859) + (xy 169.960431 96.1865) + (xy 170.449069 96.1865) + (xy 170.457859 96.182859) + (xy 170.4615 96.174069) + (xy 170.5885 96.174069) + (xy 170.592141 96.182859) + (xy 170.600931 96.1865) + (xy 171.089568 96.1865) + (xy 171.098358 96.182859) + (xy 171.101999 96.174069) + (xy 171.101999 95.968917) + (xy 171.101667 95.964386) + (xy 171.092522 95.902257) + (xy 171.089674 95.89309) + (xy 171.042444 95.796895) + (xy 171.036516 95.788613) + (xy 170.960889 95.713117) + (xy 170.952594 95.707201) + (xy 170.856313 95.660137) + (xy 170.847149 95.657305) + (xy 170.785609 95.648328) + (xy 170.781096 95.648) + (xy 170.600931 95.648) + (xy 170.592141 95.651641) + (xy 170.5885 95.660431) + (xy 170.5885 96.174069) + (xy 170.4615 96.174069) + (xy 170.4615 95.660432) + (xy 170.457859 95.651642) + (xy 170.449069 95.648001) + (xy 170.268917 95.648001) + (xy 170.264386 95.648333) + (xy 170.202257 95.657478) + (xy 170.19309 95.660326) + (xy 170.096895 95.707556) + (xy 170.088613 95.713484) + (xy 170.013117 95.789111) + (xy 170.007201 95.797406) + (xy 169.960137 95.893687) + (xy 169.957305 95.902851) + (xy 169.948328 95.964391) + (xy 169.948 95.968904) + (xy 169.948 96.174069) + (xy 169.552499 96.174069) + (xy 169.552499 95.96659) + (xy 169.542301 95.897305) + (xy 169.535174 95.882788) + (xy 169.530749 95.873777) + (xy 169.490581 95.791964) + (xy 169.478026 95.779431) + (xy 169.411183 95.712704) + (xy 169.411181 95.712702) + (xy 169.407528 95.709056) + (xy 169.317816 95.665203) + (xy 169.306458 95.659651) + (xy 169.306457 95.659651) + (xy 169.302098 95.65752) + (xy 169.297295 95.656819) + (xy 169.297294 95.656819) + (xy 169.261804 95.651642) + (xy 169.233411 95.6475) + (xy 168.975683 95.6475) + (xy 168.71659 95.647501) + (xy 168.647305 95.657699) + (xy 168.642947 95.659839) + (xy 168.642946 95.659839) + (xy 168.640712 95.660936) + (xy 168.541964 95.709419) + (xy 168.538318 95.713071) + (xy 168.538317 95.713072) + (xy 168.462704 95.788817) + (xy 168.462702 95.788819) + (xy 168.459056 95.792472) + (xy 168.432574 95.846648) + (xy 168.409766 95.893308) + (xy 168.40752 95.897902) + (xy 168.406819 95.902705) + (xy 168.406819 95.902706) + (xy 168.405604 95.911035) + (xy 168.3975 95.966589) + (xy 168.3975 95.9965) + (xy 168.379194 96.040694) + (xy 168.335 96.059) + (xy 167.423049 96.059) + (xy 167.378855 96.040694) + (xy 167.366156 96.022373) + (xy 167.365695 96.02136) + (xy 167.365693 96.021357) + (xy 167.363852 96.017307) + (xy 167.349199 96.000302) + (xy 167.347708 95.997375) + (xy 167.3419 95.991567) + (xy 167.338746 95.98817) + (xy 167.286826 95.927914) + (xy 167.283918 95.924539) + (xy 167.263741 95.911461) + (xy 167.260155 95.908559) + (xy 167.260081 95.908661) + (xy 167.256106 95.905773) + (xy 167.252625 95.902292) + (xy 167.241343 95.896543) + (xy 167.235736 95.893309) + (xy 167.235735 95.893308) + (xy 167.207055 95.874719) + (xy 167.184893 95.860354) + (xy 167.18489 95.860353) + (xy 167.18116 95.857935) + (xy 167.176901 95.856661) + (xy 167.176898 95.85666) + (xy 167.149811 95.84856) + (xy 167.148839 95.848269) + (xy 167.138377 95.844079) + (xy 167.132813 95.841244) + (xy 167.121067 95.839384) + (xy 167.112951 95.837536) + (xy 167.088896 95.830342) + (xy 167.063838 95.822848) + (xy 167.019496 95.822577) + (xy 167.010103 95.821809) + (xy 167.004857 95.820978) + (xy 167.004856 95.820978) + (xy 167 95.820209) + (xy 166.991373 95.821576) + (xy 166.98122 95.822344) + (xy 166.962836 95.822231) + (xy 166.945838 95.822127) + (xy 166.945836 95.822127) + (xy 166.941385 95.8221) + (xy 166.887011 95.837641) + (xy 166.879623 95.839275) + (xy 166.867187 95.841244) + (xy 166.862804 95.843477) + (xy 166.86187 95.843781) + (xy 166.852155 95.847603) + (xy 166.827929 95.854526) + (xy 166.827927 95.854527) + (xy 166.823644 95.855751) + (xy 166.819875 95.858129) + (xy 166.803622 95.868384) + (xy 166.76352 95.893687) + (xy 166.762819 95.894129) + (xy 166.757842 95.896959) + (xy 166.751757 95.900059) + (xy 166.751756 95.90006) + (xy 166.747375 95.902292) + (xy 166.743897 95.90577) + (xy 166.742445 95.906825) + (xy 166.739058 95.90912) + (xy 166.72008 95.921095) + (xy 166.717137 95.924427) + (xy 166.717135 95.924429) + (xy 166.657156 95.992342) + (xy 166.656032 95.993538) + (xy 166.655775 95.993892) + (xy 166.655554 95.994113) + (xy 166.655405 95.994204) + (xy 166.654504 95.995163) + (xy 166.652292 95.997375) + (xy 166.651509 95.996592) + (xy 166.650362 95.997296) + (xy 166.651721 95.998496) + (xy 166.639018 96.012879) + (xy 166.628114 96.036104) + (xy 166.588868 96.119695) + (xy 166.588867 96.119698) + (xy 166.586976 96.123726) + (xy 166.568136 96.244724) + (xy 166.568713 96.249137) + (xy 166.568713 96.249138) + (xy 166.582655 96.355751) + (xy 166.584014 96.366145) + (xy 166.591185 96.382443) + (xy 166.591244 96.382813) + (xy 166.592007 96.384311) + (xy 166.594031 96.38891) + (xy 166.594031 96.388911) + (xy 166.613207 96.432491) + (xy 166.6185 96.457663) + (xy 166.6185 99.042639) + (xy 166.612575 99.0692) + (xy 166.588869 99.119692) + (xy 166.588867 99.119698) + (xy 166.586976 99.123726) + (xy 166.568136 99.244724) + (xy 166.568713 99.249137) + (xy 166.568713 99.249138) + (xy 166.574147 99.290694) + (xy 166.584014 99.366145) + (xy 166.585809 99.370224) + (xy 166.589286 99.378126) + (xy 166.591185 99.382443) + (xy 166.591244 99.382813) + (xy 166.592007 99.384311) + (xy 166.594031 99.38891) + (xy 166.594031 99.388911) + (xy 166.613207 99.432491) + (xy 166.6185 99.457663) + (xy 166.6185 103.980501) + (xy 166.618267 103.985894) + (xy 166.615108 104.022373) + (xy 166.614417 104.030346) + (xy 166.615661 104.035353) + (xy 166.615661 104.035356) + (xy 166.616657 104.039364) + (xy 166.6185 104.054431) + (xy 166.6185 106.042639) + (xy 166.612575 106.0692) + (xy 166.588869 106.119692) + (xy 166.588867 106.119698) + (xy 166.586976 106.123726) + (xy 166.568136 106.244724) + (xy 166.568713 106.249137) + (xy 166.568713 106.249138) + (xy 166.582655 106.355751) + (xy 166.584014 106.366145) + (xy 166.585809 106.370224) + (xy 166.589286 106.378126) + (xy 166.591185 106.382443) + (xy 166.591244 106.382813) + (xy 166.592007 106.384311) + (xy 166.594031 106.38891) + (xy 166.594031 106.388911) + (xy 166.613207 106.432491) + (xy 166.6185 106.457663) + (xy 166.6185 110.542639) + (xy 166.612575 110.5692) + (xy 166.588869 110.619692) + (xy 166.588867 110.619698) + (xy 166.586976 110.623726) + (xy 166.568136 110.744724) + (xy 166.568713 110.749137) + (xy 166.568713 110.749138) + (xy 166.582655 110.855751) + (xy 166.584014 110.866145) + (xy 166.591185 110.882443) + (xy 166.591244 110.882813) + (xy 166.592007 110.884311) + (xy 166.594031 110.88891) + (xy 166.594031 110.888911) + (xy 166.613207 110.932491) + (xy 166.6185 110.957663) + (xy 166.6185 113.542639) + (xy 166.612575 113.5692) + (xy 166.588869 113.619692) + (xy 166.588867 113.619698) + (xy 166.586976 113.623726) + (xy 166.568136 113.744724) + (xy 166.568713 113.749137) + (xy 166.568713 113.749138) + (xy 166.582655 113.855751) + (xy 166.584014 113.866145) + (xy 166.591185 113.882443) + (xy 166.591244 113.882813) + (xy 166.592007 113.884311) + (xy 166.594031 113.88891) + (xy 166.594031 113.888911) + (xy 166.630402 113.971568) + (xy 166.633333 113.97823) + (xy 166.647272 113.994813) + (xy 166.648029 113.995713) + (xy 166.650157 113.998434) + (xy 166.652292 114.002625) + (xy 166.660081 114.010414) + (xy 166.66373 114.014392) + (xy 166.695342 114.051999) + (xy 166.712127 114.071968) + (xy 166.735399 114.087459) + (xy 166.741836 114.092733) + (xy 166.743899 114.094232) + (xy 166.747375 114.097708) + (xy 166.751753 114.099939) + (xy 166.751756 114.099941) + (xy 166.75873 114.103494) + (xy 166.764983 114.107152) + (xy 166.77846 114.116123) + (xy 166.781134 114.117903) + (xy 166.807778 114.157631) + (xy 166.809 114.169929) + (xy 166.809 115.085001) + (xy 166.790694 115.129195) + (xy 166.7465 115.147501) + (xy 166.71659 115.147501) + (xy 166.647305 115.157699) + (xy 166.642947 115.159839) + (xy 166.642946 115.159839) + (xy 166.627176 115.167582) + (xy 166.541964 115.209419) + (xy 166.538318 115.213071) + (xy 166.538317 115.213072) + (xy 166.462704 115.288817) + (xy 166.462702 115.288819) + (xy 166.459056 115.292472) + (xy 166.427779 115.356458) + (xy 166.409943 115.392946) + (xy 166.40752 115.397902) + (xy 166.406819 115.402705) + (xy 166.406819 115.402706) + (xy 166.405542 115.411461) + (xy 166.3975 115.466589) + (xy 164.852499 115.466589) + (xy 164.842301 115.397305) + (xy 164.790581 115.291964) + (xy 164.779681 115.281083) + (xy 164.711183 115.212704) + (xy 164.711181 115.212702) + (xy 164.707528 115.209056) + (xy 164.627701 115.170035) + (xy 164.606458 115.159651) + (xy 164.606457 115.159651) + (xy 164.602098 115.15752) + (xy 164.597295 115.156819) + (xy 164.597294 115.156819) + (xy 164.56626 115.152292) + (xy 164.533411 115.1475) + (xy 164.521426 115.1475) + (xy 164.2535 115.147501) + (xy 164.209306 115.129195) + (xy 164.191 115.085001) + (xy 164.191 114.169384) + (xy 164.209306 114.12519) + (xy 164.220797 114.116123) + (xy 164.239712 114.104509) + (xy 164.244034 114.102085) + (xy 164.252625 114.097708) + (xy 164.255427 114.094906) + (xy 164.256264 114.094346) + (xy 164.258891 114.092733) + (xy 164.275881 114.082301) + (xy 164.358058 113.991513) + (xy 164.411451 113.881311) + (xy 164.413317 113.870224) + (xy 164.431367 113.762928) + (xy 164.431767 113.760552) + (xy 164.431896 113.75) + (xy 164.414536 113.628781) + (xy 164.363852 113.517307) + (xy 164.349199 113.500302) + (xy 164.347708 113.497375) + (xy 164.3419 113.491567) + (xy 164.338746 113.48817) + (xy 164.286826 113.427914) + (xy 164.283918 113.424539) + (xy 164.263741 113.411461) + (xy 164.260155 113.408559) + (xy 164.260081 113.408661) + (xy 164.256106 113.405773) + (xy 164.252625 113.402292) + (xy 164.241343 113.396543) + (xy 164.235736 113.393309) + (xy 164.235399 113.39309) + (xy 164.218916 113.382407) + (xy 164.184893 113.360354) + (xy 164.18489 113.360353) + (xy 164.18116 113.357935) + (xy 164.176901 113.356661) + (xy 164.176898 113.35666) + (xy 164.158345 113.351112) + (xy 164.148839 113.348269) + (xy 164.138377 113.344079) + (xy 164.132813 113.341244) + (xy 164.121067 113.339384) + (xy 164.112951 113.337536) + (xy 164.102736 113.334481) + (xy 164.063838 113.322848) + (xy 164.019496 113.322577) + (xy 164.010103 113.321809) + (xy 164.004857 113.320978) + (xy 164.004856 113.320978) + (xy 164 113.320209) + (xy 163.991373 113.321576) + (xy 163.98122 113.322344) + (xy 163.962836 113.322231) + (xy 163.945838 113.322127) + (xy 163.945836 113.322127) + (xy 163.941385 113.3221) + (xy 163.887011 113.337641) + (xy 163.879623 113.339275) + (xy 163.867187 113.341244) + (xy 163.862804 113.343477) + (xy 163.86187 113.343781) + (xy 163.852155 113.347603) + (xy 163.827929 113.354526) + (xy 163.827927 113.354527) + (xy 163.823644 113.355751) + (xy 163.76352 113.393687) + (xy 163.762819 113.394129) + (xy 163.757842 113.396959) + (xy 163.751757 113.400059) + (xy 163.751756 113.40006) + (xy 163.747375 113.402292) + (xy 163.743897 113.40577) + (xy 163.742445 113.406825) + (xy 163.739058 113.40912) + (xy 163.72008 113.421095) + (xy 163.717137 113.424427) + (xy 163.717135 113.424429) + (xy 163.657156 113.492342) + (xy 163.656032 113.493538) + (xy 163.655775 113.493892) + (xy 163.655554 113.494113) + (xy 163.655405 113.494204) + (xy 163.654504 113.495163) + (xy 163.652292 113.497375) + (xy 163.651509 113.496592) + (xy 163.650362 113.497296) + (xy 163.651721 113.498496) + (xy 163.644398 113.506788) + (xy 163.639018 113.512879) + (xy 163.637127 113.516907) + (xy 163.588868 113.619695) + (xy 163.588867 113.619698) + (xy 163.586976 113.623726) + (xy 163.568136 113.744724) + (xy 156.93114 113.744724) + (xy 156.914536 113.628781) + (xy 156.863852 113.517307) + (xy 156.849199 113.500302) + (xy 156.847708 113.497375) + (xy 156.8419 113.491567) + (xy 156.838746 113.48817) + (xy 156.786826 113.427914) + (xy 156.783918 113.424539) + (xy 156.763741 113.411461) + (xy 156.760155 113.408559) + (xy 156.760081 113.408661) + (xy 156.756106 113.405773) + (xy 156.752625 113.402292) + (xy 156.741343 113.396543) + (xy 156.735736 113.393309) + (xy 156.735399 113.39309) + (xy 156.718916 113.382407) + (xy 156.684893 113.360354) + (xy 156.68489 113.360353) + (xy 156.68116 113.357935) + (xy 156.676901 113.356661) + (xy 156.676898 113.35666) + (xy 156.658345 113.351112) + (xy 156.648839 113.348269) + (xy 156.638377 113.344079) + (xy 156.632813 113.341244) + (xy 156.621067 113.339384) + (xy 156.612951 113.337536) + (xy 156.602736 113.334481) + (xy 156.563838 113.322848) + (xy 156.519496 113.322577) + (xy 156.510103 113.321809) + (xy 156.504857 113.320978) + (xy 156.504856 113.320978) + (xy 156.5 113.320209) + (xy 156.491373 113.321576) + (xy 156.48122 113.322344) + (xy 156.462836 113.322231) + (xy 156.445838 113.322127) + (xy 156.445836 113.322127) + (xy 156.441385 113.3221) + (xy 156.387011 113.337641) + (xy 156.379623 113.339275) + (xy 156.367187 113.341244) + (xy 156.362804 113.343477) + (xy 156.36187 113.343781) + (xy 156.352155 113.347603) + (xy 156.327929 113.354526) + (xy 156.327927 113.354527) + (xy 156.323644 113.355751) + (xy 156.26352 113.393687) + (xy 156.262819 113.394129) + (xy 156.257842 113.396959) + (xy 156.251757 113.400059) + (xy 156.251756 113.40006) + (xy 156.247375 113.402292) + (xy 156.243897 113.40577) + (xy 156.242445 113.406825) + (xy 156.239058 113.40912) + (xy 156.22008 113.421095) + (xy 156.217137 113.424427) + (xy 156.217135 113.424429) + (xy 156.157156 113.492342) + (xy 156.156032 113.493538) + (xy 156.155775 113.493892) + (xy 156.155554 113.494113) + (xy 156.155405 113.494204) + (xy 156.154504 113.495163) + (xy 156.152292 113.497375) + (xy 156.151509 113.496592) + (xy 156.150362 113.497296) + (xy 156.151721 113.498496) + (xy 156.144398 113.506788) + (xy 156.139018 113.512879) + (xy 156.137127 113.516907) + (xy 156.088868 113.619695) + (xy 156.088867 113.619698) + (xy 156.086976 113.623726) + (xy 156.068136 113.744724) + (xy 156.068713 113.749137) + (xy 156.068713 113.749138) + (xy 156.082655 113.855751) + (xy 156.084014 113.866145) + (xy 156.091185 113.882443) + (xy 156.091244 113.882813) + (xy 156.092007 113.884311) + (xy 156.094031 113.88891) + (xy 156.094031 113.888911) + (xy 156.130402 113.971568) + (xy 156.133333 113.97823) + (xy 156.147272 113.994813) + (xy 156.148029 113.995713) + (xy 156.150157 113.998434) + (xy 156.152292 114.002625) + (xy 156.160081 114.010414) + (xy 156.16373 114.014392) + (xy 156.195342 114.051999) + (xy 156.212127 114.071968) + (xy 156.235399 114.087459) + (xy 156.241836 114.092733) + (xy 156.243899 114.094232) + (xy 156.247375 114.097708) + (xy 156.251753 114.099939) + (xy 156.251756 114.099941) + (xy 156.25873 114.103494) + (xy 156.264983 114.107152) + (xy 156.27846 114.116123) + (xy 156.281134 114.117903) + (xy 156.307778 114.157631) + (xy 156.309 114.169929) + (xy 156.309 115.085) + (xy 156.290694 115.129194) + (xy 156.2465 115.1475) + (xy 155.978636 115.147501) + (xy 155.96659 115.147501) + (xy 155.897305 115.157699) + (xy 155.892947 115.159839) + (xy 155.892946 115.159839) + (xy 155.877176 115.167582) + (xy 155.791964 115.209419) + (xy 155.788318 115.213071) + (xy 155.788317 115.213072) + (xy 155.712704 115.288817) + (xy 155.712702 115.288819) + (xy 155.709056 115.292472) + (xy 155.677779 115.356458) + (xy 155.659943 115.392946) + (xy 155.65752 115.397902) + (xy 155.656819 115.402705) + (xy 155.656819 115.402706) + (xy 155.655542 115.411461) + (xy 155.6475 115.466589) + (xy 150.102499 115.466589) + (xy 150.092301 115.397305) + (xy 150.040581 115.291964) + (xy 150.029681 115.281083) + (xy 149.961183 115.212704) + (xy 149.961181 115.212702) + (xy 149.957528 115.209056) + (xy 149.877701 115.170035) + (xy 149.856458 115.159651) + (xy 149.856457 115.159651) + (xy 149.852098 115.15752) + (xy 149.847295 115.156819) + (xy 149.847294 115.156819) + (xy 149.81626 115.152292) + (xy 149.783411 115.1475) + (xy 149.7535 115.1475) + (xy 149.709306 115.129194) + (xy 149.691 115.085) + (xy 149.691 114.169384) + (xy 149.709306 114.12519) + (xy 149.720797 114.116123) + (xy 149.739712 114.104509) + (xy 149.744034 114.102085) + (xy 149.752625 114.097708) + (xy 149.755427 114.094906) + (xy 149.756264 114.094346) + (xy 149.758891 114.092733) + (xy 149.775881 114.082301) + (xy 149.858058 113.991513) + (xy 149.911451 113.881311) + (xy 149.913317 113.870224) + (xy 149.931367 113.762928) + (xy 149.931767 113.760552) + (xy 149.931896 113.75) + (xy 149.914536 113.628781) + (xy 149.887105 113.568449) + (xy 149.8815 113.542581) + (xy 149.8815 112.269499) + (xy 149.881733 112.264106) + (xy 149.885138 112.224797) + (xy 149.885138 112.224794) + (xy 149.885583 112.219654) + (xy 149.884275 112.214386) + (xy 149.883343 112.210636) + (xy 149.8815 112.195569) + (xy 149.8815 110.957472) + (xy 149.887754 110.930221) + (xy 149.89056 110.924429) + (xy 149.911451 110.881311) + (xy 149.913317 110.870224) + (xy 149.924094 110.806159) + (xy 149.931767 110.760552) + (xy 149.931896 110.75) + (xy 149.914536 110.628781) + (xy 149.887105 110.568449) + (xy 149.8815 110.542581) + (xy 149.8815 103.957472) + (xy 149.887754 103.930221) + (xy 149.89168 103.922117) + (xy 149.911451 103.881311) + (xy 149.915599 103.85666) + (xy 149.929949 103.771357) + (xy 149.931767 103.760552) + (xy 149.931896 103.75) + (xy 149.914536 103.628781) + (xy 149.887105 103.568449) + (xy 149.8815 103.542581) + (xy 149.8815 99.457472) + (xy 149.887754 99.430221) + (xy 149.902847 99.399069) + (xy 149.911451 99.381311) + (xy 149.913317 99.370224) + (xy 149.929778 99.272373) + (xy 149.931767 99.260552) + (xy 149.931896 99.25) + (xy 149.914536 99.128781) + (xy 149.887105 99.068449) + (xy 149.8815 99.042581) + (xy 149.8815 96.457472) + (xy 149.887754 96.430221) + (xy 149.89168 96.422117) + (xy 149.911451 96.381311) + (xy 149.913317 96.370224) + (xy 149.931367 96.262928) + (xy 149.931767 96.260552) + (xy 149.931896 96.25) + (xy 149.914536 96.128781) + (xy 149.863852 96.017307) + (xy 149.849199 96.000302) + (xy 149.847708 95.997375) + (xy 149.8419 95.991567) + (xy 149.838746 95.98817) + (xy 149.786826 95.927914) + (xy 149.783918 95.924539) + (xy 149.763741 95.911461) + (xy 149.760155 95.908559) + (xy 149.760081 95.908661) + (xy 149.756106 95.905773) + (xy 149.752625 95.902292) + (xy 149.741343 95.896543) + (xy 149.735735 95.893308) + (xy 149.719505 95.882788) + (xy 149.692377 95.843389) + (xy 149.691 95.830342) + (xy 149.691 94.914999) + (xy 149.709306 94.870805) + (xy 149.7535 94.852499) + (xy 149.78341 94.852499) + (xy 149.852695 94.842301) + (xy 149.958036 94.790581) + (xy 149.961683 94.786928) + (xy 150.037296 94.711183) + (xy 150.037298 94.711181) + (xy 150.040944 94.707528) + (xy 150.083658 94.620146) + (xy 150.090349 94.606458) + (xy 150.090349 94.606457) + (xy 150.09248 94.602098) + (xy 150.1025 94.533411) + (xy 150.102499 94.01659) + (xy 150.102499 94.016589) + (xy 152.6475 94.016589) + (xy 152.647501 94.53341) + (xy 152.657699 94.602695) + (xy 152.709419 94.708036) + (xy 152.713071 94.711682) + (xy 152.713072 94.711683) + (xy 152.788817 94.787296) + (xy 152.788819 94.787298) + (xy 152.792472 94.790944) + (xy 152.845169 94.816703) + (xy 152.893158 94.840161) + (xy 152.897902 94.84248) + (xy 152.902705 94.843181) + (xy 152.902706 94.843181) + (xy 152.924659 94.846383) + (xy 152.966589 94.8525) + (xy 152.968856 94.8525) + (xy 153.274001 94.852499) + (xy 153.531497 94.852499) + (xy 153.575691 94.870805) + (xy 153.790694 95.085808) + (xy 153.809 95.130002) + (xy 153.809 95.830525) + (xy 153.790694 95.874719) + (xy 153.779855 95.88338) + (xy 153.76281 95.894135) + (xy 153.757842 95.896959) + (xy 153.751757 95.900059) + (xy 153.751756 95.90006) + (xy 153.747375 95.902292) + (xy 153.743897 95.90577) + (xy 153.742445 95.906825) + (xy 153.739058 95.90912) + (xy 153.72008 95.921095) + (xy 153.717137 95.924427) + (xy 153.717135 95.924429) + (xy 153.657156 95.992342) + (xy 153.656032 95.993538) + (xy 153.655775 95.993892) + (xy 153.655554 95.994113) + (xy 153.655405 95.994204) + (xy 153.654504 95.995163) + (xy 153.652292 95.997375) + (xy 153.651509 95.996592) + (xy 153.650362 95.997296) + (xy 153.651721 95.998496) + (xy 153.639018 96.012879) + (xy 153.628114 96.036104) + (xy 153.588868 96.119695) + (xy 153.588867 96.119698) + (xy 153.586976 96.123726) + (xy 153.568136 96.244724) + (xy 153.568713 96.249137) + (xy 153.568713 96.249138) + (xy 153.582655 96.355751) + (xy 153.584014 96.366145) + (xy 153.591185 96.382443) + (xy 153.591244 96.382813) + (xy 153.592007 96.384311) + (xy 153.594031 96.38891) + (xy 153.594031 96.388911) + (xy 153.60966 96.424429) + (xy 153.633333 96.47823) + (xy 153.647272 96.494813) + (xy 153.648029 96.495713) + (xy 153.650157 96.498434) + (xy 153.652292 96.502625) + (xy 153.660081 96.510414) + (xy 153.663729 96.514391) + (xy 153.712127 96.571968) + (xy 153.735399 96.587459) + (xy 153.741836 96.592733) + (xy 153.743899 96.594232) + (xy 153.747375 96.597708) + (xy 153.751753 96.599939) + (xy 153.751756 96.599941) + (xy 153.75873 96.603494) + (xy 153.764977 96.607148) + (xy 153.814064 96.639823) + (xy 153.818313 96.641151) + (xy 153.818314 96.641151) + (xy 153.850296 96.651143) + (xy 153.860027 96.655109) + (xy 153.862799 96.656521) + (xy 153.862803 96.656522) + (xy 153.867187 96.658756) + (xy 153.877852 96.660445) + (xy 153.886713 96.66252) + (xy 153.926696 96.675012) + (xy 153.926699 96.675012) + (xy 153.930948 96.67634) + (xy 153.980069 96.677241) + (xy 153.988683 96.677999) + (xy 153.99514 96.679022) + (xy 153.995144 96.679022) + (xy 154 96.679791) + (xy 154.006947 96.67869) + (xy 154.017853 96.677933) + (xy 154.053383 96.678584) + (xy 154.113532 96.662185) + (xy 154.12019 96.660755) + (xy 154.122147 96.660445) + (xy 154.132813 96.658756) + (xy 154.137196 96.656522) + (xy 154.141875 96.655002) + (xy 154.141878 96.65501) + (xy 154.146727 96.653136) + (xy 154.171527 96.646375) + (xy 154.200182 96.628781) + (xy 154.239709 96.604511) + (xy 154.244037 96.602085) + (xy 154.24824 96.599944) + (xy 154.248248 96.599938) + (xy 154.252625 96.597708) + (xy 154.255427 96.594906) + (xy 154.256264 96.594346) + (xy 154.258891 96.592733) + (xy 154.275881 96.582301) + (xy 154.358058 96.491513) + (xy 154.411451 96.381311) + (xy 154.413317 96.370224) + (xy 154.431367 96.262928) + (xy 154.431767 96.260552) + (xy 154.431896 96.25) + (xy 154.414536 96.128781) + (xy 154.363852 96.017307) + (xy 154.349199 96.000302) + (xy 154.347708 95.997375) + (xy 154.3419 95.991567) + (xy 154.338746 95.98817) + (xy 154.286826 95.927914) + (xy 154.283918 95.924539) + (xy 154.263741 95.911461) + (xy 154.260155 95.908559) + (xy 154.260081 95.908661) + (xy 154.256106 95.905773) + (xy 154.252625 95.902292) + (xy 154.241343 95.896543) + (xy 154.235735 95.893308) + (xy 154.219505 95.882788) + (xy 154.192377 95.843389) + (xy 154.191 95.830342) + (xy 154.191 95.068232) + (xy 154.19225 95.060893) + (xy 154.191523 95.06081) + (xy 154.19232 95.053819) + (xy 154.194652 95.047178) + (xy 154.193507 95.036883) + (xy 154.191383 95.017803) + (xy 154.191 95.01089) + (xy 154.191 95.003467) + (xy 154.189419 94.996535) + (xy 154.188243 94.989582) + (xy 154.185014 94.960571) + (xy 154.181281 94.954607) + (xy 154.179906 94.950659) + (xy 154.178097 94.9469) + (xy 154.176532 94.940041) + (xy 154.158351 94.917226) + (xy 154.154256 94.911441) + (xy 154.15228 94.908285) + (xy 154.152279 94.908283) + (xy 154.150404 94.905289) + (xy 154.145191 94.900076) + (xy 154.140506 94.894832) + (xy 154.126612 94.877396) + (xy 154.126611 94.877396) + (xy 154.122225 94.871891) + (xy 154.115886 94.868833) + (xy 154.110385 94.864442) + (xy 154.110811 94.863908) + (xy 154.104647 94.859532) + (xy 153.865261 94.620146) + (xy 153.846955 94.575952) + (xy 153.847609 94.566937) + (xy 153.8525 94.533411) + (xy 153.852499 94.01659) + (xy 153.842301 93.947305) + (xy 153.790581 93.841964) + (xy 153.776583 93.82799) + (xy 153.711183 93.762704) + (xy 153.711181 93.762702) + (xy 153.707528 93.759056) + (xy 153.622357 93.717423) + (xy 153.606458 93.709651) + (xy 153.606457 93.709651) + (xy 153.602098 93.70752) + (xy 153.597295 93.706819) + (xy 153.597294 93.706819) + (xy 153.575341 93.703617) + (xy 153.533411 93.6975) + (xy 153.250749 93.6975) + (xy 152.96659 93.697501) + (xy 152.897305 93.707699) + (xy 152.791964 93.759419) + (xy 152.788318 93.763071) + (xy 152.788317 93.763072) + (xy 152.712704 93.838817) + (xy 152.712702 93.838819) + (xy 152.709056 93.842472) + (xy 152.675836 93.910432) + (xy 152.659943 93.942946) + (xy 152.65752 93.947902) + (xy 152.656819 93.952705) + (xy 152.656819 93.952706) + (xy 152.654724 93.96707) + (xy 152.6475 94.016589) + (xy 150.102499 94.016589) + (xy 150.092301 93.947305) + (xy 150.040581 93.841964) + (xy 150.026583 93.82799) + (xy 149.961183 93.762704) + (xy 149.961181 93.762702) + (xy 149.957528 93.759056) + (xy 149.872357 93.717423) + (xy 149.856458 93.709651) + (xy 149.856457 93.709651) + (xy 149.852098 93.70752) + (xy 149.847295 93.706819) + (xy 149.847294 93.706819) + (xy 149.825341 93.703617) + (xy 149.783411 93.6975) + (xy 149.500749 93.6975) + (xy 149.21659 93.697501) + (xy 149.147305 93.707699) + (xy 149.041964 93.759419) + (xy 149.038318 93.763071) + (xy 149.038317 93.763072) + (xy 148.962704 93.838817) + (xy 148.962702 93.838819) + (xy 148.959056 93.842472) + (xy 148.925836 93.910432) + (xy 148.909943 93.942946) + (xy 148.90752 93.947902) + (xy 148.906819 93.952705) + (xy 148.906819 93.952706) + (xy 148.901372 93.990046) + (xy 148.876879 94.031135) + (xy 148.830505 94.042869) + (xy 148.795333 94.025218) + (xy 148.459306 93.689191) + (xy 148.441 93.644997) + (xy 148.441 92.981083) + (xy 148.898001 92.981083) + (xy 148.898333 92.985614) + (xy 148.907478 93.047743) + (xy 148.910326 93.05691) + (xy 148.957556 93.153105) + (xy 148.963484 93.161387) + (xy 149.039111 93.236883) + (xy 149.047406 93.242799) + (xy 149.143687 93.289863) + (xy 149.152851 93.292695) + (xy 149.214391 93.301672) + (xy 149.218904 93.302) + (xy 149.424069 93.302) + (xy 149.432859 93.298359) + (xy 149.4365 93.289569) + (xy 149.4365 93.289568) + (xy 149.5635 93.289568) + (xy 149.567141 93.298358) + (xy 149.575931 93.301999) + (xy 149.781083 93.301999) + (xy 149.785614 93.301667) + (xy 149.847743 93.292522) + (xy 149.85691 93.289674) + (xy 149.953105 93.242444) + (xy 149.961387 93.236516) + (xy 150.036883 93.160889) + (xy 150.042799 93.152594) + (xy 150.089863 93.056313) + (xy 150.092695 93.047149) + (xy 150.101672 92.985609) + (xy 150.102 92.981096) + (xy 150.102 92.981083) + (xy 152.648001 92.981083) + (xy 152.648333 92.985614) + (xy 152.657478 93.047743) + (xy 152.660326 93.05691) + (xy 152.707556 93.153105) + (xy 152.713484 93.161387) + (xy 152.789111 93.236883) + (xy 152.797406 93.242799) + (xy 152.893687 93.289863) + (xy 152.902851 93.292695) + (xy 152.964391 93.301672) + (xy 152.968904 93.302) + (xy 153.174069 93.302) + (xy 153.182859 93.298359) + (xy 153.1865 93.289569) + (xy 153.1865 93.289568) + (xy 153.3135 93.289568) + (xy 153.317141 93.298358) + (xy 153.325931 93.301999) + (xy 153.531083 93.301999) + (xy 153.535614 93.301667) + (xy 153.597743 93.292522) + (xy 153.60691 93.289674) + (xy 153.703105 93.242444) + (xy 153.711387 93.236516) + (xy 153.786883 93.160889) + (xy 153.792799 93.152594) + (xy 153.839863 93.056313) + (xy 153.842695 93.047149) + (xy 153.851672 92.985609) + (xy 153.852 92.981096) + (xy 153.852 92.800931) + (xy 153.848359 92.792141) + (xy 153.839569 92.7885) + (xy 153.325931 92.7885) + (xy 153.317141 92.792141) + (xy 153.3135 92.800931) + (xy 153.3135 93.289568) + (xy 153.1865 93.289568) + (xy 153.1865 92.800931) + (xy 153.182859 92.792141) + (xy 153.174069 92.7885) + (xy 152.660432 92.7885) + (xy 152.651642 92.792141) + (xy 152.648001 92.800931) + (xy 152.648001 92.981083) + (xy 150.102 92.981083) + (xy 150.102 92.800931) + (xy 150.098359 92.792141) + (xy 150.089569 92.7885) + (xy 149.575931 92.7885) + (xy 149.567141 92.792141) + (xy 149.5635 92.800931) + (xy 149.5635 93.289568) + (xy 149.4365 93.289568) + (xy 149.4365 92.800931) + (xy 149.432859 92.792141) + (xy 149.424069 92.7885) + (xy 148.910432 92.7885) + (xy 148.901642 92.792141) + (xy 148.898001 92.800931) + (xy 148.898001 92.981083) + (xy 148.441 92.981083) + (xy 148.441 92.649069) + (xy 148.898 92.649069) + (xy 148.901641 92.657859) + (xy 148.910431 92.6615) + (xy 149.424069 92.6615) + (xy 149.432859 92.657859) + (xy 149.4365 92.649069) + (xy 149.5635 92.649069) + (xy 149.567141 92.657859) + (xy 149.575931 92.6615) + (xy 150.089568 92.6615) + (xy 150.098358 92.657859) + (xy 150.101999 92.649069) + (xy 152.648 92.649069) + (xy 152.651641 92.657859) + (xy 152.660431 92.6615) + (xy 153.174069 92.6615) + (xy 153.182859 92.657859) + (xy 153.1865 92.649069) + (xy 153.3135 92.649069) + (xy 153.317141 92.657859) + (xy 153.325931 92.6615) + (xy 153.839568 92.6615) + (xy 153.848358 92.657859) + (xy 153.851999 92.649069) + (xy 153.851999 92.468917) + (xy 153.851667 92.464386) + (xy 153.842522 92.402257) + (xy 153.839674 92.39309) + (xy 153.792444 92.296895) + (xy 153.786516 92.288613) + (xy 153.710889 92.213117) + (xy 153.702594 92.207201) + (xy 153.606313 92.160137) + (xy 153.597149 92.157305) + (xy 153.535609 92.148328) + (xy 153.531096 92.148) + (xy 153.325931 92.148) + (xy 153.317141 92.151641) + (xy 153.3135 92.160431) + (xy 153.3135 92.649069) + (xy 153.1865 92.649069) + (xy 153.1865 92.160432) + (xy 153.182859 92.151642) + (xy 153.174069 92.148001) + (xy 152.968917 92.148001) + (xy 152.964386 92.148333) + (xy 152.902257 92.157478) + (xy 152.89309 92.160326) + (xy 152.796895 92.207556) + (xy 152.788613 92.213484) + (xy 152.713117 92.289111) + (xy 152.707201 92.297406) + (xy 152.660137 92.393687) + (xy 152.657305 92.402851) + (xy 152.648328 92.464391) + (xy 152.648 92.468904) + (xy 152.648 92.649069) + (xy 150.101999 92.649069) + (xy 150.101999 92.468917) + (xy 150.101667 92.464386) + (xy 150.092522 92.402257) + (xy 150.089674 92.39309) + (xy 150.042444 92.296895) + (xy 150.036516 92.288613) + (xy 149.960889 92.213117) + (xy 149.952594 92.207201) + (xy 149.856313 92.160137) + (xy 149.847149 92.157305) + (xy 149.785609 92.148328) + (xy 149.781096 92.148) + (xy 149.575931 92.148) + (xy 149.567141 92.151641) + (xy 149.5635 92.160431) + (xy 149.5635 92.649069) + (xy 149.4365 92.649069) + (xy 149.4365 92.160432) + (xy 149.432859 92.151642) + (xy 149.424069 92.148001) + (xy 149.218917 92.148001) + (xy 149.214386 92.148333) + (xy 149.152257 92.157478) + (xy 149.14309 92.160326) + (xy 149.046895 92.207556) + (xy 149.038613 92.213484) + (xy 148.963117 92.289111) + (xy 148.957201 92.297406) + (xy 148.910137 92.393687) + (xy 148.907305 92.402851) + (xy 148.898328 92.464391) + (xy 148.898 92.468904) + (xy 148.898 92.649069) + (xy 148.441 92.649069) + (xy 148.441 90.419384) + (xy 148.459306 90.37519) + (xy 148.470797 90.366123) + (xy 148.489712 90.354509) + (xy 148.494034 90.352085) + (xy 148.502625 90.347708) + (xy 148.505427 90.344906) + (xy 148.506264 90.344346) + (xy 148.508891 90.342733) + (xy 148.525881 90.332301) + (xy 148.608058 90.241513) + (xy 148.661451 90.131311) + (xy 148.662799 90.123302) + (xy 148.674373 90.0545) + (xy 148.681767 90.010552) + (xy 148.681896 90) + (xy 148.664536 89.878781) + (xy 148.613852 89.767307) + (xy 148.599199 89.750302) + (xy 148.597708 89.747375) + (xy 148.5919 89.741567) + (xy 148.588746 89.73817) + (xy 148.536826 89.677914) + (xy 148.533918 89.674539) + (xy 148.513741 89.661461) + (xy 148.510155 89.658559) + (xy 148.510081 89.658661) + (xy 148.506106 89.655773) + (xy 148.502625 89.652292) + (xy 148.491343 89.646543) + (xy 148.485735 89.643308) + (xy 148.469505 89.632788) + (xy 148.442377 89.593389) + (xy 148.441 89.580342) + (xy 148.441 89.165) + (xy 148.459306 89.120806) + (xy 148.5035 89.1025) + (xy 148.771364 89.102499) + (xy 148.78341 89.102499) + (xy 148.852695 89.092301) + (xy 148.870898 89.083364) + (xy 148.883462 89.077195) + (xy 148.958036 89.040581) + (xy 148.96435 89.034256) + (xy 149.037296 88.961183) + (xy 149.037298 88.961181) + (xy 149.040944 88.957528) + (xy 149.088429 88.860385) + (xy 149.090349 88.856458) + (xy 149.090349 88.856457) + (xy 149.09248 88.852098) + (xy 149.093218 88.847043) + (xy 149.098427 88.811328) + (xy 149.1025 88.783411) + (xy 149.1025 88.7785) + (xy 149.120806 88.734306) + (xy 149.165 88.716) + (xy 149.585001 88.716) + (xy 149.629195 88.734306) + (xy 149.647501 88.7785) + (xy 149.647501 88.813374) + (xy 149.647766 88.815385) + (xy 149.647766 88.81539) + (xy 149.652933 88.854647) + (xy 149.653779 88.861071) + (xy 149.6558 88.865404) + (xy 149.6558 88.865405) + (xy 149.700277 88.960787) + (xy 149.700279 88.960789) + (xy 149.702589 88.965744) + (xy 149.784256 89.047411) + (xy 149.789211 89.049721) + (xy 149.789213 89.049723) + (xy 149.829612 89.068561) + (xy 149.888929 89.096221) + (xy 149.902295 89.097981) + (xy 149.934593 89.102233) + (xy 149.934601 89.102233) + (xy 149.936625 89.1025) + (xy 149.938672 89.1025) + (xy 150.250844 89.102499) + (xy 150.563374 89.102499) + (xy 150.565385 89.102234) + (xy 150.56539 89.102234) + (xy 150.606331 89.096845) + (xy 150.606332 89.096845) + (xy 150.611071 89.096221) + (xy 150.638643 89.083364) + (xy 150.710787 89.049723) + (xy 150.710789 89.049721) + (xy 150.715744 89.047411) + (xy 150.797411 88.965744) + (xy 150.799721 88.960789) + (xy 150.799723 88.960787) + (xy 150.825732 88.90501) + (xy 150.846221 88.861071) + (xy 150.849702 88.834631) + (xy 150.852233 88.815407) + (xy 150.852233 88.815399) + (xy 150.8525 88.813375) + (xy 150.852499 88.336626) + (xy 150.852232 88.334593) + (xy 150.846845 88.293669) + (xy 150.846845 88.293668) + (xy 150.846221 88.288929) + (xy 150.838501 88.272373) + (xy 150.799723 88.189213) + (xy 150.799721 88.189211) + (xy 150.797411 88.184256) + (xy 150.715744 88.102589) + (xy 150.710789 88.100279) + (xy 150.710787 88.100277) + (xy 150.651964 88.072848) + (xy 150.611071 88.053779) + (xy 150.597705 88.052019) + (xy 150.565407 88.047767) + (xy 150.565399 88.047767) + (xy 150.563375 88.0475) + (xy 150.561328 88.0475) + (xy 150.249156 88.047501) + (xy 149.936626 88.047501) + (xy 149.934615 88.047766) + (xy 149.93461 88.047766) + (xy 149.893669 88.053155) + (xy 149.893668 88.053155) + (xy 149.888929 88.053779) + (xy 149.884595 88.0558) + (xy 149.789213 88.100277) + (xy 149.789211 88.100279) + (xy 149.784256 88.102589) + (xy 149.702589 88.184256) + (xy 149.700279 88.189211) + (xy 149.700277 88.189213) + (xy 149.6558 88.284594) + (xy 149.655799 88.284597) + (xy 149.653779 88.288929) + (xy 149.653624 88.290105) + (xy 149.624577 88.326296) + (xy 149.594516 88.334) + (xy 149.164999 88.334) + (xy 149.120805 88.315694) + (xy 149.102499 88.2715) + (xy 149.102499 88.26659) + (xy 149.092301 88.197305) + (xy 149.089206 88.191) + (xy 149.074356 88.160755) + (xy 149.040581 88.091964) + (xy 149.036928 88.088317) + (xy 148.961183 88.012704) + (xy 148.961181 88.012702) + (xy 148.957528 88.009056) + (xy 148.859334 87.961057) + (xy 148.856458 87.959651) + (xy 148.856457 87.959651) + (xy 148.852098 87.95752) + (xy 148.847295 87.956819) + (xy 148.847294 87.956819) + (xy 148.825341 87.953617) + (xy 148.783411 87.9475) + (xy 148.500749 87.9475) + (xy 148.21659 87.947501) + (xy 148.147305 87.957699) + (xy 148.142947 87.959839) + (xy 148.142946 87.959839) + (xy 148.123777 87.969251) + (xy 148.041964 88.009419) + (xy 148.038318 88.013071) + (xy 148.038317 88.013072) + (xy 147.962704 88.088817) + (xy 147.962702 88.088819) + (xy 147.959056 88.092472) + (xy 147.930906 88.15006) + (xy 147.909943 88.192946) + (xy 147.90752 88.197902) + (xy 147.906819 88.202705) + (xy 147.906819 88.202706) + (xy 147.904387 88.21938) + (xy 147.8975 88.266589) + (xy 147.897501 88.78341) + (xy 147.907699 88.852695) + (xy 147.909839 88.857053) + (xy 147.909839 88.857054) + (xy 147.911684 88.860811) + (xy 147.959419 88.958036) + (xy 147.963074 88.961685) + (xy 147.963075 88.961686) + (xy 148.040655 89.039131) + (xy 148.059 89.083364) + (xy 148.059 89.580525) + (xy 148.040694 89.624719) + (xy 148.029855 89.63338) + (xy 148.01281 89.644135) + (xy 148.007842 89.646959) + (xy 148.001757 89.650059) + (xy 148.001756 89.65006) + (xy 147.997375 89.652292) + (xy 147.993897 89.65577) + (xy 147.992445 89.656825) + (xy 147.989058 89.65912) + (xy 147.97008 89.671095) + (xy 147.967137 89.674427) + (xy 147.967135 89.674429) + (xy 147.907156 89.742342) + (xy 147.906032 89.743538) + (xy 147.905775 89.743892) + (xy 147.905554 89.744113) + (xy 147.905405 89.744204) + (xy 147.904504 89.745163) + (xy 147.902292 89.747375) + (xy 147.901509 89.746592) + (xy 147.900362 89.747296) + (xy 147.901721 89.748496) + (xy 147.889018 89.762879) + (xy 147.886939 89.767307) + (xy 147.838868 89.869695) + (xy 147.838867 89.869698) + (xy 147.836976 89.873726) + (xy 147.818136 89.994724) + (xy 147.818713 89.999137) + (xy 147.818713 89.999138) + (xy 147.832655 90.105751) + (xy 147.834014 90.116145) + (xy 147.835809 90.120224) + (xy 147.839286 90.128126) + (xy 147.841185 90.132443) + (xy 147.841244 90.132813) + (xy 147.842007 90.134311) + (xy 147.844031 90.13891) + (xy 147.844031 90.138911) + (xy 147.87992 90.220473) + (xy 147.883333 90.22823) + (xy 147.897198 90.244724) + (xy 147.898029 90.245713) + (xy 147.900157 90.248434) + (xy 147.902292 90.252625) + (xy 147.910081 90.260414) + (xy 147.91373 90.264392) + (xy 147.948811 90.306126) + (xy 147.962127 90.321968) + (xy 147.985399 90.337459) + (xy 147.991836 90.342733) + (xy 147.993899 90.344232) + (xy 147.997375 90.347708) + (xy 148.001753 90.349939) + (xy 148.001756 90.349941) + (xy 148.00873 90.353494) + (xy 148.014983 90.357152) + (xy 148.02846 90.366123) + (xy 148.031134 90.367903) + (xy 148.057778 90.407631) + (xy 148.059 90.419929) + (xy 148.059 93.706768) + (xy 148.05775 93.714107) + (xy 148.058477 93.71419) + (xy 148.05768 93.721181) + (xy 148.055348 93.727822) + (xy 148.056126 93.734815) + (xy 148.056126 93.734816) + (xy 148.058617 93.757197) + (xy 148.059 93.76411) + (xy 148.059 93.771533) + (xy 148.060581 93.778465) + (xy 148.061757 93.785418) + (xy 148.064986 93.814429) + (xy 148.068719 93.820393) + (xy 148.070094 93.824341) + (xy 148.071903 93.8281) + (xy 148.073468 93.834959) + (xy 148.077853 93.840461) + (xy 148.077853 93.840462) + (xy 148.091648 93.857773) + (xy 148.095744 93.863559) + (xy 148.097034 93.865619) + (xy 148.099596 93.869711) + (xy 148.104808 93.874923) + (xy 148.109493 93.880167) + (xy 148.127775 93.903109) + (xy 148.134114 93.906167) + (xy 148.139615 93.910558) + (xy 148.139189 93.911092) + (xy 148.145353 93.915468) + (xy 148.609371 94.379485) + (xy 148.613678 94.38556) + (xy 148.61425 94.385105) + (xy 148.618631 94.390613) + (xy 148.621678 94.396958) + (xy 148.635328 94.407874) + (xy 148.644766 94.415422) + (xy 148.649925 94.420039) + (xy 148.655169 94.425283) + (xy 148.658132 94.427145) + (xy 148.658139 94.427151) + (xy 148.661174 94.429058) + (xy 148.66695 94.433163) + (xy 148.689733 94.451383) + (xy 148.696591 94.45296) + (xy 148.700356 94.45478) + (xy 148.704292 94.456158) + (xy 148.710248 94.459902) + (xy 148.717239 94.460692) + (xy 148.717244 94.460694) + (xy 148.739237 94.46318) + (xy 148.746223 94.464373) + (xy 148.753297 94.466) + (xy 148.760677 94.466) + (xy 148.767698 94.466396) + (xy 148.796838 94.46969) + (xy 148.803484 94.467369) + (xy 148.810478 94.466585) + (xy 148.810554 94.467264) + (xy 148.818004 94.466) + (xy 148.835001 94.466) + (xy 148.879195 94.484306) + (xy 148.897501 94.5285) + (xy 148.897501 94.53341) + (xy 148.907699 94.602695) + (xy 148.959419 94.708036) + (xy 148.963071 94.711682) + (xy 148.963072 94.711683) + (xy 149.038817 94.787296) + (xy 149.038819 94.787298) + (xy 149.042472 94.790944) + (xy 149.095169 94.816703) + (xy 149.143158 94.840161) + (xy 149.147902 94.84248) + (xy 149.152705 94.843181) + (xy 149.152706 94.843181) + (xy 149.174659 94.846383) + (xy 149.216589 94.8525) + (xy 149.2465 94.8525) + (xy 149.290694 94.870806) + (xy 149.309 94.915) + (xy 149.309 95.637997) + (xy 149.290694 95.682191) + (xy 149.2465 95.700497) + (xy 149.202306 95.682191) + (xy 145.415628 91.895513) + (xy 145.411323 91.889439) + (xy 145.41075 91.889895) + (xy 145.406369 91.884387) + (xy 145.403322 91.878042) + (xy 145.380239 91.859582) + (xy 145.37508 91.854965) + (xy 145.369831 91.849716) + (xy 145.363828 91.845943) + (xy 145.358052 91.841838) + (xy 145.335267 91.823617) + (xy 145.328407 91.82204) + (xy 145.324647 91.820222) + (xy 145.320711 91.818844) + (xy 145.314752 91.815098) + (xy 145.307758 91.814307) + (xy 145.307757 91.814307) + (xy 145.285764 91.811821) + (xy 145.278787 91.810629) + (xy 145.271703 91.809) + (xy 145.264329 91.809) + (xy 145.257308 91.808604) + (xy 145.255627 91.808414) + (xy 145.228162 91.805309) + (xy 145.221517 91.80763) + (xy 145.214523 91.808414) + (xy 145.214447 91.807736) + (xy 145.206995 91.809) + (xy 138.755899 91.809) + (xy 138.706844 91.808957) + (xy 138.706596 91.808957) + (xy 138.70652 91.808993) + (xy 138.706461 91.809) + (xy 136.673049 91.809) + (xy 136.628855 91.790694) + (xy 136.616156 91.772373) + (xy 136.615695 91.77136) + (xy 136.615694 91.771359) + (xy 136.613852 91.767307) + (xy 136.599199 91.750302) + (xy 136.597708 91.747375) + (xy 136.5919 91.741567) + (xy 136.588746 91.73817) + (xy 136.536826 91.677914) + (xy 136.533918 91.674539) + (xy 136.513741 91.661461) + (xy 136.510155 91.658559) + (xy 136.510081 91.658661) + (xy 136.506106 91.655773) + (xy 136.502625 91.652292) + (xy 136.491343 91.646543) + (xy 136.485736 91.643309) + (xy 136.484635 91.642595) + (xy 136.463322 91.628781) + (xy 136.434893 91.610354) + (xy 136.43489 91.610353) + (xy 136.43116 91.607935) + (xy 136.426901 91.606661) + (xy 136.426898 91.60666) + (xy 136.408345 91.601112) + (xy 136.398839 91.598269) + (xy 136.388377 91.594079) + (xy 136.382813 91.591244) + (xy 136.371067 91.589384) + (xy 136.362951 91.587536) + (xy 136.313838 91.572848) + (xy 136.269496 91.572577) + (xy 136.260103 91.571809) + (xy 136.254857 91.570978) + (xy 136.254856 91.570978) + (xy 136.25 91.570209) + (xy 136.241373 91.571576) + (xy 136.23122 91.572344) + (xy 136.212836 91.572231) + (xy 136.195838 91.572127) + (xy 136.195836 91.572127) + (xy 136.191385 91.5721) + (xy 136.137011 91.587641) + (xy 136.129623 91.589275) + (xy 136.117187 91.591244) + (xy 136.112804 91.593477) + (xy 136.11187 91.593781) + (xy 136.102155 91.597603) + (xy 136.077929 91.604526) + (xy 136.077927 91.604527) + (xy 136.073644 91.605751) + (xy 136.014119 91.643309) + (xy 136.012819 91.644129) + (xy 136.007842 91.646959) + (xy 136.001757 91.650059) + (xy 136.001756 91.65006) + (xy 135.997375 91.652292) + (xy 135.993897 91.65577) + (xy 135.992445 91.656825) + (xy 135.989058 91.65912) + (xy 135.97008 91.671095) + (xy 135.967137 91.674427) + (xy 135.967135 91.674429) + (xy 135.907156 91.742342) + (xy 135.906032 91.743538) + (xy 135.905775 91.743892) + (xy 135.905554 91.744113) + (xy 135.905405 91.744204) + (xy 135.904504 91.745163) + (xy 135.902292 91.747375) + (xy 135.901509 91.746592) + (xy 135.900362 91.747296) + (xy 135.901721 91.748496) + (xy 135.889018 91.762879) + (xy 135.887127 91.766907) + (xy 135.838868 91.869695) + (xy 135.838867 91.869698) + (xy 135.836976 91.873726) + (xy 135.818136 91.994724) + (xy 135.818713 91.999137) + (xy 135.818713 91.999138) + (xy 135.828237 92.071968) + (xy 135.834014 92.116145) + (xy 135.841185 92.132443) + (xy 135.841244 92.132813) + (xy 135.842007 92.134311) + (xy 135.844029 92.138907) + (xy 135.84403 92.138909) + (xy 135.878211 92.216589) + (xy 135.883333 92.22823) + (xy 135.897273 92.244814) + (xy 135.898029 92.245713) + (xy 135.900157 92.248434) + (xy 135.902292 92.252625) + (xy 135.910081 92.260414) + (xy 135.913729 92.264391) + (xy 135.962127 92.321968) + (xy 135.985399 92.337459) + (xy 135.991836 92.342733) + (xy 135.993899 92.344232) + (xy 135.997375 92.347708) + (xy 136.001753 92.349939) + (xy 136.001756 92.349941) + (xy 136.00873 92.353494) + (xy 136.014977 92.357148) + (xy 136.064064 92.389823) + (xy 136.068313 92.391151) + (xy 136.068314 92.391151) + (xy 136.100296 92.401143) + (xy 136.110027 92.405109) + (xy 136.112799 92.406521) + (xy 136.112803 92.406522) + (xy 136.117187 92.408756) + (xy 136.127852 92.410445) + (xy 136.136713 92.41252) + (xy 136.176696 92.425012) + (xy 136.176699 92.425012) + (xy 136.180948 92.42634) + (xy 136.230069 92.427241) + (xy 136.238683 92.427999) + (xy 136.24514 92.429022) + (xy 136.245144 92.429022) + (xy 136.25 92.429791) + (xy 136.256947 92.42869) + (xy 136.267853 92.427933) + (xy 136.303383 92.428584) + (xy 136.363532 92.412185) + (xy 136.37019 92.410755) + (xy 136.372147 92.410445) + (xy 136.382813 92.408756) + (xy 136.387196 92.406522) + (xy 136.391875 92.405002) + (xy 136.391878 92.40501) + (xy 136.396727 92.403136) + (xy 136.421527 92.396375) + (xy 136.489709 92.354511) + (xy 136.494037 92.352085) + (xy 136.49824 92.349944) + (xy 136.498248 92.349938) + (xy 136.502625 92.347708) + (xy 136.505427 92.344906) + (xy 136.506264 92.344346) + (xy 136.508891 92.342733) + (xy 136.525881 92.332301) + (xy 136.608058 92.241513) + (xy 136.615454 92.226248) + (xy 136.651198 92.194458) + (xy 136.6717 92.191) + (xy 138.4965 92.191) + (xy 138.540694 92.209306) + (xy 138.559 92.2535) + (xy 138.559 92.335001) + (xy 138.540694 92.379195) + (xy 138.4965 92.397501) + (xy 138.46659 92.397501) + (xy 138.397305 92.407699) + (xy 138.392947 92.409839) + (xy 138.392946 92.409839) + (xy 138.39026 92.411158) + (xy 138.291964 92.459419) + (xy 138.288318 92.463071) + (xy 138.288317 92.463072) + (xy 138.212704 92.538817) + (xy 138.212702 92.538819) + (xy 138.209056 92.542472) + (xy 138.192701 92.575931) + (xy 138.159943 92.642946) + (xy 138.15752 92.647902) + (xy 138.1475 92.716589) + (xy 138.147501 93.23341) + (xy 138.157699 93.302695) + (xy 138.209419 93.408036) + (xy 138.213071 93.411682) + (xy 138.213072 93.411683) + (xy 138.288817 93.487296) + (xy 138.288819 93.487298) + (xy 138.292472 93.490944) + (xy 138.340441 93.514392) + (xy 138.393158 93.540161) + (xy 138.397902 93.54248) + (xy 138.402705 93.543181) + (xy 138.402706 93.543181) + (xy 138.424659 93.546383) + (xy 138.466589 93.5525) + (xy 138.749251 93.5525) + (xy 139.03341 93.552499) + (xy 139.102695 93.542301) + (xy 139.208036 93.490581) + (xy 139.211683 93.486928) + (xy 139.287296 93.411183) + (xy 139.287298 93.411181) + (xy 139.290944 93.407528) + (xy 139.334133 93.319174) + (xy 139.340349 93.306458) + (xy 139.340349 93.306457) + (xy 139.34248 93.302098) + (xy 139.344293 93.289674) + (xy 139.348541 93.260552) + (xy 139.3525 93.233411) + (xy 139.352499 92.71659) + (xy 139.342301 92.647305) + (xy 139.290581 92.541964) + (xy 139.286928 92.538317) + (xy 139.211183 92.462704) + (xy 139.211181 92.462702) + (xy 139.207528 92.459056) + (xy 139.111646 92.412187) + (xy 139.106458 92.409651) + (xy 139.106457 92.409651) + (xy 139.102098 92.40752) + (xy 139.097295 92.406819) + (xy 139.097294 92.406819) + (xy 139.06602 92.402257) + (xy 139.033411 92.3975) + (xy 139.0035 92.3975) + (xy 138.959306 92.379194) + (xy 138.941 92.335) + (xy 138.941 92.2535) + (xy 138.959306 92.209306) + (xy 139.0035 92.191) + (xy 145.144997 92.191) + (xy 145.189191 92.209306) + (xy 149.066772 96.086887) + (xy 149.085078 96.131081) + (xy 149.084334 96.140691) + (xy 149.068136 96.244724) + (xy 149.068713 96.249137) + (xy 149.068713 96.249138) + (xy 149.082655 96.355751) + (xy 149.084014 96.366145) + (xy 149.091185 96.382443) + (xy 149.091244 96.382813) + (xy 149.092007 96.384311) + (xy 149.094031 96.38891) + (xy 149.094031 96.388911) + (xy 149.113207 96.432491) + (xy 149.1185 96.457663) + (xy 149.1185 98.9965) + (xy 149.100194 99.040694) + (xy 149.056 99.059) + (xy 148.164999 99.059) + (xy 148.120805 99.040694) + (xy 148.102499 98.9965) + (xy 148.102499 98.96659) + (xy 148.092301 98.897305) + (xy 148.040581 98.791964) + (xy 148.036928 98.788317) + (xy 147.961183 98.712704) + (xy 147.961181 98.712702) + (xy 147.957528 98.709056) + (xy 147.870168 98.666353) + (xy 147.856458 98.659651) + (xy 147.856457 98.659651) + (xy 147.852098 98.65752) + (xy 147.847295 98.656819) + (xy 147.847294 98.656819) + (xy 147.811804 98.651642) + (xy 147.783411 98.6475) + (xy 147.525683 98.6475) + (xy 147.26659 98.647501) + (xy 147.197305 98.657699) + (xy 147.192947 98.659839) + (xy 147.192946 98.659839) + (xy 147.179679 98.666353) + (xy 147.091964 98.709419) + (xy 147.088318 98.713071) + (xy 147.088317 98.713072) + (xy 147.012704 98.788817) + (xy 147.012702 98.788819) + (xy 147.009056 98.792472) + (xy 146.982073 98.847673) + (xy 146.959943 98.892946) + (xy 146.95752 98.897902) + (xy 146.956819 98.902705) + (xy 146.956819 98.902706) + (xy 146.955692 98.910431) + (xy 146.9475 98.966589) + (xy 146.947501 99.53341) + (xy 146.957699 99.602695) + (xy 146.959839 99.607053) + (xy 146.959839 99.607054) + (xy 146.961684 99.610811) + (xy 147.009419 99.708036) + (xy 147.013071 99.711682) + (xy 147.013072 99.711683) + (xy 147.088817 99.787296) + (xy 147.088819 99.787298) + (xy 147.092472 99.790944) + (xy 147.16035 99.824124) + (xy 147.193158 99.840161) + (xy 147.197902 99.84248) + (xy 147.202705 99.843181) + (xy 147.202706 99.843181) + (xy 147.210693 99.844346) + (xy 147.266589 99.8525) + (xy 147.524317 99.8525) + (xy 147.78341 99.852499) + (xy 147.852695 99.842301) + (xy 147.85826 99.839569) + (xy 147.889717 99.824124) + (xy 147.958036 99.790581) + (xy 147.962094 99.786516) + (xy 148.037296 99.711183) + (xy 148.037298 99.711181) + (xy 148.040944 99.707528) + (xy 148.088429 99.610385) + (xy 148.090349 99.606458) + (xy 148.090349 99.606457) + (xy 148.09248 99.602098) + (xy 148.1025 99.533411) + (xy 148.1025 99.5035) + (xy 148.120806 99.459306) + (xy 148.165 99.441) + (xy 149.056 99.441) + (xy 149.100194 99.459306) + (xy 149.1185 99.5035) + (xy 149.1185 103.4965) + (xy 149.100194 103.540694) + (xy 149.056 103.559) + (xy 148.164999 103.559) + (xy 148.120805 103.540694) + (xy 148.102499 103.4965) + (xy 148.102499 103.46659) + (xy 148.092301 103.397305) + (xy 148.040581 103.291964) + (xy 148.036928 103.288317) + (xy 147.961183 103.212704) + (xy 147.961181 103.212702) + (xy 147.957528 103.209056) + (xy 147.870843 103.166683) + (xy 147.856458 103.159651) + (xy 147.856457 103.159651) + (xy 147.852098 103.15752) + (xy 147.847295 103.156819) + (xy 147.847294 103.156819) + (xy 147.825341 103.153617) + (xy 147.783411 103.1475) + (xy 147.525683 103.1475) + (xy 147.26659 103.147501) + (xy 147.197305 103.157699) + (xy 147.192947 103.159839) + (xy 147.192946 103.159839) + (xy 147.179007 103.166683) + (xy 147.091964 103.209419) + (xy 147.088318 103.213071) + (xy 147.088317 103.213072) + (xy 147.012704 103.288817) + (xy 147.012702 103.288819) + (xy 147.009056 103.292472) + (xy 146.97873 103.354511) + (xy 146.959943 103.392946) + (xy 146.95752 103.397902) + (xy 146.956819 103.402705) + (xy 146.956819 103.402706) + (xy 146.955065 103.414733) + (xy 146.9475 103.466589) + (xy 146.947501 104.03341) + (xy 146.957699 104.102695) + (xy 147.009419 104.208036) + (xy 147.013071 104.211682) + (xy 147.013072 104.211683) + (xy 147.088817 104.287296) + (xy 147.088819 104.287298) + (xy 147.092472 104.290944) + (xy 147.16035 104.324124) + (xy 147.193158 104.340161) + (xy 147.197902 104.34248) + (xy 147.202705 104.343181) + (xy 147.202706 104.343181) + (xy 147.210693 104.344346) + (xy 147.266589 104.3525) + (xy 147.524317 104.3525) + (xy 147.78341 104.352499) + (xy 147.852695 104.342301) + (xy 147.85826 104.339569) + (xy 147.889717 104.324124) + (xy 147.958036 104.290581) + (xy 147.999407 104.249138) + (xy 148.037296 104.211183) + (xy 148.037298 104.211181) + (xy 148.040944 104.207528) + (xy 148.081908 104.123726) + (xy 148.090349 104.106458) + (xy 148.090349 104.106457) + (xy 148.09248 104.102098) + (xy 148.095994 104.078013) + (xy 148.09713 104.070222) + (xy 148.1025 104.033411) + (xy 148.1025 104.0035) + (xy 148.120806 103.959306) + (xy 148.165 103.941) + (xy 149.056 103.941) + (xy 149.100194 103.959306) + (xy 149.1185 104.0035) + (xy 149.1185 110.4965) + (xy 149.100194 110.540694) + (xy 149.056 110.559) + (xy 148.164999 110.559) + (xy 148.120805 110.540694) + (xy 148.102499 110.4965) + (xy 148.102499 110.46659) + (xy 148.092301 110.397305) + (xy 148.040581 110.291964) + (xy 148.020317 110.271735) + (xy 147.961183 110.212704) + (xy 147.961181 110.212702) + (xy 147.957528 110.209056) + (xy 147.884238 110.173231) + (xy 147.856458 110.159651) + (xy 147.856457 110.159651) + (xy 147.852098 110.15752) + (xy 147.847295 110.156819) + (xy 147.847294 110.156819) + (xy 147.811804 110.151642) + (xy 147.783411 110.1475) + (xy 147.525683 110.1475) + (xy 147.26659 110.147501) + (xy 147.197305 110.157699) + (xy 147.192947 110.159839) + (xy 147.192946 110.159839) + (xy 147.184787 110.163845) + (xy 147.091964 110.209419) + (xy 147.088318 110.213071) + (xy 147.088317 110.213072) + (xy 147.012704 110.288817) + (xy 147.012702 110.288819) + (xy 147.009056 110.292472) + (xy 146.980443 110.351007) + (xy 146.959943 110.392946) + (xy 146.95752 110.397902) + (xy 146.9475 110.466589) + (xy 146.947501 111.03341) + (xy 146.957699 111.102695) + (xy 146.959839 111.107053) + (xy 146.959839 111.107054) + (xy 146.964303 111.116145) + (xy 147.009419 111.208036) + (xy 147.013071 111.211682) + (xy 147.013072 111.211683) + (xy 147.088817 111.287296) + (xy 147.088819 111.287298) + (xy 147.092472 111.290944) + (xy 147.160982 111.324433) + (xy 147.193158 111.340161) + (xy 147.197902 111.34248) + (xy 147.202705 111.343181) + (xy 147.202706 111.343181) + (xy 147.224659 111.346383) + (xy 147.266589 111.3525) + (xy 147.524317 111.3525) + (xy 147.78341 111.352499) + (xy 147.852695 111.342301) + (xy 147.85826 111.339569) + (xy 147.894108 111.321968) + (xy 147.958036 111.290581) + (xy 147.962094 111.286516) + (xy 148.037296 111.211183) + (xy 148.037298 111.211181) + (xy 148.040944 111.207528) + (xy 148.087774 111.111726) + (xy 148.090349 111.106458) + (xy 148.090349 111.106457) + (xy 148.09248 111.102098) + (xy 148.1025 111.033411) + (xy 148.1025 111.0035) + (xy 148.120806 110.959306) + (xy 148.165 110.941) + (xy 149.056 110.941) + (xy 149.100194 110.959306) + (xy 149.1185 111.0035) + (xy 149.1185 111.806) + (xy 149.100194 111.850194) + (xy 149.056 111.8685) + (xy 135.465944 111.8685) + (xy 135.439634 111.86072) + (xy 135.438939 111.862224) + (xy 135.434892 111.860354) + (xy 135.43116 111.857935) + (xy 135.426901 111.856661) + (xy 135.426898 111.85666) + (xy 135.405275 111.850194) + (xy 135.398839 111.848269) + (xy 135.388377 111.844079) + (xy 135.382813 111.841244) + (xy 135.371067 111.839384) + (xy 135.362951 111.837536) + (xy 135.339508 111.830525) + (xy 135.313838 111.822848) + (xy 135.269496 111.822577) + (xy 135.260103 111.821809) + (xy 135.254857 111.820978) + (xy 135.254856 111.820978) + (xy 135.25 111.820209) + (xy 135.241373 111.821576) + (xy 135.23122 111.822344) + (xy 135.212836 111.822231) + (xy 135.195838 111.822127) + (xy 135.195836 111.822127) + (xy 135.191385 111.8221) + (xy 135.137011 111.837641) + (xy 135.129623 111.839275) + (xy 135.117187 111.841244) + (xy 135.112804 111.843477) + (xy 135.11187 111.843781) + (xy 135.102155 111.847603) + (xy 135.077929 111.854526) + (xy 135.077927 111.854527) + (xy 135.073644 111.855751) + (xy 135.069874 111.85813) + (xy 135.068721 111.858857) + (xy 135.067382 111.859244) + (xy 135.065813 111.859946) + (xy 135.065715 111.859726) + (xy 135.035369 111.8685) + (xy 123.5035 111.8685) + (xy 123.459306 111.850194) + (xy 123.441 111.806) + (xy 123.441 111.281083) + (xy 128.898001 111.281083) + (xy 128.898333 111.285614) + (xy 128.907478 111.347743) + (xy 128.910326 111.35691) + (xy 128.957556 111.453105) + (xy 128.963484 111.461387) + (xy 129.039111 111.536883) + (xy 129.047406 111.542799) + (xy 129.143687 111.589863) + (xy 129.152851 111.592695) + (xy 129.214391 111.601672) + (xy 129.218904 111.602) + (xy 129.424069 111.602) + (xy 129.432859 111.598359) + (xy 129.4365 111.589569) + (xy 129.4365 111.589568) + (xy 129.5635 111.589568) + (xy 129.567141 111.598358) + (xy 129.575931 111.601999) + (xy 129.781083 111.601999) + (xy 129.785614 111.601667) + (xy 129.847743 111.592522) + (xy 129.85691 111.589674) + (xy 129.953105 111.542444) + (xy 129.961387 111.536516) + (xy 130.036883 111.460889) + (xy 130.042799 111.452594) + (xy 130.089863 111.356313) + (xy 130.092695 111.347149) + (xy 130.101672 111.285609) + (xy 130.102 111.281096) + (xy 130.102 111.100931) + (xy 130.098359 111.092141) + (xy 130.089569 111.0885) + (xy 129.575931 111.0885) + (xy 129.567141 111.092141) + (xy 129.5635 111.100931) + (xy 129.5635 111.589568) + (xy 129.4365 111.589568) + (xy 129.4365 111.100931) + (xy 129.432859 111.092141) + (xy 129.424069 111.0885) + (xy 128.910432 111.0885) + (xy 128.901642 111.092141) + (xy 128.898001 111.100931) + (xy 128.898001 111.281083) + (xy 123.441 111.281083) + (xy 123.441 111.031083) + (xy 145.398001 111.031083) + (xy 145.398333 111.035614) + (xy 145.407478 111.097743) + (xy 145.410326 111.10691) + (xy 145.457556 111.203105) + (xy 145.463484 111.211387) + (xy 145.539111 111.286883) + (xy 145.547406 111.292799) + (xy 145.643687 111.339863) + (xy 145.652851 111.342695) + (xy 145.714391 111.351672) + (xy 145.718904 111.352) + (xy 145.899069 111.352) + (xy 145.907859 111.348359) + (xy 145.9115 111.339569) + (xy 145.9115 111.339568) + (xy 146.0385 111.339568) + (xy 146.042141 111.348358) + (xy 146.050931 111.351999) + (xy 146.231083 111.351999) + (xy 146.235614 111.351667) + (xy 146.297743 111.342522) + (xy 146.30691 111.339674) + (xy 146.403105 111.292444) + (xy 146.411387 111.286516) + (xy 146.486883 111.210889) + (xy 146.492799 111.202594) + (xy 146.539863 111.106313) + (xy 146.542695 111.097149) + (xy 146.551672 111.035609) + (xy 146.552 111.031096) + (xy 146.552 110.825931) + (xy 146.548359 110.817141) + (xy 146.539569 110.8135) + (xy 146.050931 110.8135) + (xy 146.042141 110.817141) + (xy 146.0385 110.825931) + (xy 146.0385 111.339568) + (xy 145.9115 111.339568) + (xy 145.9115 110.825931) + (xy 145.907859 110.817141) + (xy 145.899069 110.8135) + (xy 145.410432 110.8135) + (xy 145.401642 110.817141) + (xy 145.398001 110.825931) + (xy 145.398001 111.031083) + (xy 123.441 111.031083) + (xy 123.441 110.949069) + (xy 128.898 110.949069) + (xy 128.901641 110.957859) + (xy 128.910431 110.9615) + (xy 129.424069 110.9615) + (xy 129.432859 110.957859) + (xy 129.4365 110.949069) + (xy 129.5635 110.949069) + (xy 129.567141 110.957859) + (xy 129.575931 110.9615) + (xy 130.089568 110.9615) + (xy 130.098358 110.957859) + (xy 130.101999 110.949069) + (xy 130.101999 110.768917) + (xy 130.101667 110.764386) + (xy 130.092522 110.702257) + (xy 130.089674 110.69309) + (xy 130.080335 110.674069) + (xy 145.398 110.674069) + (xy 145.401641 110.682859) + (xy 145.410431 110.6865) + (xy 145.899069 110.6865) + (xy 145.907859 110.682859) + (xy 145.9115 110.674069) + (xy 146.0385 110.674069) + (xy 146.042141 110.682859) + (xy 146.050931 110.6865) + (xy 146.539568 110.6865) + (xy 146.548358 110.682859) + (xy 146.551999 110.674069) + (xy 146.551999 110.468917) + (xy 146.551667 110.464386) + (xy 146.542522 110.402257) + (xy 146.539674 110.39309) + (xy 146.492444 110.296895) + (xy 146.486516 110.288613) + (xy 146.410889 110.213117) + (xy 146.402594 110.207201) + (xy 146.306313 110.160137) + (xy 146.297149 110.157305) + (xy 146.235609 110.148328) + (xy 146.231096 110.148) + (xy 146.050931 110.148) + (xy 146.042141 110.151641) + (xy 146.0385 110.160431) + (xy 146.0385 110.674069) + (xy 145.9115 110.674069) + (xy 145.9115 110.160432) + (xy 145.907859 110.151642) + (xy 145.899069 110.148001) + (xy 145.718917 110.148001) + (xy 145.714386 110.148333) + (xy 145.652257 110.157478) + (xy 145.64309 110.160326) + (xy 145.546895 110.207556) + (xy 145.538613 110.213484) + (xy 145.463117 110.289111) + (xy 145.457201 110.297406) + (xy 145.410137 110.393687) + (xy 145.407305 110.402851) + (xy 145.398328 110.464391) + (xy 145.398 110.468904) + (xy 145.398 110.674069) + (xy 130.080335 110.674069) + (xy 130.042444 110.596895) + (xy 130.036516 110.588613) + (xy 129.960889 110.513117) + (xy 129.952594 110.507201) + (xy 129.856313 110.460137) + (xy 129.847149 110.457305) + (xy 129.785609 110.448328) + (xy 129.781096 110.448) + (xy 129.575931 110.448) + (xy 129.567141 110.451641) + (xy 129.5635 110.460431) + (xy 129.5635 110.949069) + (xy 129.4365 110.949069) + (xy 129.4365 110.460432) + (xy 129.432859 110.451642) + (xy 129.424069 110.448001) + (xy 129.218917 110.448001) + (xy 129.214386 110.448333) + (xy 129.152257 110.457478) + (xy 129.14309 110.460326) + (xy 129.046895 110.507556) + (xy 129.038613 110.513484) + (xy 128.963117 110.589111) + (xy 128.957201 110.597406) + (xy 128.910137 110.693687) + (xy 128.907305 110.702851) + (xy 128.898328 110.764391) + (xy 128.898 110.768904) + (xy 128.898 110.949069) + (xy 123.441 110.949069) + (xy 123.441 109.216589) + (xy 128.8975 109.216589) + (xy 128.897501 109.73341) + (xy 128.907699 109.802695) + (xy 128.959419 109.908036) + (xy 128.963071 109.911682) + (xy 128.963072 109.911683) + (xy 129.038817 109.987296) + (xy 129.038819 109.987298) + (xy 129.042472 109.990944) + (xy 129.115762 110.026769) + (xy 129.143158 110.040161) + (xy 129.147902 110.04248) + (xy 129.152705 110.043181) + (xy 129.152706 110.043181) + (xy 129.174659 110.046383) + (xy 129.216589 110.0525) + (xy 129.499251 110.0525) + (xy 129.78341 110.052499) + (xy 129.852695 110.042301) + (xy 129.958036 109.990581) + (xy 129.961683 109.986928) + (xy 130.037296 109.911183) + (xy 130.037298 109.911181) + (xy 130.040944 109.907528) + (xy 130.076769 109.834238) + (xy 130.090349 109.806458) + (xy 130.090349 109.806457) + (xy 130.09248 109.802098) + (xy 130.1025 109.733411) + (xy 130.102499 109.21659) + (xy 130.092301 109.147305) + (xy 130.040581 109.041964) + (xy 130.036928 109.038317) + (xy 129.961183 108.962704) + (xy 129.961181 108.962702) + (xy 129.957528 108.959056) + (xy 129.884238 108.923231) + (xy 129.856458 108.909651) + (xy 129.856457 108.909651) + (xy 129.852098 108.90752) + (xy 129.847295 108.906819) + (xy 129.847294 108.906819) + (xy 129.825341 108.903617) + (xy 129.783411 108.8975) + (xy 129.7535 108.8975) + (xy 129.709306 108.879194) + (xy 129.691 108.835) + (xy 129.691 107.105003) + (xy 129.709306 107.060809) + (xy 130.087788 106.682327) + (xy 130.131982 106.664021) + (xy 130.15062 106.666865) + (xy 130.176696 106.675012) + (xy 130.176699 106.675012) + (xy 130.180948 106.67634) + (xy 130.230069 106.677241) + (xy 130.238683 106.677999) + (xy 130.24514 106.679022) + (xy 130.245144 106.679022) + (xy 130.25 106.679791) + (xy 130.256947 106.67869) + (xy 130.267853 106.677933) + (xy 130.303383 106.678584) + (xy 130.363532 106.662185) + (xy 130.37019 106.660755) + (xy 130.3717 106.660516) + (xy 130.382813 106.658756) + (xy 130.387196 106.656522) + (xy 130.391875 106.655002) + (xy 130.391878 106.65501) + (xy 130.396727 106.653136) + (xy 130.421527 106.646375) + (xy 130.432824 106.639439) + (xy 130.489709 106.604511) + (xy 130.494037 106.602085) + (xy 130.49824 106.599944) + (xy 130.498248 106.599938) + (xy 130.502625 106.597708) + (xy 130.505427 106.594906) + (xy 130.506264 106.594346) + (xy 130.506741 106.594053) + (xy 130.525881 106.582301) + (xy 130.608058 106.491513) + (xy 130.661451 106.381311) + (xy 130.662983 106.372209) + (xy 130.67758 106.28544) + (xy 130.681767 106.260552) + (xy 130.681896 106.25) + (xy 130.664536 106.128781) + (xy 130.613852 106.017307) + (xy 130.599199 106.000302) + (xy 130.597708 105.997375) + (xy 130.5919 105.991567) + (xy 130.588746 105.98817) + (xy 130.536826 105.927914) + (xy 130.533918 105.924539) + (xy 130.513741 105.911461) + (xy 130.510155 105.908559) + (xy 130.510081 105.908661) + (xy 130.506106 105.905773) + (xy 130.502625 105.902292) + (xy 130.491343 105.896543) + (xy 130.485736 105.893309) + (xy 130.485399 105.89309) + (xy 130.467225 105.881311) + (xy 130.434893 105.860354) + (xy 130.43489 105.860353) + (xy 130.43116 105.857935) + (xy 130.426901 105.856661) + (xy 130.426898 105.85666) + (xy 130.399139 105.848359) + (xy 130.398839 105.848269) + (xy 130.388377 105.844079) + (xy 130.382813 105.841244) + (xy 130.371067 105.839384) + (xy 130.362951 105.837536) + (xy 130.320863 105.824949) + (xy 130.313838 105.822848) + (xy 130.269496 105.822577) + (xy 130.260103 105.821809) + (xy 130.254857 105.820978) + (xy 130.254856 105.820978) + (xy 130.25 105.820209) + (xy 130.241373 105.821576) + (xy 130.23122 105.822344) + (xy 130.212836 105.822231) + (xy 130.195838 105.822127) + (xy 130.195836 105.822127) + (xy 130.191385 105.8221) + (xy 130.137011 105.837641) + (xy 130.129623 105.839275) + (xy 130.117187 105.841244) + (xy 130.112804 105.843477) + (xy 130.11187 105.843781) + (xy 130.102155 105.847603) + (xy 130.077929 105.854526) + (xy 130.077927 105.854527) + (xy 130.073644 105.855751) + (xy 130.069875 105.858129) + (xy 130.054887 105.867586) + (xy 130.007743 105.875687) + (xy 129.988718 105.862242) + (xy 129.990671 105.892862) + (xy 129.972507 105.919564) + (xy 129.97008 105.921095) + (xy 129.967131 105.924434) + (xy 129.96713 105.924435) + (xy 129.907156 105.992342) + (xy 129.906032 105.993538) + (xy 129.905775 105.993892) + (xy 129.905554 105.994113) + (xy 129.905405 105.994204) + (xy 129.904504 105.995163) + (xy 129.902292 105.997375) + (xy 129.901509 105.996592) + (xy 129.900362 105.997296) + (xy 129.901721 105.998496) + (xy 129.895002 106.006104) + (xy 129.889018 106.012879) + (xy 129.887127 106.016907) + (xy 129.838868 106.119695) + (xy 129.838867 106.119698) + (xy 129.836976 106.123726) + (xy 129.818136 106.244724) + (xy 129.818713 106.249137) + (xy 129.818713 106.249138) + (xy 129.821619 106.271357) + (xy 129.833437 106.361726) + (xy 129.83346 106.361905) + (xy 129.82104 106.408099) + (xy 129.815682 106.414203) + (xy 129.395513 106.834372) + (xy 129.389439 106.838677) + (xy 129.389895 106.83925) + (xy 129.384387 106.843631) + (xy 129.378042 106.846678) + (xy 129.373646 106.852175) + (xy 129.359582 106.869761) + (xy 129.354965 106.87492) + (xy 129.349716 106.880169) + (xy 129.347847 106.883143) + (xy 129.345943 106.886172) + (xy 129.341838 106.891948) + (xy 129.323617 106.914733) + (xy 129.32204 106.921593) + (xy 129.320222 106.925353) + (xy 129.318844 106.929289) + (xy 129.315098 106.935248) + (xy 129.314307 106.942242) + (xy 129.314307 106.942243) + (xy 129.311821 106.964236) + (xy 129.310629 106.971213) + (xy 129.309 106.978297) + (xy 129.309 106.985671) + (xy 129.308604 106.992692) + (xy 129.305309 107.021838) + (xy 129.30763 107.028483) + (xy 129.308414 107.035477) + (xy 129.307736 107.035553) + (xy 129.309 107.043005) + (xy 129.309 108.835001) + (xy 129.290694 108.879195) + (xy 129.2465 108.897501) + (xy 129.21659 108.897501) + (xy 129.147305 108.907699) + (xy 129.041964 108.959419) + (xy 129.038318 108.963071) + (xy 129.038317 108.963072) + (xy 128.962704 109.038817) + (xy 128.962702 109.038819) + (xy 128.959056 109.042472) + (xy 128.923231 109.115762) + (xy 128.909943 109.142946) + (xy 128.90752 109.147902) + (xy 128.8975 109.216589) + (xy 123.441 109.216589) + (xy 123.441 107.293234) + (xy 123.442253 107.285893) + (xy 123.441524 107.28581) + (xy 123.442321 107.278819) + (xy 123.444653 107.272178) + (xy 123.441383 107.242793) + (xy 123.441 107.235881) + (xy 123.441 107.228467) + (xy 123.439421 107.221544) + (xy 123.438245 107.214591) + (xy 123.435015 107.185571) + (xy 123.431281 107.179607) + (xy 123.42991 107.17567) + (xy 123.428097 107.171904) + (xy 123.426532 107.165041) + (xy 123.408354 107.142229) + (xy 123.40426 107.136446) + (xy 123.402284 107.13329) + (xy 123.402279 107.133284) + (xy 123.400404 107.130289) + (xy 123.395191 107.125076) + (xy 123.390506 107.119832) + (xy 123.376612 107.102396) + (xy 123.376611 107.102396) + (xy 123.372225 107.096891) + (xy 123.365886 107.093833) + (xy 123.360385 107.089442) + (xy 123.360811 107.088908) + (xy 123.354647 107.084532) + (xy 122.915628 106.645513) + (xy 122.911323 106.639439) + (xy 122.91075 106.639895) + (xy 122.906369 106.634387) + (xy 122.903322 106.628042) + (xy 122.880239 106.609582) + (xy 122.87508 106.604965) + (xy 122.869831 106.599716) + (xy 122.863828 106.595943) + (xy 122.858052 106.591838) + (xy 122.835267 106.573617) + (xy 122.828407 106.57204) + (xy 122.824647 106.570222) + (xy 122.820711 106.568844) + (xy 122.814752 106.565098) + (xy 122.807758 106.564307) + (xy 122.807757 106.564307) + (xy 122.785764 106.561821) + (xy 122.778787 106.560629) + (xy 122.771703 106.559) + (xy 122.764329 106.559) + (xy 122.757308 106.558604) + (xy 122.755627 106.558414) + (xy 122.728162 106.555309) + (xy 122.721517 106.55763) + (xy 122.714523 106.558414) + (xy 122.714447 106.557736) + (xy 122.706995 106.559) + (xy 119.923049 106.559) + (xy 119.878855 106.540694) + (xy 119.866156 106.522373) + (xy 119.865695 106.52136) + (xy 119.865694 106.521359) + (xy 119.863852 106.517307) + (xy 119.849199 106.500302) + (xy 119.847708 106.497375) + (xy 119.8419 106.491567) + (xy 119.838746 106.48817) + (xy 119.786826 106.427914) + (xy 119.783918 106.424539) + (xy 119.763741 106.411461) + (xy 119.760155 106.408559) + (xy 119.760081 106.408661) + (xy 119.756106 106.405773) + (xy 119.752625 106.402292) + (xy 119.741343 106.396543) + (xy 119.735736 106.393309) + (xy 119.725676 106.386788) + (xy 119.713322 106.378781) + (xy 119.684893 106.360354) + (xy 119.68489 106.360353) + (xy 119.68116 106.357935) + (xy 119.676901 106.356661) + (xy 119.676898 106.35666) + (xy 119.658345 106.351112) + (xy 119.648839 106.348269) + (xy 119.638377 106.344079) + (xy 119.632813 106.341244) + (xy 119.621067 106.339384) + (xy 119.612951 106.337536) + (xy 119.563838 106.322848) + (xy 119.519496 106.322577) + (xy 119.510103 106.321809) + (xy 119.504857 106.320978) + (xy 119.504856 106.320978) + (xy 119.5 106.320209) + (xy 119.491373 106.321576) + (xy 119.48122 106.322344) + (xy 119.462836 106.322231) + (xy 119.445838 106.322127) + (xy 119.445836 106.322127) + (xy 119.441385 106.3221) + (xy 119.387011 106.337641) + (xy 119.379623 106.339275) + (xy 119.367187 106.341244) + (xy 119.362804 106.343477) + (xy 119.36187 106.343781) + (xy 119.352155 106.347603) + (xy 119.327929 106.354526) + (xy 119.327927 106.354527) + (xy 119.323644 106.355751) + (xy 119.319875 106.358129) + (xy 119.311269 106.363559) + (xy 119.264119 106.393309) + (xy 119.262819 106.394129) + (xy 119.257842 106.396959) + (xy 119.251757 106.400059) + (xy 119.251756 106.40006) + (xy 119.247375 106.402292) + (xy 119.243897 106.40577) + (xy 119.242445 106.406825) + (xy 119.239058 106.40912) + (xy 119.22008 106.421095) + (xy 119.217137 106.424427) + (xy 119.217135 106.424429) + (xy 119.157156 106.492342) + (xy 119.156032 106.493538) + (xy 119.155775 106.493892) + (xy 119.155554 106.494113) + (xy 119.155405 106.494204) + (xy 119.154504 106.495163) + (xy 119.152292 106.497375) + (xy 119.151509 106.496592) + (xy 119.150362 106.497296) + (xy 119.151721 106.498496) + (xy 119.143943 106.507303) + (xy 119.139018 106.512879) + (xy 119.138556 106.513862) + (xy 119.100023 106.540049) + (xy 119.053035 106.531084) + (xy 119.043156 106.523041) + (xy 118.709306 106.189191) + (xy 118.691 106.144997) + (xy 118.691 105.744724) + (xy 119.068136 105.744724) + (xy 119.068713 105.749137) + (xy 119.068713 105.749138) + (xy 119.082655 105.855751) + (xy 119.084014 105.866145) + (xy 119.091185 105.882443) + (xy 119.091244 105.882813) + (xy 119.092007 105.884311) + (xy 119.094029 105.888907) + (xy 119.09403 105.888909) + (xy 119.128211 105.966589) + (xy 119.133333 105.97823) + (xy 119.147272 105.994813) + (xy 119.148029 105.995713) + (xy 119.150157 105.998434) + (xy 119.152292 106.002625) + (xy 119.160081 106.010414) + (xy 119.163729 106.014391) + (xy 119.212127 106.071968) + (xy 119.235399 106.087459) + (xy 119.241836 106.092733) + (xy 119.243899 106.094232) + (xy 119.247375 106.097708) + (xy 119.251753 106.099939) + (xy 119.251756 106.099941) + (xy 119.25873 106.103494) + (xy 119.264977 106.107148) + (xy 119.314064 106.139823) + (xy 119.318313 106.141151) + (xy 119.318314 106.141151) + (xy 119.350296 106.151143) + (xy 119.360027 106.155109) + (xy 119.362799 106.156521) + (xy 119.362803 106.156522) + (xy 119.367187 106.158756) + (xy 119.377852 106.160445) + (xy 119.386713 106.16252) + (xy 119.426696 106.175012) + (xy 119.426699 106.175012) + (xy 119.430948 106.17634) + (xy 119.480069 106.177241) + (xy 119.488683 106.177999) + (xy 119.49514 106.179022) + (xy 119.495144 106.179022) + (xy 119.5 106.179791) + (xy 119.506947 106.17869) + (xy 119.517853 106.177933) + (xy 119.553383 106.178584) + (xy 119.613532 106.162185) + (xy 119.62019 106.160755) + (xy 119.622147 106.160445) + (xy 119.632813 106.158756) + (xy 119.637196 106.156522) + (xy 119.641875 106.155002) + (xy 119.641878 106.15501) + (xy 119.646727 106.153136) + (xy 119.671527 106.146375) + (xy 119.676521 106.143309) + (xy 119.739709 106.104511) + (xy 119.744037 106.102085) + (xy 119.74824 106.099944) + (xy 119.748248 106.099938) + (xy 119.752625 106.097708) + (xy 119.755427 106.094906) + (xy 119.756264 106.094346) + (xy 119.757681 106.093476) + (xy 119.775881 106.082301) + (xy 119.858058 105.991513) + (xy 119.911451 105.881311) + (xy 119.912398 105.875687) + (xy 119.927268 105.787296) + (xy 119.931767 105.760552) + (xy 119.931896 105.75) + (xy 119.916061 105.639432) + (xy 119.927917 105.593091) + (xy 119.933736 105.586379) + (xy 120.060809 105.459306) + (xy 120.105003 105.441) + (xy 126.076187 105.441) + (xy 126.120381 105.459306) + (xy 126.129248 105.470473) + (xy 126.13154 105.474155) + (xy 126.133333 105.47823) + (xy 126.147272 105.494813) + (xy 126.148029 105.495713) + (xy 126.150157 105.498434) + (xy 126.152292 105.502625) + (xy 126.160081 105.510414) + (xy 126.163729 105.514391) + (xy 126.212127 105.571968) + (xy 126.235399 105.587459) + (xy 126.241836 105.592733) + (xy 126.243899 105.594232) + (xy 126.247375 105.597708) + (xy 126.251753 105.599939) + (xy 126.251756 105.599941) + (xy 126.25873 105.603494) + (xy 126.264977 105.607148) + (xy 126.314064 105.639823) + (xy 126.318313 105.641151) + (xy 126.318314 105.641151) + (xy 126.350296 105.651143) + (xy 126.360027 105.655109) + (xy 126.362799 105.656521) + (xy 126.362803 105.656522) + (xy 126.367187 105.658756) + (xy 126.37777 105.660432) + (xy 126.377852 105.660445) + (xy 126.386713 105.66252) + (xy 126.426696 105.675012) + (xy 126.426699 105.675012) + (xy 126.430948 105.67634) + (xy 126.480069 105.677241) + (xy 126.488683 105.677999) + (xy 126.49514 105.679022) + (xy 126.495144 105.679022) + (xy 126.5 105.679791) + (xy 126.506947 105.67869) + (xy 126.517853 105.677933) + (xy 126.553383 105.678584) + (xy 126.613532 105.662185) + (xy 126.62019 105.660755) + (xy 126.624092 105.660137) + (xy 126.632813 105.658756) + (xy 126.637196 105.656522) + (xy 126.641875 105.655002) + (xy 126.641878 105.65501) + (xy 126.646727 105.653136) + (xy 126.671527 105.646375) + (xy 126.682832 105.639434) + (xy 126.739709 105.604511) + (xy 126.744037 105.602085) + (xy 126.74824 105.599944) + (xy 126.748248 105.599938) + (xy 126.752625 105.597708) + (xy 126.755427 105.594906) + (xy 126.756264 105.594346) + (xy 126.758891 105.592733) + (xy 126.775881 105.582301) + (xy 126.858058 105.491513) + (xy 126.911451 105.381311) + (xy 126.915958 105.354526) + (xy 126.931367 105.262928) + (xy 126.931767 105.260552) + (xy 126.931896 105.25) + (xy 126.914536 105.128781) + (xy 126.863852 105.017307) + (xy 126.849199 105.000302) + (xy 126.847708 104.997375) + (xy 126.8419 104.991567) + (xy 126.838746 104.98817) + (xy 126.786826 104.927914) + (xy 126.783918 104.924539) + (xy 126.763741 104.911461) + (xy 126.760155 104.908559) + (xy 126.760081 104.908661) + (xy 126.756106 104.905773) + (xy 126.752625 104.902292) + (xy 126.741343 104.896543) + (xy 126.735736 104.893309) + (xy 126.734717 104.892648) + (xy 126.70708 104.874735) + (xy 126.684893 104.860354) + (xy 126.68489 104.860353) + (xy 126.68116 104.857935) + (xy 126.676901 104.856661) + (xy 126.676898 104.85666) + (xy 126.658345 104.851112) + (xy 126.648839 104.848269) + (xy 126.638377 104.844079) + (xy 126.632813 104.841244) + (xy 126.621067 104.839384) + (xy 126.612951 104.837536) + (xy 126.594781 104.832102) + (xy 126.563838 104.822848) + (xy 126.519496 104.822577) + (xy 126.510103 104.821809) + (xy 126.504857 104.820978) + (xy 126.504856 104.820978) + (xy 126.5 104.820209) + (xy 126.491373 104.821576) + (xy 126.48122 104.822344) + (xy 126.462836 104.822231) + (xy 126.445838 104.822127) + (xy 126.445836 104.822127) + (xy 126.441385 104.8221) + (xy 126.387011 104.837641) + (xy 126.379623 104.839275) + (xy 126.367187 104.841244) + (xy 126.362804 104.843477) + (xy 126.36187 104.843781) + (xy 126.352155 104.847603) + (xy 126.327929 104.854526) + (xy 126.327927 104.854527) + (xy 126.323644 104.855751) + (xy 126.319875 104.858129) + (xy 126.265166 104.892648) + (xy 126.218022 104.900749) + (xy 126.178957 104.873141) + (xy 126.170181 104.829421) + (xy 126.180791 104.766353) + (xy 126.181767 104.760552) + (xy 126.181896 104.75) + (xy 126.171684 104.678691) + (xy 126.170335 104.669272) + (xy 126.182191 104.622929) + (xy 126.223344 104.598543) + (xy 126.266835 104.608384) + (xy 126.314064 104.639823) + (xy 126.318313 104.641151) + (xy 126.318314 104.641151) + (xy 126.350296 104.651143) + (xy 126.360027 104.655109) + (xy 126.362799 104.656521) + (xy 126.362803 104.656522) + (xy 126.367187 104.658756) + (xy 126.377852 104.660445) + (xy 126.386713 104.66252) + (xy 126.426696 104.675012) + (xy 126.426699 104.675012) + (xy 126.430948 104.67634) + (xy 126.480069 104.677241) + (xy 126.488683 104.677999) + (xy 126.49514 104.679022) + (xy 126.495144 104.679022) + (xy 126.5 104.679791) + (xy 126.506947 104.67869) + (xy 126.517853 104.677933) + (xy 126.553383 104.678584) + (xy 126.613532 104.662185) + (xy 126.62019 104.660755) + (xy 126.622147 104.660445) + (xy 126.632813 104.658756) + (xy 126.637196 104.656522) + (xy 126.641875 104.655002) + (xy 126.641878 104.65501) + (xy 126.646727 104.653136) + (xy 126.671527 104.646375) + (xy 126.692257 104.633647) + (xy 126.739709 104.604511) + (xy 126.744037 104.602085) + (xy 126.74824 104.599944) + (xy 126.748248 104.599938) + (xy 126.752625 104.597708) + (xy 126.755427 104.594906) + (xy 126.756264 104.594346) + (xy 126.775881 104.582301) + (xy 126.858058 104.491513) + (xy 126.859997 104.48751) + (xy 126.860863 104.486227) + (xy 126.900753 104.459827) + (xy 126.947628 104.469366) + (xy 126.95687 104.476985) + (xy 127.040694 104.560809) + (xy 127.059 104.605003) + (xy 127.059 106.394998) + (xy 127.040694 106.439192) + (xy 126.956871 106.523014) + (xy 126.912677 106.54132) + (xy 126.868483 106.523014) + (xy 126.863877 106.517286) + (xy 126.863852 106.517307) + (xy 126.849479 106.500627) + (xy 126.849199 106.500302) + (xy 126.847708 106.497375) + (xy 126.8419 106.491567) + (xy 126.838746 106.48817) + (xy 126.786826 106.427914) + (xy 126.783918 106.424539) + (xy 126.763741 106.411461) + (xy 126.760155 106.408559) + (xy 126.760081 106.408661) + (xy 126.756106 106.405773) + (xy 126.752625 106.402292) + (xy 126.741343 106.396543) + (xy 126.735736 106.393309) + (xy 126.725676 106.386788) + (xy 126.713322 106.378781) + (xy 126.684893 106.360354) + (xy 126.68489 106.360353) + (xy 126.68116 106.357935) + (xy 126.676901 106.356661) + (xy 126.676898 106.35666) + (xy 126.658345 106.351112) + (xy 126.648839 106.348269) + (xy 126.638377 106.344079) + (xy 126.632813 106.341244) + (xy 126.621067 106.339384) + (xy 126.612951 106.337536) + (xy 126.563838 106.322848) + (xy 126.519496 106.322577) + (xy 126.510103 106.321809) + (xy 126.504857 106.320978) + (xy 126.504856 106.320978) + (xy 126.5 106.320209) + (xy 126.491373 106.321576) + (xy 126.48122 106.322344) + (xy 126.462836 106.322231) + (xy 126.445838 106.322127) + (xy 126.445836 106.322127) + (xy 126.441385 106.3221) + (xy 126.387011 106.337641) + (xy 126.379623 106.339275) + (xy 126.367187 106.341244) + (xy 126.362804 106.343477) + (xy 126.36187 106.343781) + (xy 126.352155 106.347603) + (xy 126.327929 106.354526) + (xy 126.327927 106.354527) + (xy 126.323644 106.355751) + (xy 126.319875 106.358129) + (xy 126.311269 106.363559) + (xy 126.264119 106.393309) + (xy 126.262819 106.394129) + (xy 126.257842 106.396959) + (xy 126.251757 106.400059) + (xy 126.251756 106.40006) + (xy 126.247375 106.402292) + (xy 126.243897 106.40577) + (xy 126.242445 106.406825) + (xy 126.239058 106.40912) + (xy 126.22008 106.421095) + (xy 126.217137 106.424427) + (xy 126.217135 106.424429) + (xy 126.157156 106.492342) + (xy 126.156032 106.493538) + (xy 126.155775 106.493892) + (xy 126.155554 106.494113) + (xy 126.155405 106.494204) + (xy 126.154504 106.495163) + (xy 126.152292 106.497375) + (xy 126.151509 106.496592) + (xy 126.150362 106.497296) + (xy 126.151721 106.498496) + (xy 126.143943 106.507303) + (xy 126.139018 106.512879) + (xy 126.137127 106.516907) + (xy 126.088868 106.619695) + (xy 126.088867 106.619698) + (xy 126.086976 106.623726) + (xy 126.068136 106.744724) + (xy 126.068713 106.749137) + (xy 126.068713 106.749138) + (xy 126.082493 106.854511) + (xy 126.084014 106.866145) + (xy 126.085809 106.870224) + (xy 126.089092 106.877685) + (xy 126.091185 106.882443) + (xy 126.091244 106.882813) + (xy 126.092007 106.884311) + (xy 126.094031 106.88891) + (xy 126.094031 106.888911) + (xy 126.130251 106.971225) + (xy 126.133333 106.97823) + (xy 126.14549 106.992692) + (xy 126.148029 106.995713) + (xy 126.150157 106.998434) + (xy 126.152292 107.002625) + (xy 126.160081 107.010414) + (xy 126.16373 107.014392) + (xy 126.181454 107.035477) + (xy 126.212127 107.071968) + (xy 126.235399 107.087459) + (xy 126.241836 107.092733) + (xy 126.243899 107.094232) + (xy 126.247375 107.097708) + (xy 126.251753 107.099939) + (xy 126.251756 107.099941) + (xy 126.25873 107.103494) + (xy 126.264977 107.107148) + (xy 126.314064 107.139823) + (xy 126.318313 107.141151) + (xy 126.318314 107.141151) + (xy 126.350296 107.151143) + (xy 126.360027 107.155109) + (xy 126.362799 107.156521) + (xy 126.362803 107.156522) + (xy 126.367187 107.158756) + (xy 126.377852 107.160445) + (xy 126.386713 107.16252) + (xy 126.426696 107.175012) + (xy 126.426699 107.175012) + (xy 126.430948 107.17634) + (xy 126.480069 107.177241) + (xy 126.488683 107.177999) + (xy 126.49514 107.179022) + (xy 126.495144 107.179022) + (xy 126.5 107.179791) + (xy 126.506947 107.17869) + (xy 126.517853 107.177933) + (xy 126.553383 107.178584) + (xy 126.613532 107.162185) + (xy 126.62019 107.160755) + (xy 126.627887 107.159536) + (xy 126.632813 107.158756) + (xy 126.637196 107.156522) + (xy 126.641875 107.155002) + (xy 126.641878 107.15501) + (xy 126.646727 107.153136) + (xy 126.671527 107.146375) + (xy 126.67828 107.142229) + (xy 126.739709 107.104511) + (xy 126.744037 107.102085) + (xy 126.74824 107.099944) + (xy 126.748248 107.099938) + (xy 126.752625 107.097708) + (xy 126.755427 107.094906) + (xy 126.756264 107.094346) + (xy 126.760039 107.092028) + (xy 126.775881 107.082301) + (xy 126.858058 106.991513) + (xy 126.865454 106.976248) + (xy 126.901198 106.944458) + (xy 126.9217 106.941) + (xy 126.956768 106.941) + (xy 126.964107 106.94225) + (xy 126.96419 106.941523) + (xy 126.971181 106.94232) + (xy 126.977822 106.944652) + (xy 126.984815 106.943874) + (xy 126.984816 106.943874) + (xy 127.005939 106.941523) + (xy 127.007198 106.941383) + (xy 127.01411 106.941) + (xy 127.021533 106.941) + (xy 127.028465 106.939419) + (xy 127.035418 106.938243) + (xy 127.064429 106.935014) + (xy 127.070393 106.931281) + (xy 127.074341 106.929906) + (xy 127.0781 106.928097) + (xy 127.084959 106.926532) + (xy 127.107774 106.908351) + (xy 127.113559 106.904256) + (xy 127.116715 106.90228) + (xy 127.116717 106.902279) + (xy 127.119711 106.900404) + (xy 127.124924 106.895191) + (xy 127.130168 106.890506) + (xy 127.147604 106.876612) + (xy 127.147604 106.876611) + (xy 127.153109 106.872225) + (xy 127.156167 106.865886) + (xy 127.160558 106.860385) + (xy 127.161092 106.860811) + (xy 127.165468 106.854647) + (xy 127.354487 106.665628) + (xy 127.360561 106.661323) + (xy 127.360105 106.66075) + (xy 127.365613 106.656369) + (xy 127.371958 106.653322) + (xy 127.386356 106.635318) + (xy 127.390418 106.630239) + (xy 127.395035 106.62508) + (xy 127.400283 106.619832) + (xy 127.404055 106.613831) + (xy 127.408159 106.608056) + (xy 127.421988 106.590764) + (xy 127.42199 106.59076) + (xy 127.426383 106.585267) + (xy 127.42796 106.57841) + (xy 127.429778 106.574648) + (xy 127.431157 106.57071) + (xy 127.434902 106.564752) + (xy 127.435692 106.557761) + (xy 127.435694 106.557756) + (xy 127.43818 106.535763) + (xy 127.439373 106.528778) + (xy 127.440208 106.525146) + (xy 127.441 106.521703) + (xy 127.441 106.514323) + (xy 127.441396 106.507303) + (xy 127.442912 106.493892) + (xy 127.44469 106.478162) + (xy 127.442369 106.471516) + (xy 127.441585 106.464522) + (xy 127.442264 106.464446) + (xy 127.441 106.456996) + (xy 127.441 105.531083) + (xy 128.898001 105.531083) + (xy 128.898333 105.535614) + (xy 128.907478 105.597743) + (xy 128.910326 105.60691) + (xy 128.957556 105.703105) + (xy 128.963484 105.711387) + (xy 129.039111 105.786883) + (xy 129.047406 105.792799) + (xy 129.143687 105.839863) + (xy 129.152851 105.842695) + (xy 129.214391 105.851672) + (xy 129.218904 105.852) + (xy 129.424069 105.852) + (xy 129.432859 105.848359) + (xy 129.4365 105.839569) + (xy 129.4365 105.839568) + (xy 129.5635 105.839568) + (xy 129.567141 105.848358) + (xy 129.575931 105.851999) + (xy 129.781083 105.851999) + (xy 129.785614 105.851667) + (xy 129.847743 105.842522) + (xy 129.85691 105.839674) + (xy 129.903978 105.816565) + (xy 129.951717 105.81352) + (xy 129.964703 105.824949) + (xy 129.960577 105.800935) + (xy 129.977303 105.770572) + (xy 130.036883 105.710889) + (xy 130.042799 105.702594) + (xy 130.089863 105.606313) + (xy 130.092695 105.597149) + (xy 130.101672 105.535609) + (xy 130.102 105.531096) + (xy 130.102 105.531083) + (xy 130.648001 105.531083) + (xy 130.648333 105.535614) + (xy 130.657478 105.597743) + (xy 130.660326 105.60691) + (xy 130.707556 105.703105) + (xy 130.713484 105.711387) + (xy 130.789111 105.786883) + (xy 130.797406 105.792799) + (xy 130.893687 105.839863) + (xy 130.902851 105.842695) + (xy 130.964391 105.851672) + (xy 130.968904 105.852) + (xy 131.174069 105.852) + (xy 131.182859 105.848359) + (xy 131.1865 105.839569) + (xy 131.1865 105.839568) + (xy 131.3135 105.839568) + (xy 131.317141 105.848358) + (xy 131.325931 105.851999) + (xy 131.531083 105.851999) + (xy 131.535614 105.851667) + (xy 131.597743 105.842522) + (xy 131.60691 105.839674) + (xy 131.703105 105.792444) + (xy 131.711387 105.786516) + (xy 131.786883 105.710889) + (xy 131.792799 105.702594) + (xy 131.839863 105.606313) + (xy 131.842695 105.597149) + (xy 131.851672 105.535609) + (xy 131.852 105.531096) + (xy 131.852 105.350931) + (xy 131.848359 105.342141) + (xy 131.839569 105.3385) + (xy 131.325931 105.3385) + (xy 131.317141 105.342141) + (xy 131.3135 105.350931) + (xy 131.3135 105.839568) + (xy 131.1865 105.839568) + (xy 131.1865 105.350931) + (xy 131.182859 105.342141) + (xy 131.174069 105.3385) + (xy 130.660432 105.3385) + (xy 130.651642 105.342141) + (xy 130.648001 105.350931) + (xy 130.648001 105.531083) + (xy 130.102 105.531083) + (xy 130.102 105.350931) + (xy 130.098359 105.342141) + (xy 130.089569 105.3385) + (xy 129.575931 105.3385) + (xy 129.567141 105.342141) + (xy 129.5635 105.350931) + (xy 129.5635 105.839568) + (xy 129.4365 105.839568) + (xy 129.4365 105.350931) + (xy 129.432859 105.342141) + (xy 129.424069 105.3385) + (xy 128.910432 105.3385) + (xy 128.901642 105.342141) + (xy 128.898001 105.350931) + (xy 128.898001 105.531083) + (xy 127.441 105.531083) + (xy 127.441 105.199069) + (xy 128.898 105.199069) + (xy 128.901641 105.207859) + (xy 128.910431 105.2115) + (xy 129.424069 105.2115) + (xy 129.432859 105.207859) + (xy 129.4365 105.199069) + (xy 129.5635 105.199069) + (xy 129.567141 105.207859) + (xy 129.575931 105.2115) + (xy 130.089568 105.2115) + (xy 130.098358 105.207859) + (xy 130.101999 105.199069) + (xy 130.648 105.199069) + (xy 130.651641 105.207859) + (xy 130.660431 105.2115) + (xy 131.174069 105.2115) + (xy 131.182859 105.207859) + (xy 131.1865 105.199069) + (xy 131.3135 105.199069) + (xy 131.317141 105.207859) + (xy 131.325931 105.2115) + (xy 131.839568 105.2115) + (xy 131.848358 105.207859) + (xy 131.851999 105.199069) + (xy 131.851999 105.018917) + (xy 131.851667 105.014386) + (xy 131.842522 104.952257) + (xy 131.839674 104.94309) + (xy 131.792444 104.846895) + (xy 131.786516 104.838613) + (xy 131.710889 104.763117) + (xy 131.702594 104.757201) + (xy 131.606313 104.710137) + (xy 131.597149 104.707305) + (xy 131.535609 104.698328) + (xy 131.531096 104.698) + (xy 131.325931 104.698) + (xy 131.317141 104.701641) + (xy 131.3135 104.710431) + (xy 131.3135 105.199069) + (xy 131.1865 105.199069) + (xy 131.1865 104.710432) + (xy 131.182859 104.701642) + (xy 131.174069 104.698001) + (xy 130.968917 104.698001) + (xy 130.964386 104.698333) + (xy 130.902257 104.707478) + (xy 130.89309 104.710326) + (xy 130.796895 104.757556) + (xy 130.788613 104.763484) + (xy 130.713117 104.839111) + (xy 130.707201 104.847406) + (xy 130.660137 104.943687) + (xy 130.657305 104.952851) + (xy 130.648328 105.014391) + (xy 130.648 105.018904) + (xy 130.648 105.199069) + (xy 130.101999 105.199069) + (xy 130.101999 105.018917) + (xy 130.101667 105.014386) + (xy 130.092522 104.952257) + (xy 130.089674 104.94309) + (xy 130.042444 104.846895) + (xy 130.036516 104.838613) + (xy 129.960889 104.763117) + (xy 129.952594 104.757201) + (xy 129.856313 104.710137) + (xy 129.847149 104.707305) + (xy 129.785609 104.698328) + (xy 129.781096 104.698) + (xy 129.575931 104.698) + (xy 129.567141 104.701641) + (xy 129.5635 104.710431) + (xy 129.5635 105.199069) + (xy 129.4365 105.199069) + (xy 129.4365 104.710432) + (xy 129.432859 104.701642) + (xy 129.424069 104.698001) + (xy 129.218917 104.698001) + (xy 129.214386 104.698333) + (xy 129.152257 104.707478) + (xy 129.14309 104.710326) + (xy 129.046895 104.757556) + (xy 129.038613 104.763484) + (xy 128.963117 104.839111) + (xy 128.957201 104.847406) + (xy 128.910137 104.943687) + (xy 128.907305 104.952851) + (xy 128.898328 105.014391) + (xy 128.898 105.018904) + (xy 128.898 105.199069) + (xy 127.441 105.199069) + (xy 127.441 104.543231) + (xy 127.44225 104.535892) + (xy 127.441523 104.535809) + (xy 127.44232 104.528818) + (xy 127.444652 104.522177) + (xy 127.443618 104.512879) + (xy 127.441383 104.492803) + (xy 127.441 104.48589) + (xy 127.441 104.478467) + (xy 127.439423 104.471553) + (xy 127.438241 104.464567) + (xy 127.435792 104.442563) + (xy 127.435014 104.435571) + (xy 127.431281 104.429608) + (xy 127.429907 104.425662) + (xy 127.428097 104.421902) + (xy 127.426532 104.415041) + (xy 127.422137 104.409525) + (xy 127.411797 104.39655) + (xy 127.408344 104.392217) + (xy 127.404254 104.386441) + (xy 127.400403 104.380289) + (xy 127.395195 104.375081) + (xy 127.39051 104.369837) + (xy 127.376612 104.352396) + (xy 127.376611 104.352396) + (xy 127.372225 104.346891) + (xy 127.365886 104.343833) + (xy 127.360385 104.339442) + (xy 127.360811 104.338909) + (xy 127.354645 104.334531) + (xy 127.165628 104.145514) + (xy 127.161323 104.13944) + (xy 127.160749 104.139896) + (xy 127.15637 104.134391) + (xy 127.153322 104.128042) + (xy 127.130239 104.109582) + (xy 127.12508 104.104965) + (xy 127.119831 104.099716) + (xy 127.113828 104.095943) + (xy 127.108052 104.091838) + (xy 127.085267 104.073617) + (xy 127.078407 104.07204) + (xy 127.074647 104.070222) + (xy 127.070711 104.068844) + (xy 127.064752 104.065098) + (xy 127.057758 104.064307) + (xy 127.057757 104.064307) + (xy 127.035764 104.061821) + (xy 127.028787 104.060629) + (xy 127.021703 104.059) + (xy 127.014329 104.059) + (xy 127.007308 104.058604) + (xy 127.005627 104.058414) + (xy 126.978162 104.055309) + (xy 126.971517 104.05763) + (xy 126.964523 104.058414) + (xy 126.964447 104.057736) + (xy 126.956995 104.059) + (xy 126.923049 104.059) + (xy 126.878855 104.040694) + (xy 126.866156 104.022373) + (xy 126.865695 104.02136) + (xy 126.865694 104.021359) + (xy 126.863852 104.017307) + (xy 126.849199 104.000302) + (xy 126.847708 103.997375) + (xy 126.8419 103.991567) + (xy 126.838746 103.98817) + (xy 126.786826 103.927914) + (xy 126.783918 103.924539) + (xy 126.763741 103.911461) + (xy 126.760155 103.908559) + (xy 126.760081 103.908661) + (xy 126.756106 103.905773) + (xy 126.752625 103.902292) + (xy 126.741343 103.896543) + (xy 126.735736 103.893309) + (xy 126.723408 103.885318) + (xy 126.713322 103.878781) + (xy 126.684893 103.860354) + (xy 126.68489 103.860353) + (xy 126.68116 103.857935) + (xy 126.676901 103.856661) + (xy 126.676898 103.85666) + (xy 126.658345 103.851112) + (xy 126.648839 103.848269) + (xy 126.638377 103.844079) + (xy 126.632813 103.841244) + (xy 126.621067 103.839384) + (xy 126.612951 103.837536) + (xy 126.563838 103.822848) + (xy 126.519496 103.822577) + (xy 126.510103 103.821809) + (xy 126.504857 103.820978) + (xy 126.504856 103.820978) + (xy 126.5 103.820209) + (xy 126.491373 103.821576) + (xy 126.48122 103.822344) + (xy 126.462836 103.822231) + (xy 126.445838 103.822127) + (xy 126.445836 103.822127) + (xy 126.441385 103.8221) + (xy 126.387011 103.837641) + (xy 126.379623 103.839275) + (xy 126.367187 103.841244) + (xy 126.362804 103.843477) + (xy 126.36187 103.843781) + (xy 126.352155 103.847603) + (xy 126.327929 103.854526) + (xy 126.327927 103.854527) + (xy 126.323644 103.855751) + (xy 126.264119 103.893309) + (xy 126.262819 103.894129) + (xy 126.257842 103.896959) + (xy 126.251757 103.900059) + (xy 126.251756 103.90006) + (xy 126.247375 103.902292) + (xy 126.243897 103.90577) + (xy 126.242445 103.906825) + (xy 126.239058 103.90912) + (xy 126.22008 103.921095) + (xy 126.217137 103.924427) + (xy 126.217135 103.924429) + (xy 126.157156 103.992342) + (xy 126.156032 103.993538) + (xy 126.155775 103.993892) + (xy 126.155554 103.994113) + (xy 126.155405 103.994204) + (xy 126.154504 103.995163) + (xy 126.152292 103.997375) + (xy 126.151509 103.996592) + (xy 126.150362 103.997296) + (xy 126.151721 103.998496) + (xy 126.139018 104.012879) + (xy 126.137127 104.016907) + (xy 126.088868 104.119695) + (xy 126.088867 104.119698) + (xy 126.086976 104.123726) + (xy 126.068136 104.244724) + (xy 126.068713 104.249137) + (xy 126.068713 104.249138) + (xy 126.079458 104.331303) + (xy 126.067038 104.377498) + (xy 126.02559 104.401379) + (xy 125.983492 104.391854) + (xy 125.961787 104.377786) + (xy 125.93116 104.357935) + (xy 125.926901 104.356661) + (xy 125.926898 104.35666) + (xy 125.899139 104.348359) + (xy 125.898839 104.348269) + (xy 125.888377 104.344079) + (xy 125.882813 104.341244) + (xy 125.871067 104.339384) + (xy 125.862951 104.337536) + (xy 125.813838 104.322848) + (xy 125.769496 104.322577) + (xy 125.760103 104.321809) + (xy 125.754857 104.320978) + (xy 125.754856 104.320978) + (xy 125.75 104.320209) + (xy 125.741373 104.321576) + (xy 125.73122 104.322344) + (xy 125.712836 104.322231) + (xy 125.695838 104.322127) + (xy 125.695836 104.322127) + (xy 125.691385 104.3221) + (xy 125.637011 104.337641) + (xy 125.629623 104.339275) + (xy 125.617187 104.341244) + (xy 125.612804 104.343477) + (xy 125.61187 104.343781) + (xy 125.602156 104.347603) + (xy 125.599821 104.34827) + (xy 125.577929 104.354526) + (xy 125.577927 104.354527) + (xy 125.573644 104.355751) + (xy 125.514119 104.393309) + (xy 125.512819 104.394129) + (xy 125.507842 104.396959) + (xy 125.501757 104.400059) + (xy 125.501756 104.40006) + (xy 125.497375 104.402292) + (xy 125.493897 104.40577) + (xy 125.492445 104.406825) + (xy 125.489058 104.40912) + (xy 125.47008 104.421095) + (xy 125.467137 104.424427) + (xy 125.467135 104.424429) + (xy 125.407156 104.492342) + (xy 125.406032 104.493538) + (xy 125.405775 104.493892) + (xy 125.405554 104.494113) + (xy 125.405405 104.494204) + (xy 125.404504 104.495163) + (xy 125.402292 104.497375) + (xy 125.401509 104.496592) + (xy 125.400362 104.497296) + (xy 125.401721 104.498496) + (xy 125.389018 104.512879) + (xy 125.387127 104.516906) + (xy 125.387126 104.516908) + (xy 125.384237 104.523062) + (xy 125.348884 104.555287) + (xy 125.327662 104.559) + (xy 119.923049 104.559) + (xy 119.878855 104.540694) + (xy 119.866156 104.522373) + (xy 119.865695 104.52136) + (xy 119.865694 104.521359) + (xy 119.863852 104.517307) + (xy 119.849199 104.500302) + (xy 119.847708 104.497375) + (xy 119.8419 104.491567) + (xy 119.838746 104.48817) + (xy 119.786826 104.427914) + (xy 119.783918 104.424539) + (xy 119.763741 104.411461) + (xy 119.760155 104.408559) + (xy 119.760081 104.408661) + (xy 119.756106 104.405773) + (xy 119.752625 104.402292) + (xy 119.741343 104.396543) + (xy 119.735736 104.393309) + (xy 119.734058 104.392221) + (xy 119.693827 104.366145) + (xy 119.684893 104.360354) + (xy 119.68489 104.360353) + (xy 119.68116 104.357935) + (xy 119.676901 104.356661) + (xy 119.676898 104.35666) + (xy 119.649139 104.348359) + (xy 119.648839 104.348269) + (xy 119.638377 104.344079) + (xy 119.632813 104.341244) + (xy 119.621067 104.339384) + (xy 119.612951 104.337536) + (xy 119.563838 104.322848) + (xy 119.519496 104.322577) + (xy 119.510103 104.321809) + (xy 119.504857 104.320978) + (xy 119.504856 104.320978) + (xy 119.5 104.320209) + (xy 119.491373 104.321576) + (xy 119.48122 104.322344) + (xy 119.462836 104.322231) + (xy 119.445838 104.322127) + (xy 119.445836 104.322127) + (xy 119.441385 104.3221) + (xy 119.387011 104.337641) + (xy 119.379623 104.339275) + (xy 119.367187 104.341244) + (xy 119.362804 104.343477) + (xy 119.36187 104.343781) + (xy 119.352156 104.347603) + (xy 119.349821 104.34827) + (xy 119.327929 104.354526) + (xy 119.327927 104.354527) + (xy 119.323644 104.355751) + (xy 119.264119 104.393309) + (xy 119.262819 104.394129) + (xy 119.257842 104.396959) + (xy 119.251757 104.400059) + (xy 119.251756 104.40006) + (xy 119.247375 104.402292) + (xy 119.243897 104.40577) + (xy 119.242445 104.406825) + (xy 119.239058 104.40912) + (xy 119.22008 104.421095) + (xy 119.217137 104.424427) + (xy 119.217135 104.424429) + (xy 119.157156 104.492342) + (xy 119.156032 104.493538) + (xy 119.155775 104.493892) + (xy 119.155554 104.494113) + (xy 119.155405 104.494204) + (xy 119.154504 104.495163) + (xy 119.152292 104.497375) + (xy 119.151509 104.496592) + (xy 119.150362 104.497296) + (xy 119.151721 104.498496) + (xy 119.139018 104.512879) + (xy 119.136939 104.517307) + (xy 119.088868 104.619695) + (xy 119.088867 104.619698) + (xy 119.086976 104.623726) + (xy 119.068136 104.744724) + (xy 119.068713 104.749137) + (xy 119.068713 104.749138) + (xy 119.082533 104.854818) + (xy 119.084014 104.866145) + (xy 119.091185 104.882443) + (xy 119.091244 104.882813) + (xy 119.092007 104.884311) + (xy 119.094031 104.88891) + (xy 119.094031 104.888911) + (xy 119.126412 104.9625) + (xy 119.133333 104.97823) + (xy 119.144544 104.991567) + (xy 119.148029 104.995713) + (xy 119.150157 104.998434) + (xy 119.152292 105.002625) + (xy 119.160081 105.010414) + (xy 119.16373 105.014392) + (xy 119.203688 105.061928) + (xy 119.212127 105.071968) + (xy 119.235399 105.087459) + (xy 119.241836 105.092733) + (xy 119.243899 105.094232) + (xy 119.247375 105.097708) + (xy 119.251753 105.099939) + (xy 119.251756 105.099941) + (xy 119.25873 105.103494) + (xy 119.264977 105.107148) + (xy 119.314064 105.139823) + (xy 119.318313 105.141151) + (xy 119.318314 105.141151) + (xy 119.350296 105.151143) + (xy 119.360027 105.155109) + (xy 119.362799 105.156521) + (xy 119.362803 105.156522) + (xy 119.367187 105.158756) + (xy 119.377852 105.160445) + (xy 119.386713 105.16252) + (xy 119.426696 105.175012) + (xy 119.426699 105.175012) + (xy 119.430948 105.17634) + (xy 119.480069 105.177241) + (xy 119.488683 105.177999) + (xy 119.49514 105.179022) + (xy 119.495144 105.179022) + (xy 119.5 105.179791) + (xy 119.506947 105.17869) + (xy 119.517853 105.177933) + (xy 119.553383 105.178584) + (xy 119.613532 105.162185) + (xy 119.62019 105.160755) + (xy 119.622147 105.160445) + (xy 119.632813 105.158756) + (xy 119.637196 105.156522) + (xy 119.641875 105.155002) + (xy 119.641878 105.15501) + (xy 119.646727 105.153136) + (xy 119.654093 105.151128) + (xy 119.667207 105.147553) + (xy 119.71466 105.153592) + (xy 119.743944 105.191416) + (xy 119.737905 105.238869) + (xy 119.727838 105.252047) + (xy 119.661953 105.317932) + (xy 119.617759 105.336238) + (xy 119.599851 105.333618) + (xy 119.583715 105.328793) + (xy 119.563838 105.322848) + (xy 119.519496 105.322577) + (xy 119.510103 105.321809) + (xy 119.504857 105.320978) + (xy 119.504856 105.320978) + (xy 119.5 105.320209) + (xy 119.491373 105.321576) + (xy 119.48122 105.322344) + (xy 119.462836 105.322231) + (xy 119.445838 105.322127) + (xy 119.445836 105.322127) + (xy 119.441385 105.3221) + (xy 119.387011 105.337641) + (xy 119.379623 105.339275) + (xy 119.367187 105.341244) + (xy 119.362804 105.343477) + (xy 119.36187 105.343781) + (xy 119.352155 105.347603) + (xy 119.327929 105.354526) + (xy 119.327927 105.354527) + (xy 119.323644 105.355751) + (xy 119.319875 105.358129) + (xy 119.262819 105.394129) + (xy 119.257842 105.396959) + (xy 119.251757 105.400059) + (xy 119.251756 105.40006) + (xy 119.247375 105.402292) + (xy 119.243897 105.40577) + (xy 119.242445 105.406825) + (xy 119.239058 105.40912) + (xy 119.22008 105.421095) + (xy 119.217137 105.424427) + (xy 119.217135 105.424429) + (xy 119.157156 105.492342) + (xy 119.156032 105.493538) + (xy 119.155774 105.493893) + (xy 119.155554 105.494113) + (xy 119.155405 105.494204) + (xy 119.154504 105.495163) + (xy 119.152292 105.497375) + (xy 119.151509 105.496592) + (xy 119.150362 105.497296) + (xy 119.151721 105.498496) + (xy 119.145002 105.506104) + (xy 119.139018 105.512879) + (xy 119.137127 105.516907) + (xy 119.088868 105.619695) + (xy 119.088867 105.619698) + (xy 119.086976 105.623726) + (xy 119.068136 105.744724) + (xy 118.691 105.744724) + (xy 118.691 103.605003) + (xy 118.709306 103.560809) + (xy 118.803526 103.466589) + (xy 128.8975 103.466589) + (xy 128.897501 103.98341) + (xy 128.907699 104.052695) + (xy 128.909839 104.057053) + (xy 128.909839 104.057054) + (xy 128.916304 104.070222) + (xy 128.959419 104.158036) + (xy 128.963071 104.161682) + (xy 128.963072 104.161683) + (xy 129.038817 104.237296) + (xy 129.038819 104.237298) + (xy 129.042472 104.240944) + (xy 129.115762 104.276769) + (xy 129.143158 104.290161) + (xy 129.147902 104.29248) + (xy 129.152705 104.293181) + (xy 129.152706 104.293181) + (xy 129.174659 104.296383) + (xy 129.216589 104.3025) + (xy 129.499251 104.3025) + (xy 129.78341 104.302499) + (xy 129.852695 104.292301) + (xy 129.85826 104.289569) + (xy 129.876223 104.280749) + (xy 129.958036 104.240581) + (xy 129.987383 104.211183) + (xy 130.037296 104.161183) + (xy 130.037298 104.161181) + (xy 130.040944 104.157528) + (xy 130.083621 104.070222) + (xy 130.090349 104.056458) + (xy 130.090349 104.056457) + (xy 130.09248 104.052098) + (xy 130.093256 104.046783) + (xy 130.098688 104.009543) + (xy 130.1025 103.983411) + (xy 130.1025 103.9785) + (xy 130.120806 103.934306) + (xy 130.165 103.916) + (xy 130.260677 103.916) + (xy 130.267698 103.916396) + (xy 130.296838 103.91969) + (xy 130.303484 103.917369) + (xy 130.310478 103.916585) + (xy 130.310554 103.917264) + (xy 130.318004 103.916) + (xy 130.585001 103.916) + (xy 130.629195 103.934306) + (xy 130.647501 103.9785) + (xy 130.647501 103.98341) + (xy 130.657699 104.052695) + (xy 130.659839 104.057053) + (xy 130.659839 104.057054) + (xy 130.666304 104.070222) + (xy 130.709419 104.158036) + (xy 130.713071 104.161682) + (xy 130.713072 104.161683) + (xy 130.788817 104.237296) + (xy 130.788819 104.237298) + (xy 130.792472 104.240944) + (xy 130.865762 104.276769) + (xy 130.893158 104.290161) + (xy 130.897902 104.29248) + (xy 130.902705 104.293181) + (xy 130.902706 104.293181) + (xy 130.924659 104.296383) + (xy 130.966589 104.3025) + (xy 131.249251 104.3025) + (xy 131.53341 104.302499) + (xy 131.602695 104.292301) + (xy 131.60826 104.289569) + (xy 131.626223 104.280749) + (xy 131.708036 104.240581) + (xy 131.737383 104.211183) + (xy 131.787296 104.161183) + (xy 131.787298 104.161181) + (xy 131.790944 104.157528) + (xy 131.833621 104.070222) + (xy 131.840349 104.056458) + (xy 131.840349 104.056457) + (xy 131.84248 104.052098) + (xy 131.843256 104.046783) + (xy 131.848688 104.009543) + (xy 131.8525 103.983411) + (xy 131.852499 103.46659) + (xy 131.842301 103.397305) + (xy 131.790581 103.291964) + (xy 131.786928 103.288317) + (xy 131.711183 103.212704) + (xy 131.711181 103.212702) + (xy 131.707528 103.209056) + (xy 131.620843 103.166683) + (xy 131.606458 103.159651) + (xy 131.606457 103.159651) + (xy 131.602098 103.15752) + (xy 131.597295 103.156819) + (xy 131.597294 103.156819) + (xy 131.575341 103.153617) + (xy 131.533411 103.1475) + (xy 131.250749 103.1475) + (xy 130.96659 103.147501) + (xy 130.897305 103.157699) + (xy 130.892947 103.159839) + (xy 130.892946 103.159839) + (xy 130.879007 103.166683) + (xy 130.791964 103.209419) + (xy 130.788318 103.213071) + (xy 130.788317 103.213072) + (xy 130.712704 103.288817) + (xy 130.712702 103.288819) + (xy 130.709056 103.292472) + (xy 130.67873 103.354511) + (xy 130.659943 103.392946) + (xy 130.65752 103.397902) + (xy 130.656819 103.402705) + (xy 130.656819 103.402706) + (xy 130.655065 103.414733) + (xy 130.6475 103.466589) + (xy 130.6475 103.4715) + (xy 130.629194 103.515694) + (xy 130.585 103.534) + (xy 130.5035 103.534) + (xy 130.459306 103.515694) + (xy 130.441 103.4715) + (xy 130.441 102.669384) + (xy 130.459306 102.62519) + (xy 130.470797 102.616123) + (xy 130.489712 102.604509) + (xy 130.494034 102.602085) + (xy 130.502625 102.597708) + (xy 130.505427 102.594906) + (xy 130.506264 102.594346) + (xy 130.525881 102.582301) + (xy 130.608058 102.491513) + (xy 130.661451 102.381311) + (xy 130.663317 102.370224) + (xy 130.681367 102.262928) + (xy 130.681767 102.260552) + (xy 130.681896 102.25) + (xy 130.664536 102.128781) + (xy 130.613852 102.017307) + (xy 130.599199 102.000302) + (xy 130.597708 101.997375) + (xy 130.5919 101.991567) + (xy 130.588746 101.98817) + (xy 130.536826 101.927914) + (xy 130.533918 101.924539) + (xy 130.513741 101.911461) + (xy 130.510155 101.908559) + (xy 130.510081 101.908661) + (xy 130.506106 101.905773) + (xy 130.502625 101.902292) + (xy 130.491343 101.896543) + (xy 130.485736 101.893309) + (xy 130.485735 101.893308) + (xy 130.457055 101.874719) + (xy 130.434893 101.860354) + (xy 130.43489 101.860353) + (xy 130.43116 101.857935) + (xy 130.426901 101.856661) + (xy 130.426898 101.85666) + (xy 130.408345 101.851112) + (xy 130.398839 101.848269) + (xy 130.388377 101.844079) + (xy 130.382813 101.841244) + (xy 130.371067 101.839384) + (xy 130.362951 101.837536) + (xy 130.338896 101.830342) + (xy 130.313838 101.822848) + (xy 130.269496 101.822577) + (xy 130.260103 101.821809) + (xy 130.254857 101.820978) + (xy 130.254856 101.820978) + (xy 130.25 101.820209) + (xy 130.241373 101.821576) + (xy 130.23122 101.822344) + (xy 130.212836 101.822231) + (xy 130.195838 101.822127) + (xy 130.195836 101.822127) + (xy 130.191385 101.8221) + (xy 130.137011 101.837641) + (xy 130.129623 101.839275) + (xy 130.117187 101.841244) + (xy 130.112804 101.843477) + (xy 130.11187 101.843781) + (xy 130.102155 101.847603) + (xy 130.077929 101.854526) + (xy 130.077927 101.854527) + (xy 130.073644 101.855751) + (xy 130.069875 101.858129) + (xy 130.053622 101.868384) + (xy 130.014119 101.893309) + (xy 130.012819 101.894129) + (xy 130.007842 101.896959) + (xy 130.001757 101.900059) + (xy 130.001756 101.90006) + (xy 129.997375 101.902292) + (xy 129.993897 101.90577) + (xy 129.992445 101.906825) + (xy 129.989058 101.90912) + (xy 129.97008 101.921095) + (xy 129.967137 101.924427) + (xy 129.967135 101.924429) + (xy 129.907156 101.992342) + (xy 129.906032 101.993538) + (xy 129.905775 101.993892) + (xy 129.905554 101.994113) + (xy 129.905405 101.994204) + (xy 129.904504 101.995163) + (xy 129.902292 101.997375) + (xy 129.901509 101.996592) + (xy 129.900362 101.997296) + (xy 129.901721 101.998496) + (xy 129.894398 102.006788) + (xy 129.889018 102.012879) + (xy 129.887127 102.016907) + (xy 129.838868 102.119695) + (xy 129.838867 102.119698) + (xy 129.836976 102.123726) + (xy 129.818136 102.244724) + (xy 129.818713 102.249137) + (xy 129.818713 102.249138) + (xy 129.821293 102.268869) + (xy 129.834014 102.366145) + (xy 129.841185 102.382443) + (xy 129.841244 102.382813) + (xy 129.842007 102.384311) + (xy 129.883333 102.47823) + (xy 129.897272 102.494813) + (xy 129.898029 102.495713) + (xy 129.900157 102.498434) + (xy 129.902292 102.502625) + (xy 129.910081 102.510414) + (xy 129.913729 102.514391) + (xy 129.962127 102.571968) + (xy 129.985399 102.587459) + (xy 129.991836 102.592733) + (xy 129.993899 102.594232) + (xy 129.997375 102.597708) + (xy 130.001753 102.599939) + (xy 130.001756 102.599941) + (xy 130.00873 102.603494) + (xy 130.014983 102.607152) + (xy 130.02846 102.616123) + (xy 130.031134 102.617903) + (xy 130.057778 102.657631) + (xy 130.059 102.669929) + (xy 130.059 103.161125) + (xy 130.040694 103.205319) + (xy 129.9965 103.223625) + (xy 129.960617 103.21214) + (xy 129.957528 103.209056) + (xy 129.952889 103.206788) + (xy 129.952887 103.206787) + (xy 129.856458 103.159651) + (xy 129.856457 103.159651) + (xy 129.852098 103.15752) + (xy 129.847295 103.156819) + (xy 129.847294 103.156819) + (xy 129.825341 103.153617) + (xy 129.783411 103.1475) + (xy 129.500749 103.1475) + (xy 129.21659 103.147501) + (xy 129.147305 103.157699) + (xy 129.142947 103.159839) + (xy 129.142946 103.159839) + (xy 129.129007 103.166683) + (xy 129.041964 103.209419) + (xy 129.038318 103.213071) + (xy 129.038317 103.213072) + (xy 128.962704 103.288817) + (xy 128.962702 103.288819) + (xy 128.959056 103.292472) + (xy 128.92873 103.354511) + (xy 128.909943 103.392946) + (xy 128.90752 103.397902) + (xy 128.906819 103.402705) + (xy 128.906819 103.402706) + (xy 128.905065 103.414733) + (xy 128.8975 103.466589) + (xy 118.803526 103.466589) + (xy 119.043382 103.226733) + (xy 119.087576 103.208427) + (xy 119.13177 103.226733) + (xy 119.135419 103.230712) + (xy 119.148029 103.245714) + (xy 119.150157 103.248435) + (xy 119.152292 103.252625) + (xy 119.160081 103.260414) + (xy 119.163729 103.264391) + (xy 119.212127 103.321968) + (xy 119.235399 103.337459) + (xy 119.241836 103.342733) + (xy 119.243899 103.344232) + (xy 119.247375 103.347708) + (xy 119.251753 103.349939) + (xy 119.251756 103.349941) + (xy 119.25873 103.353494) + (xy 119.264977 103.357148) + (xy 119.314064 103.389823) + (xy 119.318313 103.391151) + (xy 119.318314 103.391151) + (xy 119.350296 103.401143) + (xy 119.360027 103.405109) + (xy 119.362799 103.406521) + (xy 119.362803 103.406522) + (xy 119.367187 103.408756) + (xy 119.377852 103.410445) + (xy 119.386713 103.41252) + (xy 119.426696 103.425012) + (xy 119.426699 103.425012) + (xy 119.430948 103.42634) + (xy 119.480069 103.427241) + (xy 119.488683 103.427999) + (xy 119.49514 103.429022) + (xy 119.495144 103.429022) + (xy 119.5 103.429791) + (xy 119.506947 103.42869) + (xy 119.517853 103.427933) + (xy 119.553383 103.428584) + (xy 119.613532 103.412185) + (xy 119.62019 103.410755) + (xy 119.622147 103.410445) + (xy 119.632813 103.408756) + (xy 119.637196 103.406522) + (xy 119.641875 103.405002) + (xy 119.641878 103.40501) + (xy 119.646727 103.403136) + (xy 119.671527 103.396375) + (xy 119.693078 103.383143) + (xy 119.739709 103.354511) + (xy 119.744037 103.352085) + (xy 119.74824 103.349944) + (xy 119.748248 103.349938) + (xy 119.752625 103.347708) + (xy 119.755427 103.344906) + (xy 119.756264 103.344346) + (xy 119.760236 103.341907) + (xy 119.775881 103.332301) + (xy 119.858058 103.241513) + (xy 119.911451 103.131311) + (xy 119.913219 103.120806) + (xy 119.924389 103.054407) + (xy 119.931767 103.010552) + (xy 119.931896 103) + (xy 119.914536 102.878781) + (xy 119.863852 102.767307) + (xy 119.849199 102.750302) + (xy 119.847708 102.747375) + (xy 119.8419 102.741567) + (xy 119.838746 102.73817) + (xy 119.786826 102.677914) + (xy 119.783918 102.674539) + (xy 119.763741 102.661461) + (xy 119.760155 102.658559) + (xy 119.760081 102.658661) + (xy 119.756106 102.655773) + (xy 119.752625 102.652292) + (xy 119.741343 102.646543) + (xy 119.735735 102.643308) + (xy 119.719505 102.632788) + (xy 119.692377 102.593389) + (xy 119.691 102.580342) + (xy 119.691 100.244724) + (xy 127.818136 100.244724) + (xy 127.818713 100.249137) + (xy 127.818713 100.249138) + (xy 127.824454 100.293042) + (xy 127.834014 100.366145) + (xy 127.841185 100.382443) + (xy 127.841244 100.382813) + (xy 127.842007 100.384311) + (xy 127.844031 100.38891) + (xy 127.844031 100.388911) + (xy 127.876845 100.463484) + (xy 127.883333 100.47823) + (xy 127.894566 100.491593) + (xy 127.898029 100.495713) + (xy 127.900157 100.498434) + (xy 127.902292 100.502625) + (xy 127.910081 100.510414) + (xy 127.913729 100.514391) + (xy 127.962127 100.571968) + (xy 127.985399 100.587459) + (xy 127.991836 100.592733) + (xy 127.993899 100.594232) + (xy 127.997375 100.597708) + (xy 128.001753 100.599939) + (xy 128.001756 100.599941) + (xy 128.00873 100.603494) + (xy 128.014977 100.607148) + (xy 128.064064 100.639823) + (xy 128.068313 100.641151) + (xy 128.068314 100.641151) + (xy 128.100296 100.651143) + (xy 128.110027 100.655109) + (xy 128.112799 100.656521) + (xy 128.112803 100.656522) + (xy 128.117187 100.658756) + (xy 128.127852 100.660445) + (xy 128.136713 100.66252) + (xy 128.176696 100.675012) + (xy 128.176699 100.675012) + (xy 128.180948 100.67634) + (xy 128.230069 100.677241) + (xy 128.238683 100.677999) + (xy 128.24514 100.679022) + (xy 128.245144 100.679022) + (xy 128.25 100.679791) + (xy 128.256947 100.67869) + (xy 128.267853 100.677933) + (xy 128.303383 100.678584) + (xy 128.363532 100.662185) + (xy 128.37019 100.660755) + (xy 128.372147 100.660445) + (xy 128.382813 100.658756) + (xy 128.387196 100.656522) + (xy 128.391875 100.655002) + (xy 128.391878 100.65501) + (xy 128.396727 100.653136) + (xy 128.421527 100.646375) + (xy 128.489709 100.604511) + (xy 128.494037 100.602085) + (xy 128.49824 100.599944) + (xy 128.498248 100.599938) + (xy 128.502625 100.597708) + (xy 128.505427 100.594906) + (xy 128.506264 100.594346) + (xy 128.509316 100.592472) + (xy 128.525881 100.582301) + (xy 128.605947 100.493845) + (xy 128.649176 100.473364) + (xy 128.696478 100.491593) + (xy 128.884739 100.679854) + (xy 128.903045 100.724048) + (xy 128.902391 100.733063) + (xy 128.8975 100.766589) + (xy 128.897501 101.28341) + (xy 128.907699 101.352695) + (xy 128.959419 101.458036) + (xy 128.963071 101.461682) + (xy 128.963072 101.461683) + (xy 129.038817 101.537296) + (xy 129.038819 101.537298) + (xy 129.042472 101.540944) + (xy 129.115762 101.576769) + (xy 129.143158 101.590161) + (xy 129.147902 101.59248) + (xy 129.152705 101.593181) + (xy 129.152706 101.593181) + (xy 129.174659 101.596383) + (xy 129.216589 101.6025) + (xy 129.499251 101.6025) + (xy 129.78341 101.602499) + (xy 129.852695 101.592301) + (xy 129.958036 101.540581) + (xy 130.006089 101.492444) + (xy 130.037296 101.461183) + (xy 130.037298 101.461181) + (xy 130.040944 101.457528) + (xy 130.076769 101.384238) + (xy 130.090349 101.356458) + (xy 130.090349 101.356457) + (xy 130.09248 101.352098) + (xy 130.1025 101.283411) + (xy 130.102499 100.76659) + (xy 130.102499 100.766589) + (xy 130.6475 100.766589) + (xy 130.647501 101.28341) + (xy 130.657699 101.352695) + (xy 130.709419 101.458036) + (xy 130.713071 101.461682) + (xy 130.713072 101.461683) + (xy 130.788817 101.537296) + (xy 130.788819 101.537298) + (xy 130.792472 101.540944) + (xy 130.865762 101.576769) + (xy 130.893158 101.590161) + (xy 130.897902 101.59248) + (xy 130.902705 101.593181) + (xy 130.902706 101.593181) + (xy 130.924659 101.596383) + (xy 130.966589 101.6025) + (xy 130.9965 101.6025) + (xy 131.040694 101.620806) + (xy 131.059 101.665) + (xy 131.059 101.830525) + (xy 131.040694 101.874719) + (xy 131.029855 101.88338) + (xy 131.01281 101.894135) + (xy 131.007842 101.896959) + (xy 131.001757 101.900059) + (xy 131.001756 101.90006) + (xy 130.997375 101.902292) + (xy 130.993897 101.90577) + (xy 130.992445 101.906825) + (xy 130.989058 101.90912) + (xy 130.97008 101.921095) + (xy 130.967137 101.924427) + (xy 130.967135 101.924429) + (xy 130.907156 101.992342) + (xy 130.906032 101.993538) + (xy 130.905775 101.993892) + (xy 130.905554 101.994113) + (xy 130.905405 101.994204) + (xy 130.904504 101.995163) + (xy 130.902292 101.997375) + (xy 130.901509 101.996592) + (xy 130.900362 101.997296) + (xy 130.901721 101.998496) + (xy 130.894398 102.006788) + (xy 130.889018 102.012879) + (xy 130.887127 102.016907) + (xy 130.838868 102.119695) + (xy 130.838867 102.119698) + (xy 130.836976 102.123726) + (xy 130.818136 102.244724) + (xy 130.818713 102.249137) + (xy 130.818713 102.249138) + (xy 130.821293 102.268869) + (xy 130.834014 102.366145) + (xy 130.841185 102.382443) + (xy 130.841244 102.382813) + (xy 130.842007 102.384311) + (xy 130.883333 102.47823) + (xy 130.897272 102.494813) + (xy 130.898029 102.495713) + (xy 130.900157 102.498434) + (xy 130.902292 102.502625) + (xy 130.910081 102.510414) + (xy 130.913729 102.514391) + (xy 130.962127 102.571968) + (xy 130.985399 102.587459) + (xy 130.991836 102.592733) + (xy 130.993899 102.594232) + (xy 130.997375 102.597708) + (xy 131.001753 102.599939) + (xy 131.001756 102.599941) + (xy 131.00873 102.603494) + (xy 131.014977 102.607148) + (xy 131.064064 102.639823) + (xy 131.068313 102.641151) + (xy 131.068314 102.641151) + (xy 131.100296 102.651143) + (xy 131.110027 102.655109) + (xy 131.112799 102.656521) + (xy 131.112803 102.656522) + (xy 131.117187 102.658756) + (xy 131.127852 102.660445) + (xy 131.136713 102.66252) + (xy 131.176696 102.675012) + (xy 131.176699 102.675012) + (xy 131.180948 102.67634) + (xy 131.230069 102.677241) + (xy 131.238683 102.677999) + (xy 131.24514 102.679022) + (xy 131.245144 102.679022) + (xy 131.25 102.679791) + (xy 131.256947 102.67869) + (xy 131.267853 102.677933) + (xy 131.303383 102.678584) + (xy 131.363532 102.662185) + (xy 131.37019 102.660755) + (xy 131.372147 102.660445) + (xy 131.382813 102.658756) + (xy 131.387196 102.656522) + (xy 131.391875 102.655002) + (xy 131.391878 102.65501) + (xy 131.396727 102.653136) + (xy 131.421527 102.646375) + (xy 131.443656 102.632788) + (xy 131.489709 102.604511) + (xy 131.494037 102.602085) + (xy 131.49824 102.599944) + (xy 131.498248 102.599938) + (xy 131.502625 102.597708) + (xy 131.505427 102.594906) + (xy 131.506264 102.594346) + (xy 131.525881 102.582301) + (xy 131.608058 102.491513) + (xy 131.661451 102.381311) + (xy 131.663317 102.370224) + (xy 131.681367 102.262928) + (xy 131.681767 102.260552) + (xy 131.681896 102.25) + (xy 131.664536 102.128781) + (xy 131.613852 102.017307) + (xy 131.599199 102.000302) + (xy 131.597708 101.997375) + (xy 131.5919 101.991567) + (xy 131.588746 101.98817) + (xy 131.536826 101.927914) + (xy 131.533918 101.924539) + (xy 131.513741 101.911461) + (xy 131.510155 101.908559) + (xy 131.510081 101.908661) + (xy 131.506106 101.905773) + (xy 131.502625 101.902292) + (xy 131.491343 101.896543) + (xy 131.485735 101.893308) + (xy 131.469505 101.882788) + (xy 131.442377 101.843389) + (xy 131.441 101.830342) + (xy 131.441 101.664999) + (xy 131.459306 101.620805) + (xy 131.5035 101.602499) + (xy 131.53341 101.602499) + (xy 131.602695 101.592301) + (xy 131.708036 101.540581) + (xy 131.756089 101.492444) + (xy 131.787296 101.461183) + (xy 131.787298 101.461181) + (xy 131.790944 101.457528) + (xy 131.826769 101.384238) + (xy 131.840349 101.356458) + (xy 131.840349 101.356457) + (xy 131.84248 101.352098) + (xy 131.8525 101.283411) + (xy 131.852499 100.76659) + (xy 131.842301 100.697305) + (xy 131.833325 100.679022) + (xy 131.824356 100.660755) + (xy 131.790581 100.591964) + (xy 131.786065 100.587456) + (xy 131.711183 100.512704) + (xy 131.711181 100.512702) + (xy 131.707528 100.509056) + (xy 131.613548 100.463117) + (xy 131.606458 100.459651) + (xy 131.606457 100.459651) + (xy 131.602098 100.45752) + (xy 131.597295 100.456819) + (xy 131.597294 100.456819) + (xy 131.575341 100.453617) + (xy 131.533411 100.4475) + (xy 131.250749 100.4475) + (xy 130.96659 100.447501) + (xy 130.897305 100.457699) + (xy 130.791964 100.509419) + (xy 130.788318 100.513071) + (xy 130.788317 100.513072) + (xy 130.712704 100.588817) + (xy 130.712702 100.588819) + (xy 130.709056 100.592472) + (xy 130.701879 100.607155) + (xy 130.659943 100.692946) + (xy 130.65752 100.697902) + (xy 130.6475 100.766589) + (xy 130.102499 100.766589) + (xy 130.092301 100.697305) + (xy 130.083325 100.679022) + (xy 130.074356 100.660755) + (xy 130.040581 100.591964) + (xy 130.036065 100.587456) + (xy 129.961183 100.512704) + (xy 129.961181 100.512702) + (xy 129.957528 100.509056) + (xy 129.863548 100.463117) + (xy 129.856458 100.459651) + (xy 129.856457 100.459651) + (xy 129.852098 100.45752) + (xy 129.847295 100.456819) + (xy 129.847294 100.456819) + (xy 129.825341 100.453617) + (xy 129.783411 100.4475) + (xy 129.781144 100.4475) + (xy 129.476072 100.447501) + (xy 129.218504 100.447501) + (xy 129.17431 100.429195) + (xy 128.890628 100.145513) + (xy 128.886323 100.139439) + (xy 128.88575 100.139895) + (xy 128.881369 100.134387) + (xy 128.878322 100.128042) + (xy 128.855239 100.109582) + (xy 128.85008 100.104965) + (xy 128.844831 100.099716) + (xy 128.838828 100.095943) + (xy 128.833052 100.091838) + (xy 128.810267 100.073617) + (xy 128.803407 100.07204) + (xy 128.799647 100.070222) + (xy 128.795711 100.068844) + (xy 128.789752 100.065098) + (xy 128.782758 100.064307) + (xy 128.782757 100.064307) + (xy 128.760764 100.061821) + (xy 128.753787 100.060629) + (xy 128.746703 100.059) + (xy 128.739329 100.059) + (xy 128.732308 100.058604) + (xy 128.730627 100.058414) + (xy 128.703162 100.055309) + (xy 128.696517 100.05763) + (xy 128.689523 100.058414) + (xy 128.689447 100.057736) + (xy 128.681995 100.059) + (xy 128.673049 100.059) + (xy 128.628855 100.040694) + (xy 128.616156 100.022373) + (xy 128.615695 100.02136) + (xy 128.615694 100.021359) + (xy 128.613852 100.017307) + (xy 128.599199 100.000302) + (xy 128.597708 99.997375) + (xy 128.5919 99.991567) + (xy 128.588746 99.98817) + (xy 128.536826 99.927914) + (xy 128.533918 99.924539) + (xy 128.513741 99.911461) + (xy 128.510155 99.908559) + (xy 128.510081 99.908661) + (xy 128.506106 99.905773) + (xy 128.502625 99.902292) + (xy 128.491343 99.896543) + (xy 128.485736 99.893309) + (xy 128.434893 99.860354) + (xy 128.43489 99.860353) + (xy 128.43116 99.857935) + (xy 128.426901 99.856661) + (xy 128.426898 99.85666) + (xy 128.399139 99.848359) + (xy 128.398839 99.848269) + (xy 128.388377 99.844079) + (xy 128.382813 99.841244) + (xy 128.371067 99.839384) + (xy 128.362951 99.837536) + (xy 128.313838 99.822848) + (xy 128.269496 99.822577) + (xy 128.260103 99.821809) + (xy 128.254857 99.820978) + (xy 128.254856 99.820978) + (xy 128.25 99.820209) + (xy 128.241373 99.821576) + (xy 128.23122 99.822344) + (xy 128.212836 99.822231) + (xy 128.195838 99.822127) + (xy 128.195836 99.822127) + (xy 128.191385 99.8221) + (xy 128.137011 99.837641) + (xy 128.129623 99.839275) + (xy 128.117187 99.841244) + (xy 128.112804 99.843477) + (xy 128.11187 99.843781) + (xy 128.102156 99.847603) + (xy 128.099821 99.84827) + (xy 128.077929 99.854526) + (xy 128.077927 99.854527) + (xy 128.073644 99.855751) + (xy 128.014119 99.893309) + (xy 128.012819 99.894129) + (xy 128.007842 99.896959) + (xy 128.001757 99.900059) + (xy 128.001756 99.90006) + (xy 127.997375 99.902292) + (xy 127.993897 99.90577) + (xy 127.992445 99.906825) + (xy 127.989058 99.90912) + (xy 127.97008 99.921095) + (xy 127.967137 99.924427) + (xy 127.967135 99.924429) + (xy 127.907156 99.992342) + (xy 127.906032 99.993538) + (xy 127.905775 99.993892) + (xy 127.905554 99.994113) + (xy 127.905405 99.994204) + (xy 127.904504 99.995163) + (xy 127.902292 99.997375) + (xy 127.901509 99.996592) + (xy 127.900362 99.997296) + (xy 127.901721 99.998496) + (xy 127.889018 100.012879) + (xy 127.885036 100.02136) + (xy 127.838868 100.119695) + (xy 127.838867 100.119698) + (xy 127.836976 100.123726) + (xy 127.818136 100.244724) + (xy 119.691 100.244724) + (xy 119.691 99.494724) + (xy 124.318136 99.494724) + (xy 124.318713 99.499137) + (xy 124.318713 99.499138) + (xy 124.331627 99.59789) + (xy 124.334014 99.616145) + (xy 124.341185 99.632443) + (xy 124.341244 99.632813) + (xy 124.342007 99.634311) + (xy 124.344031 99.63891) + (xy 124.344031 99.638911) + (xy 124.375922 99.711387) + (xy 124.383333 99.72823) + (xy 124.397273 99.744814) + (xy 124.398029 99.745713) + (xy 124.400157 99.748434) + (xy 124.402292 99.752625) + (xy 124.410081 99.760414) + (xy 124.41373 99.764392) + (xy 124.44947 99.80691) + (xy 124.462127 99.821968) + (xy 124.485399 99.837459) + (xy 124.491836 99.842733) + (xy 124.493899 99.844232) + (xy 124.497375 99.847708) + (xy 124.501753 99.849939) + (xy 124.501756 99.849941) + (xy 124.50873 99.853494) + (xy 124.514977 99.857148) + (xy 124.564064 99.889823) + (xy 124.568313 99.891151) + (xy 124.568314 99.891151) + (xy 124.600296 99.901143) + (xy 124.610027 99.905109) + (xy 124.612799 99.906521) + (xy 124.612803 99.906522) + (xy 124.617187 99.908756) + (xy 124.627852 99.910445) + (xy 124.636713 99.91252) + (xy 124.676696 99.925012) + (xy 124.676699 99.925012) + (xy 124.680948 99.92634) + (xy 124.730069 99.927241) + (xy 124.738683 99.927999) + (xy 124.74514 99.929022) + (xy 124.745144 99.929022) + (xy 124.75 99.929791) + (xy 124.756947 99.92869) + (xy 124.767853 99.927933) + (xy 124.803383 99.928584) + (xy 124.863532 99.912185) + (xy 124.87019 99.910755) + (xy 124.872147 99.910445) + (xy 124.882813 99.908756) + (xy 124.887196 99.906522) + (xy 124.891875 99.905002) + (xy 124.891878 99.90501) + (xy 124.896727 99.903136) + (xy 124.921527 99.896375) + (xy 124.926521 99.893309) + (xy 124.989709 99.854511) + (xy 124.994037 99.852085) + (xy 124.99824 99.849944) + (xy 124.998248 99.849938) + (xy 125.002625 99.847708) + (xy 125.005427 99.844906) + (xy 125.006264 99.844346) + (xy 125.007681 99.843476) + (xy 125.025881 99.832301) + (xy 125.108058 99.741513) + (xy 125.113111 99.731083) + (xy 128.898001 99.731083) + (xy 128.898333 99.735614) + (xy 128.907478 99.797743) + (xy 128.910326 99.80691) + (xy 128.957556 99.903105) + (xy 128.963484 99.911387) + (xy 129.039111 99.986883) + (xy 129.047406 99.992799) + (xy 129.143687 100.039863) + (xy 129.152851 100.042695) + (xy 129.214391 100.051672) + (xy 129.218904 100.052) + (xy 129.424069 100.052) + (xy 129.432859 100.048359) + (xy 129.4365 100.039569) + (xy 129.4365 100.039568) + (xy 129.5635 100.039568) + (xy 129.567141 100.048358) + (xy 129.575931 100.051999) + (xy 129.781083 100.051999) + (xy 129.785614 100.051667) + (xy 129.847743 100.042522) + (xy 129.85691 100.039674) + (xy 129.953105 99.992444) + (xy 129.961387 99.986516) + (xy 130.036883 99.910889) + (xy 130.042799 99.902594) + (xy 130.089863 99.806313) + (xy 130.092695 99.797149) + (xy 130.101672 99.735609) + (xy 130.102 99.731096) + (xy 130.102 99.731083) + (xy 130.648001 99.731083) + (xy 130.648333 99.735614) + (xy 130.657478 99.797743) + (xy 130.660326 99.80691) + (xy 130.707556 99.903105) + (xy 130.713484 99.911387) + (xy 130.789111 99.986883) + (xy 130.797406 99.992799) + (xy 130.893687 100.039863) + (xy 130.902851 100.042695) + (xy 130.964391 100.051672) + (xy 130.968904 100.052) + (xy 131.174069 100.052) + (xy 131.182859 100.048359) + (xy 131.1865 100.039569) + (xy 131.1865 100.039568) + (xy 131.3135 100.039568) + (xy 131.317141 100.048358) + (xy 131.325931 100.051999) + (xy 131.531083 100.051999) + (xy 131.535614 100.051667) + (xy 131.597743 100.042522) + (xy 131.60691 100.039674) + (xy 131.703105 99.992444) + (xy 131.711387 99.986516) + (xy 131.786883 99.910889) + (xy 131.792799 99.902594) + (xy 131.839863 99.806313) + (xy 131.842695 99.797149) + (xy 131.851672 99.735609) + (xy 131.852 99.731096) + (xy 131.852 99.550931) + (xy 131.848359 99.542141) + (xy 131.839569 99.5385) + (xy 131.325931 99.5385) + (xy 131.317141 99.542141) + (xy 131.3135 99.550931) + (xy 131.3135 100.039568) + (xy 131.1865 100.039568) + (xy 131.1865 99.550931) + (xy 131.182859 99.542141) + (xy 131.174069 99.5385) + (xy 130.660432 99.5385) + (xy 130.651642 99.542141) + (xy 130.648001 99.550931) + (xy 130.648001 99.731083) + (xy 130.102 99.731083) + (xy 130.102 99.550931) + (xy 130.098359 99.542141) + (xy 130.089569 99.5385) + (xy 129.575931 99.5385) + (xy 129.567141 99.542141) + (xy 129.5635 99.550931) + (xy 129.5635 100.039568) + (xy 129.4365 100.039568) + (xy 129.4365 99.550931) + (xy 129.432859 99.542141) + (xy 129.424069 99.5385) + (xy 128.910432 99.5385) + (xy 128.901642 99.542141) + (xy 128.898001 99.550931) + (xy 128.898001 99.731083) + (xy 125.113111 99.731083) + (xy 125.115454 99.726248) + (xy 125.151198 99.694458) + (xy 125.1717 99.691) + (xy 126.956768 99.691) + (xy 126.964107 99.69225) + (xy 126.96419 99.691523) + (xy 126.971181 99.69232) + (xy 126.977822 99.694652) + (xy 126.984815 99.693874) + (xy 126.984816 99.693874) + (xy 127.007197 99.691383) + (xy 127.01411 99.691) + (xy 127.021533 99.691) + (xy 127.028465 99.689419) + (xy 127.035418 99.688243) + (xy 127.064429 99.685014) + (xy 127.070393 99.681281) + (xy 127.074341 99.679906) + (xy 127.0781 99.678097) + (xy 127.084959 99.676532) + (xy 127.107774 99.658351) + (xy 127.113559 99.654256) + (xy 127.116715 99.65228) + (xy 127.116717 99.652279) + (xy 127.119711 99.650404) + (xy 127.124924 99.645191) + (xy 127.130168 99.640506) + (xy 127.147604 99.626612) + (xy 127.147604 99.626611) + (xy 127.153109 99.622225) + (xy 127.156167 99.615886) + (xy 127.160558 99.610385) + (xy 127.161092 99.610811) + (xy 127.165468 99.604647) + (xy 127.371046 99.399069) + (xy 128.898 99.399069) + (xy 128.901641 99.407859) + (xy 128.910431 99.4115) + (xy 129.424069 99.4115) + (xy 129.432859 99.407859) + (xy 129.4365 99.399069) + (xy 129.5635 99.399069) + (xy 129.567141 99.407859) + (xy 129.575931 99.4115) + (xy 130.089568 99.4115) + (xy 130.098358 99.407859) + (xy 130.101999 99.399069) + (xy 130.648 99.399069) + (xy 130.651641 99.407859) + (xy 130.660431 99.4115) + (xy 131.174069 99.4115) + (xy 131.182859 99.407859) + (xy 131.1865 99.399069) + (xy 131.3135 99.399069) + (xy 131.317141 99.407859) + (xy 131.325931 99.4115) + (xy 131.839568 99.4115) + (xy 131.848358 99.407859) + (xy 131.851999 99.399069) + (xy 131.851999 99.218917) + (xy 131.851667 99.214386) + (xy 131.842522 99.152257) + (xy 131.839674 99.14309) + (xy 131.792444 99.046895) + (xy 131.786516 99.038613) + (xy 131.710889 98.963117) + (xy 131.702594 98.957201) + (xy 131.606313 98.910137) + (xy 131.597149 98.907305) + (xy 131.535609 98.898328) + (xy 131.531096 98.898) + (xy 131.325931 98.898) + (xy 131.317141 98.901641) + (xy 131.3135 98.910431) + (xy 131.3135 99.399069) + (xy 131.1865 99.399069) + (xy 131.1865 98.910432) + (xy 131.182859 98.901642) + (xy 131.174069 98.898001) + (xy 130.968917 98.898001) + (xy 130.964386 98.898333) + (xy 130.902257 98.907478) + (xy 130.89309 98.910326) + (xy 130.796895 98.957556) + (xy 130.788613 98.963484) + (xy 130.713117 99.039111) + (xy 130.707201 99.047406) + (xy 130.660137 99.143687) + (xy 130.657305 99.152851) + (xy 130.648328 99.214391) + (xy 130.648 99.218904) + (xy 130.648 99.399069) + (xy 130.101999 99.399069) + (xy 130.101999 99.218917) + (xy 130.101667 99.214386) + (xy 130.092522 99.152257) + (xy 130.089674 99.14309) + (xy 130.042444 99.046895) + (xy 130.036516 99.038613) + (xy 129.960889 98.963117) + (xy 129.952594 98.957201) + (xy 129.856313 98.910137) + (xy 129.847149 98.907305) + (xy 129.785609 98.898328) + (xy 129.781096 98.898) + (xy 129.575931 98.898) + (xy 129.567141 98.901641) + (xy 129.5635 98.910431) + (xy 129.5635 99.399069) + (xy 129.4365 99.399069) + (xy 129.4365 98.910432) + (xy 129.432859 98.901642) + (xy 129.424069 98.898001) + (xy 129.218917 98.898001) + (xy 129.214386 98.898333) + (xy 129.152257 98.907478) + (xy 129.14309 98.910326) + (xy 129.046895 98.957556) + (xy 129.038613 98.963484) + (xy 128.963117 99.039111) + (xy 128.957201 99.047406) + (xy 128.910137 99.143687) + (xy 128.907305 99.152851) + (xy 128.898328 99.214391) + (xy 128.898 99.218904) + (xy 128.898 99.399069) + (xy 127.371046 99.399069) + (xy 129.310809 97.459306) + (xy 129.355003 97.441) + (xy 130.144997 97.441) + (xy 130.189191 97.459306) + (xy 130.834371 98.104485) + (xy 130.838678 98.11056) + (xy 130.83925 98.110105) + (xy 130.843631 98.115613) + (xy 130.846678 98.121958) + (xy 130.852175 98.126354) + (xy 130.869766 98.140422) + (xy 130.874925 98.145039) + (xy 130.880169 98.150283) + (xy 130.883132 98.152145) + (xy 130.883139 98.152151) + (xy 130.886174 98.154058) + (xy 130.89195 98.158163) + (xy 130.914733 98.176383) + (xy 130.921591 98.17796) + (xy 130.925356 98.17978) + (xy 130.929292 98.181158) + (xy 130.935248 98.184902) + (xy 130.942239 98.185692) + (xy 130.942244 98.185694) + (xy 130.964237 98.18818) + (xy 130.971223 98.189373) + (xy 130.978297 98.191) + (xy 130.985677 98.191) + (xy 130.992698 98.191396) + (xy 131.021838 98.19469) + (xy 131.028484 98.192369) + (xy 131.035478 98.191585) + (xy 131.035554 98.192264) + (xy 131.043004 98.191) + (xy 131.326187 98.191) + (xy 131.370381 98.209306) + (xy 131.379248 98.220473) + (xy 131.38154 98.224155) + (xy 131.383333 98.22823) + (xy 131.397645 98.245256) + (xy 131.398029 98.245713) + (xy 131.400157 98.248434) + (xy 131.402292 98.252625) + (xy 131.410081 98.260414) + (xy 131.413729 98.264391) + (xy 131.462127 98.321968) + (xy 131.485399 98.337459) + (xy 131.491836 98.342733) + (xy 131.493899 98.344232) + (xy 131.497375 98.347708) + (xy 131.501753 98.349939) + (xy 131.501756 98.349941) + (xy 131.50873 98.353494) + (xy 131.514977 98.357148) + (xy 131.564064 98.389823) + (xy 131.568313 98.391151) + (xy 131.568314 98.391151) + (xy 131.600296 98.401143) + (xy 131.610027 98.405109) + (xy 131.612799 98.406521) + (xy 131.612803 98.406522) + (xy 131.617187 98.408756) + (xy 131.627852 98.410445) + (xy 131.636713 98.41252) + (xy 131.676696 98.425012) + (xy 131.676699 98.425012) + (xy 131.680948 98.42634) + (xy 131.730069 98.427241) + (xy 131.738683 98.427999) + (xy 131.74514 98.429022) + (xy 131.745144 98.429022) + (xy 131.75 98.429791) + (xy 131.756947 98.42869) + (xy 131.767853 98.427933) + (xy 131.803383 98.428584) + (xy 131.863532 98.412185) + (xy 131.87019 98.410755) + (xy 131.874269 98.410109) + (xy 131.882813 98.408756) + (xy 131.887196 98.406522) + (xy 131.891875 98.405002) + (xy 131.891878 98.40501) + (xy 131.896727 98.403136) + (xy 131.921527 98.396375) + (xy 131.989709 98.354511) + (xy 131.994037 98.352085) + (xy 131.99824 98.349944) + (xy 131.998248 98.349938) + (xy 132.002625 98.347708) + (xy 132.005427 98.344906) + (xy 132.006263 98.344347) + (xy 132.017485 98.337456) + (xy 132.025295 98.332661) + (xy 132.072534 98.325135) + (xy 132.111259 98.353216) + (xy 132.120499 98.385921) + (xy 132.120499 106.009623) + (xy 132.102193 106.053817) + (xy 132.067795 106.07135) + (xy 132.066385 106.071574) + (xy 132.05622 106.072344) + (xy 132.037836 106.072231) + (xy 132.020838 106.072127) + (xy 132.020836 106.072127) + (xy 132.016385 106.0721) + (xy 131.962011 106.087641) + (xy 131.954623 106.089275) + (xy 131.942187 106.091244) + (xy 131.937804 106.093477) + (xy 131.93687 106.093781) + (xy 131.927156 106.097603) + (xy 131.924821 106.09827) + (xy 131.902929 106.104526) + (xy 131.902927 106.104527) + (xy 131.898644 106.105751) + (xy 131.894875 106.108129) + (xy 131.878622 106.118384) + (xy 131.839119 106.143309) + (xy 131.837819 106.144129) + (xy 131.832842 106.146959) + (xy 131.826757 106.150059) + (xy 131.826756 106.15006) + (xy 131.822375 106.152292) + (xy 131.818897 106.15577) + (xy 131.817445 106.156825) + (xy 131.814058 106.15912) + (xy 131.79508 106.171095) + (xy 131.792137 106.174427) + (xy 131.792135 106.174429) + (xy 131.732156 106.242342) + (xy 131.731032 106.243538) + (xy 131.730775 106.243892) + (xy 131.730554 106.244113) + (xy 131.730405 106.244204) + (xy 131.729504 106.245163) + (xy 131.727292 106.247375) + (xy 131.726509 106.246592) + (xy 131.725362 106.247296) + (xy 131.726721 106.248496) + (xy 131.714018 106.262879) + (xy 131.712127 106.266907) + (xy 131.663868 106.369695) + (xy 131.663867 106.369698) + (xy 131.661976 106.373726) + (xy 131.643136 106.494724) + (xy 131.643713 106.499137) + (xy 131.643713 106.499138) + (xy 131.656895 106.599944) + (xy 131.659014 106.616145) + (xy 131.660809 106.620224) + (xy 131.664286 106.628126) + (xy 131.666185 106.632443) + (xy 131.666244 106.632813) + (xy 131.667007 106.634311) + (xy 131.669031 106.63891) + (xy 131.669031 106.638911) + (xy 131.705334 106.721414) + (xy 131.708333 106.72823) + (xy 131.722198 106.744724) + (xy 131.723029 106.745713) + (xy 131.725157 106.748434) + (xy 131.727292 106.752625) + (xy 131.735081 106.760414) + (xy 131.73873 106.764392) + (xy 131.757983 106.787296) + (xy 131.787127 106.821968) + (xy 131.810399 106.837459) + (xy 131.816836 106.842733) + (xy 131.818899 106.844232) + (xy 131.822375 106.847708) + (xy 131.826753 106.849939) + (xy 131.826756 106.849941) + (xy 131.83373 106.853494) + (xy 131.839977 106.857148) + (xy 131.889064 106.889823) + (xy 131.893313 106.891151) + (xy 131.893314 106.891151) + (xy 131.925296 106.901143) + (xy 131.935027 106.905109) + (xy 131.937799 106.906521) + (xy 131.937803 106.906522) + (xy 131.942187 106.908756) + (xy 131.952852 106.910445) + (xy 131.961713 106.91252) + (xy 132.001696 106.925012) + (xy 132.001699 106.925012) + (xy 132.005948 106.92634) + (xy 132.055069 106.927241) + (xy 132.063683 106.927999) + (xy 132.07014 106.929022) + (xy 132.070144 106.929022) + (xy 132.075 106.929791) + (xy 132.081947 106.92869) + (xy 132.092853 106.927933) + (xy 132.128383 106.928584) + (xy 132.188532 106.912185) + (xy 132.19519 106.910755) + (xy 132.197147 106.910445) + (xy 132.207813 106.908756) + (xy 132.212196 106.906522) + (xy 132.216875 106.905002) + (xy 132.216878 106.90501) + (xy 132.221727 106.903136) + (xy 132.246527 106.896375) + (xy 132.252705 106.892582) + (xy 132.314709 106.854511) + (xy 132.319037 106.852085) + (xy 132.32324 106.849944) + (xy 132.323248 106.849938) + (xy 132.327625 106.847708) + (xy 132.330427 106.844906) + (xy 132.331264 106.844346) + (xy 132.350881 106.832301) + (xy 132.433058 106.741513) + (xy 132.442796 106.721414) + (xy 132.47854 106.689623) + (xy 132.526293 106.692419) + (xy 132.553596 106.720743) + (xy 132.554187 106.720375) + (xy 132.555912 106.723146) + (xy 132.55625 106.723497) + (xy 132.558333 106.72823) + (xy 132.572198 106.744724) + (xy 132.573029 106.745713) + (xy 132.575157 106.748434) + (xy 132.577292 106.752625) + (xy 132.585081 106.760414) + (xy 132.58873 106.764392) + (xy 132.607983 106.787296) + (xy 132.637127 106.821968) + (xy 132.660399 106.837459) + (xy 132.666836 106.842733) + (xy 132.668899 106.844232) + (xy 132.672375 106.847708) + (xy 132.676753 106.849939) + (xy 132.676756 106.849941) + (xy 132.68373 106.853494) + (xy 132.689977 106.857148) + (xy 132.739064 106.889823) + (xy 132.743313 106.891151) + (xy 132.743314 106.891151) + (xy 132.775296 106.901143) + (xy 132.785027 106.905109) + (xy 132.787799 106.906521) + (xy 132.787803 106.906522) + (xy 132.792187 106.908756) + (xy 132.802852 106.910445) + (xy 132.811713 106.91252) + (xy 132.851696 106.925012) + (xy 132.851699 106.925012) + (xy 132.855948 106.92634) + (xy 132.905069 106.927241) + (xy 132.913683 106.927999) + (xy 132.92014 106.929022) + (xy 132.920144 106.929022) + (xy 132.925 106.929791) + (xy 132.931947 106.92869) + (xy 132.942853 106.927933) + (xy 132.978383 106.928584) + (xy 133.038532 106.912185) + (xy 133.04519 106.910755) + (xy 133.047147 106.910445) + (xy 133.057813 106.908756) + (xy 133.062196 106.906522) + (xy 133.066875 106.905002) + (xy 133.066878 106.90501) + (xy 133.071727 106.903136) + (xy 133.096527 106.896375) + (xy 133.102705 106.892582) + (xy 133.164709 106.854511) + (xy 133.169037 106.852085) + (xy 133.17324 106.849944) + (xy 133.173248 106.849938) + (xy 133.177625 106.847708) + (xy 133.180427 106.844906) + (xy 133.181264 106.844346) + (xy 133.200881 106.832301) + (xy 133.283058 106.741513) + (xy 133.336451 106.631311) + (xy 133.3375 106.62508) + (xy 133.351696 106.540694) + (xy 133.356767 106.510552) + (xy 133.356896 106.5) + (xy 133.339536 106.378781) + (xy 133.288852 106.267307) + (xy 133.274199 106.250302) + (xy 133.272708 106.247375) + (xy 133.2669 106.241567) + (xy 133.263746 106.23817) + (xy 133.211826 106.177914) + (xy 133.208918 106.174539) + (xy 133.188741 106.161461) + (xy 133.185155 106.158559) + (xy 133.185081 106.158661) + (xy 133.181106 106.155773) + (xy 133.177625 106.152292) + (xy 133.166343 106.146543) + (xy 133.160736 106.143309) + (xy 133.160735 106.143308) + (xy 133.138322 106.128781) + (xy 133.109893 106.110354) + (xy 133.10989 106.110353) + (xy 133.10616 106.107935) + (xy 133.101901 106.106661) + (xy 133.101898 106.10666) + (xy 133.079429 106.099941) + (xy 133.073839 106.098269) + (xy 133.063377 106.094079) + (xy 133.057813 106.091244) + (xy 133.046067 106.089384) + (xy 133.037951 106.087536) + (xy 132.988838 106.072848) + (xy 132.944496 106.072577) + (xy 132.935098 106.071808) + (xy 132.93222 106.071352) + (xy 132.891435 106.046356) + (xy 132.879501 106.009622) + (xy 132.879501 105.016589) + (xy 134.1475 105.016589) + (xy 134.147501 105.53341) + (xy 134.157699 105.602695) + (xy 134.159839 105.607053) + (xy 134.159839 105.607054) + (xy 134.166046 105.619695) + (xy 134.209419 105.708036) + (xy 134.213071 105.711682) + (xy 134.213072 105.711683) + (xy 134.288817 105.787296) + (xy 134.288819 105.787298) + (xy 134.292472 105.790944) + (xy 134.36035 105.824124) + (xy 134.393158 105.840161) + (xy 134.397902 105.84248) + (xy 134.402705 105.843181) + (xy 134.402706 105.843181) + (xy 134.421627 105.845941) + (xy 134.466589 105.8525) + (xy 134.4965 105.8525) + (xy 134.540694 105.870806) + (xy 134.559 105.915) + (xy 134.559 106.080525) + (xy 134.540694 106.124719) + (xy 134.529855 106.13338) + (xy 134.51281 106.144135) + (xy 134.507842 106.146959) + (xy 134.501757 106.150059) + (xy 134.501756 106.15006) + (xy 134.497375 106.152292) + (xy 134.493897 106.15577) + (xy 134.492445 106.156825) + (xy 134.489058 106.15912) + (xy 134.47008 106.171095) + (xy 134.467137 106.174427) + (xy 134.467135 106.174429) + (xy 134.407156 106.242342) + (xy 134.406032 106.243538) + (xy 134.405775 106.243892) + (xy 134.405554 106.244113) + (xy 134.405405 106.244204) + (xy 134.404504 106.245163) + (xy 134.402292 106.247375) + (xy 134.401509 106.246592) + (xy 134.400362 106.247296) + (xy 134.401721 106.248496) + (xy 134.389018 106.262879) + (xy 134.387127 106.266907) + (xy 134.338868 106.369695) + (xy 134.338867 106.369698) + (xy 134.336976 106.373726) + (xy 134.318136 106.494724) + (xy 134.318713 106.499137) + (xy 134.318713 106.499138) + (xy 134.331895 106.599944) + (xy 134.334014 106.616145) + (xy 134.335809 106.620224) + (xy 134.339286 106.628126) + (xy 134.341185 106.632443) + (xy 134.341244 106.632813) + (xy 134.342007 106.634311) + (xy 134.344031 106.63891) + (xy 134.344031 106.638911) + (xy 134.380334 106.721414) + (xy 134.383333 106.72823) + (xy 134.397198 106.744724) + (xy 134.398029 106.745713) + (xy 134.400157 106.748434) + (xy 134.402292 106.752625) + (xy 134.410081 106.760414) + (xy 134.41373 106.764392) + (xy 134.432983 106.787296) + (xy 134.462127 106.821968) + (xy 134.485399 106.837459) + (xy 134.491836 106.842733) + (xy 134.493899 106.844232) + (xy 134.497375 106.847708) + (xy 134.501753 106.849939) + (xy 134.501756 106.849941) + (xy 134.50873 106.853494) + (xy 134.514977 106.857148) + (xy 134.564064 106.889823) + (xy 134.568313 106.891151) + (xy 134.568314 106.891151) + (xy 134.600296 106.901143) + (xy 134.610027 106.905109) + (xy 134.612799 106.906521) + (xy 134.612803 106.906522) + (xy 134.617187 106.908756) + (xy 134.627852 106.910445) + (xy 134.636713 106.91252) + (xy 134.676696 106.925012) + (xy 134.676699 106.925012) + (xy 134.680948 106.92634) + (xy 134.730069 106.927241) + (xy 134.738683 106.927999) + (xy 134.74514 106.929022) + (xy 134.745144 106.929022) + (xy 134.75 106.929791) + (xy 134.756947 106.92869) + (xy 134.767853 106.927933) + (xy 134.803383 106.928584) + (xy 134.863532 106.912185) + (xy 134.87019 106.910755) + (xy 134.872147 106.910445) + (xy 134.882813 106.908756) + (xy 134.887196 106.906522) + (xy 134.891875 106.905002) + (xy 134.891878 106.90501) + (xy 134.896727 106.903136) + (xy 134.921527 106.896375) + (xy 134.927705 106.892582) + (xy 134.989709 106.854511) + (xy 134.994037 106.852085) + (xy 134.99824 106.849944) + (xy 134.998248 106.849938) + (xy 135.002625 106.847708) + (xy 135.005427 106.844906) + (xy 135.006264 106.844346) + (xy 135.025881 106.832301) + (xy 135.108058 106.741513) + (xy 135.161451 106.631311) + (xy 135.1625 106.62508) + (xy 135.176696 106.540694) + (xy 135.181767 106.510552) + (xy 135.181896 106.5) + (xy 135.164536 106.378781) + (xy 135.113852 106.267307) + (xy 135.099199 106.250302) + (xy 135.097708 106.247375) + (xy 135.0919 106.241567) + (xy 135.088746 106.23817) + (xy 135.036826 106.177914) + (xy 135.033918 106.174539) + (xy 135.013741 106.161461) + (xy 135.010155 106.158559) + (xy 135.010081 106.158661) + (xy 135.006106 106.155773) + (xy 135.002625 106.152292) + (xy 134.991343 106.146543) + (xy 134.985735 106.143308) + (xy 134.969505 106.132788) + (xy 134.942377 106.093389) + (xy 134.941 106.080342) + (xy 134.941 105.914999) + (xy 134.959306 105.870805) + (xy 135.0035 105.852499) + (xy 135.03341 105.852499) + (xy 135.102695 105.842301) + (xy 135.10826 105.839569) + (xy 135.139717 105.824124) + (xy 135.208036 105.790581) + (xy 135.238013 105.760552) + (xy 135.287296 105.711183) + (xy 135.287298 105.711181) + (xy 135.290944 105.707528) + (xy 135.340008 105.607155) + (xy 135.340349 105.606458) + (xy 135.340349 105.606457) + (xy 135.34248 105.602098) + (xy 135.343218 105.597043) + (xy 135.352172 105.535657) + (xy 135.3525 105.533411) + (xy 135.352499 105.01659) + (xy 135.342301 104.947305) + (xy 135.339206 104.941) + (xy 135.323328 104.908661) + (xy 135.290581 104.841964) + (xy 135.286423 104.837813) + (xy 135.211183 104.762704) + (xy 135.211181 104.762702) + (xy 135.207528 104.759056) + (xy 135.134238 104.723231) + (xy 135.106458 104.709651) + (xy 135.106457 104.709651) + (xy 135.102098 104.70752) + (xy 135.097295 104.706819) + (xy 135.097294 104.706819) + (xy 135.061804 104.701642) + (xy 135.033411 104.6975) + (xy 134.750749 104.6975) + (xy 134.46659 104.697501) + (xy 134.397305 104.707699) + (xy 134.392947 104.709839) + (xy 134.392946 104.709839) + (xy 134.373777 104.719251) + (xy 134.291964 104.759419) + (xy 134.288318 104.763071) + (xy 134.288317 104.763072) + (xy 134.212704 104.838817) + (xy 134.212702 104.838819) + (xy 134.209056 104.842472) + (xy 134.180943 104.899985) + (xy 134.159943 104.942946) + (xy 134.15752 104.947902) + (xy 134.1475 105.016589) + (xy 132.879501 105.016589) + (xy 132.879501 103.981083) + (xy 134.148001 103.981083) + (xy 134.148333 103.985614) + (xy 134.157478 104.047743) + (xy 134.160326 104.05691) + (xy 134.207556 104.153105) + (xy 134.213484 104.161387) + (xy 134.289111 104.236883) + (xy 134.297406 104.242799) + (xy 134.393687 104.289863) + (xy 134.402851 104.292695) + (xy 134.464391 104.301672) + (xy 134.468904 104.302) + (xy 134.674069 104.302) + (xy 134.682859 104.298359) + (xy 134.6865 104.289569) + (xy 134.6865 104.289568) + (xy 134.8135 104.289568) + (xy 134.817141 104.298358) + (xy 134.825931 104.301999) + (xy 135.031083 104.301999) + (xy 135.035614 104.301667) + (xy 135.097743 104.292522) + (xy 135.10691 104.289674) + (xy 135.203105 104.242444) + (xy 135.211387 104.236516) + (xy 135.286883 104.160889) + (xy 135.292799 104.152594) + (xy 135.339863 104.056313) + (xy 135.342695 104.047149) + (xy 135.345039 104.031083) + (xy 145.398001 104.031083) + (xy 145.398333 104.035614) + (xy 145.407478 104.097743) + (xy 145.410326 104.10691) + (xy 145.457556 104.203105) + (xy 145.463484 104.211387) + (xy 145.539111 104.286883) + (xy 145.547406 104.292799) + (xy 145.643687 104.339863) + (xy 145.652851 104.342695) + (xy 145.714391 104.351672) + (xy 145.718904 104.352) + (xy 145.899069 104.352) + (xy 145.907859 104.348359) + (xy 145.9115 104.339569) + (xy 145.9115 104.339568) + (xy 146.0385 104.339568) + (xy 146.042141 104.348358) + (xy 146.050931 104.351999) + (xy 146.231083 104.351999) + (xy 146.235614 104.351667) + (xy 146.297743 104.342522) + (xy 146.30691 104.339674) + (xy 146.403105 104.292444) + (xy 146.411387 104.286516) + (xy 146.486883 104.210889) + (xy 146.492799 104.202594) + (xy 146.539863 104.106313) + (xy 146.542695 104.097149) + (xy 146.551672 104.035609) + (xy 146.552 104.031096) + (xy 146.552 103.825931) + (xy 146.548359 103.817141) + (xy 146.539569 103.8135) + (xy 146.050931 103.8135) + (xy 146.042141 103.817141) + (xy 146.0385 103.825931) + (xy 146.0385 104.339568) + (xy 145.9115 104.339568) + (xy 145.9115 103.825931) + (xy 145.907859 103.817141) + (xy 145.899069 103.8135) + (xy 145.410432 103.8135) + (xy 145.401642 103.817141) + (xy 145.398001 103.825931) + (xy 145.398001 104.031083) + (xy 135.345039 104.031083) + (xy 135.351672 103.985609) + (xy 135.352 103.981096) + (xy 135.352 103.800931) + (xy 135.348359 103.792141) + (xy 135.339569 103.7885) + (xy 134.825931 103.7885) + (xy 134.817141 103.792141) + (xy 134.8135 103.800931) + (xy 134.8135 104.289568) + (xy 134.6865 104.289568) + (xy 134.6865 103.800931) + (xy 134.682859 103.792141) + (xy 134.674069 103.7885) + (xy 134.160432 103.7885) + (xy 134.151642 103.792141) + (xy 134.148001 103.800931) + (xy 134.148001 103.981083) + (xy 132.879501 103.981083) + (xy 132.879501 103.674069) + (xy 145.398 103.674069) + (xy 145.401641 103.682859) + (xy 145.410431 103.6865) + (xy 145.899069 103.6865) + (xy 145.907859 103.682859) + (xy 145.9115 103.674069) + (xy 146.0385 103.674069) + (xy 146.042141 103.682859) + (xy 146.050931 103.6865) + (xy 146.539568 103.6865) + (xy 146.548358 103.682859) + (xy 146.551999 103.674069) + (xy 146.551999 103.468917) + (xy 146.551667 103.464386) + (xy 146.542522 103.402257) + (xy 146.539674 103.39309) + (xy 146.492444 103.296895) + (xy 146.486516 103.288613) + (xy 146.410889 103.213117) + (xy 146.402594 103.207201) + (xy 146.306313 103.160137) + (xy 146.297149 103.157305) + (xy 146.235609 103.148328) + (xy 146.231096 103.148) + (xy 146.050931 103.148) + (xy 146.042141 103.151641) + (xy 146.0385 103.160431) + (xy 146.0385 103.674069) + (xy 145.9115 103.674069) + (xy 145.9115 103.160432) + (xy 145.907859 103.151642) + (xy 145.899069 103.148001) + (xy 145.718917 103.148001) + (xy 145.714386 103.148333) + (xy 145.652257 103.157478) + (xy 145.64309 103.160326) + (xy 145.546895 103.207556) + (xy 145.538613 103.213484) + (xy 145.463117 103.289111) + (xy 145.457201 103.297406) + (xy 145.410137 103.393687) + (xy 145.407305 103.402851) + (xy 145.398328 103.464391) + (xy 145.398 103.468904) + (xy 145.398 103.674069) + (xy 132.879501 103.674069) + (xy 132.879501 103.649069) + (xy 134.148 103.649069) + (xy 134.151641 103.657859) + (xy 134.160431 103.6615) + (xy 134.674069 103.6615) + (xy 134.682859 103.657859) + (xy 134.6865 103.649069) + (xy 134.8135 103.649069) + (xy 134.817141 103.657859) + (xy 134.825931 103.6615) + (xy 135.339568 103.6615) + (xy 135.348358 103.657859) + (xy 135.351999 103.649069) + (xy 135.351999 103.468917) + (xy 135.351667 103.464386) + (xy 135.342522 103.402257) + (xy 135.339674 103.39309) + (xy 135.292444 103.296895) + (xy 135.286516 103.288613) + (xy 135.210889 103.213117) + (xy 135.202594 103.207201) + (xy 135.106313 103.160137) + (xy 135.097149 103.157305) + (xy 135.035609 103.148328) + (xy 135.031096 103.148) + (xy 134.825931 103.148) + (xy 134.817141 103.151641) + (xy 134.8135 103.160431) + (xy 134.8135 103.649069) + (xy 134.6865 103.649069) + (xy 134.6865 103.160432) + (xy 134.682859 103.151642) + (xy 134.674069 103.148001) + (xy 134.468917 103.148001) + (xy 134.464386 103.148333) + (xy 134.402257 103.157478) + (xy 134.39309 103.160326) + (xy 134.296895 103.207556) + (xy 134.288613 103.213484) + (xy 134.213117 103.289111) + (xy 134.207201 103.297406) + (xy 134.160137 103.393687) + (xy 134.157305 103.402851) + (xy 134.148328 103.464391) + (xy 134.148 103.468904) + (xy 134.148 103.649069) + (xy 132.879501 103.649069) + (xy 132.879501 100.766589) + (xy 134.1475 100.766589) + (xy 134.147501 101.28341) + (xy 134.157699 101.352695) + (xy 134.209419 101.458036) + (xy 134.213071 101.461682) + (xy 134.213072 101.461683) + (xy 134.288817 101.537296) + (xy 134.288819 101.537298) + (xy 134.292472 101.540944) + (xy 134.365762 101.576769) + (xy 134.393158 101.590161) + (xy 134.397902 101.59248) + (xy 134.402705 101.593181) + (xy 134.402706 101.593181) + (xy 134.424659 101.596383) + (xy 134.466589 101.6025) + (xy 134.4965 101.6025) + (xy 134.540694 101.620806) + (xy 134.559 101.665) + (xy 134.559 101.830525) + (xy 134.540694 101.874719) + (xy 134.529855 101.88338) + (xy 134.51281 101.894135) + (xy 134.507842 101.896959) + (xy 134.501757 101.900059) + (xy 134.501756 101.90006) + (xy 134.497375 101.902292) + (xy 134.493897 101.90577) + (xy 134.492445 101.906825) + (xy 134.489058 101.90912) + (xy 134.47008 101.921095) + (xy 134.467137 101.924427) + (xy 134.467135 101.924429) + (xy 134.407156 101.992342) + (xy 134.406032 101.993538) + (xy 134.405775 101.993892) + (xy 134.405554 101.994113) + (xy 134.405405 101.994204) + (xy 134.404504 101.995163) + (xy 134.402292 101.997375) + (xy 134.401509 101.996592) + (xy 134.400362 101.997296) + (xy 134.401721 101.998496) + (xy 134.394398 102.006788) + (xy 134.389018 102.012879) + (xy 134.387127 102.016907) + (xy 134.338868 102.119695) + (xy 134.338867 102.119698) + (xy 134.336976 102.123726) + (xy 134.318136 102.244724) + (xy 134.318713 102.249137) + (xy 134.318713 102.249138) + (xy 134.321293 102.268869) + (xy 134.334014 102.366145) + (xy 134.341185 102.382443) + (xy 134.341244 102.382813) + (xy 134.342007 102.384311) + (xy 134.383333 102.47823) + (xy 134.397272 102.494813) + (xy 134.398029 102.495713) + (xy 134.400157 102.498434) + (xy 134.402292 102.502625) + (xy 134.410081 102.510414) + (xy 134.413729 102.514391) + (xy 134.462127 102.571968) + (xy 134.485399 102.587459) + (xy 134.491836 102.592733) + (xy 134.493899 102.594232) + (xy 134.497375 102.597708) + (xy 134.501753 102.599939) + (xy 134.501756 102.599941) + (xy 134.50873 102.603494) + (xy 134.514977 102.607148) + (xy 134.564064 102.639823) + (xy 134.568313 102.641151) + (xy 134.568314 102.641151) + (xy 134.600296 102.651143) + (xy 134.610027 102.655109) + (xy 134.612799 102.656521) + (xy 134.612803 102.656522) + (xy 134.617187 102.658756) + (xy 134.627852 102.660445) + (xy 134.636713 102.66252) + (xy 134.676696 102.675012) + (xy 134.676699 102.675012) + (xy 134.680948 102.67634) + (xy 134.730069 102.677241) + (xy 134.738683 102.677999) + (xy 134.74514 102.679022) + (xy 134.745144 102.679022) + (xy 134.75 102.679791) + (xy 134.756947 102.67869) + (xy 134.767853 102.677933) + (xy 134.803383 102.678584) + (xy 134.863532 102.662185) + (xy 134.87019 102.660755) + (xy 134.872147 102.660445) + (xy 134.882813 102.658756) + (xy 134.887196 102.656522) + (xy 134.891875 102.655002) + (xy 134.891878 102.65501) + (xy 134.896727 102.653136) + (xy 134.921527 102.646375) + (xy 134.943656 102.632788) + (xy 134.989709 102.604511) + (xy 134.994037 102.602085) + (xy 134.99824 102.599944) + (xy 134.998248 102.599938) + (xy 135.002625 102.597708) + (xy 135.005427 102.594906) + (xy 135.006264 102.594346) + (xy 135.025881 102.582301) + (xy 135.108058 102.491513) + (xy 135.161451 102.381311) + (xy 135.163317 102.370224) + (xy 135.181367 102.262928) + (xy 135.181767 102.260552) + (xy 135.181896 102.25) + (xy 135.164536 102.128781) + (xy 135.113852 102.017307) + (xy 135.099199 102.000302) + (xy 135.097708 101.997375) + (xy 135.0919 101.991567) + (xy 135.088746 101.98817) + (xy 135.036826 101.927914) + (xy 135.033918 101.924539) + (xy 135.013741 101.911461) + (xy 135.010155 101.908559) + (xy 135.010081 101.908661) + (xy 135.006106 101.905773) + (xy 135.002625 101.902292) + (xy 134.991343 101.896543) + (xy 134.985735 101.893308) + (xy 134.969505 101.882788) + (xy 134.942377 101.843389) + (xy 134.941 101.830342) + (xy 134.941 101.664999) + (xy 134.959306 101.620805) + (xy 135.0035 101.602499) + (xy 135.03341 101.602499) + (xy 135.102695 101.592301) + (xy 135.208036 101.540581) + (xy 135.256089 101.492444) + (xy 135.287296 101.461183) + (xy 135.287298 101.461181) + (xy 135.290944 101.457528) + (xy 135.326769 101.384238) + (xy 135.340349 101.356458) + (xy 135.340349 101.356457) + (xy 135.34248 101.352098) + (xy 135.3525 101.283411) + (xy 135.352499 100.76659) + (xy 135.342301 100.697305) + (xy 135.333325 100.679022) + (xy 135.324356 100.660755) + (xy 135.290581 100.591964) + (xy 135.286065 100.587456) + (xy 135.211183 100.512704) + (xy 135.211181 100.512702) + (xy 135.207528 100.509056) + (xy 135.113548 100.463117) + (xy 135.106458 100.459651) + (xy 135.106457 100.459651) + (xy 135.102098 100.45752) + (xy 135.097295 100.456819) + (xy 135.097294 100.456819) + (xy 135.075341 100.453617) + (xy 135.033411 100.4475) + (xy 134.750749 100.4475) + (xy 134.46659 100.447501) + (xy 134.397305 100.457699) + (xy 134.291964 100.509419) + (xy 134.288318 100.513071) + (xy 134.288317 100.513072) + (xy 134.212704 100.588817) + (xy 134.212702 100.588819) + (xy 134.209056 100.592472) + (xy 134.201879 100.607155) + (xy 134.159943 100.692946) + (xy 134.15752 100.697902) + (xy 134.1475 100.766589) + (xy 132.879501 100.766589) + (xy 132.879501 99.731083) + (xy 134.148001 99.731083) + (xy 134.148333 99.735614) + (xy 134.157478 99.797743) + (xy 134.160326 99.80691) + (xy 134.207556 99.903105) + (xy 134.213484 99.911387) + (xy 134.289111 99.986883) + (xy 134.297406 99.992799) + (xy 134.393687 100.039863) + (xy 134.402851 100.042695) + (xy 134.464391 100.051672) + (xy 134.468904 100.052) + (xy 134.674069 100.052) + (xy 134.682859 100.048359) + (xy 134.6865 100.039569) + (xy 134.6865 100.039568) + (xy 134.8135 100.039568) + (xy 134.817141 100.048358) + (xy 134.825931 100.051999) + (xy 135.031083 100.051999) + (xy 135.035614 100.051667) + (xy 135.097743 100.042522) + (xy 135.10691 100.039674) + (xy 135.203105 99.992444) + (xy 135.211387 99.986516) + (xy 135.286883 99.910889) + (xy 135.292799 99.902594) + (xy 135.339863 99.806313) + (xy 135.342695 99.797149) + (xy 135.351672 99.735609) + (xy 135.352 99.731096) + (xy 135.352 99.550931) + (xy 135.348359 99.542141) + (xy 135.339569 99.5385) + (xy 134.825931 99.5385) + (xy 134.817141 99.542141) + (xy 134.8135 99.550931) + (xy 134.8135 100.039568) + (xy 134.6865 100.039568) + (xy 134.6865 99.550931) + (xy 134.682859 99.542141) + (xy 134.674069 99.5385) + (xy 134.160432 99.5385) + (xy 134.151642 99.542141) + (xy 134.148001 99.550931) + (xy 134.148001 99.731083) + (xy 132.879501 99.731083) + (xy 132.879501 99.531083) + (xy 145.398001 99.531083) + (xy 145.398333 99.535614) + (xy 145.407478 99.597743) + (xy 145.410326 99.60691) + (xy 145.457556 99.703105) + (xy 145.463484 99.711387) + (xy 145.539111 99.786883) + (xy 145.547406 99.792799) + (xy 145.643687 99.839863) + (xy 145.652851 99.842695) + (xy 145.714391 99.851672) + (xy 145.718904 99.852) + (xy 145.899069 99.852) + (xy 145.907859 99.848359) + (xy 145.9115 99.839569) + (xy 145.9115 99.839568) + (xy 146.0385 99.839568) + (xy 146.042141 99.848358) + (xy 146.050931 99.851999) + (xy 146.231083 99.851999) + (xy 146.235614 99.851667) + (xy 146.297743 99.842522) + (xy 146.30691 99.839674) + (xy 146.403105 99.792444) + (xy 146.411387 99.786516) + (xy 146.486883 99.710889) + (xy 146.492799 99.702594) + (xy 146.539863 99.606313) + (xy 146.542695 99.597149) + (xy 146.551672 99.535609) + (xy 146.552 99.531096) + (xy 146.552 99.325931) + (xy 146.548359 99.317141) + (xy 146.539569 99.3135) + (xy 146.050931 99.3135) + (xy 146.042141 99.317141) + (xy 146.0385 99.325931) + (xy 146.0385 99.839568) + (xy 145.9115 99.839568) + (xy 145.9115 99.325931) + (xy 145.907859 99.317141) + (xy 145.899069 99.3135) + (xy 145.410432 99.3135) + (xy 145.401642 99.317141) + (xy 145.398001 99.325931) + (xy 145.398001 99.531083) + (xy 132.879501 99.531083) + (xy 132.879501 99.399069) + (xy 134.148 99.399069) + (xy 134.151641 99.407859) + (xy 134.160431 99.4115) + (xy 134.674069 99.4115) + (xy 134.682859 99.407859) + (xy 134.6865 99.399069) + (xy 134.8135 99.399069) + (xy 134.817141 99.407859) + (xy 134.825931 99.4115) + (xy 135.339568 99.4115) + (xy 135.348358 99.407859) + (xy 135.351999 99.399069) + (xy 135.351999 99.218917) + (xy 135.351667 99.214386) + (xy 135.345733 99.174069) + (xy 145.398 99.174069) + (xy 145.401641 99.182859) + (xy 145.410431 99.1865) + (xy 145.899069 99.1865) + (xy 145.907859 99.182859) + (xy 145.9115 99.174069) + (xy 146.0385 99.174069) + (xy 146.042141 99.182859) + (xy 146.050931 99.1865) + (xy 146.539568 99.1865) + (xy 146.548358 99.182859) + (xy 146.551999 99.174069) + (xy 146.551999 98.968917) + (xy 146.551667 98.964386) + (xy 146.542522 98.902257) + (xy 146.539674 98.89309) + (xy 146.492444 98.796895) + (xy 146.486516 98.788613) + (xy 146.410889 98.713117) + (xy 146.402594 98.707201) + (xy 146.306313 98.660137) + (xy 146.297149 98.657305) + (xy 146.235609 98.648328) + (xy 146.231096 98.648) + (xy 146.050931 98.648) + (xy 146.042141 98.651641) + (xy 146.0385 98.660431) + (xy 146.0385 99.174069) + (xy 145.9115 99.174069) + (xy 145.9115 98.660432) + (xy 145.907859 98.651642) + (xy 145.899069 98.648001) + (xy 145.718917 98.648001) + (xy 145.714386 98.648333) + (xy 145.652257 98.657478) + (xy 145.64309 98.660326) + (xy 145.546895 98.707556) + (xy 145.538613 98.713484) + (xy 145.463117 98.789111) + (xy 145.457201 98.797406) + (xy 145.410137 98.893687) + (xy 145.407305 98.902851) + (xy 145.398328 98.964391) + (xy 145.398 98.968904) + (xy 145.398 99.174069) + (xy 135.345733 99.174069) + (xy 135.342522 99.152257) + (xy 135.339674 99.14309) + (xy 135.292444 99.046895) + (xy 135.286516 99.038613) + (xy 135.210889 98.963117) + (xy 135.202594 98.957201) + (xy 135.106313 98.910137) + (xy 135.097149 98.907305) + (xy 135.035609 98.898328) + (xy 135.031096 98.898) + (xy 134.825931 98.898) + (xy 134.817141 98.901641) + (xy 134.8135 98.910431) + (xy 134.8135 99.399069) + (xy 134.6865 99.399069) + (xy 134.6865 98.910432) + (xy 134.682859 98.901642) + (xy 134.674069 98.898001) + (xy 134.468917 98.898001) + (xy 134.464386 98.898333) + (xy 134.402257 98.907478) + (xy 134.39309 98.910326) + (xy 134.296895 98.957556) + (xy 134.288613 98.963484) + (xy 134.213117 99.039111) + (xy 134.207201 99.047406) + (xy 134.160137 99.143687) + (xy 134.157305 99.152851) + (xy 134.148328 99.214391) + (xy 134.148 99.218904) + (xy 134.148 99.399069) + (xy 132.879501 99.399069) + (xy 132.879501 96.744724) + (xy 142.318136 96.744724) + (xy 142.318713 96.749137) + (xy 142.318713 96.749138) + (xy 142.33223 96.8525) + (xy 142.334014 96.866145) + (xy 142.341185 96.882443) + (xy 142.341244 96.882813) + (xy 142.342007 96.884311) + (xy 142.344031 96.88891) + (xy 142.344031 96.888911) + (xy 142.37992 96.970473) + (xy 142.383333 96.97823) + (xy 142.398029 96.995713) + (xy 142.400157 96.998434) + (xy 142.402292 97.002625) + (xy 142.410081 97.010414) + (xy 142.41373 97.014392) + (xy 142.453546 97.061759) + (xy 142.462127 97.071968) + (xy 142.485399 97.087459) + (xy 142.491836 97.092733) + (xy 142.493899 97.094232) + (xy 142.497375 97.097708) + (xy 142.501753 97.099939) + (xy 142.501756 97.099941) + (xy 142.50873 97.103494) + (xy 142.514977 97.107148) + (xy 142.564064 97.139823) + (xy 142.568313 97.141151) + (xy 142.568314 97.141151) + (xy 142.600296 97.151143) + (xy 142.610027 97.155109) + (xy 142.612799 97.156521) + (xy 142.612803 97.156522) + (xy 142.617187 97.158756) + (xy 142.627852 97.160445) + (xy 142.636713 97.16252) + (xy 142.676696 97.175012) + (xy 142.676699 97.175012) + (xy 142.680948 97.17634) + (xy 142.730069 97.177241) + (xy 142.738683 97.177999) + (xy 142.74514 97.179022) + (xy 142.745144 97.179022) + (xy 142.75 97.179791) + (xy 142.756947 97.17869) + (xy 142.767853 97.177933) + (xy 142.803383 97.178584) + (xy 142.863532 97.162185) + (xy 142.87019 97.160755) + (xy 142.872147 97.160445) + (xy 142.882813 97.158756) + (xy 142.887196 97.156522) + (xy 142.891875 97.155002) + (xy 142.891878 97.15501) + (xy 142.896727 97.153136) + (xy 142.921527 97.146375) + (xy 142.932824 97.139439) + (xy 142.989709 97.104511) + (xy 142.994037 97.102085) + (xy 142.99824 97.099944) + (xy 142.998248 97.099938) + (xy 143.002625 97.097708) + (xy 143.005427 97.094906) + (xy 143.006264 97.094346) + (xy 143.006741 97.094053) + (xy 143.025881 97.082301) + (xy 143.108058 96.991513) + (xy 143.115454 96.976248) + (xy 143.151198 96.944458) + (xy 143.1717 96.941) + (xy 145.326187 96.941) + (xy 145.370381 96.959306) + (xy 145.379248 96.970473) + (xy 145.38154 96.974155) + (xy 145.383333 96.97823) + (xy 145.398029 96.995713) + (xy 145.400157 96.998434) + (xy 145.402292 97.002625) + (xy 145.410081 97.010414) + (xy 145.41373 97.014392) + (xy 145.453546 97.061759) + (xy 145.462127 97.071968) + (xy 145.485399 97.087459) + (xy 145.491836 97.092733) + (xy 145.493899 97.094232) + (xy 145.497375 97.097708) + (xy 145.501753 97.099939) + (xy 145.501756 97.099941) + (xy 145.50873 97.103494) + (xy 145.514977 97.107148) + (xy 145.564064 97.139823) + (xy 145.568313 97.141151) + (xy 145.568314 97.141151) + (xy 145.600296 97.151143) + (xy 145.610027 97.155109) + (xy 145.612799 97.156521) + (xy 145.612803 97.156522) + (xy 145.617187 97.158756) + (xy 145.627852 97.160445) + (xy 145.636713 97.16252) + (xy 145.676696 97.175012) + (xy 145.676699 97.175012) + (xy 145.680948 97.17634) + (xy 145.730069 97.177241) + (xy 145.738683 97.177999) + (xy 145.74514 97.179022) + (xy 145.745144 97.179022) + (xy 145.75 97.179791) + (xy 145.756947 97.17869) + (xy 145.767853 97.177933) + (xy 145.803383 97.178584) + (xy 145.863532 97.162185) + (xy 145.87019 97.160755) + (xy 145.872147 97.160445) + (xy 145.882813 97.158756) + (xy 145.887196 97.156522) + (xy 145.891875 97.155002) + (xy 145.891878 97.15501) + (xy 145.896727 97.153136) + (xy 145.921527 97.146375) + (xy 145.932824 97.139439) + (xy 145.989709 97.104511) + (xy 145.994037 97.102085) + (xy 145.99824 97.099944) + (xy 145.998248 97.099938) + (xy 146.002625 97.097708) + (xy 146.005427 97.094906) + (xy 146.006264 97.094346) + (xy 146.006741 97.094053) + (xy 146.025881 97.082301) + (xy 146.108058 96.991513) + (xy 146.161451 96.881311) + (xy 146.163317 96.870224) + (xy 146.177268 96.787296) + (xy 146.181767 96.760552) + (xy 146.181896 96.75) + (xy 146.164536 96.628781) + (xy 146.113852 96.517307) + (xy 146.099199 96.500302) + (xy 146.097708 96.497375) + (xy 146.0919 96.491567) + (xy 146.088746 96.48817) + (xy 146.036826 96.427914) + (xy 146.033918 96.424539) + (xy 146.013741 96.411461) + (xy 146.010155 96.408559) + (xy 146.010081 96.408661) + (xy 146.006106 96.405773) + (xy 146.002625 96.402292) + (xy 145.991343 96.396543) + (xy 145.985736 96.393309) + (xy 145.973408 96.385318) + (xy 145.967225 96.381311) + (xy 145.934893 96.360354) + (xy 145.93489 96.360353) + (xy 145.93116 96.357935) + (xy 145.926901 96.356661) + (xy 145.926898 96.35666) + (xy 145.908345 96.351112) + (xy 145.898839 96.348269) + (xy 145.888377 96.344079) + (xy 145.882813 96.341244) + (xy 145.871067 96.339384) + (xy 145.862951 96.337536) + (xy 145.858163 96.336104) + (xy 145.813838 96.322848) + (xy 145.769496 96.322577) + (xy 145.760103 96.321809) + (xy 145.754857 96.320978) + (xy 145.754856 96.320978) + (xy 145.75 96.320209) + (xy 145.741373 96.321576) + (xy 145.73122 96.322344) + (xy 145.712836 96.322231) + (xy 145.695838 96.322127) + (xy 145.695836 96.322127) + (xy 145.691385 96.3221) + (xy 145.637011 96.337641) + (xy 145.629623 96.339275) + (xy 145.617187 96.341244) + (xy 145.612804 96.343477) + (xy 145.61187 96.343781) + (xy 145.602155 96.347603) + (xy 145.577929 96.354526) + (xy 145.577927 96.354527) + (xy 145.573644 96.355751) + (xy 145.514119 96.393309) + (xy 145.512819 96.394129) + (xy 145.507842 96.396959) + (xy 145.501757 96.400059) + (xy 145.501756 96.40006) + (xy 145.497375 96.402292) + (xy 145.493897 96.40577) + (xy 145.492445 96.406825) + (xy 145.489058 96.40912) + (xy 145.47008 96.421095) + (xy 145.467137 96.424427) + (xy 145.467135 96.424429) + (xy 145.407156 96.492342) + (xy 145.406032 96.493538) + (xy 145.405775 96.493892) + (xy 145.405554 96.494113) + (xy 145.405405 96.494204) + (xy 145.404504 96.495163) + (xy 145.402292 96.497375) + (xy 145.401509 96.496592) + (xy 145.400362 96.497296) + (xy 145.401721 96.498496) + (xy 145.395002 96.506104) + (xy 145.389018 96.512879) + (xy 145.387127 96.516906) + (xy 145.387126 96.516908) + (xy 145.384237 96.523062) + (xy 145.348884 96.555287) + (xy 145.327662 96.559) + (xy 143.173049 96.559) + (xy 143.128855 96.540694) + (xy 143.116156 96.522373) + (xy 143.115695 96.52136) + (xy 143.115693 96.521357) + (xy 143.113852 96.517307) + (xy 143.099199 96.500302) + (xy 143.097708 96.497375) + (xy 143.0919 96.491567) + (xy 143.088746 96.48817) + (xy 143.036826 96.427914) + (xy 143.033918 96.424539) + (xy 143.013741 96.411461) + (xy 143.010155 96.408559) + (xy 143.010081 96.408661) + (xy 143.006106 96.405773) + (xy 143.002625 96.402292) + (xy 142.991343 96.396543) + (xy 142.985736 96.393309) + (xy 142.973408 96.385318) + (xy 142.967225 96.381311) + (xy 142.934893 96.360354) + (xy 142.93489 96.360353) + (xy 142.93116 96.357935) + (xy 142.926901 96.356661) + (xy 142.926898 96.35666) + (xy 142.908345 96.351112) + (xy 142.898839 96.348269) + (xy 142.888377 96.344079) + (xy 142.882813 96.341244) + (xy 142.871067 96.339384) + (xy 142.862951 96.337536) + (xy 142.858163 96.336104) + (xy 142.813838 96.322848) + (xy 142.769496 96.322577) + (xy 142.760103 96.321809) + (xy 142.754857 96.320978) + (xy 142.754856 96.320978) + (xy 142.75 96.320209) + (xy 142.741373 96.321576) + (xy 142.73122 96.322344) + (xy 142.712836 96.322231) + (xy 142.695838 96.322127) + (xy 142.695836 96.322127) + (xy 142.691385 96.3221) + (xy 142.637011 96.337641) + (xy 142.629623 96.339275) + (xy 142.617187 96.341244) + (xy 142.612804 96.343477) + (xy 142.61187 96.343781) + (xy 142.602155 96.347603) + (xy 142.577929 96.354526) + (xy 142.577927 96.354527) + (xy 142.573644 96.355751) + (xy 142.514119 96.393309) + (xy 142.512819 96.394129) + (xy 142.507842 96.396959) + (xy 142.501757 96.400059) + (xy 142.501756 96.40006) + (xy 142.497375 96.402292) + (xy 142.493897 96.40577) + (xy 142.492445 96.406825) + (xy 142.489058 96.40912) + (xy 142.47008 96.421095) + (xy 142.467137 96.424427) + (xy 142.467135 96.424429) + (xy 142.407156 96.492342) + (xy 142.406032 96.493538) + (xy 142.405775 96.493892) + (xy 142.405554 96.494113) + (xy 142.405405 96.494204) + (xy 142.404504 96.495163) + (xy 142.402292 96.497375) + (xy 142.401509 96.496592) + (xy 142.400362 96.497296) + (xy 142.401721 96.498496) + (xy 142.395002 96.506104) + (xy 142.389018 96.512879) + (xy 142.386939 96.517307) + (xy 142.338868 96.619695) + (xy 142.338867 96.619698) + (xy 142.336976 96.623726) + (xy 142.318136 96.744724) + (xy 132.879501 96.744724) + (xy 132.879501 94.781083) + (xy 138.148001 94.781083) + (xy 138.148333 94.785614) + (xy 138.157478 94.847743) + (xy 138.160326 94.85691) + (xy 138.207556 94.953105) + (xy 138.213484 94.961387) + (xy 138.289111 95.036883) + (xy 138.297406 95.042799) + (xy 138.393687 95.089863) + (xy 138.402851 95.092695) + (xy 138.464391 95.101672) + (xy 138.468904 95.102) + (xy 138.674069 95.102) + (xy 138.682859 95.098359) + (xy 138.6865 95.089569) + (xy 138.6865 95.089568) + (xy 138.8135 95.089568) + (xy 138.817141 95.098358) + (xy 138.825931 95.101999) + (xy 139.031083 95.101999) + (xy 139.035614 95.101667) + (xy 139.097743 95.092522) + (xy 139.10691 95.089674) + (xy 139.203105 95.042444) + (xy 139.211387 95.036516) + (xy 139.286883 94.960889) + (xy 139.292799 94.952594) + (xy 139.339863 94.856313) + (xy 139.342695 94.847149) + (xy 139.351672 94.785609) + (xy 139.352 94.781096) + (xy 139.352 94.600931) + (xy 139.348359 94.592141) + (xy 139.339569 94.5885) + (xy 138.825931 94.5885) + (xy 138.817141 94.592141) + (xy 138.8135 94.600931) + (xy 138.8135 95.089568) + (xy 138.6865 95.089568) + (xy 138.6865 94.600931) + (xy 138.682859 94.592141) + (xy 138.674069 94.5885) + (xy 138.160432 94.5885) + (xy 138.151642 94.592141) + (xy 138.148001 94.600931) + (xy 138.148001 94.781083) + (xy 132.879501 94.781083) + (xy 132.879501 94.465153) + (xy 132.880751 94.457814) + (xy 132.880024 94.457731) + (xy 132.880821 94.45074) + (xy 132.881408 94.449069) + (xy 138.148 94.449069) + (xy 138.151641 94.457859) + (xy 138.160431 94.4615) + (xy 138.674069 94.4615) + (xy 138.682859 94.457859) + (xy 138.6865 94.449069) + (xy 138.8135 94.449069) + (xy 138.817141 94.457859) + (xy 138.825931 94.4615) + (xy 139.339568 94.4615) + (xy 139.348358 94.457859) + (xy 139.351999 94.449069) + (xy 139.351999 94.268917) + (xy 139.351667 94.264386) + (xy 139.342522 94.202257) + (xy 139.339674 94.19309) + (xy 139.292444 94.096895) + (xy 139.286516 94.088613) + (xy 139.210889 94.013117) + (xy 139.202594 94.007201) + (xy 139.106313 93.960137) + (xy 139.097149 93.957305) + (xy 139.035609 93.948328) + (xy 139.031096 93.948) + (xy 138.825931 93.948) + (xy 138.817141 93.951641) + (xy 138.8135 93.960431) + (xy 138.8135 94.449069) + (xy 138.6865 94.449069) + (xy 138.6865 93.960432) + (xy 138.682859 93.951642) + (xy 138.674069 93.948001) + (xy 138.468917 93.948001) + (xy 138.464386 93.948333) + (xy 138.402257 93.957478) + (xy 138.39309 93.960326) + (xy 138.296895 94.007556) + (xy 138.288613 94.013484) + (xy 138.213117 94.089111) + (xy 138.207201 94.097406) + (xy 138.160137 94.193687) + (xy 138.157305 94.202851) + (xy 138.148328 94.264391) + (xy 138.148 94.268904) + (xy 138.148 94.449069) + (xy 132.881408 94.449069) + (xy 132.883153 94.444099) + (xy 132.880977 94.424539) + (xy 132.879884 94.414721) + (xy 132.879501 94.407809) + (xy 132.879501 94.400388) + (xy 132.878626 94.39655) + (xy 132.877924 94.393473) + (xy 132.876743 94.38649) + (xy 132.874294 94.364483) + (xy 132.873516 94.357492) + (xy 132.869783 94.351529) + (xy 132.868413 94.347596) + (xy 132.866599 94.343826) + (xy 132.865033 94.336962) + (xy 132.846855 94.31415) + (xy 132.842761 94.308367) + (xy 132.840785 94.305211) + (xy 132.84078 94.305205) + (xy 132.838905 94.30221) + (xy 132.833692 94.296997) + (xy 132.829007 94.291753) + (xy 132.815113 94.274317) + (xy 132.815112 94.274317) + (xy 132.810726 94.268812) + (xy 132.804387 94.265754) + (xy 132.798886 94.261363) + (xy 132.799312 94.260829) + (xy 132.793148 94.256453) + (xy 132.364685 93.82799) + (xy 132.346379 93.783796) + (xy 132.362542 93.741854) + (xy 132.405591 93.694293) + (xy 132.408579 93.690992) + (xy 132.461972 93.58079) + (xy 132.463042 93.574433) + (xy 132.479226 93.47823) + (xy 132.482288 93.460031) + (xy 132.482417 93.449479) + (xy 132.465057 93.32826) + (xy 132.414373 93.216786) + (xy 132.39972 93.199781) + (xy 132.398229 93.196854) + (xy 132.392421 93.191046) + (xy 132.389267 93.187649) + (xy 132.359062 93.152594) + (xy 132.334439 93.124018) + (xy 132.314262 93.11094) + (xy 132.310676 93.108038) + (xy 132.310602 93.10814) + (xy 132.306627 93.105252) + (xy 132.303146 93.101771) + (xy 132.291864 93.096022) + (xy 132.286257 93.092788) + (xy 132.281745 93.089863) + (xy 132.269437 93.081886) + (xy 132.235414 93.059833) + (xy 132.235411 93.059832) + (xy 132.231681 93.057414) + (xy 132.227422 93.05614) + (xy 132.227419 93.056139) + (xy 132.202616 93.048722) + (xy 132.19936 93.047748) + (xy 132.188898 93.043558) + (xy 132.183334 93.040723) + (xy 132.171588 93.038863) + (xy 132.163472 93.037015) + (xy 132.163031 93.036883) + (xy 132.114359 93.022327) + (xy 132.070017 93.022056) + (xy 132.060624 93.021288) + (xy 132.055378 93.020457) + (xy 132.055377 93.020457) + (xy 132.050521 93.019688) + (xy 132.041894 93.021055) + (xy 132.031741 93.021823) + (xy 132.013357 93.02171) + (xy 131.996359 93.021606) + (xy 131.996357 93.021606) + (xy 131.991906 93.021579) + (xy 131.937532 93.03712) + (xy 131.930144 93.038754) + (xy 131.917708 93.040723) + (xy 131.913325 93.042956) + (xy 131.912391 93.04326) + (xy 131.902677 93.047082) + (xy 131.900363 93.047743) + (xy 131.87845 93.054005) + (xy 131.878448 93.054006) + (xy 131.874165 93.05523) + (xy 131.81464 93.092788) + (xy 131.81334 93.093608) + (xy 131.808363 93.096438) + (xy 131.802278 93.099538) + (xy 131.802277 93.099539) + (xy 131.797896 93.101771) + (xy 131.794418 93.105249) + (xy 131.792966 93.106304) + (xy 131.789579 93.108599) + (xy 131.770601 93.120574) + (xy 131.767658 93.123906) + (xy 131.767656 93.123908) + (xy 131.707677 93.191821) + (xy 131.706553 93.193017) + (xy 131.706296 93.193371) + (xy 131.706075 93.193592) + (xy 131.705926 93.193683) + (xy 131.705025 93.194642) + (xy 131.702813 93.196854) + (xy 131.70203 93.196071) + (xy 131.700883 93.196775) + (xy 131.702242 93.197975) + (xy 131.689539 93.212358) + (xy 131.687648 93.216386) + (xy 131.639389 93.319174) + (xy 131.639388 93.319177) + (xy 131.637497 93.323205) + (xy 131.618657 93.444203) + (xy 131.619234 93.448616) + (xy 131.619234 93.448617) + (xy 131.634535 93.565624) + (xy 131.632604 93.565877) + (xy 131.627662 93.606725) + (xy 131.590019 93.636242) + (xy 131.555302 93.635925) + (xy 131.535608 93.630035) + (xy 131.513317 93.623369) + (xy 131.468975 93.623098) + (xy 131.459582 93.62233) + (xy 131.454336 93.621499) + (xy 131.454335 93.621499) + (xy 131.449479 93.62073) + (xy 131.440852 93.622097) + (xy 131.430699 93.622865) + (xy 131.412315 93.622752) + (xy 131.395317 93.622648) + (xy 131.395315 93.622648) + (xy 131.390864 93.622621) + (xy 131.33649 93.638162) + (xy 131.329102 93.639796) + (xy 131.316666 93.641765) + (xy 131.312283 93.643998) + (xy 131.311349 93.644302) + (xy 131.301634 93.648124) + (xy 131.277408 93.655047) + (xy 131.277406 93.655048) + (xy 131.273123 93.656272) + (xy 131.269354 93.65865) + (xy 131.253101 93.668905) + (xy 131.218096 93.690992) + (xy 131.212298 93.69465) + (xy 131.207324 93.697478) + (xy 131.206638 93.697828) + (xy 131.201236 93.70058) + (xy 131.201235 93.700581) + (xy 131.196854 93.702813) + (xy 131.193376 93.706291) + (xy 131.191924 93.707346) + (xy 131.188537 93.709641) + (xy 131.169559 93.721616) + (xy 131.166616 93.724948) + (xy 131.166614 93.72495) + (xy 131.106635 93.792863) + (xy 131.105511 93.794059) + (xy 131.105253 93.794414) + (xy 131.105033 93.794634) + (xy 131.104884 93.794725) + (xy 131.103983 93.795684) + (xy 131.101771 93.797896) + (xy 131.100988 93.797113) + (xy 131.099841 93.797817) + (xy 131.1012 93.799017) + (xy 131.088497 93.8134) + (xy 131.086606 93.817428) + (xy 131.038347 93.920216) + (xy 131.038346 93.920219) + (xy 131.036455 93.924247) + (xy 131.017615 94.045245) + (xy 131.018192 94.049658) + (xy 131.018192 94.049659) + (xy 131.019242 94.057688) + (xy 131.033493 94.166666) + (xy 131.040664 94.182964) + (xy 131.040723 94.183334) + (xy 131.041486 94.184832) + (xy 131.04351 94.189431) + (xy 131.04351 94.189432) + (xy 131.078439 94.268812) + (xy 131.082812 94.278751) + (xy 131.093741 94.291753) + (xy 131.097508 94.296234) + (xy 131.099636 94.298955) + (xy 131.101771 94.303146) + (xy 131.10956 94.310935) + (xy 131.113209 94.314913) + (xy 131.151406 94.360354) + (xy 131.161606 94.372489) + (xy 131.184878 94.38798) + (xy 131.191315 94.393254) + (xy 131.193378 94.394753) + (xy 131.196854 94.398229) + (xy 131.201232 94.40046) + (xy 131.201235 94.400462) + (xy 131.208209 94.404015) + (xy 131.214456 94.407669) + (xy 131.263543 94.440344) + (xy 131.267792 94.441672) + (xy 131.267793 94.441672) + (xy 131.299775 94.451664) + (xy 131.309506 94.45563) + (xy 131.312278 94.457042) + (xy 131.312282 94.457043) + (xy 131.316666 94.459277) + (xy 131.327331 94.460966) + (xy 131.336192 94.463041) + (xy 131.376175 94.475533) + (xy 131.376178 94.475533) + (xy 131.380427 94.476861) + (xy 131.429548 94.477762) + (xy 131.438162 94.47852) + (xy 131.444619 94.479543) + (xy 131.444623 94.479543) + (xy 131.449479 94.480312) + (xy 131.456426 94.479211) + (xy 131.467332 94.478454) + (xy 131.502862 94.479105) + (xy 131.563011 94.462706) + (xy 131.569669 94.461276) + (xy 131.573344 94.460694) + (xy 131.582292 94.459277) + (xy 131.586675 94.457043) + (xy 131.591354 94.455523) + (xy 131.591357 94.455531) + (xy 131.596206 94.453657) + (xy 131.621006 94.446896) + (xy 131.625562 94.444099) + (xy 131.689188 94.405032) + (xy 131.693516 94.402606) + (xy 131.697719 94.400465) + (xy 131.697727 94.400459) + (xy 131.702104 94.398229) + (xy 131.704906 94.395427) + (xy 131.705743 94.394867) + (xy 131.72536 94.382822) + (xy 131.738655 94.368133) + (xy 131.781882 94.347652) + (xy 131.829186 94.365881) + (xy 132.102193 94.638888) + (xy 132.120499 94.683082) + (xy 132.120499 97.615667) + (xy 132.102193 97.659861) + (xy 132.057999 97.678167) + (xy 132.024004 97.668113) + (xy 132.01374 97.66146) + (xy 132.010155 97.658559) + (xy 132.010081 97.658661) + (xy 132.006106 97.655773) + (xy 132.002625 97.652292) + (xy 131.991343 97.646543) + (xy 131.985736 97.643309) + (xy 131.934893 97.610354) + (xy 131.93489 97.610353) + (xy 131.93116 97.607935) + (xy 131.926901 97.606661) + (xy 131.926898 97.60666) + (xy 131.908345 97.601112) + (xy 131.898839 97.598269) + (xy 131.888377 97.594079) + (xy 131.882813 97.591244) + (xy 131.871067 97.589384) + (xy 131.862951 97.587536) + (xy 131.847369 97.582876) + (xy 131.813838 97.572848) + (xy 131.769496 97.572577) + (xy 131.760103 97.571809) + (xy 131.754857 97.570978) + (xy 131.754856 97.570978) + (xy 131.75 97.570209) + (xy 131.741373 97.571576) + (xy 131.73122 97.572344) + (xy 131.712836 97.572231) + (xy 131.695838 97.572127) + (xy 131.695836 97.572127) + (xy 131.691385 97.5721) + (xy 131.637011 97.587641) + (xy 131.629623 97.589275) + (xy 131.617187 97.591244) + (xy 131.612804 97.593477) + (xy 131.61187 97.593781) + (xy 131.602155 97.597603) + (xy 131.577929 97.604526) + (xy 131.577927 97.604527) + (xy 131.573644 97.605751) + (xy 131.514119 97.643309) + (xy 131.512819 97.644129) + (xy 131.507842 97.646959) + (xy 131.501757 97.650059) + (xy 131.501756 97.65006) + (xy 131.497375 97.652292) + (xy 131.493897 97.65577) + (xy 131.492445 97.656825) + (xy 131.489058 97.65912) + (xy 131.47008 97.671095) + (xy 131.467137 97.674427) + (xy 131.467135 97.674429) + (xy 131.407156 97.742342) + (xy 131.406032 97.743538) + (xy 131.405774 97.743893) + (xy 131.405554 97.744113) + (xy 131.405405 97.744204) + (xy 131.404504 97.745163) + (xy 131.402292 97.747375) + (xy 131.401509 97.746592) + (xy 131.400362 97.747296) + (xy 131.401721 97.748496) + (xy 131.389018 97.762879) + (xy 131.387127 97.766906) + (xy 131.387126 97.766908) + (xy 131.384237 97.773062) + (xy 131.348884 97.805287) + (xy 131.327662 97.809) + (xy 131.105003 97.809) + (xy 131.060809 97.790694) + (xy 130.415628 97.145513) + (xy 130.411323 97.139439) + (xy 130.41075 97.139895) + (xy 130.406369 97.134387) + (xy 130.403322 97.128042) + (xy 130.380239 97.109582) + (xy 130.37508 97.104965) + (xy 130.369831 97.099716) + (xy 130.363828 97.095943) + (xy 130.358052 97.091838) + (xy 130.335267 97.073617) + (xy 130.328407 97.07204) + (xy 130.324647 97.070222) + (xy 130.320711 97.068844) + (xy 130.314752 97.065098) + (xy 130.307758 97.064307) + (xy 130.307757 97.064307) + (xy 130.285764 97.061821) + (xy 130.278787 97.060629) + (xy 130.271703 97.059) + (xy 130.264329 97.059) + (xy 130.257308 97.058604) + (xy 130.255627 97.058414) + (xy 130.228162 97.055309) + (xy 130.221517 97.05763) + (xy 130.214523 97.058414) + (xy 130.214447 97.057736) + (xy 130.206995 97.059) + (xy 129.293234 97.059) + (xy 129.285893 97.057747) + (xy 129.28581 97.058476) + (xy 129.278819 97.057679) + (xy 129.272178 97.055347) + (xy 129.265186 97.056125) + (xy 129.265184 97.056125) + (xy 129.245664 97.058298) + (xy 129.242912 97.058604) + (xy 129.242795 97.058617) + (xy 129.235882 97.059) + (xy 129.228467 97.059) + (xy 129.221538 97.06058) + (xy 129.214595 97.061755) + (xy 129.185572 97.064985) + (xy 129.179606 97.06872) + (xy 129.175667 97.070092) + (xy 129.171904 97.071903) + (xy 129.165041 97.073468) + (xy 129.147488 97.087456) + (xy 129.142227 97.091648) + (xy 129.136441 97.095744) + (xy 129.133285 97.09772) + (xy 129.130289 97.099596) + (xy 129.125076 97.104809) + (xy 129.119832 97.109494) + (xy 129.109689 97.117577) + (xy 129.096891 97.127775) + (xy 129.093833 97.134114) + (xy 129.089442 97.139615) + (xy 129.088908 97.139189) + (xy 129.084532 97.145353) + (xy 126.939191 99.290694) + (xy 126.894997 99.309) + (xy 125.173049 99.309) + (xy 125.128855 99.290694) + (xy 125.116156 99.272373) + (xy 125.115695 99.27136) + (xy 125.115694 99.271359) + (xy 125.113852 99.267307) + (xy 125.099199 99.250302) + (xy 125.097708 99.247375) + (xy 125.0919 99.241567) + (xy 125.088746 99.23817) + (xy 125.036826 99.177914) + (xy 125.033918 99.174539) + (xy 125.013741 99.161461) + (xy 125.010155 99.158559) + (xy 125.010081 99.158661) + (xy 125.006106 99.155773) + (xy 125.002625 99.152292) + (xy 124.991343 99.146543) + (xy 124.985736 99.143309) + (xy 124.985399 99.14309) + (xy 124.963322 99.128781) + (xy 124.934893 99.110354) + (xy 124.93489 99.110353) + (xy 124.93116 99.107935) + (xy 124.926901 99.106661) + (xy 124.926898 99.10666) + (xy 124.908345 99.101112) + (xy 124.898839 99.098269) + (xy 124.888377 99.094079) + (xy 124.882813 99.091244) + (xy 124.871067 99.089384) + (xy 124.862951 99.087536) + (xy 124.813838 99.072848) + (xy 124.769496 99.072577) + (xy 124.760103 99.071809) + (xy 124.754857 99.070978) + (xy 124.754856 99.070978) + (xy 124.75 99.070209) + (xy 124.741373 99.071576) + (xy 124.73122 99.072344) + (xy 124.712836 99.072231) + (xy 124.695838 99.072127) + (xy 124.695836 99.072127) + (xy 124.691385 99.0721) + (xy 124.637011 99.087641) + (xy 124.629623 99.089275) + (xy 124.617187 99.091244) + (xy 124.612804 99.093477) + (xy 124.61187 99.093781) + (xy 124.602155 99.097603) + (xy 124.577929 99.104526) + (xy 124.577927 99.104527) + (xy 124.573644 99.105751) + (xy 124.51352 99.143687) + (xy 124.512819 99.144129) + (xy 124.507842 99.146959) + (xy 124.501757 99.150059) + (xy 124.501756 99.15006) + (xy 124.497375 99.152292) + (xy 124.493897 99.15577) + (xy 124.492445 99.156825) + (xy 124.489058 99.15912) + (xy 124.47008 99.171095) + (xy 124.467137 99.174427) + (xy 124.467135 99.174429) + (xy 124.407156 99.242342) + (xy 124.406032 99.243538) + (xy 124.405775 99.243892) + (xy 124.405554 99.244113) + (xy 124.405405 99.244204) + (xy 124.404504 99.245163) + (xy 124.402292 99.247375) + (xy 124.401509 99.246592) + (xy 124.400362 99.247296) + (xy 124.401721 99.248496) + (xy 124.389018 99.262879) + (xy 124.387127 99.266907) + (xy 124.338868 99.369695) + (xy 124.338867 99.369698) + (xy 124.336976 99.373726) + (xy 124.318136 99.494724) + (xy 119.691 99.494724) + (xy 119.691 98.169384) + (xy 119.709306 98.12519) + (xy 119.720797 98.116123) + (xy 119.739712 98.104509) + (xy 119.744034 98.102085) + (xy 119.752625 98.097708) + (xy 119.755427 98.094906) + (xy 119.756264 98.094346) + (xy 119.758891 98.092733) + (xy 119.775881 98.082301) + (xy 119.858058 97.991513) + (xy 119.911451 97.881311) + (xy 119.913317 97.870224) + (xy 119.929662 97.773062) + (xy 119.931767 97.760552) + (xy 119.931896 97.75) + (xy 119.914536 97.628781) + (xy 119.863852 97.517307) + (xy 119.849199 97.500302) + (xy 119.847708 97.497375) + (xy 119.8419 97.491567) + (xy 119.838746 97.48817) + (xy 119.786826 97.427914) + (xy 119.783918 97.424539) + (xy 119.763741 97.411461) + (xy 119.760155 97.408559) + (xy 119.760081 97.408661) + (xy 119.756106 97.405773) + (xy 119.752625 97.402292) + (xy 119.741343 97.396543) + (xy 119.735736 97.393309) + (xy 119.722686 97.38485) + (xy 119.70056 97.370509) + (xy 119.684893 97.360354) + (xy 119.68489 97.360353) + (xy 119.68116 97.357935) + (xy 119.676901 97.356661) + (xy 119.676898 97.35666) + (xy 119.658345 97.351112) + (xy 119.648839 97.348269) + (xy 119.638377 97.344079) + (xy 119.632813 97.341244) + (xy 119.621067 97.339384) + (xy 119.612951 97.337536) + (xy 119.563838 97.322848) + (xy 119.519496 97.322577) + (xy 119.510103 97.321809) + (xy 119.504857 97.320978) + (xy 119.504856 97.320978) + (xy 119.5 97.320209) + (xy 119.491373 97.321576) + (xy 119.48122 97.322344) + (xy 119.462836 97.322231) + (xy 119.445838 97.322127) + (xy 119.445836 97.322127) + (xy 119.441385 97.3221) + (xy 119.387011 97.337641) + (xy 119.379623 97.339275) + (xy 119.367187 97.341244) + (xy 119.362804 97.343477) + (xy 119.36187 97.343781) + (xy 119.352155 97.347603) + (xy 119.327929 97.354526) + (xy 119.327927 97.354527) + (xy 119.323644 97.355751) + (xy 119.264119 97.393309) + (xy 119.262819 97.394129) + (xy 119.257842 97.396959) + (xy 119.251757 97.400059) + (xy 119.251756 97.40006) + (xy 119.247375 97.402292) + (xy 119.243897 97.40577) + (xy 119.242445 97.406825) + (xy 119.239058 97.40912) + (xy 119.22008 97.421095) + (xy 119.217137 97.424427) + (xy 119.217135 97.424429) + (xy 119.157156 97.492342) + (xy 119.156032 97.493538) + (xy 119.155775 97.493892) + (xy 119.155554 97.494113) + (xy 119.155405 97.494204) + (xy 119.154504 97.495163) + (xy 119.152292 97.497375) + (xy 119.151509 97.496592) + (xy 119.150362 97.497296) + (xy 119.151721 97.498496) + (xy 119.139018 97.512879) + (xy 119.137127 97.516907) + (xy 119.088868 97.619695) + (xy 119.088867 97.619698) + (xy 119.086976 97.623726) + (xy 119.068136 97.744724) + (xy 119.068713 97.749137) + (xy 119.068713 97.749138) + (xy 119.083247 97.860283) + (xy 119.084014 97.866145) + (xy 119.091185 97.882443) + (xy 119.091244 97.882813) + (xy 119.092007 97.884311) + (xy 119.133333 97.97823) + (xy 119.144775 97.991842) + (xy 119.148029 97.995713) + (xy 119.150157 97.998434) + (xy 119.152292 98.002625) + (xy 119.160081 98.010414) + (xy 119.163729 98.014391) + (xy 119.212127 98.071968) + (xy 119.235399 98.087459) + (xy 119.241836 98.092733) + (xy 119.243899 98.094232) + (xy 119.247375 98.097708) + (xy 119.251753 98.099939) + (xy 119.251756 98.099941) + (xy 119.25873 98.103494) + (xy 119.264983 98.107152) + (xy 119.27846 98.116123) + (xy 119.281134 98.117903) + (xy 119.307778 98.157631) + (xy 119.309 98.169929) + (xy 119.309 102.580525) + (xy 119.290694 102.624719) + (xy 119.279855 102.63338) + (xy 119.26281 102.644135) + (xy 119.257842 102.646959) + (xy 119.251757 102.650059) + (xy 119.251756 102.65006) + (xy 119.247375 102.652292) + (xy 119.243897 102.65577) + (xy 119.242445 102.656825) + (xy 119.239058 102.65912) + (xy 119.22008 102.671095) + (xy 119.217137 102.674427) + (xy 119.217135 102.674429) + (xy 119.157156 102.742342) + (xy 119.156032 102.743538) + (xy 119.155775 102.743892) + (xy 119.155554 102.744113) + (xy 119.155405 102.744204) + (xy 119.154504 102.745163) + (xy 119.152292 102.747375) + (xy 119.151509 102.746592) + (xy 119.150362 102.747296) + (xy 119.151721 102.748496) + (xy 119.139018 102.762879) + (xy 119.137127 102.766906) + (xy 119.137126 102.766908) + (xy 119.134237 102.773062) + (xy 119.098884 102.805287) + (xy 119.077662 102.809) + (xy 119.043234 102.809) + (xy 119.035893 102.807747) + (xy 119.03581 102.808476) + (xy 119.028819 102.807679) + (xy 119.022178 102.805347) + (xy 119.015185 102.806125) + (xy 119.015184 102.806125) + (xy 118.992794 102.808617) + (xy 118.985881 102.809) + (xy 118.978467 102.809) + (xy 118.971544 102.810579) + (xy 118.964591 102.811755) + (xy 118.935571 102.814985) + (xy 118.929607 102.818719) + (xy 118.92567 102.82009) + (xy 118.921904 102.821903) + (xy 118.915041 102.823468) + (xy 118.909535 102.827855) + (xy 118.909536 102.827855) + (xy 118.892229 102.841646) + (xy 118.886446 102.84574) + (xy 118.88329 102.847716) + (xy 118.883284 102.847721) + (xy 118.880289 102.849596) + (xy 118.875076 102.854809) + (xy 118.869832 102.859494) + (xy 118.846891 102.877775) + (xy 118.843833 102.884114) + (xy 118.839442 102.889615) + (xy 118.838908 102.889189) + (xy 118.834532 102.895353) + (xy 118.395513 103.334372) + (xy 118.389439 103.338677) + (xy 118.389895 103.33925) + (xy 118.384387 103.343631) + (xy 118.378042 103.346678) + (xy 118.373646 103.352175) + (xy 118.359582 103.369761) + (xy 118.354965 103.37492) + (xy 118.349716 103.380169) + (xy 118.347847 103.383143) + (xy 118.345943 103.386172) + (xy 118.341838 103.391948) + (xy 118.323617 103.414733) + (xy 118.32204 103.421593) + (xy 118.320222 103.425353) + (xy 118.318844 103.429289) + (xy 118.315098 103.435248) + (xy 118.314307 103.442242) + (xy 118.314307 103.442243) + (xy 118.311821 103.464236) + (xy 118.310629 103.471213) + (xy 118.309 103.478297) + (xy 118.309 103.485671) + (xy 118.308604 103.492692) + (xy 118.305309 103.521838) + (xy 99.3 103.521838) + (xy 99.3 103.3625) + (xy 99.318306 103.318306) + (xy 99.3625 103.3) + (xy 100.594123 103.3) + (xy 100.638411 103.300039) + (xy 100.638412 103.300039) + (xy 100.645449 103.300045) + (xy 100.651794 103.296998) + (xy 100.651795 103.296998) + (xy 100.660034 103.293042) + (xy 100.673188 103.288448) + (xy 100.673776 103.288314) + (xy 100.688962 103.28485) + (xy 100.701435 103.274911) + (xy 100.713329 103.26745) + (xy 100.727705 103.260547) + (xy 100.732102 103.255049) + (xy 100.737813 103.247908) + (xy 100.747673 103.238065) + (xy 100.760323 103.227985) + (xy 100.76338 103.221648) + (xy 100.763382 103.221645) + (xy 100.767251 103.213622) + (xy 100.774735 103.201738) + (xy 100.780298 103.194782) + (xy 100.784694 103.189285) + (xy 100.786271 103.182428) + (xy 100.786273 103.182423) + (xy 100.788322 103.173511) + (xy 100.792938 103.160366) + (xy 100.792957 103.160326) + (xy 100.799965 103.145798) + (xy 100.799985 103.122799) + (xy 100.799986 103.122783) + (xy 100.8 103.122723) + (xy 100.8 103.105877) + (xy 100.800045 103.054551) + (xy 100.800007 103.054472) + (xy 100.8 103.054407) + (xy 100.8 100.3625) + (xy 100.818306 100.318306) + (xy 100.8625 100.3) + (xy 103.094123 100.3) + (xy 103.138411 100.300039) + (xy 103.138412 100.300039) + (xy 103.145449 100.300045) + (xy 103.151794 100.296998) + (xy 103.151795 100.296998) + (xy 103.160034 100.293042) + (xy 103.173188 100.288448) + (xy 103.173776 100.288314) + (xy 103.188962 100.28485) + (xy 103.201435 100.274911) + (xy 103.213329 100.26745) + (xy 103.227705 100.260547) + (xy 103.236829 100.249138) + (xy 103.237813 100.247908) + (xy 103.247673 100.238065) + (xy 103.260323 100.227985) + (xy 103.26338 100.221648) + (xy 103.263382 100.221645) + (xy 103.267251 100.213622) + (xy 103.274735 100.201738) + (xy 103.280298 100.194782) + (xy 103.284694 100.189285) + (xy 103.286271 100.182428) + (xy 103.286273 100.182423) + (xy 103.288322 100.173511) + (xy 103.292938 100.160366) + (xy 103.299965 100.145798) + (xy 103.299985 100.122799) + (xy 103.299986 100.122783) + (xy 103.3 100.122723) + (xy 103.3 100.105877) + (xy 103.300012 100.091835) + (xy 103.300045 100.054808) + (xy 103.300045 100.054551) + (xy 103.300007 100.054472) + (xy 103.3 100.054407) + (xy 103.3 98.605877) + (xy 103.300039 98.561589) + (xy 103.300039 98.561588) + (xy 103.300045 98.554551) + (xy 103.296998 98.548205) + (xy 103.293042 98.539966) + (xy 103.288448 98.526812) + (xy 103.286415 98.517901) + (xy 103.28485 98.511038) + (xy 103.276054 98.5) + (xy 103.274911 98.498565) + (xy 103.26745 98.486671) + (xy 103.263593 98.478639) + (xy 103.260547 98.472295) + (xy 103.255049 98.467898) + (xy 103.247908 98.462187) + (xy 103.238065 98.452327) + (xy 103.227985 98.439677) + (xy 103.221648 98.43662) + (xy 103.221645 98.436618) + (xy 103.213622 98.432749) + (xy 103.201738 98.425265) + (xy 103.194782 98.419702) + (xy 103.189285 98.415306) + (xy 103.182428 98.413729) + (xy 103.182423 98.413727) + (xy 103.173511 98.411678) + (xy 103.160366 98.407062) + (xy 103.145798 98.400035) + (xy 103.124114 98.400016) + (xy 103.122799 98.400015) + (xy 103.122783 98.400014) + (xy 103.122723 98.4) + (xy 103.105877 98.4) + (xy 103.054808 98.399955) + (xy 103.054551 98.399955) + (xy 103.054472 98.399993) + (xy 103.054407 98.4) + (xy 99.3625 98.4) + (xy 99.318306 98.381694) + (xy 99.3 98.3375) + (xy 99.3 96.893415) + (xy 99.626392 96.893415) + (xy 99.635958 96.984436) + (xy 99.637447 96.991207) + (xy 99.691375 97.149618) + (xy 99.694331 97.1559) + (xy 99.782009 97.298417) + (xy 99.786289 97.303896) + (xy 99.903359 97.423443) + (xy 99.908745 97.427836) + (xy 100.049396 97.51848) + (xy 100.055613 97.521566) + (xy 100.212854 97.578798) + (xy 100.219607 97.580431) + (xy 100.348804 97.596753) + (xy 100.352734 97.597) + (xy 100.974069 97.597) + (xy 100.982859 97.593359) + (xy 100.9865 97.584569) + (xy 101.1135 97.584569) + (xy 101.117141 97.593359) + (xy 101.125931 97.597) + (xy 101.742089 97.597) + (xy 101.745567 97.596806) + (xy 101.86976 97.582876) + (xy 101.876538 97.581335) + (xy 102.034549 97.526309) + (xy 102.040822 97.523304) + (xy 102.182721 97.434636) + (xy 102.188167 97.430319) + (xy 102.306902 97.312411) + (xy 102.311248 97.307006) + (xy 102.400913 97.165716) + (xy 102.403952 97.159484) + (xy 102.460085 97.001844) + (xy 102.461672 96.995076) + (xy 102.473505 96.895844) + (xy 102.472822 96.893415) + (xy 103.601392 96.893415) + (xy 103.610958 96.984436) + (xy 103.612447 96.991207) + (xy 103.666375 97.149618) + (xy 103.669331 97.1559) + (xy 103.757009 97.298417) + (xy 103.761289 97.303896) + (xy 103.878359 97.423443) + (xy 103.883745 97.427836) + (xy 104.024396 97.51848) + (xy 104.030613 97.521566) + (xy 104.187854 97.578798) + (xy 104.194607 97.580431) + (xy 104.323804 97.596753) + (xy 104.327734 97.597) + (xy 104.799069 97.597) + (xy 104.807859 97.593359) + (xy 104.8115 97.584569) + (xy 104.9385 97.584569) + (xy 104.942141 97.593359) + (xy 104.950931 97.597) + (xy 105.417089 97.597) + (xy 105.420567 97.596806) + (xy 105.54476 97.582876) + (xy 105.551538 97.581335) + (xy 105.709549 97.526309) + (xy 105.715822 97.523304) + (xy 105.857721 97.434636) + (xy 105.863167 97.430319) + (xy 105.981902 97.312411) + (xy 105.986248 97.307006) + (xy 106.075913 97.165716) + (xy 106.078952 97.159484) + (xy 106.135085 97.001844) + (xy 106.136672 96.995076) + (xy 106.148505 96.895844) + (xy 106.145931 96.886685) + (xy 106.140255 96.8835) + (xy 104.950931 96.8835) + (xy 104.942141 96.887141) + (xy 104.9385 96.895931) + (xy 104.9385 97.584569) + (xy 104.8115 97.584569) + (xy 104.8115 96.895931) + (xy 104.807859 96.887141) + (xy 104.799069 96.8835) + (xy 103.612781 96.8835) + (xy 103.603991 96.887141) + (xy 103.601392 96.893415) + (xy 102.472822 96.893415) + (xy 102.470931 96.886685) + (xy 102.465255 96.8835) + (xy 101.125931 96.8835) + (xy 101.117141 96.887141) + (xy 101.1135 96.895931) + (xy 101.1135 97.584569) + (xy 100.9865 97.584569) + (xy 100.9865 96.895931) + (xy 100.982859 96.887141) + (xy 100.974069 96.8835) + (xy 99.637781 96.8835) + (xy 99.628991 96.887141) + (xy 99.626392 96.893415) + (xy 99.3 96.893415) + (xy 99.3 96.744156) + (xy 99.626495 96.744156) + (xy 99.629069 96.753315) + (xy 99.634745 96.7565) + (xy 100.974069 96.7565) + (xy 100.982859 96.752859) + (xy 100.9865 96.744069) + (xy 101.1135 96.744069) + (xy 101.117141 96.752859) + (xy 101.125931 96.7565) + (xy 102.462219 96.7565) + (xy 102.471009 96.752859) + (xy 102.473608 96.746585) + (xy 102.464042 96.655564) + (xy 102.462553 96.648793) + (xy 102.408625 96.490382) + (xy 102.405669 96.4841) + (xy 102.317991 96.341583) + (xy 102.313711 96.336104) + (xy 102.196641 96.216557) + (xy 102.191255 96.212164) + (xy 102.050604 96.12152) + (xy 102.044387 96.118434) + (xy 101.887146 96.061202) + (xy 101.880393 96.059569) + (xy 101.751196 96.043247) + (xy 101.747266 96.043) + (xy 101.125931 96.043) + (xy 101.117141 96.046641) + (xy 101.1135 96.055431) + (xy 101.1135 96.744069) + (xy 100.9865 96.744069) + (xy 100.9865 96.055431) + (xy 100.982859 96.046641) + (xy 100.974069 96.043) + (xy 100.357911 96.043) + (xy 100.354433 96.043194) + (xy 100.23024 96.057124) + (xy 100.223462 96.058665) + (xy 100.065451 96.113691) + (xy 100.059178 96.116696) + (xy 99.917279 96.205364) + (xy 99.911833 96.209681) + (xy 99.793098 96.327589) + (xy 99.788752 96.332994) + (xy 99.699087 96.474284) + (xy 99.696048 96.480516) + (xy 99.639915 96.638156) + (xy 99.638328 96.644924) + (xy 99.626495 96.744156) + (xy 99.3 96.744156) + (xy 99.3 95.663057) + (xy 103.5955 95.663057) + (xy 103.610905 95.775518) + (xy 103.612597 95.779429) + (xy 103.612598 95.779431) + (xy 103.616787 95.789111) + (xy 103.671242 95.914946) + (xy 103.76685 96.033013) + (xy 103.77032 96.035479) + (xy 103.770322 96.035481) + (xy 103.879981 96.113412) + (xy 103.905401 96.153934) + (xy 103.894721 96.200562) + (xy 103.887815 96.208705) + (xy 103.768102 96.327584) + (xy 103.763752 96.332994) + (xy 103.674087 96.474284) + (xy 103.671048 96.480516) + (xy 103.614915 96.638156) + (xy 103.613328 96.644924) + (xy 103.601495 96.744156) + (xy 103.604069 96.753315) + (xy 103.609745 96.7565) + (xy 104.799069 96.7565) + (xy 104.807859 96.752859) + (xy 104.8115 96.744069) + (xy 104.9385 96.744069) + (xy 104.942141 96.752859) + (xy 104.950931 96.7565) + (xy 106.137219 96.7565) + (xy 106.146009 96.752859) + (xy 106.148608 96.746585) + (xy 106.139042 96.655564) + (xy 106.137553 96.648793) + (xy 106.083625 96.490382) + (xy 106.080669 96.4841) + (xy 105.992991 96.341583) + (xy 105.988711 96.336104) + (xy 105.871641 96.216557) + (xy 105.866255 96.212164) + (xy 105.725604 96.12152) + (xy 105.719387 96.118434) + (xy 105.562146 96.061202) + (xy 105.555393 96.059569) + (xy 105.426196 96.043247) + (xy 105.422266 96.043) + (xy 104.950931 96.043) + (xy 104.942141 96.046641) + (xy 104.9385 96.055431) + (xy 104.9385 96.744069) + (xy 104.8115 96.744069) + (xy 104.8115 96.055431) + (xy 104.807859 96.046641) + (xy 104.799069 96.043) + (xy 104.655595 96.043) + (xy 104.611401 96.024694) + (xy 104.593095 95.9805) + (xy 104.602477 95.947565) + (xy 104.659076 95.856281) + (xy 104.659078 95.856278) + (xy 104.661323 95.852656) + (xy 104.703709 95.706765) + (xy 104.7045 95.695993) + (xy 104.7045 95.336943) + (xy 104.689095 95.224482) + (xy 104.628758 95.085054) + (xy 104.53315 94.966987) + (xy 104.52968 94.964521) + (xy 104.529678 94.964519) + (xy 104.416814 94.884311) + (xy 104.409313 94.87898) + (xy 104.324246 94.848354) + (xy 104.27038 94.828961) + (xy 104.270378 94.828961) + (xy 104.266371 94.827518) + (xy 104.244083 94.825881) + (xy 104.119107 94.816703) + (xy 104.119105 94.816703) + (xy 104.114855 94.816391) + (xy 104.029985 94.833504) + (xy 103.970103 94.845578) + (xy 103.9701 94.845579) + (xy 103.965929 94.84642) + (xy 103.830564 94.915392) + (xy 103.827429 94.918275) + (xy 103.726712 95.01089) + (xy 103.718734 95.018226) + (xy 103.716489 95.021847) + (xy 103.716488 95.021848) + (xy 103.640924 95.143719) + (xy 103.640922 95.143722) + (xy 103.638677 95.147344) + (xy 103.637487 95.15144) + (xy 103.606393 95.258466) + (xy 103.596291 95.293235) + (xy 103.5955 95.304007) + (xy 103.5955 95.663057) + (xy 99.3 95.663057) + (xy 99.3 94.23178) + (xy 105.613655 94.23178) + (xy 105.614262 94.23691) + (xy 105.614262 94.236912) + (xy 105.618067 94.269059) + (xy 105.6185 94.276405) + (xy 105.6185 94.281692) + (xy 105.621936 94.302336) + (xy 105.622345 94.305211) + (xy 105.628582 94.357907) + (xy 105.630818 94.362563) + (xy 105.631933 94.366402) + (xy 105.63323 94.370191) + (xy 105.634078 94.375283) + (xy 105.636529 94.379826) + (xy 105.63653 94.379828) + (xy 105.659263 94.421958) + (xy 105.6606 94.424583) + (xy 105.68356 94.472398) + (xy 105.68717 94.476692) + (xy 105.687355 94.476877) + (xy 105.689944 94.479944) + (xy 105.691935 94.48251) + (xy 105.694388 94.487057) + (xy 105.698183 94.490565) + (xy 105.735109 94.524699) + (xy 105.736878 94.5264) + (xy 106.08153 94.871052) + (xy 106.094542 94.890073) + (xy 106.102556 94.908285) + (xy 106.128499 94.967243) + (xy 106.133333 94.97823) + (xy 106.145551 94.992765) + (xy 106.148029 94.995713) + (xy 106.150157 94.998434) + (xy 106.152292 95.002625) + (xy 106.160081 95.010414) + (xy 106.163729 95.014391) + (xy 106.166504 95.017692) + (xy 106.208987 95.068232) + (xy 106.212127 95.071968) + (xy 106.235399 95.087459) + (xy 106.241836 95.092733) + (xy 106.243899 95.094232) + (xy 106.247375 95.097708) + (xy 106.251753 95.099939) + (xy 106.251756 95.099941) + (xy 106.25873 95.103494) + (xy 106.264977 95.107148) + (xy 106.314064 95.139823) + (xy 106.318313 95.141151) + (xy 106.318314 95.141151) + (xy 106.350296 95.151143) + (xy 106.360027 95.155109) + (xy 106.362799 95.156521) + (xy 106.362803 95.156522) + (xy 106.367187 95.158756) + (xy 106.377852 95.160445) + (xy 106.386713 95.16252) + (xy 106.426696 95.175012) + (xy 106.426699 95.175012) + (xy 106.430948 95.17634) + (xy 106.480069 95.177241) + (xy 106.488683 95.177999) + (xy 106.49514 95.179022) + (xy 106.495144 95.179022) + (xy 106.5 95.179791) + (xy 106.506947 95.17869) + (xy 106.517853 95.177933) + (xy 106.553383 95.178584) + (xy 106.613532 95.162185) + (xy 106.62019 95.160755) + (xy 106.622147 95.160445) + (xy 106.632813 95.158756) + (xy 106.637196 95.156522) + (xy 106.641875 95.155002) + (xy 106.641878 95.15501) + (xy 106.646727 95.153136) + (xy 106.671527 95.146375) + (xy 106.739709 95.104511) + (xy 106.744037 95.102085) + (xy 106.74824 95.099944) + (xy 106.748248 95.099938) + (xy 106.752625 95.097708) + (xy 106.755427 95.094906) + (xy 106.756264 95.094346) + (xy 106.758953 95.092695) + (xy 106.775881 95.082301) + (xy 106.858058 94.991513) + (xy 106.911451 94.881311) + (xy 106.913219 94.870806) + (xy 106.927268 94.787296) + (xy 106.931767 94.760552) + (xy 106.931896 94.75) + (xy 106.914536 94.628781) + (xy 106.863852 94.517307) + (xy 106.849199 94.500302) + (xy 106.847708 94.497375) + (xy 106.8419 94.491567) + (xy 106.838746 94.48817) + (xy 106.810622 94.455531) + (xy 106.783918 94.424539) + (xy 106.763741 94.411461) + (xy 106.760155 94.408559) + (xy 106.760081 94.408661) + (xy 106.756106 94.405773) + (xy 106.752625 94.402292) + (xy 106.741343 94.396543) + (xy 106.735736 94.393309) + (xy 106.735652 94.393254) + (xy 106.718916 94.382407) + (xy 106.684893 94.360354) + (xy 106.68489 94.360353) + (xy 106.68116 94.357935) + (xy 106.676901 94.356661) + (xy 106.676898 94.35666) + (xy 106.658345 94.351112) + (xy 106.648839 94.348269) + (xy 106.638362 94.344072) + (xy 106.637445 94.343604) + (xy 106.621642 94.332119) + (xy 106.399806 94.110283) + (xy 106.3815 94.066089) + (xy 106.3815 91.744724) + (xy 106.968136 91.744724) + (xy 106.968713 91.749137) + (xy 106.968713 91.749138) + (xy 106.98251 91.854647) + (xy 106.984014 91.866145) + (xy 106.985809 91.870224) + (xy 106.989286 91.878126) + (xy 106.991185 91.882443) + (xy 106.991244 91.882813) + (xy 106.992007 91.884311) + (xy 106.994031 91.88891) + (xy 106.994031 91.888911) + (xy 107.026845 91.963484) + (xy 107.033333 91.97823) + (xy 107.036197 91.981637) + (xy 107.048029 91.995713) + (xy 107.050157 91.998434) + (xy 107.052292 92.002625) + (xy 107.060081 92.010414) + (xy 107.063729 92.014391) + (xy 107.112127 92.071968) + (xy 107.135399 92.087459) + (xy 107.141836 92.092733) + (xy 107.143899 92.094232) + (xy 107.147375 92.097708) + (xy 107.151753 92.099939) + (xy 107.151756 92.099941) + (xy 107.15873 92.103494) + (xy 107.164977 92.107148) + (xy 107.214064 92.139823) + (xy 107.218313 92.141151) + (xy 107.218314 92.141151) + (xy 107.250296 92.151143) + (xy 107.260027 92.155109) + (xy 107.262799 92.156521) + (xy 107.262803 92.156522) + (xy 107.267187 92.158756) + (xy 107.27777 92.160432) + (xy 107.277852 92.160445) + (xy 107.286713 92.16252) + (xy 107.326696 92.175012) + (xy 107.326699 92.175012) + (xy 107.330948 92.17634) + (xy 107.380069 92.177241) + (xy 107.388683 92.177999) + (xy 107.39514 92.179022) + (xy 107.395144 92.179022) + (xy 107.4 92.179791) + (xy 107.406947 92.17869) + (xy 107.417853 92.177933) + (xy 107.453383 92.178584) + (xy 107.458019 92.17732) + (xy 107.500968 92.165611) + (xy 107.548421 92.171648) + (xy 107.561601 92.181716) + (xy 108.466772 93.086887) + (xy 108.485078 93.131081) + (xy 108.484334 93.140691) + (xy 108.468136 93.244724) + (xy 108.468713 93.249137) + (xy 108.468713 93.249138) + (xy 108.478974 93.327605) + (xy 108.484014 93.366145) + (xy 108.491185 93.382443) + (xy 108.491244 93.382813) + (xy 108.492007 93.384311) + (xy 108.494031 93.38891) + (xy 108.494031 93.388911) + (xy 108.526371 93.462407) + (xy 108.533333 93.47823) + (xy 108.545627 93.492856) + (xy 108.548029 93.495713) + (xy 108.550157 93.498434) + (xy 108.552292 93.502625) + (xy 108.560081 93.510414) + (xy 108.563729 93.514391) + (xy 108.612127 93.571968) + (xy 108.635399 93.587459) + (xy 108.641836 93.592733) + (xy 108.643899 93.594232) + (xy 108.647375 93.597708) + (xy 108.651753 93.599939) + (xy 108.651756 93.599941) + (xy 108.65873 93.603494) + (xy 108.664977 93.607148) + (xy 108.714064 93.639823) + (xy 108.718313 93.641151) + (xy 108.718314 93.641151) + (xy 108.750296 93.651143) + (xy 108.760027 93.655109) + (xy 108.762799 93.656521) + (xy 108.762803 93.656522) + (xy 108.767187 93.658756) + (xy 108.777852 93.660445) + (xy 108.786713 93.66252) + (xy 108.826696 93.675012) + (xy 108.826699 93.675012) + (xy 108.830948 93.67634) + (xy 108.880069 93.677241) + (xy 108.888683 93.677999) + (xy 108.89514 93.679022) + (xy 108.895144 93.679022) + (xy 108.9 93.679791) + (xy 108.906947 93.67869) + (xy 108.917853 93.677933) + (xy 108.953383 93.678584) + (xy 109.013532 93.662185) + (xy 109.02019 93.660755) + (xy 109.022147 93.660445) + (xy 109.032813 93.658756) + (xy 109.037196 93.656522) + (xy 109.041875 93.655002) + (xy 109.041878 93.65501) + (xy 109.046727 93.653136) + (xy 109.071527 93.646375) + (xy 109.08321 93.639202) + (xy 109.139709 93.604511) + (xy 109.144037 93.602085) + (xy 109.14824 93.599944) + (xy 109.148248 93.599938) + (xy 109.152625 93.597708) + (xy 109.155427 93.594906) + (xy 109.156264 93.594346) + (xy 109.158891 93.592733) + (xy 109.175881 93.582301) + (xy 109.258058 93.491513) + (xy 109.311451 93.381311) + (xy 109.313317 93.370224) + (xy 109.32485 93.301667) + (xy 109.331767 93.260552) + (xy 109.331896 93.25) + (xy 109.314536 93.128781) + (xy 109.263852 93.017307) + (xy 109.249199 93.000302) + (xy 109.247708 92.997375) + (xy 109.2419 92.991567) + (xy 109.238746 92.98817) + (xy 109.186826 92.927914) + (xy 109.183918 92.924539) + (xy 109.163741 92.911461) + (xy 109.160155 92.908559) + (xy 109.160081 92.908661) + (xy 109.156106 92.905773) + (xy 109.152625 92.902292) + (xy 109.141343 92.896543) + (xy 109.135736 92.893309) + (xy 109.084893 92.860354) + (xy 109.08489 92.860353) + (xy 109.08116 92.857935) + (xy 109.076901 92.856661) + (xy 109.076898 92.85666) + (xy 109.058345 92.851112) + (xy 109.048839 92.848269) + (xy 109.038377 92.844079) + (xy 109.032813 92.841244) + (xy 109.021067 92.839384) + (xy 109.012951 92.837536) + (xy 108.99985 92.833618) + (xy 108.963838 92.822848) + (xy 108.919496 92.822577) + (xy 108.910103 92.821809) + (xy 108.904857 92.820978) + (xy 108.904856 92.820978) + (xy 108.9 92.820209) + (xy 108.891373 92.821576) + (xy 108.88122 92.822344) + (xy 108.862836 92.822231) + (xy 108.845838 92.822127) + (xy 108.845836 92.822127) + (xy 108.841385 92.8221) + (xy 108.79962 92.834037) + (xy 108.752099 92.828581) + (xy 108.738252 92.818137) + (xy 107.832793 91.912678) + (xy 107.814487 91.868484) + (xy 107.815353 91.858115) + (xy 107.831767 91.760552) + (xy 107.831896 91.75) + (xy 107.814536 91.628781) + (xy 107.763852 91.517307) + (xy 107.749199 91.500302) + (xy 107.747708 91.497375) + (xy 107.7419 91.491567) + (xy 107.738746 91.48817) + (xy 107.686826 91.427914) + (xy 107.683918 91.424539) + (xy 107.663741 91.411461) + (xy 107.660155 91.408559) + (xy 107.660081 91.408661) + (xy 107.656106 91.405773) + (xy 107.652625 91.402292) + (xy 107.641343 91.396543) + (xy 107.635736 91.393309) + (xy 107.584893 91.360354) + (xy 107.58489 91.360353) + (xy 107.58116 91.357935) + (xy 107.576901 91.356661) + (xy 107.576898 91.35666) + (xy 107.554429 91.349941) + (xy 107.548839 91.348269) + (xy 107.538377 91.344079) + (xy 107.532813 91.341244) + (xy 107.521067 91.339384) + (xy 107.512951 91.337536) + (xy 107.463838 91.322848) + (xy 107.419496 91.322577) + (xy 107.410103 91.321809) + (xy 107.404857 91.320978) + (xy 107.404856 91.320978) + (xy 107.4 91.320209) + (xy 107.391373 91.321576) + (xy 107.38122 91.322344) + (xy 107.362836 91.322231) + (xy 107.345838 91.322127) + (xy 107.345836 91.322127) + (xy 107.341385 91.3221) + (xy 107.287011 91.337641) + (xy 107.279623 91.339275) + (xy 107.267187 91.341244) + (xy 107.262804 91.343477) + (xy 107.26187 91.343781) + (xy 107.252156 91.347603) + (xy 107.249821 91.34827) + (xy 107.227929 91.354526) + (xy 107.227927 91.354527) + (xy 107.223644 91.355751) + (xy 107.164119 91.393309) + (xy 107.162819 91.394129) + (xy 107.157842 91.396959) + (xy 107.151757 91.400059) + (xy 107.151756 91.40006) + (xy 107.147375 91.402292) + (xy 107.143897 91.40577) + (xy 107.142445 91.406825) + (xy 107.139058 91.40912) + (xy 107.12008 91.421095) + (xy 107.117137 91.424427) + (xy 107.117135 91.424429) + (xy 107.057156 91.492342) + (xy 107.056032 91.493538) + (xy 107.055775 91.493892) + (xy 107.055554 91.494113) + (xy 107.055405 91.494204) + (xy 107.054504 91.495163) + (xy 107.052292 91.497375) + (xy 107.051509 91.496592) + (xy 107.050362 91.497296) + (xy 107.051721 91.498496) + (xy 107.039018 91.512879) + (xy 107.037127 91.516907) + (xy 106.988868 91.619695) + (xy 106.988867 91.619698) + (xy 106.986976 91.623726) + (xy 106.968136 91.744724) + (xy 106.3815 91.744724) + (xy 106.3815 90.93391) + (xy 106.399806 90.889716) + (xy 106.620771 90.668751) + (xy 106.648527 90.652645) + (xy 106.667233 90.647546) + (xy 106.667236 90.647545) + (xy 106.671527 90.646375) + (xy 106.710713 90.622315) + (xy 106.739709 90.604511) + (xy 106.744037 90.602085) + (xy 106.74824 90.599944) + (xy 106.748248 90.599938) + (xy 106.752625 90.597708) + (xy 106.755427 90.594906) + (xy 106.756264 90.594346) + (xy 106.761316 90.591244) + (xy 106.775881 90.582301) + (xy 106.858058 90.491513) + (xy 106.911451 90.381311) + (xy 106.913317 90.370224) + (xy 106.927516 90.285821) + (xy 106.931767 90.260552) + (xy 106.931896 90.25) + (xy 106.914536 90.128781) + (xy 106.863852 90.017307) + (xy 106.849199 90.000302) + (xy 106.847708 89.997375) + (xy 106.845057 89.994724) + (xy 127.068136 89.994724) + (xy 127.068713 89.999137) + (xy 127.068713 89.999138) + (xy 127.082655 90.105751) + (xy 127.084014 90.116145) + (xy 127.085809 90.120224) + (xy 127.089286 90.128126) + (xy 127.091185 90.132443) + (xy 127.091244 90.132813) + (xy 127.092007 90.134311) + (xy 127.094031 90.13891) + (xy 127.094031 90.138911) + (xy 127.12992 90.220473) + (xy 127.133333 90.22823) + (xy 127.147198 90.244724) + (xy 127.148029 90.245713) + (xy 127.150157 90.248434) + (xy 127.152292 90.252625) + (xy 127.160081 90.260414) + (xy 127.16373 90.264392) + (xy 127.198811 90.306126) + (xy 127.212127 90.321968) + (xy 127.235399 90.337459) + (xy 127.241836 90.342733) + (xy 127.243899 90.344232) + (xy 127.247375 90.347708) + (xy 127.251753 90.349939) + (xy 127.251756 90.349941) + (xy 127.25873 90.353494) + (xy 127.264977 90.357148) + (xy 127.314064 90.389823) + (xy 127.318313 90.391151) + (xy 127.318314 90.391151) + (xy 127.350296 90.401143) + (xy 127.360027 90.405109) + (xy 127.362799 90.406521) + (xy 127.362803 90.406522) + (xy 127.367187 90.408756) + (xy 127.377852 90.410445) + (xy 127.386713 90.41252) + (xy 127.426696 90.425012) + (xy 127.426699 90.425012) + (xy 127.430948 90.42634) + (xy 127.480069 90.427241) + (xy 127.488683 90.427999) + (xy 127.49514 90.429022) + (xy 127.495144 90.429022) + (xy 127.5 90.429791) + (xy 127.506947 90.42869) + (xy 127.517853 90.427933) + (xy 127.553383 90.428584) + (xy 127.613532 90.412185) + (xy 127.62019 90.410755) + (xy 127.622147 90.410445) + (xy 127.632813 90.408756) + (xy 127.637196 90.406522) + (xy 127.641875 90.405002) + (xy 127.641878 90.40501) + (xy 127.646727 90.403136) + (xy 127.671527 90.396375) + (xy 127.683231 90.389189) + (xy 127.739709 90.354511) + (xy 127.744037 90.352085) + (xy 127.74824 90.349944) + (xy 127.748248 90.349938) + (xy 127.752625 90.347708) + (xy 127.755427 90.344906) + (xy 127.756264 90.344346) + (xy 127.758891 90.342733) + (xy 127.775881 90.332301) + (xy 127.858058 90.241513) + (xy 127.865454 90.226248) + (xy 127.901198 90.194458) + (xy 127.9217 90.191) + (xy 138.744101 90.191) + (xy 138.793156 90.191043) + (xy 138.793404 90.191043) + (xy 138.79348 90.191007) + (xy 138.793539 90.191) + (xy 139.576187 90.191) + (xy 139.620381 90.209306) + (xy 139.629248 90.220473) + (xy 139.63154 90.224155) + (xy 139.633333 90.22823) + (xy 139.647198 90.244724) + (xy 139.648029 90.245713) + (xy 139.650157 90.248434) + (xy 139.652292 90.252625) + (xy 139.660081 90.260414) + (xy 139.66373 90.264392) + (xy 139.698811 90.306126) + (xy 139.712127 90.321968) + (xy 139.735399 90.337459) + (xy 139.741836 90.342733) + (xy 139.743899 90.344232) + (xy 139.747375 90.347708) + (xy 139.751753 90.349939) + (xy 139.751756 90.349941) + (xy 139.75873 90.353494) + (xy 139.764977 90.357148) + (xy 139.814064 90.389823) + (xy 139.818313 90.391151) + (xy 139.818314 90.391151) + (xy 139.850296 90.401143) + (xy 139.860027 90.405109) + (xy 139.862799 90.406521) + (xy 139.862803 90.406522) + (xy 139.867187 90.408756) + (xy 139.877852 90.410445) + (xy 139.886713 90.41252) + (xy 139.926696 90.425012) + (xy 139.926699 90.425012) + (xy 139.930948 90.42634) + (xy 139.980069 90.427241) + (xy 139.988683 90.427999) + (xy 139.99514 90.429022) + (xy 139.995144 90.429022) + (xy 140 90.429791) + (xy 140.006947 90.42869) + (xy 140.017853 90.427933) + (xy 140.053383 90.428584) + (xy 140.113532 90.412185) + (xy 140.12019 90.410755) + (xy 140.122147 90.410445) + (xy 140.132813 90.408756) + (xy 140.137196 90.406522) + (xy 140.141875 90.405002) + (xy 140.141878 90.40501) + (xy 140.146727 90.403136) + (xy 140.171527 90.396375) + (xy 140.183231 90.389189) + (xy 140.239709 90.354511) + (xy 140.244037 90.352085) + (xy 140.24824 90.349944) + (xy 140.248248 90.349938) + (xy 140.252625 90.347708) + (xy 140.255427 90.344906) + (xy 140.256264 90.344346) + (xy 140.258891 90.342733) + (xy 140.275881 90.332301) + (xy 140.358058 90.241513) + (xy 140.411451 90.131311) + (xy 140.412799 90.123302) + (xy 140.424373 90.0545) + (xy 140.431767 90.010552) + (xy 140.431896 90) + (xy 140.414536 89.878781) + (xy 140.363852 89.767307) + (xy 140.349199 89.750302) + (xy 140.347708 89.747375) + (xy 140.3419 89.741567) + (xy 140.338746 89.73817) + (xy 140.286826 89.677914) + (xy 140.283918 89.674539) + (xy 140.263741 89.661461) + (xy 140.260155 89.658559) + (xy 140.260081 89.658661) + (xy 140.256106 89.655773) + (xy 140.252625 89.652292) + (xy 140.241343 89.646543) + (xy 140.235736 89.643309) + (xy 140.235735 89.643308) + (xy 140.207055 89.624719) + (xy 140.184893 89.610354) + (xy 140.18489 89.610353) + (xy 140.18116 89.607935) + (xy 140.176901 89.606661) + (xy 140.176898 89.60666) + (xy 140.158345 89.601112) + (xy 140.148839 89.598269) + (xy 140.138377 89.594079) + (xy 140.132813 89.591244) + (xy 140.121067 89.589384) + (xy 140.112951 89.587536) + (xy 140.084793 89.579115) + (xy 140.063838 89.572848) + (xy 140.019496 89.572577) + (xy 140.010103 89.571809) + (xy 140.004857 89.570978) + (xy 140.004856 89.570978) + (xy 140 89.570209) + (xy 139.991373 89.571576) + (xy 139.98122 89.572344) + (xy 139.962836 89.572231) + (xy 139.945838 89.572127) + (xy 139.945836 89.572127) + (xy 139.941385 89.5721) + (xy 139.887011 89.587641) + (xy 139.879623 89.589275) + (xy 139.867187 89.591244) + (xy 139.862804 89.593477) + (xy 139.86187 89.593781) + (xy 139.852155 89.597603) + (xy 139.827929 89.604526) + (xy 139.827927 89.604527) + (xy 139.823644 89.605751) + (xy 139.819875 89.608129) + (xy 139.806812 89.616371) + (xy 139.764119 89.643309) + (xy 139.762819 89.644129) + (xy 139.757842 89.646959) + (xy 139.751757 89.650059) + (xy 139.751756 89.65006) + (xy 139.747375 89.652292) + (xy 139.743897 89.65577) + (xy 139.742445 89.656825) + (xy 139.739058 89.65912) + (xy 139.72008 89.671095) + (xy 139.717137 89.674427) + (xy 139.717135 89.674429) + (xy 139.657156 89.742342) + (xy 139.656032 89.743538) + (xy 139.655775 89.743892) + (xy 139.655554 89.744113) + (xy 139.655405 89.744204) + (xy 139.654504 89.745163) + (xy 139.652292 89.747375) + (xy 139.651509 89.746592) + (xy 139.650362 89.747296) + (xy 139.651721 89.748496) + (xy 139.639018 89.762879) + (xy 139.637127 89.766906) + (xy 139.637126 89.766908) + (xy 139.634237 89.773062) + (xy 139.598884 89.805287) + (xy 139.577662 89.809) + (xy 139.0035 89.809) + (xy 138.959306 89.790694) + (xy 138.941 89.7465) + (xy 138.941 89.164999) + (xy 138.959306 89.120805) + (xy 139.0035 89.102499) + (xy 139.063374 89.102499) + (xy 139.065385 89.102234) + (xy 139.06539 89.102234) + (xy 139.106331 89.096845) + (xy 139.106332 89.096845) + (xy 139.111071 89.096221) + (xy 139.138643 89.083364) + (xy 139.210787 89.049723) + (xy 139.210789 89.049721) + (xy 139.215744 89.047411) + (xy 139.297411 88.965744) + (xy 139.299721 88.960789) + (xy 139.299723 88.960787) + (xy 139.325732 88.90501) + (xy 139.346221 88.861071) + (xy 139.349702 88.834631) + (xy 139.352233 88.815407) + (xy 139.352233 88.815399) + (xy 139.3525 88.813375) + (xy 139.352499 88.336626) + (xy 139.352232 88.334593) + (xy 139.346845 88.293669) + (xy 139.346845 88.293668) + (xy 139.346221 88.288929) + (xy 139.338501 88.272373) + (xy 139.299723 88.189213) + (xy 139.299721 88.189211) + (xy 139.297411 88.184256) + (xy 139.215744 88.102589) + (xy 139.210789 88.100279) + (xy 139.210787 88.100277) + (xy 139.151964 88.072848) + (xy 139.111071 88.053779) + (xy 139.097705 88.052019) + (xy 139.065407 88.047767) + (xy 139.065399 88.047767) + (xy 139.063375 88.0475) + (xy 139.061328 88.0475) + (xy 138.749156 88.047501) + (xy 138.436626 88.047501) + (xy 138.434615 88.047766) + (xy 138.43461 88.047766) + (xy 138.393669 88.053155) + (xy 138.393668 88.053155) + (xy 138.388929 88.053779) + (xy 138.384595 88.0558) + (xy 138.289213 88.100277) + (xy 138.289211 88.100279) + (xy 138.284256 88.102589) + (xy 138.202589 88.184256) + (xy 138.200279 88.189211) + (xy 138.200277 88.189213) + (xy 138.179217 88.234377) + (xy 138.153779 88.288929) + (xy 138.153155 88.293669) + (xy 138.153155 88.29367) + (xy 138.147767 88.334593) + (xy 138.147767 88.334601) + (xy 138.1475 88.336625) + (xy 138.147501 88.813374) + (xy 138.147766 88.815385) + (xy 138.147766 88.81539) + (xy 138.152933 88.854647) + (xy 138.153779 88.861071) + (xy 138.1558 88.865404) + (xy 138.1558 88.865405) + (xy 138.200277 88.960787) + (xy 138.200279 88.960789) + (xy 138.202589 88.965744) + (xy 138.284256 89.047411) + (xy 138.289211 89.049721) + (xy 138.289213 89.049723) + (xy 138.329612 89.068561) + (xy 138.388929 89.096221) + (xy 138.402295 89.097981) + (xy 138.434593 89.102233) + (xy 138.434601 89.102233) + (xy 138.436625 89.1025) + (xy 138.4965 89.1025) + (xy 138.540694 89.120806) + (xy 138.559 89.165) + (xy 138.559 89.7465) + (xy 138.540694 89.790694) + (xy 138.4965 89.809) + (xy 127.923049 89.809) + (xy 127.878855 89.790694) + (xy 127.866156 89.772373) + (xy 127.865695 89.77136) + (xy 127.865693 89.771357) + (xy 127.863852 89.767307) + (xy 127.849199 89.750302) + (xy 127.847708 89.747375) + (xy 127.8419 89.741567) + (xy 127.838746 89.73817) + (xy 127.786826 89.677914) + (xy 127.783918 89.674539) + (xy 127.763741 89.661461) + (xy 127.760155 89.658559) + (xy 127.760081 89.658661) + (xy 127.756106 89.655773) + (xy 127.752625 89.652292) + (xy 127.741343 89.646543) + (xy 127.735736 89.643309) + (xy 127.735735 89.643308) + (xy 127.707055 89.624719) + (xy 127.684893 89.610354) + (xy 127.68489 89.610353) + (xy 127.68116 89.607935) + (xy 127.676901 89.606661) + (xy 127.676898 89.60666) + (xy 127.658345 89.601112) + (xy 127.648839 89.598269) + (xy 127.638377 89.594079) + (xy 127.632813 89.591244) + (xy 127.621067 89.589384) + (xy 127.612951 89.587536) + (xy 127.584793 89.579115) + (xy 127.563838 89.572848) + (xy 127.519496 89.572577) + (xy 127.510103 89.571809) + (xy 127.504857 89.570978) + (xy 127.504856 89.570978) + (xy 127.5 89.570209) + (xy 127.491373 89.571576) + (xy 127.48122 89.572344) + (xy 127.462836 89.572231) + (xy 127.445838 89.572127) + (xy 127.445836 89.572127) + (xy 127.441385 89.5721) + (xy 127.387011 89.587641) + (xy 127.379623 89.589275) + (xy 127.367187 89.591244) + (xy 127.362804 89.593477) + (xy 127.36187 89.593781) + (xy 127.352155 89.597603) + (xy 127.327929 89.604526) + (xy 127.327927 89.604527) + (xy 127.323644 89.605751) + (xy 127.319875 89.608129) + (xy 127.306812 89.616371) + (xy 127.264119 89.643309) + (xy 127.262819 89.644129) + (xy 127.257842 89.646959) + (xy 127.251757 89.650059) + (xy 127.251756 89.65006) + (xy 127.247375 89.652292) + (xy 127.243897 89.65577) + (xy 127.242445 89.656825) + (xy 127.239058 89.65912) + (xy 127.22008 89.671095) + (xy 127.217137 89.674427) + (xy 127.217135 89.674429) + (xy 127.157156 89.742342) + (xy 127.156032 89.743538) + (xy 127.155775 89.743892) + (xy 127.155554 89.744113) + (xy 127.155405 89.744204) + (xy 127.154504 89.745163) + (xy 127.152292 89.747375) + (xy 127.151509 89.746592) + (xy 127.150362 89.747296) + (xy 127.151721 89.748496) + (xy 127.139018 89.762879) + (xy 127.136939 89.767307) + (xy 127.088868 89.869695) + (xy 127.088867 89.869698) + (xy 127.086976 89.873726) + (xy 127.068136 89.994724) + (xy 106.845057 89.994724) + (xy 106.8419 89.991567) + (xy 106.838746 89.98817) + (xy 106.786826 89.927914) + (xy 106.783918 89.924539) + (xy 106.763741 89.911461) + (xy 106.760155 89.908559) + (xy 106.760081 89.908661) + (xy 106.756106 89.905773) + (xy 106.752625 89.902292) + (xy 106.741343 89.896543) + (xy 106.735736 89.893309) + (xy 106.735735 89.893308) + (xy 106.713322 89.878781) + (xy 106.684893 89.860354) + (xy 106.68489 89.860353) + (xy 106.68116 89.857935) + (xy 106.676901 89.856661) + (xy 106.676898 89.85666) + (xy 106.658345 89.851112) + (xy 106.648839 89.848269) + (xy 106.638377 89.844079) + (xy 106.632813 89.841244) + (xy 106.621067 89.839384) + (xy 106.612951 89.837536) + (xy 106.588896 89.830342) + (xy 106.563838 89.822848) + (xy 106.519496 89.822577) + (xy 106.510103 89.821809) + (xy 106.504857 89.820978) + (xy 106.504856 89.820978) + (xy 106.5 89.820209) + (xy 106.491373 89.821576) + (xy 106.48122 89.822344) + (xy 106.462836 89.822231) + (xy 106.445838 89.822127) + (xy 106.445836 89.822127) + (xy 106.441385 89.8221) + (xy 106.387011 89.837641) + (xy 106.379623 89.839275) + (xy 106.367187 89.841244) + (xy 106.362804 89.843477) + (xy 106.36187 89.843781) + (xy 106.352155 89.847603) + (xy 106.327929 89.854526) + (xy 106.327927 89.854527) + (xy 106.323644 89.855751) + (xy 106.319875 89.858129) + (xy 106.308345 89.865404) + (xy 106.264119 89.893309) + (xy 106.262819 89.894129) + (xy 106.257842 89.896959) + (xy 106.251757 89.900059) + (xy 106.251756 89.90006) + (xy 106.247375 89.902292) + (xy 106.243897 89.90577) + (xy 106.242445 89.906825) + (xy 106.239058 89.90912) + (xy 106.22008 89.921095) + (xy 106.217137 89.924427) + (xy 106.217135 89.924429) + (xy 106.157156 89.992342) + (xy 106.156032 89.993538) + (xy 106.155775 89.993892) + (xy 106.155554 89.994113) + (xy 106.155405 89.994204) + (xy 106.154504 89.995163) + (xy 106.152292 89.997375) + (xy 106.151509 89.996592) + (xy 106.150362 89.997296) + (xy 106.151721 89.998496) + (xy 106.142377 90.009076) + (xy 106.139018 90.012879) + (xy 106.137127 90.016907) + (xy 106.091822 90.113404) + (xy 106.079441 90.131036) + (xy 105.76374 90.446737) + (xy 105.753448 90.455049) + (xy 105.744039 90.461124) + (xy 105.744036 90.461127) + (xy 105.739696 90.463929) + (xy 105.736497 90.467987) + (xy 105.716454 90.493411) + (xy 105.711566 90.498911) + (xy 105.707829 90.502648) + (xy 105.706328 90.504748) + (xy 105.706325 90.504752) + (xy 105.695661 90.519674) + (xy 105.693893 90.522029) + (xy 105.661066 90.56367) + (xy 105.659355 90.568543) + (xy 105.657441 90.572023) + (xy 105.655668 90.575641) + (xy 105.652666 90.579843) + (xy 105.637595 90.630239) + (xy 105.637469 90.630659) + (xy 105.636559 90.633456) + (xy 105.618984 90.683502) + (xy 105.6185 90.689091) + (xy 105.6185 90.68935) + (xy 105.618161 90.693354) + (xy 105.617754 90.696579) + (xy 105.616275 90.701524) + (xy 105.618033 90.746265) + (xy 105.618452 90.756924) + (xy 105.6185 90.759378) + (xy 105.6185 94.202624) + (xy 105.6171 94.215778) + (xy 105.613655 94.23178) + (xy 99.3 94.23178) + (xy 99.3 89.535145) + (xy 103.591391 89.535145) + (xy 103.605373 89.604487) + (xy 103.620379 89.678907) + (xy 103.62142 89.684071) + (xy 103.690392 89.819436) + (xy 103.722659 89.854526) + (xy 103.790144 89.927914) + (xy 103.793226 89.931266) + (xy 103.796847 89.933511) + (xy 103.796848 89.933512) + (xy 103.918719 90.009076) + (xy 103.918722 90.009078) + (xy 103.922344 90.011323) + (xy 103.92644 90.012513) + (xy 104.046558 90.047411) + (xy 104.068235 90.053709) + (xy 104.071501 90.053949) + (xy 104.071502 90.053949) + (xy 104.077859 90.054416) + (xy 104.077867 90.054416) + (xy 104.079007 90.0545) + (xy 104.188057 90.0545) + (xy 104.300518 90.039095) + (xy 104.304429 90.037403) + (xy 104.304431 90.037402) + (xy 104.368807 90.009543) + (xy 104.439946 89.978758) + (xy 104.558013 89.88315) + (xy 104.560479 89.87968) + (xy 104.560481 89.879678) + (xy 104.636739 89.772373) + (xy 104.64602 89.759313) + (xy 104.675325 89.677914) + (xy 104.696039 89.62038) + (xy 104.696039 89.620378) + (xy 104.697482 89.616371) + (xy 104.699512 89.588731) + (xy 104.708297 89.469107) + (xy 104.708297 89.469105) + (xy 104.708609 89.464855) + (xy 104.683818 89.341907) + (xy 104.679422 89.320103) + (xy 104.679421 89.3201) + (xy 104.67858 89.315929) + (xy 104.609608 89.180564) + (xy 104.542104 89.107155) + (xy 104.509658 89.07187) + (xy 104.509657 89.071869) + (xy 104.506774 89.068734) + (xy 104.504335 89.067222) + (xy 104.482181 89.025383) + (xy 104.496246 88.979662) + (xy 104.538521 88.957277) + (xy 104.544404 88.957) + (xy 104.799069 88.957) + (xy 104.807859 88.953359) + (xy 104.8115 88.944569) + (xy 104.9385 88.944569) + (xy 104.942141 88.953359) + (xy 104.950931 88.957) + (xy 105.417089 88.957) + (xy 105.420567 88.956806) + (xy 105.54476 88.942876) + (xy 105.551538 88.941335) + (xy 105.709549 88.886309) + (xy 105.715822 88.883304) + (xy 105.857721 88.794636) + (xy 105.863167 88.790319) + (xy 105.981902 88.672411) + (xy 105.986248 88.667006) + (xy 106.028248 88.600824) + (xy 130.230201 88.600824) + (xy 130.25981 88.773141) + (xy 130.328267 88.934024) + (xy 130.431898 89.074843) + (xy 130.434664 89.077193) + (xy 130.434666 89.077195) + (xy 130.467559 89.105139) + (xy 130.565146 89.188045) + (xy 130.720862 89.267558) + (xy 130.890693 89.309115) + (xy 130.898268 89.309585) + (xy 130.900765 89.30974) + (xy 130.900769 89.30974) + (xy 130.901734 89.3098) + (xy 131.027779 89.3098) + (xy 131.029569 89.309591) + (xy 131.029574 89.309591) + (xy 131.079216 89.303803) + (xy 131.157665 89.294657) + (xy 131.16108 89.293418) + (xy 131.161082 89.293417) + (xy 131.229944 89.268421) + (xy 131.322015 89.235001) + (xy 131.468233 89.139136) + (xy 131.588475 89.012205) + (xy 131.590297 89.009067) + (xy 131.5903 89.009064) + (xy 131.674473 88.864149) + (xy 131.674474 88.864148) + (xy 131.676292 88.861017) + (xy 131.726973 88.693682) + (xy 131.732734 88.600824) + (xy 132.262201 88.600824) + (xy 132.29181 88.773141) + (xy 132.360267 88.934024) + (xy 132.463898 89.074843) + (xy 132.466664 89.077193) + (xy 132.466666 89.077195) + (xy 132.499559 89.105139) + (xy 132.597146 89.188045) + (xy 132.752862 89.267558) + (xy 132.922693 89.309115) + (xy 132.930268 89.309585) + (xy 132.932765 89.30974) + (xy 132.932769 89.30974) + (xy 132.933734 89.3098) + (xy 133.059779 89.3098) + (xy 133.061569 89.309591) + (xy 133.061574 89.309591) + (xy 133.111216 89.303803) + (xy 133.189665 89.294657) + (xy 133.19308 89.293418) + (xy 133.193082 89.293417) + (xy 133.261944 89.268421) + (xy 133.354015 89.235001) + (xy 133.500233 89.139136) + (xy 133.620475 89.012205) + (xy 133.622297 89.009067) + (xy 133.6223 89.009064) + (xy 133.706473 88.864149) + (xy 133.706474 88.864148) + (xy 133.708292 88.861017) + (xy 133.743514 88.744724) + (xy 134.068136 88.744724) + (xy 134.068713 88.749137) + (xy 134.068713 88.749138) + (xy 134.082731 88.856331) + (xy 134.084014 88.866145) + (xy 134.091185 88.882443) + (xy 134.091244 88.882813) + (xy 134.092007 88.884311) + (xy 134.094031 88.88891) + (xy 134.094031 88.888911) + (xy 134.128757 88.96783) + (xy 134.133333 88.97823) + (xy 134.147273 88.994814) + (xy 134.148029 88.995713) + (xy 134.150157 88.998434) + (xy 134.152292 89.002625) + (xy 134.160081 89.010414) + (xy 134.163729 89.014391) + (xy 134.212127 89.071968) + (xy 134.235399 89.087459) + (xy 134.241836 89.092733) + (xy 134.243899 89.094232) + (xy 134.247375 89.097708) + (xy 134.251753 89.099939) + (xy 134.251756 89.099941) + (xy 134.25873 89.103494) + (xy 134.264977 89.107148) + (xy 134.314064 89.139823) + (xy 134.318313 89.141151) + (xy 134.318314 89.141151) + (xy 134.350296 89.151143) + (xy 134.360027 89.155109) + (xy 134.362799 89.156521) + (xy 134.362803 89.156522) + (xy 134.367187 89.158756) + (xy 134.377852 89.160445) + (xy 134.386713 89.16252) + (xy 134.426696 89.175012) + (xy 134.426699 89.175012) + (xy 134.430948 89.17634) + (xy 134.480069 89.177241) + (xy 134.488683 89.177999) + (xy 134.49514 89.179022) + (xy 134.495144 89.179022) + (xy 134.5 89.179791) + (xy 134.506947 89.17869) + (xy 134.517853 89.177933) + (xy 134.553383 89.178584) + (xy 134.613532 89.162185) + (xy 134.62019 89.160755) + (xy 134.622147 89.160445) + (xy 134.632813 89.158756) + (xy 134.637196 89.156522) + (xy 134.641875 89.155002) + (xy 134.641878 89.15501) + (xy 134.646727 89.153136) + (xy 134.671527 89.146375) + (xy 134.687609 89.136501) + (xy 134.739709 89.104511) + (xy 134.744037 89.102085) + (xy 134.74824 89.099944) + (xy 134.748248 89.099938) + (xy 134.752625 89.097708) + (xy 134.755427 89.094906) + (xy 134.756264 89.094346) + (xy 134.758891 89.092733) + (xy 134.775881 89.082301) + (xy 134.858058 88.991513) + (xy 134.865454 88.976248) + (xy 134.901198 88.944458) + (xy 134.9217 88.941) + (xy 136.206768 88.941) + (xy 136.214107 88.94225) + (xy 136.21419 88.941523) + (xy 136.221181 88.94232) + (xy 136.227822 88.944652) + (xy 136.234815 88.943874) + (xy 136.234816 88.943874) + (xy 136.257197 88.941383) + (xy 136.26411 88.941) + (xy 136.271533 88.941) + (xy 136.278465 88.939419) + (xy 136.285418 88.938243) + (xy 136.314429 88.935014) + (xy 136.320393 88.931281) + (xy 136.324341 88.929906) + (xy 136.3281 88.928097) + (xy 136.334959 88.926532) + (xy 136.357774 88.908351) + (xy 136.363559 88.904256) + (xy 136.366715 88.90228) + (xy 136.366717 88.902279) + (xy 136.369711 88.900404) + (xy 136.374924 88.895191) + (xy 136.380168 88.890506) + (xy 136.397604 88.876612) + (xy 136.397604 88.876611) + (xy 136.403109 88.872225) + (xy 136.406167 88.865886) + (xy 136.410558 88.860385) + (xy 136.411092 88.860811) + (xy 136.415468 88.854647) + (xy 138.060536 87.209579) + (xy 138.10473 87.191273) + (xy 138.148924 87.209579) + (xy 138.161374 87.227359) + (xy 138.200277 87.310787) + (xy 138.200279 87.310789) + (xy 138.202589 87.315744) + (xy 138.284256 87.397411) + (xy 138.289211 87.399721) + (xy 138.289213 87.399723) + (xy 138.329835 87.418665) + (xy 138.388929 87.446221) + (xy 138.402295 87.447981) + (xy 138.434593 87.452233) + (xy 138.434601 87.452233) + (xy 138.436625 87.4525) + (xy 138.438672 87.4525) + (xy 138.750844 87.452499) + (xy 139.063374 87.452499) + (xy 139.065385 87.452234) + (xy 139.06539 87.452234) + (xy 139.106331 87.446845) + (xy 139.106332 87.446845) + (xy 139.111071 87.446221) + (xy 139.127281 87.438662) + (xy 139.210787 87.399723) + (xy 139.210789 87.399721) + (xy 139.215744 87.397411) + (xy 139.297411 87.315744) + (xy 139.299721 87.310789) + (xy 139.299723 87.310787) + (xy 139.32847 87.249138) + (xy 139.336889 87.231083) + (xy 147.898001 87.231083) + (xy 147.898333 87.235614) + (xy 147.907478 87.297743) + (xy 147.910326 87.30691) + (xy 147.957556 87.403105) + (xy 147.963484 87.411387) + (xy 148.039111 87.486883) + (xy 148.047406 87.492799) + (xy 148.143687 87.539863) + (xy 148.152851 87.542695) + (xy 148.214391 87.551672) + (xy 148.218904 87.552) + (xy 148.424069 87.552) + (xy 148.432859 87.548359) + (xy 148.4365 87.539569) + (xy 148.4365 87.539568) + (xy 148.5635 87.539568) + (xy 148.567141 87.548358) + (xy 148.575931 87.551999) + (xy 148.781083 87.551999) + (xy 148.785614 87.551667) + (xy 148.847743 87.542522) + (xy 148.85691 87.539674) + (xy 148.953105 87.492444) + (xy 148.961387 87.486516) + (xy 149.036883 87.410889) + (xy 149.042799 87.402594) + (xy 149.089863 87.306313) + (xy 149.092695 87.297149) + (xy 149.101672 87.235609) + (xy 149.102 87.231096) + (xy 149.102 87.050931) + (xy 149.098359 87.042141) + (xy 149.089569 87.0385) + (xy 148.575931 87.0385) + (xy 148.567141 87.042141) + (xy 148.5635 87.050931) + (xy 148.5635 87.539568) + (xy 148.4365 87.539568) + (xy 148.4365 87.050931) + (xy 148.432859 87.042141) + (xy 148.424069 87.0385) + (xy 147.910432 87.0385) + (xy 147.901642 87.042141) + (xy 147.898001 87.050931) + (xy 147.898001 87.231083) + (xy 139.336889 87.231083) + (xy 139.346221 87.211071) + (xy 139.351583 87.170342) + (xy 139.352233 87.165407) + (xy 139.352233 87.165399) + (xy 139.3525 87.163375) + (xy 139.352499 86.899069) + (xy 147.898 86.899069) + (xy 147.901641 86.907859) + (xy 147.910431 86.9115) + (xy 148.424069 86.9115) + (xy 148.432859 86.907859) + (xy 148.4365 86.899069) + (xy 148.5635 86.899069) + (xy 148.567141 86.907859) + (xy 148.575931 86.9115) + (xy 149.089568 86.9115) + (xy 149.098358 86.907859) + (xy 149.101999 86.899069) + (xy 149.101999 86.718917) + (xy 149.101667 86.714386) + (xy 149.097581 86.686625) + (xy 149.6475 86.686625) + (xy 149.647501 87.163374) + (xy 149.647766 87.165385) + (xy 149.647766 87.16539) + (xy 149.653155 87.20633) + (xy 149.653779 87.211071) + (xy 149.6558 87.215404) + (xy 149.6558 87.215405) + (xy 149.700277 87.310787) + (xy 149.700279 87.310789) + (xy 149.702589 87.315744) + (xy 149.784256 87.397411) + (xy 149.789211 87.399721) + (xy 149.789213 87.399723) + (xy 149.829835 87.418665) + (xy 149.888929 87.446221) + (xy 149.902295 87.447981) + (xy 149.934593 87.452233) + (xy 149.934601 87.452233) + (xy 149.936625 87.4525) + (xy 149.938672 87.4525) + (xy 150.250844 87.452499) + (xy 150.563374 87.452499) + (xy 150.565385 87.452234) + (xy 150.56539 87.452234) + (xy 150.606331 87.446845) + (xy 150.606332 87.446845) + (xy 150.611071 87.446221) + (xy 150.627281 87.438662) + (xy 150.710787 87.399723) + (xy 150.710789 87.399721) + (xy 150.715744 87.397411) + (xy 150.797411 87.315744) + (xy 150.799721 87.310789) + (xy 150.799723 87.310787) + (xy 150.82847 87.249138) + (xy 150.846221 87.211071) + (xy 150.851583 87.170342) + (xy 150.8755 87.128915) + (xy 150.913548 87.116) + (xy 151.809198 87.116) + (xy 151.816537 87.11725) + (xy 151.81662 87.116523) + (xy 151.823611 87.11732) + (xy 151.830252 87.119652) + (xy 151.837245 87.118874) + (xy 151.837246 87.118874) + (xy 151.859627 87.116383) + (xy 151.86654 87.116) + (xy 151.873963 87.116) + (xy 151.880895 87.114419) + (xy 151.887848 87.113243) + (xy 151.916859 87.110014) + (xy 151.922823 87.106281) + (xy 151.926771 87.104906) + (xy 151.93053 87.103097) + (xy 151.937389 87.101532) + (xy 151.960204 87.083351) + (xy 151.965989 87.079256) + (xy 151.969145 87.07728) + (xy 151.969147 87.077279) + (xy 151.972141 87.075404) + (xy 151.977354 87.070191) + (xy 151.982598 87.065506) + (xy 152.000034 87.051612) + (xy 152.000034 87.051611) + (xy 152.005539 87.047225) + (xy 152.008597 87.040886) + (xy 152.012988 87.035385) + (xy 152.013522 87.035811) + (xy 152.017898 87.029647) + (xy 153.351503 85.696042) + (xy 153.395697 85.677736) + (xy 153.414335 85.68058) + (xy 153.440411 85.688727) + (xy 153.440414 85.688727) + (xy 153.444663 85.690055) + (xy 153.493784 85.690956) + (xy 153.502398 85.691714) + (xy 153.508855 85.692737) + (xy 153.508859 85.692737) + (xy 153.513715 85.693506) + (xy 153.520662 85.692405) + (xy 153.531568 85.691648) + (xy 153.567098 85.692299) + (xy 153.627247 85.6759) + (xy 153.633905 85.67447) + (xy 153.635415 85.674231) + (xy 153.646528 85.672471) + (xy 153.650911 85.670237) + (xy 153.65559 85.668717) + (xy 153.655593 85.668725) + (xy 153.660442 85.666851) + (xy 153.685242 85.66009) + (xy 153.695521 85.653779) + (xy 153.753424 85.618226) + (xy 153.757752 85.6158) + (xy 153.761955 85.613659) + (xy 153.761963 85.613653) + (xy 153.76634 85.611423) + (xy 153.769142 85.608621) + (xy 153.769979 85.608061) + (xy 153.789596 85.596016) + (xy 153.871773 85.505228) + (xy 153.925166 85.395026) + (xy 153.926042 85.389823) + (xy 153.942101 85.294364) + (xy 153.945482 85.274267) + (xy 153.945611 85.263715) + (xy 153.928251 85.142496) + (xy 153.877567 85.031022) + (xy 153.862914 85.014017) + (xy 153.861423 85.01109) + (xy 153.855615 85.005282) + (xy 153.852461 85.001885) + (xy 153.829735 84.975511) + (xy 153.797633 84.938254) + (xy 153.777456 84.925176) + (xy 153.77387 84.922274) + (xy 153.773796 84.922376) + (xy 153.769821 84.919488) + (xy 153.76634 84.916007) + (xy 153.755058 84.910258) + (xy 153.749451 84.907024) + (xy 153.698608 84.874069) + (xy 153.698605 84.874068) + (xy 153.694875 84.87165) + (xy 153.690616 84.870376) + (xy 153.690613 84.870375) + (xy 153.67206 84.864827) + (xy 153.662554 84.861984) + (xy 153.652092 84.857794) + (xy 153.646528 84.854959) + (xy 153.634782 84.853099) + (xy 153.626666 84.851251) + (xy 153.621132 84.849596) + (xy 153.577553 84.836563) + (xy 153.533211 84.836292) + (xy 153.523818 84.835524) + (xy 153.518572 84.834693) + (xy 153.518571 84.834693) + (xy 153.513715 84.833924) + (xy 153.505088 84.835291) + (xy 153.494935 84.836059) + (xy 153.476551 84.835946) + (xy 153.459553 84.835842) + (xy 153.459551 84.835842) + (xy 153.4551 84.835815) + (xy 153.400726 84.851356) + (xy 153.393338 84.85299) + (xy 153.380902 84.854959) + (xy 153.376519 84.857192) + (xy 153.375585 84.857496) + (xy 153.36587 84.861318) + (xy 153.341644 84.868241) + (xy 153.341642 84.868242) + (xy 153.337359 84.869466) + (xy 153.277834 84.907024) + (xy 153.276534 84.907844) + (xy 153.271557 84.910674) + (xy 153.265472 84.913774) + (xy 153.265471 84.913775) + (xy 153.26109 84.916007) + (xy 153.257612 84.919485) + (xy 153.25616 84.92054) + (xy 153.252773 84.922835) + (xy 153.233795 84.93481) + (xy 153.230852 84.938142) + (xy 153.23085 84.938144) + (xy 153.170871 85.006057) + (xy 153.169747 85.007253) + (xy 153.16949 85.007607) + (xy 153.169269 85.007828) + (xy 153.16912 85.007919) + (xy 153.168219 85.008878) + (xy 153.166007 85.01109) + (xy 153.165224 85.010307) + (xy 153.164077 85.011011) + (xy 153.165436 85.012211) + (xy 153.152733 85.026594) + (xy 153.150842 85.030622) + (xy 153.102583 85.13341) + (xy 153.102582 85.133413) + (xy 153.100691 85.137441) + (xy 153.081851 85.258439) + (xy 153.082428 85.262852) + (xy 153.082428 85.262853) + (xy 153.085282 85.284676) + (xy 153.095179 85.360354) + (xy 153.097175 85.37562) + (xy 153.084755 85.421814) + (xy 153.079397 85.427918) + (xy 151.791621 86.715694) + (xy 151.747427 86.734) + (xy 150.913548 86.734) + (xy 150.869354 86.715694) + (xy 150.851583 86.679657) + (xy 150.846847 86.643675) + (xy 150.846845 86.643667) + (xy 150.846221 86.638929) + (xy 150.835251 86.615404) + (xy 150.799723 86.539213) + (xy 150.799721 86.539211) + (xy 150.797411 86.534256) + (xy 150.715744 86.452589) + (xy 150.710789 86.450279) + (xy 150.710787 86.450277) + (xy 150.625338 86.410432) + (xy 150.611071 86.403779) + (xy 150.594831 86.401641) + (xy 150.565407 86.397767) + (xy 150.565399 86.397767) + (xy 150.563375 86.3975) + (xy 150.561328 86.3975) + (xy 150.249156 86.397501) + (xy 149.936626 86.397501) + (xy 149.934615 86.397766) + (xy 149.93461 86.397766) + (xy 149.893669 86.403155) + (xy 149.893668 86.403155) + (xy 149.888929 86.403779) + (xy 149.884595 86.4058) + (xy 149.789213 86.450277) + (xy 149.789211 86.450279) + (xy 149.784256 86.452589) + (xy 149.702589 86.534256) + (xy 149.700279 86.539211) + (xy 149.700277 86.539213) + (xy 149.688088 86.565353) + (xy 149.653779 86.638929) + (xy 149.653155 86.643669) + (xy 149.653155 86.64367) + (xy 149.647767 86.684593) + (xy 149.647767 86.684601) + (xy 149.6475 86.686625) + (xy 149.097581 86.686625) + (xy 149.092522 86.652257) + (xy 149.089674 86.64309) + (xy 149.042444 86.546895) + (xy 149.036516 86.538613) + (xy 148.960889 86.463117) + (xy 148.952594 86.457201) + (xy 148.856313 86.410137) + (xy 148.847149 86.407305) + (xy 148.785609 86.398328) + (xy 148.781096 86.398) + (xy 148.575931 86.398) + (xy 148.567141 86.401641) + (xy 148.5635 86.410431) + (xy 148.5635 86.899069) + (xy 148.4365 86.899069) + (xy 148.4365 86.410432) + (xy 148.432859 86.401642) + (xy 148.424069 86.398001) + (xy 148.218917 86.398001) + (xy 148.214386 86.398333) + (xy 148.152257 86.407478) + (xy 148.14309 86.410326) + (xy 148.046895 86.457556) + (xy 148.038613 86.463484) + (xy 147.963117 86.539111) + (xy 147.957201 86.547406) + (xy 147.910137 86.643687) + (xy 147.907305 86.652851) + (xy 147.898328 86.714391) + (xy 147.898 86.718904) + (xy 147.898 86.899069) + (xy 139.352499 86.899069) + (xy 139.352499 86.686626) + (xy 139.352232 86.684593) + (xy 139.346845 86.643669) + (xy 139.346845 86.643668) + (xy 139.346221 86.638929) + (xy 139.335251 86.615404) + (xy 139.299723 86.539213) + (xy 139.299721 86.539211) + (xy 139.297411 86.534256) + (xy 139.215744 86.452589) + (xy 139.210789 86.450279) + (xy 139.210787 86.450277) + (xy 139.125338 86.410432) + (xy 139.111071 86.403779) + (xy 139.094831 86.401641) + (xy 139.065407 86.397767) + (xy 139.065399 86.397767) + (xy 139.063375 86.3975) + (xy 139.061328 86.3975) + (xy 138.749156 86.397501) + (xy 138.436626 86.397501) + (xy 138.434615 86.397766) + (xy 138.43461 86.397766) + (xy 138.393669 86.403155) + (xy 138.393668 86.403155) + (xy 138.388929 86.403779) + (xy 138.384595 86.4058) + (xy 138.289213 86.450277) + (xy 138.289211 86.450279) + (xy 138.284256 86.452589) + (xy 138.202589 86.534256) + (xy 138.200279 86.539211) + (xy 138.200277 86.539213) + (xy 138.188088 86.565353) + (xy 138.153779 86.638929) + (xy 138.153155 86.643669) + (xy 138.153155 86.64367) + (xy 138.148797 86.67677) + (xy 138.124879 86.718197) + (xy 138.093745 86.730729) + (xy 138.067794 86.733617) + (xy 138.060881 86.734) + (xy 138.053467 86.734) + (xy 138.046544 86.735579) + (xy 138.039591 86.736755) + (xy 138.010571 86.739985) + (xy 138.004607 86.743719) + (xy 138.00067 86.74509) + (xy 137.996904 86.746903) + (xy 137.990041 86.748468) + (xy 137.980677 86.75593) + (xy 137.967229 86.766646) + (xy 137.961446 86.77074) + (xy 137.95829 86.772716) + (xy 137.958284 86.772721) + (xy 137.955289 86.774596) + (xy 137.950076 86.779809) + (xy 137.944832 86.784494) + (xy 137.921891 86.802775) + (xy 137.918833 86.809114) + (xy 137.914442 86.814615) + (xy 137.913908 86.814189) + (xy 137.909532 86.820353) + (xy 136.189191 88.540694) + (xy 136.144997 88.559) + (xy 134.923049 88.559) + (xy 134.878855 88.540694) + (xy 134.866156 88.522373) + (xy 134.865695 88.52136) + (xy 134.865694 88.521359) + (xy 134.863852 88.517307) + (xy 134.849199 88.500302) + (xy 134.847708 88.497375) + (xy 134.8419 88.491567) + (xy 134.838746 88.48817) + (xy 134.786826 88.427914) + (xy 134.783918 88.424539) + (xy 134.763741 88.411461) + (xy 134.760155 88.408559) + (xy 134.760081 88.408661) + (xy 134.756106 88.405773) + (xy 134.752625 88.402292) + (xy 134.741343 88.396543) + (xy 134.735736 88.393309) + (xy 134.729766 88.389439) + (xy 134.718916 88.382407) + (xy 134.684893 88.360354) + (xy 134.68489 88.360353) + (xy 134.68116 88.357935) + (xy 134.676901 88.356661) + (xy 134.676898 88.35666) + (xy 134.653677 88.349716) + (xy 134.648839 88.348269) + (xy 134.638377 88.344079) + (xy 134.632813 88.341244) + (xy 134.621067 88.339384) + (xy 134.612951 88.337536) + (xy 134.563838 88.322848) + (xy 134.519496 88.322577) + (xy 134.510103 88.321809) + (xy 134.504857 88.320978) + (xy 134.504856 88.320978) + (xy 134.5 88.320209) + (xy 134.491373 88.321576) + (xy 134.48122 88.322344) + (xy 134.462836 88.322231) + (xy 134.445838 88.322127) + (xy 134.445836 88.322127) + (xy 134.441385 88.3221) + (xy 134.387011 88.337641) + (xy 134.379623 88.339275) + (xy 134.367187 88.341244) + (xy 134.362804 88.343477) + (xy 134.36187 88.343781) + (xy 134.352156 88.347603) + (xy 134.351301 88.347847) + (xy 134.327929 88.354526) + (xy 134.327927 88.354527) + (xy 134.323644 88.355751) + (xy 134.264119 88.393309) + (xy 134.262819 88.394129) + (xy 134.257845 88.396957) + (xy 134.25669 88.397546) + (xy 134.251757 88.400059) + (xy 134.251756 88.40006) + (xy 134.247375 88.402292) + (xy 134.243897 88.40577) + (xy 134.242445 88.406825) + (xy 134.239058 88.40912) + (xy 134.22008 88.421095) + (xy 134.217137 88.424427) + (xy 134.217135 88.424429) + (xy 134.157156 88.492342) + (xy 134.156032 88.493538) + (xy 134.155775 88.493892) + (xy 134.155554 88.494113) + (xy 134.155405 88.494204) + (xy 134.154504 88.495163) + (xy 134.152292 88.497375) + (xy 134.151509 88.496592) + (xy 134.150362 88.497296) + (xy 134.151721 88.498496) + (xy 134.139018 88.512879) + (xy 134.137127 88.516907) + (xy 134.088868 88.619695) + (xy 134.088867 88.619698) + (xy 134.086976 88.623726) + (xy 134.068136 88.744724) + (xy 133.743514 88.744724) + (xy 133.758973 88.693682) + (xy 133.769799 88.519176) + (xy 133.74019 88.346859) + (xy 133.671733 88.185976) + (xy 133.568102 88.045157) + (xy 133.544022 88.024699) + (xy 133.469109 87.961057) + (xy 133.434854 87.931955) + (xy 133.279138 87.852442) + (xy 133.109307 87.810885) + (xy 133.101635 87.810409) + (xy 133.099235 87.81026) + (xy 133.099231 87.81026) + (xy 133.098266 87.8102) + (xy 132.972221 87.8102) + (xy 132.970431 87.810409) + (xy 132.970426 87.810409) + (xy 132.93117 87.814986) + (xy 132.842335 87.825343) + (xy 132.83892 87.826582) + (xy 132.838918 87.826583) + (xy 132.79131 87.843864) + (xy 132.677985 87.884999) + (xy 132.674949 87.88699) + (xy 132.674948 87.88699) + (xy 132.657306 87.898557) + (xy 132.531767 87.980864) + (xy 132.411525 88.107795) + (xy 132.409703 88.110933) + (xy 132.4097 88.110936) + (xy 132.327401 88.252625) + (xy 132.323708 88.258983) + (xy 132.322086 88.264337) + (xy 132.277619 88.411158) + (xy 132.273027 88.426318) + (xy 132.262201 88.600824) + (xy 131.732734 88.600824) + (xy 131.737799 88.519176) + (xy 131.70819 88.346859) + (xy 131.639733 88.185976) + (xy 131.536102 88.045157) + (xy 131.512022 88.024699) + (xy 131.437109 87.961057) + (xy 131.402854 87.931955) + (xy 131.247138 87.852442) + (xy 131.077307 87.810885) + (xy 131.069635 87.810409) + (xy 131.067235 87.81026) + (xy 131.067231 87.81026) + (xy 131.066266 87.8102) + (xy 130.940221 87.8102) + (xy 130.938431 87.810409) + (xy 130.938426 87.810409) + (xy 130.89917 87.814986) + (xy 130.810335 87.825343) + (xy 130.80692 87.826582) + (xy 130.806918 87.826583) + (xy 130.75931 87.843864) + (xy 130.645985 87.884999) + (xy 130.642949 87.88699) + (xy 130.642948 87.88699) + (xy 130.625306 87.898557) + (xy 130.499767 87.980864) + (xy 130.379525 88.107795) + (xy 130.377703 88.110933) + (xy 130.3777 88.110936) + (xy 130.295401 88.252625) + (xy 130.291708 88.258983) + (xy 130.290086 88.264337) + (xy 130.245619 88.411158) + (xy 130.241027 88.426318) + (xy 130.230201 88.600824) + (xy 106.028248 88.600824) + (xy 106.075913 88.525716) + (xy 106.078952 88.519484) + (xy 106.135085 88.361844) + (xy 106.136672 88.355076) + (xy 106.148505 88.255844) + (xy 106.145931 88.246685) + (xy 106.140255 88.2435) + (xy 104.950931 88.2435) + (xy 104.942141 88.247141) + (xy 104.9385 88.255931) + (xy 104.9385 88.944569) + (xy 104.8115 88.944569) + (xy 104.8115 88.255931) + (xy 104.807859 88.247141) + (xy 104.799069 88.2435) + (xy 103.612781 88.2435) + (xy 103.603991 88.247141) + (xy 103.601392 88.253415) + (xy 103.610958 88.344436) + (xy 103.612447 88.351207) + (xy 103.666375 88.509618) + (xy 103.669331 88.5159) + (xy 103.757009 88.658417) + (xy 103.761289 88.663896) + (xy 103.878359 88.783443) + (xy 103.883745 88.787836) + (xy 103.992517 88.857935) + (xy 104.019749 88.897262) + (xy 104.011195 88.944327) + (xy 103.983485 88.967828) + (xy 103.860054 89.021242) + (xy 103.741987 89.11685) + (xy 103.739521 89.12032) + (xy 103.739519 89.120322) + (xy 103.690945 89.188672) + (xy 103.65398 89.240687) + (xy 103.634996 89.293417) + (xy 103.606537 89.372467) + (xy 103.602518 89.383629) + (xy 103.591391 89.535145) + (xy 99.3 89.535145) + (xy 99.3 88.253415) + (xy 99.626392 88.253415) + (xy 99.635958 88.344436) + (xy 99.637447 88.351207) + (xy 99.691375 88.509618) + (xy 99.694331 88.5159) + (xy 99.782009 88.658417) + (xy 99.786289 88.663896) + (xy 99.903359 88.783443) + (xy 99.908745 88.787836) + (xy 100.049396 88.87848) + (xy 100.055613 88.881566) + (xy 100.212854 88.938798) + (xy 100.219607 88.940431) + (xy 100.348804 88.956753) + (xy 100.352734 88.957) + (xy 100.974069 88.957) + (xy 100.982859 88.953359) + (xy 100.9865 88.944569) + (xy 101.1135 88.944569) + (xy 101.117141 88.953359) + (xy 101.125931 88.957) + (xy 101.742089 88.957) + (xy 101.745567 88.956806) + (xy 101.86976 88.942876) + (xy 101.876538 88.941335) + (xy 102.034549 88.886309) + (xy 102.040822 88.883304) + (xy 102.182721 88.794636) + (xy 102.188167 88.790319) + (xy 102.306902 88.672411) + (xy 102.311248 88.667006) + (xy 102.400913 88.525716) + (xy 102.403952 88.519484) + (xy 102.460085 88.361844) + (xy 102.461672 88.355076) + (xy 102.473505 88.255844) + (xy 102.470931 88.246685) + (xy 102.465255 88.2435) + (xy 101.125931 88.2435) + (xy 101.117141 88.247141) + (xy 101.1135 88.255931) + (xy 101.1135 88.944569) + (xy 100.9865 88.944569) + (xy 100.9865 88.255931) + (xy 100.982859 88.247141) + (xy 100.974069 88.2435) + (xy 99.637781 88.2435) + (xy 99.628991 88.247141) + (xy 99.626392 88.253415) + (xy 99.3 88.253415) + (xy 99.3 88.104156) + (xy 99.626495 88.104156) + (xy 99.629069 88.113315) + (xy 99.634745 88.1165) + (xy 100.974069 88.1165) + (xy 100.982859 88.112859) + (xy 100.9865 88.104069) + (xy 101.1135 88.104069) + (xy 101.117141 88.112859) + (xy 101.125931 88.1165) + (xy 102.462219 88.1165) + (xy 102.471009 88.112859) + (xy 102.473608 88.106585) + (xy 102.473353 88.104156) + (xy 103.601495 88.104156) + (xy 103.604069 88.113315) + (xy 103.609745 88.1165) + (xy 104.799069 88.1165) + (xy 104.807859 88.112859) + (xy 104.8115 88.104069) + (xy 104.9385 88.104069) + (xy 104.942141 88.112859) + (xy 104.950931 88.1165) + (xy 106.137219 88.1165) + (xy 106.146009 88.112859) + (xy 106.148608 88.106585) + (xy 106.139042 88.015564) + (xy 106.137553 88.008793) + (xy 106.083625 87.850382) + (xy 106.080669 87.8441) + (xy 105.992991 87.701583) + (xy 105.988711 87.696104) + (xy 105.871641 87.576557) + (xy 105.866254 87.572163) + (xy 105.725604 87.48152) + (xy 105.719387 87.478434) + (xy 105.562146 87.421202) + (xy 105.555393 87.419569) + (xy 105.426196 87.403247) + (xy 105.422266 87.403) + (xy 104.950931 87.403) + (xy 104.942141 87.406641) + (xy 104.9385 87.415431) + (xy 104.9385 88.104069) + (xy 104.8115 88.104069) + (xy 104.8115 87.415431) + (xy 104.807859 87.406641) + (xy 104.799069 87.403) + (xy 104.332911 87.403) + (xy 104.329433 87.403194) + (xy 104.20524 87.417124) + (xy 104.198462 87.418665) + (xy 104.040451 87.473691) + (xy 104.034178 87.476696) + (xy 103.892279 87.565364) + (xy 103.886833 87.569681) + (xy 103.768098 87.687589) + (xy 103.763752 87.692994) + (xy 103.674087 87.834284) + (xy 103.671048 87.840516) + (xy 103.614915 87.998156) + (xy 103.613328 88.004924) + (xy 103.601495 88.104156) + (xy 102.473353 88.104156) + (xy 102.464042 88.015564) + (xy 102.462553 88.008793) + (xy 102.408625 87.850382) + (xy 102.405669 87.8441) + (xy 102.317991 87.701583) + (xy 102.313711 87.696104) + (xy 102.196641 87.576557) + (xy 102.191254 87.572163) + (xy 102.050604 87.48152) + (xy 102.044387 87.478434) + (xy 101.887146 87.421202) + (xy 101.880393 87.419569) + (xy 101.751196 87.403247) + (xy 101.747266 87.403) + (xy 101.125931 87.403) + (xy 101.117141 87.406641) + (xy 101.1135 87.415431) + (xy 101.1135 88.104069) + (xy 100.9865 88.104069) + (xy 100.9865 87.415431) + (xy 100.982859 87.406641) + (xy 100.974069 87.403) + (xy 100.357911 87.403) + (xy 100.354433 87.403194) + (xy 100.23024 87.417124) + (xy 100.223462 87.418665) + (xy 100.065451 87.473691) + (xy 100.059178 87.476696) + (xy 99.917279 87.565364) + (xy 99.911833 87.569681) + (xy 99.793098 87.687589) + (xy 99.788752 87.692994) + (xy 99.699087 87.834284) + (xy 99.696048 87.840516) + (xy 99.639915 87.998156) + (xy 99.638328 88.004924) + (xy 99.626495 88.104156) + (xy 99.3 88.104156) + (xy 99.3 86.662558) + (xy 113.0725 86.662558) + (xy 113.073099 86.665569) + (xy 113.078158 86.691) + (xy 113.079898 86.699748) + (xy 113.108078 86.741922) + (xy 113.150252 86.770102) + (xy 113.156285 86.771302) + (xy 113.156287 86.771303) + (xy 113.172843 86.774596) + (xy 113.187442 86.7775) + (xy 116.812558 86.7775) + (xy 116.827157 86.774596) + (xy 116.843713 86.771303) + (xy 116.843715 86.771302) + (xy 116.849748 86.770102) + (xy 116.891922 86.741922) + (xy 116.920102 86.699748) + (xy 116.921843 86.691) + (xy 116.926901 86.665569) + (xy 116.9275 86.662558) + (xy 116.9275 84.037442) + (xy 116.92515 84.02563) + (xy 116.921303 84.006287) + (xy 116.921302 84.006285) + (xy 116.920102 84.000252) + (xy 116.891922 83.958078) + (xy 116.849748 83.929898) + (xy 116.843715 83.928698) + (xy 116.843713 83.928697) + (xy 116.815569 83.923099) + (xy 116.812558 83.9225) + (xy 115.2535 83.9225) + (xy 115.209306 83.904194) + (xy 115.191 83.86) + (xy 115.191 83.084438) + (xy 124.023 83.084438) + (xy 124.023599 83.090519) + (xy 124.029169 83.118518) + (xy 124.033788 83.12967) + (xy 124.055019 83.161445) + (xy 124.063555 83.169981) + (xy 124.09533 83.191212) + (xy 124.106482 83.195831) + (xy 124.134481 83.201401) + (xy 124.140562 83.202) + (xy 124.924069 83.202) + (xy 124.932859 83.198359) + (xy 124.9365 83.189569) + (xy 125.0635 83.189569) + (xy 125.067141 83.198359) + (xy 125.075931 83.202) + (xy 125.859438 83.202) + (xy 125.865519 83.201401) + (xy 125.893518 83.195831) + (xy 125.90467 83.191212) + (xy 125.936445 83.169981) + (xy 125.944981 83.161445) + (xy 125.966212 83.12967) + (xy 125.970831 83.118518) + (xy 125.976401 83.090519) + (xy 125.977 83.084438) + (xy 125.977 82.300931) + (xy 125.973359 82.292141) + (xy 125.964569 82.2885) + (xy 125.075931 82.2885) + (xy 125.067141 82.292141) + (xy 125.0635 82.300931) + (xy 125.0635 83.189569) + (xy 124.9365 83.189569) + (xy 124.9365 82.300931) + (xy 124.932859 82.292141) + (xy 124.924069 82.2885) + (xy 124.035431 82.2885) + (xy 124.026641 82.292141) + (xy 124.023 82.300931) + (xy 124.023 83.084438) + (xy 115.191 83.084438) + (xy 115.191 82.149069) + (xy 124.023 82.149069) + (xy 124.026641 82.157859) + (xy 124.035431 82.1615) + (xy 124.924069 82.1615) + (xy 124.932859 82.157859) + (xy 124.9365 82.149069) + (xy 125.0635 82.149069) + (xy 125.067141 82.157859) + (xy 125.075931 82.1615) + (xy 125.964569 82.1615) + (xy 125.973359 82.157859) + (xy 125.977 82.149069) + (xy 125.977 81.365562) + (xy 125.976401 81.359481) + (xy 125.970831 81.331482) + (xy 125.966212 81.32033) + (xy 125.944981 81.288555) + (xy 125.936445 81.280019) + (xy 125.90467 81.258788) + (xy 125.893518 81.254169) + (xy 125.865519 81.248599) + (xy 125.859438 81.248) + (xy 125.075931 81.248) + (xy 125.067141 81.251641) + (xy 125.0635 81.260431) + (xy 125.0635 82.149069) + (xy 124.9365 82.149069) + (xy 124.9365 81.260431) + (xy 124.932859 81.251641) + (xy 124.924069 81.248) + (xy 124.140562 81.248) + (xy 124.134481 81.248599) + (xy 124.106482 81.254169) + (xy 124.09533 81.258788) + (xy 124.063555 81.280019) + (xy 124.055019 81.288555) + (xy 124.033788 81.32033) + (xy 124.029169 81.331482) + (xy 124.023599 81.359481) + (xy 124.023 81.365562) + (xy 124.023 82.149069) + (xy 115.191 82.149069) + (xy 115.191 81.355003) + (xy 115.209306 81.310809) + (xy 116.310809 80.209306) + (xy 116.355003 80.191) + (xy 126.159077 80.191) + (xy 126.203271 80.209306) + (xy 127.359528 81.365562) + (xy 128.446272 82.452306) + (xy 128.464578 82.4965) + (xy 128.446272 82.540694) + (xy 128.402078 82.559) + (xy 127.873049 82.559) + (xy 127.828855 82.540694) + (xy 127.816156 82.522373) + (xy 127.815695 82.52136) + (xy 127.815694 82.521359) + (xy 127.813852 82.517307) + (xy 127.799199 82.500302) + (xy 127.797708 82.497375) + (xy 127.7919 82.491567) + (xy 127.788746 82.48817) + (xy 127.736826 82.427914) + (xy 127.733918 82.424539) + (xy 127.713741 82.411461) + (xy 127.710155 82.408559) + (xy 127.710081 82.408661) + (xy 127.706106 82.405773) + (xy 127.702625 82.402292) + (xy 127.691343 82.396543) + (xy 127.685736 82.393309) + (xy 127.634893 82.360354) + (xy 127.63489 82.360353) + (xy 127.63116 82.357935) + (xy 127.626901 82.356661) + (xy 127.626898 82.35666) + (xy 127.608345 82.351112) + (xy 127.598839 82.348269) + (xy 127.588377 82.344079) + (xy 127.582813 82.341244) + (xy 127.571067 82.339384) + (xy 127.562951 82.337536) + (xy 127.513838 82.322848) + (xy 127.469496 82.322577) + (xy 127.460103 82.321809) + (xy 127.454857 82.320978) + (xy 127.454856 82.320978) + (xy 127.45 82.320209) + (xy 127.441373 82.321576) + (xy 127.43122 82.322344) + (xy 127.412836 82.322231) + (xy 127.395838 82.322127) + (xy 127.395836 82.322127) + (xy 127.391385 82.3221) + (xy 127.337011 82.337641) + (xy 127.329623 82.339275) + (xy 127.317187 82.341244) + (xy 127.312804 82.343477) + (xy 127.31187 82.343781) + (xy 127.302155 82.347603) + (xy 127.277929 82.354526) + (xy 127.277927 82.354527) + (xy 127.273644 82.355751) + (xy 127.269875 82.358129) + (xy 127.264906 82.361264) + (xy 127.214119 82.393309) + (xy 127.212819 82.394129) + (xy 127.207842 82.396959) + (xy 127.201757 82.400059) + (xy 127.201756 82.40006) + (xy 127.197375 82.402292) + (xy 127.193897 82.40577) + (xy 127.192445 82.406825) + (xy 127.189058 82.40912) + (xy 127.17008 82.421095) + (xy 127.167137 82.424427) + (xy 127.167135 82.424429) + (xy 127.107156 82.492342) + (xy 127.106032 82.493538) + (xy 127.105775 82.493892) + (xy 127.105554 82.494113) + (xy 127.105405 82.494204) + (xy 127.104504 82.495163) + (xy 127.102292 82.497375) + (xy 127.101509 82.496592) + (xy 127.100362 82.497296) + (xy 127.101721 82.498496) + (xy 127.089018 82.512879) + (xy 127.087127 82.516907) + (xy 127.038868 82.619695) + (xy 127.038867 82.619698) + (xy 127.036976 82.623726) + (xy 127.018136 82.744724) + (xy 127.018713 82.749137) + (xy 127.018713 82.749138) + (xy 127.032774 82.85666) + (xy 127.034014 82.866145) + (xy 127.041185 82.882443) + (xy 127.041244 82.882813) + (xy 127.042007 82.884311) + (xy 127.044031 82.88891) + (xy 127.044031 82.888911) + (xy 127.068811 82.945226) + (xy 127.083333 82.97823) + (xy 127.097188 82.994713) + (xy 127.098029 82.995713) + (xy 127.100157 82.998434) + (xy 127.102292 83.002625) + (xy 127.110081 83.010414) + (xy 127.11373 83.014392) + (xy 127.129888 83.033614) + (xy 127.162127 83.071968) + (xy 127.185399 83.087459) + (xy 127.191836 83.092733) + (xy 127.193899 83.094232) + (xy 127.197375 83.097708) + (xy 127.201753 83.099939) + (xy 127.201756 83.099941) + (xy 127.20873 83.103494) + (xy 127.214977 83.107148) + (xy 127.264064 83.139823) + (xy 127.268313 83.141151) + (xy 127.268314 83.141151) + (xy 127.300296 83.151143) + (xy 127.310027 83.155109) + (xy 127.312799 83.156521) + (xy 127.312803 83.156522) + (xy 127.317187 83.158756) + (xy 127.32777 83.160432) + (xy 127.327852 83.160445) + (xy 127.336713 83.16252) + (xy 127.376696 83.175012) + (xy 127.376699 83.175012) + (xy 127.380948 83.17634) + (xy 127.430069 83.177241) + (xy 127.438683 83.177999) + (xy 127.44514 83.179022) + (xy 127.445144 83.179022) + (xy 127.45 83.179791) + (xy 127.456947 83.17869) + (xy 127.467853 83.177933) + (xy 127.503383 83.178584) + (xy 127.563532 83.162185) + (xy 127.57019 83.160755) + (xy 127.582814 83.158756) + (xy 127.583257 83.161552) + (xy 127.621663 83.16459) + (xy 127.652716 83.200977) + (xy 127.648944 83.248663) + (xy 127.644176 83.255667) + (xy 127.64441 83.25582) + (xy 127.641964 83.259543) + (xy 127.639018 83.262879) + (xy 127.637127 83.266907) + (xy 127.588868 83.369695) + (xy 127.588867 83.369698) + (xy 127.586976 83.373726) + (xy 127.568136 83.494724) + (xy 127.568713 83.499137) + (xy 127.568713 83.499138) + (xy 127.580156 83.586645) + (xy 127.584014 83.616145) + (xy 127.591185 83.632443) + (xy 127.591244 83.632813) + (xy 127.592007 83.634311) + (xy 127.594031 83.63891) + (xy 127.594031 83.638911) + (xy 127.599633 83.651642) + (xy 127.633333 83.72823) + (xy 127.635301 83.730571) + (xy 127.643031 83.777256) + (xy 127.615185 83.816151) + (xy 127.572954 83.821801) + (xy 127.572509 83.824782) + (xy 127.568104 83.824124) + (xy 127.563838 83.822848) + (xy 127.519496 83.822577) + (xy 127.510103 83.821809) + (xy 127.510053 83.821801) + (xy 127.508469 83.82155) + (xy 127.504857 83.820978) + (xy 127.504856 83.820978) + (xy 127.5 83.820209) + (xy 127.491373 83.821576) + (xy 127.48122 83.822344) + (xy 127.462836 83.822231) + (xy 127.445838 83.822127) + (xy 127.445836 83.822127) + (xy 127.441385 83.8221) + (xy 127.387011 83.837641) + (xy 127.379623 83.839275) + (xy 127.367187 83.841244) + (xy 127.362804 83.843477) + (xy 127.36187 83.843781) + (xy 127.352156 83.847603) + (xy 127.345936 83.84938) + (xy 127.327929 83.854526) + (xy 127.327927 83.854527) + (xy 127.323644 83.855751) + (xy 127.319875 83.858129) + (xy 127.315624 83.860811) + (xy 127.269644 83.889823) + (xy 127.262819 83.894129) + (xy 127.257842 83.896959) + (xy 127.251757 83.900059) + (xy 127.251756 83.90006) + (xy 127.247375 83.902292) + (xy 127.243897 83.90577) + (xy 127.242445 83.906825) + (xy 127.239058 83.90912) + (xy 127.22008 83.921095) + (xy 127.217137 83.924427) + (xy 127.217135 83.924429) + (xy 127.157156 83.992342) + (xy 127.156032 83.993538) + (xy 127.155774 83.993893) + (xy 127.155554 83.994113) + (xy 127.155405 83.994204) + (xy 127.154504 83.995163) + (xy 127.152292 83.997375) + (xy 127.151509 83.996592) + (xy 127.150362 83.997296) + (xy 127.151721 83.998496) + (xy 127.139018 84.012879) + (xy 127.137127 84.016906) + (xy 127.137126 84.016908) + (xy 127.134237 84.023062) + (xy 127.098884 84.055287) + (xy 127.077662 84.059) + (xy 125.702676 84.059) + (xy 125.662837 84.044657) + (xy 125.651966 84.035663) + (xy 125.549256 83.950694) + (xy 125.380629 83.859518) + (xy 125.282031 83.828997) + (xy 125.20042 83.803734) + (xy 125.200417 83.803733) + (xy 125.197505 83.802832) + (xy 125.194472 83.802513) + (xy 125.194471 83.802513) + (xy 125.142436 83.797044) + (xy 125.006857 83.782794) + (xy 125.003824 83.78307) + (xy 125.00382 83.78307) + (xy 124.921118 83.790597) + (xy 124.815948 83.800168) + (xy 124.63205 83.854292) + (xy 124.462167 83.943105) + (xy 124.31277 84.063223) + (xy 124.189549 84.210072) + (xy 124.139443 84.301214) + (xy 124.100405 84.372225) + (xy 124.097198 84.378058) + (xy 124.059165 84.497952) + (xy 124.043037 84.548796) + (xy 124.039234 84.560783) + (xy 124.037827 84.573324) + (xy 124.018305 84.747375) + (xy 124.017866 84.751286) + (xy 124.022778 84.809779) + (xy 124.033363 84.935832) + (xy 124.033907 84.942311) + (xy 124.086746 85.126583) + (xy 124.17437 85.297082) + (xy 124.293443 85.447314) + (xy 124.295773 85.449297) + (xy 124.371724 85.513936) + (xy 124.439428 85.571557) + (xy 124.442092 85.573046) + (xy 124.442095 85.573048) + (xy 124.575311 85.6475) + (xy 124.606765 85.665079) + (xy 124.609669 85.666023) + (xy 124.60967 85.666023) + (xy 124.786168 85.723371) + (xy 124.786173 85.723372) + (xy 124.789081 85.724317) + (xy 124.97943 85.747015) + (xy 124.982472 85.746781) + (xy 124.982475 85.746781) + (xy 125.167514 85.732543) + (xy 125.167519 85.732542) + (xy 125.170562 85.732308) + (xy 125.199182 85.724317) + (xy 125.35226 85.681577) + (xy 125.352264 85.681576) + (xy 125.355199 85.680756) + (xy 125.526305 85.594324) + (xy 125.528703 85.592451) + (xy 125.528707 85.592448) + (xy 125.609779 85.529107) + (xy 125.677365 85.476303) + (xy 125.704455 85.444919) + (xy 125.80063 85.3335) + (xy 125.800634 85.333495) + (xy 125.802624 85.331189) + (xy 125.807093 85.323323) + (xy 125.895801 85.16717) + (xy 125.895803 85.167165) + (xy 125.897312 85.164509) + (xy 125.957821 84.982612) + (xy 125.962542 84.945247) + (xy 125.981627 84.794167) + (xy 125.981627 84.794166) + (xy 125.981847 84.792425) + (xy 125.982202 84.766994) + (xy 125.982206 84.766738) + (xy 125.982206 84.766733) + (xy 125.98223 84.765) + (xy 125.980886 84.751286) + (xy 125.963822 84.577257) + (xy 125.963524 84.574217) + (xy 125.947627 84.521564) + (xy 125.952377 84.473966) + (xy 125.989394 84.443668) + (xy 126.007459 84.441) + (xy 127.076187 84.441) + (xy 127.120381 84.459306) + (xy 127.129248 84.470473) + (xy 127.13154 84.474155) + (xy 127.133333 84.47823) + (xy 127.145942 84.49323) + (xy 127.148029 84.495713) + (xy 127.150157 84.498434) + (xy 127.152292 84.502625) + (xy 127.160081 84.510414) + (xy 127.16373 84.514392) + (xy 127.200277 84.55787) + (xy 127.212127 84.571968) + (xy 127.235399 84.587459) + (xy 127.241836 84.592733) + (xy 127.243899 84.594232) + (xy 127.247375 84.597708) + (xy 127.251753 84.599939) + (xy 127.251756 84.599941) + (xy 127.25873 84.603494) + (xy 127.264977 84.607148) + (xy 127.314064 84.639823) + (xy 127.318313 84.641151) + (xy 127.318314 84.641151) + (xy 127.350296 84.651143) + (xy 127.360027 84.655109) + (xy 127.362799 84.656521) + (xy 127.362803 84.656522) + (xy 127.367187 84.658756) + (xy 127.377852 84.660445) + (xy 127.386713 84.66252) + (xy 127.426696 84.675012) + (xy 127.426699 84.675012) + (xy 127.430948 84.67634) + (xy 127.480069 84.677241) + (xy 127.488683 84.677999) + (xy 127.49514 84.679022) + (xy 127.495144 84.679022) + (xy 127.5 84.679791) + (xy 127.506947 84.67869) + (xy 127.517853 84.677933) + (xy 127.553383 84.678584) + (xy 127.566704 84.674952) + (xy 127.614155 84.680988) + (xy 127.643442 84.71881) + (xy 127.636625 84.761755) + (xy 127.639018 84.762879) + (xy 127.634237 84.773062) + (xy 127.598884 84.805287) + (xy 127.577662 84.809) + (xy 127.348232 84.809) + (xy 127.340893 84.80775) + (xy 127.34081 84.808477) + (xy 127.333819 84.80768) + (xy 127.327178 84.805348) + (xy 127.320185 84.806126) + (xy 127.320184 84.806126) + (xy 127.297803 84.808617) + (xy 127.29089 84.809) + (xy 127.283467 84.809) + (xy 127.276535 84.810581) + (xy 127.269582 84.811757) + (xy 127.240571 84.814986) + (xy 127.234607 84.818719) + (xy 127.230659 84.820094) + (xy 127.2269 84.821903) + (xy 127.220041 84.823468) + (xy 127.214539 84.827853) + (xy 127.214538 84.827853) + (xy 127.197227 84.841648) + (xy 127.191441 84.845744) + (xy 127.190258 84.846485) + (xy 127.185289 84.849596) + (xy 127.180076 84.854809) + (xy 127.174832 84.859494) + (xy 127.162031 84.869695) + (xy 127.151891 84.877775) + (xy 127.148833 84.884114) + (xy 127.144442 84.889615) + (xy 127.143908 84.889189) + (xy 127.139532 84.895353) + (xy 125.57891 86.455975) + (xy 125.534716 86.474281) + (xy 125.50499 86.466759) + (xy 125.458431 86.441585) + (xy 125.380629 86.399518) + (xy 125.296216 86.373388) + (xy 125.20042 86.343734) + (xy 125.200417 86.343733) + (xy 125.197505 86.342832) + (xy 125.194472 86.342513) + (xy 125.194471 86.342513) + (xy 125.146787 86.337501) + (xy 125.006857 86.322794) + (xy 125.003824 86.32307) + (xy 125.00382 86.32307) + (xy 124.921118 86.330597) + (xy 124.815948 86.340168) + (xy 124.813019 86.34103) + (xy 124.797002 86.345744) + (xy 124.63205 86.394292) + (xy 124.462167 86.483105) + (xy 124.31277 86.603223) + (xy 124.189549 86.750072) + (xy 124.154066 86.814615) + (xy 124.100426 86.912187) + (xy 124.097198 86.918058) + (xy 124.039234 87.100783) + (xy 124.038056 87.111289) + (xy 124.018655 87.284256) + (xy 124.017866 87.291286) + (xy 124.023279 87.355751) + (xy 124.031484 87.453452) + (xy 124.033907 87.482311) + (xy 124.086746 87.666583) + (xy 124.128267 87.747375) + (xy 124.166086 87.820962) + (xy 124.17437 87.837082) + (xy 124.293443 87.987314) + (xy 124.295773 87.989297) + (xy 124.433436 88.106457) + (xy 124.439428 88.111557) + (xy 124.442092 88.113046) + (xy 124.442095 88.113048) + (xy 124.580157 88.190208) + (xy 124.606765 88.205079) + (xy 124.609669 88.206023) + (xy 124.60967 88.206023) + (xy 124.786168 88.263371) + (xy 124.786173 88.263372) + (xy 124.789081 88.264317) + (xy 124.97943 88.287015) + (xy 124.982472 88.286781) + (xy 124.982475 88.286781) + (xy 125.167514 88.272543) + (xy 125.167519 88.272542) + (xy 125.170562 88.272308) + (xy 125.182926 88.268856) + (xy 125.35226 88.221577) + (xy 125.352264 88.221576) + (xy 125.355199 88.220756) + (xy 125.417643 88.189213) + (xy 125.523585 88.135698) + (xy 125.526305 88.134324) + (xy 125.528703 88.132451) + (xy 125.528707 88.132448) + (xy 125.614515 88.065407) + (xy 125.677365 88.016303) + (xy 125.680154 88.013072) + (xy 125.80063 87.8735) + (xy 125.800634 87.873495) + (xy 125.802624 87.871189) + (xy 125.804132 87.868535) + (xy 125.895801 87.70717) + (xy 125.895803 87.707165) + (xy 125.897312 87.704509) + (xy 125.95218 87.539569) + (xy 125.956858 87.525507) + (xy 125.957821 87.522612) + (xy 125.958492 87.517307) + (xy 125.981627 87.334167) + (xy 125.981627 87.334166) + (xy 125.981847 87.332425) + (xy 125.982149 87.310787) + (xy 125.982206 87.306738) + (xy 125.982206 87.306733) + (xy 125.98223 87.305) + (xy 125.981519 87.297743) + (xy 125.963822 87.117257) + (xy 125.963821 87.11725) + (xy 125.963524 87.114217) + (xy 125.908117 86.930701) + (xy 125.840097 86.802775) + (xy 125.838288 86.799372) + (xy 125.834105 86.75593) + (xy 128.016633 86.75593) + (xy 128.017021 86.758465) + (xy 128.017021 86.758466) + (xy 128.017476 86.761442) + (xy 128.052498 86.990314) + (xy 128.053296 86.992754) + (xy 128.053296 86.992756) + (xy 128.124653 87.211071) + (xy 128.126164 87.215693) + (xy 128.127349 87.21797) + (xy 128.127351 87.217974) + (xy 128.234463 87.423735) + (xy 128.234467 87.423741) + (xy 128.23565 87.426014) + (xy 128.378017 87.61563) + (xy 128.379869 87.617399) + (xy 128.37987 87.617401) + (xy 128.422223 87.657874) + (xy 128.549441 87.779446) + (xy 128.551561 87.780892) + (xy 128.551562 87.780893) + (xy 128.710943 87.889615) + (xy 128.745319 87.913065) + (xy 128.747651 87.914148) + (xy 128.747652 87.914148) + (xy 128.95504 88.010414) + (xy 128.960391 88.012898) + (xy 128.962858 88.013582) + (xy 128.962863 88.013584) + (xy 129.115089 88.0558) + (xy 129.188879 88.076264) + (xy 129.246886 88.082463) + (xy 129.380798 88.096774) + (xy 129.380802 88.096774) + (xy 129.382447 88.09695) + (xy 129.52011 88.09695) + (xy 129.696315 88.082463) + (xy 129.736601 88.072344) + (xy 129.923797 88.025324) + (xy 129.9238 88.025323) + (xy 129.926284 88.024699) + (xy 129.954736 88.012328) + (xy 130.027098 87.980864) + (xy 130.14373 87.930151) + (xy 130.342814 87.801358) + (xy 130.400909 87.748496) + (xy 130.51629 87.643507) + (xy 130.516291 87.643506) + (xy 130.51819 87.641778) + (xy 130.52044 87.638929) + (xy 130.663557 87.457712) + (xy 130.66356 87.457708) + (xy 130.665147 87.455698) + (xy 130.666913 87.4525) + (xy 130.778498 87.250362) + (xy 130.779739 87.248114) + (xy 130.815368 87.147501) + (xy 130.858032 87.027023) + (xy 130.858033 87.027019) + (xy 130.858889 87.024602) + (xy 130.859467 87.021357) + (xy 130.90002 86.7937) + (xy 130.900021 86.793693) + (xy 130.900471 86.791165) + (xy 130.900901 86.75593) + (xy 133.096633 86.75593) + (xy 133.097021 86.758465) + (xy 133.097021 86.758466) + (xy 133.097476 86.761442) + (xy 133.132498 86.990314) + (xy 133.133296 86.992754) + (xy 133.133296 86.992756) + (xy 133.204653 87.211071) + (xy 133.206164 87.215693) + (xy 133.207349 87.21797) + (xy 133.207351 87.217974) + (xy 133.314463 87.423735) + (xy 133.314467 87.423741) + (xy 133.31565 87.426014) + (xy 133.458017 87.61563) + (xy 133.459869 87.617399) + (xy 133.45987 87.617401) + (xy 133.502223 87.657874) + (xy 133.629441 87.779446) + (xy 133.631561 87.780892) + (xy 133.631562 87.780893) + (xy 133.790943 87.889615) + (xy 133.825319 87.913065) + (xy 133.827651 87.914148) + (xy 133.827652 87.914148) + (xy 134.03504 88.010414) + (xy 134.040391 88.012898) + (xy 134.042858 88.013582) + (xy 134.042863 88.013584) + (xy 134.195089 88.0558) + (xy 134.268879 88.076264) + (xy 134.326886 88.082463) + (xy 134.460798 88.096774) + (xy 134.460802 88.096774) + (xy 134.462447 88.09695) + (xy 134.60011 88.09695) + (xy 134.776315 88.082463) + (xy 134.816601 88.072344) + (xy 135.003797 88.025324) + (xy 135.0038 88.025323) + (xy 135.006284 88.024699) + (xy 135.034736 88.012328) + (xy 135.107098 87.980864) + (xy 135.22373 87.930151) + (xy 135.422814 87.801358) + (xy 135.480909 87.748496) + (xy 135.59629 87.643507) + (xy 135.596291 87.643506) + (xy 135.59819 87.641778) + (xy 135.60044 87.638929) + (xy 135.743557 87.457712) + (xy 135.74356 87.457708) + (xy 135.745147 87.455698) + (xy 135.746913 87.4525) + (xy 135.858498 87.250362) + (xy 135.859739 87.248114) + (xy 135.895368 87.147501) + (xy 135.938032 87.027023) + (xy 135.938033 87.027019) + (xy 135.938889 87.024602) + (xy 135.939467 87.021357) + (xy 135.98002 86.7937) + (xy 135.980021 86.793693) + (xy 135.980471 86.791165) + (xy 135.98228 86.64309) + (xy 135.983336 86.556638) + (xy 135.983336 86.556634) + (xy 135.983367 86.55407) + (xy 135.947502 86.319686) + (xy 135.945966 86.314985) + (xy 135.874635 86.096751) + (xy 135.874634 86.096749) + (xy 135.873836 86.094307) + (xy 135.872242 86.091244) + (xy 135.765537 85.886265) + (xy 135.765533 85.886259) + (xy 135.76435 85.883986) + (xy 135.621983 85.69437) + (xy 135.61859 85.691127) + (xy 135.518728 85.595698) + (xy 135.450559 85.530554) + (xy 135.426198 85.513936) + (xy 135.256807 85.398385) + (xy 135.256805 85.398384) + (xy 135.254681 85.396935) + (xy 135.25067 85.395073) + (xy 135.041938 85.298183) + (xy 135.041937 85.298183) + (xy 135.039609 85.297102) + (xy 135.037142 85.296418) + (xy 135.037137 85.296416) + (xy 134.854308 85.245713) + (xy 134.811121 85.233736) + (xy 134.721477 85.224156) + (xy 134.619202 85.213226) + (xy 134.619198 85.213226) + (xy 134.617553 85.21305) + (xy 134.47989 85.21305) + (xy 134.303685 85.227537) + (xy 134.301192 85.228163) + (xy 134.301193 85.228163) + (xy 134.076203 85.284676) + (xy 134.0762 85.284677) + (xy 134.073716 85.285301) + (xy 133.85627 85.379849) + (xy 133.657186 85.508642) + (xy 133.655287 85.51037) + (xy 133.486902 85.663589) + (xy 133.48181 85.668222) + (xy 133.480222 85.670233) + (xy 133.480219 85.670236) + (xy 133.336443 85.852288) + (xy 133.33644 85.852292) + (xy 133.334853 85.854302) + (xy 133.333614 85.856547) + (xy 133.333613 85.856548) + (xy 133.26869 85.974156) + (xy 133.220261 86.061886) + (xy 133.219403 86.064309) + (xy 133.154179 86.248496) + (xy 133.141111 86.285398) + (xy 133.140661 86.287924) + (xy 133.14066 86.287928) + (xy 133.09998 86.5163) + (xy 133.099979 86.516307) + (xy 133.099529 86.518835) + (xy 133.098115 86.634595) + (xy 133.096671 86.752855) + (xy 133.096633 86.75593) + (xy 130.900901 86.75593) + (xy 130.90228 86.64309) + (xy 130.903336 86.556638) + (xy 130.903336 86.556634) + (xy 130.903367 86.55407) + (xy 130.867502 86.319686) + (xy 130.865966 86.314985) + (xy 130.794635 86.096751) + (xy 130.794634 86.096749) + (xy 130.793836 86.094307) + (xy 130.792242 86.091244) + (xy 130.685537 85.886265) + (xy 130.685533 85.886259) + (xy 130.68435 85.883986) + (xy 130.541983 85.69437) + (xy 130.53859 85.691127) + (xy 130.438728 85.595698) + (xy 130.370559 85.530554) + (xy 130.346198 85.513936) + (xy 130.176807 85.398385) + (xy 130.176805 85.398384) + (xy 130.174681 85.396935) + (xy 130.17067 85.395073) + (xy 129.961938 85.298183) + (xy 129.961937 85.298183) + (xy 129.959609 85.297102) + (xy 129.957142 85.296418) + (xy 129.957137 85.296416) + (xy 129.774308 85.245713) + (xy 129.731121 85.233736) + (xy 129.641477 85.224156) + (xy 129.539202 85.213226) + (xy 129.539198 85.213226) + (xy 129.537553 85.21305) + (xy 129.39989 85.21305) + (xy 129.223685 85.227537) + (xy 129.221192 85.228163) + (xy 129.221193 85.228163) + (xy 128.996203 85.284676) + (xy 128.9962 85.284677) + (xy 128.993716 85.285301) + (xy 128.77627 85.379849) + (xy 128.577186 85.508642) + (xy 128.575287 85.51037) + (xy 128.406902 85.663589) + (xy 128.40181 85.668222) + (xy 128.400222 85.670233) + (xy 128.400219 85.670236) + (xy 128.256443 85.852288) + (xy 128.25644 85.852292) + (xy 128.254853 85.854302) + (xy 128.253614 85.856547) + (xy 128.253613 85.856548) + (xy 128.18869 85.974156) + (xy 128.140261 86.061886) + (xy 128.139403 86.064309) + (xy 128.074179 86.248496) + (xy 128.061111 86.285398) + (xy 128.060661 86.287924) + (xy 128.06066 86.287928) + (xy 128.01998 86.5163) + (xy 128.019979 86.516307) + (xy 128.019529 86.518835) + (xy 128.018115 86.634595) + (xy 128.016671 86.752855) + (xy 128.016633 86.75593) + (xy 125.834105 86.75593) + (xy 125.833703 86.751757) + (xy 125.849278 86.725836) + (xy 127.365808 85.209306) + (xy 127.410002 85.191) + (xy 127.576187 85.191) + (xy 127.620381 85.209306) + (xy 127.629248 85.220473) + (xy 127.63154 85.224155) + (xy 127.633333 85.22823) + (xy 127.647272 85.244813) + (xy 127.648029 85.245713) + (xy 127.650157 85.248434) + (xy 127.652292 85.252625) + (xy 127.660081 85.260414) + (xy 127.663729 85.264391) + (xy 127.712127 85.321968) + (xy 127.735399 85.337459) + (xy 127.741836 85.342733) + (xy 127.743899 85.344232) + (xy 127.747375 85.347708) + (xy 127.751753 85.349939) + (xy 127.751756 85.349941) + (xy 127.75873 85.353494) + (xy 127.764977 85.357148) + (xy 127.814064 85.389823) + (xy 127.818313 85.391151) + (xy 127.818314 85.391151) + (xy 127.850296 85.401143) + (xy 127.860027 85.405109) + (xy 127.862799 85.406521) + (xy 127.862803 85.406522) + (xy 127.867187 85.408756) + (xy 127.877852 85.410445) + (xy 127.886713 85.41252) + (xy 127.926696 85.425012) + (xy 127.926699 85.425012) + (xy 127.930948 85.42634) + (xy 127.980069 85.427241) + (xy 127.988683 85.427999) + (xy 127.99514 85.429022) + (xy 127.995144 85.429022) + (xy 128 85.429791) + (xy 128.006947 85.42869) + (xy 128.017853 85.427933) + (xy 128.053383 85.428584) + (xy 128.113532 85.412185) + (xy 128.12019 85.410755) + (xy 128.122147 85.410445) + (xy 128.132813 85.408756) + (xy 128.137196 85.406522) + (xy 128.141875 85.405002) + (xy 128.141878 85.40501) + (xy 128.146727 85.403136) + (xy 128.171527 85.396375) + (xy 128.176521 85.393309) + (xy 128.239709 85.354511) + (xy 128.244037 85.352085) + (xy 128.24824 85.349944) + (xy 128.248248 85.349938) + (xy 128.252625 85.347708) + (xy 128.255427 85.344906) + (xy 128.256264 85.344346) + (xy 128.261316 85.341244) + (xy 128.275881 85.332301) + (xy 128.358058 85.241513) + (xy 128.365454 85.226248) + (xy 128.401198 85.194458) + (xy 128.4217 85.191) + (xy 128.456768 85.191) + (xy 128.464107 85.19225) + (xy 128.46419 85.191523) + (xy 128.471181 85.19232) + (xy 128.477822 85.194652) + (xy 128.484815 85.193874) + (xy 128.484816 85.193874) + (xy 128.505939 85.191523) + (xy 128.507198 85.191383) + (xy 128.51411 85.191) + (xy 128.521533 85.191) + (xy 128.528465 85.189419) + (xy 128.535418 85.188243) + (xy 128.564429 85.185014) + (xy 128.570393 85.181281) + (xy 128.574341 85.179906) + (xy 128.5781 85.178097) + (xy 128.584959 85.176532) + (xy 128.590662 85.171988) + (xy 128.607773 85.158352) + (xy 128.613559 85.154256) + (xy 128.616715 85.15228) + (xy 128.616717 85.152279) + (xy 128.619711 85.150404) + (xy 128.624924 85.145191) + (xy 128.630168 85.140506) + (xy 128.647604 85.126612) + (xy 128.647604 85.126611) + (xy 128.653109 85.122225) + (xy 128.656167 85.115886) + (xy 128.660558 85.110385) + (xy 128.661092 85.110811) + (xy 128.665468 85.104647) + (xy 129.810809 83.959306) + (xy 129.855003 83.941) + (xy 136.456768 83.941) + (xy 136.464107 83.94225) + (xy 136.46419 83.941523) + (xy 136.471181 83.94232) + (xy 136.477822 83.944652) + (xy 136.484815 83.943874) + (xy 136.484816 83.943874) + (xy 136.507197 83.941383) + (xy 136.51411 83.941) + (xy 136.521533 83.941) + (xy 136.528465 83.939419) + (xy 136.535418 83.938243) + (xy 136.564429 83.935014) + (xy 136.570393 83.931281) + (xy 136.574341 83.929906) + (xy 136.5781 83.928097) + (xy 136.584959 83.926532) + (xy 136.607774 83.908351) + (xy 136.613559 83.904256) + (xy 136.616715 83.90228) + (xy 136.616717 83.902279) + (xy 136.619711 83.900404) + (xy 136.624924 83.895191) + (xy 136.630168 83.890506) + (xy 136.647604 83.876612) + (xy 136.647604 83.876611) + (xy 136.653109 83.872225) + (xy 136.656167 83.865886) + (xy 136.660558 83.860385) + (xy 136.661092 83.860811) + (xy 136.665468 83.854647) + (xy 138.003077 82.517038) + (xy 138.047271 82.498732) + (xy 138.091465 82.517038) + (xy 138.109771 82.561232) + (xy 138.103846 82.587794) + (xy 138.088868 82.619695) + (xy 138.088867 82.619698) + (xy 138.086976 82.623726) + (xy 138.068136 82.744724) + (xy 138.068713 82.749137) + (xy 138.068713 82.749138) + (xy 138.082774 82.85666) + (xy 138.084014 82.866145) + (xy 138.091185 82.882443) + (xy 138.091244 82.882813) + (xy 138.092007 82.884311) + (xy 138.133333 82.97823) + (xy 138.135301 82.980571) + (xy 138.143031 83.027256) + (xy 138.115185 83.066151) + (xy 138.072954 83.071801) + (xy 138.072509 83.074782) + (xy 138.068104 83.074124) + (xy 138.063838 83.072848) + (xy 138.019496 83.072577) + (xy 138.010103 83.071809) + (xy 138.010053 83.071801) + (xy 138.008469 83.07155) + (xy 138.004857 83.070978) + (xy 138.004856 83.070978) + (xy 138 83.070209) + (xy 137.991373 83.071576) + (xy 137.98122 83.072344) + (xy 137.962836 83.072231) + (xy 137.945838 83.072127) + (xy 137.945836 83.072127) + (xy 137.941385 83.0721) + (xy 137.887011 83.087641) + (xy 137.879623 83.089275) + (xy 137.867187 83.091244) + (xy 137.862804 83.093477) + (xy 137.86187 83.093781) + (xy 137.852156 83.097603) + (xy 137.845936 83.09938) + (xy 137.827929 83.104526) + (xy 137.827927 83.104527) + (xy 137.823644 83.105751) + (xy 137.764119 83.143309) + (xy 137.762819 83.144129) + (xy 137.757842 83.146959) + (xy 137.751757 83.150059) + (xy 137.751756 83.15006) + (xy 137.747375 83.152292) + (xy 137.743897 83.15577) + (xy 137.742445 83.156825) + (xy 137.739058 83.15912) + (xy 137.72008 83.171095) + (xy 137.717137 83.174427) + (xy 137.717135 83.174429) + (xy 137.657156 83.242342) + (xy 137.656032 83.243538) + (xy 137.655775 83.243892) + (xy 137.655554 83.244113) + (xy 137.655405 83.244204) + (xy 137.654504 83.245163) + (xy 137.652292 83.247375) + (xy 137.651509 83.246592) + (xy 137.650362 83.247296) + (xy 137.651721 83.248496) + (xy 137.645388 83.255667) + (xy 137.639018 83.262879) + (xy 137.637127 83.266907) + (xy 137.588868 83.369695) + (xy 137.588867 83.369698) + (xy 137.586976 83.373726) + (xy 137.568136 83.494724) + (xy 137.568713 83.499137) + (xy 137.568713 83.499138) + (xy 137.580156 83.586645) + (xy 137.584014 83.616145) + (xy 137.591185 83.632443) + (xy 137.591244 83.632813) + (xy 137.592007 83.634311) + (xy 137.594031 83.63891) + (xy 137.594031 83.638911) + (xy 137.625141 83.709612) + (xy 137.633333 83.72823) + (xy 137.647273 83.744814) + (xy 137.648029 83.745713) + (xy 137.650157 83.748434) + (xy 137.652292 83.752625) + (xy 137.660081 83.760414) + (xy 137.66373 83.764392) + (xy 137.70807 83.817141) + (xy 137.712127 83.821968) + (xy 137.735399 83.837459) + (xy 137.741836 83.842733) + (xy 137.743899 83.844232) + (xy 137.747375 83.847708) + (xy 137.751753 83.849939) + (xy 137.751756 83.849941) + (xy 137.75873 83.853494) + (xy 137.764977 83.857148) + (xy 137.814064 83.889823) + (xy 137.818313 83.891151) + (xy 137.818314 83.891151) + (xy 137.850296 83.901143) + (xy 137.860027 83.905109) + (xy 137.862799 83.906521) + (xy 137.862803 83.906522) + (xy 137.867187 83.908756) + (xy 137.877852 83.910445) + (xy 137.886713 83.91252) + (xy 137.926696 83.925012) + (xy 137.926699 83.925012) + (xy 137.930948 83.92634) + (xy 137.980069 83.927241) + (xy 137.988683 83.927999) + (xy 137.99514 83.929022) + (xy 137.995144 83.929022) + (xy 138 83.929791) + (xy 138.006947 83.92869) + (xy 138.017853 83.927933) + (xy 138.053383 83.928584) + (xy 138.066704 83.924952) + (xy 138.114155 83.930988) + (xy 138.143442 83.96881) + (xy 138.136625 84.011755) + (xy 138.139018 84.012879) + (xy 138.088868 84.119695) + (xy 138.088867 84.119698) + (xy 138.086976 84.123726) + (xy 138.068136 84.244724) + (xy 138.068713 84.249137) + (xy 138.068713 84.249138) + (xy 138.08223 84.3525) + (xy 138.084014 84.366145) + (xy 138.091185 84.382443) + (xy 138.091244 84.382813) + (xy 138.092007 84.384311) + (xy 138.094031 84.38891) + (xy 138.094031 84.388911) + (xy 138.095698 84.3927) + (xy 138.133333 84.47823) + (xy 138.135301 84.480571) + (xy 138.143031 84.527256) + (xy 138.115185 84.566151) + (xy 138.072954 84.571801) + (xy 138.072509 84.574782) + (xy 138.068104 84.574124) + (xy 138.063838 84.572848) + (xy 138.019496 84.572577) + (xy 138.010103 84.571809) + (xy 138.010053 84.571801) + (xy 138.00682 84.571289) + (xy 138.004857 84.570978) + (xy 138.004856 84.570978) + (xy 138 84.570209) + (xy 137.991373 84.571576) + (xy 137.98122 84.572344) + (xy 137.962836 84.572231) + (xy 137.945838 84.572127) + (xy 137.945836 84.572127) + (xy 137.941385 84.5721) + (xy 137.887011 84.587641) + (xy 137.879623 84.589275) + (xy 137.867187 84.591244) + (xy 137.862804 84.593477) + (xy 137.86187 84.593781) + (xy 137.852156 84.597603) + (xy 137.849821 84.59827) + (xy 137.827929 84.604526) + (xy 137.827927 84.604527) + (xy 137.823644 84.605751) + (xy 137.764119 84.643309) + (xy 137.762819 84.644129) + (xy 137.757842 84.646959) + (xy 137.751757 84.650059) + (xy 137.751756 84.65006) + (xy 137.747375 84.652292) + (xy 137.743897 84.65577) + (xy 137.742445 84.656825) + (xy 137.739058 84.65912) + (xy 137.72008 84.671095) + (xy 137.717137 84.674427) + (xy 137.717135 84.674429) + (xy 137.657156 84.742342) + (xy 137.656032 84.743538) + (xy 137.655775 84.743892) + (xy 137.655554 84.744113) + (xy 137.655405 84.744204) + (xy 137.654504 84.745163) + (xy 137.652292 84.747375) + (xy 137.651509 84.746592) + (xy 137.650362 84.747296) + (xy 137.651721 84.748496) + (xy 137.639018 84.762879) + (xy 137.637086 84.766994) + (xy 137.588868 84.869695) + (xy 137.588867 84.869698) + (xy 137.586976 84.873726) + (xy 137.568136 84.994724) + (xy 137.568713 84.999137) + (xy 137.568713 84.999138) + (xy 137.58251 85.104647) + (xy 137.584014 85.116145) + (xy 137.591185 85.132443) + (xy 137.591244 85.132813) + (xy 137.592007 85.134311) + (xy 137.594031 85.13891) + (xy 137.594031 85.138911) + (xy 137.62992 85.220473) + (xy 137.633333 85.22823) + (xy 137.647272 85.244813) + (xy 137.648029 85.245713) + (xy 137.650157 85.248434) + (xy 137.652292 85.252625) + (xy 137.660081 85.260414) + (xy 137.663729 85.264391) + (xy 137.712127 85.321968) + (xy 137.735399 85.337459) + (xy 137.741836 85.342733) + (xy 137.743899 85.344232) + (xy 137.747375 85.347708) + (xy 137.751753 85.349939) + (xy 137.751756 85.349941) + (xy 137.75873 85.353494) + (xy 137.764977 85.357148) + (xy 137.814064 85.389823) + (xy 137.818313 85.391151) + (xy 137.818314 85.391151) + (xy 137.850296 85.401143) + (xy 137.860027 85.405109) + (xy 137.862799 85.406521) + (xy 137.862803 85.406522) + (xy 137.867187 85.408756) + (xy 137.877852 85.410445) + (xy 137.886713 85.41252) + (xy 137.926696 85.425012) + (xy 137.926699 85.425012) + (xy 137.930948 85.42634) + (xy 137.980069 85.427241) + (xy 137.988683 85.427999) + (xy 137.99514 85.429022) + (xy 137.995144 85.429022) + (xy 138 85.429791) + (xy 138.006947 85.42869) + (xy 138.017853 85.427933) + (xy 138.053383 85.428584) + (xy 138.113532 85.412185) + (xy 138.12019 85.410755) + (xy 138.122147 85.410445) + (xy 138.132813 85.408756) + (xy 138.137196 85.406522) + (xy 138.141875 85.405002) + (xy 138.141878 85.40501) + (xy 138.146727 85.403136) + (xy 138.171527 85.396375) + (xy 138.176521 85.393309) + (xy 138.239709 85.354511) + (xy 138.244037 85.352085) + (xy 138.24824 85.349944) + (xy 138.248248 85.349938) + (xy 138.252625 85.347708) + (xy 138.255427 85.344906) + (xy 138.256264 85.344346) + (xy 138.261316 85.341244) + (xy 138.275881 85.332301) + (xy 138.358058 85.241513) + (xy 138.365454 85.226248) + (xy 138.401198 85.194458) + (xy 138.4217 85.191) + (xy 138.706768 85.191) + (xy 138.714107 85.19225) + (xy 138.71419 85.191523) + (xy 138.721181 85.19232) + (xy 138.727822 85.194652) + (xy 138.734815 85.193874) + (xy 138.734816 85.193874) + (xy 138.755939 85.191523) + (xy 138.757198 85.191383) + (xy 138.76411 85.191) + (xy 138.771533 85.191) + (xy 138.778465 85.189419) + (xy 138.785418 85.188243) + (xy 138.814429 85.185014) + (xy 138.820393 85.181281) + (xy 138.824341 85.179906) + (xy 138.8281 85.178097) + (xy 138.834959 85.176532) + (xy 138.840662 85.171988) + (xy 138.857773 85.158352) + (xy 138.863559 85.154256) + (xy 138.866715 85.15228) + (xy 138.866717 85.152279) + (xy 138.869711 85.150404) + (xy 138.874924 85.145191) + (xy 138.880167 85.140507) + (xy 138.897604 85.126612) + (xy 138.897604 85.126611) + (xy 138.903109 85.122225) + (xy 138.906167 85.115886) + (xy 138.910558 85.110385) + (xy 138.911092 85.110811) + (xy 138.915468 85.104647) + (xy 139.553768 84.466346) + (xy 139.597962 84.44804) + (xy 155.043505 84.44804) + (xy 155.087699 84.466346) + (xy 155.287174 84.665821) + (xy 155.30548 84.710015) + (xy 155.30548 85.539986) + (xy 155.287174 85.58418) + (xy 153.381433 87.489921) + (xy 153.375359 87.494226) + (xy 153.375815 87.494799) + (xy 153.370307 87.49918) + (xy 153.363962 87.502227) + (xy 153.359566 87.507724) + (xy 153.345502 87.52531) + (xy 153.340885 87.530469) + (xy 153.335636 87.535718) + (xy 153.331863 87.541721) + (xy 153.327758 87.547497) + (xy 153.309537 87.570282) + (xy 153.30796 87.577142) + (xy 153.306142 87.580902) + (xy 153.304764 87.584838) + (xy 153.301018 87.590797) + (xy 153.300227 87.597791) + (xy 153.300227 87.597792) + (xy 153.297741 87.619785) + (xy 153.296549 87.626762) + (xy 153.29492 87.633846) + (xy 153.29492 87.64122) + (xy 153.294524 87.648241) + (xy 153.291229 87.677387) + (xy 153.29355 87.684032) + (xy 153.294334 87.691026) + (xy 153.293656 87.691102) + (xy 153.29492 87.698554) + (xy 153.29492 89.659077) + (xy 153.276614 89.703271) + (xy 153.161953 89.817932) + (xy 153.117759 89.836238) + (xy 153.099851 89.833618) + (xy 153.083715 89.828793) + (xy 153.063838 89.822848) + (xy 153.019496 89.822577) + (xy 153.010103 89.821809) + (xy 153.004857 89.820978) + (xy 153.004856 89.820978) + (xy 153 89.820209) + (xy 152.991373 89.821576) + (xy 152.98122 89.822344) + (xy 152.962836 89.822231) + (xy 152.945838 89.822127) + (xy 152.945836 89.822127) + (xy 152.941385 89.8221) + (xy 152.887011 89.837641) + (xy 152.879623 89.839275) + (xy 152.867187 89.841244) + (xy 152.862804 89.843477) + (xy 152.86187 89.843781) + (xy 152.852155 89.847603) + (xy 152.827929 89.854526) + (xy 152.827927 89.854527) + (xy 152.823644 89.855751) + (xy 152.819875 89.858129) + (xy 152.808345 89.865404) + (xy 152.764119 89.893309) + (xy 152.762819 89.894129) + (xy 152.757842 89.896959) + (xy 152.751757 89.900059) + (xy 152.751756 89.90006) + (xy 152.747375 89.902292) + (xy 152.743897 89.90577) + (xy 152.742445 89.906825) + (xy 152.739058 89.90912) + (xy 152.72008 89.921095) + (xy 152.717137 89.924427) + (xy 152.717135 89.924429) + (xy 152.657156 89.992342) + (xy 152.656032 89.993538) + (xy 152.655775 89.993892) + (xy 152.655554 89.994113) + (xy 152.655405 89.994204) + (xy 152.654504 89.995163) + (xy 152.652292 89.997375) + (xy 152.651509 89.996592) + (xy 152.650362 89.997296) + (xy 152.651721 89.998496) + (xy 152.642377 90.009076) + (xy 152.639018 90.012879) + (xy 152.637127 90.016907) + (xy 152.588868 90.119695) + (xy 152.588867 90.119698) + (xy 152.586976 90.123726) + (xy 152.568136 90.244724) + (xy 152.568713 90.249137) + (xy 152.568713 90.249138) + (xy 152.582857 90.357301) + (xy 152.584014 90.366145) + (xy 152.591185 90.382443) + (xy 152.591244 90.382813) + (xy 152.592007 90.384311) + (xy 152.594031 90.38891) + (xy 152.594031 90.388911) + (xy 152.630204 90.471118) + (xy 152.633333 90.47823) + (xy 152.646094 90.493411) + (xy 152.648029 90.495713) + (xy 152.650157 90.498434) + (xy 152.652292 90.502625) + (xy 152.660081 90.510414) + (xy 152.66373 90.514392) + (xy 152.701743 90.559614) + (xy 152.712127 90.571968) + (xy 152.735399 90.587459) + (xy 152.741836 90.592733) + (xy 152.743899 90.594232) + (xy 152.747375 90.597708) + (xy 152.751753 90.599939) + (xy 152.751756 90.599941) + (xy 152.75873 90.603494) + (xy 152.764977 90.607148) + (xy 152.814064 90.639823) + (xy 152.818313 90.641151) + (xy 152.818314 90.641151) + (xy 152.850296 90.651143) + (xy 152.860027 90.655109) + (xy 152.862799 90.656521) + (xy 152.862803 90.656522) + (xy 152.867187 90.658756) + (xy 152.877852 90.660445) + (xy 152.886713 90.66252) + (xy 152.926696 90.675012) + (xy 152.926699 90.675012) + (xy 152.930948 90.67634) + (xy 152.980069 90.677241) + (xy 152.988683 90.677999) + (xy 152.99514 90.679022) + (xy 152.995144 90.679022) + (xy 153 90.679791) + (xy 153.006947 90.67869) + (xy 153.017853 90.677933) + (xy 153.053383 90.678584) + (xy 153.066704 90.674952) + (xy 153.114155 90.680988) + (xy 153.143442 90.71881) + (xy 153.136625 90.761755) + (xy 153.139018 90.762879) + (xy 153.088868 90.869695) + (xy 153.088867 90.869698) + (xy 153.086976 90.873726) + (xy 153.068136 90.994724) + (xy 153.068713 90.999137) + (xy 153.068713 90.999138) + (xy 153.074976 91.047029) + (xy 153.084014 91.116145) + (xy 153.091185 91.132443) + (xy 153.091244 91.132813) + (xy 153.092007 91.134311) + (xy 153.094031 91.13891) + (xy 153.094031 91.138911) + (xy 153.129309 91.219084) + (xy 153.133333 91.22823) + (xy 153.147272 91.244813) + (xy 153.148029 91.245713) + (xy 153.150157 91.248434) + (xy 153.152292 91.252625) + (xy 153.160081 91.260414) + (xy 153.163729 91.264391) + (xy 153.212127 91.321968) + (xy 153.235399 91.337459) + (xy 153.241836 91.342733) + (xy 153.243899 91.344232) + (xy 153.247375 91.347708) + (xy 153.251753 91.349939) + (xy 153.251756 91.349941) + (xy 153.25873 91.353494) + (xy 153.264977 91.357148) + (xy 153.314064 91.389823) + (xy 153.318313 91.391151) + (xy 153.318314 91.391151) + (xy 153.350296 91.401143) + (xy 153.360027 91.405109) + (xy 153.362799 91.406521) + (xy 153.362803 91.406522) + (xy 153.367187 91.408756) + (xy 153.377852 91.410445) + (xy 153.386713 91.41252) + (xy 153.426696 91.425012) + (xy 153.426699 91.425012) + (xy 153.430948 91.42634) + (xy 153.480069 91.427241) + (xy 153.488683 91.427999) + (xy 153.49514 91.429022) + (xy 153.495144 91.429022) + (xy 153.5 91.429791) + (xy 153.506947 91.42869) + (xy 153.517853 91.427933) + (xy 153.553383 91.428584) + (xy 153.613532 91.412185) + (xy 153.62019 91.410755) + (xy 153.622147 91.410445) + (xy 153.632813 91.408756) + (xy 153.637196 91.406522) + (xy 153.641875 91.405002) + (xy 153.641878 91.40501) + (xy 153.646727 91.403136) + (xy 153.671527 91.396375) + (xy 153.676521 91.393309) + (xy 153.739709 91.354511) + (xy 153.744037 91.352085) + (xy 153.74824 91.349944) + (xy 153.748248 91.349938) + (xy 153.752625 91.347708) + (xy 153.755427 91.344906) + (xy 153.756264 91.344346) + (xy 153.761316 91.341244) + (xy 153.775881 91.332301) + (xy 153.858058 91.241513) + (xy 153.911451 91.131311) + (xy 153.91298 91.122225) + (xy 153.920105 91.079873) + (xy 153.94549 91.039328) + (xy 153.992108 91.028608) + (xy 154.025933 91.046048) + (xy 154.790694 91.810809) + (xy 154.809 91.855003) + (xy 154.809 109.144997) + (xy 154.790694 109.189191) + (xy 153.161953 110.817932) + (xy 153.117759 110.836238) + (xy 153.099851 110.833618) + (xy 153.083715 110.828793) + (xy 153.063838 110.822848) + (xy 153.019496 110.822577) + (xy 153.010103 110.821809) + (xy 153.004857 110.820978) + (xy 153.004856 110.820978) + (xy 153 110.820209) + (xy 152.991373 110.821576) + (xy 152.98122 110.822344) + (xy 152.962836 110.822231) + (xy 152.945838 110.822127) + (xy 152.945836 110.822127) + (xy 152.941385 110.8221) + (xy 152.887011 110.837641) + (xy 152.879623 110.839275) + (xy 152.867187 110.841244) + (xy 152.862804 110.843477) + (xy 152.86187 110.843781) + (xy 152.852155 110.847603) + (xy 152.827929 110.854526) + (xy 152.827927 110.854527) + (xy 152.823644 110.855751) + (xy 152.780754 110.882813) + (xy 152.762819 110.894129) + (xy 152.757842 110.896959) + (xy 152.751757 110.900059) + (xy 152.751756 110.90006) + (xy 152.747375 110.902292) + (xy 152.743897 110.90577) + (xy 152.742445 110.906825) + (xy 152.739058 110.90912) + (xy 152.72008 110.921095) + (xy 152.717137 110.924427) + (xy 152.717135 110.924429) + (xy 152.657156 110.992342) + (xy 152.656032 110.993538) + (xy 152.655774 110.993893) + (xy 152.655554 110.994113) + (xy 152.655405 110.994204) + (xy 152.654504 110.995163) + (xy 152.652292 110.997375) + (xy 152.651509 110.996592) + (xy 152.650362 110.997296) + (xy 152.651721 110.998496) + (xy 152.639018 111.012879) + (xy 152.637127 111.016907) + (xy 152.588868 111.119695) + (xy 152.588867 111.119698) + (xy 152.586976 111.123726) + (xy 152.568136 111.244724) + (xy 152.568713 111.249137) + (xy 152.568713 111.249138) + (xy 152.58223 111.3525) + (xy 152.584014 111.366145) + (xy 152.591185 111.382443) + (xy 152.591244 111.382813) + (xy 152.592007 111.384311) + (xy 152.594031 111.38891) + (xy 152.594031 111.388911) + (xy 152.625922 111.461387) + (xy 152.633333 111.47823) + (xy 152.647272 111.494813) + (xy 152.648029 111.495713) + (xy 152.650157 111.498434) + (xy 152.652292 111.502625) + (xy 152.660081 111.510414) + (xy 152.663729 111.514391) + (xy 152.712127 111.571968) + (xy 152.735399 111.587459) + (xy 152.741836 111.592733) + (xy 152.743899 111.594232) + (xy 152.747375 111.597708) + (xy 152.751753 111.599939) + (xy 152.751756 111.599941) + (xy 152.75873 111.603494) + (xy 152.764977 111.607148) + (xy 152.814064 111.639823) + (xy 152.818313 111.641151) + (xy 152.818314 111.641151) + (xy 152.850296 111.651143) + (xy 152.860027 111.655109) + (xy 152.862799 111.656521) + (xy 152.862803 111.656522) + (xy 152.867187 111.658756) + (xy 152.877852 111.660445) + (xy 152.886713 111.66252) + (xy 152.926696 111.675012) + (xy 152.926699 111.675012) + (xy 152.930948 111.67634) + (xy 152.980069 111.677241) + (xy 152.988683 111.677999) + (xy 152.99514 111.679022) + (xy 152.995144 111.679022) + (xy 153 111.679791) + (xy 153.006947 111.67869) + (xy 153.017853 111.677933) + (xy 153.053383 111.678584) + (xy 153.113532 111.662185) + (xy 153.12019 111.660755) + (xy 153.122147 111.660445) + (xy 153.132813 111.658756) + (xy 153.137196 111.656522) + (xy 153.141875 111.655002) + (xy 153.141878 111.65501) + (xy 153.146727 111.653136) + (xy 153.171527 111.646375) + (xy 153.176521 111.643309) + (xy 153.239709 111.604511) + (xy 153.244037 111.602085) + (xy 153.24824 111.599944) + (xy 153.248248 111.599938) + (xy 153.252625 111.597708) + (xy 153.255427 111.594906) + (xy 153.256264 111.594346) + (xy 153.257681 111.593476) + (xy 153.275881 111.582301) + (xy 153.358058 111.491513) + (xy 153.411451 111.381311) + (xy 153.413317 111.370224) + (xy 153.427268 111.287296) + (xy 153.431767 111.260552) + (xy 153.431896 111.25) + (xy 153.416061 111.139432) + (xy 153.427917 111.093091) + (xy 153.433736 111.086379) + (xy 153.473478 111.046637) + (xy 153.517672 111.028331) + (xy 153.561866 111.046637) + (xy 153.579644 111.082727) + (xy 153.584014 111.116145) + (xy 153.585809 111.120224) + (xy 153.589286 111.128126) + (xy 153.591185 111.132443) + (xy 153.591244 111.132813) + (xy 153.592007 111.134311) + (xy 153.594031 111.13891) + (xy 153.594031 111.138911) + (xy 153.625922 111.211387) + (xy 153.633333 111.22823) + (xy 153.636197 111.231637) + (xy 153.648029 111.245713) + (xy 153.650157 111.248434) + (xy 153.652292 111.252625) + (xy 153.660081 111.260414) + (xy 153.66373 111.264392) + (xy 153.682983 111.287296) + (xy 153.712127 111.321968) + (xy 153.735399 111.337459) + (xy 153.741836 111.342733) + (xy 153.743899 111.344232) + (xy 153.747375 111.347708) + (xy 153.751753 111.349939) + (xy 153.751756 111.349941) + (xy 153.75873 111.353494) + (xy 153.764977 111.357148) + (xy 153.814064 111.389823) + (xy 153.818313 111.391151) + (xy 153.818314 111.391151) + (xy 153.850296 111.401143) + (xy 153.860027 111.405109) + (xy 153.862799 111.406521) + (xy 153.862803 111.406522) + (xy 153.867187 111.408756) + (xy 153.877852 111.410445) + (xy 153.886713 111.41252) + (xy 153.92576 111.424719) + (xy 153.962484 111.45537) + (xy 153.966778 111.503013) + (xy 153.951316 111.528569) + (xy 153.911953 111.567932) + (xy 153.867759 111.586238) + (xy 153.849851 111.583618) + (xy 153.833715 111.578793) + (xy 153.813838 111.572848) + (xy 153.769496 111.572577) + (xy 153.760103 111.571809) + (xy 153.754857 111.570978) + (xy 153.754856 111.570978) + (xy 153.75 111.570209) + (xy 153.741373 111.571576) + (xy 153.73122 111.572344) + (xy 153.712836 111.572231) + (xy 153.695838 111.572127) + (xy 153.695836 111.572127) + (xy 153.691385 111.5721) + (xy 153.637011 111.587641) + (xy 153.629623 111.589275) + (xy 153.617187 111.591244) + (xy 153.612804 111.593477) + (xy 153.61187 111.593781) + (xy 153.602156 111.597603) + (xy 153.599821 111.59827) + (xy 153.577929 111.604526) + (xy 153.577927 111.604527) + (xy 153.573644 111.605751) + (xy 153.514119 111.643309) + (xy 153.512819 111.644129) + (xy 153.507842 111.646959) + (xy 153.501757 111.650059) + (xy 153.501756 111.65006) + (xy 153.497375 111.652292) + (xy 153.493897 111.65577) + (xy 153.492445 111.656825) + (xy 153.489058 111.65912) + (xy 153.47008 111.671095) + (xy 153.467137 111.674427) + (xy 153.467135 111.674429) + (xy 153.407156 111.742342) + (xy 153.406032 111.743538) + (xy 153.405775 111.743892) + (xy 153.405554 111.744113) + (xy 153.405405 111.744204) + (xy 153.404504 111.745163) + (xy 153.402292 111.747375) + (xy 153.401509 111.746592) + (xy 153.400362 111.747296) + (xy 153.401721 111.748496) + (xy 153.389018 111.762879) + (xy 153.387127 111.766907) + (xy 153.338868 111.869695) + (xy 153.338867 111.869698) + (xy 153.336976 111.873726) + (xy 153.318136 111.994724) + (xy 153.318713 111.999137) + (xy 153.318713 111.999138) + (xy 153.321037 112.016907) + (xy 153.334014 112.116145) + (xy 153.335809 112.120224) + (xy 153.339286 112.128126) + (xy 153.341185 112.132443) + (xy 153.341244 112.132813) + (xy 153.342007 112.134311) + (xy 153.344031 112.13891) + (xy 153.344031 112.138911) + (xy 153.377244 112.214391) + (xy 153.383333 112.22823) + (xy 153.397198 112.244724) + (xy 153.398029 112.245713) + (xy 153.400157 112.248434) + (xy 153.402292 112.252625) + (xy 153.410081 112.260414) + (xy 153.413729 112.264391) + (xy 153.462127 112.321968) + (xy 153.485399 112.337459) + (xy 153.491836 112.342733) + (xy 153.493899 112.344232) + (xy 153.497375 112.347708) + (xy 153.501753 112.349939) + (xy 153.501756 112.349941) + (xy 153.50873 112.353494) + (xy 153.514977 112.357148) + (xy 153.564064 112.389823) + (xy 153.568313 112.391151) + (xy 153.568314 112.391151) + (xy 153.600296 112.401143) + (xy 153.610027 112.405109) + (xy 153.612799 112.406521) + (xy 153.612803 112.406522) + (xy 153.617187 112.408756) + (xy 153.627852 112.410445) + (xy 153.636713 112.41252) + (xy 153.676696 112.425012) + (xy 153.676699 112.425012) + (xy 153.680948 112.42634) + (xy 153.730069 112.427241) + (xy 153.738683 112.427999) + (xy 153.74514 112.429022) + (xy 153.745144 112.429022) + (xy 153.75 112.429791) + (xy 153.756947 112.42869) + (xy 153.767853 112.427933) + (xy 153.803383 112.428584) + (xy 153.863532 112.412185) + (xy 153.87019 112.410755) + (xy 153.872147 112.410445) + (xy 153.882813 112.408756) + (xy 153.887196 112.406522) + (xy 153.891875 112.405002) + (xy 153.891878 112.40501) + (xy 153.896727 112.403136) + (xy 153.921527 112.396375) + (xy 153.944218 112.382443) + (xy 153.989709 112.354511) + (xy 153.994037 112.352085) + (xy 153.99824 112.349944) + (xy 153.998248 112.349938) + (xy 154.002625 112.347708) + (xy 154.005427 112.344906) + (xy 154.006264 112.344346) + (xy 154.008891 112.342733) + (xy 154.025881 112.332301) + (xy 154.108058 112.241513) + (xy 154.161451 112.131311) + (xy 154.163317 112.120224) + (xy 154.181367 112.012928) + (xy 154.181367 112.012927) + (xy 154.181767 112.010552) + (xy 154.181896 112) + (xy 154.166061 111.889432) + (xy 154.177917 111.843091) + (xy 154.183736 111.836379) + (xy 155.611527 110.408588) + (xy 155.617601 110.404283) + (xy 155.617145 110.40371) + (xy 155.622653 110.399329) + (xy 155.628998 110.396282) + (xy 155.647458 110.373199) + (xy 155.652075 110.36804) + (xy 155.657324 110.362791) + (xy 155.661097 110.356788) + (xy 155.665205 110.351007) + (xy 155.679027 110.333724) + (xy 155.683423 110.328227) + (xy 155.685 110.321367) + (xy 155.686818 110.317607) + (xy 155.688196 110.313671) + (xy 155.691942 110.307712) + (xy 155.695219 110.278723) + (xy 155.696411 110.271747) + (xy 155.69804 110.264663) + (xy 155.69804 110.257289) + (xy 155.698436 110.250268) + (xy 155.70094 110.228115) + (xy 155.701731 110.221122) + (xy 155.69941 110.214477) + (xy 155.698626 110.207483) + (xy 155.699304 110.207407) + (xy 155.69804 110.199955) + (xy 155.69804 96.244724) + (xy 159.568136 96.244724) + (xy 159.568713 96.249137) + (xy 159.568713 96.249138) + (xy 159.582655 96.355751) + (xy 159.584014 96.366145) + (xy 159.591185 96.382443) + (xy 159.591244 96.382813) + (xy 159.592007 96.384311) + (xy 159.594031 96.38891) + (xy 159.594031 96.388911) + (xy 159.60966 96.424429) + (xy 159.633333 96.47823) + (xy 159.647272 96.494813) + (xy 159.648029 96.495713) + (xy 159.650157 96.498434) + (xy 159.652292 96.502625) + (xy 159.660081 96.510414) + (xy 159.663729 96.514391) + (xy 159.712127 96.571968) + (xy 159.735399 96.587459) + (xy 159.741836 96.592733) + (xy 159.743899 96.594232) + (xy 159.747375 96.597708) + (xy 159.751753 96.599939) + (xy 159.751756 96.599941) + (xy 159.75873 96.603494) + (xy 159.764977 96.607148) + (xy 159.814064 96.639823) + (xy 159.818313 96.641151) + (xy 159.818314 96.641151) + (xy 159.850296 96.651143) + (xy 159.860027 96.655109) + (xy 159.862799 96.656521) + (xy 159.862803 96.656522) + (xy 159.867187 96.658756) + (xy 159.877852 96.660445) + (xy 159.886713 96.66252) + (xy 159.926696 96.675012) + (xy 159.926699 96.675012) + (xy 159.930948 96.67634) + (xy 159.980069 96.677241) + (xy 159.988683 96.677999) + (xy 159.99514 96.679022) + (xy 159.995144 96.679022) + (xy 160 96.679791) + (xy 160.006947 96.67869) + (xy 160.017853 96.677933) + (xy 160.053383 96.678584) + (xy 160.113532 96.662185) + (xy 160.12019 96.660755) + (xy 160.122147 96.660445) + (xy 160.132813 96.658756) + (xy 160.137196 96.656522) + (xy 160.141875 96.655002) + (xy 160.141878 96.65501) + (xy 160.146727 96.653136) + (xy 160.171527 96.646375) + (xy 160.200182 96.628781) + (xy 160.239709 96.604511) + (xy 160.244037 96.602085) + (xy 160.24824 96.599944) + (xy 160.248248 96.599938) + (xy 160.252625 96.597708) + (xy 160.255427 96.594906) + (xy 160.256264 96.594346) + (xy 160.258891 96.592733) + (xy 160.275881 96.582301) + (xy 160.358058 96.491513) + (xy 160.411451 96.381311) + (xy 160.413317 96.370224) + (xy 160.431367 96.262928) + (xy 160.431767 96.260552) + (xy 160.431896 96.25) + (xy 160.414536 96.128781) + (xy 160.363852 96.017307) + (xy 160.349199 96.000302) + (xy 160.347708 95.997375) + (xy 160.3419 95.991567) + (xy 160.338746 95.98817) + (xy 160.286826 95.927914) + (xy 160.283918 95.924539) + (xy 160.263741 95.911461) + (xy 160.260155 95.908559) + (xy 160.260081 95.908661) + (xy 160.256106 95.905773) + (xy 160.252625 95.902292) + (xy 160.241343 95.896543) + (xy 160.235735 95.893308) + (xy 160.219505 95.882788) + (xy 160.192377 95.843389) + (xy 160.191 95.830342) + (xy 160.191 95.130003) + (xy 160.209306 95.085809) + (xy 160.424309 94.870806) + (xy 160.468503 94.8525) + (xy 160.725329 94.8525) + (xy 161.03341 94.852499) + (xy 161.102695 94.842301) + (xy 161.208036 94.790581) + (xy 161.211683 94.786928) + (xy 161.287296 94.711183) + (xy 161.287298 94.711181) + (xy 161.290944 94.707528) + (xy 161.333658 94.620146) + (xy 161.340349 94.606458) + (xy 161.340349 94.606457) + (xy 161.34248 94.602098) + (xy 161.3525 94.533411) + (xy 161.352499 94.01659) + (xy 161.352499 94.016589) + (xy 161.6475 94.016589) + (xy 161.647501 94.53341) + (xy 161.657699 94.602695) + (xy 161.709419 94.708036) + (xy 161.713071 94.711682) + (xy 161.713072 94.711683) + (xy 161.788817 94.787296) + (xy 161.788819 94.787298) + (xy 161.792472 94.790944) + (xy 161.845169 94.816703) + (xy 161.893158 94.840161) + (xy 161.897902 94.84248) + (xy 161.902705 94.843181) + (xy 161.902706 94.843181) + (xy 161.924659 94.846383) + (xy 161.966589 94.8525) + (xy 161.978574 94.8525) + (xy 162.2465 94.852499) + (xy 162.290694 94.870805) + (xy 162.309 94.914999) + (xy 162.309 95.830525) + (xy 162.290694 95.874719) + (xy 162.279855 95.88338) + (xy 162.26281 95.894135) + (xy 162.257842 95.896959) + (xy 162.251757 95.900059) + (xy 162.251756 95.90006) + (xy 162.247375 95.902292) + (xy 162.243897 95.90577) + (xy 162.242445 95.906825) + (xy 162.239058 95.90912) + (xy 162.22008 95.921095) + (xy 162.217137 95.924427) + (xy 162.217135 95.924429) + (xy 162.157156 95.992342) + (xy 162.156032 95.993538) + (xy 162.155775 95.993892) + (xy 162.155554 95.994113) + (xy 162.155405 95.994204) + (xy 162.154504 95.995163) + (xy 162.152292 95.997375) + (xy 162.151509 95.996592) + (xy 162.150362 95.997296) + (xy 162.151721 95.998496) + (xy 162.139018 96.012879) + (xy 162.128114 96.036104) + (xy 162.088868 96.119695) + (xy 162.088867 96.119698) + (xy 162.086976 96.123726) + (xy 162.068136 96.244724) + (xy 162.068713 96.249137) + (xy 162.068713 96.249138) + (xy 162.082655 96.355751) + (xy 162.084014 96.366145) + (xy 162.091185 96.382443) + (xy 162.091244 96.382813) + (xy 162.092007 96.384311) + (xy 162.094031 96.38891) + (xy 162.094031 96.388911) + (xy 162.10966 96.424429) + (xy 162.133333 96.47823) + (xy 162.147272 96.494813) + (xy 162.148029 96.495713) + (xy 162.150157 96.498434) + (xy 162.152292 96.502625) + (xy 162.160081 96.510414) + (xy 162.163729 96.514391) + (xy 162.212127 96.571968) + (xy 162.235399 96.587459) + (xy 162.241836 96.592733) + (xy 162.243899 96.594232) + (xy 162.247375 96.597708) + (xy 162.251753 96.599939) + (xy 162.251756 96.599941) + (xy 162.25873 96.603494) + (xy 162.264977 96.607148) + (xy 162.314064 96.639823) + (xy 162.318313 96.641151) + (xy 162.318314 96.641151) + (xy 162.350296 96.651143) + (xy 162.360027 96.655109) + (xy 162.362799 96.656521) + (xy 162.362803 96.656522) + (xy 162.367187 96.658756) + (xy 162.377852 96.660445) + (xy 162.386713 96.66252) + (xy 162.426696 96.675012) + (xy 162.426699 96.675012) + (xy 162.430948 96.67634) + (xy 162.480069 96.677241) + (xy 162.488683 96.677999) + (xy 162.49514 96.679022) + (xy 162.495144 96.679022) + (xy 162.5 96.679791) + (xy 162.506947 96.67869) + (xy 162.517853 96.677933) + (xy 162.553383 96.678584) + (xy 162.613532 96.662185) + (xy 162.62019 96.660755) + (xy 162.622147 96.660445) + (xy 162.632813 96.658756) + (xy 162.637196 96.656522) + (xy 162.641875 96.655002) + (xy 162.641878 96.65501) + (xy 162.646727 96.653136) + (xy 162.671527 96.646375) + (xy 162.700182 96.628781) + (xy 162.739709 96.604511) + (xy 162.744037 96.602085) + (xy 162.74824 96.599944) + (xy 162.748248 96.599938) + (xy 162.752625 96.597708) + (xy 162.755427 96.594906) + (xy 162.756264 96.594346) + (xy 162.758891 96.592733) + (xy 162.775881 96.582301) + (xy 162.858058 96.491513) + (xy 162.911451 96.381311) + (xy 162.913317 96.370224) + (xy 162.931367 96.262928) + (xy 162.931767 96.260552) + (xy 162.931896 96.25) + (xy 162.914536 96.128781) + (xy 162.863852 96.017307) + (xy 162.849199 96.000302) + (xy 162.847708 95.997375) + (xy 162.8419 95.991567) + (xy 162.838746 95.98817) + (xy 162.786826 95.927914) + (xy 162.783918 95.924539) + (xy 162.763741 95.911461) + (xy 162.760155 95.908559) + (xy 162.760081 95.908661) + (xy 162.756106 95.905773) + (xy 162.752625 95.902292) + (xy 162.741343 95.896543) + (xy 162.735735 95.893308) + (xy 162.719505 95.882788) + (xy 162.692377 95.843389) + (xy 162.691 95.830342) + (xy 162.691 94.833504) + (xy 162.709267 94.789348) + (xy 162.787296 94.711183) + (xy 162.787298 94.711181) + (xy 162.790944 94.707528) + (xy 162.833658 94.620146) + (xy 162.840349 94.606458) + (xy 162.840349 94.606457) + (xy 162.84248 94.602098) + (xy 162.8525 94.533411) + (xy 162.852499 94.01659) + (xy 162.842301 93.947305) + (xy 162.790581 93.841964) + (xy 162.776583 93.82799) + (xy 162.711183 93.762704) + (xy 162.711181 93.762702) + (xy 162.707528 93.759056) + (xy 162.622357 93.717423) + (xy 162.606458 93.709651) + (xy 162.606457 93.709651) + (xy 162.602098 93.70752) + (xy 162.597295 93.706819) + (xy 162.597294 93.706819) + (xy 162.575341 93.703617) + (xy 162.533411 93.6975) + (xy 162.250749 93.6975) + (xy 161.96659 93.697501) + (xy 161.897305 93.707699) + (xy 161.791964 93.759419) + (xy 161.788318 93.763071) + (xy 161.788317 93.763072) + (xy 161.712704 93.838817) + (xy 161.712702 93.838819) + (xy 161.709056 93.842472) + (xy 161.675836 93.910432) + (xy 161.659943 93.942946) + (xy 161.65752 93.947902) + (xy 161.656819 93.952705) + (xy 161.656819 93.952706) + (xy 161.654724 93.96707) + (xy 161.6475 94.016589) + (xy 161.352499 94.016589) + (xy 161.342301 93.947305) + (xy 161.290581 93.841964) + (xy 161.276583 93.82799) + (xy 161.211183 93.762704) + (xy 161.211181 93.762702) + (xy 161.207528 93.759056) + (xy 161.122357 93.717423) + (xy 161.106458 93.709651) + (xy 161.106457 93.709651) + (xy 161.102098 93.70752) + (xy 161.097295 93.706819) + (xy 161.097294 93.706819) + (xy 161.075341 93.703617) + (xy 161.033411 93.6975) + (xy 160.750749 93.6975) + (xy 160.46659 93.697501) + (xy 160.397305 93.707699) + (xy 160.291964 93.759419) + (xy 160.288318 93.763071) + (xy 160.288317 93.763072) + (xy 160.212704 93.838817) + (xy 160.212702 93.838819) + (xy 160.209056 93.842472) + (xy 160.175836 93.910432) + (xy 160.159943 93.942946) + (xy 160.15752 93.947902) + (xy 160.156819 93.952705) + (xy 160.156819 93.952706) + (xy 160.154724 93.96707) + (xy 160.1475 94.016589) + (xy 160.147501 94.53341) + (xy 160.147832 94.535656) + (xy 160.147833 94.535666) + (xy 160.152417 94.566814) + (xy 160.140741 94.613202) + (xy 160.134777 94.620108) + (xy 159.895513 94.859372) + (xy 159.889439 94.863677) + (xy 159.889895 94.86425) + (xy 159.884387 94.868631) + (xy 159.878042 94.871678) + (xy 159.873646 94.877175) + (xy 159.859582 94.894761) + (xy 159.854965 94.89992) + (xy 159.849716 94.905169) + (xy 159.847847 94.908143) + (xy 159.845943 94.911172) + (xy 159.841838 94.916948) + (xy 159.823617 94.939733) + (xy 159.82204 94.946593) + (xy 159.820222 94.950353) + (xy 159.818844 94.954289) + (xy 159.815098 94.960248) + (xy 159.814307 94.967242) + (xy 159.814307 94.967243) + (xy 159.811821 94.989236) + (xy 159.810629 94.996213) + (xy 159.809 95.003297) + (xy 159.809 95.010671) + (xy 159.808604 95.017692) + (xy 159.805309 95.046838) + (xy 159.80763 95.053483) + (xy 159.808414 95.060477) + (xy 159.807736 95.060553) + (xy 159.809 95.068005) + (xy 159.809 95.830525) + (xy 159.790694 95.874719) + (xy 159.779855 95.88338) + (xy 159.76281 95.894135) + (xy 159.757842 95.896959) + (xy 159.751757 95.900059) + (xy 159.751756 95.90006) + (xy 159.747375 95.902292) + (xy 159.743897 95.90577) + (xy 159.742445 95.906825) + (xy 159.739058 95.90912) + (xy 159.72008 95.921095) + (xy 159.717137 95.924427) + (xy 159.717135 95.924429) + (xy 159.657156 95.992342) + (xy 159.656032 95.993538) + (xy 159.655775 95.993892) + (xy 159.655554 95.994113) + (xy 159.655405 95.994204) + (xy 159.654504 95.995163) + (xy 159.652292 95.997375) + (xy 159.651509 95.996592) + (xy 159.650362 95.997296) + (xy 159.651721 95.998496) + (xy 159.639018 96.012879) + (xy 159.628114 96.036104) + (xy 159.588868 96.119695) + (xy 159.588867 96.119698) + (xy 159.586976 96.123726) + (xy 159.568136 96.244724) + (xy 155.69804 96.244724) + (xy 155.69804 92.981083) + (xy 160.148001 92.981083) + (xy 160.148333 92.985614) + (xy 160.157478 93.047743) + (xy 160.160326 93.05691) + (xy 160.207556 93.153105) + (xy 160.213484 93.161387) + (xy 160.289111 93.236883) + (xy 160.297406 93.242799) + (xy 160.393687 93.289863) + (xy 160.402851 93.292695) + (xy 160.464391 93.301672) + (xy 160.468904 93.302) + (xy 160.674069 93.302) + (xy 160.682859 93.298359) + (xy 160.6865 93.289569) + (xy 160.6865 93.289568) + (xy 160.8135 93.289568) + (xy 160.817141 93.298358) + (xy 160.825931 93.301999) + (xy 161.031083 93.301999) + (xy 161.035614 93.301667) + (xy 161.097743 93.292522) + (xy 161.10691 93.289674) + (xy 161.203105 93.242444) + (xy 161.211387 93.236516) + (xy 161.286883 93.160889) + (xy 161.292799 93.152594) + (xy 161.339863 93.056313) + (xy 161.342695 93.047149) + (xy 161.351672 92.985609) + (xy 161.352 92.981096) + (xy 161.352 92.981083) + (xy 161.648001 92.981083) + (xy 161.648333 92.985614) + (xy 161.657478 93.047743) + (xy 161.660326 93.05691) + (xy 161.707556 93.153105) + (xy 161.713484 93.161387) + (xy 161.789111 93.236883) + (xy 161.797406 93.242799) + (xy 161.893687 93.289863) + (xy 161.902851 93.292695) + (xy 161.964391 93.301672) + (xy 161.968904 93.302) + (xy 162.174069 93.302) + (xy 162.182859 93.298359) + (xy 162.1865 93.289569) + (xy 162.1865 93.289568) + (xy 162.3135 93.289568) + (xy 162.317141 93.298358) + (xy 162.325931 93.301999) + (xy 162.531083 93.301999) + (xy 162.535614 93.301667) + (xy 162.597743 93.292522) + (xy 162.60691 93.289674) + (xy 162.698461 93.244724) + (xy 168.568136 93.244724) + (xy 168.568713 93.249137) + (xy 168.568713 93.249138) + (xy 168.578974 93.327605) + (xy 168.584014 93.366145) + (xy 168.591185 93.382443) + (xy 168.591244 93.382813) + (xy 168.592007 93.384311) + (xy 168.594031 93.38891) + (xy 168.594031 93.388911) + (xy 168.626371 93.462407) + (xy 168.633333 93.47823) + (xy 168.645627 93.492856) + (xy 168.648029 93.495713) + (xy 168.650157 93.498434) + (xy 168.652292 93.502625) + (xy 168.660081 93.510414) + (xy 168.663729 93.514391) + (xy 168.712127 93.571968) + (xy 168.735399 93.587459) + (xy 168.741836 93.592733) + (xy 168.743899 93.594232) + (xy 168.747375 93.597708) + (xy 168.751753 93.599939) + (xy 168.751756 93.599941) + (xy 168.75873 93.603494) + (xy 168.764977 93.607148) + (xy 168.814064 93.639823) + (xy 168.818313 93.641151) + (xy 168.818314 93.641151) + (xy 168.850296 93.651143) + (xy 168.860027 93.655109) + (xy 168.862799 93.656521) + (xy 168.862803 93.656522) + (xy 168.867187 93.658756) + (xy 168.877852 93.660445) + (xy 168.886713 93.66252) + (xy 168.926696 93.675012) + (xy 168.926699 93.675012) + (xy 168.930948 93.67634) + (xy 168.980069 93.677241) + (xy 168.988683 93.677999) + (xy 168.99514 93.679022) + (xy 168.995144 93.679022) + (xy 169 93.679791) + (xy 169.006947 93.67869) + (xy 169.017853 93.677933) + (xy 169.053383 93.678584) + (xy 169.113532 93.662185) + (xy 169.12019 93.660755) + (xy 169.122147 93.660445) + (xy 169.132813 93.658756) + (xy 169.137196 93.656522) + (xy 169.141875 93.655002) + (xy 169.141878 93.65501) + (xy 169.146727 93.653136) + (xy 169.171527 93.646375) + (xy 169.18321 93.639202) + (xy 169.239709 93.604511) + (xy 169.244037 93.602085) + (xy 169.24824 93.599944) + (xy 169.248248 93.599938) + (xy 169.252625 93.597708) + (xy 169.255427 93.594906) + (xy 169.256264 93.594346) + (xy 169.258891 93.592733) + (xy 169.275881 93.582301) + (xy 169.358058 93.491513) + (xy 169.411451 93.381311) + (xy 169.413317 93.370224) + (xy 169.42485 93.301667) + (xy 169.431767 93.260552) + (xy 169.431896 93.25) + (xy 169.416061 93.139432) + (xy 169.427917 93.093091) + (xy 169.433736 93.086379) + (xy 170.679487 91.840628) + (xy 170.685561 91.836323) + (xy 170.685105 91.83575) + (xy 170.690613 91.831369) + (xy 170.696958 91.828322) + (xy 170.715418 91.805239) + (xy 170.720035 91.80008) + (xy 170.725283 91.794832) + (xy 170.729055 91.788831) + (xy 170.733159 91.783056) + (xy 170.746988 91.765764) + (xy 170.74699 91.76576) + (xy 170.751383 91.760267) + (xy 170.75296 91.75341) + (xy 170.754778 91.749648) + (xy 170.756157 91.74571) + (xy 170.759902 91.739752) + (xy 170.760692 91.732761) + (xy 170.760694 91.732756) + (xy 170.76318 91.710763) + (xy 170.764373 91.703778) + (xy 170.765208 91.700146) + (xy 170.766 91.696703) + (xy 170.766 91.689323) + (xy 170.766396 91.682303) + (xy 170.768899 91.660158) + (xy 170.76969 91.653162) + (xy 170.767369 91.646516) + (xy 170.766585 91.639522) + (xy 170.767264 91.639446) + (xy 170.766 91.631996) + (xy 170.766 88.663548) + (xy 170.784306 88.619354) + (xy 170.820343 88.601583) + (xy 170.856325 88.596847) + (xy 170.856333 88.596845) + (xy 170.861071 88.596221) + (xy 170.868198 88.592898) + (xy 170.960787 88.549723) + (xy 170.960789 88.549721) + (xy 170.965744 88.547411) + (xy 171.018431 88.494724) + (xy 193.118136 88.494724) + (xy 193.118713 88.499137) + (xy 193.118713 88.499138) + (xy 193.13223 88.6025) + (xy 193.134014 88.616145) + (xy 193.135809 88.620224) + (xy 193.139286 88.628126) + (xy 193.141185 88.632443) + (xy 193.141244 88.632813) + (xy 193.142007 88.634311) + (xy 193.144031 88.63891) + (xy 193.144031 88.638911) + (xy 193.177952 88.716) + (xy 193.183333 88.72823) + (xy 193.197198 88.744724) + (xy 193.198029 88.745713) + (xy 193.200157 88.748434) + (xy 193.202292 88.752625) + (xy 193.210081 88.760414) + (xy 193.213729 88.764391) + (xy 193.262127 88.821968) + (xy 193.285399 88.837459) + (xy 193.291836 88.842733) + (xy 193.293899 88.844232) + (xy 193.297375 88.847708) + (xy 193.301753 88.849939) + (xy 193.301756 88.849941) + (xy 193.30873 88.853494) + (xy 193.314977 88.857148) + (xy 193.364064 88.889823) + (xy 193.368313 88.891151) + (xy 193.368314 88.891151) + (xy 193.400296 88.901143) + (xy 193.410027 88.905109) + (xy 193.412799 88.906521) + (xy 193.412803 88.906522) + (xy 193.417187 88.908756) + (xy 193.427852 88.910445) + (xy 193.436713 88.91252) + (xy 193.476696 88.925012) + (xy 193.476699 88.925012) + (xy 193.480948 88.92634) + (xy 193.530069 88.927241) + (xy 193.538683 88.927999) + (xy 193.54514 88.929022) + (xy 193.545144 88.929022) + (xy 193.55 88.929791) + (xy 193.556947 88.92869) + (xy 193.567853 88.927933) + (xy 193.603383 88.928584) + (xy 193.663532 88.912185) + (xy 193.67019 88.910755) + (xy 193.672147 88.910445) + (xy 193.682813 88.908756) + (xy 193.687196 88.906522) + (xy 193.691875 88.905002) + (xy 193.691878 88.90501) + (xy 193.696727 88.903136) + (xy 193.721527 88.896375) + (xy 193.744218 88.882443) + (xy 193.789709 88.854511) + (xy 193.794037 88.852085) + (xy 193.79824 88.849944) + (xy 193.798248 88.849938) + (xy 193.802625 88.847708) + (xy 193.805427 88.844906) + (xy 193.806264 88.844346) + (xy 193.808891 88.842733) + (xy 193.825881 88.832301) + (xy 193.908058 88.741513) + (xy 193.915454 88.726248) + (xy 193.951198 88.694458) + (xy 193.9717 88.691) + (xy 195.894997 88.691) + (xy 195.939191 88.709306) + (xy 196.834372 89.604487) + (xy 196.838677 89.610561) + (xy 196.83925 89.610105) + (xy 196.843631 89.615613) + (xy 196.846678 89.621958) + (xy 196.852175 89.626354) + (xy 196.869761 89.640418) + (xy 196.87492 89.645035) + (xy 196.880169 89.650284) + (xy 196.883143 89.652153) + (xy 196.886172 89.654057) + (xy 196.891948 89.658162) + (xy 196.914733 89.676383) + (xy 196.921593 89.67796) + (xy 196.925353 89.679778) + (xy 196.929289 89.681156) + (xy 196.935248 89.684902) + (xy 196.942242 89.685693) + (xy 196.942243 89.685693) + (xy 196.95172 89.686764) + (xy 196.964242 89.68818) + (xy 196.971208 89.68937) + (xy 196.978297 89.691) + (xy 196.985671 89.691) + (xy 196.992692 89.691396) + (xy 197.021839 89.694691) + (xy 197.028484 89.69237) + (xy 197.035478 89.691586) + (xy 197.035554 89.692264) + (xy 197.043006 89.691) + (xy 197.335001 89.691) + (xy 197.379195 89.709306) + (xy 197.397501 89.7535) + (xy 197.397501 89.813374) + (xy 197.397766 89.815385) + (xy 197.397766 89.81539) + (xy 197.403079 89.855751) + (xy 197.403779 89.861071) + (xy 197.4058 89.865404) + (xy 197.4058 89.865405) + (xy 197.450277 89.960787) + (xy 197.450279 89.960789) + (xy 197.452589 89.965744) + (xy 197.534256 90.047411) + (xy 197.539211 90.049721) + (xy 197.539213 90.049723) + (xy 197.586076 90.071575) + (xy 197.638929 90.096221) + (xy 197.649427 90.097603) + (xy 197.684593 90.102233) + (xy 197.684601 90.102233) + (xy 197.686625 90.1025) + (xy 197.688672 90.1025) + (xy 197.925642 90.102499) + (xy 198.163374 90.102499) + (xy 198.165385 90.102234) + (xy 198.16539 90.102234) + (xy 198.206331 90.096845) + (xy 198.206332 90.096845) + (xy 198.211071 90.096221) + (xy 198.227241 90.088681) + (xy 198.310787 90.049723) + (xy 198.310789 90.049721) + (xy 198.315744 90.047411) + (xy 198.397411 89.965744) + (xy 198.399721 89.960789) + (xy 198.399723 89.960787) + (xy 198.42804 89.90006) + (xy 198.446221 89.861071) + (xy 198.449835 89.833618) + (xy 198.452233 89.815407) + (xy 198.452233 89.815399) + (xy 198.4525 89.813375) + (xy 198.452499 89.186626) + (xy 198.452232 89.184593) + (xy 198.446845 89.143669) + (xy 198.446845 89.143668) + (xy 198.446221 89.138929) + (xy 198.434676 89.11417) + (xy 198.399723 89.039213) + (xy 198.399721 89.039211) + (xy 198.397411 89.034256) + (xy 198.315744 88.952589) + (xy 198.310789 88.950279) + (xy 198.310787 88.950277) + (xy 198.250461 88.922147) + (xy 198.211071 88.903779) + (xy 198.191048 88.901143) + (xy 198.165407 88.897767) + (xy 198.165399 88.897767) + (xy 198.163375 88.8975) + (xy 198.161328 88.8975) + (xy 197.924358 88.897501) + (xy 197.686626 88.897501) + (xy 197.684615 88.897766) + (xy 197.68461 88.897766) + (xy 197.643669 88.903155) + (xy 197.643668 88.903155) + (xy 197.638929 88.903779) + (xy 197.634595 88.9058) + (xy 197.539213 88.950277) + (xy 197.539211 88.950279) + (xy 197.534256 88.952589) + (xy 197.452589 89.034256) + (xy 197.450279 89.039211) + (xy 197.450277 89.039213) + (xy 197.433854 89.074433) + (xy 197.403779 89.138929) + (xy 197.402799 89.146375) + (xy 197.397767 89.184593) + (xy 197.397767 89.184601) + (xy 197.3975 89.186625) + (xy 197.3975 89.2465) + (xy 197.379194 89.290694) + (xy 197.335 89.309) + (xy 197.105003 89.309) + (xy 197.060809 89.290694) + (xy 196.165628 88.395513) + (xy 196.161323 88.389439) + (xy 196.16075 88.389895) + (xy 196.156369 88.384387) + (xy 196.153322 88.378042) + (xy 196.130239 88.359582) + (xy 196.12508 88.354965) + (xy 196.119831 88.349716) + (xy 196.113825 88.345941) + (xy 196.108052 88.341838) + (xy 196.085267 88.323617) + (xy 196.078407 88.32204) + (xy 196.074647 88.320222) + (xy 196.070711 88.318844) + (xy 196.064752 88.315098) + (xy 196.057758 88.314307) + (xy 196.057757 88.314307) + (xy 196.035764 88.311821) + (xy 196.028787 88.310629) + (xy 196.021703 88.309) + (xy 196.014329 88.309) + (xy 196.007308 88.308604) + (xy 196.005627 88.308414) + (xy 195.978162 88.305309) + (xy 195.971517 88.30763) + (xy 195.964523 88.308414) + (xy 195.964447 88.307736) + (xy 195.956995 88.309) + (xy 193.973049 88.309) + (xy 193.928855 88.290694) + (xy 193.916156 88.272373) + (xy 193.915695 88.27136) + (xy 193.915694 88.271359) + (xy 193.913852 88.267307) + (xy 193.899199 88.250302) + (xy 193.897708 88.247375) + (xy 193.8919 88.241567) + (xy 193.888746 88.23817) + (xy 193.836826 88.177914) + (xy 193.833918 88.174539) + (xy 193.813741 88.161461) + (xy 193.810155 88.158559) + (xy 193.810081 88.158661) + (xy 193.806106 88.155773) + (xy 193.802625 88.152292) + (xy 193.791343 88.146543) + (xy 193.785736 88.143309) + (xy 193.734893 88.110354) + (xy 193.73489 88.110353) + (xy 193.73116 88.107935) + (xy 193.726901 88.106661) + (xy 193.726898 88.10666) + (xy 193.704429 88.099941) + (xy 193.698839 88.098269) + (xy 193.688377 88.094079) + (xy 193.682813 88.091244) + (xy 193.671067 88.089384) + (xy 193.662951 88.087536) + (xy 193.613838 88.072848) + (xy 193.569496 88.072577) + (xy 193.560103 88.071809) + (xy 193.554857 88.070978) + (xy 193.554856 88.070978) + (xy 193.55 88.070209) + (xy 193.541373 88.071576) + (xy 193.53122 88.072344) + (xy 193.512836 88.072231) + (xy 193.495838 88.072127) + (xy 193.495836 88.072127) + (xy 193.491385 88.0721) + (xy 193.437011 88.087641) + (xy 193.429623 88.089275) + (xy 193.417187 88.091244) + (xy 193.412804 88.093477) + (xy 193.41187 88.093781) + (xy 193.402156 88.097603) + (xy 193.399821 88.09827) + (xy 193.377929 88.104526) + (xy 193.377927 88.104527) + (xy 193.373644 88.105751) + (xy 193.369875 88.108129) + (xy 193.362079 88.113048) + (xy 193.314119 88.143309) + (xy 193.312819 88.144129) + (xy 193.307842 88.146959) + (xy 193.301757 88.150059) + (xy 193.301756 88.15006) + (xy 193.297375 88.152292) + (xy 193.293897 88.15577) + (xy 193.292445 88.156825) + (xy 193.289058 88.15912) + (xy 193.27008 88.171095) + (xy 193.267137 88.174427) + (xy 193.267135 88.174429) + (xy 193.207156 88.242342) + (xy 193.206032 88.243538) + (xy 193.205775 88.243892) + (xy 193.205554 88.244113) + (xy 193.205405 88.244204) + (xy 193.204504 88.245163) + (xy 193.202292 88.247375) + (xy 193.201509 88.246592) + (xy 193.200362 88.247296) + (xy 193.201721 88.248496) + (xy 193.195002 88.256104) + (xy 193.189018 88.262879) + (xy 193.184591 88.272308) + (xy 193.138868 88.369695) + (xy 193.138867 88.369698) + (xy 193.136976 88.373726) + (xy 193.118136 88.494724) + (xy 171.018431 88.494724) + (xy 171.047411 88.465744) + (xy 171.049721 88.460789) + (xy 171.049723 88.460787) + (xy 171.075732 88.40501) + (xy 171.096221 88.361071) + (xy 171.099501 88.336155) + (xy 171.102233 88.315407) + (xy 171.102233 88.315399) + (xy 171.1025 88.313375) + (xy 171.102499 87.744724) + (xy 192.068136 87.744724) + (xy 192.068713 87.749137) + (xy 192.068713 87.749138) + (xy 192.08185 87.849597) + (xy 192.084014 87.866145) + (xy 192.091185 87.882443) + (xy 192.091244 87.882813) + (xy 192.092007 87.884311) + (xy 192.094031 87.88891) + (xy 192.094031 87.888911) + (xy 192.125777 87.961057) + (xy 192.133333 87.97823) + (xy 192.147273 87.994814) + (xy 192.148029 87.995713) + (xy 192.150157 87.998434) + (xy 192.152292 88.002625) + (xy 192.160081 88.010414) + (xy 192.16373 88.014392) + (xy 192.198537 88.0558) + (xy 192.212127 88.071968) + (xy 192.235399 88.087459) + (xy 192.241836 88.092733) + (xy 192.243899 88.094232) + (xy 192.247375 88.097708) + (xy 192.251753 88.099939) + (xy 192.251756 88.099941) + (xy 192.25873 88.103494) + (xy 192.264977 88.107148) + (xy 192.314064 88.139823) + (xy 192.318313 88.141151) + (xy 192.318314 88.141151) + (xy 192.350296 88.151143) + (xy 192.360027 88.155109) + (xy 192.362799 88.156521) + (xy 192.362803 88.156522) + (xy 192.367187 88.158756) + (xy 192.377852 88.160445) + (xy 192.386713 88.16252) + (xy 192.426696 88.175012) + (xy 192.426699 88.175012) + (xy 192.430948 88.17634) + (xy 192.480069 88.177241) + (xy 192.488683 88.177999) + (xy 192.49514 88.179022) + (xy 192.495144 88.179022) + (xy 192.5 88.179791) + (xy 192.506947 88.17869) + (xy 192.517853 88.177933) + (xy 192.553383 88.178584) + (xy 192.613532 88.162185) + (xy 192.62019 88.160755) + (xy 192.622147 88.160445) + (xy 192.632813 88.158756) + (xy 192.637196 88.156522) + (xy 192.641875 88.155002) + (xy 192.641878 88.15501) + (xy 192.646727 88.153136) + (xy 192.671527 88.146375) + (xy 192.676521 88.143309) + (xy 192.739709 88.104511) + (xy 192.744037 88.102085) + (xy 192.74824 88.099944) + (xy 192.748248 88.099938) + (xy 192.752625 88.097708) + (xy 192.755427 88.094906) + (xy 192.756264 88.094346) + (xy 192.759316 88.092472) + (xy 192.775881 88.082301) + (xy 192.858058 87.991513) + (xy 192.860093 87.987314) + (xy 192.865454 87.976248) + (xy 192.901198 87.944458) + (xy 192.9217 87.941) + (xy 197.335001 87.941) + (xy 197.379195 87.959306) + (xy 197.397501 88.0035) + (xy 197.397501 88.063374) + (xy 197.397766 88.065385) + (xy 197.397766 88.06539) + (xy 197.402998 88.105139) + (xy 197.403779 88.111071) + (xy 197.4058 88.115404) + (xy 197.4058 88.115405) + (xy 197.450277 88.210787) + (xy 197.450279 88.210789) + (xy 197.452589 88.215744) + (xy 197.534256 88.297411) + (xy 197.539211 88.299721) + (xy 197.539213 88.299723) + (xy 197.585042 88.321093) + (xy 197.638929 88.346221) + (xy 197.65128 88.347847) + (xy 197.684593 88.352233) + (xy 197.684601 88.352233) + (xy 197.686625 88.3525) + (xy 197.688672 88.3525) + (xy 197.925642 88.352499) + (xy 198.163374 88.352499) + (xy 198.165385 88.352234) + (xy 198.16539 88.352234) + (xy 198.206331 88.346845) + (xy 198.206332 88.346845) + (xy 198.211071 88.346221) + (xy 198.229868 88.337456) + (xy 198.310787 88.299723) + (xy 198.310789 88.299721) + (xy 198.315744 88.297411) + (xy 198.397411 88.215744) + (xy 198.399721 88.210789) + (xy 198.399723 88.210787) + (xy 198.425732 88.15501) + (xy 198.446221 88.111071) + (xy 198.448635 88.092733) + (xy 198.452233 88.065407) + (xy 198.452233 88.065399) + (xy 198.4525 88.063375) + (xy 198.452499 87.436626) + (xy 198.452232 87.434593) + (xy 198.446845 87.393669) + (xy 198.446845 87.393668) + (xy 198.446221 87.388929) + (xy 198.430179 87.354526) + (xy 198.399723 87.289213) + (xy 198.399721 87.289211) + (xy 198.397411 87.284256) + (xy 198.315744 87.202589) + (xy 198.310789 87.200279) + (xy 198.310787 87.200277) + (xy 198.236007 87.165407) + (xy 198.211071 87.153779) + (xy 198.197705 87.152019) + (xy 198.165407 87.147767) + (xy 198.165399 87.147767) + (xy 198.163375 87.1475) + (xy 198.161328 87.1475) + (xy 197.924358 87.147501) + (xy 197.686626 87.147501) + (xy 197.684615 87.147766) + (xy 197.68461 87.147766) + (xy 197.643669 87.153155) + (xy 197.643668 87.153155) + (xy 197.638929 87.153779) + (xy 197.634595 87.1558) + (xy 197.539213 87.200277) + (xy 197.539211 87.200279) + (xy 197.534256 87.202589) + (xy 197.452589 87.284256) + (xy 197.450279 87.289211) + (xy 197.450277 87.289213) + (xy 197.434606 87.322821) + (xy 197.403779 87.388929) + (xy 197.40297 87.395073) + (xy 197.397767 87.434593) + (xy 197.397767 87.434601) + (xy 197.3975 87.436625) + (xy 197.3975 87.4965) + (xy 197.379194 87.540694) + (xy 197.335 87.559) + (xy 192.923049 87.559) + (xy 192.878855 87.540694) + (xy 192.866156 87.522373) + (xy 192.865695 87.52136) + (xy 192.865694 87.521359) + (xy 192.863852 87.517307) + (xy 192.849199 87.500302) + (xy 192.847708 87.497375) + (xy 192.8419 87.491567) + (xy 192.838746 87.48817) + (xy 192.80801 87.452499) + (xy 192.783918 87.424539) + (xy 192.763741 87.411461) + (xy 192.760155 87.408559) + (xy 192.760081 87.408661) + (xy 192.756106 87.405773) + (xy 192.752625 87.402292) + (xy 192.741343 87.396543) + (xy 192.735736 87.393309) + (xy 192.725676 87.386788) + (xy 192.717225 87.381311) + (xy 192.684893 87.360354) + (xy 192.68489 87.360353) + (xy 192.68116 87.357935) + (xy 192.676901 87.356661) + (xy 192.676898 87.35666) + (xy 192.658345 87.351112) + (xy 192.648839 87.348269) + (xy 192.638377 87.344079) + (xy 192.632813 87.341244) + (xy 192.621067 87.339384) + (xy 192.612951 87.337536) + (xy 192.601686 87.334167) + (xy 192.563838 87.322848) + (xy 192.519496 87.322577) + (xy 192.510103 87.321809) + (xy 192.504857 87.320978) + (xy 192.504856 87.320978) + (xy 192.5 87.320209) + (xy 192.491373 87.321576) + (xy 192.48122 87.322344) + (xy 192.462836 87.322231) + (xy 192.445838 87.322127) + (xy 192.445836 87.322127) + (xy 192.441385 87.3221) + (xy 192.387011 87.337641) + (xy 192.379623 87.339275) + (xy 192.367187 87.341244) + (xy 192.362804 87.343477) + (xy 192.36187 87.343781) + (xy 192.352155 87.347603) + (xy 192.327929 87.354526) + (xy 192.327927 87.354527) + (xy 192.323644 87.355751) + (xy 192.263748 87.393543) + (xy 192.262819 87.394129) + (xy 192.257842 87.396959) + (xy 192.251757 87.400059) + (xy 192.251756 87.40006) + (xy 192.247375 87.402292) + (xy 192.243897 87.40577) + (xy 192.242445 87.406825) + (xy 192.239058 87.40912) + (xy 192.22008 87.421095) + (xy 192.217137 87.424427) + (xy 192.217135 87.424429) + (xy 192.157156 87.492342) + (xy 192.156032 87.493538) + (xy 192.155775 87.493892) + (xy 192.155554 87.494113) + (xy 192.155405 87.494204) + (xy 192.154504 87.495163) + (xy 192.152292 87.497375) + (xy 192.151509 87.496592) + (xy 192.150362 87.497296) + (xy 192.151721 87.498496) + (xy 192.145002 87.506104) + (xy 192.139018 87.512879) + (xy 192.133182 87.52531) + (xy 192.088868 87.619695) + (xy 192.088867 87.619698) + (xy 192.086976 87.623726) + (xy 192.068136 87.744724) + (xy 171.102499 87.744724) + (xy 171.102499 87.686626) + (xy 171.102232 87.684593) + (xy 171.096845 87.643669) + (xy 171.096845 87.643668) + (xy 171.096221 87.638929) + (xy 171.086182 87.617401) + (xy 171.049723 87.539213) + (xy 171.049721 87.539211) + (xy 171.047411 87.534256) + (xy 170.965744 87.452589) + (xy 170.960789 87.450279) + (xy 170.960787 87.450277) + (xy 170.905355 87.424429) + (xy 170.861071 87.403779) + (xy 170.847705 87.402019) + (xy 170.815407 87.397767) + (xy 170.815399 87.397767) + (xy 170.813375 87.3975) + (xy 170.811328 87.3975) + (xy 170.574358 87.397501) + (xy 170.336626 87.397501) + (xy 170.334615 87.397766) + (xy 170.33461 87.397766) + (xy 170.293669 87.403155) + (xy 170.293668 87.403155) + (xy 170.288929 87.403779) + (xy 170.284595 87.4058) + (xy 170.189213 87.450277) + (xy 170.189211 87.450279) + (xy 170.184256 87.452589) + (xy 170.102589 87.534256) + (xy 170.100279 87.539211) + (xy 170.100277 87.539213) + (xy 170.080671 87.581259) + (xy 170.053779 87.638929) + (xy 170.053155 87.643669) + (xy 170.053155 87.64367) + (xy 170.047767 87.684593) + (xy 170.047767 87.684601) + (xy 170.0475 87.686625) + (xy 170.047501 88.313374) + (xy 170.047766 88.315385) + (xy 170.047766 88.31539) + (xy 170.052975 88.354965) + (xy 170.053779 88.361071) + (xy 170.0558 88.365404) + (xy 170.0558 88.365405) + (xy 170.100277 88.460787) + (xy 170.100279 88.460789) + (xy 170.102589 88.465744) + (xy 170.184256 88.547411) + (xy 170.189211 88.549721) + (xy 170.189213 88.549723) + (xy 170.238015 88.572479) + (xy 170.288929 88.596221) + (xy 170.309113 88.598878) + (xy 170.329658 88.601583) + (xy 170.371085 88.6255) + (xy 170.384 88.663548) + (xy 170.384 91.569998) + (xy 170.365694 91.614192) + (xy 169.161953 92.817932) + (xy 169.117759 92.836238) + (xy 169.099851 92.833618) + (xy 169.083008 92.828581) + (xy 169.063838 92.822848) + (xy 169.019496 92.822577) + (xy 169.010103 92.821809) + (xy 169.004857 92.820978) + (xy 169.004856 92.820978) + (xy 169 92.820209) + (xy 168.991373 92.821576) + (xy 168.98122 92.822344) + (xy 168.962836 92.822231) + (xy 168.945838 92.822127) + (xy 168.945836 92.822127) + (xy 168.941385 92.8221) + (xy 168.887011 92.837641) + (xy 168.879623 92.839275) + (xy 168.867187 92.841244) + (xy 168.862804 92.843477) + (xy 168.86187 92.843781) + (xy 168.852156 92.847603) + (xy 168.849821 92.84827) + (xy 168.827929 92.854526) + (xy 168.827927 92.854527) + (xy 168.823644 92.855751) + (xy 168.764119 92.893309) + (xy 168.762819 92.894129) + (xy 168.757842 92.896959) + (xy 168.751757 92.900059) + (xy 168.751756 92.90006) + (xy 168.747375 92.902292) + (xy 168.743897 92.90577) + (xy 168.742445 92.906825) + (xy 168.739058 92.90912) + (xy 168.72008 92.921095) + (xy 168.717137 92.924427) + (xy 168.717135 92.924429) + (xy 168.657156 92.992342) + (xy 168.656032 92.993538) + (xy 168.655775 92.993892) + (xy 168.655554 92.994113) + (xy 168.655405 92.994204) + (xy 168.654504 92.995163) + (xy 168.652292 92.997375) + (xy 168.651509 92.996592) + (xy 168.650362 92.997296) + (xy 168.651721 92.998496) + (xy 168.639018 93.012879) + (xy 168.634595 93.0223) + (xy 168.588868 93.119695) + (xy 168.588867 93.119698) + (xy 168.586976 93.123726) + (xy 168.568136 93.244724) + (xy 162.698461 93.244724) + (xy 162.703105 93.242444) + (xy 162.711387 93.236516) + (xy 162.786883 93.160889) + (xy 162.792799 93.152594) + (xy 162.839863 93.056313) + (xy 162.842695 93.047149) + (xy 162.851672 92.985609) + (xy 162.852 92.981096) + (xy 162.852 92.800931) + (xy 162.848359 92.792141) + (xy 162.839569 92.7885) + (xy 162.325931 92.7885) + (xy 162.317141 92.792141) + (xy 162.3135 92.800931) + (xy 162.3135 93.289568) + (xy 162.1865 93.289568) + (xy 162.1865 92.800931) + (xy 162.182859 92.792141) + (xy 162.174069 92.7885) + (xy 161.660432 92.7885) + (xy 161.651642 92.792141) + (xy 161.648001 92.800931) + (xy 161.648001 92.981083) + (xy 161.352 92.981083) + (xy 161.352 92.800931) + (xy 161.348359 92.792141) + (xy 161.339569 92.7885) + (xy 160.825931 92.7885) + (xy 160.817141 92.792141) + (xy 160.8135 92.800931) + (xy 160.8135 93.289568) + (xy 160.6865 93.289568) + (xy 160.6865 92.800931) + (xy 160.682859 92.792141) + (xy 160.674069 92.7885) + (xy 160.160432 92.7885) + (xy 160.151642 92.792141) + (xy 160.148001 92.800931) + (xy 160.148001 92.981083) + (xy 155.69804 92.981083) + (xy 155.69804 92.649069) + (xy 160.148 92.649069) + (xy 160.151641 92.657859) + (xy 160.160431 92.6615) + (xy 160.674069 92.6615) + (xy 160.682859 92.657859) + (xy 160.6865 92.649069) + (xy 160.8135 92.649069) + (xy 160.817141 92.657859) + (xy 160.825931 92.6615) + (xy 161.339568 92.6615) + (xy 161.348358 92.657859) + (xy 161.351999 92.649069) + (xy 161.648 92.649069) + (xy 161.651641 92.657859) + (xy 161.660431 92.6615) + (xy 162.174069 92.6615) + (xy 162.182859 92.657859) + (xy 162.1865 92.649069) + (xy 162.3135 92.649069) + (xy 162.317141 92.657859) + (xy 162.325931 92.6615) + (xy 162.839568 92.6615) + (xy 162.848358 92.657859) + (xy 162.851999 92.649069) + (xy 162.851999 92.468917) + (xy 162.851667 92.464386) + (xy 162.842522 92.402257) + (xy 162.839674 92.39309) + (xy 162.792444 92.296895) + (xy 162.786516 92.288613) + (xy 162.710889 92.213117) + (xy 162.702594 92.207201) + (xy 162.606313 92.160137) + (xy 162.597149 92.157305) + (xy 162.535609 92.148328) + (xy 162.531096 92.148) + (xy 162.325931 92.148) + (xy 162.317141 92.151641) + (xy 162.3135 92.160431) + (xy 162.3135 92.649069) + (xy 162.1865 92.649069) + (xy 162.1865 92.160432) + (xy 162.182859 92.151642) + (xy 162.174069 92.148001) + (xy 161.968917 92.148001) + (xy 161.964386 92.148333) + (xy 161.902257 92.157478) + (xy 161.89309 92.160326) + (xy 161.796895 92.207556) + (xy 161.788613 92.213484) + (xy 161.713117 92.289111) + (xy 161.707201 92.297406) + (xy 161.660137 92.393687) + (xy 161.657305 92.402851) + (xy 161.648328 92.464391) + (xy 161.648 92.468904) + (xy 161.648 92.649069) + (xy 161.351999 92.649069) + (xy 161.351999 92.468917) + (xy 161.351667 92.464386) + (xy 161.342522 92.402257) + (xy 161.339674 92.39309) + (xy 161.292444 92.296895) + (xy 161.286516 92.288613) + (xy 161.210889 92.213117) + (xy 161.202594 92.207201) + (xy 161.106313 92.160137) + (xy 161.097149 92.157305) + (xy 161.035609 92.148328) + (xy 161.031096 92.148) + (xy 160.825931 92.148) + (xy 160.817141 92.151641) + (xy 160.8135 92.160431) + (xy 160.8135 92.649069) + (xy 160.6865 92.649069) + (xy 160.6865 92.160432) + (xy 160.682859 92.151642) + (xy 160.674069 92.148001) + (xy 160.468917 92.148001) + (xy 160.464386 92.148333) + (xy 160.402257 92.157478) + (xy 160.39309 92.160326) + (xy 160.296895 92.207556) + (xy 160.288613 92.213484) + (xy 160.213117 92.289111) + (xy 160.207201 92.297406) + (xy 160.160137 92.393687) + (xy 160.157305 92.402851) + (xy 160.148328 92.464391) + (xy 160.148 92.468904) + (xy 160.148 92.649069) + (xy 155.69804 92.649069) + (xy 155.69804 91.793449) + (xy 155.716346 91.749255) + (xy 155.76054 91.730949) + (xy 155.804734 91.749255) + (xy 155.909966 91.854487) + (xy 155.914271 91.860561) + (xy 155.914844 91.860105) + (xy 155.919225 91.865613) + (xy 155.922272 91.871958) + (xy 155.937719 91.884311) + (xy 155.945355 91.890418) + (xy 155.950514 91.895035) + (xy 155.955762 91.900283) + (xy 155.958733 91.90215) + (xy 155.958734 91.902151) + (xy 155.961763 91.904055) + (xy 155.967538 91.908159) + (xy 155.98483 91.921988) + (xy 155.984834 91.92199) + (xy 155.990327 91.926383) + (xy 155.997184 91.92796) + (xy 156.000946 91.929778) + (xy 156.004884 91.931157) + (xy 156.010842 91.934902) + (xy 156.017833 91.935692) + (xy 156.017838 91.935694) + (xy 156.039831 91.93818) + (xy 156.046817 91.939373) + (xy 156.053891 91.941) + (xy 156.061271 91.941) + (xy 156.068292 91.941396) + (xy 156.097432 91.94469) + (xy 156.104078 91.942369) + (xy 156.111072 91.941585) + (xy 156.111148 91.942264) + (xy 156.118598 91.941) + (xy 157.956768 91.941) + (xy 157.964107 91.94225) + (xy 157.96419 91.941523) + (xy 157.971181 91.94232) + (xy 157.977822 91.944652) + (xy 157.984815 91.943874) + (xy 157.984816 91.943874) + (xy 158.005939 91.941523) + (xy 158.007198 91.941383) + (xy 158.01411 91.941) + (xy 158.021533 91.941) + (xy 158.028465 91.939419) + (xy 158.035418 91.938243) + (xy 158.064429 91.935014) + (xy 158.070393 91.931281) + (xy 158.074341 91.929906) + (xy 158.0781 91.928097) + (xy 158.084959 91.926532) + (xy 158.090662 91.921988) + (xy 158.107773 91.908352) + (xy 158.113559 91.904256) + (xy 158.116715 91.90228) + (xy 158.116717 91.902279) + (xy 158.119711 91.900404) + (xy 158.124924 91.895191) + (xy 158.130168 91.890506) + (xy 158.147604 91.876612) + (xy 158.147604 91.876611) + (xy 158.153109 91.872225) + (xy 158.156167 91.865886) + (xy 158.160558 91.860385) + (xy 158.161092 91.860811) + (xy 158.165468 91.854647) + (xy 159.310809 90.709306) + (xy 159.355003 90.691) + (xy 165.076187 90.691) + (xy 165.120381 90.709306) + (xy 165.129248 90.720473) + (xy 165.13154 90.724155) + (xy 165.133333 90.72823) + (xy 165.147272 90.744813) + (xy 165.148029 90.745713) + (xy 165.150157 90.748434) + (xy 165.152292 90.752625) + (xy 165.160081 90.760414) + (xy 165.163729 90.764391) + (xy 165.212127 90.821968) + (xy 165.235399 90.837459) + (xy 165.241836 90.842733) + (xy 165.243899 90.844232) + (xy 165.247375 90.847708) + (xy 165.251753 90.849939) + (xy 165.251756 90.849941) + (xy 165.25873 90.853494) + (xy 165.264977 90.857148) + (xy 165.314064 90.889823) + (xy 165.318313 90.891151) + (xy 165.318314 90.891151) + (xy 165.350296 90.901143) + (xy 165.360027 90.905109) + (xy 165.362799 90.906521) + (xy 165.362803 90.906522) + (xy 165.367187 90.908756) + (xy 165.377852 90.910445) + (xy 165.386713 90.91252) + (xy 165.426696 90.925012) + (xy 165.426699 90.925012) + (xy 165.430948 90.92634) + (xy 165.480069 90.927241) + (xy 165.488683 90.927999) + (xy 165.49514 90.929022) + (xy 165.495144 90.929022) + (xy 165.5 90.929791) + (xy 165.506947 90.92869) + (xy 165.517853 90.927933) + (xy 165.553383 90.928584) + (xy 165.613532 90.912185) + (xy 165.62019 90.910755) + (xy 165.622147 90.910445) + (xy 165.632813 90.908756) + (xy 165.637196 90.906522) + (xy 165.641875 90.905002) + (xy 165.641878 90.90501) + (xy 165.646727 90.903136) + (xy 165.671527 90.896375) + (xy 165.681223 90.890422) + (xy 165.739709 90.854511) + (xy 165.744037 90.852085) + (xy 165.74824 90.849944) + (xy 165.748248 90.849938) + (xy 165.752625 90.847708) + (xy 165.755427 90.844906) + (xy 165.756264 90.844346) + (xy 165.758891 90.842733) + (xy 165.775881 90.832301) + (xy 165.858058 90.741513) + (xy 165.911451 90.631311) + (xy 165.9125 90.62508) + (xy 165.926696 90.540694) + (xy 165.931767 90.510552) + (xy 165.931896 90.5) + (xy 165.914536 90.378781) + (xy 165.863852 90.267307) + (xy 165.849199 90.250302) + (xy 165.847708 90.247375) + (xy 165.8419 90.241567) + (xy 165.838746 90.23817) + (xy 165.786826 90.177914) + (xy 165.783918 90.174539) + (xy 165.763741 90.161461) + (xy 165.760155 90.158559) + (xy 165.760081 90.158661) + (xy 165.756106 90.155773) + (xy 165.752625 90.152292) + (xy 165.741343 90.146543) + (xy 165.735736 90.143309) + (xy 165.734632 90.142593) + (xy 165.713322 90.128781) + (xy 165.684893 90.110354) + (xy 165.68489 90.110353) + (xy 165.68116 90.107935) + (xy 165.676901 90.106661) + (xy 165.676898 90.10666) + (xy 165.658345 90.101112) + (xy 165.648839 90.098269) + (xy 165.638377 90.094079) + (xy 165.632813 90.091244) + (xy 165.621067 90.089384) + (xy 165.612951 90.087536) + (xy 165.609082 90.086379) + (xy 165.563838 90.072848) + (xy 165.519496 90.072577) + (xy 165.510103 90.071809) + (xy 165.504857 90.070978) + (xy 165.504856 90.070978) + (xy 165.5 90.070209) + (xy 165.491373 90.071576) + (xy 165.48122 90.072344) + (xy 165.462836 90.072231) + (xy 165.445838 90.072127) + (xy 165.445836 90.072127) + (xy 165.441385 90.0721) + (xy 165.387011 90.087641) + (xy 165.379623 90.089275) + (xy 165.367187 90.091244) + (xy 165.362804 90.093477) + (xy 165.36187 90.093781) + (xy 165.352155 90.097603) + (xy 165.327929 90.104526) + (xy 165.327927 90.104527) + (xy 165.323644 90.105751) + (xy 165.264119 90.143309) + (xy 165.262819 90.144129) + (xy 165.257842 90.146959) + (xy 165.251757 90.150059) + (xy 165.251756 90.15006) + (xy 165.247375 90.152292) + (xy 165.243897 90.15577) + (xy 165.242445 90.156825) + (xy 165.239058 90.15912) + (xy 165.22008 90.171095) + (xy 165.217137 90.174427) + (xy 165.217135 90.174429) + (xy 165.157156 90.242342) + (xy 165.156032 90.243538) + (xy 165.155775 90.243892) + (xy 165.155554 90.244113) + (xy 165.155405 90.244204) + (xy 165.154504 90.245163) + (xy 165.152292 90.247375) + (xy 165.151509 90.246592) + (xy 165.150362 90.247296) + (xy 165.151721 90.248496) + (xy 165.145002 90.256104) + (xy 165.139018 90.262879) + (xy 165.137127 90.266906) + (xy 165.137126 90.266908) + (xy 165.134237 90.273062) + (xy 165.098884 90.305287) + (xy 165.077662 90.309) + (xy 159.293232 90.309) + (xy 159.285893 90.30775) + (xy 159.28581 90.308477) + (xy 159.278819 90.30768) + (xy 159.272178 90.305348) + (xy 159.265185 90.306126) + (xy 159.265184 90.306126) + (xy 159.2428 90.308617) + (xy 159.235888 90.309) + (xy 159.228467 90.309) + (xy 159.225044 90.309781) + (xy 159.225043 90.309781) + (xy 159.221552 90.310577) + (xy 159.214569 90.311758) + (xy 159.192562 90.314207) + (xy 159.185571 90.314985) + (xy 159.179608 90.318718) + (xy 159.175675 90.320088) + (xy 159.171905 90.321902) + (xy 159.165041 90.323468) + (xy 159.151032 90.334631) + (xy 159.142229 90.341646) + (xy 159.136446 90.34574) + (xy 159.13329 90.347716) + (xy 159.133284 90.347721) + (xy 159.130289 90.349596) + (xy 159.125076 90.354809) + (xy 159.119832 90.359494) + (xy 159.111486 90.366145) + (xy 159.096891 90.377775) + (xy 159.093833 90.384114) + (xy 159.089442 90.389615) + (xy 159.088908 90.389189) + (xy 159.084532 90.395353) + (xy 157.939191 91.540694) + (xy 157.894997 91.559) + (xy 156.180597 91.559) + (xy 156.136403 91.540694) + (xy 155.270441 90.674732) + (xy 155.252135 90.630538) + (xy 155.270441 90.586344) + (xy 155.272803 90.584191) + (xy 155.275881 90.582301) + (xy 155.284523 90.572754) + (xy 155.355071 90.494813) + (xy 155.358058 90.491513) + (xy 155.411451 90.381311) + (xy 155.413317 90.370224) + (xy 155.427516 90.285821) + (xy 155.431767 90.260552) + (xy 155.431896 90.25) + (xy 155.414536 90.128781) + (xy 155.363852 90.017307) + (xy 155.349199 90.000302) + (xy 155.347708 89.997375) + (xy 155.3419 89.991567) + (xy 155.338746 89.98817) + (xy 155.286826 89.927914) + (xy 155.283918 89.924539) + (xy 155.263741 89.911461) + (xy 155.260155 89.908559) + (xy 155.260081 89.908661) + (xy 155.256106 89.905773) + (xy 155.252625 89.902292) + (xy 155.241343 89.896543) + (xy 155.235735 89.893308) + (xy 155.219505 89.882788) + (xy 155.192377 89.843389) + (xy 155.191 89.830342) + (xy 155.191 89.605003) + (xy 155.209306 89.560809) + (xy 156.535738 88.234377) + (xy 156.579932 88.216071) + (xy 156.624126 88.234377) + (xy 156.627774 88.238354) + (xy 156.633498 88.245163) + (xy 156.63396 88.245713) + (xy 156.636088 88.248434) + (xy 156.638223 88.252625) + (xy 156.646012 88.260414) + (xy 156.64966 88.264391) + (xy 156.660689 88.277512) + (xy 156.686825 88.308604) + (xy 156.698058 88.321968) + (xy 156.72133 88.337459) + (xy 156.727767 88.342733) + (xy 156.72983 88.344232) + (xy 156.733306 88.347708) + (xy 156.737684 88.349939) + (xy 156.737687 88.349941) + (xy 156.744661 88.353494) + (xy 156.750908 88.357148) + (xy 156.799995 88.389823) + (xy 156.804244 88.391151) + (xy 156.804245 88.391151) + (xy 156.836227 88.401143) + (xy 156.845958 88.405109) + (xy 156.84873 88.406521) + (xy 156.848734 88.406522) + (xy 156.853118 88.408756) + (xy 156.863783 88.410445) + (xy 156.872644 88.41252) + (xy 156.912627 88.425012) + (xy 156.91263 88.425012) + (xy 156.916879 88.42634) + (xy 156.966 88.427241) + (xy 156.974614 88.427999) + (xy 156.981071 88.429022) + (xy 156.981075 88.429022) + (xy 156.985931 88.429791) + (xy 156.992878 88.42869) + (xy 157.003784 88.427933) + (xy 157.039314 88.428584) + (xy 157.099463 88.412185) + (xy 157.106121 88.410755) + (xy 157.108078 88.410445) + (xy 157.118744 88.408756) + (xy 157.123127 88.406522) + (xy 157.127806 88.405002) + (xy 157.127809 88.40501) + (xy 157.132658 88.403136) + (xy 157.157458 88.396375) + (xy 157.162452 88.393309) + (xy 157.187316 88.378042) + (xy 157.18974 88.376554) + (xy 157.236979 88.369029) + (xy 157.275703 88.397112) + (xy 157.284942 88.429815) + (xy 157.284942 88.669055) + (xy 157.266636 88.713249) + (xy 156.161953 89.817932) + (xy 156.117759 89.836238) + (xy 156.099851 89.833618) + (xy 156.083715 89.828793) + (xy 156.063838 89.822848) + (xy 156.019496 89.822577) + (xy 156.010103 89.821809) + (xy 156.004857 89.820978) + (xy 156.004856 89.820978) + (xy 156 89.820209) + (xy 155.991373 89.821576) + (xy 155.98122 89.822344) + (xy 155.962836 89.822231) + (xy 155.945838 89.822127) + (xy 155.945836 89.822127) + (xy 155.941385 89.8221) + (xy 155.887011 89.837641) + (xy 155.879623 89.839275) + (xy 155.867187 89.841244) + (xy 155.862804 89.843477) + (xy 155.86187 89.843781) + (xy 155.852155 89.847603) + (xy 155.827929 89.854526) + (xy 155.827927 89.854527) + (xy 155.823644 89.855751) + (xy 155.819875 89.858129) + (xy 155.808345 89.865404) + (xy 155.764119 89.893309) + (xy 155.762819 89.894129) + (xy 155.757842 89.896959) + (xy 155.751757 89.900059) + (xy 155.751756 89.90006) + (xy 155.747375 89.902292) + (xy 155.743897 89.90577) + (xy 155.742445 89.906825) + (xy 155.739058 89.90912) + (xy 155.72008 89.921095) + (xy 155.717137 89.924427) + (xy 155.717135 89.924429) + (xy 155.657156 89.992342) + (xy 155.656032 89.993538) + (xy 155.655775 89.993892) + (xy 155.655554 89.994113) + (xy 155.655405 89.994204) + (xy 155.654504 89.995163) + (xy 155.652292 89.997375) + (xy 155.651509 89.996592) + (xy 155.650362 89.997296) + (xy 155.651721 89.998496) + (xy 155.642377 90.009076) + (xy 155.639018 90.012879) + (xy 155.637127 90.016907) + (xy 155.588868 90.119695) + (xy 155.588867 90.119698) + (xy 155.586976 90.123726) + (xy 155.568136 90.244724) + (xy 155.568713 90.249137) + (xy 155.568713 90.249138) + (xy 155.582857 90.357301) + (xy 155.584014 90.366145) + (xy 155.591185 90.382443) + (xy 155.591244 90.382813) + (xy 155.592007 90.384311) + (xy 155.594031 90.38891) + (xy 155.594031 90.388911) + (xy 155.630204 90.471118) + (xy 155.633333 90.47823) + (xy 155.646094 90.493411) + (xy 155.648029 90.495713) + (xy 155.650157 90.498434) + (xy 155.652292 90.502625) + (xy 155.660081 90.510414) + (xy 155.66373 90.514392) + (xy 155.701743 90.559614) + (xy 155.712127 90.571968) + (xy 155.735399 90.587459) + (xy 155.741836 90.592733) + (xy 155.743899 90.594232) + (xy 155.747375 90.597708) + (xy 155.751753 90.599939) + (xy 155.751756 90.599941) + (xy 155.75873 90.603494) + (xy 155.764977 90.607148) + (xy 155.814064 90.639823) + (xy 155.818313 90.641151) + (xy 155.818314 90.641151) + (xy 155.850296 90.651143) + (xy 155.860027 90.655109) + (xy 155.862799 90.656521) + (xy 155.862803 90.656522) + (xy 155.867187 90.658756) + (xy 155.877852 90.660445) + (xy 155.886713 90.66252) + (xy 155.926696 90.675012) + (xy 155.926699 90.675012) + (xy 155.930948 90.67634) + (xy 155.980069 90.677241) + (xy 155.988683 90.677999) + (xy 155.99514 90.679022) + (xy 155.995144 90.679022) + (xy 156 90.679791) + (xy 156.006947 90.67869) + (xy 156.017853 90.677933) + (xy 156.053383 90.678584) + (xy 156.066704 90.674952) + (xy 156.114155 90.680988) + (xy 156.143442 90.71881) + (xy 156.136625 90.761755) + (xy 156.139018 90.762879) + (xy 156.088868 90.869695) + (xy 156.088867 90.869698) + (xy 156.086976 90.873726) + (xy 156.068136 90.994724) + (xy 156.068713 90.999137) + (xy 156.068713 90.999138) + (xy 156.074976 91.047029) + (xy 156.084014 91.116145) + (xy 156.091185 91.132443) + (xy 156.091244 91.132813) + (xy 156.092007 91.134311) + (xy 156.094031 91.13891) + (xy 156.094031 91.138911) + (xy 156.129309 91.219084) + (xy 156.133333 91.22823) + (xy 156.147272 91.244813) + (xy 156.148029 91.245713) + (xy 156.150157 91.248434) + (xy 156.152292 91.252625) + (xy 156.160081 91.260414) + (xy 156.163729 91.264391) + (xy 156.212127 91.321968) + (xy 156.235399 91.337459) + (xy 156.241836 91.342733) + (xy 156.243899 91.344232) + (xy 156.247375 91.347708) + (xy 156.251753 91.349939) + (xy 156.251756 91.349941) + (xy 156.25873 91.353494) + (xy 156.264977 91.357148) + (xy 156.314064 91.389823) + (xy 156.318313 91.391151) + (xy 156.318314 91.391151) + (xy 156.350296 91.401143) + (xy 156.360027 91.405109) + (xy 156.362799 91.406521) + (xy 156.362803 91.406522) + (xy 156.367187 91.408756) + (xy 156.377852 91.410445) + (xy 156.386713 91.41252) + (xy 156.426696 91.425012) + (xy 156.426699 91.425012) + (xy 156.430948 91.42634) + (xy 156.480069 91.427241) + (xy 156.488683 91.427999) + (xy 156.49514 91.429022) + (xy 156.495144 91.429022) + (xy 156.5 91.429791) + (xy 156.506947 91.42869) + (xy 156.517853 91.427933) + (xy 156.553383 91.428584) + (xy 156.613532 91.412185) + (xy 156.62019 91.410755) + (xy 156.622147 91.410445) + (xy 156.632813 91.408756) + (xy 156.637196 91.406522) + (xy 156.641875 91.405002) + (xy 156.641878 91.40501) + (xy 156.646727 91.403136) + (xy 156.671527 91.396375) + (xy 156.676521 91.393309) + (xy 156.739709 91.354511) + (xy 156.744037 91.352085) + (xy 156.74824 91.349944) + (xy 156.748248 91.349938) + (xy 156.752625 91.347708) + (xy 156.755427 91.344906) + (xy 156.756264 91.344346) + (xy 156.761316 91.341244) + (xy 156.775881 91.332301) + (xy 156.858058 91.241513) + (xy 156.911451 91.131311) + (xy 156.913317 91.120224) + (xy 156.928891 91.027648) + (xy 156.931767 91.010552) + (xy 156.931896 91) + (xy 156.914536 90.878781) + (xy 156.863852 90.767307) + (xy 156.849199 90.750302) + (xy 156.847708 90.747375) + (xy 156.841906 90.741573) + (xy 156.838753 90.738177) + (xy 156.826492 90.723948) + (xy 156.811511 90.678519) + (xy 156.829645 90.638956) + (xy 157.212295 90.256306) + (xy 157.256489 90.238) + (xy 157.300683 90.256306) + (xy 157.318989 90.3005) + (xy 157.318989 90.574222) + (xy 157.300683 90.618416) + (xy 157.289841 90.627079) + (xy 157.267539 90.641151) + (xy 157.262819 90.644129) + (xy 157.257842 90.646959) + (xy 157.251757 90.650059) + (xy 157.251756 90.65006) + (xy 157.247375 90.652292) + (xy 157.243897 90.65577) + (xy 157.242445 90.656825) + (xy 157.239058 90.65912) + (xy 157.22008 90.671095) + (xy 157.217137 90.674427) + (xy 157.217135 90.674429) + (xy 157.157156 90.742342) + (xy 157.156032 90.743538) + (xy 157.155775 90.743892) + (xy 157.155554 90.744113) + (xy 157.155405 90.744204) + (xy 157.154504 90.745163) + (xy 157.152292 90.747375) + (xy 157.151509 90.746592) + (xy 157.150362 90.747296) + (xy 157.151721 90.748496) + (xy 157.145002 90.756104) + (xy 157.139018 90.762879) + (xy 157.137127 90.766907) + (xy 157.088868 90.869695) + (xy 157.088867 90.869698) + (xy 157.086976 90.873726) + (xy 157.068136 90.994724) + (xy 157.068713 90.999137) + (xy 157.068713 90.999138) + (xy 157.074976 91.047029) + (xy 157.084014 91.116145) + (xy 157.091185 91.132443) + (xy 157.091244 91.132813) + (xy 157.092007 91.134311) + (xy 157.094031 91.13891) + (xy 157.094031 91.138911) + (xy 157.129309 91.219084) + (xy 157.133333 91.22823) + (xy 157.147272 91.244813) + (xy 157.148029 91.245713) + (xy 157.150157 91.248434) + (xy 157.152292 91.252625) + (xy 157.160081 91.260414) + (xy 157.163729 91.264391) + (xy 157.212127 91.321968) + (xy 157.235399 91.337459) + (xy 157.241836 91.342733) + (xy 157.243899 91.344232) + (xy 157.247375 91.347708) + (xy 157.251753 91.349939) + (xy 157.251756 91.349941) + (xy 157.25873 91.353494) + (xy 157.264977 91.357148) + (xy 157.314064 91.389823) + (xy 157.318313 91.391151) + (xy 157.318314 91.391151) + (xy 157.350296 91.401143) + (xy 157.360027 91.405109) + (xy 157.362799 91.406521) + (xy 157.362803 91.406522) + (xy 157.367187 91.408756) + (xy 157.377852 91.410445) + (xy 157.386713 91.41252) + (xy 157.426696 91.425012) + (xy 157.426699 91.425012) + (xy 157.430948 91.42634) + (xy 157.480069 91.427241) + (xy 157.488683 91.427999) + (xy 157.49514 91.429022) + (xy 157.495144 91.429022) + (xy 157.5 91.429791) + (xy 157.506947 91.42869) + (xy 157.517853 91.427933) + (xy 157.553383 91.428584) + (xy 157.613532 91.412185) + (xy 157.62019 91.410755) + (xy 157.622147 91.410445) + (xy 157.632813 91.408756) + (xy 157.637196 91.406522) + (xy 157.641875 91.405002) + (xy 157.641878 91.40501) + (xy 157.646727 91.403136) + (xy 157.671527 91.396375) + (xy 157.676521 91.393309) + (xy 157.739709 91.354511) + (xy 157.744037 91.352085) + (xy 157.74824 91.349944) + (xy 157.748248 91.349938) + (xy 157.752625 91.347708) + (xy 157.755427 91.344906) + (xy 157.756264 91.344346) + (xy 157.761316 91.341244) + (xy 157.775881 91.332301) + (xy 157.858058 91.241513) + (xy 157.865454 91.226248) + (xy 157.901198 91.194458) + (xy 157.9217 91.191) + (xy 157.956768 91.191) + (xy 157.964107 91.19225) + (xy 157.96419 91.191523) + (xy 157.971181 91.19232) + (xy 157.977822 91.194652) + (xy 157.984815 91.193874) + (xy 157.984816 91.193874) + (xy 158.007197 91.191383) + (xy 158.01411 91.191) + (xy 158.021533 91.191) + (xy 158.028465 91.189419) + (xy 158.035418 91.188243) + (xy 158.064429 91.185014) + (xy 158.070393 91.181281) + (xy 158.074341 91.179906) + (xy 158.0781 91.178097) + (xy 158.084959 91.176532) + (xy 158.107774 91.158351) + (xy 158.113559 91.154256) + (xy 158.116715 91.15228) + (xy 158.116717 91.152279) + (xy 158.119711 91.150404) + (xy 158.124924 91.145191) + (xy 158.130168 91.140506) + (xy 158.147604 91.126612) + (xy 158.147604 91.126611) + (xy 158.153109 91.122225) + (xy 158.156167 91.115886) + (xy 158.160558 91.110385) + (xy 158.161092 91.110811) + (xy 158.165468 91.104647) + (xy 158.604487 90.665628) + (xy 158.610561 90.661323) + (xy 158.610105 90.66075) + (xy 158.615613 90.656369) + (xy 158.621958 90.653322) + (xy 158.640418 90.630239) + (xy 158.645035 90.62508) + (xy 158.650284 90.619831) + (xy 158.654057 90.613828) + (xy 158.658165 90.608047) + (xy 158.658879 90.607155) + (xy 158.676383 90.585267) + (xy 158.67796 90.578407) + (xy 158.679778 90.574647) + (xy 158.681156 90.570711) + (xy 158.684902 90.564752) + (xy 158.688179 90.535763) + (xy 158.689371 90.528787) + (xy 158.691 90.521703) + (xy 158.691 90.514329) + (xy 158.691396 90.507308) + (xy 158.6939 90.485158) + (xy 158.694691 90.478162) + (xy 158.693446 90.474596) + (xy 158.693451 90.467051) + (xy 158.693729 90.464606) + (xy 158.69452 90.461164) + (xy 158.69452 90.45379) + (xy 158.694916 90.446769) + (xy 158.696922 90.429021) + (xy 158.698211 90.417623) + (xy 158.69589 90.410978) + (xy 158.695106 90.403984) + (xy 158.695784 90.403908) + (xy 158.69452 90.396456) + (xy 158.69452 87.244724) + (xy 162.318136 87.244724) + (xy 162.318713 87.249137) + (xy 162.318713 87.249138) + (xy 162.332655 87.355751) + (xy 162.334014 87.366145) + (xy 162.341185 87.382443) + (xy 162.341244 87.382813) + (xy 162.342007 87.384311) + (xy 162.344031 87.38891) + (xy 162.344031 87.388911) + (xy 162.381336 87.473691) + (xy 162.383333 87.47823) + (xy 162.396779 87.494226) + (xy 162.398029 87.495713) + (xy 162.400157 87.498434) + (xy 162.402292 87.502625) + (xy 162.410081 87.510414) + (xy 162.413729 87.514391) + (xy 162.422907 87.52531) + (xy 162.452655 87.560699) + (xy 162.462127 87.571968) + (xy 162.485399 87.587459) + (xy 162.491836 87.592733) + (xy 162.493899 87.594232) + (xy 162.497375 87.597708) + (xy 162.501753 87.599939) + (xy 162.501756 87.599941) + (xy 162.50873 87.603494) + (xy 162.514977 87.607148) + (xy 162.564064 87.639823) + (xy 162.568313 87.641151) + (xy 162.568314 87.641151) + (xy 162.600296 87.651143) + (xy 162.610027 87.655109) + (xy 162.612799 87.656521) + (xy 162.612803 87.656522) + (xy 162.617187 87.658756) + (xy 162.627852 87.660445) + (xy 162.636713 87.66252) + (xy 162.676696 87.675012) + (xy 162.676699 87.675012) + (xy 162.680948 87.67634) + (xy 162.730069 87.677241) + (xy 162.738683 87.677999) + (xy 162.74514 87.679022) + (xy 162.745144 87.679022) + (xy 162.75 87.679791) + (xy 162.756947 87.67869) + (xy 162.767853 87.677933) + (xy 162.803383 87.678584) + (xy 162.808019 87.67732) + (xy 162.850968 87.665611) + (xy 162.898421 87.671648) + (xy 162.911601 87.681716) + (xy 163.334371 88.104485) + (xy 163.338678 88.11056) + (xy 163.33925 88.110105) + (xy 163.343631 88.115613) + (xy 163.346678 88.121958) + (xy 163.352175 88.126354) + (xy 163.369766 88.140422) + (xy 163.374925 88.145039) + (xy 163.380169 88.150283) + (xy 163.383132 88.152145) + (xy 163.383139 88.152151) + (xy 163.386174 88.154058) + (xy 163.39195 88.158163) + (xy 163.414733 88.176383) + (xy 163.421591 88.17796) + (xy 163.425356 88.17978) + (xy 163.429292 88.181158) + (xy 163.435248 88.184902) + (xy 163.442239 88.185692) + (xy 163.442244 88.185694) + (xy 163.464237 88.18818) + (xy 163.471223 88.189373) + (xy 163.478297 88.191) + (xy 163.485677 88.191) + (xy 163.492698 88.191396) + (xy 163.521838 88.19469) + (xy 163.528484 88.192369) + (xy 163.535478 88.191585) + (xy 163.535554 88.192264) + (xy 163.543004 88.191) + (xy 168.335001 88.191) + (xy 168.379195 88.209306) + (xy 168.397501 88.2535) + (xy 168.397501 88.313374) + (xy 168.397766 88.315385) + (xy 168.397766 88.31539) + (xy 168.402975 88.354965) + (xy 168.403779 88.361071) + (xy 168.4058 88.365404) + (xy 168.4058 88.365405) + (xy 168.450277 88.460787) + (xy 168.450279 88.460789) + (xy 168.452589 88.465744) + (xy 168.534256 88.547411) + (xy 168.539211 88.549721) + (xy 168.539213 88.549723) + (xy 168.588015 88.572479) + (xy 168.638929 88.596221) + (xy 168.652295 88.597981) + (xy 168.684593 88.602233) + (xy 168.684601 88.602233) + (xy 168.686625 88.6025) + (xy 168.688672 88.6025) + (xy 168.925642 88.602499) + (xy 169.163374 88.602499) + (xy 169.165385 88.602234) + (xy 169.16539 88.602234) + (xy 169.206331 88.596845) + (xy 169.206332 88.596845) + (xy 169.211071 88.596221) + (xy 169.218198 88.592898) + (xy 169.310787 88.549723) + (xy 169.310789 88.549721) + (xy 169.315744 88.547411) + (xy 169.397411 88.465744) + (xy 169.399721 88.460789) + (xy 169.399723 88.460787) + (xy 169.425732 88.40501) + (xy 169.446221 88.361071) + (xy 169.449501 88.336155) + (xy 169.452233 88.315407) + (xy 169.452233 88.315399) + (xy 169.4525 88.313375) + (xy 169.452499 87.686626) + (xy 169.452232 87.684593) + (xy 169.446845 87.643669) + (xy 169.446845 87.643668) + (xy 169.446221 87.638929) + (xy 169.436182 87.617401) + (xy 169.399723 87.539213) + (xy 169.399721 87.539211) + (xy 169.397411 87.534256) + (xy 169.315744 87.452589) + (xy 169.310789 87.450279) + (xy 169.310787 87.450277) + (xy 169.255355 87.424429) + (xy 169.211071 87.403779) + (xy 169.197705 87.402019) + (xy 169.165407 87.397767) + (xy 169.165399 87.397767) + (xy 169.163375 87.3975) + (xy 169.161328 87.3975) + (xy 168.924358 87.397501) + (xy 168.686626 87.397501) + (xy 168.684615 87.397766) + (xy 168.68461 87.397766) + (xy 168.643669 87.403155) + (xy 168.643668 87.403155) + (xy 168.638929 87.403779) + (xy 168.634595 87.4058) + (xy 168.539213 87.450277) + (xy 168.539211 87.450279) + (xy 168.534256 87.452589) + (xy 168.452589 87.534256) + (xy 168.450279 87.539211) + (xy 168.450277 87.539213) + (xy 168.430671 87.581259) + (xy 168.403779 87.638929) + (xy 168.403155 87.643669) + (xy 168.403155 87.64367) + (xy 168.397767 87.684593) + (xy 168.397767 87.684601) + (xy 168.3975 87.686625) + (xy 168.3975 87.7465) + (xy 168.379194 87.790694) + (xy 168.335 87.809) + (xy 163.605003 87.809) + (xy 163.560809 87.790694) + (xy 163.182793 87.412678) + (xy 163.164487 87.368484) + (xy 163.165353 87.358115) + (xy 163.181767 87.260552) + (xy 163.181896 87.25) + (xy 163.164536 87.128781) + (xy 163.113852 87.017307) + (xy 163.099199 87.000302) + (xy 163.097708 86.997375) + (xy 163.0919 86.991567) + (xy 163.088746 86.98817) + (xy 163.04175 86.933629) + (xy 163.033918 86.924539) + (xy 163.013741 86.911461) + (xy 163.010155 86.908559) + (xy 163.010081 86.908661) + (xy 163.006106 86.905773) + (xy 163.002625 86.902292) + (xy 162.991343 86.896543) + (xy 162.985735 86.893308) + (xy 162.969505 86.882788) + (xy 162.942377 86.843389) + (xy 162.941 86.830342) + (xy 162.941 86.169384) + (xy 162.959306 86.12519) + (xy 162.970797 86.116123) + (xy 162.989712 86.104509) + (xy 162.994034 86.102085) + (xy 163.002625 86.097708) + (xy 163.005427 86.094906) + (xy 163.006264 86.094346) + (xy 163.008891 86.092733) + (xy 163.025881 86.082301) + (xy 163.108058 85.991513) + (xy 163.161451 85.881311) + (xy 163.162501 85.875075) + (xy 163.176945 85.789213) + (xy 163.181767 85.760552) + (xy 163.181896 85.75) + (xy 163.164536 85.628781) + (xy 163.113852 85.517307) + (xy 163.099199 85.500302) + (xy 163.097708 85.497375) + (xy 163.0919 85.491567) + (xy 163.088746 85.48817) + (xy 163.053542 85.447314) + (xy 163.033918 85.424539) + (xy 163.013741 85.411461) + (xy 163.010155 85.408559) + (xy 163.010081 85.408661) + (xy 163.006106 85.405773) + (xy 163.002625 85.402292) + (xy 162.991343 85.396543) + (xy 162.985736 85.393309) + (xy 162.934893 85.360354) + (xy 162.93489 85.360353) + (xy 162.93116 85.357935) + (xy 162.926901 85.356661) + (xy 162.926898 85.35666) + (xy 162.904429 85.349941) + (xy 162.898839 85.348269) + (xy 162.888377 85.344079) + (xy 162.882813 85.341244) + (xy 162.871067 85.339384) + (xy 162.862951 85.337536) + (xy 162.813838 85.322848) + (xy 162.769496 85.322577) + (xy 162.760103 85.321809) + (xy 162.754857 85.320978) + (xy 162.754856 85.320978) + (xy 162.75 85.320209) + (xy 162.741373 85.321576) + (xy 162.73122 85.322344) + (xy 162.712836 85.322231) + (xy 162.695838 85.322127) + (xy 162.695836 85.322127) + (xy 162.691385 85.3221) + (xy 162.637011 85.337641) + (xy 162.629623 85.339275) + (xy 162.617187 85.341244) + (xy 162.612804 85.343477) + (xy 162.61187 85.343781) + (xy 162.602156 85.347603) + (xy 162.599821 85.34827) + (xy 162.577929 85.354526) + (xy 162.577927 85.354527) + (xy 162.573644 85.355751) + (xy 162.514119 85.393309) + (xy 162.512819 85.394129) + (xy 162.507842 85.396959) + (xy 162.501757 85.400059) + (xy 162.501756 85.40006) + (xy 162.497375 85.402292) + (xy 162.493897 85.40577) + (xy 162.492445 85.406825) + (xy 162.489058 85.40912) + (xy 162.47008 85.421095) + (xy 162.467137 85.424427) + (xy 162.467135 85.424429) + (xy 162.407156 85.492342) + (xy 162.406032 85.493538) + (xy 162.405775 85.493892) + (xy 162.405554 85.494113) + (xy 162.405405 85.494204) + (xy 162.404504 85.495163) + (xy 162.402292 85.497375) + (xy 162.401509 85.496592) + (xy 162.400362 85.497296) + (xy 162.401721 85.498496) + (xy 162.392861 85.508528) + (xy 162.389018 85.512879) + (xy 162.387127 85.516907) + (xy 162.338868 85.619695) + (xy 162.338867 85.619698) + (xy 162.336976 85.623726) + (xy 162.318136 85.744724) + (xy 162.318713 85.749137) + (xy 162.318713 85.749138) + (xy 162.327293 85.814752) + (xy 162.334014 85.866145) + (xy 162.341185 85.882443) + (xy 162.341244 85.882813) + (xy 162.342007 85.884311) + (xy 162.344031 85.88891) + (xy 162.344031 85.888911) + (xy 162.365951 85.938726) + (xy 162.383333 85.97823) + (xy 162.397272 85.994813) + (xy 162.398029 85.995713) + (xy 162.400157 85.998434) + (xy 162.402292 86.002625) + (xy 162.410081 86.010414) + (xy 162.41373 86.014392) + (xy 162.452655 86.060699) + (xy 162.462127 86.071968) + (xy 162.485399 86.087459) + (xy 162.491836 86.092733) + (xy 162.493899 86.094232) + (xy 162.497375 86.097708) + (xy 162.501753 86.099939) + (xy 162.501756 86.099941) + (xy 162.50873 86.103494) + (xy 162.514983 86.107152) + (xy 162.524557 86.113525) + (xy 162.531134 86.117903) + (xy 162.557778 86.157631) + (xy 162.559 86.169929) + (xy 162.559 86.830525) + (xy 162.540694 86.874719) + (xy 162.529855 86.88338) + (xy 162.51281 86.894135) + (xy 162.507845 86.896957) + (xy 162.50669 86.897546) + (xy 162.501757 86.900059) + (xy 162.501756 86.90006) + (xy 162.497375 86.902292) + (xy 162.493897 86.90577) + (xy 162.492445 86.906825) + (xy 162.489058 86.90912) + (xy 162.47008 86.921095) + (xy 162.467137 86.924427) + (xy 162.467135 86.924429) + (xy 162.407156 86.992342) + (xy 162.406032 86.993538) + (xy 162.405775 86.993892) + (xy 162.405554 86.994113) + (xy 162.405405 86.994204) + (xy 162.404504 86.995163) + (xy 162.402292 86.997375) + (xy 162.401509 86.996592) + (xy 162.400362 86.997296) + (xy 162.401721 86.998496) + (xy 162.389018 87.012879) + (xy 162.381146 87.029647) + (xy 162.338868 87.119695) + (xy 162.338867 87.119698) + (xy 162.336976 87.123726) + (xy 162.318136 87.244724) + (xy 158.69452 87.244724) + (xy 158.69452 83.960015) + (xy 158.712826 83.915821) + (xy 159.16934 83.459306) + (xy 159.213534 83.441) + (xy 161.536466 83.441) + (xy 161.58066 83.459306) + (xy 162.490839 84.369485) + (xy 162.495146 84.37556) + (xy 162.495718 84.375105) + (xy 162.500099 84.380613) + (xy 162.503146 84.386958) + (xy 162.508643 84.391354) + (xy 162.526234 84.405422) + (xy 162.531393 84.410039) + (xy 162.536637 84.415283) + (xy 162.5396 84.417145) + (xy 162.539607 84.417151) + (xy 162.542642 84.419058) + (xy 162.548418 84.423163) + (xy 162.564209 84.435791) + (xy 162.571201 84.441383) + (xy 162.578061 84.44296) + (xy 162.581821 84.444778) + (xy 162.585757 84.446156) + (xy 162.591716 84.449902) + (xy 162.593885 84.450147) + (xy 162.628446 84.482123) + (xy 162.633333 84.49323) + (xy 162.636198 84.496638) + (xy 162.636199 84.49664) + (xy 162.648029 84.510713) + (xy 162.650157 84.513434) + (xy 162.652292 84.517625) + (xy 162.660081 84.525414) + (xy 162.66373 84.529392) + (xy 162.698948 84.571289) + (xy 162.712127 84.586968) + (xy 162.735399 84.602459) + (xy 162.741836 84.607733) + (xy 162.743899 84.609232) + (xy 162.747375 84.612708) + (xy 162.751753 84.614939) + (xy 162.751756 84.614941) + (xy 162.75873 84.618494) + (xy 162.764977 84.622148) + (xy 162.814064 84.654823) + (xy 162.818313 84.656151) + (xy 162.818314 84.656151) + (xy 162.850296 84.666143) + (xy 162.860027 84.670109) + (xy 162.862799 84.671521) + (xy 162.862803 84.671522) + (xy 162.867187 84.673756) + (xy 162.877852 84.675445) + (xy 162.886713 84.67752) + (xy 162.926696 84.690012) + (xy 162.926699 84.690012) + (xy 162.930948 84.69134) + (xy 162.980069 84.692241) + (xy 162.988683 84.692999) + (xy 162.99514 84.694022) + (xy 162.995144 84.694022) + (xy 163 84.694791) + (xy 163.006947 84.69369) + (xy 163.017853 84.692933) + (xy 163.053383 84.693584) + (xy 163.113532 84.677185) + (xy 163.12019 84.675755) + (xy 163.122147 84.675445) + (xy 163.132813 84.673756) + (xy 163.137196 84.671522) + (xy 163.141875 84.670002) + (xy 163.141878 84.67001) + (xy 163.146727 84.668136) + (xy 163.171527 84.661375) + (xy 163.175793 84.658756) + (xy 163.239709 84.619511) + (xy 163.244037 84.617085) + (xy 163.24824 84.614944) + (xy 163.248248 84.614938) + (xy 163.252625 84.612708) + (xy 163.255427 84.609906) + (xy 163.256264 84.609346) + (xy 163.258891 84.607733) + (xy 163.275881 84.597301) + (xy 163.358058 84.506513) + (xy 163.411451 84.396311) + (xy 163.412428 84.390507) + (xy 163.428925 84.292444) + (xy 163.431767 84.275552) + (xy 163.431896 84.265) + (xy 163.418999 84.174944) + (xy 163.417973 84.16778) + (xy 163.429829 84.121437) + (xy 163.470982 84.097051) + (xy 163.508225 84.103237) + (xy 163.508739 84.103499) + (xy 163.514977 84.107148) + (xy 163.564064 84.139823) + (xy 163.568313 84.141151) + (xy 163.568314 84.141151) + (xy 163.600296 84.151143) + (xy 163.610027 84.155109) + (xy 163.612799 84.156521) + (xy 163.612803 84.156522) + (xy 163.617187 84.158756) + (xy 163.627852 84.160445) + (xy 163.636713 84.16252) + (xy 163.676696 84.175012) + (xy 163.676699 84.175012) + (xy 163.680948 84.17634) + (xy 163.730069 84.177241) + (xy 163.738683 84.177999) + (xy 163.74514 84.179022) + (xy 163.745144 84.179022) + (xy 163.75 84.179791) + (xy 163.756947 84.17869) + (xy 163.767853 84.177933) + (xy 163.803383 84.178584) + (xy 163.863532 84.162185) + (xy 163.87019 84.160755) + (xy 163.872147 84.160445) + (xy 163.882813 84.158756) + (xy 163.887196 84.156522) + (xy 163.891875 84.155002) + (xy 163.891878 84.15501) + (xy 163.896727 84.153136) + (xy 163.921527 84.146375) + (xy 163.958415 84.123726) + (xy 163.989709 84.104511) + (xy 163.994037 84.102085) + (xy 163.99824 84.099944) + (xy 163.998248 84.099938) + (xy 164.002625 84.097708) + (xy 164.005427 84.094906) + (xy 164.006264 84.094346) + (xy 164.025881 84.082301) + (xy 164.108058 83.991513) + (xy 164.161451 83.881311) + (xy 164.164873 83.860975) + (xy 164.175628 83.797044) + (xy 164.181767 83.760552) + (xy 164.181896 83.75) + (xy 164.164536 83.628781) + (xy 164.145378 83.586645) + (xy 164.14375 83.538837) + (xy 164.176404 83.503881) + (xy 164.224212 83.502253) + (xy 164.246467 83.516582) + (xy 167.084372 86.354487) + (xy 167.088677 86.360561) + (xy 167.08925 86.360105) + (xy 167.093631 86.365613) + (xy 167.096678 86.371958) + (xy 167.102175 86.376354) + (xy 167.119761 86.390418) + (xy 167.12492 86.395035) + (xy 167.130168 86.400283) + (xy 167.133139 86.40215) + (xy 167.13314 86.402151) + (xy 167.136169 86.404055) + (xy 167.141944 86.408159) + (xy 167.159236 86.421988) + (xy 167.15924 86.42199) + (xy 167.164733 86.426383) + (xy 167.17159 86.42796) + (xy 167.175352 86.429778) + (xy 167.17929 86.431157) + (xy 167.185248 86.434902) + (xy 167.192239 86.435692) + (xy 167.192244 86.435694) + (xy 167.214237 86.43818) + (xy 167.221223 86.439373) + (xy 167.228297 86.441) + (xy 167.235677 86.441) + (xy 167.242698 86.441396) + (xy 167.271838 86.44469) + (xy 167.278482 86.44237) + (xy 167.285478 86.441585) + (xy 167.285554 86.442264) + (xy 167.293003 86.441) + (xy 168.335001 86.441) + (xy 168.379195 86.459306) + (xy 168.397501 86.5035) + (xy 168.397501 86.563374) + (xy 168.397766 86.565385) + (xy 168.397766 86.56539) + (xy 168.402494 86.601308) + (xy 168.403779 86.611071) + (xy 168.4058 86.615404) + (xy 168.4058 86.615405) + (xy 168.450277 86.710787) + (xy 168.450279 86.710789) + (xy 168.452589 86.715744) + (xy 168.534256 86.797411) + (xy 168.539211 86.799721) + (xy 168.539213 86.799723) + (xy 168.570236 86.814189) + (xy 168.638929 86.846221) + (xy 168.652295 86.847981) + (xy 168.684593 86.852233) + (xy 168.684601 86.852233) + (xy 168.686625 86.8525) + (xy 168.688672 86.8525) + (xy 168.925642 86.852499) + (xy 169.163374 86.852499) + (xy 169.165385 86.852234) + (xy 169.16539 86.852234) + (xy 169.206331 86.846845) + (xy 169.206332 86.846845) + (xy 169.211071 86.846221) + (xy 169.227133 86.838731) + (xy 169.310787 86.799723) + (xy 169.310789 86.799721) + (xy 169.315744 86.797411) + (xy 169.397411 86.715744) + (xy 169.399721 86.710789) + (xy 169.399723 86.710787) + (xy 169.426739 86.652851) + (xy 169.446221 86.611071) + (xy 169.447981 86.597705) + (xy 169.452233 86.565407) + (xy 169.452233 86.565399) + (xy 169.4525 86.563375) + (xy 169.4525 86.561284) + (xy 170.048001 86.561284) + (xy 170.048266 86.565335) + (xy 170.053645 86.6062) + (xy 170.05629 86.615274) + (xy 170.100693 86.710495) + (xy 170.106873 86.719321) + (xy 170.180679 86.793127) + (xy 170.189505 86.799307) + (xy 170.284727 86.84371) + (xy 170.293801 86.846355) + (xy 170.334647 86.851733) + (xy 170.338726 86.852) + (xy 170.499069 86.852) + (xy 170.507859 86.848359) + (xy 170.5115 86.839569) + (xy 170.5115 86.839568) + (xy 170.6385 86.839568) + (xy 170.642141 86.848358) + (xy 170.650931 86.851999) + (xy 170.811284 86.851999) + (xy 170.815335 86.851734) + (xy 170.8562 86.846355) + (xy 170.865274 86.84371) + (xy 170.960495 86.799307) + (xy 170.969321 86.793127) + (xy 171.043127 86.719321) + (xy 171.049307 86.710495) + (xy 171.09371 86.615273) + (xy 171.096355 86.606199) + (xy 171.101733 86.565353) + (xy 171.102 86.561274) + (xy 171.102 86.325931) + (xy 171.098359 86.317141) + (xy 171.089569 86.3135) + (xy 170.650931 86.3135) + (xy 170.642141 86.317141) + (xy 170.6385 86.325931) + (xy 170.6385 86.839568) + (xy 170.5115 86.839568) + (xy 170.5115 86.325931) + (xy 170.507859 86.317141) + (xy 170.499069 86.3135) + (xy 170.060432 86.3135) + (xy 170.051642 86.317141) + (xy 170.048001 86.325931) + (xy 170.048001 86.561284) + (xy 169.4525 86.561284) + (xy 169.452499 86.174069) + (xy 170.048 86.174069) + (xy 170.051641 86.182859) + (xy 170.060431 86.1865) + (xy 170.499069 86.1865) + (xy 170.507859 86.182859) + (xy 170.5115 86.174069) + (xy 170.6385 86.174069) + (xy 170.642141 86.182859) + (xy 170.650931 86.1865) + (xy 171.089568 86.1865) + (xy 171.098358 86.182859) + (xy 171.101999 86.174069) + (xy 171.101999 85.938716) + (xy 171.101734 85.934665) + (xy 171.096355 85.8938) + (xy 171.09371 85.884726) + (xy 171.049307 85.789505) + (xy 171.043127 85.780679) + (xy 170.969321 85.706873) + (xy 170.960495 85.700693) + (xy 170.865273 85.65629) + (xy 170.856199 85.653645) + (xy 170.815353 85.648267) + (xy 170.811274 85.648) + (xy 170.650931 85.648) + (xy 170.642141 85.651641) + (xy 170.6385 85.660431) + (xy 170.6385 86.174069) + (xy 170.5115 86.174069) + (xy 170.5115 85.660432) + (xy 170.507859 85.651642) + (xy 170.499069 85.648001) + (xy 170.338716 85.648001) + (xy 170.334665 85.648266) + (xy 170.2938 85.653645) + (xy 170.284726 85.65629) + (xy 170.189505 85.700693) + (xy 170.180679 85.706873) + (xy 170.106873 85.780679) + (xy 170.100693 85.789505) + (xy 170.05629 85.884727) + (xy 170.053645 85.893801) + (xy 170.048267 85.934647) + (xy 170.048 85.938726) + (xy 170.048 86.174069) + (xy 169.452499 86.174069) + (xy 169.452499 85.936626) + (xy 169.452232 85.934593) + (xy 169.446845 85.893669) + (xy 169.446845 85.893668) + (xy 169.446221 85.888929) + (xy 169.437315 85.869831) + (xy 169.399723 85.789213) + (xy 169.399721 85.789211) + (xy 169.397411 85.784256) + (xy 169.315744 85.702589) + (xy 169.310789 85.700279) + (xy 169.310787 85.700277) + (xy 169.251156 85.672471) + (xy 169.211071 85.653779) + (xy 169.194831 85.651641) + (xy 169.165407 85.647767) + (xy 169.165399 85.647767) + (xy 169.163375 85.6475) + (xy 169.161328 85.6475) + (xy 168.924358 85.647501) + (xy 168.686626 85.647501) + (xy 168.684615 85.647766) + (xy 168.68461 85.647766) + (xy 168.643669 85.653155) + (xy 168.643668 85.653155) + (xy 168.638929 85.653779) + (xy 168.634595 85.6558) + (xy 168.539213 85.700277) + (xy 168.539211 85.700279) + (xy 168.534256 85.702589) + (xy 168.452589 85.784256) + (xy 168.450279 85.789211) + (xy 168.450277 85.789213) + (xy 168.438368 85.814752) + (xy 168.403779 85.888929) + (xy 168.403155 85.893669) + (xy 168.403155 85.89367) + (xy 168.397767 85.934593) + (xy 168.397767 85.934601) + (xy 168.3975 85.936625) + (xy 168.3975 85.9965) + (xy 168.379194 86.040694) + (xy 168.335 86.059) + (xy 167.355002 86.059) + (xy 167.310808 86.040694) + (xy 164.182793 82.912678) + (xy 164.164487 82.868484) + (xy 164.165353 82.858115) + (xy 164.181767 82.760552) + (xy 164.181896 82.75) + (xy 164.164536 82.628781) + (xy 164.13149 82.5561) + (xy 164.115696 82.521362) + (xy 164.115695 82.52136) + (xy 164.113852 82.517307) + (xy 164.112178 82.515365) + (xy 164.103912 82.46896) + (xy 164.13128 82.429727) + (xy 164.164954 82.41988) + (xy 164.373877 82.41988) + (xy 164.418071 82.438186) + (xy 167.084372 85.104487) + (xy 167.088677 85.110561) + (xy 167.08925 85.110105) + (xy 167.093631 85.115613) + (xy 167.096678 85.121958) + (xy 167.110998 85.13341) + (xy 167.119761 85.140418) + (xy 167.12492 85.145035) + (xy 167.130168 85.150283) + (xy 167.133139 85.15215) + (xy 167.13314 85.152151) + (xy 167.136169 85.154055) + (xy 167.141944 85.158159) + (xy 167.159236 85.171988) + (xy 167.15924 85.17199) + (xy 167.164733 85.176383) + (xy 167.17159 85.17796) + (xy 167.175352 85.179778) + (xy 167.17929 85.181157) + (xy 167.185248 85.184902) + (xy 167.192239 85.185692) + (xy 167.192244 85.185694) + (xy 167.214237 85.18818) + (xy 167.221223 85.189373) + (xy 167.228297 85.191) + (xy 167.235677 85.191) + (xy 167.242698 85.191396) + (xy 167.271838 85.19469) + (xy 167.278482 85.19237) + (xy 167.285478 85.191585) + (xy 167.285554 85.192264) + (xy 167.293003 85.191) + (xy 171.826187 85.191) + (xy 171.870381 85.209306) + (xy 171.879248 85.220473) + (xy 171.88154 85.224155) + (xy 171.883333 85.22823) + (xy 171.897272 85.244813) + (xy 171.898029 85.245713) + (xy 171.900157 85.248434) + (xy 171.902292 85.252625) + (xy 171.910081 85.260414) + (xy 171.913729 85.264391) + (xy 171.962127 85.321968) + (xy 171.985399 85.337459) + (xy 171.991836 85.342733) + (xy 171.993899 85.344232) + (xy 171.997375 85.347708) + (xy 172.001753 85.349939) + (xy 172.001756 85.349941) + (xy 172.00873 85.353494) + (xy 172.014977 85.357148) + (xy 172.064064 85.389823) + (xy 172.068313 85.391151) + (xy 172.068314 85.391151) + (xy 172.100296 85.401143) + (xy 172.110027 85.405109) + (xy 172.112799 85.406521) + (xy 172.112803 85.406522) + (xy 172.117187 85.408756) + (xy 172.127852 85.410445) + (xy 172.136713 85.41252) + (xy 172.176696 85.425012) + (xy 172.176699 85.425012) + (xy 172.180948 85.42634) + (xy 172.230069 85.427241) + (xy 172.238683 85.427999) + (xy 172.24514 85.429022) + (xy 172.245144 85.429022) + (xy 172.25 85.429791) + (xy 172.256947 85.42869) + (xy 172.267853 85.427933) + (xy 172.303383 85.428584) + (xy 172.363532 85.412185) + (xy 172.37019 85.410755) + (xy 172.372147 85.410445) + (xy 172.382813 85.408756) + (xy 172.387196 85.406522) + (xy 172.391875 85.405002) + (xy 172.391878 85.40501) + (xy 172.396727 85.403136) + (xy 172.421527 85.396375) + (xy 172.426521 85.393309) + (xy 172.489709 85.354511) + (xy 172.494037 85.352085) + (xy 172.49824 85.349944) + (xy 172.498248 85.349938) + (xy 172.502625 85.347708) + (xy 172.505427 85.344906) + (xy 172.506264 85.344346) + (xy 172.511316 85.341244) + (xy 172.525881 85.332301) + (xy 172.608058 85.241513) + (xy 172.661451 85.131311) + (xy 172.662247 85.126583) + (xy 172.678323 85.031022) + (xy 172.681767 85.010552) + (xy 172.681896 85) + (xy 172.664536 84.878781) + (xy 172.613852 84.767307) + (xy 172.599199 84.750302) + (xy 172.597708 84.747375) + (xy 172.5919 84.741567) + (xy 172.588746 84.73817) + (xy 172.542279 84.684242) + (xy 172.533918 84.674539) + (xy 172.513741 84.661461) + (xy 172.510155 84.658559) + (xy 172.510081 84.658661) + (xy 172.506106 84.655773) + (xy 172.502625 84.652292) + (xy 172.491343 84.646543) + (xy 172.485736 84.643309) + (xy 172.434893 84.610354) + (xy 172.43489 84.610353) + (xy 172.43116 84.607935) + (xy 172.426901 84.606661) + (xy 172.426898 84.60666) + (xy 172.404429 84.599941) + (xy 172.398839 84.598269) + (xy 172.388377 84.594079) + (xy 172.382813 84.591244) + (xy 172.371067 84.589384) + (xy 172.362951 84.587536) + (xy 172.313838 84.572848) + (xy 172.269496 84.572577) + (xy 172.260103 84.571809) + (xy 172.260053 84.571801) + (xy 172.25682 84.571289) + (xy 172.254857 84.570978) + (xy 172.254856 84.570978) + (xy 172.25 84.570209) + (xy 172.241373 84.571576) + (xy 172.23122 84.572344) + (xy 172.212836 84.572231) + (xy 172.195838 84.572127) + (xy 172.195836 84.572127) + (xy 172.191385 84.5721) + (xy 172.137011 84.587641) + (xy 172.129623 84.589275) + (xy 172.117187 84.591244) + (xy 172.112804 84.593477) + (xy 172.11187 84.593781) + (xy 172.102156 84.597603) + (xy 172.099821 84.59827) + (xy 172.077929 84.604526) + (xy 172.077927 84.604527) + (xy 172.073644 84.605751) + (xy 172.014119 84.643309) + (xy 172.012819 84.644129) + (xy 172.007842 84.646959) + (xy 172.001757 84.650059) + (xy 172.001756 84.65006) + (xy 171.997375 84.652292) + (xy 171.993897 84.65577) + (xy 171.992445 84.656825) + (xy 171.989058 84.65912) + (xy 171.97008 84.671095) + (xy 171.967137 84.674427) + (xy 171.967135 84.674429) + (xy 171.907156 84.742342) + (xy 171.906032 84.743538) + (xy 171.905775 84.743892) + (xy 171.905554 84.744113) + (xy 171.905405 84.744204) + (xy 171.904504 84.745163) + (xy 171.902292 84.747375) + (xy 171.901509 84.746592) + (xy 171.900362 84.747296) + (xy 171.901721 84.748496) + (xy 171.889018 84.762879) + (xy 171.887127 84.766906) + (xy 171.887126 84.766908) + (xy 171.884237 84.773062) + (xy 171.848884 84.805287) + (xy 171.827662 84.809) + (xy 167.355002 84.809) + (xy 167.310808 84.790694) + (xy 167.064831 84.544717) + (xy 197.398001 84.544717) + (xy 197.398269 84.548797) + (xy 197.404005 84.592377) + (xy 197.406649 84.601449) + (xy 197.453847 84.702667) + (xy 197.460027 84.711492) + (xy 197.538508 84.789973) + (xy 197.547333 84.796153) + (xy 197.648549 84.84335) + (xy 197.657624 84.845995) + (xy 197.701204 84.851733) + (xy 197.705282 84.852) + (xy 197.886569 84.852) + (xy 197.895359 84.848359) + (xy 197.899 84.839569) + (xy 197.899 84.839568) + (xy 198.026 84.839568) + (xy 198.029641 84.848358) + (xy 198.038431 84.851999) + (xy 198.219717 84.851999) + (xy 198.223797 84.851731) + (xy 198.267377 84.845995) + (xy 198.276449 84.843351) + (xy 198.377667 84.796153) + (xy 198.386492 84.789973) + (xy 198.464973 84.711492) + (xy 198.471153 84.702667) + (xy 198.51835 84.601451) + (xy 198.520995 84.592376) + (xy 198.526733 84.548796) + (xy 198.527 84.544718) + (xy 198.527 84.325931) + (xy 198.523359 84.317141) + (xy 198.514569 84.3135) + (xy 198.038431 84.3135) + (xy 198.029641 84.317141) + (xy 198.026 84.325931) + (xy 198.026 84.839568) + (xy 197.899 84.839568) + (xy 197.899 84.325931) + (xy 197.895359 84.317141) + (xy 197.886569 84.3135) + (xy 197.410432 84.3135) + (xy 197.401642 84.317141) + (xy 197.398001 84.325931) + (xy 197.398001 84.544717) + (xy 167.064831 84.544717) + (xy 166.551198 84.031083) + (xy 177.898001 84.031083) + (xy 177.898333 84.035614) + (xy 177.907478 84.097743) + (xy 177.910326 84.10691) + (xy 177.957556 84.203105) + (xy 177.963484 84.211387) + (xy 178.039111 84.286883) + (xy 178.047406 84.292799) + (xy 178.143687 84.339863) + (xy 178.152851 84.342695) + (xy 178.214391 84.351672) + (xy 178.218904 84.352) + (xy 178.399069 84.352) + (xy 178.407859 84.348359) + (xy 178.4115 84.339569) + (xy 178.4115 84.339568) + (xy 178.5385 84.339568) + (xy 178.542141 84.348358) + (xy 178.550931 84.351999) + (xy 178.731083 84.351999) + (xy 178.735614 84.351667) + (xy 178.797743 84.342522) + (xy 178.80691 84.339674) + (xy 178.903105 84.292444) + (xy 178.911387 84.286516) + (xy 178.986883 84.210889) + (xy 178.992799 84.202594) + (xy 179.039863 84.106313) + (xy 179.042695 84.097149) + (xy 179.051672 84.035609) + (xy 179.052 84.031096) + (xy 179.052 83.825931) + (xy 179.048359 83.817141) + (xy 179.039569 83.8135) + (xy 178.550931 83.8135) + (xy 178.542141 83.817141) + (xy 178.5385 83.825931) + (xy 178.5385 84.339568) + (xy 178.4115 84.339568) + (xy 178.4115 83.825931) + (xy 178.407859 83.817141) + (xy 178.399069 83.8135) + (xy 177.910432 83.8135) + (xy 177.901642 83.817141) + (xy 177.898001 83.825931) + (xy 177.898001 84.031083) + (xy 166.551198 84.031083) + (xy 166.194184 83.674069) + (xy 177.898 83.674069) + (xy 177.901641 83.682859) + (xy 177.910431 83.6865) + (xy 178.399069 83.6865) + (xy 178.407859 83.682859) + (xy 178.4115 83.674069) + (xy 178.5385 83.674069) + (xy 178.542141 83.682859) + (xy 178.550931 83.6865) + (xy 179.039568 83.6865) + (xy 179.048358 83.682859) + (xy 179.051999 83.674069) + (xy 179.051999 83.468917) + (xy 179.051667 83.464386) + (xy 179.042522 83.402257) + (xy 179.039674 83.39309) + (xy 178.992444 83.296895) + (xy 178.986516 83.288613) + (xy 178.910889 83.213117) + (xy 178.902594 83.207201) + (xy 178.806313 83.160137) + (xy 178.797149 83.157305) + (xy 178.735609 83.148328) + (xy 178.731096 83.148) + (xy 178.550931 83.148) + (xy 178.542141 83.151641) + (xy 178.5385 83.160431) + (xy 178.5385 83.674069) + (xy 178.4115 83.674069) + (xy 178.4115 83.160432) + (xy 178.407859 83.151642) + (xy 178.399069 83.148001) + (xy 178.218917 83.148001) + (xy 178.214386 83.148333) + (xy 178.152257 83.157478) + (xy 178.14309 83.160326) + (xy 178.046895 83.207556) + (xy 178.038613 83.213484) + (xy 177.963117 83.289111) + (xy 177.957201 83.297406) + (xy 177.910137 83.393687) + (xy 177.907305 83.402851) + (xy 177.898328 83.464391) + (xy 177.898 83.468904) + (xy 177.898 83.674069) + (xy 166.194184 83.674069) + (xy 165.982276 83.462161) + (xy 164.644508 82.124393) + (xy 164.640203 82.118319) + (xy 164.63963 82.118775) + (xy 164.635249 82.113267) + (xy 164.632202 82.106922) + (xy 164.609119 82.088462) + (xy 164.60396 82.083845) + (xy 164.598711 82.078596) + (xy 164.592708 82.074823) + (xy 164.586932 82.070718) + (xy 164.564147 82.052497) + (xy 164.557287 82.05092) + (xy 164.553527 82.049102) + (xy 164.549591 82.047724) + (xy 164.543632 82.043978) + (xy 164.536638 82.043187) + (xy 164.536637 82.043187) + (xy 164.514644 82.040701) + (xy 164.507667 82.039509) + (xy 164.500583 82.03788) + (xy 164.493209 82.03788) + (xy 164.486188 82.037484) + (xy 164.484507 82.037294) + (xy 164.457042 82.034189) + (xy 164.450397 82.03651) + (xy 164.443403 82.037294) + (xy 164.443327 82.036616) + (xy 164.435875 82.03788) + (xy 140.518008 82.03788) + (xy 140.473814 82.019574) + (xy 139.585674 81.131433) + (xy 139.581369 81.125359) + (xy 139.580796 81.125815) + (xy 139.576415 81.120307) + (xy 139.573368 81.113962) + (xy 139.557414 81.101203) + (xy 139.550285 81.095502) + (xy 139.545126 81.090885) + (xy 139.539877 81.085636) + (xy 139.533874 81.081863) + (xy 139.528098 81.077758) + (xy 139.505313 81.059537) + (xy 139.498453 81.05796) + (xy 139.494693 81.056142) + (xy 139.490757 81.054764) + (xy 139.484798 81.051018) + (xy 139.477804 81.050227) + (xy 139.477803 81.050227) + (xy 139.45581 81.047741) + (xy 139.448833 81.046549) + (xy 139.441749 81.04492) + (xy 139.434375 81.04492) + (xy 139.427354 81.044524) + (xy 139.398208 81.041229) + (xy 139.391563 81.04355) + (xy 139.384569 81.044334) + (xy 139.384493 81.043656) + (xy 139.377041 81.04492) + (xy 137.623188 81.04492) + (xy 137.615849 81.04367) + (xy 137.615766 81.044397) + (xy 137.608775 81.0436) + (xy 137.602134 81.041268) + (xy 137.595141 81.042046) + (xy 137.59514 81.042046) + (xy 137.575187 81.044267) + (xy 137.572876 81.044524) + (xy 137.572759 81.044537) + (xy 137.565846 81.04492) + (xy 137.558423 81.04492) + (xy 137.551491 81.046501) + (xy 137.544538 81.047677) + (xy 137.515527 81.050906) + (xy 137.509563 81.054639) + (xy 137.505615 81.056014) + (xy 137.501856 81.057823) + (xy 137.494997 81.059388) + (xy 137.473944 81.076165) + (xy 137.472183 81.077568) + (xy 137.466397 81.081664) + (xy 137.463241 81.08364) + (xy 137.460245 81.085516) + (xy 137.455032 81.090729) + (xy 137.449788 81.095414) + (xy 137.441304 81.102175) + (xy 137.426847 81.113695) + (xy 137.423789 81.120034) + (xy 137.419398 81.125535) + (xy 137.418864 81.125109) + (xy 137.414488 81.131273) + (xy 136.019147 82.526614) + (xy 135.974953 82.54492) + (xy 129.105003 82.54492) + (xy 129.060809 82.526614) + (xy 128.950721 82.416526) + (xy 128.932415 82.372332) + (xy 128.950721 82.328138) + (xy 128.994915 82.309832) + (xy 129.011617 82.312105) + (xy 129.18641 82.36058) + (xy 129.186418 82.360582) + (xy 129.188879 82.361264) + (xy 129.246886 82.367463) + (xy 129.380798 82.381774) + (xy 129.380802 82.381774) + (xy 129.382447 82.38195) + (xy 129.52011 82.38195) + (xy 129.696315 82.367463) + (xy 129.772726 82.34827) + (xy 129.923797 82.310324) + (xy 129.9238 82.310323) + (xy 129.926284 82.309699) + (xy 129.975039 82.2885) + (xy 129.993695 82.280388) + (xy 130.14373 82.215151) + (xy 130.342814 82.086358) + (xy 130.51819 81.926778) + (xy 130.537442 81.902401) + (xy 130.663557 81.742712) + (xy 130.66356 81.742708) + (xy 130.665147 81.740698) + (xy 130.682792 81.708735) + (xy 130.778498 81.535362) + (xy 130.779739 81.533114) + (xy 130.806326 81.458036) + (xy 130.858032 81.312023) + (xy 130.858033 81.312019) + (xy 130.858889 81.309602) + (xy 130.85934 81.307072) + (xy 130.90002 81.0787) + (xy 130.900021 81.078693) + (xy 130.900471 81.076165) + (xy 130.901636 80.980824) + (xy 131.246201 80.980824) + (xy 131.27581 81.153141) + (xy 131.344267 81.314024) + (xy 131.447898 81.454843) + (xy 131.450664 81.457193) + (xy 131.450666 81.457195) + (xy 131.455949 81.461683) + (xy 131.581146 81.568045) + (xy 131.736862 81.647558) + (xy 131.906693 81.689115) + (xy 131.914268 81.689585) + (xy 131.916765 81.68974) + (xy 131.916769 81.68974) + (xy 131.917734 81.6898) + (xy 132.043779 81.6898) + (xy 132.045569 81.689591) + (xy 132.045574 81.689591) + (xy 132.095216 81.683803) + (xy 132.173665 81.674657) + (xy 132.17708 81.673418) + (xy 132.177082 81.673417) + (xy 132.245944 81.648421) + (xy 132.338015 81.615001) + (xy 132.357583 81.602172) + (xy 132.407118 81.569695) + (xy 132.484233 81.519136) + (xy 132.604475 81.392205) + (xy 132.606297 81.389067) + (xy 132.6063 81.389064) + (xy 132.690473 81.244149) + (xy 132.690474 81.244148) + (xy 132.692292 81.241017) + (xy 132.717895 81.156482) + (xy 132.74192 81.077159) + (xy 132.74192 81.077158) + (xy 132.742973 81.073682) + (xy 132.745005 81.04093) + (xy 133.096633 81.04093) + (xy 133.097021 81.043465) + (xy 133.097021 81.043466) + (xy 133.098177 81.051018) + (xy 133.132498 81.275314) + (xy 133.133296 81.277754) + (xy 133.133296 81.277756) + (xy 133.194741 81.465744) + (xy 133.206164 81.500693) + (xy 133.207349 81.50297) + (xy 133.207351 81.502974) + (xy 133.314463 81.708735) + (xy 133.314467 81.708741) + (xy 133.31565 81.711014) + (xy 133.458017 81.90063) + (xy 133.629441 82.064446) + (xy 133.631561 82.065892) + (xy 133.631562 82.065893) + (xy 133.771717 82.1615) + (xy 133.825319 82.198065) + (xy 133.827651 82.199148) + (xy 133.827652 82.199148) + (xy 134.027989 82.292141) + (xy 134.040391 82.297898) + (xy 134.042858 82.298582) + (xy 134.042863 82.298584) + (xy 134.19669 82.341244) + (xy 134.268879 82.361264) + (xy 134.326886 82.367463) + (xy 134.460798 82.381774) + (xy 134.460802 82.381774) + (xy 134.462447 82.38195) + (xy 134.60011 82.38195) + (xy 134.776315 82.367463) + (xy 134.852726 82.34827) + (xy 135.003797 82.310324) + (xy 135.0038 82.310323) + (xy 135.006284 82.309699) + (xy 135.055039 82.2885) + (xy 135.073695 82.280388) + (xy 135.22373 82.215151) + (xy 135.422814 82.086358) + (xy 135.59819 81.926778) + (xy 135.617442 81.902401) + (xy 135.743557 81.742712) + (xy 135.74356 81.742708) + (xy 135.745147 81.740698) + (xy 135.762792 81.708735) + (xy 135.858498 81.535362) + (xy 135.859739 81.533114) + (xy 135.886326 81.458036) + (xy 135.938032 81.312023) + (xy 135.938033 81.312019) + (xy 135.938889 81.309602) + (xy 135.93934 81.307072) + (xy 135.98002 81.0787) + (xy 135.980021 81.078693) + (xy 135.980471 81.076165) + (xy 135.981466 80.994724) + (xy 151.818136 80.994724) + (xy 151.818713 80.999137) + (xy 151.818713 80.999138) + (xy 151.831468 81.096678) + (xy 151.834014 81.116145) + (xy 151.835809 81.120224) + (xy 151.840741 81.131433) + (xy 151.841185 81.132443) + (xy 151.841244 81.132813) + (xy 151.842007 81.134311) + (xy 151.844031 81.13891) + (xy 151.844031 81.138911) + (xy 151.880251 81.221225) + (xy 151.883333 81.22823) + (xy 151.89549 81.242692) + (xy 151.898029 81.245713) + (xy 151.900157 81.248434) + (xy 151.902292 81.252625) + (xy 151.910081 81.260414) + (xy 151.91373 81.264392) + (xy 151.931454 81.285477) + (xy 151.962127 81.321968) + (xy 151.985399 81.337459) + (xy 151.991836 81.342733) + (xy 151.993899 81.344232) + (xy 151.997375 81.347708) + (xy 152.001753 81.349939) + (xy 152.001756 81.349941) + (xy 152.00873 81.353494) + (xy 152.014977 81.357148) + (xy 152.064064 81.389823) + (xy 152.068313 81.391151) + (xy 152.068314 81.391151) + (xy 152.100296 81.401143) + (xy 152.110027 81.405109) + (xy 152.112799 81.406521) + (xy 152.112803 81.406522) + (xy 152.117187 81.408756) + (xy 152.127852 81.410445) + (xy 152.136713 81.41252) + (xy 152.176696 81.425012) + (xy 152.176699 81.425012) + (xy 152.180948 81.42634) + (xy 152.230069 81.427241) + (xy 152.238683 81.427999) + (xy 152.24514 81.429022) + (xy 152.245144 81.429022) + (xy 152.25 81.429791) + (xy 152.256947 81.42869) + (xy 152.267853 81.427933) + (xy 152.303383 81.428584) + (xy 152.363532 81.412185) + (xy 152.37019 81.410755) + (xy 152.372147 81.410445) + (xy 152.382813 81.408756) + (xy 152.387196 81.406522) + (xy 152.391875 81.405002) + (xy 152.391878 81.40501) + (xy 152.396727 81.403136) + (xy 152.421527 81.396375) + (xy 152.428319 81.392205) + (xy 152.489709 81.354511) + (xy 152.494037 81.352085) + (xy 152.49824 81.349944) + (xy 152.498248 81.349938) + (xy 152.502625 81.347708) + (xy 152.505427 81.344906) + (xy 152.506264 81.344346) + (xy 152.508891 81.342733) + (xy 152.525881 81.332301) + (xy 152.608058 81.241513) + (xy 152.615454 81.226248) + (xy 152.651198 81.194458) + (xy 152.6717 81.191) + (xy 152.835001 81.191) + (xy 152.879195 81.209306) + (xy 152.897501 81.2535) + (xy 152.897501 81.28341) + (xy 152.907699 81.352695) + (xy 152.959419 81.458036) + (xy 152.963071 81.461682) + (xy 152.963072 81.461683) + (xy 153.038817 81.537296) + (xy 153.038819 81.537298) + (xy 153.042472 81.540944) + (xy 153.115762 81.576769) + (xy 153.143158 81.590161) + (xy 153.147902 81.59248) + (xy 153.152705 81.593181) + (xy 153.152706 81.593181) + (xy 153.174659 81.596383) + (xy 153.216589 81.6025) + (xy 153.474317 81.6025) + (xy 153.73341 81.602499) + (xy 153.802695 81.592301) + (xy 153.80826 81.589569) + (xy 153.826223 81.580749) + (xy 153.908036 81.540581) + (xy 153.932074 81.516501) + (xy 153.987296 81.461183) + (xy 153.987298 81.461181) + (xy 153.990944 81.457528) + (xy 154.040008 81.357155) + (xy 154.040349 81.356458) + (xy 154.040349 81.356457) + (xy 154.04248 81.352098) + (xy 154.043218 81.347043) + (xy 154.0511 81.293005) + (xy 154.0525 81.283411) + (xy 154.0525 81.281083) + (xy 154.448001 81.281083) + (xy 154.448333 81.285614) + (xy 154.457478 81.347743) + (xy 154.460326 81.35691) + (xy 154.507556 81.453105) + (xy 154.513484 81.461387) + (xy 154.589111 81.536883) + (xy 154.597406 81.542799) + (xy 154.693687 81.589863) + (xy 154.702851 81.592695) + (xy 154.764391 81.601672) + (xy 154.768904 81.602) + (xy 154.949069 81.602) + (xy 154.957859 81.598359) + (xy 154.9615 81.589569) + (xy 154.9615 81.589568) + (xy 155.0885 81.589568) + (xy 155.092141 81.598358) + (xy 155.100931 81.601999) + (xy 155.281083 81.601999) + (xy 155.285614 81.601667) + (xy 155.347743 81.592522) + (xy 155.35691 81.589674) + (xy 155.453105 81.542444) + (xy 155.461387 81.536516) + (xy 155.536883 81.460889) + (xy 155.542799 81.452594) + (xy 155.589863 81.356313) + (xy 155.592695 81.347149) + (xy 155.601672 81.285609) + (xy 155.602 81.281096) + (xy 155.602 81.075931) + (xy 155.598359 81.067141) + (xy 155.589569 81.0635) + (xy 155.100931 81.0635) + (xy 155.092141 81.067141) + (xy 155.0885 81.075931) + (xy 155.0885 81.589568) + (xy 154.9615 81.589568) + (xy 154.9615 81.075931) + (xy 154.957859 81.067141) + (xy 154.949069 81.0635) + (xy 154.460432 81.0635) + (xy 154.451642 81.067141) + (xy 154.448001 81.075931) + (xy 154.448001 81.281083) + (xy 154.0525 81.281083) + (xy 154.0525 81) + (xy 154.0525 80.924069) + (xy 154.448 80.924069) + (xy 154.451641 80.932859) + (xy 154.460431 80.9365) + (xy 154.949069 80.9365) + (xy 154.957859 80.932859) + (xy 154.9615 80.924069) + (xy 155.0885 80.924069) + (xy 155.092141 80.932859) + (xy 155.100931 80.9365) + (xy 155.589568 80.9365) + (xy 155.598358 80.932859) + (xy 155.601999 80.924069) + (xy 155.601999 80.718917) + (xy 155.601667 80.714386) + (xy 155.592522 80.652257) + (xy 155.589674 80.64309) + (xy 155.542444 80.546895) + (xy 155.536516 80.538613) + (xy 155.460889 80.463117) + (xy 155.452594 80.457201) + (xy 155.356313 80.410137) + (xy 155.347149 80.407305) + (xy 155.285609 80.398328) + (xy 155.281096 80.398) + (xy 155.100931 80.398) + (xy 155.092141 80.401641) + (xy 155.0885 80.410431) + (xy 155.0885 80.924069) + (xy 154.9615 80.924069) + (xy 154.9615 80.410432) + (xy 154.957859 80.401642) + (xy 154.949069 80.398001) + (xy 154.768917 80.398001) + (xy 154.764386 80.398333) + (xy 154.702257 80.407478) + (xy 154.69309 80.410326) + (xy 154.596895 80.457556) + (xy 154.588613 80.463484) + (xy 154.513117 80.539111) + (xy 154.507201 80.547406) + (xy 154.460137 80.643687) + (xy 154.457305 80.652851) + (xy 154.448328 80.714391) + (xy 154.448 80.718904) + (xy 154.448 80.924069) + (xy 154.0525 80.924069) + (xy 154.052499 80.718504) + (xy 154.070805 80.67431) + (xy 154.539329 80.205786) + (xy 154.583523 80.18748) + (xy 156.576028 80.18748) + (xy 156.620222 80.205786) + (xy 156.638528 80.24998) + (xy 156.632603 80.276541) + (xy 156.588869 80.369692) + (xy 156.588867 80.369698) + (xy 156.586976 80.373726) + (xy 156.568136 80.494724) + (xy 156.568713 80.499137) + (xy 156.568713 80.499138) + (xy 156.582655 80.605751) + (xy 156.584014 80.616145) + (xy 156.591185 80.632443) + (xy 156.591244 80.632813) + (xy 156.592007 80.634311) + (xy 156.594029 80.638907) + (xy 156.59403 80.638909) + (xy 156.63126 80.723518) + (xy 156.633333 80.72823) + (xy 156.647273 80.744814) + (xy 156.648029 80.745713) + (xy 156.650157 80.748434) + (xy 156.652292 80.752625) + (xy 156.660081 80.760414) + (xy 156.66373 80.764392) + (xy 156.702022 80.809946) + (xy 156.712127 80.821968) + (xy 156.735399 80.837459) + (xy 156.741836 80.842733) + (xy 156.743899 80.844232) + (xy 156.747375 80.847708) + (xy 156.751753 80.849939) + (xy 156.751756 80.849941) + (xy 156.75873 80.853494) + (xy 156.764977 80.857148) + (xy 156.814064 80.889823) + (xy 156.818313 80.891151) + (xy 156.818314 80.891151) + (xy 156.850296 80.901143) + (xy 156.860027 80.905109) + (xy 156.862799 80.906521) + (xy 156.862803 80.906522) + (xy 156.867187 80.908756) + (xy 156.877852 80.910445) + (xy 156.886713 80.91252) + (xy 156.926696 80.925012) + (xy 156.926699 80.925012) + (xy 156.930948 80.92634) + (xy 156.980069 80.927241) + (xy 156.988683 80.927999) + (xy 156.99514 80.929022) + (xy 156.995144 80.929022) + (xy 157 80.929791) + (xy 157.006947 80.92869) + (xy 157.017853 80.927933) + (xy 157.053383 80.928584) + (xy 157.113532 80.912185) + (xy 157.12019 80.910755) + (xy 157.122147 80.910445) + (xy 157.132813 80.908756) + (xy 157.137196 80.906522) + (xy 157.141875 80.905002) + (xy 157.141878 80.90501) + (xy 157.146727 80.903136) + (xy 157.171527 80.896375) + (xy 157.182832 80.889434) + (xy 157.239709 80.854511) + (xy 157.244037 80.852085) + (xy 157.24824 80.849944) + (xy 157.248248 80.849938) + (xy 157.252625 80.847708) + (xy 157.255427 80.844906) + (xy 157.256264 80.844346) + (xy 157.258891 80.842733) + (xy 157.275881 80.832301) + (xy 157.358058 80.741513) + (xy 157.365454 80.726248) + (xy 157.401198 80.694458) + (xy 157.4217 80.691) + (xy 158.074376 80.691) + (xy 158.11857 80.709306) + (xy 158.136876 80.7535) + (xy 158.130951 80.780061) + (xy 158.11692 80.809946) + (xy 158.088868 80.869695) + (xy 158.088867 80.869698) + (xy 158.086976 80.873726) + (xy 158.068136 80.994724) + (xy 158.068713 80.999137) + (xy 158.068713 80.999138) + (xy 158.081468 81.096678) + (xy 158.084014 81.116145) + (xy 158.085809 81.120224) + (xy 158.090741 81.131433) + (xy 158.091185 81.132443) + (xy 158.091244 81.132813) + (xy 158.092007 81.134311) + (xy 158.094031 81.13891) + (xy 158.094031 81.138911) + (xy 158.130251 81.221225) + (xy 158.133333 81.22823) + (xy 158.14549 81.242692) + (xy 158.148029 81.245713) + (xy 158.150157 81.248434) + (xy 158.152292 81.252625) + (xy 158.160081 81.260414) + (xy 158.16373 81.264392) + (xy 158.181454 81.285477) + (xy 158.212127 81.321968) + (xy 158.235399 81.337459) + (xy 158.241836 81.342733) + (xy 158.243899 81.344232) + (xy 158.247375 81.347708) + (xy 158.251753 81.349939) + (xy 158.251756 81.349941) + (xy 158.25873 81.353494) + (xy 158.264977 81.357148) + (xy 158.314064 81.389823) + (xy 158.318313 81.391151) + (xy 158.318314 81.391151) + (xy 158.350296 81.401143) + (xy 158.360027 81.405109) + (xy 158.362799 81.406521) + (xy 158.362803 81.406522) + (xy 158.367187 81.408756) + (xy 158.377852 81.410445) + (xy 158.386713 81.41252) + (xy 158.426696 81.425012) + (xy 158.426699 81.425012) + (xy 158.430948 81.42634) + (xy 158.480069 81.427241) + (xy 158.488683 81.427999) + (xy 158.49514 81.429022) + (xy 158.495144 81.429022) + (xy 158.5 81.429791) + (xy 158.506947 81.42869) + (xy 158.517853 81.427933) + (xy 158.553383 81.428584) + (xy 158.613532 81.412185) + (xy 158.62019 81.410755) + (xy 158.622147 81.410445) + (xy 158.632813 81.408756) + (xy 158.637196 81.406522) + (xy 158.641875 81.405002) + (xy 158.641878 81.40501) + (xy 158.646727 81.403136) + (xy 158.671527 81.396375) + (xy 158.678319 81.392205) + (xy 158.739709 81.354511) + (xy 158.744037 81.352085) + (xy 158.74824 81.349944) + (xy 158.748248 81.349938) + (xy 158.752625 81.347708) + (xy 158.755427 81.344906) + (xy 158.756264 81.344346) + (xy 158.758891 81.342733) + (xy 158.775881 81.332301) + (xy 158.858058 81.241513) + (xy 158.865454 81.226248) + (xy 158.901198 81.194458) + (xy 158.9217 81.191) + (xy 160.326187 81.191) + (xy 160.370381 81.209306) + (xy 160.379248 81.220473) + (xy 160.38154 81.224155) + (xy 160.383333 81.22823) + (xy 160.39549 81.242692) + (xy 160.398029 81.245713) + (xy 160.400157 81.248434) + (xy 160.402292 81.252625) + (xy 160.410081 81.260414) + (xy 160.41373 81.264392) + (xy 160.431454 81.285477) + (xy 160.462127 81.321968) + (xy 160.485399 81.337459) + (xy 160.491836 81.342733) + (xy 160.493899 81.344232) + (xy 160.497375 81.347708) + (xy 160.501753 81.349939) + (xy 160.501756 81.349941) + (xy 160.50873 81.353494) + (xy 160.514977 81.357148) + (xy 160.564064 81.389823) + (xy 160.568313 81.391151) + (xy 160.568314 81.391151) + (xy 160.600296 81.401143) + (xy 160.610027 81.405109) + (xy 160.612799 81.406521) + (xy 160.612803 81.406522) + (xy 160.617187 81.408756) + (xy 160.627852 81.410445) + (xy 160.636713 81.41252) + (xy 160.676696 81.425012) + (xy 160.676699 81.425012) + (xy 160.680948 81.42634) + (xy 160.730069 81.427241) + (xy 160.738683 81.427999) + (xy 160.74514 81.429022) + (xy 160.745144 81.429022) + (xy 160.75 81.429791) + (xy 160.756947 81.42869) + (xy 160.767853 81.427933) + (xy 160.803383 81.428584) + (xy 160.863532 81.412185) + (xy 160.87019 81.410755) + (xy 160.872147 81.410445) + (xy 160.882813 81.408756) + (xy 160.887196 81.406522) + (xy 160.891875 81.405002) + (xy 160.891878 81.40501) + (xy 160.896727 81.403136) + (xy 160.921527 81.396375) + (xy 160.928319 81.392205) + (xy 160.989709 81.354511) + (xy 160.994037 81.352085) + (xy 160.99824 81.349944) + (xy 160.998248 81.349938) + (xy 161.002625 81.347708) + (xy 161.005427 81.344906) + (xy 161.006264 81.344346) + (xy 161.008891 81.342733) + (xy 161.025881 81.332301) + (xy 161.108058 81.241513) + (xy 161.161451 81.131311) + (xy 161.162453 81.125359) + (xy 161.175985 81.04492) + (xy 161.181767 81.010552) + (xy 161.181896 81) + (xy 161.166061 80.889432) + (xy 161.177917 80.843091) + (xy 161.183736 80.836379) + (xy 161.307289 80.712826) + (xy 161.351483 80.69452) + (xy 165.648517 80.69452) + (xy 165.692711 80.712826) + (xy 167.834372 82.854487) + (xy 167.838677 82.860561) + (xy 167.83925 82.860105) + (xy 167.843631 82.865613) + (xy 167.846678 82.871958) + (xy 167.862125 82.884311) + (xy 167.869761 82.890418) + (xy 167.87492 82.895035) + (xy 167.880168 82.900283) + (xy 167.883139 82.90215) + (xy 167.88314 82.902151) + (xy 167.886169 82.904055) + (xy 167.891944 82.908159) + (xy 167.909236 82.921988) + (xy 167.90924 82.92199) + (xy 167.914733 82.926383) + (xy 167.92159 82.92796) + (xy 167.925352 82.929778) + (xy 167.92929 82.931157) + (xy 167.935248 82.934902) + (xy 167.942239 82.935692) + (xy 167.942244 82.935694) + (xy 167.964237 82.93818) + (xy 167.971223 82.939373) + (xy 167.978297 82.941) + (xy 167.985677 82.941) + (xy 167.992698 82.941396) + (xy 168.021838 82.94469) + (xy 168.028482 82.94237) + (xy 168.035478 82.941585) + (xy 168.035554 82.942264) + (xy 168.043003 82.941) + (xy 168.335001 82.941) + (xy 168.379195 82.959306) + (xy 168.397501 83.0035) + (xy 168.397501 83.063374) + (xy 168.397766 83.065385) + (xy 168.397766 83.06539) + (xy 168.402998 83.105139) + (xy 168.403779 83.111071) + (xy 168.4058 83.115404) + (xy 168.4058 83.115405) + (xy 168.450277 83.210787) + (xy 168.450279 83.210789) + (xy 168.452589 83.215744) + (xy 168.534256 83.297411) + (xy 168.539211 83.299721) + (xy 168.539213 83.299723) + (xy 168.585042 83.321093) + (xy 168.638929 83.346221) + (xy 168.649427 83.347603) + (xy 168.684593 83.352233) + (xy 168.684601 83.352233) + (xy 168.686625 83.3525) + (xy 168.688672 83.3525) + (xy 168.925642 83.352499) + (xy 169.163374 83.352499) + (xy 169.165385 83.352234) + (xy 169.16539 83.352234) + (xy 169.206331 83.346845) + (xy 169.206332 83.346845) + (xy 169.211071 83.346221) + (xy 169.258458 83.324124) + (xy 169.310787 83.299723) + (xy 169.310789 83.299721) + (xy 169.315744 83.297411) + (xy 169.397411 83.215744) + (xy 169.399721 83.210789) + (xy 169.399723 83.210787) + (xy 169.423197 83.160445) + (xy 169.446221 83.111071) + (xy 169.449727 83.084438) + (xy 169.452233 83.065407) + (xy 169.452233 83.065399) + (xy 169.4525 83.063375) + (xy 169.4525 82.75) + (xy 169.452499 82.438662) + (xy 169.452499 82.436626) + (xy 169.452232 82.434593) + (xy 169.446845 82.393669) + (xy 169.446845 82.393668) + (xy 169.446221 82.388929) + (xy 169.430179 82.354526) + (xy 169.399723 82.289213) + (xy 169.399721 82.289211) + (xy 169.397411 82.284256) + (xy 169.315744 82.202589) + (xy 169.310789 82.200279) + (xy 169.310787 82.200277) + (xy 169.245938 82.170038) + (xy 169.211071 82.153779) + (xy 169.197705 82.152019) + (xy 169.165407 82.147767) + (xy 169.165399 82.147767) + (xy 169.163375 82.1475) + (xy 169.161328 82.1475) + (xy 168.924358 82.147501) + (xy 168.686626 82.147501) + (xy 168.684615 82.147766) + (xy 168.68461 82.147766) + (xy 168.643669 82.153155) + (xy 168.643668 82.153155) + (xy 168.638929 82.153779) + (xy 168.634595 82.1558) + (xy 168.539213 82.200277) + (xy 168.539211 82.200279) + (xy 168.534256 82.202589) + (xy 168.452589 82.284256) + (xy 168.450279 82.289211) + (xy 168.450277 82.289213) + (xy 168.434606 82.322821) + (xy 168.403779 82.388929) + (xy 168.40297 82.395073) + (xy 168.397767 82.434593) + (xy 168.397767 82.434601) + (xy 168.3975 82.436625) + (xy 168.3975 82.4965) + (xy 168.379194 82.540694) + (xy 168.335 82.559) + (xy 168.105002 82.559) + (xy 168.060808 82.540694) + (xy 166.067809 80.547694) + (xy 166.049503 80.5035) + (xy 166.067809 80.459306) + (xy 166.112003 80.441) + (xy 167.144997 80.441) + (xy 167.189191 80.459306) + (xy 167.834371 81.104485) + (xy 167.838678 81.11056) + (xy 167.83925 81.110105) + (xy 167.843631 81.115613) + (xy 167.846678 81.121958) + (xy 167.860664 81.133143) + (xy 167.869766 81.140422) + (xy 167.874925 81.145039) + (xy 167.880169 81.150283) + (xy 167.883132 81.152145) + (xy 167.883139 81.152151) + (xy 167.886174 81.154058) + (xy 167.89195 81.158163) + (xy 167.914733 81.176383) + (xy 167.921591 81.17796) + (xy 167.925356 81.17978) + (xy 167.929292 81.181158) + (xy 167.935248 81.184902) + (xy 167.942239 81.185692) + (xy 167.942244 81.185694) + (xy 167.964237 81.18818) + (xy 167.971223 81.189373) + (xy 167.978297 81.191) + (xy 167.985677 81.191) + (xy 167.992698 81.191396) + (xy 168.021838 81.19469) + (xy 168.028484 81.192369) + (xy 168.035478 81.191585) + (xy 168.035554 81.192264) + (xy 168.043004 81.191) + (xy 168.335001 81.191) + (xy 168.379195 81.209306) + (xy 168.397501 81.2535) + (xy 168.397501 81.313374) + (xy 168.397766 81.315385) + (xy 168.397766 81.31539) + (xy 168.40298 81.355003) + (xy 168.403779 81.361071) + (xy 168.4058 81.365404) + (xy 168.4058 81.365405) + (xy 168.450277 81.460787) + (xy 168.450279 81.460789) + (xy 168.452589 81.465744) + (xy 168.534256 81.547411) + (xy 168.539211 81.549721) + (xy 168.539213 81.549723) + (xy 168.582044 81.569695) + (xy 168.638929 81.596221) + (xy 168.652295 81.597981) + (xy 168.684593 81.602233) + (xy 168.684601 81.602233) + (xy 168.686625 81.6025) + (xy 168.688672 81.6025) + (xy 168.925642 81.602499) + (xy 169.163374 81.602499) + (xy 169.165385 81.602234) + (xy 169.16539 81.602234) + (xy 169.206331 81.596845) + (xy 169.206332 81.596845) + (xy 169.211071 81.596221) + (xy 169.219477 81.592301) + (xy 169.310787 81.549723) + (xy 169.310789 81.549721) + (xy 169.315744 81.547411) + (xy 169.397411 81.465744) + (xy 169.399721 81.460789) + (xy 169.399723 81.460787) + (xy 169.425732 81.40501) + (xy 169.446221 81.361071) + (xy 169.449702 81.334631) + (xy 169.452233 81.315407) + (xy 169.452233 81.315399) + (xy 169.4525 81.313375) + (xy 169.4525 81) + (xy 169.452499 80.688662) + (xy 169.452499 80.686626) + (xy 169.452232 80.684593) + (xy 169.446845 80.643669) + (xy 169.446845 80.643668) + (xy 169.446221 80.638929) + (xy 169.430179 80.604526) + (xy 169.399723 80.539213) + (xy 169.399721 80.539211) + (xy 169.397411 80.534256) + (xy 169.315744 80.452589) + (xy 169.310789 80.450279) + (xy 169.310787 80.450277) + (xy 169.225338 80.410432) + (xy 169.211071 80.403779) + (xy 169.194831 80.401641) + (xy 169.165407 80.397767) + (xy 169.165399 80.397767) + (xy 169.163375 80.3975) + (xy 169.161328 80.3975) + (xy 168.924358 80.397501) + (xy 168.686626 80.397501) + (xy 168.684615 80.397766) + (xy 168.68461 80.397766) + (xy 168.643669 80.403155) + (xy 168.643668 80.403155) + (xy 168.638929 80.403779) + (xy 168.634595 80.4058) + (xy 168.539213 80.450277) + (xy 168.539211 80.450279) + (xy 168.534256 80.452589) + (xy 168.452589 80.534256) + (xy 168.450279 80.539211) + (xy 168.450277 80.539213) + (xy 168.434606 80.572821) + (xy 168.403779 80.638929) + (xy 168.40297 80.645073) + (xy 168.397767 80.684593) + (xy 168.397767 80.684601) + (xy 168.3975 80.686625) + (xy 168.3975 80.7465) + (xy 168.379194 80.790694) + (xy 168.335 80.809) + (xy 168.105003 80.809) + (xy 168.060809 80.790694) + (xy 167.564289 80.294174) + (xy 167.545983 80.24998) + (xy 167.564289 80.205786) + (xy 167.608483 80.18748) + (xy 169.891477 80.18748) + (xy 169.935671 80.205786) + (xy 170.139171 80.409286) + (xy 170.157477 80.45348) + (xy 170.139171 80.497674) + (xy 170.102589 80.534256) + (xy 170.100279 80.539211) + (xy 170.100277 80.539213) + (xy 170.084606 80.572821) + (xy 170.053779 80.638929) + (xy 170.05297 80.645073) + (xy 170.047767 80.684593) + (xy 170.047767 80.684601) + (xy 170.0475 80.686625) + (xy 170.0475 80.688672) + (xy 170.047501 81.000845) + (xy 170.047501 81.313374) + (xy 170.047766 81.315385) + (xy 170.047766 81.31539) + (xy 170.05298 81.355003) + (xy 170.053779 81.361071) + (xy 170.0558 81.365404) + (xy 170.0558 81.365405) + (xy 170.100277 81.460787) + (xy 170.100279 81.460789) + (xy 170.102589 81.465744) + (xy 170.184256 81.547411) + (xy 170.189211 81.549721) + (xy 170.189213 81.549723) + (xy 170.232044 81.569695) + (xy 170.288929 81.596221) + (xy 170.309113 81.598878) + (xy 170.329658 81.601583) + (xy 170.371085 81.6255) + (xy 170.384 81.663548) + (xy 170.384 82.086452) + (xy 170.365694 82.130646) + (xy 170.329657 82.148417) + (xy 170.293675 82.153153) + (xy 170.293667 82.153155) + (xy 170.288929 82.153779) + (xy 170.284595 82.1558) + (xy 170.189213 82.200277) + (xy 170.189211 82.200279) + (xy 170.184256 82.202589) + (xy 170.102589 82.284256) + (xy 170.100279 82.289211) + (xy 170.100277 82.289213) + (xy 170.084606 82.322821) + (xy 170.053779 82.388929) + (xy 170.05297 82.395073) + (xy 170.047767 82.434593) + (xy 170.047767 82.434601) + (xy 170.0475 82.436625) + (xy 170.0475 82.438672) + (xy 170.047501 82.750845) + (xy 170.047501 83.063374) + (xy 170.047766 83.065385) + (xy 170.047766 83.06539) + (xy 170.052998 83.105139) + (xy 170.053779 83.111071) + (xy 170.0558 83.115404) + (xy 170.0558 83.115405) + (xy 170.100277 83.210787) + (xy 170.100279 83.210789) + (xy 170.102589 83.215744) + (xy 170.184256 83.297411) + (xy 170.189211 83.299721) + (xy 170.189213 83.299723) + (xy 170.235042 83.321093) + (xy 170.288929 83.346221) + (xy 170.299427 83.347603) + (xy 170.334593 83.352233) + (xy 170.334601 83.352233) + (xy 170.336625 83.3525) + (xy 170.338672 83.3525) + (xy 170.575642 83.352499) + (xy 170.813374 83.352499) + (xy 170.815385 83.352234) + (xy 170.81539 83.352234) + (xy 170.856331 83.346845) + (xy 170.856332 83.346845) + (xy 170.861071 83.346221) + (xy 170.908458 83.324124) + (xy 170.960787 83.299723) + (xy 170.960789 83.299721) + (xy 170.965744 83.297411) + (xy 171.047411 83.215744) + (xy 171.049721 83.210789) + (xy 171.049723 83.210787) + (xy 171.073197 83.160445) + (xy 171.096221 83.111071) + (xy 171.099727 83.084438) + (xy 171.102233 83.065407) + (xy 171.102233 83.065399) + (xy 171.1025 83.063375) + (xy 171.1025 83.0035) + (xy 171.120806 82.959306) + (xy 171.165 82.941) + (xy 178.919997 82.941) + (xy 178.964191 82.959306) + (xy 179.429194 83.424309) + (xy 179.4475 83.468503) + (xy 179.447501 84.03341) + (xy 179.457699 84.102695) + (xy 179.509419 84.208036) + (xy 179.513071 84.211682) + (xy 179.513072 84.211683) + (xy 179.588817 84.287296) + (xy 179.588819 84.287298) + (xy 179.592472 84.290944) + (xy 179.646065 84.317141) + (xy 179.693158 84.340161) + (xy 179.697902 84.34248) + (xy 179.702705 84.343181) + (xy 179.702706 84.343181) + (xy 179.724659 84.346383) + (xy 179.766589 84.3525) + (xy 180.024317 84.3525) + (xy 180.28341 84.352499) + (xy 180.352695 84.342301) + (xy 180.35826 84.339569) + (xy 180.386037 84.325931) + (xy 180.458036 84.290581) + (xy 180.481162 84.267415) + (xy 180.537296 84.211183) + (xy 180.537298 84.211181) + (xy 180.540944 84.207528) + (xy 180.590008 84.107155) + (xy 180.590349 84.106458) + (xy 180.590349 84.106457) + (xy 180.59248 84.102098) + (xy 180.593218 84.097043) + (xy 180.599609 84.05323) + (xy 180.6025 84.033411) + (xy 180.6025 84.0035) + (xy 180.620806 83.959306) + (xy 180.665 83.941) + (xy 181.293168 83.941) + (xy 181.337362 83.959306) + (xy 181.350374 83.978327) + (xy 181.357771 83.995136) + (xy 181.379561 84.044657) + (xy 181.383333 84.05323) + (xy 181.397272 84.069813) + (xy 181.398029 84.070713) + (xy 181.400157 84.073434) + (xy 181.402292 84.077625) + (xy 181.410081 84.085414) + (xy 181.413729 84.089391) + (xy 181.462127 84.146968) + (xy 181.485399 84.162459) + (xy 181.491836 84.167733) + (xy 181.493899 84.169232) + (xy 181.497375 84.172708) + (xy 181.501753 84.174939) + (xy 181.501756 84.174941) + (xy 181.50873 84.178494) + (xy 181.514977 84.182148) + (xy 181.564064 84.214823) + (xy 181.568313 84.216151) + (xy 181.568314 84.216151) + (xy 181.600296 84.226143) + (xy 181.610027 84.230109) + (xy 181.612799 84.231521) + (xy 181.612803 84.231522) + (xy 181.617187 84.233756) + (xy 181.627852 84.235445) + (xy 181.636713 84.23752) + (xy 181.676696 84.250012) + (xy 181.676699 84.250012) + (xy 181.680948 84.25134) + (xy 181.730069 84.252241) + (xy 181.738683 84.252999) + (xy 181.74514 84.254022) + (xy 181.745144 84.254022) + (xy 181.75 84.254791) + (xy 181.756947 84.25369) + (xy 181.767853 84.252933) + (xy 181.803383 84.253584) + (xy 181.863532 84.237185) + (xy 181.87019 84.235755) + (xy 181.872147 84.235445) + (xy 181.882813 84.233756) + (xy 181.887196 84.231522) + (xy 181.891875 84.230002) + (xy 181.891878 84.23001) + (xy 181.896727 84.228136) + (xy 181.921527 84.221375) + (xy 181.935451 84.212826) + (xy 181.989709 84.179511) + (xy 181.994037 84.177085) + (xy 181.99824 84.174944) + (xy 181.998248 84.174938) + (xy 181.999954 84.174069) + (xy 197.398 84.174069) + (xy 197.401641 84.182859) + (xy 197.410431 84.1865) + (xy 197.886569 84.1865) + (xy 197.895359 84.182859) + (xy 197.899 84.174069) + (xy 198.026 84.174069) + (xy 198.029641 84.182859) + (xy 198.038431 84.1865) + (xy 198.514568 84.1865) + (xy 198.523358 84.182859) + (xy 198.526999 84.174069) + (xy 198.526999 83.955283) + (xy 198.526995 83.955228) + (xy 198.9725 83.955228) + (xy 198.972501 84.250012) + (xy 198.972501 84.546818) + (xy 198.972766 84.54883) + (xy 198.972766 84.548833) + (xy 198.978104 84.589387) + (xy 198.979139 84.597248) + (xy 198.98116 84.601581) + (xy 198.98116 84.601582) + (xy 199.024266 84.694021) + (xy 199.030744 84.707914) + (xy 199.117086 84.794256) + (xy 199.227752 84.845861) + (xy 199.241873 84.84772) + (xy 199.27615 84.852233) + (xy 199.276156 84.852233) + (xy 199.278181 84.8525) + (xy 199.3215 84.8525) + (xy 199.365694 84.870806) + (xy 199.384 84.915) + (xy 199.384 87.086452) + (xy 199.365694 87.130646) + (xy 199.329657 87.148417) + (xy 199.293675 87.153153) + (xy 199.293667 87.153155) + (xy 199.288929 87.153779) + (xy 199.284595 87.1558) + (xy 199.189213 87.200277) + (xy 199.189211 87.200279) + (xy 199.184256 87.202589) + (xy 199.102589 87.284256) + (xy 199.100279 87.289211) + (xy 199.100277 87.289213) + (xy 199.084606 87.322821) + (xy 199.053779 87.388929) + (xy 199.05297 87.395073) + (xy 199.047767 87.434593) + (xy 199.047767 87.434601) + (xy 199.0475 87.436625) + (xy 199.047501 88.063374) + (xy 199.047766 88.065385) + (xy 199.047766 88.06539) + (xy 199.052998 88.105139) + (xy 199.053779 88.111071) + (xy 199.0558 88.115404) + (xy 199.0558 88.115405) + (xy 199.100277 88.210787) + (xy 199.100279 88.210789) + (xy 199.102589 88.215744) + (xy 199.184256 88.297411) + (xy 199.189211 88.299721) + (xy 199.189213 88.299723) + (xy 199.235042 88.321093) + (xy 199.288929 88.346221) + (xy 199.30128 88.347847) + (xy 199.334593 88.352233) + (xy 199.334601 88.352233) + (xy 199.336625 88.3525) + (xy 199.338672 88.3525) + (xy 199.575642 88.352499) + (xy 199.813374 88.352499) + (xy 199.815385 88.352234) + (xy 199.81539 88.352234) + (xy 199.856331 88.346845) + (xy 199.856332 88.346845) + (xy 199.861071 88.346221) + (xy 199.879868 88.337456) + (xy 199.960787 88.299723) + (xy 199.960789 88.299721) + (xy 199.965744 88.297411) + (xy 200.047411 88.215744) + (xy 200.049721 88.210789) + (xy 200.049723 88.210787) + (xy 200.075732 88.15501) + (xy 200.096221 88.111071) + (xy 200.098635 88.092733) + (xy 200.102233 88.065407) + (xy 200.102233 88.065399) + (xy 200.1025 88.063375) + (xy 200.102499 87.436626) + (xy 200.102232 87.434593) + (xy 200.096845 87.393669) + (xy 200.096845 87.393668) + (xy 200.096221 87.388929) + (xy 200.080179 87.354526) + (xy 200.049723 87.289213) + (xy 200.049721 87.289211) + (xy 200.047411 87.284256) + (xy 199.965744 87.202589) + (xy 199.960789 87.200279) + (xy 199.960787 87.200277) + (xy 199.886007 87.165407) + (xy 199.861071 87.153779) + (xy 199.840887 87.151122) + (xy 199.820342 87.148417) + (xy 199.778915 87.1245) + (xy 199.766 87.086452) + (xy 199.766 84.911368) + (xy 199.784306 84.867174) + (xy 199.820343 84.849402) + (xy 199.837927 84.847088) + (xy 199.842508 84.846485) + (xy 199.842509 84.846485) + (xy 199.847248 84.845861) + (xy 199.957914 84.794256) + (xy 200.044256 84.707914) + (xy 200.095861 84.597248) + (xy 200.099319 84.570979) + (xy 200.102233 84.54885) + (xy 200.102233 84.548844) + (xy 200.1025 84.546819) + (xy 200.1025 84.25) + (xy 200.102499 83.955218) + (xy 200.102499 83.953182) + (xy 200.100987 83.941691) + (xy 200.096485 83.907492) + (xy 200.096485 83.907491) + (xy 200.095861 83.902752) + (xy 200.081626 83.872225) + (xy 200.046568 83.797044) + (xy 200.044256 83.792086) + (xy 199.957914 83.705744) + (xy 199.847248 83.654139) + (xy 199.828274 83.651641) + (xy 199.79885 83.647767) + (xy 199.798844 83.647767) + (xy 199.796819 83.6475) + (xy 199.794772 83.6475) + (xy 199.536802 83.647501) + (xy 199.278182 83.647501) + (xy 199.27617 83.647766) + (xy 199.276167 83.647766) + (xy 199.232492 83.653515) + (xy 199.232491 83.653515) + (xy 199.227752 83.654139) + (xy 199.117086 83.705744) + (xy 199.030744 83.792086) + (xy 198.979139 83.902752) + (xy 198.977037 83.918721) + (xy 198.973575 83.945017) + (xy 198.9725 83.953181) + (xy 198.9725 83.955228) + (xy 198.526995 83.955228) + (xy 198.526731 83.951203) + (xy 198.520995 83.907623) + (xy 198.518351 83.898551) + (xy 198.471153 83.797333) + (xy 198.464973 83.788508) + (xy 198.386492 83.710027) + (xy 198.377667 83.703847) + (xy 198.276451 83.65665) + (xy 198.267376 83.654005) + (xy 198.223796 83.648267) + (xy 198.219718 83.648) + (xy 198.038431 83.648) + (xy 198.029641 83.651641) + (xy 198.026 83.660431) + (xy 198.026 84.174069) + (xy 197.899 84.174069) + (xy 197.899 83.660432) + (xy 197.895359 83.651642) + (xy 197.886569 83.648001) + (xy 197.705283 83.648001) + (xy 197.701203 83.648269) + (xy 197.657623 83.654005) + (xy 197.648551 83.656649) + (xy 197.547333 83.703847) + (xy 197.538508 83.710027) + (xy 197.460027 83.788508) + (xy 197.453847 83.797333) + (xy 197.40665 83.898549) + (xy 197.404005 83.907624) + (xy 197.398267 83.951204) + (xy 197.398 83.955282) + (xy 197.398 84.174069) + (xy 181.999954 84.174069) + (xy 182.002625 84.172708) + (xy 182.005427 84.169906) + (xy 182.006264 84.169346) + (xy 182.025881 84.157301) + (xy 182.108058 84.066513) + (xy 182.161451 83.956311) + (xy 182.162311 83.951204) + (xy 182.17749 83.860975) + (xy 182.181767 83.835552) + (xy 182.181896 83.825) + (xy 182.164536 83.703781) + (xy 182.113852 83.592307) + (xy 182.099199 83.575302) + (xy 182.097708 83.572375) + (xy 182.0919 83.566567) + (xy 182.088746 83.56317) + (xy 182.036826 83.502914) + (xy 182.033918 83.499539) + (xy 182.013741 83.486461) + (xy 182.010155 83.483559) + (xy 182.010081 83.483661) + (xy 182.006106 83.480773) + (xy 182.002625 83.477292) + (xy 181.991343 83.471543) + (xy 181.985736 83.468309) + (xy 181.983083 83.466589) + (xy 181.963655 83.453997) + (xy 181.934893 83.435354) + (xy 181.93489 83.435353) + (xy 181.93116 83.432935) + (xy 181.926901 83.431661) + (xy 181.926898 83.43166) + (xy 181.902316 83.424309) + (xy 181.898839 83.423269) + (xy 181.888377 83.419079) + (xy 181.882813 83.416244) + (xy 181.871067 83.414384) + (xy 181.862951 83.412536) + (xy 181.813838 83.397848) + (xy 181.769496 83.397577) + (xy 181.760103 83.396809) + (xy 181.754857 83.395978) + (xy 181.754856 83.395978) + (xy 181.75 83.395209) + (xy 181.741373 83.396576) + (xy 181.73122 83.397344) + (xy 181.712836 83.397231) + (xy 181.695838 83.397127) + (xy 181.695836 83.397127) + (xy 181.691385 83.3971) + (xy 181.637011 83.412641) + (xy 181.629623 83.414275) + (xy 181.617187 83.416244) + (xy 181.612804 83.418477) + (xy 181.61187 83.418781) + (xy 181.602155 83.422603) + (xy 181.577929 83.429526) + (xy 181.577927 83.429527) + (xy 181.573644 83.430751) + (xy 181.513176 83.468904) + (xy 181.512819 83.469129) + (xy 181.507842 83.471959) + (xy 181.501757 83.475059) + (xy 181.501756 83.47506) + (xy 181.497375 83.477292) + (xy 181.493897 83.48077) + (xy 181.492445 83.481825) + (xy 181.489059 83.48412) + (xy 181.479222 83.490327) + (xy 181.47008 83.496095) + (xy 181.467131 83.499434) + (xy 181.46713 83.499435) + (xy 181.433182 83.537873) + (xy 181.386337 83.559) + (xy 180.664999 83.559) + (xy 180.620805 83.540694) + (xy 180.602499 83.4965) + (xy 180.602499 83.46659) + (xy 180.592301 83.397305) + (xy 180.58844 83.38944) + (xy 180.577002 83.366145) + (xy 180.540581 83.291964) + (xy 180.535783 83.287174) + (xy 180.461183 83.212704) + (xy 180.461181 83.212702) + (xy 180.457528 83.209056) + (xy 180.379869 83.171095) + (xy 180.356458 83.159651) + (xy 180.356457 83.159651) + (xy 180.352098 83.15752) + (xy 180.347295 83.156819) + (xy 180.347294 83.156819) + (xy 180.319173 83.152717) + (xy 180.283411 83.1475) + (xy 180.025683 83.1475) + (xy 179.76659 83.147501) + (xy 179.764335 83.147833) + (xy 179.764334 83.147833) + (xy 179.733186 83.152417) + (xy 179.686798 83.140741) + (xy 179.679892 83.134777) + (xy 179.190628 82.645513) + (xy 179.186323 82.639439) + (xy 179.18575 82.639895) + (xy 179.181369 82.634387) + (xy 179.178322 82.628042) + (xy 179.155239 82.609582) + (xy 179.15008 82.604965) + (xy 179.144831 82.599716) + (xy 179.138828 82.595943) + (xy 179.133052 82.591838) + (xy 179.110267 82.573617) + (xy 179.103407 82.57204) + (xy 179.099647 82.570222) + (xy 179.095711 82.568844) + (xy 179.089752 82.565098) + (xy 179.082758 82.564307) + (xy 179.082757 82.564307) + (xy 179.060764 82.561821) + (xy 179.053787 82.560629) + (xy 179.046703 82.559) + (xy 179.039329 82.559) + (xy 179.032308 82.558604) + (xy 179.030627 82.558414) + (xy 179.003162 82.555309) + (xy 178.996517 82.55763) + (xy 178.989523 82.558414) + (xy 178.989447 82.557736) + (xy 178.981995 82.559) + (xy 171.164999 82.559) + (xy 171.120805 82.540694) + (xy 171.102499 82.4965) + (xy 171.102499 82.436626) + (xy 171.102232 82.434593) + (xy 171.096845 82.393669) + (xy 171.096845 82.393668) + (xy 171.096221 82.388929) + (xy 171.080179 82.354526) + (xy 171.049723 82.289213) + (xy 171.049721 82.289211) + (xy 171.047411 82.284256) + (xy 170.965744 82.202589) + (xy 170.960789 82.200279) + (xy 170.960787 82.200277) + (xy 170.895938 82.170038) + (xy 170.861071 82.153779) + (xy 170.840887 82.151122) + (xy 170.820342 82.148417) + (xy 170.778915 82.1245) + (xy 170.766 82.086452) + (xy 170.766 81.663548) + (xy 170.784306 81.619354) + (xy 170.820343 81.601583) + (xy 170.856325 81.596847) + (xy 170.856333 81.596845) + (xy 170.861071 81.596221) + (xy 170.869477 81.592301) + (xy 170.960787 81.549723) + (xy 170.960789 81.549721) + (xy 170.965744 81.547411) + (xy 171.047411 81.465744) + (xy 171.049721 81.460789) + (xy 171.049723 81.460787) + (xy 171.075732 81.40501) + (xy 171.096221 81.361071) + (xy 171.099702 81.334631) + (xy 171.102233 81.315407) + (xy 171.102233 81.315399) + (xy 171.1025 81.313375) + (xy 171.1025 81) + (xy 171.102499 80.688662) + (xy 171.102499 80.686626) + (xy 171.102232 80.684593) + (xy 171.096845 80.643669) + (xy 171.096845 80.643668) + (xy 171.096221 80.638929) + (xy 171.080179 80.604526) + (xy 171.049723 80.539213) + (xy 171.049721 80.539211) + (xy 171.047411 80.534256) + (xy 170.965744 80.452589) + (xy 170.960789 80.450279) + (xy 170.960787 80.450277) + (xy 170.875338 80.410432) + (xy 170.861071 80.403779) + (xy 170.844831 80.401641) + (xy 170.815407 80.397767) + (xy 170.815399 80.397767) + (xy 170.813375 80.3975) + (xy 170.693503 80.3975) + (xy 170.649309 80.379194) + (xy 170.162108 79.891993) + (xy 170.157803 79.885919) + (xy 170.15723 79.886375) + (xy 170.152849 79.880867) + (xy 170.149802 79.874522) + (xy 170.133848 79.861763) + (xy 170.126719 79.856062) + (xy 170.12156 79.851445) + (xy 170.116311 79.846196) + (xy 170.110308 79.842423) + (xy 170.104532 79.838318) + (xy 170.081747 79.820097) + (xy 170.074887 79.81852) + (xy 170.071127 79.816702) + (xy 170.067191 79.815324) + (xy 170.061232 79.811578) + (xy 170.054238 79.810787) + (xy 170.054237 79.810787) + (xy 170.032244 79.808301) + (xy 170.025267 79.807109) + (xy 170.018183 79.80548) + (xy 170.010809 79.80548) + (xy 170.003788 79.805084) + (xy 170.002107 79.804894) + (xy 169.974642 79.801789) + (xy 169.967997 79.80411) + (xy 169.961003 79.804894) + (xy 169.960927 79.804216) + (xy 169.953475 79.80548) + (xy 154.521754 79.80548) + (xy 154.514413 79.804227) + (xy 154.51433 79.804956) + (xy 154.507339 79.804159) + (xy 154.500698 79.801827) + (xy 154.493706 79.802605) + (xy 154.493704 79.802605) + (xy 154.474184 79.804778) + (xy 154.471432 79.805084) + (xy 154.471315 79.805097) + (xy 154.464402 79.80548) + (xy 154.456987 79.80548) + (xy 154.450058 79.80706) + (xy 154.443115 79.808235) + (xy 154.414092 79.811465) + (xy 154.408126 79.8152) + (xy 154.404187 79.816572) + (xy 154.400424 79.818383) + (xy 154.393561 79.819948) + (xy 154.383639 79.827855) + (xy 154.370747 79.838128) + (xy 154.364961 79.842224) + (xy 154.36235 79.843859) + (xy 154.358809 79.846076) + (xy 154.353596 79.851289) + (xy 154.348352 79.855974) + (xy 154.325411 79.874255) + (xy 154.322353 79.880594) + (xy 154.317962 79.886095) + (xy 154.317428 79.885669) + (xy 154.313052 79.891833) + (xy 153.820146 80.384739) + (xy 153.775952 80.403045) + (xy 153.766937 80.402391) + (xy 153.733411 80.3975) + (xy 153.475683 80.3975) + (xy 153.21659 80.397501) + (xy 153.147305 80.407699) + (xy 153.142947 80.409839) + (xy 153.142946 80.409839) + (xy 153.123777 80.419251) + (xy 153.041964 80.459419) + (xy 153.038318 80.463071) + (xy 153.038317 80.463072) + (xy 152.962704 80.538817) + (xy 152.962702 80.538819) + (xy 152.959056 80.542472) + (xy 152.928723 80.604526) + (xy 152.912306 80.638112) + (xy 152.90752 80.647902) + (xy 152.906819 80.652705) + (xy 152.906819 80.652706) + (xy 152.905542 80.661461) + (xy 152.8975 80.716589) + (xy 152.8975 80.7465) + (xy 152.879194 80.790694) + (xy 152.835 80.809) + (xy 152.673049 80.809) + (xy 152.628855 80.790694) + (xy 152.616156 80.772373) + (xy 152.615695 80.77136) + (xy 152.615694 80.771359) + (xy 152.613852 80.767307) + (xy 152.599199 80.750302) + (xy 152.597708 80.747375) + (xy 152.5919 80.741567) + (xy 152.588746 80.73817) + (xy 152.536826 80.677914) + (xy 152.533918 80.674539) + (xy 152.513741 80.661461) + (xy 152.510155 80.658559) + (xy 152.510081 80.658661) + (xy 152.506106 80.655773) + (xy 152.502625 80.652292) + (xy 152.491343 80.646543) + (xy 152.485736 80.643309) + (xy 152.485399 80.64309) + (xy 152.467225 80.631311) + (xy 152.434893 80.610354) + (xy 152.43489 80.610353) + (xy 152.43116 80.607935) + (xy 152.426901 80.606661) + (xy 152.426898 80.60666) + (xy 152.408345 80.601112) + (xy 152.398839 80.598269) + (xy 152.388377 80.594079) + (xy 152.382813 80.591244) + (xy 152.371067 80.589384) + (xy 152.362951 80.587536) + (xy 152.34985 80.583618) + (xy 152.313838 80.572848) + (xy 152.269496 80.572577) + (xy 152.260103 80.571809) + (xy 152.254857 80.570978) + (xy 152.254856 80.570978) + (xy 152.25 80.570209) + (xy 152.241373 80.571576) + (xy 152.23122 80.572344) + (xy 152.212836 80.572231) + (xy 152.195838 80.572127) + (xy 152.195836 80.572127) + (xy 152.191385 80.5721) + (xy 152.137011 80.587641) + (xy 152.129623 80.589275) + (xy 152.117187 80.591244) + (xy 152.112804 80.593477) + (xy 152.11187 80.593781) + (xy 152.102155 80.597603) + (xy 152.077929 80.604526) + (xy 152.077927 80.604527) + (xy 152.073644 80.605751) + (xy 152.01352 80.643687) + (xy 152.012819 80.644129) + (xy 152.007842 80.646959) + (xy 152.001757 80.650059) + (xy 152.001756 80.65006) + (xy 151.997375 80.652292) + (xy 151.993897 80.65577) + (xy 151.992445 80.656825) + (xy 151.989058 80.65912) + (xy 151.97008 80.671095) + (xy 151.967137 80.674427) + (xy 151.967135 80.674429) + (xy 151.907156 80.742342) + (xy 151.906032 80.743538) + (xy 151.905775 80.743892) + (xy 151.905554 80.744113) + (xy 151.905405 80.744204) + (xy 151.904504 80.745163) + (xy 151.902292 80.747375) + (xy 151.901509 80.746592) + (xy 151.900362 80.747296) + (xy 151.901721 80.748496) + (xy 151.895002 80.756104) + (xy 151.889018 80.762879) + (xy 151.886939 80.767307) + (xy 151.838868 80.869695) + (xy 151.838867 80.869698) + (xy 151.836976 80.873726) + (xy 151.818136 80.994724) + (xy 135.981466 80.994724) + (xy 135.982485 80.911288) + (xy 135.983336 80.841638) + (xy 135.983336 80.841634) + (xy 135.983367 80.83907) + (xy 135.947502 80.604686) + (xy 135.943752 80.593211) + (xy 135.874635 80.381751) + (xy 135.874634 80.381749) + (xy 135.873836 80.379307) + (xy 135.865607 80.363499) + (xy 135.765537 80.171265) + (xy 135.765533 80.171259) + (xy 135.76435 80.168986) + (xy 135.621983 79.97937) + (xy 135.450559 79.815554) + (xy 135.444994 79.811758) + (xy 135.256807 79.683385) + (xy 135.256805 79.683384) + (xy 135.254681 79.681935) + (xy 135.039609 79.582102) + (xy 135.037142 79.581418) + (xy 135.037137 79.581416) + (xy 134.813587 79.51942) + (xy 134.813588 79.51942) + (xy 134.811121 79.518736) + (xy 134.721582 79.509167) + (xy 134.619202 79.498226) + (xy 134.619198 79.498226) + (xy 134.617553 79.49805) + (xy 134.47989 79.49805) + (xy 134.303685 79.512537) + (xy 134.301192 79.513163) + (xy 134.301193 79.513163) + (xy 134.076203 79.569676) + (xy 134.0762 79.569677) + (xy 134.073716 79.570301) + (xy 133.85627 79.664849) + (xy 133.657186 79.793642) + (xy 133.63373 79.814985) + (xy 133.551907 79.889439) + (xy 133.48181 79.953222) + (xy 133.480222 79.955233) + (xy 133.480219 79.955236) + (xy 133.336443 80.137288) + (xy 133.33644 80.137292) + (xy 133.334853 80.139302) + (xy 133.333614 80.141547) + (xy 133.333613 80.141548) + (xy 133.298152 80.205786) + (xy 133.220261 80.346886) + (xy 133.219403 80.349309) + (xy 133.143714 80.563048) + (xy 133.141111 80.570398) + (xy 133.140661 80.572924) + (xy 133.14066 80.572928) + (xy 133.09998 80.8013) + (xy 133.099979 80.801307) + (xy 133.099529 80.803835) + (xy 133.09806 80.924069) + (xy 133.097034 81.00814) + (xy 133.096633 81.04093) + (xy 132.745005 81.04093) + (xy 132.753799 80.899176) + (xy 132.72419 80.726859) + (xy 132.655733 80.565976) + (xy 132.552102 80.425157) + (xy 132.53477 80.410432) + (xy 132.495448 80.377026) + (xy 132.418854 80.311955) + (xy 132.263138 80.232442) + (xy 132.093307 80.190885) + (xy 132.085635 80.190409) + (xy 132.083235 80.19026) + (xy 132.083231 80.19026) + (xy 132.082266 80.1902) + (xy 131.956221 80.1902) + (xy 131.954431 80.190409) + (xy 131.954426 80.190409) + (xy 131.904784 80.196197) + (xy 131.826335 80.205343) + (xy 131.82292 80.206582) + (xy 131.822918 80.206583) + (xy 131.768431 80.226361) + (xy 131.661985 80.264999) + (xy 131.658949 80.26699) + (xy 131.658948 80.26699) + (xy 131.626297 80.288397) + (xy 131.515767 80.360864) + (xy 131.395525 80.487795) + (xy 131.393703 80.490933) + (xy 131.3937 80.490936) + (xy 131.310257 80.634595) + (xy 131.307708 80.638983) + (xy 131.306658 80.64245) + (xy 131.274329 80.749193) + (xy 131.257027 80.806318) + (xy 131.246201 80.980824) + (xy 130.901636 80.980824) + (xy 130.902485 80.911288) + (xy 130.903336 80.841638) + (xy 130.903336 80.841634) + (xy 130.903367 80.83907) + (xy 130.867502 80.604686) + (xy 130.863752 80.593211) + (xy 130.794635 80.381751) + (xy 130.794634 80.381749) + (xy 130.793836 80.379307) + (xy 130.785607 80.363499) + (xy 130.685537 80.171265) + (xy 130.685533 80.171259) + (xy 130.68435 80.168986) + (xy 130.541983 79.97937) + (xy 130.370559 79.815554) + (xy 130.364994 79.811758) + (xy 130.176807 79.683385) + (xy 130.176805 79.683384) + (xy 130.174681 79.681935) + (xy 129.959609 79.582102) + (xy 129.957142 79.581418) + (xy 129.957137 79.581416) + (xy 129.733587 79.51942) + (xy 129.733588 79.51942) + (xy 129.731121 79.518736) + (xy 129.641582 79.509167) + (xy 129.539202 79.498226) + (xy 129.539198 79.498226) + (xy 129.537553 79.49805) + (xy 129.39989 79.49805) + (xy 129.223685 79.512537) + (xy 129.221192 79.513163) + (xy 129.221193 79.513163) + (xy 128.996203 79.569676) + (xy 128.9962 79.569677) + (xy 128.993716 79.570301) + (xy 128.77627 79.664849) + (xy 128.577186 79.793642) + (xy 128.55373 79.814985) + (xy 128.471907 79.889439) + (xy 128.40181 79.953222) + (xy 128.400222 79.955233) + (xy 128.400219 79.955236) + (xy 128.256443 80.137288) + (xy 128.25644 80.137292) + (xy 128.254853 80.139302) + (xy 128.253614 80.141547) + (xy 128.253613 80.141548) + (xy 128.218152 80.205786) + (xy 128.140261 80.346886) + (xy 128.139403 80.349309) + (xy 128.063714 80.563048) + (xy 128.061111 80.570398) + (xy 128.060661 80.572924) + (xy 128.06066 80.572928) + (xy 128.01998 80.8013) + (xy 128.019979 80.801307) + (xy 128.019529 80.803835) + (xy 128.01806 80.924069) + (xy 128.017034 81.00814) + (xy 128.016633 81.04093) + (xy 128.017021 81.043465) + (xy 128.017021 81.043466) + (xy 128.018177 81.051018) + (xy 128.052498 81.275314) + (xy 128.053296 81.277754) + (xy 128.053296 81.277756) + (xy 128.089292 81.387885) + (xy 128.085622 81.435579) + (xy 128.049302 81.466709) + (xy 128.001608 81.463039) + (xy 127.985691 81.451496) + (xy 126.429708 79.895513) + (xy 126.425403 79.889439) + (xy 126.42483 79.889895) + (xy 126.420449 79.884387) + (xy 126.417402 79.878042) + (xy 126.394319 79.859582) + (xy 126.38916 79.854965) + (xy 126.383911 79.849716) + (xy 126.377908 79.845943) + (xy 126.372132 79.841838) + (xy 126.349347 79.823617) + (xy 126.342487 79.82204) + (xy 126.338727 79.820222) + (xy 126.334791 79.818844) + (xy 126.328832 79.815098) + (xy 126.321838 79.814307) + (xy 126.321837 79.814307) + (xy 126.299844 79.811821) + (xy 126.292867 79.810629) + (xy 126.285783 79.809) + (xy 126.278409 79.809) + (xy 126.271388 79.808604) + (xy 126.242242 79.805309) + (xy 126.235597 79.80763) + (xy 126.228603 79.808414) + (xy 126.228527 79.807736) + (xy 126.221075 79.809) + (xy 116.293232 79.809) + (xy 116.285893 79.80775) + (xy 116.28581 79.808477) + (xy 116.278819 79.80768) + (xy 116.272178 79.805348) + (xy 116.265185 79.806126) + (xy 116.265184 79.806126) + (xy 116.2428 79.808617) + (xy 116.235888 79.809) + (xy 116.228467 79.809) + (xy 116.225044 79.809781) + (xy 116.225043 79.809781) + (xy 116.221552 79.810577) + (xy 116.214569 79.811758) + (xy 116.192562 79.814207) + (xy 116.185571 79.814985) + (xy 116.179608 79.818718) + (xy 116.175675 79.820088) + (xy 116.171905 79.821902) + (xy 116.165041 79.823468) + (xy 116.147248 79.837647) + (xy 116.142229 79.841646) + (xy 116.136446 79.84574) + (xy 116.13329 79.847716) + (xy 116.133284 79.847721) + (xy 116.130289 79.849596) + (xy 116.125076 79.854809) + (xy 116.119832 79.859494) + (xy 116.106814 79.869868) + (xy 116.096891 79.877775) + (xy 116.093833 79.884114) + (xy 116.089442 79.889615) + (xy 116.088908 79.889189) + (xy 116.084532 79.895353) + (xy 114.895513 81.084372) + (xy 114.889439 81.088677) + (xy 114.889895 81.08925) + (xy 114.884387 81.093631) + (xy 114.878042 81.096678) + (xy 114.873646 81.102175) + (xy 114.859582 81.119761) + (xy 114.854965 81.12492) + (xy 114.849716 81.130169) + (xy 114.847847 81.133143) + (xy 114.845943 81.136172) + (xy 114.841838 81.141948) + (xy 114.823617 81.164733) + (xy 114.82204 81.171593) + (xy 114.820222 81.175353) + (xy 114.818844 81.179289) + (xy 114.815098 81.185248) + (xy 114.814307 81.192242) + (xy 114.814307 81.192243) + (xy 114.811821 81.214236) + (xy 114.810629 81.221213) + (xy 114.809 81.228297) + (xy 114.809 81.235671) + (xy 114.808604 81.242692) + (xy 114.805309 81.271838) + (xy 114.80763 81.278483) + (xy 114.808414 81.285477) + (xy 114.807736 81.285553) + (xy 114.809 81.293005) + (xy 114.809 83.86) + (xy 114.790694 83.904194) + (xy 114.7465 83.9225) + (xy 113.187442 83.9225) + (xy 113.184431 83.923099) + (xy 113.156287 83.928697) + (xy 113.156285 83.928698) + (xy 113.150252 83.929898) + (xy 113.108078 83.958078) + (xy 113.079898 84.000252) + (xy 113.078698 84.006285) + (xy 113.078697 84.006287) + (xy 113.07485 84.02563) + (xy 113.0725 84.037442) + (xy 113.0725 86.662558) + (xy 99.3 86.662558) + (xy 99.3 77.9625) + (xy 99.318306 77.918306) + (xy 99.3625 77.9) + (xy 200.6375 77.9) + ) + ) + (filled_polygon + (layer "B.Cu") + (pts + (xy 154.360284 120.649806) + (xy 159.58153 125.871052) + (xy 159.594543 125.890074) + (xy 159.613207 125.932491) + (xy 159.6185 125.957663) + (xy 159.6185 126.9375) + (xy 159.600194 126.981694) + (xy 159.556 127) + (xy 157.7535 127) + (xy 157.709306 126.981694) + (xy 157.691 126.9375) + (xy 157.691 126.293232) + (xy 157.69225 126.285893) + (xy 157.691523 126.28581) + (xy 157.69232 126.278819) + (xy 157.694652 126.272178) + (xy 157.691383 126.2428) + (xy 157.691 126.235888) + (xy 157.691 126.228467) + (xy 157.689423 126.221552) + (xy 157.688242 126.214569) + (xy 157.685793 126.192562) + (xy 157.685015 126.185571) + (xy 157.681282 126.179608) + (xy 157.679912 126.175675) + (xy 157.678098 126.171905) + (xy 157.676532 126.165041) + (xy 157.658354 126.142229) + (xy 157.65426 126.136446) + (xy 157.652284 126.13329) + (xy 157.652279 126.133284) + (xy 157.650404 126.130289) + (xy 157.645191 126.125076) + (xy 157.640506 126.119832) + (xy 157.626612 126.102396) + (xy 157.626611 126.102396) + (xy 157.622225 126.096891) + (xy 157.615886 126.093833) + (xy 157.610385 126.089442) + (xy 157.610811 126.088908) + (xy 157.604647 126.084532) + (xy 156.682793 125.162678) + (xy 156.664487 125.118484) + (xy 156.665353 125.108115) + (xy 156.681767 125.010552) + (xy 156.681896 125) + (xy 156.664536 124.878781) + (xy 156.613852 124.767307) + (xy 156.599199 124.750302) + (xy 156.597708 124.747375) + (xy 156.5919 124.741567) + (xy 156.588746 124.73817) + (xy 156.536826 124.677914) + (xy 156.533918 124.674539) + (xy 156.513741 124.661461) + (xy 156.510155 124.658559) + (xy 156.510081 124.658661) + (xy 156.506106 124.655773) + (xy 156.502625 124.652292) + (xy 156.491343 124.646543) + (xy 156.485736 124.643309) + (xy 156.434893 124.610354) + (xy 156.43489 124.610353) + (xy 156.43116 124.607935) + (xy 156.426901 124.606661) + (xy 156.426898 124.60666) + (xy 156.408345 124.601112) + (xy 156.398839 124.598269) + (xy 156.388377 124.594079) + (xy 156.382813 124.591244) + (xy 156.371067 124.589384) + (xy 156.362951 124.587536) + (xy 156.313838 124.572848) + (xy 156.269496 124.572577) + (xy 156.260103 124.571809) + (xy 156.254857 124.570978) + (xy 156.254856 124.570978) + (xy 156.25 124.570209) + (xy 156.241373 124.571576) + (xy 156.23122 124.572344) + (xy 156.212836 124.572231) + (xy 156.195838 124.572127) + (xy 156.195836 124.572127) + (xy 156.191385 124.5721) + (xy 156.137011 124.587641) + (xy 156.129623 124.589275) + (xy 156.117187 124.591244) + (xy 156.112804 124.593477) + (xy 156.11187 124.593781) + (xy 156.102155 124.597603) + (xy 156.077929 124.604526) + (xy 156.077927 124.604527) + (xy 156.073644 124.605751) + (xy 156.014119 124.643309) + (xy 156.012819 124.644129) + (xy 156.007842 124.646959) + (xy 156.001757 124.650059) + (xy 156.001756 124.65006) + (xy 155.997375 124.652292) + (xy 155.993897 124.65577) + (xy 155.992445 124.656825) + (xy 155.989058 124.65912) + (xy 155.97008 124.671095) + (xy 155.967137 124.674427) + (xy 155.967135 124.674429) + (xy 155.907156 124.742342) + (xy 155.906032 124.743538) + (xy 155.905775 124.743892) + (xy 155.905554 124.744113) + (xy 155.905405 124.744204) + (xy 155.904504 124.745163) + (xy 155.902292 124.747375) + (xy 155.901509 124.746592) + (xy 155.900362 124.747296) + (xy 155.901721 124.748496) + (xy 155.889018 124.762879) + (xy 155.887127 124.766907) + (xy 155.838868 124.869695) + (xy 155.838867 124.869698) + (xy 155.836976 124.873726) + (xy 155.818136 124.994724) + (xy 155.818713 124.999137) + (xy 155.818713 124.999138) + (xy 155.824788 125.045593) + (xy 155.834014 125.116145) + (xy 155.841185 125.132443) + (xy 155.841244 125.132813) + (xy 155.842007 125.134311) + (xy 155.883333 125.22823) + (xy 155.897272 125.244813) + (xy 155.898029 125.245713) + (xy 155.900157 125.248434) + (xy 155.902292 125.252625) + (xy 155.910081 125.260414) + (xy 155.913729 125.264391) + (xy 155.962127 125.321968) + (xy 155.985399 125.337459) + (xy 155.991836 125.342733) + (xy 155.993899 125.344232) + (xy 155.997375 125.347708) + (xy 156.001753 125.349939) + (xy 156.001756 125.349941) + (xy 156.00873 125.353494) + (xy 156.014977 125.357148) + (xy 156.064064 125.389823) + (xy 156.068313 125.391151) + (xy 156.068314 125.391151) + (xy 156.100296 125.401143) + (xy 156.110027 125.405109) + (xy 156.112799 125.406521) + (xy 156.112803 125.406522) + (xy 156.117187 125.408756) + (xy 156.127852 125.410445) + (xy 156.136713 125.41252) + (xy 156.176696 125.425012) + (xy 156.176699 125.425012) + (xy 156.180948 125.42634) + (xy 156.230069 125.427241) + (xy 156.238683 125.427999) + (xy 156.24514 125.429022) + (xy 156.245144 125.429022) + (xy 156.25 125.429791) + (xy 156.256947 125.42869) + (xy 156.267853 125.427933) + (xy 156.303383 125.428584) + (xy 156.308019 125.42732) + (xy 156.350968 125.415611) + (xy 156.398421 125.421648) + (xy 156.411601 125.431716) + (xy 157.290694 126.310809) + (xy 157.309 126.355003) + (xy 157.309 126.9375) + (xy 157.290694 126.981694) + (xy 157.2465 127) + (xy 155.2535 127) + (xy 155.209306 126.981694) + (xy 155.191 126.9375) + (xy 155.191 126.293232) + (xy 155.19225 126.285893) + (xy 155.191523 126.28581) + (xy 155.19232 126.278819) + (xy 155.194652 126.272178) + (xy 155.191383 126.2428) + (xy 155.191 126.235888) + (xy 155.191 126.228467) + (xy 155.189423 126.221552) + (xy 155.188242 126.214569) + (xy 155.185793 126.192562) + (xy 155.185015 126.185571) + (xy 155.181282 126.179608) + (xy 155.179912 126.175675) + (xy 155.178098 126.171905) + (xy 155.176532 126.165041) + (xy 155.158354 126.142229) + (xy 155.15426 126.136446) + (xy 155.152284 126.13329) + (xy 155.152279 126.133284) + (xy 155.150404 126.130289) + (xy 155.145191 126.125076) + (xy 155.140506 126.119832) + (xy 155.126612 126.102396) + (xy 155.126611 126.102396) + (xy 155.122225 126.096891) + (xy 155.115886 126.093833) + (xy 155.110385 126.089442) + (xy 155.110811 126.088908) + (xy 155.104647 126.084532) + (xy 154.182793 125.162678) + (xy 154.164487 125.118484) + (xy 154.165353 125.108115) + (xy 154.181767 125.010552) + (xy 154.181896 125) + (xy 154.164536 124.878781) + (xy 154.113852 124.767307) + (xy 154.099199 124.750302) + (xy 154.097708 124.747375) + (xy 154.0919 124.741567) + (xy 154.088746 124.73817) + (xy 154.036826 124.677914) + (xy 154.033918 124.674539) + (xy 154.013741 124.661461) + (xy 154.010155 124.658559) + (xy 154.010081 124.658661) + (xy 154.006106 124.655773) + (xy 154.002625 124.652292) + (xy 153.991343 124.646543) + (xy 153.985736 124.643309) + (xy 153.934893 124.610354) + (xy 153.93489 124.610353) + (xy 153.93116 124.607935) + (xy 153.926901 124.606661) + (xy 153.926898 124.60666) + (xy 153.908345 124.601112) + (xy 153.898839 124.598269) + (xy 153.888377 124.594079) + (xy 153.882813 124.591244) + (xy 153.871067 124.589384) + (xy 153.862951 124.587536) + (xy 153.813838 124.572848) + (xy 153.769496 124.572577) + (xy 153.760103 124.571809) + (xy 153.754857 124.570978) + (xy 153.754856 124.570978) + (xy 153.75 124.570209) + (xy 153.741373 124.571576) + (xy 153.73122 124.572344) + (xy 153.712836 124.572231) + (xy 153.695838 124.572127) + (xy 153.695836 124.572127) + (xy 153.691385 124.5721) + (xy 153.637011 124.587641) + (xy 153.629623 124.589275) + (xy 153.617187 124.591244) + (xy 153.612804 124.593477) + (xy 153.61187 124.593781) + (xy 153.602155 124.597603) + (xy 153.577929 124.604526) + (xy 153.577927 124.604527) + (xy 153.573644 124.605751) + (xy 153.514119 124.643309) + (xy 153.512819 124.644129) + (xy 153.507842 124.646959) + (xy 153.501757 124.650059) + (xy 153.501756 124.65006) + (xy 153.497375 124.652292) + (xy 153.493897 124.65577) + (xy 153.492445 124.656825) + (xy 153.489058 124.65912) + (xy 153.47008 124.671095) + (xy 153.467137 124.674427) + (xy 153.467135 124.674429) + (xy 153.407156 124.742342) + (xy 153.406032 124.743538) + (xy 153.405775 124.743892) + (xy 153.405554 124.744113) + (xy 153.405405 124.744204) + (xy 153.404504 124.745163) + (xy 153.402292 124.747375) + (xy 153.401509 124.746592) + (xy 153.400362 124.747296) + (xy 153.401721 124.748496) + (xy 153.389018 124.762879) + (xy 153.387127 124.766907) + (xy 153.338868 124.869695) + (xy 153.338867 124.869698) + (xy 153.336976 124.873726) + (xy 153.318136 124.994724) + (xy 153.318713 124.999137) + (xy 153.318713 124.999138) + (xy 153.324788 125.045593) + (xy 153.334014 125.116145) + (xy 153.341185 125.132443) + (xy 153.341244 125.132813) + (xy 153.342007 125.134311) + (xy 153.383333 125.22823) + (xy 153.397272 125.244813) + (xy 153.398029 125.245713) + (xy 153.400157 125.248434) + (xy 153.402292 125.252625) + (xy 153.410081 125.260414) + (xy 153.413729 125.264391) + (xy 153.462127 125.321968) + (xy 153.485399 125.337459) + (xy 153.491836 125.342733) + (xy 153.493899 125.344232) + (xy 153.497375 125.347708) + (xy 153.501753 125.349939) + (xy 153.501756 125.349941) + (xy 153.50873 125.353494) + (xy 153.514977 125.357148) + (xy 153.564064 125.389823) + (xy 153.568313 125.391151) + (xy 153.568314 125.391151) + (xy 153.600296 125.401143) + (xy 153.610027 125.405109) + (xy 153.612799 125.406521) + (xy 153.612803 125.406522) + (xy 153.617187 125.408756) + (xy 153.627852 125.410445) + (xy 153.636713 125.41252) + (xy 153.676696 125.425012) + (xy 153.676699 125.425012) + (xy 153.680948 125.42634) + (xy 153.730069 125.427241) + (xy 153.738683 125.427999) + (xy 153.74514 125.429022) + (xy 153.745144 125.429022) + (xy 153.75 125.429791) + (xy 153.756947 125.42869) + (xy 153.767853 125.427933) + (xy 153.803383 125.428584) + (xy 153.808019 125.42732) + (xy 153.850968 125.415611) + (xy 153.898421 125.421648) + (xy 153.911601 125.431716) + (xy 154.790694 126.310809) + (xy 154.809 126.355003) + (xy 154.809 126.9375) + (xy 154.790694 126.981694) + (xy 154.7465 127) + (xy 152.7535 127) + (xy 152.709306 126.981694) + (xy 152.691 126.9375) + (xy 152.691 126.293232) + (xy 152.69225 126.285893) + (xy 152.691523 126.28581) + (xy 152.69232 126.278819) + (xy 152.694652 126.272178) + (xy 152.691383 126.2428) + (xy 152.691 126.235888) + (xy 152.691 126.228467) + (xy 152.689423 126.221552) + (xy 152.688242 126.214569) + (xy 152.685793 126.192562) + (xy 152.685015 126.185571) + (xy 152.681282 126.179608) + (xy 152.679912 126.175675) + (xy 152.678098 126.171905) + (xy 152.676532 126.165041) + (xy 152.658354 126.142229) + (xy 152.65426 126.136446) + (xy 152.652284 126.13329) + (xy 152.652279 126.133284) + (xy 152.650404 126.130289) + (xy 152.645191 126.125076) + (xy 152.640506 126.119832) + (xy 152.626612 126.102396) + (xy 152.626611 126.102396) + (xy 152.622225 126.096891) + (xy 152.615886 126.093833) + (xy 152.610385 126.089442) + (xy 152.610811 126.088908) + (xy 152.604647 126.084532) + (xy 151.682793 125.162678) + (xy 151.664487 125.118484) + (xy 151.665353 125.108115) + (xy 151.681767 125.010552) + (xy 151.681896 125) + (xy 151.664536 124.878781) + (xy 151.613852 124.767307) + (xy 151.599199 124.750302) + (xy 151.597708 124.747375) + (xy 151.5919 124.741567) + (xy 151.588746 124.73817) + (xy 151.536826 124.677914) + (xy 151.533918 124.674539) + (xy 151.513741 124.661461) + (xy 151.510155 124.658559) + (xy 151.510081 124.658661) + (xy 151.506106 124.655773) + (xy 151.502625 124.652292) + (xy 151.491343 124.646543) + (xy 151.485736 124.643309) + (xy 151.434893 124.610354) + (xy 151.43489 124.610353) + (xy 151.43116 124.607935) + (xy 151.426901 124.606661) + (xy 151.426898 124.60666) + (xy 151.408345 124.601112) + (xy 151.398839 124.598269) + (xy 151.388377 124.594079) + (xy 151.382813 124.591244) + (xy 151.371067 124.589384) + (xy 151.362951 124.587536) + (xy 151.313838 124.572848) + (xy 151.269496 124.572577) + (xy 151.260103 124.571809) + (xy 151.254857 124.570978) + (xy 151.254856 124.570978) + (xy 151.25 124.570209) + (xy 151.241373 124.571576) + (xy 151.23122 124.572344) + (xy 151.212836 124.572231) + (xy 151.195838 124.572127) + (xy 151.195836 124.572127) + (xy 151.191385 124.5721) + (xy 151.137011 124.587641) + (xy 151.129623 124.589275) + (xy 151.117187 124.591244) + (xy 151.112804 124.593477) + (xy 151.11187 124.593781) + (xy 151.102155 124.597603) + (xy 151.077929 124.604526) + (xy 151.077927 124.604527) + (xy 151.073644 124.605751) + (xy 151.014119 124.643309) + (xy 151.012819 124.644129) + (xy 151.007842 124.646959) + (xy 151.001757 124.650059) + (xy 151.001756 124.65006) + (xy 150.997375 124.652292) + (xy 150.993897 124.65577) + (xy 150.992445 124.656825) + (xy 150.989058 124.65912) + (xy 150.97008 124.671095) + (xy 150.967137 124.674427) + (xy 150.967135 124.674429) + (xy 150.907156 124.742342) + (xy 150.906032 124.743538) + (xy 150.905775 124.743892) + (xy 150.905554 124.744113) + (xy 150.905405 124.744204) + (xy 150.904504 124.745163) + (xy 150.902292 124.747375) + (xy 150.901509 124.746592) + (xy 150.900362 124.747296) + (xy 150.901721 124.748496) + (xy 150.889018 124.762879) + (xy 150.887127 124.766907) + (xy 150.838868 124.869695) + (xy 150.838867 124.869698) + (xy 150.836976 124.873726) + (xy 150.818136 124.994724) + (xy 150.818713 124.999137) + (xy 150.818713 124.999138) + (xy 150.824788 125.045593) + (xy 150.834014 125.116145) + (xy 150.841185 125.132443) + (xy 150.841244 125.132813) + (xy 150.842007 125.134311) + (xy 150.883333 125.22823) + (xy 150.897272 125.244813) + (xy 150.898029 125.245713) + (xy 150.900157 125.248434) + (xy 150.902292 125.252625) + (xy 150.910081 125.260414) + (xy 150.913729 125.264391) + (xy 150.962127 125.321968) + (xy 150.985399 125.337459) + (xy 150.991836 125.342733) + (xy 150.993899 125.344232) + (xy 150.997375 125.347708) + (xy 151.001753 125.349939) + (xy 151.001756 125.349941) + (xy 151.00873 125.353494) + (xy 151.014977 125.357148) + (xy 151.064064 125.389823) + (xy 151.068313 125.391151) + (xy 151.068314 125.391151) + (xy 151.100296 125.401143) + (xy 151.110027 125.405109) + (xy 151.112799 125.406521) + (xy 151.112803 125.406522) + (xy 151.117187 125.408756) + (xy 151.127852 125.410445) + (xy 151.136713 125.41252) + (xy 151.176696 125.425012) + (xy 151.176699 125.425012) + (xy 151.180948 125.42634) + (xy 151.230069 125.427241) + (xy 151.238683 125.427999) + (xy 151.24514 125.429022) + (xy 151.245144 125.429022) + (xy 151.25 125.429791) + (xy 151.256947 125.42869) + (xy 151.267853 125.427933) + (xy 151.303383 125.428584) + (xy 151.308019 125.42732) + (xy 151.350968 125.415611) + (xy 151.398421 125.421648) + (xy 151.411601 125.431716) + (xy 152.290694 126.310809) + (xy 152.309 126.355003) + (xy 152.309 126.9375) + (xy 152.290694 126.981694) + (xy 152.2465 127) + (xy 145.2535 127) + (xy 145.209306 126.981694) + (xy 145.191 126.9375) + (xy 145.191 126.355003) + (xy 145.209306 126.310809) + (xy 146.087788 125.432327) + (xy 146.131982 125.414021) + (xy 146.15062 125.416865) + (xy 146.176696 125.425012) + (xy 146.176699 125.425012) + (xy 146.180948 125.42634) + (xy 146.230069 125.427241) + (xy 146.238683 125.427999) + (xy 146.24514 125.429022) + (xy 146.245144 125.429022) + (xy 146.25 125.429791) + (xy 146.256947 125.42869) + (xy 146.267853 125.427933) + (xy 146.303383 125.428584) + (xy 146.363532 125.412185) + (xy 146.37019 125.410755) + (xy 146.372147 125.410445) + (xy 146.382813 125.408756) + (xy 146.387196 125.406522) + (xy 146.391875 125.405002) + (xy 146.391878 125.40501) + (xy 146.396727 125.403136) + (xy 146.421527 125.396375) + (xy 146.426521 125.393309) + (xy 146.489709 125.354511) + (xy 146.494037 125.352085) + (xy 146.49824 125.349944) + (xy 146.498248 125.349938) + (xy 146.502625 125.347708) + (xy 146.505427 125.344906) + (xy 146.506264 125.344346) + (xy 146.525881 125.332301) + (xy 146.608058 125.241513) + (xy 146.661451 125.131311) + (xy 146.663317 125.120224) + (xy 146.681367 125.012928) + (xy 146.681367 125.012927) + (xy 146.681767 125.010552) + (xy 146.681896 125) + (xy 146.664536 124.878781) + (xy 146.613852 124.767307) + (xy 146.599199 124.750302) + (xy 146.597708 124.747375) + (xy 146.5919 124.741567) + (xy 146.588746 124.73817) + (xy 146.536826 124.677914) + (xy 146.533918 124.674539) + (xy 146.513741 124.661461) + (xy 146.510155 124.658559) + (xy 146.510081 124.658661) + (xy 146.506106 124.655773) + (xy 146.502625 124.652292) + (xy 146.491343 124.646543) + (xy 146.485736 124.643309) + (xy 146.434893 124.610354) + (xy 146.43489 124.610353) + (xy 146.43116 124.607935) + (xy 146.426901 124.606661) + (xy 146.426898 124.60666) + (xy 146.408345 124.601112) + (xy 146.398839 124.598269) + (xy 146.388377 124.594079) + (xy 146.382813 124.591244) + (xy 146.371067 124.589384) + (xy 146.362951 124.587536) + (xy 146.313838 124.572848) + (xy 146.269496 124.572577) + (xy 146.260103 124.571809) + (xy 146.254857 124.570978) + (xy 146.254856 124.570978) + (xy 146.25 124.570209) + (xy 146.241373 124.571576) + (xy 146.23122 124.572344) + (xy 146.212836 124.572231) + (xy 146.195838 124.572127) + (xy 146.195836 124.572127) + (xy 146.191385 124.5721) + (xy 146.137011 124.587641) + (xy 146.129623 124.589275) + (xy 146.117187 124.591244) + (xy 146.112804 124.593477) + (xy 146.11187 124.593781) + (xy 146.102155 124.597603) + (xy 146.077929 124.604526) + (xy 146.077927 124.604527) + (xy 146.073644 124.605751) + (xy 146.014119 124.643309) + (xy 146.012819 124.644129) + (xy 146.007842 124.646959) + (xy 146.001757 124.650059) + (xy 146.001756 124.65006) + (xy 145.997375 124.652292) + (xy 145.993897 124.65577) + (xy 145.992445 124.656825) + (xy 145.989058 124.65912) + (xy 145.97008 124.671095) + (xy 145.967137 124.674427) + (xy 145.967135 124.674429) + (xy 145.907156 124.742342) + (xy 145.906032 124.743538) + (xy 145.905775 124.743892) + (xy 145.905554 124.744113) + (xy 145.905405 124.744204) + (xy 145.904504 124.745163) + (xy 145.902292 124.747375) + (xy 145.901509 124.746592) + (xy 145.900362 124.747296) + (xy 145.901721 124.748496) + (xy 145.889018 124.762879) + (xy 145.887127 124.766907) + (xy 145.838868 124.869695) + (xy 145.838867 124.869698) + (xy 145.836976 124.873726) + (xy 145.818136 124.994724) + (xy 145.818713 124.999137) + (xy 145.818713 124.999138) + (xy 145.823366 125.034716) + (xy 145.833437 125.111726) + (xy 145.83346 125.111905) + (xy 145.82104 125.158099) + (xy 145.815682 125.164203) + (xy 144.895513 126.084372) + (xy 144.889439 126.088677) + (xy 144.889895 126.08925) + (xy 144.884387 126.093631) + (xy 144.878042 126.096678) + (xy 144.873646 126.102175) + (xy 144.859582 126.119761) + (xy 144.854965 126.12492) + (xy 144.849716 126.130169) + (xy 144.845943 126.136172) + (xy 144.841838 126.141948) + (xy 144.823617 126.164733) + (xy 144.82204 126.171593) + (xy 144.820222 126.175353) + (xy 144.818844 126.179289) + (xy 144.815098 126.185248) + (xy 144.814307 126.192242) + (xy 144.814307 126.192243) + (xy 144.811821 126.214236) + (xy 144.810629 126.221213) + (xy 144.809 126.228297) + (xy 144.809 126.235671) + (xy 144.808604 126.242692) + (xy 144.805309 126.271838) + (xy 144.80763 126.278483) + (xy 144.808414 126.285477) + (xy 144.807736 126.285553) + (xy 144.809 126.293005) + (xy 144.809 126.9375) + (xy 144.790694 126.981694) + (xy 144.7465 127) + (xy 142.7535 127) + (xy 142.709306 126.981694) + (xy 142.691 126.9375) + (xy 142.691 126.355003) + (xy 142.709306 126.310809) + (xy 143.587788 125.432327) + (xy 143.631982 125.414021) + (xy 143.65062 125.416865) + (xy 143.676696 125.425012) + (xy 143.676699 125.425012) + (xy 143.680948 125.42634) + (xy 143.730069 125.427241) + (xy 143.738683 125.427999) + (xy 143.74514 125.429022) + (xy 143.745144 125.429022) + (xy 143.75 125.429791) + (xy 143.756947 125.42869) + (xy 143.767853 125.427933) + (xy 143.803383 125.428584) + (xy 143.863532 125.412185) + (xy 143.87019 125.410755) + (xy 143.872147 125.410445) + (xy 143.882813 125.408756) + (xy 143.887196 125.406522) + (xy 143.891875 125.405002) + (xy 143.891878 125.40501) + (xy 143.896727 125.403136) + (xy 143.921527 125.396375) + (xy 143.926521 125.393309) + (xy 143.989709 125.354511) + (xy 143.994037 125.352085) + (xy 143.99824 125.349944) + (xy 143.998248 125.349938) + (xy 144.002625 125.347708) + (xy 144.005427 125.344906) + (xy 144.006264 125.344346) + (xy 144.025881 125.332301) + (xy 144.108058 125.241513) + (xy 144.161451 125.131311) + (xy 144.163317 125.120224) + (xy 144.181367 125.012928) + (xy 144.181367 125.012927) + (xy 144.181767 125.010552) + (xy 144.181896 125) + (xy 144.164536 124.878781) + (xy 144.113852 124.767307) + (xy 144.099199 124.750302) + (xy 144.097708 124.747375) + (xy 144.0919 124.741567) + (xy 144.088746 124.73817) + (xy 144.036826 124.677914) + (xy 144.033918 124.674539) + (xy 144.013741 124.661461) + (xy 144.010155 124.658559) + (xy 144.010081 124.658661) + (xy 144.006106 124.655773) + (xy 144.002625 124.652292) + (xy 143.991343 124.646543) + (xy 143.985736 124.643309) + (xy 143.934893 124.610354) + (xy 143.93489 124.610353) + (xy 143.93116 124.607935) + (xy 143.926901 124.606661) + (xy 143.926898 124.60666) + (xy 143.908345 124.601112) + (xy 143.898839 124.598269) + (xy 143.888377 124.594079) + (xy 143.882813 124.591244) + (xy 143.871067 124.589384) + (xy 143.862951 124.587536) + (xy 143.813838 124.572848) + (xy 143.769496 124.572577) + (xy 143.760103 124.571809) + (xy 143.754857 124.570978) + (xy 143.754856 124.570978) + (xy 143.75 124.570209) + (xy 143.741373 124.571576) + (xy 143.73122 124.572344) + (xy 143.712836 124.572231) + (xy 143.695838 124.572127) + (xy 143.695836 124.572127) + (xy 143.691385 124.5721) + (xy 143.637011 124.587641) + (xy 143.629623 124.589275) + (xy 143.617187 124.591244) + (xy 143.612804 124.593477) + (xy 143.61187 124.593781) + (xy 143.602155 124.597603) + (xy 143.577929 124.604526) + (xy 143.577927 124.604527) + (xy 143.573644 124.605751) + (xy 143.514119 124.643309) + (xy 143.512819 124.644129) + (xy 143.507842 124.646959) + (xy 143.501757 124.650059) + (xy 143.501756 124.65006) + (xy 143.497375 124.652292) + (xy 143.493897 124.65577) + (xy 143.492445 124.656825) + (xy 143.489058 124.65912) + (xy 143.47008 124.671095) + (xy 143.467137 124.674427) + (xy 143.467135 124.674429) + (xy 143.407156 124.742342) + (xy 143.406032 124.743538) + (xy 143.405775 124.743892) + (xy 143.405554 124.744113) + (xy 143.405405 124.744204) + (xy 143.404504 124.745163) + (xy 143.402292 124.747375) + (xy 143.401509 124.746592) + (xy 143.400362 124.747296) + (xy 143.401721 124.748496) + (xy 143.389018 124.762879) + (xy 143.387127 124.766907) + (xy 143.338868 124.869695) + (xy 143.338867 124.869698) + (xy 143.336976 124.873726) + (xy 143.318136 124.994724) + (xy 143.318713 124.999137) + (xy 143.318713 124.999138) + (xy 143.323366 125.034716) + (xy 143.333437 125.111726) + (xy 143.33346 125.111905) + (xy 143.32104 125.158099) + (xy 143.315682 125.164203) + (xy 142.395513 126.084372) + (xy 142.389439 126.088677) + (xy 142.389895 126.08925) + (xy 142.384387 126.093631) + (xy 142.378042 126.096678) + (xy 142.373646 126.102175) + (xy 142.359582 126.119761) + (xy 142.354965 126.12492) + (xy 142.349716 126.130169) + (xy 142.345943 126.136172) + (xy 142.341838 126.141948) + (xy 142.323617 126.164733) + (xy 142.32204 126.171593) + (xy 142.320222 126.175353) + (xy 142.318844 126.179289) + (xy 142.315098 126.185248) + (xy 142.314307 126.192242) + (xy 142.314307 126.192243) + (xy 142.311821 126.214236) + (xy 142.310629 126.221213) + (xy 142.309 126.228297) + (xy 142.309 126.235671) + (xy 142.308604 126.242692) + (xy 142.305309 126.271838) + (xy 142.30763 126.278483) + (xy 142.308414 126.285477) + (xy 142.307736 126.285553) + (xy 142.309 126.293005) + (xy 142.309 126.9375) + (xy 142.290694 126.981694) + (xy 142.2465 127) + (xy 140.444 127) + (xy 140.399806 126.981694) + (xy 140.3815 126.9375) + (xy 140.3815 125.957472) + (xy 140.387754 125.930221) + (xy 140.407205 125.890074) + (xy 140.411451 125.881311) + (xy 140.413317 125.870224) + (xy 140.431367 125.762928) + (xy 140.431767 125.760552) + (xy 140.431896 125.75) + (xy 140.414536 125.628781) + (xy 140.387105 125.568449) + (xy 140.3815 125.542581) + (xy 140.3815 120.694) + (xy 140.399806 120.649806) + (xy 140.444 120.6315) + (xy 154.31609 120.6315) + ) + ) + ) + (zone locked (net 0) (net_name "") (layers F&B.Cu) (tstamp 7c14ad88-6d4c-45cf-96de-dc5253554c00) (hatch edge 0.508) + (connect_pads (clearance 0)) + (min_thickness 0.254) + (keepout (tracks allowed) (vias allowed) (pads allowed ) (copperpour not_allowed) (footprints allowed)) + (fill (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 189.55 126.5) + (xy 187.6 126.5) + (xy 187.6 124.8) + (xy 189.55 124.8) + ) + ) + ) + (zone locked (net 0) (net_name "") (layers F&B.Cu) (tstamp d02e0d9c-50dc-433a-a1ba-01deecfeaae1) (hatch edge 0.508) + (connect_pads (clearance 0)) + (min_thickness 0.254) + (keepout (tracks allowed) (vias allowed) (pads allowed ) (copperpour not_allowed) (footprints allowed)) + (fill (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 112.399999 126.498958) + (xy 110.449999 126.498958) + (xy 110.45 124.8) + (xy 112.4 124.8) + ) + ) + ) +) diff --git a/hw/pcb/sc64v2.kicad_pro b/hw/pcb/sc64v2.kicad_pro new file mode 100644 index 0000000..4969e6a --- /dev/null +++ b/hw/pcb/sc64v2.kicad_pro @@ -0,0 +1,435 @@ +{ + "board": { + "design_settings": { + "defaults": { + "board_outline_line_width": 0.09999999999999999, + "copper_line_width": 0.19999999999999998, + "copper_text_italic": false, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "copper_text_upright": false, + "courtyard_line_width": 0.049999999999999996, + "dimension_precision": 4, + "dimension_units": 3, + "dimensions": { + "arrow_length": 1270000, + "extension_offset": 500000, + "keep_text_aligned": true, + "suppress_zeroes": false, + "text_position": 0, + "units_format": 1 + }, + "fab_line_width": 0.09999999999999999, + "fab_text_italic": false, + "fab_text_size_h": 1.0, + "fab_text_size_v": 1.0, + "fab_text_thickness": 0.15, + "fab_text_upright": false, + "other_line_width": 0.15, + "other_text_italic": false, + "other_text_size_h": 1.0, + "other_text_size_v": 1.0, + "other_text_thickness": 0.15, + "other_text_upright": false, + "pads": { + "drill": 0.762, + "height": 1.524, + "width": 1.524 + }, + "silk_line_width": 0.15, + "silk_text_italic": false, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15, + "silk_text_upright": false, + "zones": { + "45_degree_only": false, + "min_clearance": 0.127 + } + }, + "diff_pair_dimensions": [ + { + "gap": 0.0, + "via_gap": 0.0, + "width": 0.0 + } + ], + "drc_exclusions": [], + "meta": { + "version": 2 + }, + "rule_severities": { + "annular_width": "error", + "clearance": "error", + "copper_edge_clearance": "error", + "courtyards_overlap": "error", + "diff_pair_gap_out_of_range": "error", + "diff_pair_uncoupled_length_too_long": "error", + "drill_out_of_range": "error", + "duplicate_footprints": "warning", + "extra_footprint": "warning", + "footprint_type_mismatch": "error", + "hole_clearance": "error", + "hole_near_hole": "error", + "invalid_outline": "error", + "item_on_disabled_layer": "error", + "items_not_allowed": "error", + "length_out_of_range": "error", + "malformed_courtyard": "error", + "microvia_drill_out_of_range": "error", + "missing_courtyard": "ignore", + "missing_footprint": "warning", + "net_conflict": "warning", + "npth_inside_courtyard": "ignore", + "padstack": "error", + "pth_inside_courtyard": "ignore", + "shorting_items": "error", + "silk_over_copper": "warning", + "silk_overlap": "warning", + "skew_out_of_range": "error", + "through_hole_pad_without_hole": "error", + "too_many_vias": "error", + "track_dangling": "warning", + "track_width": "error", + "tracks_crossing": "error", + "unconnected_items": "error", + "unresolved_variable": "error", + "via_dangling": "warning", + "zone_has_empty_net": "error", + "zones_intersect": "error" + }, + "rules": { + "allow_blind_buried_vias": false, + "allow_microvias": false, + "max_error": 0.005, + "min_clearance": 0.127, + "min_copper_edge_clearance": 0.19999999999999998, + "min_hole_clearance": 0.254, + "min_hole_to_hole": 0.5, + "min_microvia_diameter": 0.19999999999999998, + "min_microvia_drill": 0.09999999999999999, + "min_silk_clearance": 0.0, + "min_through_hole_diameter": 0.3, + "min_track_width": 0.127, + "min_via_annular_width": 0.13, + "min_via_diameter": 0.6, + "solder_mask_clearance": 0.0, + "solder_mask_min_width": 0.0, + "use_height_for_length_calcs": true + }, + "track_widths": [ + 0.0, + 0.508, + 0.762 + ], + "via_dimensions": [ + { + "diameter": 0.0, + "drill": 0.0 + } + ], + "zones_allow_external_fillets": false, + "zones_use_no_outline": true + }, + "layer_presets": [] + }, + "boards": [], + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_label_syntax": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "similar_labels": "warning", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "sc64v2.kicad_pro", + "version": 1 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12.0, + "clearance": 0.127, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 0.127, + "via_diameter": 0.6, + "via_drill": 0.3, + "wire_width": 6.0 + } + ], + "meta": { + "version": 2 + }, + "net_colors": null + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "specctra_dsn": "", + "step": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "drawing": { + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.375, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.15 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "ngspice": { + "fix_include_paths": true, + "fix_passive_vals": false, + "meta": { + "version": 0 + }, + "model_mode": 0, + "workbook_filename": "" + }, + "page_layout_descr_file": "", + "plot_directory": "", + "spice_adjust_passive_values": false, + "spice_external_command": "spice \"%I\"", + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [ + [ + "e63e39d7-6ac0-4ffd-8aa3-1841a4541b55", + "" + ] + ], + "text_variables": {} +} diff --git a/hw/pcb/sc64v2.kicad_sch b/hw/pcb/sc64v2.kicad_sch new file mode 100644 index 0000000..21e1698 --- /dev/null +++ b/hw/pcb/sc64v2.kicad_sch @@ -0,0 +1,11754 @@ +(kicad_sch (version 20211123) (generator eeschema) + + (uuid e63e39d7-6ac0-4ffd-8aa3-1841a4541b55) + + (paper "A2") + + (title_block + (title "SC64") + (date "2022-05-15") + (rev "2.0") + (company "Polprzewodnikowy") + ) + + (lib_symbols + (symbol "Connector:Conn_01x03_Male" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Conn_01x03_Male" (id 1) (at 0 -5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "connector" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Conn_01x03_Male_1_1" + (polyline + (pts + (xy 1.27 -2.54) + (xy 0.8636 -2.54) + ) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.27 0) + (xy 0.8636 0) + ) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.27 2.54) + (xy 0.8636 2.54) + ) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 0.8636 -2.413) (end 0 -2.667) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start 0.8636 0.127) (end 0 -0.127) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start 0.8636 2.667) (end 0 2.413) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (pin passive line (at 5.08 2.54 180) (length 3.81) + (name "Pin_1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 5.08 0 180) (length 3.81) + (name "Pin_2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 5.08 -2.54 180) (length 3.81) + (name "Pin_3" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector:Micro_SD_Card_Det" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at -16.51 17.78 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Micro_SD_Card_Det" (id 1) (at 16.51 17.78 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "" (id 2) (at 52.07 17.78 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "https://www.hirose.com/product/en/download_file/key_name/DM3/category/Catalog/doc_file_id/49662/?file_category_id=4&item_id=195&is_series=1" (id 3) (at 0 2.54 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "connector SD microsd" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Micro SD Card Socket with card detection pins" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "microSD*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Micro_SD_Card_Det_0_1" + (rectangle (start -7.62 -6.985) (end -5.08 -8.255) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 -4.445) (end -5.08 -5.715) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 -1.905) (end -5.08 -3.175) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 0.635) (end -5.08 -0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 3.175) (end -5.08 1.905) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 5.715) (end -5.08 4.445) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 8.255) (end -5.08 6.985) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 10.795) (end -5.08 9.525) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (polyline + (pts + (xy 16.51 15.24) + (xy 16.51 16.51) + (xy -19.05 16.51) + (xy -19.05 -16.51) + (xy 16.51 -16.51) + (xy 16.51 -8.89) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -8.89 -8.89) + (xy -8.89 11.43) + (xy -1.27 11.43) + (xy 2.54 15.24) + (xy 3.81 15.24) + (xy 3.81 13.97) + (xy 6.35 13.97) + (xy 7.62 15.24) + (xy 20.32 15.24) + (xy 20.32 -8.89) + (xy -8.89 -8.89) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + ) + (symbol "Micro_SD_Card_Det_1_1" + (pin bidirectional line (at -22.86 10.16 0) (length 3.81) + (name "DAT2" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -22.86 -10.16 0) (length 3.81) + (name "DET_A" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 20.32 -12.7 180) (length 3.81) + (name "SHIELD" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -22.86 7.62 0) (length 3.81) + (name "DAT3/CD" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 5.08 0) (length 3.81) + (name "CMD" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -22.86 2.54 0) (length 3.81) + (name "VDD" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 0 0) (length 3.81) + (name "CLK" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -22.86 -2.54 0) (length 3.81) + (name "VSS" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -22.86 -5.08 0) (length 3.81) + (name "DAT0" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -22.86 -7.62 0) (length 3.81) + (name "DAT1" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -22.86 -12.7 0) (length 3.81) + (name "DET_B" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector:TestPoint" (pin_numbers hide) (pin_names (offset 0.762) hide) (in_bom yes) (on_board yes) + (property "Reference" "TP" (id 0) (at 0 6.858 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "TestPoint" (id 1) (at 0 5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 5.08 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 5.08 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "test point tp" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "test point" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Pin* Test*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "TestPoint_0_1" + (circle (center 0 3.302) (radius 0.762) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "TestPoint_1_1" + (pin passive line (at 0 0 90) (length 2.54) + (name "1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector:USB_C_Receptacle_USB2.0" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at -10.16 19.05 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "USB_C_Receptacle_USB2.0" (id 1) (at 19.05 19.05 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "" (id 2) (at 3.81 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "https://www.usb.org/sites/default/files/documents/usb_type-c.zip" (id 3) (at 3.81 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "usb universal serial bus type-C USB2.0" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "USB 2.0-only Type-C Receptacle connector" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "USB*C*Receptacle*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "USB_C_Receptacle_USB2.0_0_0" + (rectangle (start -0.254 -17.78) (end 0.254 -16.764) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 10.16 -14.986) (end 9.144 -15.494) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 10.16 -12.446) (end 9.144 -12.954) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 10.16 -4.826) (end 9.144 -5.334) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 10.16 -2.286) (end 9.144 -2.794) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 10.16 0.254) (end 9.144 -0.254) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 10.16 2.794) (end 9.144 2.286) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 10.16 7.874) (end 9.144 7.366) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 10.16 10.414) (end 9.144 9.906) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 10.16 15.494) (end 9.144 14.986) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "USB_C_Receptacle_USB2.0_0_1" + (rectangle (start -10.16 17.78) (end 10.16 -17.78) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (arc (start -8.89 -3.81) (mid -6.985 -5.715) (end -5.08 -3.81) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (arc (start -7.62 -3.81) (mid -6.985 -4.445) (end -6.35 -3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (arc (start -7.62 -3.81) (mid -6.985 -4.445) (end -6.35 -3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -7.62 -3.81) (end -6.35 3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (arc (start -6.35 3.81) (mid -6.985 4.445) (end -7.62 3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (arc (start -6.35 3.81) (mid -6.985 4.445) (end -7.62 3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (arc (start -5.08 3.81) (mid -6.985 5.715) (end -8.89 3.81) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center -2.54 1.143) (radius 0.635) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (circle (center 0 -5.842) (radius 1.27) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (polyline + (pts + (xy -8.89 -3.81) + (xy -8.89 3.81) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -5.08 3.81) + (xy -5.08 -3.81) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 -5.842) + (xy 0 4.318) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 -3.302) + (xy -2.54 -0.762) + (xy -2.54 0.508) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 -2.032) + (xy 2.54 0.508) + (xy 2.54 1.778) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.27 4.318) + (xy 0 6.858) + (xy 1.27 4.318) + (xy -1.27 4.318) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start 1.905 1.778) (end 3.175 3.048) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + ) + (symbol "USB_C_Receptacle_USB2.0_1_1" + (pin passive line (at 0 -22.86 90) (length 5.08) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "A1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -22.86 90) (length 5.08) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "A12" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 15.24 15.24 180) (length 5.08) + (name "VBUS" (effects (font (size 1.27 1.27)))) + (number "A4" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 15.24 10.16 180) (length 5.08) + (name "CC1" (effects (font (size 1.27 1.27)))) + (number "A5" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 15.24 -2.54 180) (length 5.08) + (name "D+" (effects (font (size 1.27 1.27)))) + (number "A6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 15.24 2.54 180) (length 5.08) + (name "D-" (effects (font (size 1.27 1.27)))) + (number "A7" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 15.24 -12.7 180) (length 5.08) + (name "SBU1" (effects (font (size 1.27 1.27)))) + (number "A8" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 15.24 15.24 180) (length 5.08) hide + (name "VBUS" (effects (font (size 1.27 1.27)))) + (number "A9" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -22.86 90) (length 5.08) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "B1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -22.86 90) (length 5.08) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "B12" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 15.24 15.24 180) (length 5.08) hide + (name "VBUS" (effects (font (size 1.27 1.27)))) + (number "B4" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 15.24 7.62 180) (length 5.08) + (name "CC2" (effects (font (size 1.27 1.27)))) + (number "B5" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 15.24 -5.08 180) (length 5.08) + (name "D+" (effects (font (size 1.27 1.27)))) + (number "B6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 15.24 0 180) (length 5.08) + (name "D-" (effects (font (size 1.27 1.27)))) + (number "B7" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 15.24 -15.24 180) (length 5.08) + (name "SBU2" (effects (font (size 1.27 1.27)))) + (number "B8" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 15.24 15.24 180) (length 5.08) hide + (name "VBUS" (effects (font (size 1.27 1.27)))) + (number "B9" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 -22.86 90) (length 5.08) + (name "SHIELD" (effects (font (size 1.27 1.27)))) + (number "S1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:Battery_Cell" (pin_numbers hide) (pin_names (offset 0) hide) (in_bom yes) (on_board yes) + (property "Reference" "BT" (id 0) (at 2.54 2.54 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "Battery_Cell" (id 1) (at 2.54 0 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 0 1.524 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 1.524 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "battery cell" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Single-cell battery" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Battery_Cell_0_1" + (rectangle (start -2.286 1.778) (end 2.286 1.524) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (rectangle (start -1.5748 1.1938) (end 1.4732 0.6858) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (polyline + (pts + (xy 0 0.762) + (xy 0 0) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 1.778) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.508 3.429) + (xy 1.524 3.429) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.016 3.937) + (xy 1.016 2.921) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "Battery_Cell_1_1" + (pin passive line (at 0 5.08 270) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -2.54 90) (length 2.54) + (name "-" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:C" (pin_numbers hide) (pin_names (offset 0.254)) (in_bom yes) (on_board yes) + (property "Reference" "C" (id 0) (at 0.635 2.54 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "C" (id 1) (at 0.635 -2.54 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 0.9652 -3.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "cap capacitor" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Unpolarized capacitor" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "C_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "C_0_1" + (polyline + (pts + (xy -2.032 -0.762) + (xy 2.032 -0.762) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -2.032 0.762) + (xy 2.032 0.762) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "C_1_1" + (pin passive line (at 0 3.81 270) (length 2.794) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -3.81 90) (length 2.794) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:Crystal" (pin_numbers hide) (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "Y" (id 0) (at 0 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Crystal" (id 1) (at 0 -3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "quartz ceramic resonator oscillator" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Two pin crystal" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Crystal*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Crystal_0_1" + (rectangle (start -1.143 2.54) (end 1.143 -2.54) + (stroke (width 0.3048) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -2.54 0) + (xy -1.905 0) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.905 -1.27) + (xy -1.905 1.27) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.905 -1.27) + (xy 1.905 1.27) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 0) + (xy 1.905 0) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "Crystal_1_1" + (pin passive line (at -3.81 0 0) (length 1.27) + (name "1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 3.81 0 180) (length 1.27) + (name "2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:L" (pin_numbers hide) (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "L" (id 0) (at -1.27 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "L" (id 1) (at 1.905 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "inductor choke coil reactor magnetic" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Inductor" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Choke_* *Coil* Inductor_* L_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "L_0_1" + (arc (start 0 -2.54) (mid 0.635 -1.905) (end 0 -1.27) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (arc (start 0 -1.27) (mid 0.635 -0.635) (end 0 0) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (arc (start 0 0) (mid 0.635 0.635) (end 0 1.27) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (arc (start 0 1.27) (mid 0.635 1.905) (end 0 2.54) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "L_1_1" + (pin passive line (at 0 3.81 270) (length 1.27) + (name "1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -3.81 90) (length 1.27) + (name "2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:LED" (pin_numbers hide) (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "D" (id 0) (at 0 2.54 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "LED" (id 1) (at 0 -2.54 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "LED diode" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Light emitting diode" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "LED* LED_SMD:* LED_THT:*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "LED_0_1" + (polyline + (pts + (xy -1.27 -1.27) + (xy -1.27 1.27) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.27 0) + (xy 1.27 0) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.27 -1.27) + (xy 1.27 1.27) + (xy -1.27 0) + (xy 1.27 -1.27) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -3.048 -0.762) + (xy -4.572 -2.286) + (xy -3.81 -2.286) + (xy -4.572 -2.286) + (xy -4.572 -1.524) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.778 -0.762) + (xy -3.302 -2.286) + (xy -2.54 -2.286) + (xy -3.302 -2.286) + (xy -3.302 -1.524) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "LED_1_1" + (pin passive line (at -3.81 0 0) (length 2.54) + (name "K" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 3.81 0 180) (length 2.54) + (name "A" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:R" (pin_numbers hide) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "R" (id 0) (at 2.032 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "R" (id 1) (at 0 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at -1.778 0 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "R res resistor" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Resistor" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "R_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "R_0_1" + (rectangle (start -1.016 -2.54) (end 1.016 2.54) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "R_1_1" + (pin passive line (at 0 3.81 270) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -3.81 90) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Interface_USB:FT232H" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at -19.05 35.56 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "FT232H" (id 1) (at 12.7 35.56 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232H.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "FTDI USB Single UART FIFO" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Hi Speed Single Channel USB UART/FIFO, LQFP/QFN-48" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "QFN*1EP*8x8mm*P0.5mm* LQFP*7x7mm*P0.5mm*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "FT232H_0_1" + (rectangle (start -19.05 34.29) (end 19.05 -34.29) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + ) + (symbol "FT232H_1_1" + (pin input line (at -22.86 -12.7 0) (length 3.81) + (name "XCSI" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -2.54 -38.1 90) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 -38.1 90) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 38.1 270) (length 3.81) + (name "VCCIO" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 30.48 180) (length 3.81) + (name "ADBUS0" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 27.94 180) (length 3.81) + (name "ADBUS1" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 25.4 180) (length 3.81) + (name "ADBUS2" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 22.86 180) (length 3.81) + (name "ADBUS3" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 20.32 180) (length 3.81) + (name "ADBUS4" (effects (font (size 1.27 1.27)))) + (number "17" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 17.78 180) (length 3.81) + (name "ADBUS5" (effects (font (size 1.27 1.27)))) + (number "18" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 15.24 180) (length 3.81) + (name "ADBUS6" (effects (font (size 1.27 1.27)))) + (number "19" (effects (font (size 1.27 1.27)))) + ) + (pin output line (at -22.86 -22.86 0) (length 3.81) + (name "XCSO" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 12.7 180) (length 3.81) + (name "ADBUS7" (effects (font (size 1.27 1.27)))) + (number "20" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 7.62 180) (length 3.81) + (name "ACBUS0" (effects (font (size 1.27 1.27)))) + (number "21" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 2.54 -38.1 90) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "22" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 5.08 -38.1 90) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "23" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 2.54 38.1 270) (length 3.81) + (name "VCCIO" (effects (font (size 1.27 1.27)))) + (number "24" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 5.08 180) (length 3.81) + (name "ACBUS1" (effects (font (size 1.27 1.27)))) + (number "25" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 2.54 180) (length 3.81) + (name "ACBUS2" (effects (font (size 1.27 1.27)))) + (number "26" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 0 180) (length 3.81) + (name "ACBUS3" (effects (font (size 1.27 1.27)))) + (number "27" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 -2.54 180) (length 3.81) + (name "ACBUS4" (effects (font (size 1.27 1.27)))) + (number "28" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 -5.08 180) (length 3.81) + (name "ACBUS5" (effects (font (size 1.27 1.27)))) + (number "29" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -5.08 38.1 270) (length 3.81) + (name "VPHY" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 -7.62 180) (length 3.81) + (name "ACBUS6" (effects (font (size 1.27 1.27)))) + (number "30" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 -10.16 180) (length 3.81) + (name "ACBUS7" (effects (font (size 1.27 1.27)))) + (number "31" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 -12.7 180) (length 3.81) + (name "ACBUS8" (effects (font (size 1.27 1.27)))) + (number "32" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 22.86 -15.24 180) (length 3.81) + (name "ACBUS9" (effects (font (size 1.27 1.27)))) + (number "33" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 7.62 0) (length 3.81) + (name "~{RESET}" (effects (font (size 1.27 1.27)))) + (number "34" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 7.62 -38.1 90) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "35" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 10.16 -38.1 90) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "36" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -22.86 20.32 0) (length 3.81) + (name "VCCA" (effects (font (size 1.27 1.27)))) + (number "37" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -22.86 22.86 0) (length 3.81) + (name "VCCCORE" (effects (font (size 1.27 1.27)))) + (number "38" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -22.86 25.4 0) (length 3.81) + (name "VCCD" (effects (font (size 1.27 1.27)))) + (number "39" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -10.16 -38.1 90) (length 3.81) + (name "AGND" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -22.86 30.48 0) (length 3.81) + (name "VREGIN" (effects (font (size 1.27 1.27)))) + (number "40" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -5.08 -38.1 90) (length 3.81) + (name "AGND" (effects (font (size 1.27 1.27)))) + (number "41" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 -27.94 0) (length 3.81) + (name "TEST" (effects (font (size 1.27 1.27)))) + (number "42" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -22.86 -7.62 0) (length 3.81) + (name "EEDATA" (effects (font (size 1.27 1.27)))) + (number "43" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 -5.08 0) (length 3.81) + (name "EECLK" (effects (font (size 1.27 1.27)))) + (number "44" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 -2.54 0) (length 3.81) + (name "EECS" (effects (font (size 1.27 1.27)))) + (number "45" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 5.08 38.1 270) (length 3.81) + (name "VCCIO" (effects (font (size 1.27 1.27)))) + (number "46" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 12.7 -38.1 90) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "47" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 15.24 -38.1 90) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "48" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -22.86 2.54 0) (length 3.81) + (name "REF" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -22.86 15.24 0) (length 3.81) + (name "DM" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -22.86 12.7 0) (length 3.81) + (name "DP" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -2.54 38.1 270) (length 3.81) + (name "VPLL" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -7.62 -38.1 90) (length 3.81) + (name "AGND" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Memory_EEPROM:93AAxxBT-xOT" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at -7.62 6.35 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "93AAxxBT-xOT" (id 1) (at 1.27 6.35 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_TO_SOT_SMD:SOT-23-6" (id 2) (at 1.27 8.89 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://ww1.microchip.com/downloads/en/DeviceDoc/20001749K.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "EEPROM memory Microwire" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Serial EEPROM, 93 Series, 16-bit word, 1.8V, SOT-23" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "SOT?23*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "93AAxxBT-xOT_1_1" + (rectangle (start -7.62 5.08) (end 7.62 -5.08) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin tri_state line (at 10.16 -2.54 180) (length 2.54) + (name "DO" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 -7.62 90) (length 2.54) + (name "Vss" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at 10.16 0 180) (length 2.54) + (name "DI" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at 10.16 2.54 180) (length 2.54) + (name "CLK" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -10.16 2.54 0) (length 2.54) + (name "CS" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 7.62 270) (length 2.54) + (name "Vсс" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Memory_Flash:W25Q128JVS" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at -8.89 8.89 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "W25Q128JVS" (id 1) (at 7.62 8.89 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Package_SO:SOIC-8_5.23x5.23mm_P1.27mm" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.winbond.com/resource-files/w25q128jv_dtr%20revc%2003272018%20plus.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "flash memory SPI QPI DTR" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "128Mb Serial Flash Memory, Standard/Dual/Quad SPI, SOIC-8" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "SOIC*5.23x5.23mm*P1.27mm*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "W25Q128JVS_0_1" + (rectangle (start -10.16 7.62) (end 10.16 -7.62) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + ) + (symbol "W25Q128JVS_1_1" + (pin input line (at -12.7 2.54 0) (length 2.54) + (name "~{CS}" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 2.54 180) (length 2.54) + (name "DO(IO1)" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 -2.54 180) (length 2.54) + (name "IO2" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 -10.16 90) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 5.08 180) (length 2.54) + (name "DI(IO0)" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -2.54 0) (length 2.54) + (name "CLK" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 -5.08 180) (length 2.54) + (name "IO3" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 10.16 270) (length 2.54) + (name "VCC" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Memory_RAM:MT48LC16M16A2TG" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at -8.89 34.29 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "MT48LC16M16A2TG" (id 1) (at 8.89 34.29 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Package_SO:TSOP-II-54_22.2x10.16mm_P0.8mm" (id 2) (at 0 -35.56 0) + (effects (font (size 1.27 1.27) italic) hide) + ) + (property "Datasheet" "https://www.micron.com/-/media/client/global/documents/products/data-sheet/dram/256mb_sdr.pdf" (id 3) (at 0 -6.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "SDRAM Synchronus DRAM PC100 PC133 256Mb 16Mbx16 MEMORY" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "256M – (16M x 16 bit) Synchronous DRAM (SDRAM), TSOP-II-54" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "TSOP?II*22.2x10.16mm*P0.8mm*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "MT48LC16M16A2TG_0_1" + (rectangle (start -10.16 33.02) (end 10.16 -33.02) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + ) + (symbol "MT48LC16M16A2TG_1_1" + (pin power_in line (at -2.54 35.56 270) (length 2.54) + (name "VDD" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 17.78 180) (length 2.54) + (name "DQ5" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 15.24 180) (length 2.54) + (name "DQ6" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -35.56 90) (length 2.54) hide + (name "VSSQ" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 12.7 180) (length 2.54) + (name "DQ7" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -2.54 35.56 270) (length 2.54) hide + (name "VDD" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -20.32 0) (length 2.54) + (name "DQML" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -25.4 0) (length 2.54) + (name "~{WE}" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -27.94 0) (length 2.54) + (name "~{CAS}" (effects (font (size 1.27 1.27)))) + (number "17" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -30.48 0) (length 2.54) + (name "~{RAS}" (effects (font (size 1.27 1.27)))) + (number "18" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -12.7 0) (length 2.54) + (name "~{CS}" (effects (font (size 1.27 1.27)))) + (number "19" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 30.48 180) (length 2.54) + (name "DQ0" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 30.48 0) (length 2.54) + (name "BA0" (effects (font (size 1.27 1.27)))) + (number "20" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 27.94 0) (length 2.54) + (name "BA1" (effects (font (size 1.27 1.27)))) + (number "21" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -2.54 0) (length 2.54) + (name "A10" (effects (font (size 1.27 1.27)))) + (number "22" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 22.86 0) (length 2.54) + (name "A0" (effects (font (size 1.27 1.27)))) + (number "23" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 20.32 0) (length 2.54) + (name "A1" (effects (font (size 1.27 1.27)))) + (number "24" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 17.78 0) (length 2.54) + (name "A2" (effects (font (size 1.27 1.27)))) + (number "25" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 15.24 0) (length 2.54) + (name "A3" (effects (font (size 1.27 1.27)))) + (number "26" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -2.54 35.56 270) (length 2.54) hide + (name "VDD" (effects (font (size 1.27 1.27)))) + (number "27" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -2.54 -35.56 90) (length 2.54) + (name "VSS" (effects (font (size 1.27 1.27)))) + (number "28" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 12.7 0) (length 2.54) + (name "A4" (effects (font (size 1.27 1.27)))) + (number "29" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 35.56 270) (length 2.54) + (name "VDDQ" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 10.16 0) (length 2.54) + (name "A5" (effects (font (size 1.27 1.27)))) + (number "30" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 7.62 0) (length 2.54) + (name "A6" (effects (font (size 1.27 1.27)))) + (number "31" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 5.08 0) (length 2.54) + (name "A7" (effects (font (size 1.27 1.27)))) + (number "32" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 2.54 0) (length 2.54) + (name "A8" (effects (font (size 1.27 1.27)))) + (number "33" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 0 0) (length 2.54) + (name "A9" (effects (font (size 1.27 1.27)))) + (number "34" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -5.08 0) (length 2.54) + (name "A11" (effects (font (size 1.27 1.27)))) + (number "35" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -7.62 0) (length 2.54) + (name "A12" (effects (font (size 1.27 1.27)))) + (number "36" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -15.24 0) (length 2.54) + (name "CKE" (effects (font (size 1.27 1.27)))) + (number "37" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -17.78 0) (length 2.54) + (name "CLK" (effects (font (size 1.27 1.27)))) + (number "38" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -12.7 -22.86 0) (length 2.54) + (name "DQMH" (effects (font (size 1.27 1.27)))) + (number "39" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 27.94 180) (length 2.54) + (name "DQ1" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin no_connect line (at 10.16 -20.32 180) (length 2.54) hide + (name "NC" (effects (font (size 1.27 1.27)))) + (number "40" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -2.54 -35.56 90) (length 2.54) hide + (name "VSS" (effects (font (size 1.27 1.27)))) + (number "41" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 10.16 180) (length 2.54) + (name "DQ8" (effects (font (size 1.27 1.27)))) + (number "42" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 35.56 270) (length 2.54) hide + (name "VDDQ" (effects (font (size 1.27 1.27)))) + (number "43" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 7.62 180) (length 2.54) + (name "DQ9" (effects (font (size 1.27 1.27)))) + (number "44" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 5.08 180) (length 2.54) + (name "DQ10" (effects (font (size 1.27 1.27)))) + (number "45" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -35.56 90) (length 2.54) hide + (name "VSSQ" (effects (font (size 1.27 1.27)))) + (number "46" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 2.54 180) (length 2.54) + (name "DQ11" (effects (font (size 1.27 1.27)))) + (number "47" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 0 180) (length 2.54) + (name "DQ12" (effects (font (size 1.27 1.27)))) + (number "48" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 35.56 270) (length 2.54) hide + (name "VDDQ" (effects (font (size 1.27 1.27)))) + (number "49" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 25.4 180) (length 2.54) + (name "DQ2" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 -2.54 180) (length 2.54) + (name "DQ13" (effects (font (size 1.27 1.27)))) + (number "50" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 -5.08 180) (length 2.54) + (name "DQ14" (effects (font (size 1.27 1.27)))) + (number "51" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -35.56 90) (length 2.54) hide + (name "VSSQ" (effects (font (size 1.27 1.27)))) + (number "52" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 -7.62 180) (length 2.54) + (name "DQ15" (effects (font (size 1.27 1.27)))) + (number "53" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -2.54 -35.56 90) (length 2.54) hide + (name "VSS" (effects (font (size 1.27 1.27)))) + (number "54" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 -35.56 90) (length 2.54) + (name "VSSQ" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 22.86 180) (length 2.54) + (name "DQ3" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 12.7 20.32 180) (length 2.54) + (name "DQ4" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 35.56 270) (length 2.54) hide + (name "VDDQ" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Oscillator:XO32" (pin_names (offset 0.254)) (in_bom yes) (on_board yes) + (property "Reference" "X" (id 0) (at -5.08 6.35 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "XO32" (id 1) (at 1.27 -6.35 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Oscillator:Oscillator_SMD_EuroQuartz_XO32-4Pin_3.2x2.5mm" (id 2) (at 17.78 -8.89 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://cdn-reichelt.de/documents/datenblatt/B400/XO32.pdf" (id 3) (at -2.54 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "Crystal Clock Oscillator" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "HCMOS Clock Oscillator" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Oscillator*SMD*EuroQuartz*XO32*3.2x2.5mm*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "XO32_0_1" + (rectangle (start -5.08 5.08) (end 5.08 -5.08) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy -1.27 -0.762) + (xy -1.016 -0.762) + (xy -1.016 0.762) + (xy -0.508 0.762) + (xy -0.508 -0.762) + (xy 0 -0.762) + (xy 0 0.762) + (xy 0.508 0.762) + (xy 0.508 -0.762) + (xy 0.762 -0.762) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "XO32_1_1" + (pin input line (at -7.62 0 0) (length 2.54) + (name "EN" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 -7.62 90) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin output line (at 7.62 0 180) (length 2.54) + (name "OUT" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 7.62 270) (length 2.54) + (name "V+" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Regulator_Linear:TC1262-33" (pin_names (offset 0.254)) (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at -3.81 3.175 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "TC1262-33" (id 1) (at 0 3.175 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 0 5.715 0) + (effects (font (size 1.27 1.27) italic) hide) + ) + (property "Datasheet" "http://ww1.microchip.com/downloads/en/DeviceDoc/21373C.pdf" (id 3) (at 0 -7.62 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "Voltage Regulator 3.3V 500mA Positive CMOS LDO Microchip" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "500mA Low Dropout CMOS Voltage Regulator, Fixed Output 3.3V, TO-220/SOT-223/TO-263" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "SOT?223* TO?220* TO?263*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "TC1262-33_1_1" + (rectangle (start -5.08 1.905) (end 5.08 -5.08) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin power_in line (at -7.62 0 0) (length 2.54) + (name "VI" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 -7.62 90) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at 7.62 0 180) (length 2.54) + (name "VO" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Timer_RTC:MCP7940N-xST" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at -6.35 8.89 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "MCP7940N-xST" (id 1) (at 11.43 8.89 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://ww1.microchip.com/downloads/en/DeviceDoc/20005010F.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "realtime clock RTC" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Real-Time Clock, I2C, Battery Backup, TSSOP-8" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "SOIC*3.9x4.9mm*P1.27mm* TSSOP*4.4x3mm*P0.65mm* MSOP*3x3mm*P0.65mm* DIP*W7.62mm*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "MCP7940N-xST_0_1" + (rectangle (start -7.62 7.62) (end 7.62 -7.62) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + ) + (symbol "MCP7940N-xST_1_1" + (pin input line (at 10.16 2.54 180) (length 2.54) + (name "X1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin output line (at 10.16 -2.54 180) (length 2.54) + (name "X2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 2.54 10.16 270) (length 2.54) + (name "VBAT" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 -10.16 90) (length 2.54) + (name "VSS" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -10.16 2.54 0) (length 2.54) + (name "SDA" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -10.16 5.08 0) (length 2.54) + (name "SCL" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin open_collector line (at -10.16 -2.54 0) (length 2.54) + (name "MFP" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 0 10.16 270) (length 2.54) + (name "VCC" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "power:+3V3" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (id 0) (at 0 -3.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 0 3.556 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"+3V3\"" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "+3V3_0_1" + (polyline + (pts + (xy -0.762 1.27) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 0) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 2.54) + (xy 0.762 1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "+3V3_1_1" + (pin power_in line (at 0 0 90) (length 0) hide + (name "+3V3" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "power:+5V" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (id 0) (at 0 -3.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (id 1) (at 0 3.556 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"+5V\"" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "+5V_0_1" + (polyline + (pts + (xy -0.762 1.27) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 0) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 2.54) + (xy 0.762 1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "+5V_1_1" + (pin power_in line (at 0 0 90) (length 0) hide + (name "+5V" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "power:GND" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (id 0) (at 0 -6.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 0 -3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"GND\" , ground" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "GND_0_1" + (polyline + (pts + (xy 0 0) + (xy 0 -1.27) + (xy 1.27 -1.27) + (xy 0 -2.54) + (xy -1.27 -1.27) + (xy 0 -1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "GND_1_1" + (pin power_in line (at 0 0 270) (length 0) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "sc64v2:LCMXO2-7000Hx-xTG144x" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at 0 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "LCMXO2-7000Hx-xTG144x" (id 1) (at 0 1.27 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Package_QFP:TQFP-144_20x20mm_P0.5mm" (id 2) (at 0 6.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at -1.27 -58.42 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_locked" "" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (symbol "LCMXO2-7000Hx-xTG144x_1_0" + (text "BANK 0" (at 0 -2.54 0) + (effects (font (size 1.27 1.27))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_1_1" + (rectangle (start -12.7 0) (end 12.7 -77.47) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin bidirectional line (at -16.51 -6.35 0) (length 3.81) + (name "PT36D/DONE" (effects (font (size 1.27 1.27)))) + (number "109" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -8.89 0) (length 3.81) + (name "PT36C/INITN" (effects (font (size 1.27 1.27)))) + (number "110" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -11.43 0) (length 3.81) + (name "PT35B" (effects (font (size 1.27 1.27)))) + (number "111" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -13.97 0) (length 3.81) + (name "PT35A" (effects (font (size 1.27 1.27)))) + (number "112" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -16.51 0) (length 3.81) + (name "PT33B" (effects (font (size 1.27 1.27)))) + (number "113" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -19.05 0) (length 3.81) + (name "PT33A" (effects (font (size 1.27 1.27)))) + (number "114" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -21.59 0) (length 3.81) + (name "PT28B" (effects (font (size 1.27 1.27)))) + (number "115" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -24.13 0) (length 3.81) + (name "PT28A" (effects (font (size 1.27 1.27)))) + (number "117" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -26.67 0) (length 3.81) + (name "PT27D/PROGRAMN" (effects (font (size 1.27 1.27)))) + (number "119" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -29.21 0) (length 3.81) + (name "PT27C/JTAGENB" (effects (font (size 1.27 1.27)))) + (number "120" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -31.75 0) (length 3.81) + (name "PT25B" (effects (font (size 1.27 1.27)))) + (number "121" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -34.29 0) (length 3.81) + (name "PT25A" (effects (font (size 1.27 1.27)))) + (number "122" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -36.83 0) (length 3.81) + (name "PT22D/SDA/PCLKC0_0" (effects (font (size 1.27 1.27)))) + (number "125" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -39.37 0) (length 3.81) + (name "PT22C/SCL/PCLKT0_0" (effects (font (size 1.27 1.27)))) + (number "126" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -41.91 0) (length 3.81) + (name "PT18B/PCLKC0_1" (effects (font (size 1.27 1.27)))) + (number "127" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -44.45 0) (length 3.81) + (name "PT18A/PCLKT0_1" (effects (font (size 1.27 1.27)))) + (number "128" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -46.99 0) (length 3.81) + (name "PT17D/TMS" (effects (font (size 1.27 1.27)))) + (number "130" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -49.53 0) (length 3.81) + (name "PT17C/TCK" (effects (font (size 1.27 1.27)))) + (number "131" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -52.07 0) (length 3.81) + (name "PT15B" (effects (font (size 1.27 1.27)))) + (number "132" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -54.61 0) (length 3.81) + (name "PT15A" (effects (font (size 1.27 1.27)))) + (number "133" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -57.15 0) (length 3.81) + (name "PT14D/TDI" (effects (font (size 1.27 1.27)))) + (number "136" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -59.69 0) (length 3.81) + (name "PT14C/TDO" (effects (font (size 1.27 1.27)))) + (number "137" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -62.23 0) (length 3.81) + (name "PT11B" (effects (font (size 1.27 1.27)))) + (number "138" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -64.77 0) (length 3.81) + (name "PT11A" (effects (font (size 1.27 1.27)))) + (number "139" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -67.31 0) (length 3.81) + (name "PT10B" (effects (font (size 1.27 1.27)))) + (number "140" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -69.85 0) (length 3.81) + (name "PT10A" (effects (font (size 1.27 1.27)))) + (number "141" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -72.39 0) (length 3.81) + (name "PT9B" (effects (font (size 1.27 1.27)))) + (number "142" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -74.93 0) (length 3.81) + (name "PT9A" (effects (font (size 1.27 1.27)))) + (number "143" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_2_0" + (text "BANK 1" (at 0 -2.54 0) + (effects (font (size 1.27 1.27))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_2_1" + (rectangle (start -12.7 0) (end 12.7 -80.01) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin bidirectional line (at -16.51 -64.77 0) (length 3.81) + (name "PR5A" (effects (font (size 1.27 1.27)))) + (number "100" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -67.31 0) (length 3.81) + (name "PR4C" (effects (font (size 1.27 1.27)))) + (number "103" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -69.85 0) (length 3.81) + (name "PR3B/R_GPLLC_IN" (effects (font (size 1.27 1.27)))) + (number "104" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -72.39 0) (length 3.81) + (name "PR3A/R_GPLLT_IN" (effects (font (size 1.27 1.27)))) + (number "105" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -74.93 0) (length 3.81) + (name "PR2B/R_GPLLC_FB" (effects (font (size 1.27 1.27)))) + (number "106" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -77.47 0) (length 3.81) + (name "PR2A/R_GPLLT_FB" (effects (font (size 1.27 1.27)))) + (number "107" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -6.35 0) (length 3.81) + (name "PR24B" (effects (font (size 1.27 1.27)))) + (number "73" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -8.89 0) (length 3.81) + (name "PR24A" (effects (font (size 1.27 1.27)))) + (number "74" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -11.43 0) (length 3.81) + (name "PR23B" (effects (font (size 1.27 1.27)))) + (number "75" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -13.97 0) (length 3.81) + (name "PR23A" (effects (font (size 1.27 1.27)))) + (number "76" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -16.51 0) (length 3.81) + (name "PR21B" (effects (font (size 1.27 1.27)))) + (number "77" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -19.05 0) (length 3.81) + (name "PR21A" (effects (font (size 1.27 1.27)))) + (number "78" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -21.59 0) (length 3.81) + (name "PR18B" (effects (font (size 1.27 1.27)))) + (number "81" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -24.13 0) (length 3.81) + (name "PR18A" (effects (font (size 1.27 1.27)))) + (number "82" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -26.67 0) (length 3.81) + (name "PR17B" (effects (font (size 1.27 1.27)))) + (number "83" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -29.21 0) (length 3.81) + (name "PR17A" (effects (font (size 1.27 1.27)))) + (number "84" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -31.75 0) (length 3.81) + (name "PR16B" (effects (font (size 1.27 1.27)))) + (number "85" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -34.29 0) (length 3.81) + (name "PR16A" (effects (font (size 1.27 1.27)))) + (number "86" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -36.83 0) (length 3.81) + (name "PR15B" (effects (font (size 1.27 1.27)))) + (number "87" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -39.37 0) (length 3.81) + (name "PR15A" (effects (font (size 1.27 1.27)))) + (number "89" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -41.91 0) (length 3.81) + (name "PR12B/PCLKC1_0" (effects (font (size 1.27 1.27)))) + (number "91" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -44.45 0) (length 3.81) + (name "PR12A/PCLKT1_0" (effects (font (size 1.27 1.27)))) + (number "92" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -46.99 0) (length 3.81) + (name "PR11B" (effects (font (size 1.27 1.27)))) + (number "93" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -49.53 0) (length 3.81) + (name "PR11A" (effects (font (size 1.27 1.27)))) + (number "94" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -52.07 0) (length 3.81) + (name "PR9B" (effects (font (size 1.27 1.27)))) + (number "95" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -54.61 0) (length 3.81) + (name "PR9A" (effects (font (size 1.27 1.27)))) + (number "96" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -57.15 0) (length 3.81) + (name "PR7B" (effects (font (size 1.27 1.27)))) + (number "97" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -59.69 0) (length 3.81) + (name "PR7A" (effects (font (size 1.27 1.27)))) + (number "98" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -62.23 0) (length 3.81) + (name "PR5B" (effects (font (size 1.27 1.27)))) + (number "99" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_3_0" + (text "BANK 2" (at 0 -2.54 0) + (effects (font (size 1.27 1.27))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_3_1" + (rectangle (start -12.7 0) (end 12.7 -80.01) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin bidirectional line (at -16.51 -6.35 0) (length 3.81) + (name "PB4A" (effects (font (size 1.27 1.27)))) + (number "38" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -8.89 0) (length 3.81) + (name "PB4B" (effects (font (size 1.27 1.27)))) + (number "39" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -11.43 0) (length 3.81) + (name "PB6A/CSSPIN" (effects (font (size 1.27 1.27)))) + (number "40" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -13.97 0) (length 3.81) + (name "PB6B" (effects (font (size 1.27 1.27)))) + (number "41" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -16.51 0) (length 3.81) + (name "PB9A" (effects (font (size 1.27 1.27)))) + (number "42" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -19.05 0) (length 3.81) + (name "PB9B" (effects (font (size 1.27 1.27)))) + (number "43" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -21.59 0) (length 3.81) + (name "PB12A/MCLK/CCLK" (effects (font (size 1.27 1.27)))) + (number "44" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -24.13 0) (length 3.81) + (name "PB12B/SO/SPISO" (effects (font (size 1.27 1.27)))) + (number "45" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -26.67 0) (length 3.81) + (name "PB13A" (effects (font (size 1.27 1.27)))) + (number "47" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -29.21 0) (length 3.81) + (name "PB13B" (effects (font (size 1.27 1.27)))) + (number "48" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -31.75 0) (length 3.81) + (name "PB16A/PCLKT2_0" (effects (font (size 1.27 1.27)))) + (number "49" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -34.29 0) (length 3.81) + (name "PB16B/PCLKC2_0" (effects (font (size 1.27 1.27)))) + (number "50" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -36.83 0) (length 3.81) + (name "PB18A" (effects (font (size 1.27 1.27)))) + (number "52" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -39.37 0) (length 3.81) + (name "PB18B" (effects (font (size 1.27 1.27)))) + (number "54" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -41.91 0) (length 3.81) + (name "PB23A/PCLKT2_1" (effects (font (size 1.27 1.27)))) + (number "55" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -44.45 0) (length 3.81) + (name "PB23B/PCLKC2_1" (effects (font (size 1.27 1.27)))) + (number "56" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -46.99 0) (length 3.81) + (name "PB26A" (effects (font (size 1.27 1.27)))) + (number "57" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -49.53 0) (length 3.81) + (name "PB26B" (effects (font (size 1.27 1.27)))) + (number "58" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -52.07 0) (length 3.81) + (name "PB29A" (effects (font (size 1.27 1.27)))) + (number "59" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -54.61 0) (length 3.81) + (name "PB29B" (effects (font (size 1.27 1.27)))) + (number "60" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -57.15 0) (length 3.81) + (name "PB31A" (effects (font (size 1.27 1.27)))) + (number "61" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -59.69 0) (length 3.81) + (name "PB31B" (effects (font (size 1.27 1.27)))) + (number "62" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -62.23 0) (length 3.81) + (name "PB31D" (effects (font (size 1.27 1.27)))) + (number "63" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -64.77 0) (length 3.81) + (name "PB35A" (effects (font (size 1.27 1.27)))) + (number "65" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -67.31 0) (length 3.81) + (name "PB35B" (effects (font (size 1.27 1.27)))) + (number "67" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -69.85 0) (length 3.81) + (name "PB37A" (effects (font (size 1.27 1.27)))) + (number "68" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -72.39 0) (length 3.81) + (name "PB37B" (effects (font (size 1.27 1.27)))) + (number "69" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -74.93 0) (length 3.81) + (name "PB38A/SN" (effects (font (size 1.27 1.27)))) + (number "70" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -77.47 0) (length 3.81) + (name "PB38B/SI/SISPI" (effects (font (size 1.27 1.27)))) + (number "71" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_4_0" + (text "BANK 3" (at 0 -2.54 0) + (effects (font (size 1.27 1.27))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_4_1" + (rectangle (start -12.7 0) (end 12.7 -29.21) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin bidirectional line (at -16.51 -6.35 0) (length 3.81) + (name "PL19A" (effects (font (size 1.27 1.27)))) + (number "25" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -8.89 0) (length 3.81) + (name "PL19B" (effects (font (size 1.27 1.27)))) + (number "26" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -11.43 0) (length 3.81) + (name "PL22A/PCLKT3_0" (effects (font (size 1.27 1.27)))) + (number "27" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -13.97 0) (length 3.81) + (name "PL22B/PCLKC3_0" (effects (font (size 1.27 1.27)))) + (number "28" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -16.51 0) (length 3.81) + (name "PL23D" (effects (font (size 1.27 1.27)))) + (number "31" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -19.05 0) (length 3.81) + (name "PL24A" (effects (font (size 1.27 1.27)))) + (number "32" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -21.59 0) (length 3.81) + (name "PL24B" (effects (font (size 1.27 1.27)))) + (number "33" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -24.13 0) (length 3.81) + (name "PL25A" (effects (font (size 1.27 1.27)))) + (number "34" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -26.67 0) (length 3.81) + (name "PL25B" (effects (font (size 1.27 1.27)))) + (number "35" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_5_0" + (text "BANK 4" (at 0 -2.54 0) + (effects (font (size 1.27 1.27))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_5_1" + (rectangle (start -12.7 0) (end 12.7 -31.75) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin bidirectional line (at -16.51 -6.35 0) (length 3.81) + (name "PL10A" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -8.89 0) (length 3.81) + (name "PL10B" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -11.43 0) (length 3.81) + (name "PL11A" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -13.97 0) (length 3.81) + (name "PL11B" (effects (font (size 1.27 1.27)))) + (number "17" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -16.51 0) (length 3.81) + (name "PL12A/PCLKT4_0" (effects (font (size 1.27 1.27)))) + (number "19" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -19.05 0) (length 3.81) + (name "PL12B/PCLKC4_0" (effects (font (size 1.27 1.27)))) + (number "20" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -21.59 0) (length 3.81) + (name "PL15A" (effects (font (size 1.27 1.27)))) + (number "21" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -24.13 0) (length 3.81) + (name "PL15B" (effects (font (size 1.27 1.27)))) + (number "22" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -26.67 0) (length 3.81) + (name "PL17A" (effects (font (size 1.27 1.27)))) + (number "23" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -29.21 0) (length 3.81) + (name "PL17B" (effects (font (size 1.27 1.27)))) + (number "24" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_6_0" + (text "BANK 5" (at 0 -2.54 0) + (effects (font (size 1.27 1.27))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_6_1" + (rectangle (start -12.7 0) (end 12.7 -31.75) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin bidirectional line (at -16.51 -6.35 0) (length 3.81) + (name "PL3A/L_GPLLT_FB" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -24.13 0) (length 3.81) + (name "PL8B" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -26.67 0) (length 3.81) + (name "PL9A" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -29.21 0) (length 3.81) + (name "PL9B" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -8.89 0) (length 3.81) + (name "PL3B/L_GPLLC_FB" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -11.43 0) (length 3.81) + (name "PL4A/L_GPLLT_IN" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -13.97 0) (length 3.81) + (name "PL4B/L_GPLLC_IN" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -16.51 0) (length 3.81) + (name "PL6A/PCLKT5_0" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -19.05 0) (length 3.81) + (name "PL6B/PCLKC5_0" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -21.59 0) (length 3.81) + (name "PL8A" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_7_0" + (text "POWER" (at 0 -2.54 0) + (effects (font (size 1.27 1.27))) + ) + ) + (symbol "LCMXO2-7000Hx-xTG144x_7_1" + (rectangle (start -12.7 0) (end 12.7 -49.53) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin power_in line (at -16.51 -39.37 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "101" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -21.59 180) (length 3.81) + (name "VCCIO1" (effects (font (size 1.27 1.27)))) + (number "102" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -11.43 0) (length 3.81) + (name "VCC" (effects (font (size 1.27 1.27)))) + (number "108" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -41.91 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "116" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -6.35 180) (length 3.81) + (name "VCCIO0" (effects (font (size 1.27 1.27)))) + (number "118" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -8.89 180) (length 3.81) + (name "VCCIO0" (effects (font (size 1.27 1.27)))) + (number "123" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -44.45 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "124" (effects (font (size 1.27 1.27)))) + ) + (pin no_connect line (at -16.51 -16.51 0) (length 3.81) hide + (name "NC" (effects (font (size 1.27 1.27)))) + (number "129" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -46.99 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "134" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -11.43 180) (length 3.81) + (name "VCCIO0" (effects (font (size 1.27 1.27)))) + (number "135" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -13.97 0) (length 3.81) + (name "VCC" (effects (font (size 1.27 1.27)))) + (number "144" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -41.91 180) (length 3.81) + (name "VCCIO4" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -21.59 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "18" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -24.13 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "29" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -36.83 180) (length 3.81) + (name "VCCIO3" (effects (font (size 1.27 1.27)))) + (number "30" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -6.35 0) (length 3.81) + (name "VCC" (effects (font (size 1.27 1.27)))) + (number "36" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -26.67 180) (length 3.81) + (name "VCCIO2" (effects (font (size 1.27 1.27)))) + (number "37" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -26.67 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "46" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -29.21 180) (length 3.81) + (name "VCCIO2" (effects (font (size 1.27 1.27)))) + (number "51" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -29.21 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "53" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -31.75 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "64" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -31.75 180) (length 3.81) + (name "VCCIO2" (effects (font (size 1.27 1.27)))) + (number "66" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -46.99 180) (length 3.81) + (name "VCCIO5" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -8.89 0) (length 3.81) + (name "VCC" (effects (font (size 1.27 1.27)))) + (number "72" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -16.51 180) (length 3.81) + (name "VCCIO1" (effects (font (size 1.27 1.27)))) + (number "79" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -19.05 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -34.29 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "80" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 16.51 -19.05 180) (length 3.81) + (name "VCCIO1" (effects (font (size 1.27 1.27)))) + (number "88" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -16.51 -36.83 0) (length 3.81) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "90" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "sc64v2:N64_Cartridge" (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "N64_Cartridge" (id 1) (at 0 1.27 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "sc64v2:N64_Edge" (id 2) (at 0 6.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 -34.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "N64_Cartridge_0_1" + (rectangle (start -7.62 0) (end 7.62 -91.44) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + ) + (symbol "N64_Cartridge_1_1" + (pin power_out line (at -10.16 -22.86 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin output inverted (at 10.16 -50.8 180) (length 2.54) + (name "~{READ}" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -30.48 180) (length 2.54) + (name "AD11" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -27.94 180) (length 2.54) + (name "AD10" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -15.24 0) (length 2.54) + (name "12V" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin no_connect line (at -10.16 -55.88 0) (length 2.54) + (name "KEY" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -25.4 180) (length 2.54) + (name "AD9" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -22.86 180) (length 2.54) + (name "AD8" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -5.08 0) (length 2.54) + (name "3V3" (effects (font (size 1.27 1.27)))) + (number "17" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -78.74 180) (length 2.54) + (name "CIC_DATA" (effects (font (size 1.27 1.27)))) + (number "18" (effects (font (size 1.27 1.27)))) + ) + (pin output clock (at 10.16 -68.58 180) (length 2.54) + (name "PIF_CLK" (effects (font (size 1.27 1.27)))) + (number "19" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -25.4 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin output inverted (at 10.16 -58.42 180) (length 2.54) + (name "~{RESET}" (effects (font (size 1.27 1.27)))) + (number "20" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -71.12 180) (length 2.54) + (name "JOYBUS" (effects (font (size 1.27 1.27)))) + (number "21" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -30.48 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "22" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -33.02 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "23" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at 10.16 -86.36 180) (length 2.54) + (name "AUDIO_L" (effects (font (size 1.27 1.27)))) + (number "24" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -35.56 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "25" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -38.1 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "26" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -40.64 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "27" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -2.54 180) (length 2.54) + (name "AD0" (effects (font (size 1.27 1.27)))) + (number "28" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -5.08 180) (length 2.54) + (name "AD1" (effects (font (size 1.27 1.27)))) + (number "29" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -40.64 180) (length 2.54) + (name "AD15" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -7.62 180) (length 2.54) + (name "AD2" (effects (font (size 1.27 1.27)))) + (number "30" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -43.18 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "31" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -10.16 180) (length 2.54) + (name "AD3" (effects (font (size 1.27 1.27)))) + (number "32" (effects (font (size 1.27 1.27)))) + ) + (pin output line (at 10.16 -45.72 180) (length 2.54) + (name "ALEL" (effects (font (size 1.27 1.27)))) + (number "33" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -7.62 0) (length 2.54) + (name "3V3" (effects (font (size 1.27 1.27)))) + (number "34" (effects (font (size 1.27 1.27)))) + ) + (pin output line (at 10.16 -48.26 180) (length 2.54) + (name "ALEH" (effects (font (size 1.27 1.27)))) + (number "35" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -12.7 180) (length 2.54) + (name "AD4" (effects (font (size 1.27 1.27)))) + (number "36" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -15.24 180) (length 2.54) + (name "AD5" (effects (font (size 1.27 1.27)))) + (number "37" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -17.78 0) (length 2.54) + (name "12V" (effects (font (size 1.27 1.27)))) + (number "38" (effects (font (size 1.27 1.27)))) + ) + (pin no_connect line (at -10.16 -58.42 0) (length 2.54) + (name "KEY" (effects (font (size 1.27 1.27)))) + (number "39" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -38.1 180) (length 2.54) + (name "AD14" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -17.78 180) (length 2.54) + (name "AD6" (effects (font (size 1.27 1.27)))) + (number "40" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -20.32 180) (length 2.54) + (name "AD7" (effects (font (size 1.27 1.27)))) + (number "41" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -10.16 0) (length 2.54) + (name "3V3" (effects (font (size 1.27 1.27)))) + (number "42" (effects (font (size 1.27 1.27)))) + ) + (pin output clock (at 10.16 -76.2 180) (length 2.54) + (name "CIC_CLK" (effects (font (size 1.27 1.27)))) + (number "43" (effects (font (size 1.27 1.27)))) + ) + (pin output inverted (at 10.16 -63.5 180) (length 2.54) + (name "~{INT}" (effects (font (size 1.27 1.27)))) + (number "44" (effects (font (size 1.27 1.27)))) + ) + (pin output inverted (at 10.16 -60.96 180) (length 2.54) + (name "~{NMI}" (effects (font (size 1.27 1.27)))) + (number "45" (effects (font (size 1.27 1.27)))) + ) + (pin output line (at 10.16 -83.82 180) (length 2.54) + (name "VIDEO_SYNC" (effects (font (size 1.27 1.27)))) + (number "46" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -45.72 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "47" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -48.26 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "48" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at 10.16 -88.9 180) (length 2.54) + (name "AUDIO_R" (effects (font (size 1.27 1.27)))) + (number "49" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -35.56 180) (length 2.54) + (name "AD13" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -50.8 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "50" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -27.94 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 10.16 -33.02 180) (length 2.54) + (name "AD12" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin output inverted (at 10.16 -53.34 180) (length 2.54) + (name "~{WRITE}" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -10.16 -2.54 0) (length 2.54) + (name "3V3" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "sc64v2:STM32G030Fx" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at 0 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "STM32G030Fx" (id 1) (at 0 1.27 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm" (id 2) (at 0 6.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "STM32G030Fx_0_1" + (rectangle (start -21.59 0) (end 21.59 -27.94) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + ) + (symbol "STM32G030Fx_1_1" + (pin bidirectional line (at -25.4 -2.54 0) (length 3.81) + (name "PB7/PB8" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -25.4 -25.4 0) (length 3.81) + (name "PA3" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 25.4 -25.4 180) (length 3.81) + (name "PA4" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 25.4 -22.86 180) (length 3.81) + (name "PA5" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 25.4 -20.32 180) (length 3.81) + (name "PA6" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 25.4 -17.78 180) (length 3.81) + (name "PA7" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 25.4 -15.24 180) (length 3.81) + (name "PB0/PB1/PB2/PA8" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 25.4 -12.7 180) (length 3.81) + (name "PA11[PA9]" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 25.4 -10.16 180) (length 3.81) + (name "PA12[PA10]" (effects (font (size 1.27 1.27)))) + (number "17" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 25.4 -7.62 180) (length 3.81) + (name "PA13" (effects (font (size 1.27 1.27)))) + (number "18" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 25.4 -5.08 180) (length 3.81) + (name "PA15/PA14-BOOT0" (effects (font (size 1.27 1.27)))) + (number "19" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -25.4 -5.08 0) (length 3.81) + (name "PB9/PC14-OSC32_IN" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 25.4 -2.54 180) (length 3.81) + (name "PB3/PB4/PB5/PB6" (effects (font (size 1.27 1.27)))) + (number "20" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -25.4 -7.62 0) (length 3.81) + (name "PC15-OSC32_OUT" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -25.4 -10.16 0) (length 3.81) + (name "VDD/VDDA" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -25.4 -12.7 0) (length 3.81) + (name "VSS/VSSA" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -25.4 -15.24 0) (length 3.81) + (name "NRST" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -25.4 -17.78 0) (length 3.81) + (name "PA0" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -25.4 -20.32 0) (length 3.81) + (name "PA1" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -25.4 -22.86 0) (length 3.81) + (name "PA2" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "sc64v2:TC2050-FP" (in_bom no) (on_board yes) + (property "Reference" "J" (id 0) (at 0 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "TC2050-FP" (id 1) (at 0 1.27 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "sc64v2:TC2050-FP" (id 2) (at 0 6.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 -12.7 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "TC2050-FP_0_1" + (rectangle (start -6.35 0) (end 6.35 -15.24) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + ) + (symbol "TC2050-FP_1_1" + (pin output clock (at -8.89 -2.54 0) (length 2.54) + (name "SWCLK" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin output line (at 8.89 -2.54 180) (length 2.54) + (name "TMS" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -8.89 -5.08 0) (length 2.54) + (name "SWDIO" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -8.89 -7.62 0) (length 2.54) + (name "RX" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin output line (at -8.89 -10.16 0) (length 2.54) + (name "TX" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at -8.89 -12.7 0) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at 8.89 -12.7 180) (length 2.54) + (name "VCC" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin output line (at 8.89 -10.16 180) (length 2.54) + (name "TDO" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at 8.89 -7.62 180) (length 2.54) + (name "TDI" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin output clock (at 8.89 -5.08 180) (length 2.54) + (name "TCK" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "sc64v2:TPS2111A" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at 0 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "TPS2111A" (id 1) (at 0 1.27 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Package_SO:TSSOP-8_4.4x3mm_P0.65mm" (id 2) (at 0 6.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "TPS2111A_0_1" + (rectangle (start -6.35 0) (end 6.35 -12.7) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + ) + (symbol "TPS2111A_1_1" + (pin input line (at -8.89 -2.54 0) (length 2.54) + (name "D0" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -8.89 -5.08 0) (length 2.54) + (name "D1" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -8.89 -7.62 0) (length 2.54) + (name "VSNS" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -8.89 -10.16 0) (length 2.54) + (name "ILM" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 8.89 -10.16 180) (length 2.54) + (name "GND" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 8.89 -7.62 180) (length 2.54) + (name "IN2" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at 8.89 -5.08 180) (length 2.54) + (name "OUT" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 8.89 -2.54 180) (length 2.54) + (name "IN1" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "sc64v2:Tactile_Switch" (pin_numbers hide) (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "SW1" (id 0) (at 0 7.62 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Tactile_Switch" (id 1) (at 0 5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Button_Switch_SMD:SW_SPST_Omron_B3FS-101xP" (id 2) (at 0 5.08 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 5.08 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "switch normally-open pushbutton push-button" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Push button switch, generic, two pins" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Tactile_Switch_0_1" + (circle (center -2.032 0) (radius 0.508) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -3.81 -1.27) + (xy -3.81 0) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 1.27) + (xy 0 3.048) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 1.27) + (xy -2.54 1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 3.81 -1.27) + (xy 3.81 0) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 2.032 0) (radius 0.508) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin passive line (at -5.08 0 0) (length 2.54) + (name "1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -1.27 0) (length 1.27) + (name "2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 5.08 0 180) (length 2.54) + (name "3" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 5.08 -1.27 180) (length 1.27) + (name "4" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + ) + ) + ) + + (junction (at 332.74 67.31) (diameter 0) (color 0 0 0 0) + (uuid 01a01df5-0b46-4fac-9897-34a0ddaeeda9) + ) + (junction (at 289.56 124.46) (diameter 0) (color 0 0 0 0) + (uuid 021e87ab-a462-4011-9118-da0936e96b82) + ) + (junction (at 289.56 156.21) (diameter 0) (color 0 0 0 0) + (uuid 067b503b-7502-49b2-8b42-0e67457de706) + ) + (junction (at 361.95 129.54) (diameter 0) (color 0 0 0 0) + (uuid 0876c29a-dc02-4a3e-83de-9dfe83c20291) + ) + (junction (at 179.07 39.37) (diameter 0) (color 0 0 0 0) + (uuid 09a79bdd-f2a4-47d0-aa16-498bb3985305) + ) + (junction (at 189.23 281.94) (diameter 0) (color 0 0 0 0) + (uuid 0bef939f-3efb-4b78-909a-927093db5974) + ) + (junction (at 151.13 391.16) (diameter 0) (color 0 0 0 0) + (uuid 0bf4bd6d-3768-430a-bc4e-55299c530f90) + ) + (junction (at 327.66 132.08) (diameter 0) (color 0 0 0 0) + (uuid 0c6134da-a34f-4f1a-aa10-90467792a677) + ) + (junction (at 289.56 129.54) (diameter 0) (color 0 0 0 0) + (uuid 0f97e26b-ae1b-4742-a792-ff5e5f027bd2) + ) + (junction (at 361.95 119.38) (diameter 0) (color 0 0 0 0) + (uuid 0fdcce59-3079-4b4d-96d4-ee4157213e63) + ) + (junction (at 349.25 156.21) (diameter 0) (color 0 0 0 0) + (uuid 10fa6232-f1d0-4b34-8733-b2a8d89c8eae) + ) + (junction (at 57.15 270.51) (diameter 0) (color 0 0 0 0) + (uuid 1148312a-52ee-4b9c-bd6a-70a00ff78c60) + ) + (junction (at 109.22 320.04) (diameter 0) (color 0 0 0 0) + (uuid 1307199d-eca0-448d-bb9c-0328bf086ae2) + ) + (junction (at 373.38 129.54) (diameter 0) (color 0 0 0 0) + (uuid 13c4e78e-75d8-4f1c-9f85-b797139a6ebc) + ) + (junction (at 21.59 105.41) (diameter 0) (color 0 0 0 0) + (uuid 14772c05-71ac-49b9-871b-f51aa154c838) + ) + (junction (at 97.79 391.16) (diameter 0) (color 0 0 0 0) + (uuid 15056d32-37ef-49c6-9b66-5ff1abd5e157) + ) + (junction (at 327.66 114.3) (diameter 0) (color 0 0 0 0) + (uuid 1815bdb6-b0ba-45b4-9fbb-1ae38cfd8b5a) + ) + (junction (at 349.25 111.76) (diameter 0) (color 0 0 0 0) + (uuid 185935ac-4528-4c39-bdf5-9290d12ef19c) + ) + (junction (at 21.59 146.05) (diameter 0) (color 0 0 0 0) + (uuid 189c5bf1-176d-4a02-952f-65e106f5a687) + ) + (junction (at 88.9 31.75) (diameter 0) (color 0 0 0 0) + (uuid 19c9f1b9-6941-466e-8982-3c65364a931c) + ) + (junction (at 107.95 147.32) (diameter 0) (color 0 0 0 0) + (uuid 1aab71cf-23c2-4726-886f-5d08c2c8669e) + ) + (junction (at 251.46 109.22) (diameter 0) (color 0 0 0 0) + (uuid 1c2479f7-61b4-411e-b3ad-9bdcc63124f0) + ) + (junction (at 327.66 139.7) (diameter 0) (color 0 0 0 0) + (uuid 1c51b6f7-32b7-4100-82ab-1ab3f4355c8d) + ) + (junction (at 238.76 279.4) (diameter 0) (color 0 0 0 0) + (uuid 1f808330-2f57-4fdb-b835-43facc5e250b) + ) + (junction (at 114.3 57.15) (diameter 0) (color 0 0 0 0) + (uuid 21bc181c-4356-4ec8-a5f3-5969e8e9b6a1) + ) + (junction (at 166.37 41.91) (diameter 0) (color 0 0 0 0) + (uuid 22c9184d-bf53-4b52-a480-7a5ab1fe83fe) + ) + (junction (at 251.46 259.08) (diameter 0) (color 0 0 0 0) + (uuid 253aaf8a-e1a8-4482-9374-529c8c7e3cac) + ) + (junction (at 161.29 294.64) (diameter 0) (color 0 0 0 0) + (uuid 26332541-4262-4753-a72b-66598060e2af) + ) + (junction (at 156.21 391.16) (diameter 0) (color 0 0 0 0) + (uuid 267fe0ad-a624-4db5-ad30-be8c6a5fb583) + ) + (junction (at 349.25 109.22) (diameter 0) (color 0 0 0 0) + (uuid 26db33d5-be2a-4669-b8bb-e32008637eec) + ) + (junction (at 57.15 293.37) (diameter 0) (color 0 0 0 0) + (uuid 278fdc4f-7300-458d-b390-e9536e138021) + ) + (junction (at 327.66 111.76) (diameter 0) (color 0 0 0 0) + (uuid 2923c641-70e9-4849-ac88-9cf9f9c9988e) + ) + (junction (at 158.75 391.16) (diameter 0) (color 0 0 0 0) + (uuid 29652de5-3ea6-4b6a-8a47-fa167855aafe) + ) + (junction (at 276.86 109.22) (diameter 0) (color 0 0 0 0) + (uuid 2a11264e-3704-4a65-9d75-ce2d8c9d323d) + ) + (junction (at 264.16 101.6) (diameter 0) (color 0 0 0 0) + (uuid 2a5ba203-7fba-4a65-aa51-198b66b7efbb) + ) + (junction (at 327.66 137.16) (diameter 0) (color 0 0 0 0) + (uuid 2c7c6954-8482-4e3d-8ee7-2df4084ef06d) + ) + (junction (at 327.66 101.6) (diameter 0) (color 0 0 0 0) + (uuid 2c7ea1c4-b973-4897-a594-78828a268f39) + ) + (junction (at 194.31 377.19) (diameter 0) (color 0 0 0 0) + (uuid 2f25f9bb-c963-4bb6-9b44-abbc5b146a83) + ) + (junction (at 21.59 130.81) (diameter 0) (color 0 0 0 0) + (uuid 2f7024c6-415c-4eb2-9d0e-f8275792bc10) + ) + (junction (at 327.66 134.62) (diameter 0) (color 0 0 0 0) + (uuid 3089d2dc-e34f-422e-b4c2-5df99b1bf381) + ) + (junction (at 468.63 29.21) (diameter 0) (color 0 0 0 0) + (uuid 36a98a9a-894b-4cd9-b7ff-2506699a8188) + ) + (junction (at 179.07 57.15) (diameter 0) (color 0 0 0 0) + (uuid 376a2a1a-6b20-4432-ac25-71a7f173eb4b) + ) + (junction (at 96.52 124.46) (diameter 0) (color 0 0 0 0) + (uuid 37c84047-7f1a-4d0a-8c56-19b292a69706) + ) + (junction (at 321.31 246.38) (diameter 0) (color 0 0 0 0) + (uuid 38deb217-e168-4b6e-9772-478e6103fbaf) + ) + (junction (at 57.15 313.69) (diameter 0) (color 0 0 0 0) + (uuid 39604d2b-2a3a-4b19-870d-f8bc12633c98) + ) + (junction (at 166.37 57.15) (diameter 0) (color 0 0 0 0) + (uuid 39fb9ac3-9adf-4b31-ac3f-96b639ad83d7) + ) + (junction (at 60.96 31.75) (diameter 0) (color 0 0 0 0) + (uuid 3affc072-285b-45b4-90ab-4fa15f230c34) + ) + (junction (at 327.66 116.84) (diameter 0) (color 0 0 0 0) + (uuid 3bb08c45-56ed-430e-a3d9-e1d35f983f7e) + ) + (junction (at 327.66 142.24) (diameter 0) (color 0 0 0 0) + (uuid 3c6b32d4-7089-46ff-8217-ac99d2c7a2f1) + ) + (junction (at 289.56 127) (diameter 0) (color 0 0 0 0) + (uuid 3d3d6eaf-16d2-4dc6-9f23-f1114e1ea2c3) + ) + (junction (at 327.66 119.38) (diameter 0) (color 0 0 0 0) + (uuid 3d5594a2-139c-45f3-a003-0305b53282e3) + ) + (junction (at 388.62 41.91) (diameter 0) (color 0 0 0 0) + (uuid 3d87cbb9-1fda-484c-ab5f-7b7a15b55643) + ) + (junction (at 21.59 153.67) (diameter 0) (color 0 0 0 0) + (uuid 3df81d83-b282-4dbb-85ac-32baea9d3953) + ) + (junction (at 264.16 279.4) (diameter 0) (color 0 0 0 0) + (uuid 3ee1c6cc-8563-4607-8f50-c79bcf951436) + ) + (junction (at 289.56 119.38) (diameter 0) (color 0 0 0 0) + (uuid 3f2cca3c-05c6-438e-80d5-2b468e2660cf) + ) + (junction (at 21.59 128.27) (diameter 0) (color 0 0 0 0) + (uuid 41ad8d69-417d-4a63-b5a1-8c38388af926) + ) + (junction (at 175.26 140.97) (diameter 0) (color 0 0 0 0) + (uuid 4341edb4-20cd-4871-aa18-c16163e72756) + ) + (junction (at 140.97 391.16) (diameter 0) (color 0 0 0 0) + (uuid 442416b6-5959-4c47-8d11-de06d44a9f72) + ) + (junction (at 317.5 29.21) (diameter 0) (color 0 0 0 0) + (uuid 44288ecb-311f-4420-a52f-6b5dadb28965) + ) + (junction (at 289.56 109.22) (diameter 0) (color 0 0 0 0) + (uuid 49b36bfe-1f8d-454a-bdaa-9ca7ff91908f) + ) + (junction (at 349.25 119.38) (diameter 0) (color 0 0 0 0) + (uuid 4a71ecb2-c7ae-4fc0-acb7-5a04dfa0cf08) + ) + (junction (at 201.93 281.94) (diameter 0) (color 0 0 0 0) + (uuid 4a96e51b-7a9b-47b3-9079-54b2c0b4cf4a) + ) + (junction (at 336.55 101.6) (diameter 0) (color 0 0 0 0) + (uuid 4b276402-6223-443a-ab0e-3617bce7ee45) + ) + (junction (at 373.38 119.38) (diameter 0) (color 0 0 0 0) + (uuid 516cb996-20a9-42f1-b047-c4cd421798f5) + ) + (junction (at 289.56 144.78) (diameter 0) (color 0 0 0 0) + (uuid 52f7faae-48f9-4893-8f0a-89270a6231b5) + ) + (junction (at 175.26 281.94) (diameter 0) (color 0 0 0 0) + (uuid 53d4fb9f-4335-4cfd-ae97-c64eb23f7c12) + ) + (junction (at 21.59 148.59) (diameter 0) (color 0 0 0 0) + (uuid 5944e207-e1f6-46b3-ba2e-e188e84aaabb) + ) + (junction (at 161.29 281.94) (diameter 0) (color 0 0 0 0) + (uuid 598c5e7b-1350-4174-b6ac-28f80c67b348) + ) + (junction (at 312.42 29.21) (diameter 0) (color 0 0 0 0) + (uuid 5add18f3-3198-4a99-99b7-a7ec12a9921a) + ) + (junction (at 436.88 59.69) (diameter 0) (color 0 0 0 0) + (uuid 5d6d2a30-9fc4-42d7-8078-31dd91c73555) + ) + (junction (at 289.56 106.68) (diameter 0) (color 0 0 0 0) + (uuid 5d76259a-0437-45e6-871f-07d69aa1cab0) + ) + (junction (at 332.74 41.91) (diameter 0) (color 0 0 0 0) + (uuid 5e395519-5b71-447f-a6f1-a2e740dca85e) + ) + (junction (at 48.26 57.15) (diameter 0) (color 0 0 0 0) + (uuid 61a66fe6-d4c7-472f-8c3a-d43b109ed382) + ) + (junction (at 161.29 391.16) (diameter 0) (color 0 0 0 0) + (uuid 649a582c-a537-43f8-96b9-b3cee77b193e) + ) + (junction (at 361.95 109.22) (diameter 0) (color 0 0 0 0) + (uuid 691b0fb9-d5e0-4539-ac76-5104f4346b81) + ) + (junction (at 21.59 143.51) (diameter 0) (color 0 0 0 0) + (uuid 6a4ff7db-905d-4301-8154-56f7dc158037) + ) + (junction (at 458.47 218.44) (diameter 0) (color 0 0 0 0) + (uuid 6b68902f-f616-4dff-84e3-b99055576c00) + ) + (junction (at 57.15 246.38) (diameter 0) (color 0 0 0 0) + (uuid 70a1ab00-aac4-4efc-bcde-068f89a6747a) + ) + (junction (at 458.47 198.12) (diameter 0) (color 0 0 0 0) + (uuid 7465f78e-2710-4c65-b865-2e0d4c04b430) + ) + (junction (at 21.59 107.95) (diameter 0) (color 0 0 0 0) + (uuid 74e12ff4-b3f4-4727-b57d-f4a30de78b2a) + ) + (junction (at 468.63 59.69) (diameter 0) (color 0 0 0 0) + (uuid 77005616-76c6-4a67-9bd7-30694ddc3c9a) + ) + (junction (at 35.56 31.75) (diameter 0) (color 0 0 0 0) + (uuid 789fc19f-dcd1-4884-8eab-debb7f454a28) + ) + (junction (at 96.52 121.92) (diameter 0) (color 0 0 0 0) + (uuid 78b21d75-1f34-4b52-9873-f2735f483ecc) + ) + (junction (at 21.59 135.89) (diameter 0) (color 0 0 0 0) + (uuid 7faf104d-8c09-4d53-8bbf-75e01682f7f1) + ) + (junction (at 125.73 391.16) (diameter 0) (color 0 0 0 0) + (uuid 80ebf886-0731-495f-9270-aee8b6ccc9a9) + ) + (junction (at 349.25 121.92) (diameter 0) (color 0 0 0 0) + (uuid 82bb3211-1fc4-4cf2-9ea0-611399bd0331) + ) + (junction (at 532.13 40.64) (diameter 0) (color 0 0 0 0) + (uuid 877ab6a2-ae9d-4416-9478-4654a379cd59) + ) + (junction (at 289.56 142.24) (diameter 0) (color 0 0 0 0) + (uuid 88446038-8183-41d3-98ae-9671de9e51cd) + ) + (junction (at 251.46 279.4) (diameter 0) (color 0 0 0 0) + (uuid 88e92c4a-9f33-41b5-9c6b-881c438af4c0) + ) + (junction (at 264.16 109.22) (diameter 0) (color 0 0 0 0) + (uuid 8a5fab85-5276-4493-bd66-9f6f4b5a0d74) + ) + (junction (at 327.66 106.68) (diameter 0) (color 0 0 0 0) + (uuid 8aff6a62-14ab-415c-984d-57cf7431a5b0) + ) + (junction (at 175.26 294.64) (diameter 0) (color 0 0 0 0) + (uuid 8d406281-5c6b-4c45-a394-e0aa999f7eef) + ) + (junction (at 91.44 260.35) (diameter 0) (color 0 0 0 0) + (uuid 90707fe6-5e58-42ce-ac8d-d29f2c48941f) + ) + (junction (at 156.21 281.94) (diameter 0) (color 0 0 0 0) + (uuid 9166284e-e018-4b0c-9b7d-8a3c947148cb) + ) + (junction (at 175.26 106.68) (diameter 0) (color 0 0 0 0) + (uuid 920b8550-1b59-443d-aab2-9fb480465d31) + ) + (junction (at 146.05 281.94) (diameter 0) (color 0 0 0 0) + (uuid 928f4b61-bc9b-4d7a-95c8-b828d0b8fa4c) + ) + (junction (at 332.74 29.21) (diameter 0) (color 0 0 0 0) + (uuid 92cb7657-2ca7-4a8c-9f74-5d6d57806183) + ) + (junction (at 191.77 39.37) (diameter 0) (color 0 0 0 0) + (uuid 937b223f-b949-4259-b4e6-04c9f804a32a) + ) + (junction (at 388.62 44.45) (diameter 0) (color 0 0 0 0) + (uuid 971e3898-305b-4aa2-87c0-153e227f3b20) + ) + (junction (at 78.74 262.89) (diameter 0) (color 0 0 0 0) + (uuid 9721516f-fdf0-46f7-bc85-0abde6a428df) + ) + (junction (at 143.51 391.16) (diameter 0) (color 0 0 0 0) + (uuid 97ec6635-2850-42ed-897a-d9c10f948a97) + ) + (junction (at 146.05 308.61) (diameter 0) (color 0 0 0 0) + (uuid 98474af4-a6a1-4979-bdb3-c124b1bf7932) + ) + (junction (at 146.05 57.15) (diameter 0) (color 0 0 0 0) + (uuid 9ba90a1b-885c-4de8-9f41-33a9f6d40cb2) + ) + (junction (at 336.55 121.92) (diameter 0) (color 0 0 0 0) + (uuid 9ba9eb53-0281-4378-92ba-948bb89aba7d) + ) + (junction (at 349.25 101.6) (diameter 0) (color 0 0 0 0) + (uuid 9d4d0e79-e485-42b1-b61e-cd5a13d4e2e4) + ) + (junction (at 158.75 106.68) (diameter 0) (color 0 0 0 0) + (uuid 9d50c506-723a-4915-857e-9334aa06a34f) + ) + (junction (at 166.37 391.16) (diameter 0) (color 0 0 0 0) + (uuid 9d5e87b8-86c0-469c-aabf-7bc2bcfb8e51) + ) + (junction (at 251.46 101.6) (diameter 0) (color 0 0 0 0) + (uuid a0f722a8-7e22-4950-a248-d1bf016e8c01) + ) + (junction (at 327.66 129.54) (diameter 0) (color 0 0 0 0) + (uuid a119cf93-d31d-45f0-a659-1b342307debc) + ) + (junction (at 153.67 391.16) (diameter 0) (color 0 0 0 0) + (uuid a6dfd77b-df24-49cf-82d2-35274bc8748c) + ) + (junction (at 289.56 104.14) (diameter 0) (color 0 0 0 0) + (uuid a77633d7-f807-4fb2-bbad-87270a64fa4c) + ) + (junction (at 78.74 147.32) (diameter 0) (color 0 0 0 0) + (uuid a7dcc5fd-5cf2-4d2f-8b3d-3ff6cd27d608) + ) + (junction (at 22.86 31.75) (diameter 0) (color 0 0 0 0) + (uuid a8005eea-0a09-4e2a-b0d8-54e3449c17cc) + ) + (junction (at 487.68 36.83) (diameter 0) (color 0 0 0 0) + (uuid a8de99bd-b42d-40d1-907f-bf331983b5c4) + ) + (junction (at 21.59 133.35) (diameter 0) (color 0 0 0 0) + (uuid ac4c8d6b-2d0a-4872-9c7c-98fba1cb2484) + ) + (junction (at 60.96 57.15) (diameter 0) (color 0 0 0 0) + (uuid af1bd19e-5444-46c5-ae6d-6f3e079af9eb) + ) + (junction (at 264.16 292.1) (diameter 0) (color 0 0 0 0) + (uuid b05b8271-8947-4750-ab51-7a839efa1efd) + ) + (junction (at 557.53 39.37) (diameter 0) (color 0 0 0 0) + (uuid b1414dbf-7968-4366-b718-4423940badef) + ) + (junction (at 21.59 110.49) (diameter 0) (color 0 0 0 0) + (uuid b27fa65f-2aa4-46b3-a8bc-fdd20d0d2735) + ) + (junction (at 289.56 137.16) (diameter 0) (color 0 0 0 0) + (uuid b45b8e9e-6211-4f5c-a670-40cde56f51f8) + ) + (junction (at 176.53 360.68) (diameter 0) (color 0 0 0 0) + (uuid b7121418-67fa-4a37-8d79-7507769d30b1) + ) + (junction (at 327.66 104.14) (diameter 0) (color 0 0 0 0) + (uuid b95848b4-804b-4cb9-9da3-e6fec5d80d5c) + ) + (junction (at 35.56 57.15) (diameter 0) (color 0 0 0 0) + (uuid bb047e6b-ecae-4074-a8b0-8426b49d6c89) + ) + (junction (at 391.16 132.08) (diameter 0) (color 0 0 0 0) + (uuid c098c4d2-01b6-4a29-8999-7c2010c651c7) + ) + (junction (at 148.59 307.34) (diameter 0) (color 0 0 0 0) + (uuid c1362b53-57eb-402a-81b7-dc677125cb7b) + ) + (junction (at 276.86 101.6) (diameter 0) (color 0 0 0 0) + (uuid c1ef9382-38bd-4573-a89f-2225d0979ab0) + ) + (junction (at 336.55 156.21) (diameter 0) (color 0 0 0 0) + (uuid c2d7098f-f838-4cd7-8a03-f934551165f3) + ) + (junction (at 289.56 101.6) (diameter 0) (color 0 0 0 0) + (uuid c33f556b-333e-496f-ba5d-c31cf204d788) + ) + (junction (at 289.56 134.62) (diameter 0) (color 0 0 0 0) + (uuid c666db4d-8b65-4953-a806-acba160dd15a) + ) + (junction (at 57.15 250.19) (diameter 0) (color 0 0 0 0) + (uuid c706bc55-761c-430a-8a96-50cfaab906df) + ) + (junction (at 151.13 281.94) (diameter 0) (color 0 0 0 0) + (uuid c8f17c30-a4f6-46fa-aabd-8086ab44b007) + ) + (junction (at 349.25 129.54) (diameter 0) (color 0 0 0 0) + (uuid cecea4f3-a169-4b18-9802-7ef02041fb0d) + ) + (junction (at 191.77 57.15) (diameter 0) (color 0 0 0 0) + (uuid d06d1570-eec8-451b-8887-a60071a8d84b) + ) + (junction (at 146.05 391.16) (diameter 0) (color 0 0 0 0) + (uuid d085dd98-05f6-4752-9183-44f5a2482eea) + ) + (junction (at 510.54 52.07) (diameter 0) (color 0 0 0 0) + (uuid d1b4adc4-b3ef-40dd-a098-6f055555de18) + ) + (junction (at 289.56 132.08) (diameter 0) (color 0 0 0 0) + (uuid d23d5b19-5f52-4eae-be79-b808d21c9cc1) + ) + (junction (at 289.56 121.92) (diameter 0) (color 0 0 0 0) + (uuid d64c3fa3-223d-4545-bf13-3b7f3351610a) + ) + (junction (at 487.68 52.07) (diameter 0) (color 0 0 0 0) + (uuid d6ab2efd-7f7b-4405-baf0-1d6d075d8a0d) + ) + (junction (at 123.19 57.15) (diameter 0) (color 0 0 0 0) + (uuid d711797c-888a-4c7b-89df-5ef421172fab) + ) + (junction (at 148.59 391.16) (diameter 0) (color 0 0 0 0) + (uuid d7f4a504-b325-4a83-a3e5-e5805b4ed834) + ) + (junction (at 175.26 134.62) (diameter 0) (color 0 0 0 0) + (uuid d8dd90a1-76d6-4539-b08f-8037f79a747a) + ) + (junction (at 163.83 391.16) (diameter 0) (color 0 0 0 0) + (uuid ded89fb4-7045-4676-884e-b9cf3ac49e80) + ) + (junction (at 321.31 322.58) (diameter 0) (color 0 0 0 0) + (uuid dfd18fab-c075-43df-85ec-baf2716cca66) + ) + (junction (at 215.9 294.64) (diameter 0) (color 0 0 0 0) + (uuid e094de95-fd4d-440d-9bf0-47188bd3d09d) + ) + (junction (at 251.46 292.1) (diameter 0) (color 0 0 0 0) + (uuid e169b00e-ce5c-4bcf-ac53-6eeaa0832fc6) + ) + (junction (at 332.74 71.12) (diameter 0) (color 0 0 0 0) + (uuid e172424e-7bde-4064-bed7-608f57481aba) + ) + (junction (at 173.99 137.16) (diameter 0) (color 0 0 0 0) + (uuid e20d3f10-88a6-48cb-bd71-05636f82a982) + ) + (junction (at 148.59 140.97) (diameter 0) (color 0 0 0 0) + (uuid e25ae11e-2d4c-4183-bf19-5432810f78c3) + ) + (junction (at 289.56 139.7) (diameter 0) (color 0 0 0 0) + (uuid e4b0ffbd-b8cb-48ff-9f1f-146cc75301c2) + ) + (junction (at 361.95 156.21) (diameter 0) (color 0 0 0 0) + (uuid e668acb9-a1b8-4f59-869b-ca2bb6dba3da) + ) + (junction (at 336.55 111.76) (diameter 0) (color 0 0 0 0) + (uuid e7016aef-e8a8-421f-bcda-0b1e3086770d) + ) + (junction (at 21.59 151.13) (diameter 0) (color 0 0 0 0) + (uuid e939cd7e-46c5-41d3-8782-c57e1c4d2ba5) + ) + (junction (at 153.67 281.94) (diameter 0) (color 0 0 0 0) + (uuid e9b9ae69-12de-44af-9fc4-6e79f0f4ba71) + ) + (junction (at 256.54 54.61) (diameter 0) (color 0 0 0 0) + (uuid ec3765c8-2873-4bc7-bd25-9fad10489379) + ) + (junction (at 256.54 29.21) (diameter 0) (color 0 0 0 0) + (uuid ec482c3d-56cf-4e74-84b2-af78a3f43df7) + ) + (junction (at 104.14 41.91) (diameter 0) (color 0 0 0 0) + (uuid ef48777c-d451-4808-9a53-8cac8d50684b) + ) + (junction (at 327.66 124.46) (diameter 0) (color 0 0 0 0) + (uuid ef695a9f-8806-47f3-b31a-0b4c382e0668) + ) + (junction (at 189.23 294.64) (diameter 0) (color 0 0 0 0) + (uuid ef7a598a-9395-469e-8b8c-58b8cd80766a) + ) + (junction (at 238.76 259.08) (diameter 0) (color 0 0 0 0) + (uuid f0a93585-3b12-434e-8bef-c0ee3207fc55) + ) + (junction (at 21.59 140.97) (diameter 0) (color 0 0 0 0) + (uuid f1ccb0b7-c464-4742-9f6f-db88ee77f064) + ) + (junction (at 148.59 281.94) (diameter 0) (color 0 0 0 0) + (uuid f32bf030-4978-4b2f-8ee4-0f2bb7e2715f) + ) + (junction (at 109.22 281.94) (diameter 0) (color 0 0 0 0) + (uuid f466cf66-a7e9-43dd-b352-d740b94782ee) + ) + (junction (at 327.66 109.22) (diameter 0) (color 0 0 0 0) + (uuid f56b0725-003e-42fc-b871-347c7f46ec8a) + ) + (junction (at 21.59 138.43) (diameter 0) (color 0 0 0 0) + (uuid f5849d34-d2a5-407b-84bc-749e4768fdf4) + ) + (junction (at 238.76 292.1) (diameter 0) (color 0 0 0 0) + (uuid f5f2faab-609a-4b36-b91d-3b5a76c2ad89) + ) + (junction (at 109.22 391.16) (diameter 0) (color 0 0 0 0) + (uuid f68f007c-44ba-4121-b67c-3fd489146eaf) + ) + (junction (at 327.66 127) (diameter 0) (color 0 0 0 0) + (uuid f8f2bb2a-6844-463e-a86a-2702cd0d4049) + ) + (junction (at 201.93 294.64) (diameter 0) (color 0 0 0 0) + (uuid f973c884-f2e1-42dc-8c12-4db19b37f44e) + ) + (junction (at 238.76 246.38) (diameter 0) (color 0 0 0 0) + (uuid fa8f7e9d-b969-4cd6-949a-4c3607e434eb) + ) + (junction (at 109.22 325.12) (diameter 0) (color 0 0 0 0) + (uuid fc9fa9c8-230e-49ef-afa3-fd3fcc240c86) + ) + (junction (at 251.46 246.38) (diameter 0) (color 0 0 0 0) + (uuid fd2c12b7-f305-4f4b-b820-02e56f0bb267) + ) + (junction (at 148.59 106.68) (diameter 0) (color 0 0 0 0) + (uuid ff7fe37e-fcb9-40c5-85f0-dfe0cdc0b7ef) + ) + (junction (at 327.66 121.92) (diameter 0) (color 0 0 0 0) + (uuid fff5b923-4b84-45c8-b38e-789cdb5ecac2) + ) + + (no_connect (at 44.45 191.77) (uuid 422d173e-0bf6-4c28-9f2f-52df07530698)) + (no_connect (at 44.45 189.23) (uuid 422d173e-0bf6-4c28-9f2f-52df07530699)) + (no_connect (at 24.13 118.11) (uuid 5250a80a-ed3f-4b43-b39b-02a8128ab4e8)) + (no_connect (at 24.13 120.65) (uuid 5250a80a-ed3f-4b43-b39b-02a8128ab4e9)) + (no_connect (at 335.28 46.99) (uuid 7f8c11cd-68e3-4700-93d0-9a94774a0c6a)) + (no_connect (at 125.73 36.83) (uuid 9c5b3b34-e607-44c2-91b7-d8fafa857323)) + (no_connect (at 544.83 40.64) (uuid 9d7180e6-0e24-4e80-bbf9-8513790f2687)) + (no_connect (at 173.99 363.22) (uuid aa6e0981-f106-475c-a08c-e00e12995735)) + (no_connect (at 173.99 365.76) (uuid aa6e0981-f106-475c-a08c-e00e12995736)) + (no_connect (at 93.98 134.62) (uuid d56af92c-a75c-4a32-aa48-ab3394145b68)) + (no_connect (at 93.98 137.16) (uuid d56af92c-a75c-4a32-aa48-ab3394145b69)) + (no_connect (at 49.53 303.53) (uuid d56af92c-a75c-4a32-aa48-ab3394145b6a)) + (no_connect (at 128.27 373.38) (uuid d56af92c-a75c-4a32-aa48-ab3394145b6b)) + (no_connect (at 450.85 208.28) (uuid d56af92c-a75c-4a32-aa48-ab3394145b6c)) + + (wire (pts (xy 123.19 39.37) (xy 123.19 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 000443ed-d678-4930-ab7e-4b9b2fe7ac32) + ) + (wire (pts (xy 332.74 39.37) (xy 332.74 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 00886c3d-1236-4d1d-b817-95969ffbbe76) + ) + (wire (pts (xy 440.69 165.1) (xy 443.23 165.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 00ff7824-f09d-4528-99cd-c67f968fe5b7) + ) + (wire (pts (xy 389.89 147.32) (xy 392.43 147.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 01415f01-21a1-4a0b-aaa2-6ab648273e6c) + ) + (wire (pts (xy 389.89 114.3) (xy 392.43 114.3)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 01e8b31f-214a-44c4-9719-6aec5509bd4b) + ) + (wire (pts (xy 391.16 95.25) (xy 391.16 97.79)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 01ea9e5d-530b-474c-94fd-3899fe26950f) + ) + (wire (pts (xy 78.74 255.27) (xy 78.74 262.89)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 02263caa-3d6f-4a42-9965-93f18052319a) + ) + (wire (pts (xy 336.55 289.56) (xy 341.63 289.56)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 027f2d50-0327-42b6-84e8-f5308b4bed48) + ) + (wire (pts (xy 542.29 127) (xy 544.83 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0290eb84-4db4-4974-8f5e-0f67d58adc92) + ) + (wire (pts (xy 336.55 287.02) (xy 341.63 287.02)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 03353e5b-7140-453e-8150-5d0b01a3f2d5) + ) + (wire (pts (xy 173.99 347.98) (xy 179.07 347.98)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 03724d29-3c88-465e-b3ec-f0b30d955c73) + ) + (wire (pts (xy 386.08 44.45) (xy 388.62 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 03769928-418d-4f0d-a712-c1cb32f110fc) + ) + (wire (pts (xy 93.98 106.68) (xy 96.52 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 03dcf228-c5a6-40ff-8b1b-84721225a1de) + ) + (wire (pts (xy 264.16 259.08) (xy 264.16 256.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 04036cdc-b474-4596-90e4-d01fd41e4bc2) + ) + (wire (pts (xy 317.5 29.21) (xy 332.74 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 05442cee-ebf6-4e12-93df-865c45fa840f) + ) + (wire (pts (xy 336.55 101.6) (xy 349.25 101.6)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 05d2eb8c-1da7-4312-86e8-a316bf739909) + ) + (wire (pts (xy 21.59 135.89) (xy 21.59 138.43)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 060c82e2-94c8-42ac-a3f1-50d9180857eb) + ) + (wire (pts (xy 201.93 281.94) (xy 201.93 284.48)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 064f33a5-6e4d-450b-b44b-1c6c89a905db) + ) + (wire (pts (xy 389.89 134.62) (xy 392.43 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 06f069f5-ecad-422c-ac99-816708bce908) + ) + (wire (pts (xy 542.29 129.54) (xy 544.83 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 072b7ed6-1860-4ea6-aac8-5789ce58b77a) + ) + (wire (pts (xy 125.73 342.9) (xy 128.27 342.9)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 075788a9-014c-4b37-a775-98560253c0bc) + ) + (wire (pts (xy 22.86 31.75) (xy 35.56 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 079fa981-e700-4df5-b1bf-fc2721b89e4f) + ) + (wire (pts (xy 468.63 54.61) (xy 468.63 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 089b1079-59e4-4dbe-b097-44b6089f61d0) + ) + (wire (pts (xy 491.49 175.26) (xy 494.03 175.26)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 09a5de35-dfb8-4623-b595-73a8b14e9d72) + ) + (wire (pts (xy 386.08 52.07) (xy 391.16 52.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 09b298e3-99e4-498e-97c5-ab7d3ef36c5d) + ) + (wire (pts (xy 306.07 302.26) (xy 311.15 302.26)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 09b94a1a-ab54-40fe-abc8-2753772a3530) + ) + (wire (pts (xy 148.59 281.94) (xy 146.05 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 09c985a0-4811-4a60-95c0-6adc7bba2893) + ) + (wire (pts (xy 148.59 307.34) (xy 148.59 312.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0a76f029-2321-40b6-a7e2-dd846f134cb9) + ) + (wire (pts (xy 114.3 44.45) (xy 125.73 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0aa1c3aa-6480-46b9-a240-730e7e1b25e5) + ) + (polyline (pts (xy 513.08 17.78) (xy 513.08 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0b03665f-06c0-42a0-9a13-5de8bec2e870) + ) + + (wire (pts (xy 389.89 172.72) (xy 392.43 172.72)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0b30ffb0-98ee-4b35-b1c4-ebf43a582e11) + ) + (wire (pts (xy 238.76 243.84) (xy 238.76 246.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0b5f1840-f047-4fd9-b506-177ef16e69c1) + ) + (wire (pts (xy 238.76 39.37) (xy 243.84 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0b5fe6a0-6cf5-484c-b216-162f7efc67b1) + ) + (polyline (pts (xy 295.91 17.78) (xy 406.4 17.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0b791546-451e-4b96-bc31-ba6158be1a58) + ) + + (wire (pts (xy 481.33 52.07) (xy 487.68 52.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0b9c3f24-79f0-48c5-ae20-ae0c0ac83ec5) + ) + (wire (pts (xy 125.73 347.98) (xy 128.27 347.98)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0beb955f-cdef-424f-99b9-4de995662827) + ) + (wire (pts (xy 325.12 134.62) (xy 327.66 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0bffe2cb-ac5e-432c-b1fc-49bac7f1cfa8) + ) + (wire (pts (xy 83.82 391.16) (xy 97.79 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0cdba789-3d32-4995-b880-fee5c6998371) + ) + (wire (pts (xy 542.29 149.86) (xy 544.83 149.86)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0d464c01-8b99-4d9e-832c-5b22a528d157) + ) + (wire (pts (xy 238.76 276.86) (xy 238.76 279.4)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0dc6938e-c44d-46d0-ba2c-dc0b20339124) + ) + (wire (pts (xy 491.49 160.02) (xy 494.03 160.02)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0dcce899-fbfc-4cd6-8da6-aa97dd306183) + ) + (wire (pts (xy 383.54 71.12) (xy 388.62 71.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0f94dfdb-9c5b-4291-a881-12ea2c1e8615) + ) + (wire (pts (xy 361.95 156.21) (xy 373.38 156.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0fde4132-0b1b-49a2-b5b9-178a11361425) + ) + (wire (pts (xy 373.38 109.22) (xy 373.38 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0ffa3cf7-e717-42fd-86be-881c253e9a3b) + ) + (wire (pts (xy 276.86 109.22) (xy 276.86 156.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1010ed8e-d741-44c6-8c3a-d0eadf341e3b) + ) + (wire (pts (xy 57.15 290.83) (xy 57.15 293.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 10dbc38b-43d6-4479-931c-caa5e8e2a5eb) + ) + (wire (pts (xy 158.75 120.65) (xy 158.75 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 11e6359c-d7b4-4fdd-8736-3db873da08ba) + ) + (wire (pts (xy 491.49 114.3) (xy 494.03 114.3)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 11f4a0a5-f244-482b-ac10-3b841a4c25d4) + ) + (wire (pts (xy 321.31 322.58) (xy 323.85 322.58)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 120dfbed-1c68-4015-9450-186217e21313) + ) + (wire (pts (xy 306.07 284.48) (xy 311.15 284.48)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1231745c-d43d-4680-8964-204b40a3cc5d) + ) + (wire (pts (xy 44.45 138.43) (xy 46.99 138.43)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 12446cd6-2ad4-4c3a-8928-b5938a76b0b6) + ) + (wire (pts (xy 458.47 215.9) (xy 458.47 218.44)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 125143b2-0ed3-4c9b-92e2-ff7e46a8619a) + ) + (wire (pts (xy 264.16 246.38) (xy 264.16 248.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 128c2130-1a3f-422f-a152-db364a3c555f) + ) + (wire (pts (xy 78.74 144.78) (xy 78.74 147.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 12c96c5d-fb72-4da0-ad9d-e9c7ce612360) + ) + (wire (pts (xy 238.76 279.4) (xy 251.46 279.4)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 134beff2-840f-4b6e-ac96-7ae69d9ed400) + ) + (wire (pts (xy 93.98 111.76) (xy 116.84 111.76)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 136776ca-a05c-4a68-8504-161e86f13f22) + ) + (wire (pts (xy 308.61 246.38) (xy 321.31 246.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 13915e9d-d96f-4083-a61b-ff9c96a6d53e) + ) + (polyline (pts (xy 228.6 402.59) (xy 17.78 402.59)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 13b51491-cf16-4475-b097-1d1eb656e344) + ) + + (wire (pts (xy 148.59 106.68) (xy 158.75 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 13be7fdb-737a-4e60-8e42-414274e642c7) + ) + (wire (pts (xy 336.55 261.62) (xy 341.63 261.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 13cc885a-b3eb-4151-b7de-4e76b1845ab9) + ) + (wire (pts (xy 440.69 180.34) (xy 443.23 180.34)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 13f2fc45-2e75-4bc5-819a-2574b040ad9b) + ) + (wire (pts (xy 289.56 124.46) (xy 289.56 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 13fd4616-2d49-4406-be8f-0ff5b82c2f9f) + ) + (wire (pts (xy 332.74 71.12) (xy 375.92 71.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 140092ab-e685-4b4f-9b97-9ac6557e5297) + ) + (polyline (pts (xy 233.68 86.36) (xy 233.68 229.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 14187d13-05be-4a54-a5fa-095f99d140b1) + ) + + (wire (pts (xy 256.54 54.61) (xy 214.63 54.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 14547bda-22b7-436a-8a76-25312d90db4c) + ) + (wire (pts (xy 330.2 59.69) (xy 335.28 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1479c99f-b3e5-42a3-af1e-f4b4fb3fbcd5) + ) + (wire (pts (xy 175.26 127) (xy 175.26 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 154f06b7-3904-4cda-bdb4-0292a7ee1591) + ) + (wire (pts (xy 200.66 189.23) (xy 198.12 189.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 15517967-ee41-40a7-ac82-54823fd5399e) + ) + (wire (pts (xy 349.25 156.21) (xy 361.95 156.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1593f782-804d-4a7e-820c-0af402426a21) + ) + (wire (pts (xy 557.53 26.67) (xy 557.53 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 16062a4c-1e94-4ba0-9238-9572609a5aca) + ) + (polyline (pts (xy 228.6 229.87) (xy 17.78 229.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1715aee9-8e63-42a4-9d45-b70f5f28fe78) + ) + + (wire (pts (xy 173.99 345.44) (xy 179.07 345.44)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1748bf6f-7902-4206-a7ce-0df3324ac443) + ) + (wire (pts (xy 189.23 292.1) (xy 189.23 294.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 176c0786-95e2-495a-925c-f4b3292bdbbd) + ) + (wire (pts (xy 238.76 248.92) (xy 238.76 246.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 17aff203-38e7-4b57-ac48-40eb4eceb924) + ) + (wire (pts (xy 438.15 198.12) (xy 458.47 198.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 17c61523-60bc-4908-92e4-525627cfad53) + ) + (wire (pts (xy 96.52 119.38) (xy 96.52 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 17fb3e97-02fb-42e6-b35d-a80b4a321464) + ) + (wire (pts (xy 238.76 292.1) (xy 251.46 292.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 185bb150-1962-49b9-af47-478028c3a0f3) + ) + (wire (pts (xy 349.25 119.38) (xy 361.95 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 18ac86b0-59bf-436c-b446-630e5b7dc5da) + ) + (wire (pts (xy 440.69 111.76) (xy 443.23 111.76)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 19ca4cce-cdf8-4ad8-b8e3-a5f49c51e24f) + ) + (wire (pts (xy 24.13 125.73) (xy 21.59 125.73)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 19d363dc-b441-4891-b0df-bb50271da27a) + ) + (wire (pts (xy 336.55 259.08) (xy 341.63 259.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1a775733-f59e-4828-9df9-314128052702) + ) + (wire (pts (xy 251.46 246.38) (xy 264.16 246.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1bba876c-9c61-4056-861a-2004ed4bf2d2) + ) + (wire (pts (xy 179.07 39.37) (xy 179.07 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1bef5c97-3568-459c-9d06-02b706c71d94) + ) + (wire (pts (xy 542.29 132.08) (xy 544.83 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1c73ba8a-ab9d-491b-8a4b-56aa19846e62) + ) + (wire (pts (xy 349.25 137.16) (xy 327.66 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1ca3a526-4328-461f-bc2b-fe5a0dcfeb74) + ) + (wire (pts (xy 158.75 106.68) (xy 158.75 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1cd19684-eff9-4b75-80a9-5c4fd8bea5ab) + ) + (wire (pts (xy 361.95 132.08) (xy 361.95 142.24)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1cf563f7-6913-45fa-a264-cdaf0aaac72e) + ) + (wire (pts (xy 455.93 39.37) (xy 458.47 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1d01818d-5e59-4203-8e4b-3d5f184a5662) + ) + (wire (pts (xy 468.63 59.69) (xy 468.63 62.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1d581b06-12ab-4a29-9022-e8456cb0243a) + ) + (wire (pts (xy 153.67 391.16) (xy 156.21 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1d63fdd3-20da-427f-bef5-0ad8f291db3f) + ) + (wire (pts (xy 330.2 64.77) (xy 335.28 64.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1ddaa0cd-7dbf-46b7-b79f-305929b5ad10) + ) + (wire (pts (xy 172.72 114.3) (xy 177.8 114.3)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1df18672-a1fe-4ff6-a7ed-a514669c9e40) + ) + (wire (pts (xy 71.12 144.78) (xy 71.12 147.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1e40c263-d968-4ea6-9b35-8ed291cc34ce) + ) + (wire (pts (xy 389.89 111.76) (xy 392.43 111.76)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1e6bd62c-29c9-4e21-a96d-4363313dec1d) + ) + (wire (pts (xy 542.29 162.56) (xy 544.83 162.56)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1e99e271-f19e-45e4-b3c0-f903d8a4763d) + ) + (wire (pts (xy 327.66 132.08) (xy 327.66 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1ee4cff6-3ecd-4da1-8428-ab866a96ac1e) + ) + (wire (pts (xy 109.22 325.12) (xy 109.22 320.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1f0aac29-71d2-4bf7-9679-244a5884106a) + ) + (wire (pts (xy 542.29 114.3) (xy 544.83 114.3)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1f1fa4e2-703b-4148-bb5c-0ce0491627c6) + ) + (wire (pts (xy 44.45 173.99) (xy 46.99 173.99)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1f804f47-192e-4c76-b10d-2c87ff51ab40) + ) + (wire (pts (xy 71.12 147.32) (xy 78.74 147.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1f8827cb-76dd-4fb5-8d94-7c095add6d24) + ) + (wire (pts (xy 289.56 109.22) (xy 292.1 109.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 200495b1-7bea-406b-a571-422469666ee7) + ) + (wire (pts (xy 22.86 26.67) (xy 22.86 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 205f95e8-72ba-42e1-9c86-72d89bc5aacb) + ) + (wire (pts (xy 104.14 41.91) (xy 104.14 46.99)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 20b67905-5d5e-48ed-bde4-1dba9d60a435) + ) + (wire (pts (xy 21.59 130.81) (xy 21.59 133.35)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 21499fcd-0dbb-4fc5-b146-59c45e319f47) + ) + (wire (pts (xy 542.29 160.02) (xy 544.83 160.02)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2167022b-fce1-41f7-8a2a-9ffaf774a9c6) + ) + (wire (pts (xy 323.85 248.92) (xy 323.85 246.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 21ac3b59-65b7-4e0d-8c19-4e045bf87290) + ) + (wire (pts (xy 491.49 124.46) (xy 494.03 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 21adf7ac-6402-485e-b8b8-870724d5a1a9) + ) + (wire (pts (xy 440.69 127) (xy 443.23 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 21e86ebb-cae5-4a18-b7cd-83a23c51b91a) + ) + (wire (pts (xy 161.29 391.16) (xy 163.83 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 22c9f320-9f1f-40da-a3c9-91566854d2d1) + ) + (wire (pts (xy 125.73 39.37) (xy 123.19 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 238d7aef-5b59-48d5-a5d9-886a3944d070) + ) + (wire (pts (xy 349.25 142.24) (xy 349.25 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 245d0d81-980d-49f9-aa64-a4b64d87d8c1) + ) + (wire (pts (xy 44.45 171.45) (xy 46.99 171.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 24f12bb2-2688-4cf5-bafc-56e6b820ac23) + ) + (wire (pts (xy 389.89 129.54) (xy 392.43 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 251966bc-a08f-4095-be05-8fcd3b4ed006) + ) + (polyline (pts (xy 17.78 234.95) (xy 17.78 402.59)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 257a5153-ef7d-4fcf-aeb2-653a41a29436) + ) + + (wire (pts (xy 289.56 119.38) (xy 292.1 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 26332cfe-a3de-4e3c-be87-ec0d1282b950) + ) + (wire (pts (xy 153.67 36.83) (xy 153.67 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 26460bf0-4292-4af5-96b6-cc839284de0f) + ) + (wire (pts (xy 306.07 271.78) (xy 311.15 271.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 26728b6e-9118-480b-99e3-604f9a910611) + ) + (wire (pts (xy 306.07 289.56) (xy 311.15 289.56)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 26e14888-7056-40ff-b5b3-cfe8935186b6) + ) + (polyline (pts (xy 576.58 229.87) (xy 233.68 229.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 26e6dafb-240c-4797-b53a-923236b65def) + ) + + (wire (pts (xy 176.53 360.68) (xy 179.07 360.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2700b97f-b588-4b58-962b-308b273a9977) + ) + (wire (pts (xy 491.49 167.64) (xy 494.03 167.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 279d2951-fcb3-43d9-87f2-7e31f28fa93e) + ) + (wire (pts (xy 389.89 139.7) (xy 392.43 139.7)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 27b55104-e431-4518-94f4-3dabec2c82e4) + ) + (wire (pts (xy 24.13 113.03) (xy 21.59 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 27bd2684-efab-43eb-af90-43cc81429580) + ) + (wire (pts (xy 135.89 120.65) (xy 135.89 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2840027d-c262-4eb9-82de-ae06b5192f94) + ) + (wire (pts (xy 220.98 137.16) (xy 223.52 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 290585a3-7309-417a-aa1e-ee260435c6be) + ) + (wire (pts (xy 361.95 129.54) (xy 373.38 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2925cfcc-4359-4244-8487-fdee5bca564b) + ) + (wire (pts (xy 148.59 297.18) (xy 148.59 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 292addb5-92c1-4793-a982-efbb3d28f60d) + ) + (wire (pts (xy 306.07 312.42) (xy 311.15 312.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2a057aa5-3b5a-424e-a2f5-7e27e5f7234d) + ) + (wire (pts (xy 491.49 149.86) (xy 494.03 149.86)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2a3b4518-1aa3-4a6c-9d3c-60361692c17c) + ) + (wire (pts (xy 21.59 146.05) (xy 21.59 148.59)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2a5947b6-415c-4f04-b75f-2c3ee7557b3d) + ) + (wire (pts (xy 373.38 129.54) (xy 373.38 156.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2af69f7d-d3b0-47bd-bb3a-ef908cd0e1d2) + ) + (wire (pts (xy 91.44 260.35) (xy 93.98 260.35)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2b02fbbe-6a7d-4c9c-8037-17dcaacc6eeb) + ) + (wire (pts (xy 22.86 256.54) (xy 22.86 250.19)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2beff319-e35b-4be2-87c9-cf6b62698c94) + ) + (wire (pts (xy 289.56 134.62) (xy 292.1 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2c01d830-bbe7-4f15-938d-26ab404864d0) + ) + (wire (pts (xy 57.15 243.84) (xy 57.15 246.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2c872d8e-e1d1-4946-b543-d123ae4918e5) + ) + (wire (pts (xy 289.56 144.78) (xy 289.56 156.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2ce7e4ef-4784-41ea-9bec-69e3adb11892) + ) + (wire (pts (xy 312.42 29.21) (xy 312.42 49.53)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2dd4e012-89c3-429f-ae21-cd1447758455) + ) + (wire (pts (xy 389.89 177.8) (xy 392.43 177.8)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2deb54e4-49d3-4190-bca0-41e49673e013) + ) + (wire (pts (xy 57.15 313.69) (xy 57.15 316.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2df8a9d4-3104-4c3e-bd6a-3ad5c1477b94) + ) + (wire (pts (xy 200.66 191.77) (xy 198.12 191.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2e219ece-6013-4648-b29a-5d140e0ac61f) + ) + (wire (pts (xy 336.55 269.24) (xy 341.63 269.24)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2e2edc46-fd49-4d46-b1b5-816eab2c9b99) + ) + (wire (pts (xy 146.05 57.15) (xy 123.19 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2e428465-3cf9-4465-9ded-f444ab3d5d10) + ) + (wire (pts (xy 289.56 106.68) (xy 292.1 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2e42caf8-b59d-4a6d-9c76-548c56a2cc84) + ) + (wire (pts (xy 323.85 322.58) (xy 323.85 320.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2eb8cd9e-47e3-49ec-95d4-aa005af8d54d) + ) + (wire (pts (xy 44.45 153.67) (xy 46.99 153.67)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2f4728b1-3760-4986-b2e2-34cb33b5c613) + ) + (wire (pts (xy 88.9 31.75) (xy 88.9 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2f5a58fe-bb0b-495b-b860-46b3640d5ac2) + ) + (wire (pts (xy 327.66 119.38) (xy 327.66 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2fcd0ea2-c378-4c59-a8ee-07704d1e6f6c) + ) + (wire (pts (xy 166.37 41.91) (xy 166.37 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 301219fc-1df0-458f-8814-dcd197cada97) + ) + (wire (pts (xy 289.56 139.7) (xy 292.1 139.7)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 30b5003c-9147-458c-86ff-7d3a51552c94) + ) + (wire (pts (xy 125.73 355.6) (xy 128.27 355.6)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 31ac7f1a-8063-467c-90ed-e72d5aaf574f) + ) + (wire (pts (xy 97.79 330.2) (xy 97.79 332.74)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 32ad1cef-bf9f-43aa-ad71-d3782a8797a4) + ) + (wire (pts (xy 269.24 44.45) (xy 274.32 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 32ddb2f8-114f-4f2e-9784-cf553a26cbb1) + ) + (wire (pts (xy 88.9 262.89) (xy 91.44 262.89)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 32e2c7e0-abf6-45f8-8c45-6f47b91fa090) + ) + (wire (pts (xy 57.15 311.15) (xy 57.15 313.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 32eb5481-4928-44cd-b969-298745e7dd16) + ) + (wire (pts (xy 552.45 57.15) (xy 554.99 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 336548b4-ac42-4238-b3f2-830ccd5d9d4d) + ) + (wire (pts (xy 276.86 292.1) (xy 276.86 289.56)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 33e8a850-4039-4a96-9c79-d9556e8f96bd) + ) + (wire (pts (xy 289.56 142.24) (xy 292.1 142.24)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 33fdf9e8-ff1b-435e-8405-387ba44780e9) + ) + (wire (pts (xy 21.59 135.89) (xy 24.13 135.89)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3429956f-8e0d-4cfb-9407-4200eb7f3d00) + ) + (wire (pts (xy 166.37 52.07) (xy 166.37 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 344191a2-0d5e-47d2-bbfe-885301a385fb) + ) + (wire (pts (xy 542.29 154.94) (xy 544.83 154.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 347abf68-5681-4df2-9d6d-0d35257b5b8d) + ) + (wire (pts (xy 330.2 57.15) (xy 335.28 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 34bab4c0-8966-4ce2-b574-119e29d51764) + ) + (wire (pts (xy 173.99 320.04) (xy 179.07 320.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 34d72d55-676a-4e8f-a2a8-9a0641a5ad92) + ) + (wire (pts (xy 276.86 156.21) (xy 289.56 156.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 35ec3a05-8846-460a-a193-2dc25d667496) + ) + (wire (pts (xy 173.99 332.74) (xy 179.07 332.74)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 360b4ab2-9083-4189-9d33-ffa6506e69d4) + ) + (wire (pts (xy 35.56 41.91) (xy 35.56 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 369ba21e-3228-4034-83ea-97ce525ccffc) + ) + (wire (pts (xy 542.29 165.1) (xy 544.83 165.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 373558ec-815d-422c-a2ad-0caf72d123c3) + ) + (wire (pts (xy 481.33 41.91) (xy 481.33 36.83)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 373edf88-f535-48a2-9b6d-29db2bf68f9c) + ) + (wire (pts (xy 143.51 391.16) (xy 146.05 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 375646dd-ee15-4d0f-9ffb-ee1ce8fa6927) + ) + (wire (pts (xy 491.49 111.76) (xy 494.03 111.76)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 375965a8-5f19-4137-9709-67aa165efedb) + ) + (wire (pts (xy 491.49 116.84) (xy 494.03 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 39b7ddc8-264b-4346-9a3a-27f433d5b390) + ) + (wire (pts (xy 140.97 388.62) (xy 140.97 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 39ece4cb-d566-4009-8e98-64c2fc9bdae7) + ) + (wire (pts (xy 140.97 391.16) (xy 143.51 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3aaedf3d-da99-424f-9790-99c05d11e2c0) + ) + (wire (pts (xy 292.1 111.76) (xy 289.56 111.76)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3aec06bc-00ed-4a9f-9b35-bc96799cb186) + ) + (wire (pts (xy 44.45 130.81) (xy 46.99 130.81)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3b367453-79fa-4734-a372-8255b1b1504c) + ) + (wire (pts (xy 440.69 177.8) (xy 443.23 177.8)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3b5802a1-6219-4842-a26c-d993df8be4d5) + ) + (wire (pts (xy 264.16 292.1) (xy 276.86 292.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3bd99a96-df3f-48e6-b3d6-be0a64932a91) + ) + (wire (pts (xy 487.68 36.83) (xy 487.68 40.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3c25ce09-56e0-4a4c-821c-4304248acf7b) + ) + (wire (pts (xy 129.54 184.15) (xy 134.62 184.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3c6bb3c8-97b1-4355-b6ae-93c6bb909d3b) + ) + (wire (pts (xy 289.56 137.16) (xy 292.1 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3d1809b0-293c-4d04-bd94-ff0594b5d152) + ) + (wire (pts (xy 349.25 109.22) (xy 361.95 109.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3e7af671-7444-470a-a18c-4596ea10986d) + ) + (wire (pts (xy 166.37 391.16) (xy 166.37 388.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3e7dc27a-ff91-4517-bf2b-ff4a48017a02) + ) + (wire (pts (xy 175.26 134.62) (xy 175.26 140.97)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3e824c7e-80fd-4041-9fa7-a4606a33c130) + ) + (wire (pts (xy 491.49 121.92) (xy 494.03 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3e8cd4a8-d20d-4acc-a531-f13d50e29686) + ) + (wire (pts (xy 60.96 41.91) (xy 60.96 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3eb01a23-c9a5-4759-bd10-4534d3bbde93) + ) + (wire (pts (xy 440.69 175.26) (xy 443.23 175.26)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3f7cecd9-5d9a-4916-9ac3-ec71694e33ea) + ) + (wire (pts (xy 336.55 266.7) (xy 341.63 266.7)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3f8f771a-1298-4ccc-b64b-d7ab6925ef3c) + ) + (wire (pts (xy 116.84 134.62) (xy 116.84 147.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3fade5b2-0d1b-42f6-83b4-da101c393846) + ) + (wire (pts (xy 542.29 147.32) (xy 544.83 147.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 40256a53-d60e-47de-ab5d-f37524c87eeb) + ) + (wire (pts (xy 96.52 127) (xy 96.52 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 40318d93-56ed-4c94-aeb3-db9bf62df44a) + ) + (wire (pts (xy 306.07 264.16) (xy 311.15 264.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 40e578f2-1ac9-4226-a5eb-3394be61171f) + ) + (wire (pts (xy 306.07 297.18) (xy 311.15 297.18)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 410277a1-1275-4bc9-a362-628a3ff19432) + ) + (wire (pts (xy 125.73 337.82) (xy 128.27 337.82)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4158905a-b39b-4290-99b8-f50ce86f3504) + ) + (wire (pts (xy 172.72 116.84) (xy 177.8 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4182a1ae-315a-4573-be68-e1664287ff35) + ) + (wire (pts (xy 306.07 274.32) (xy 311.15 274.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 41b76ae1-33a4-4f6a-be62-e7517cb2e6cb) + ) + (wire (pts (xy 478.79 41.91) (xy 481.33 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 42253752-c314-4219-9037-9d0b12294b07) + ) + (polyline (pts (xy 290.83 81.28) (xy 209.55 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 42a3af14-31e8-4b6d-b0ee-6999b1834f98) + ) + + (wire (pts (xy 176.53 377.19) (xy 194.31 377.19)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 42d5bebd-0a8b-4cdb-a16e-85d22e98b627) + ) + (wire (pts (xy 478.79 46.99) (xy 481.33 46.99)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 42db8e76-9f54-4900-a95d-51b6e08810a0) + ) + (wire (pts (xy 21.59 140.97) (xy 21.59 143.51)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4349b492-50ae-4659-9ccb-e78d2a99a17b) + ) + (wire (pts (xy 44.45 181.61) (xy 46.99 181.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 43b59754-6a01-4e09-b088-fef42b339c91) + ) + (wire (pts (xy 321.31 246.38) (xy 321.31 248.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 43fcfdfe-d6e5-45f2-a23b-63ed3d020efc) + ) + (wire (pts (xy 300.99 67.31) (xy 332.74 67.31)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 44159da4-acd2-45a2-bc31-1c71cc7bc755) + ) + (wire (pts (xy 534.67 39.37) (xy 532.13 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 44580f55-b7d4-472e-b687-5298e2b7b826) + ) + (wire (pts (xy 96.52 104.14) (xy 96.52 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 446c2043-7715-435d-8db5-cb999d68fdee) + ) + (wire (pts (xy 438.15 218.44) (xy 458.47 218.44)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 446c603d-ed3a-415b-a696-75bffde72dc6) + ) + (wire (pts (xy 251.46 279.4) (xy 264.16 279.4)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 44a42df7-f289-4075-9c1c-ffa2624982fc) + ) + (wire (pts (xy 200.66 194.31) (xy 200.66 196.85)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 44c2b40c-4656-482c-a0d1-3b49689988c5) + ) + (wire (pts (xy 158.75 388.62) (xy 158.75 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 44c5e8f5-eed2-4312-aff6-82a2cbf64da4) + ) + (wire (pts (xy 176.53 360.68) (xy 176.53 377.19)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 44eea8be-397b-4842-8168-ed359f6e6ed5) + ) + (wire (pts (xy 78.74 147.32) (xy 78.74 149.86)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 455f5765-3058-421d-8a2c-4ae8bcf25476) + ) + (wire (pts (xy 491.49 144.78) (xy 494.03 144.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 457af3c5-3fc6-448e-b5e5-bf9861ffda58) + ) + (wire (pts (xy 336.55 111.76) (xy 349.25 111.76)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 45d637bf-60d2-40ea-a2fb-cbc9d6beb301) + ) + (wire (pts (xy 97.79 330.2) (xy 128.27 330.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 45dd3737-1c49-42dd-bd32-60e51c4f2424) + ) + (wire (pts (xy 292.1 116.84) (xy 289.56 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4607faea-14f5-4156-bab2-48adf6605171) + ) + (wire (pts (xy 148.59 391.16) (xy 151.13 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4612e8bd-7100-43ea-b182-99fde63d9135) + ) + (wire (pts (xy 361.95 149.86) (xy 361.95 156.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 463542ca-466f-459a-ba2b-cb044ed2ecde) + ) + (wire (pts (xy 148.59 128.27) (xy 148.59 140.97)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 46698934-152a-493f-adb0-bde1cc045f57) + ) + (wire (pts (xy 161.29 281.94) (xy 161.29 284.48)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 468b878d-1240-497c-bcc4-2bc8dcb00b81) + ) + (polyline (pts (xy 576.58 81.28) (xy 518.16 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4887b041-b9e9-4002-ba58-5e4cbb3f3134) + ) + (polyline (pts (xy 17.78 86.36) (xy 228.6 86.36)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4896f049-0a15-4e9d-b393-9d43fb74a0dc) + ) + + (wire (pts (xy 306.07 281.94) (xy 311.15 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 489d770a-8d64-48be-be65-ba3104a6bb11) + ) + (wire (pts (xy 416.56 48.26) (xy 416.56 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 48ad4922-3cc5-4b6b-8edf-22c929264047) + ) + (wire (pts (xy 22.86 41.91) (xy 22.86 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 48d8cc14-18ee-4a68-ac0c-aa1e1b6896c3) + ) + (wire (pts (xy 542.29 152.4) (xy 544.83 152.4)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 48e7cc37-d130-410c-bb71-15858ae84580) + ) + (wire (pts (xy 510.54 52.07) (xy 510.54 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 48f309fb-a978-4188-90f8-05958c4072f9) + ) + (wire (pts (xy 35.56 57.15) (xy 48.26 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 48f89818-c2d7-4eb8-9eda-8fc6380e810d) + ) + (wire (pts (xy 238.76 109.22) (xy 251.46 109.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 49388404-6bdb-45bf-a9d0-fb7820e15025) + ) + (wire (pts (xy 300.99 29.21) (xy 312.42 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 495dc0db-8307-46cb-aff0-cec33c5ed984) + ) + (wire (pts (xy 114.3 57.15) (xy 123.19 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4972b7c4-a0eb-41e7-afe6-ac90176ab324) + ) + (wire (pts (xy 156.21 388.62) (xy 156.21 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4975f7b5-eccb-4895-be16-f2bea13d334e) + ) + (wire (pts (xy 542.29 208.28) (xy 544.83 208.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4a50ba85-6ca5-4533-a71e-525377d27c3e) + ) + (wire (pts (xy 389.89 165.1) (xy 392.43 165.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4ad13d79-d338-44f8-9d3e-8ea54a31ddaf) + ) + (polyline (pts (xy 406.4 17.78) (xy 406.4 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4ae549eb-96ae-4923-ba27-02b494dbf65d) + ) + + (wire (pts (xy 44.45 105.41) (xy 46.99 105.41)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4b481b8d-7dcf-495c-b133-2e81ea7684c5) + ) + (wire (pts (xy 438.15 204.47) (xy 438.15 198.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4b692530-b410-43d7-b738-28cab19edc1e) + ) + (wire (pts (xy 96.52 124.46) (xy 120.65 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4bb5f948-2e2d-4a47-b8c1-3457bdf9c8fd) + ) + (wire (pts (xy 388.62 41.91) (xy 391.16 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4c1494e1-4e5d-45a8-b9b5-a6404f16e383) + ) + (wire (pts (xy 327.66 111.76) (xy 327.66 114.3)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4c7d674b-e2ec-43cd-8ea0-76c57613cf71) + ) + (wire (pts (xy 173.99 358.14) (xy 179.07 358.14)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4ce07e42-8058-40a8-9df6-e561e74b0e8a) + ) + (wire (pts (xy 173.99 353.06) (xy 179.07 353.06)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4d06065b-9700-4016-a585-9780eb3bb168) + ) + (wire (pts (xy 458.47 218.44) (xy 458.47 220.98)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4d6798ca-a6ed-4225-b621-d077a4abf5fa) + ) + (wire (pts (xy 21.59 128.27) (xy 21.59 130.81)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4eee8140-419d-4229-8be5-a11f72104388) + ) + (wire (pts (xy 158.75 106.68) (xy 175.26 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4ef7b9a2-a784-4a65-8382-9629b7d8a37f) + ) + (wire (pts (xy 156.21 281.94) (xy 156.21 312.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4f3b0730-2195-4c8e-a518-46970ea1f9f4) + ) + (wire (pts (xy 389.89 144.78) (xy 392.43 144.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4faa0718-c638-4977-8bea-320646164ef8) + ) + (wire (pts (xy 22.86 57.15) (xy 35.56 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4ff8542a-239c-4e10-b5ee-bc8b1ea971a1) + ) + (wire (pts (xy 491.49 170.18) (xy 494.03 170.18)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 51cbccc5-0729-40bf-96e5-40d9df055cdc) + ) + (wire (pts (xy 118.11 342.9) (xy 109.22 342.9)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5200c365-5811-42c3-98cc-b992f4aaa315) + ) + (wire (pts (xy 330.2 62.23) (xy 335.28 62.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 520e0e79-ca53-4b53-adbc-2d50f1a1b8fe) + ) + (wire (pts (xy 542.29 111.76) (xy 544.83 111.76)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 541297ed-4fdc-4e28-8f22-6964ec06ec34) + ) + (wire (pts (xy 306.07 261.62) (xy 311.15 261.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 544c60f8-33c3-4072-9128-159b26301f32) + ) + (wire (pts (xy 306.07 254) (xy 311.15 254)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5674ce8a-3392-4411-803e-631fd34945b3) + ) + (polyline (pts (xy 290.83 17.78) (xy 290.83 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 57b01e3e-5658-4790-9929-5d90e4a6ac77) + ) + + (wire (pts (xy 44.45 156.21) (xy 46.99 156.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5842915e-9024-45f3-9575-72eafc47d951) + ) + (wire (pts (xy 532.13 40.64) (xy 534.67 40.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 584c993d-729f-4ee6-b6f1-5acc7e0dc030) + ) + (wire (pts (xy 21.59 133.35) (xy 24.13 133.35)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 58661765-9006-4c50-8c1a-11bfaf7ed73e) + ) + (wire (pts (xy 173.99 335.28) (xy 179.07 335.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 58ddc084-f217-4103-913d-bc5a8b35375b) + ) + (wire (pts (xy 289.56 132.08) (xy 292.1 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 58fa3498-d26c-43f5-b462-6d8e4aa5295d) + ) + (wire (pts (xy 491.49 139.7) (xy 494.03 139.7)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 59136047-fd9d-485b-874e-a42e2aa5019b) + ) + (wire (pts (xy 96.52 121.92) (xy 120.65 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 59397d93-cd1d-41c3-992f-687297bb7e0d) + ) + (wire (pts (xy 471.17 31.75) (xy 436.88 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5949260e-6ef7-48df-b2d9-7a94dadf44e1) + ) + (wire (pts (xy 140.97 391.16) (xy 140.97 393.7)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 59563e5d-9e9a-4b67-88d4-07736b4f3459) + ) + (wire (pts (xy 238.76 259.08) (xy 251.46 259.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 59641644-8f2f-4354-9478-808e9d971f89) + ) + (wire (pts (xy 306.07 287.02) (xy 311.15 287.02)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 59b4f748-5947-453e-b4c9-9178c5709e25) + ) + (wire (pts (xy 440.69 139.7) (xy 443.23 139.7)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 59c670dd-2b3f-4e0c-80b0-b01fee5ab382) + ) + (polyline (pts (xy 17.78 86.36) (xy 17.78 229.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 59e51687-5919-4761-865f-edc78958d8e1) + ) + + (wire (pts (xy 175.26 140.97) (xy 175.26 143.51)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 59f1922b-ef31-42a2-95db-c8077cfa26ba) + ) + (wire (pts (xy 22.86 250.19) (xy 57.15 250.19)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5a0a6747-ad16-4ae8-a8e4-2d81a6811c41) + ) + (wire (pts (xy 175.26 127) (xy 177.8 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5a22dff5-dc54-4a37-9297-eed8858a3d90) + ) + (wire (pts (xy 21.59 133.35) (xy 21.59 135.89)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5b28ed00-ea6e-4664-aa3f-5d08f7cb95e6) + ) + (wire (pts (xy 78.74 262.89) (xy 81.28 262.89)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5b2bad01-f188-4594-8072-59482286ba79) + ) + (wire (pts (xy 327.66 119.38) (xy 327.66 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5be3b952-085f-4e5a-b81c-c48fc56c2d66) + ) + (wire (pts (xy 327.66 121.92) (xy 327.66 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5c5aa0c4-e754-4a21-8948-2bff40a8da7b) + ) + (wire (pts (xy 172.72 137.16) (xy 173.99 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5c7fbc08-48df-4cee-ac4d-072ce61f930d) + ) + (wire (pts (xy 327.66 124.46) (xy 325.12 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5caa2afa-d37a-4ed4-95de-976453ff4a85) + ) + (wire (pts (xy 386.08 49.53) (xy 391.16 49.53)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5cc0b56b-6e50-48f8-a271-b96ccdef6334) + ) + (wire (pts (xy 173.99 330.2) (xy 179.07 330.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5cce4fdf-c32e-410c-b603-9d82067f4584) + ) + (wire (pts (xy 152.4 181.61) (xy 157.48 181.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5d766113-be3b-4679-a51e-bf7dec18de71) + ) + (wire (pts (xy 48.26 39.37) (xy 48.26 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5d87a124-ebd0-4542-9631-a0e6b149ee74) + ) + (wire (pts (xy 156.21 391.16) (xy 158.75 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5dc5ce79-d1a9-4c6f-b91f-ce48e019ebf5) + ) + (wire (pts (xy 336.55 264.16) (xy 341.63 264.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5e756d85-fd85-4dc5-aab1-145aeaf87068) + ) + (wire (pts (xy 542.29 198.12) (xy 544.83 198.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5eb79551-c28a-42e1-97cf-20f81bd34e12) + ) + (polyline (pts (xy 17.78 17.78) (xy 204.47 17.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5ecca5d2-4b1b-47ad-9be0-1d485a30441b) + ) + + (wire (pts (xy 44.45 123.19) (xy 46.99 123.19)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5f76939c-8290-4ee4-aaa6-3327a3b929fa) + ) + (wire (pts (xy 440.69 134.62) (xy 443.23 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5f9f11d6-db7f-46e6-a4b5-29330f05ab48) + ) + (wire (pts (xy 175.26 104.14) (xy 175.26 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 61733783-d68e-4a73-b814-31179468e1c1) + ) + (wire (pts (xy 109.22 391.16) (xy 125.73 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 61733783-d68e-4a73-b814-31179468e1c2) + ) + (wire (pts (xy 57.15 250.19) (xy 57.15 252.73)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6200df05-5505-446c-8b9e-cbeeddcf712d) + ) + (wire (pts (xy 336.55 156.21) (xy 336.55 158.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6209ab14-dd67-4fee-bd42-c87805aa955f) + ) + (wire (pts (xy 60.96 31.75) (xy 88.9 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 623aae9c-8b7d-4010-992c-f19b52e4be17) + ) + (wire (pts (xy 327.66 137.16) (xy 327.66 139.7)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6273470a-fbc7-4819-9aee-78ad6f6934a8) + ) + (wire (pts (xy 289.56 119.38) (xy 289.56 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 62a28c55-5434-4a6d-bbea-99355a92128d) + ) + (wire (pts (xy 251.46 259.08) (xy 264.16 259.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 62db9421-f1fe-4dc5-bcf1-a88f4b5a4786) + ) + (wire (pts (xy 67.31 262.89) (xy 78.74 262.89)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 62fe8319-36cd-4ffd-a478-3bf25968d988) + ) + (wire (pts (xy 542.29 200.66) (xy 544.83 200.66)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 62fecbdd-c088-4a6b-87a3-18ae1a7c69ba) + ) + (wire (pts (xy 97.79 187.96) (xy 97.79 196.85)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 63142c32-d538-4a5e-a542-53b49d9e802e) + ) + (wire (pts (xy 349.25 149.86) (xy 349.25 156.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 64c2bfad-4f1f-4fb3-bb82-9f1b5ce4775b) + ) + (wire (pts (xy 116.84 111.76) (xy 116.84 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6565f24a-5f0d-4498-9852-220e8600cf88) + ) + (polyline (pts (xy 209.55 17.78) (xy 209.55 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 65897012-ac5e-4cb6-a0d3-0e232acf9fb5) + ) + + (wire (pts (xy 440.69 129.54) (xy 443.23 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 65947a26-28bf-4ab1-a9a4-9d7cb6cda77d) + ) + (wire (pts (xy 440.69 132.08) (xy 443.23 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 65efa0b8-a73f-467d-960e-eb70c0bb5938) + ) + (wire (pts (xy 510.54 36.83) (xy 510.54 52.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 66733400-82c7-41db-ae5c-900cb7fdec9c) + ) + (wire (pts (xy 57.15 246.38) (xy 78.74 246.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 667a182c-7214-4410-820f-fa530c29e4fc) + ) + (wire (pts (xy 143.51 388.62) (xy 143.51 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 66da2dc1-3733-4c42-9648-3274768afd41) + ) + (wire (pts (xy 440.69 121.92) (xy 443.23 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 672715c8-ec89-4e83-a2e4-cd73a547132a) + ) + (wire (pts (xy 440.69 154.94) (xy 443.23 154.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 676e0639-c9a2-4f32-90c5-277c771397d4) + ) + (wire (pts (xy 55.88 31.75) (xy 60.96 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6778f539-2748-42f3-9455-7e20c9f1a506) + ) + (wire (pts (xy 238.76 246.38) (xy 251.46 246.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 67dfec32-3b46-4636-a8b7-fc59a119451c) + ) + (wire (pts (xy 21.59 140.97) (xy 24.13 140.97)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 67eb1e70-b10a-4e49-9562-63ed86a5c816) + ) + (wire (pts (xy 306.07 269.24) (xy 311.15 269.24)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6837edd1-0808-44ba-871a-f13c8040a564) + ) + (wire (pts (xy 91.44 41.91) (xy 88.9 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 68b708eb-9e04-42e0-8ce6-e41b36399d55) + ) + (wire (pts (xy 508 36.83) (xy 510.54 36.83)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6926dded-2187-4cf2-83a9-679765ab09fd) + ) + (wire (pts (xy 152.4 184.15) (xy 157.48 184.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 69347941-7484-441b-ae55-5f32bf3273fa) + ) + (wire (pts (xy 327.66 127) (xy 327.66 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 694619e0-d7f3-4ea9-95e9-79284d5ffbda) + ) + (wire (pts (xy 289.56 104.14) (xy 292.1 104.14)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 69726e01-87d0-467e-ba2a-d3d04e232bb1) + ) + (wire (pts (xy 151.13 391.16) (xy 153.67 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 69d38d8b-b567-4fb0-9b50-87a2258dc1b2) + ) + (wire (pts (xy 487.68 52.07) (xy 500.38 52.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6a26dcc3-ce01-4b39-8e01-e1e8213ed59d) + ) + (wire (pts (xy 194.31 377.19) (xy 194.31 381)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6bb113d6-aada-4745-91b4-acb131501a2c) + ) + (wire (pts (xy 466.09 208.28) (xy 468.63 208.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6c4551ce-f223-43ad-98b8-af893027b975) + ) + (wire (pts (xy 93.98 114.3) (xy 107.95 114.3)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6c57792e-d779-4f49-b4d8-0fb7ed1f5cf7) + ) + (wire (pts (xy 440.69 124.46) (xy 443.23 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6c6dc3f8-bc8b-4e5c-94f0-1fe3ce0e22e8) + ) + (wire (pts (xy 491.49 182.88) (xy 494.03 182.88)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6dcf6886-0a4d-4ce0-98e0-92f7fd125525) + ) + (wire (pts (xy 173.99 322.58) (xy 179.07 322.58)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6de676ee-fd66-4848-abf6-0fc8eb2b2349) + ) + (wire (pts (xy 389.89 127) (xy 392.43 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6e08c789-a001-41e3-95e7-dc5023624672) + ) + (wire (pts (xy 289.56 142.24) (xy 289.56 144.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6e128c27-fed1-456a-90ba-e010261300eb) + ) + (wire (pts (xy 336.55 276.86) (xy 341.63 276.86)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6e48c4e0-e120-4fc4-bae1-0626aa353135) + ) + (wire (pts (xy 491.49 157.48) (xy 494.03 157.48)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6e7303ce-08f4-490a-8be1-5139e695cb9c) + ) + (wire (pts (xy 201.93 281.94) (xy 215.9 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6e92d3cb-5aa5-43b2-b768-b37a51525714) + ) + (wire (pts (xy 93.98 124.46) (xy 96.52 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6ed2551d-e016-419d-8439-28ab90ad896e) + ) + (polyline (pts (xy 406.4 81.28) (xy 295.91 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6ed78892-26f4-4bfb-a91d-d467e66e2921) + ) + + (wire (pts (xy 175.26 292.1) (xy 175.26 294.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6f1866a2-0786-4b19-96b7-fed0c2abbd13) + ) + (wire (pts (xy 99.06 41.91) (xy 104.14 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6f565934-79e0-4309-ab8c-f5b6b7725ad3) + ) + (wire (pts (xy 104.14 41.91) (xy 125.73 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6f626a1a-2a74-4126-a54b-3e4f1469b8ef) + ) + (wire (pts (xy 481.33 36.83) (xy 487.68 36.83)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6fc6f5da-0a45-47ef-a130-ac1b7a6148de) + ) + (wire (pts (xy 349.25 129.54) (xy 361.95 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6fd3c2e0-b1ae-416f-96ed-2801614c742a) + ) + (wire (pts (xy 153.67 281.94) (xy 156.21 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 700efc3b-aed1-4eca-a2ca-fe128f14e18a) + ) + (wire (pts (xy 269.24 39.37) (xy 274.32 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 70265dc7-e112-4355-9932-7c409a42b6f2) + ) + (wire (pts (xy 264.16 101.6) (xy 276.86 101.6)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 70db106e-7b54-4552-95ff-502a2ea9e990) + ) + (wire (pts (xy 44.45 161.29) (xy 46.99 161.29)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 71870540-9d93-49ff-b300-aa1d15a588a0) + ) + (wire (pts (xy 440.69 147.32) (xy 443.23 147.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 718dba53-7a9f-4c42-aaa5-07406806c2ac) + ) + (wire (pts (xy 21.59 143.51) (xy 21.59 146.05)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 72a2303c-183a-45df-afea-e9a78495c8a5) + ) + (wire (pts (xy 542.29 187.96) (xy 544.83 187.96)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 72a4d0d7-f47b-410e-8b56-8f545f82e60a) + ) + (wire (pts (xy 143.51 36.83) (xy 153.67 36.83)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 72d42c4b-208c-4c3e-8ce1-bcb7b53aa6b2) + ) + (wire (pts (xy 128.27 327.66) (xy 83.82 327.66)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 72fceee3-0776-4261-aed4-3427d990421b) + ) + (wire (pts (xy 306.07 276.86) (xy 311.15 276.86)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 735f37c0-266e-4e04-9f8a-f6cde3127c80) + ) + (polyline (pts (xy 209.55 17.78) (xy 290.83 17.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 737ce8b1-8914-4f82-97b3-5d0ab9426ee4) + ) + (polyline (pts (xy 17.78 81.28) (xy 17.78 17.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 73b96d6c-9858-40cf-90a4-3f443e492358) + ) + + (wire (pts (xy 389.89 157.48) (xy 392.43 157.48)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 73d3b36f-4187-4742-b28c-8bf79bacfdc4) + ) + (wire (pts (xy 118.11 347.98) (xy 109.22 347.98)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7429922b-5c79-4449-bd3b-7c7f42578f08) + ) + (wire (pts (xy 107.95 134.62) (xy 107.95 147.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 745b9cfe-1b51-434b-b534-3ed480225cee) + ) + (wire (pts (xy 455.93 46.99) (xy 458.47 46.99)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 74867926-ead4-4ddb-98f9-13f7e3cd9af3) + ) + (wire (pts (xy 83.82 327.66) (xy 83.82 332.74)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 756af4c0-469a-459a-b932-2c391a01d8bd) + ) + (wire (pts (xy 44.45 148.59) (xy 46.99 148.59)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 757d58ea-1107-47cd-9203-33d58c26a22d) + ) + (wire (pts (xy 36.83 307.34) (xy 36.83 313.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 75cefb66-2d1d-4da9-a049-46cede6bf401) + ) + (wire (pts (xy 327.66 109.22) (xy 327.66 111.76)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 75d33f47-1b62-463b-919d-b7c37f40bdb9) + ) + (wire (pts (xy 238.76 289.56) (xy 238.76 292.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 75ea435e-15e2-4376-8253-d2a0028e9826) + ) + (wire (pts (xy 44.45 128.27) (xy 46.99 128.27)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7617bc3d-7441-440e-b56c-c546be3284f0) + ) + (wire (pts (xy 173.99 325.12) (xy 179.07 325.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 76430964-8daf-473d-b38f-ddc08d95f19d) + ) + (wire (pts (xy 389.89 175.26) (xy 392.43 175.26)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 76c62c32-475f-454d-bc7f-a0a51e8818d2) + ) + (wire (pts (xy 349.25 111.76) (xy 361.95 111.76)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 77522421-42d1-4113-95eb-6245131a8c34) + ) + (wire (pts (xy 151.13 281.94) (xy 151.13 312.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 77b08392-9ec1-4f8d-95ed-a08e2ee74f99) + ) + (wire (pts (xy 491.49 137.16) (xy 494.03 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 77df6eea-04b3-43ad-898d-803792ec18cb) + ) + (wire (pts (xy 389.89 132.08) (xy 391.16 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 77e5169f-0ea3-4de8-adfb-6176e496a736) + ) + (wire (pts (xy 436.88 48.26) (xy 436.88 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 77f1eb26-0f3d-4a68-915e-f4f4dd70bf2b) + ) + (wire (pts (xy 440.69 157.48) (xy 443.23 157.48)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 781cbca6-3f23-4561-a1d6-407d66d0ae71) + ) + (wire (pts (xy 251.46 292.1) (xy 264.16 292.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 783df723-d0be-47ad-a095-76da41eec13f) + ) + (wire (pts (xy 544.83 39.37) (xy 557.53 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7843e435-cc51-47ef-aa60-6fc6d001b317) + ) + (wire (pts (xy 491.49 172.72) (xy 494.03 172.72)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 79104898-9d62-49a1-be0a-aaee2e9d93e5) + ) + (wire (pts (xy 109.22 342.9) (xy 109.22 325.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 795b0752-16f5-4549-97dc-cc3b68ca175d) + ) + (wire (pts (xy 95.25 190.5) (xy 100.33 190.5)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 79a8835f-5274-4415-8a48-68e7013550ae) + ) + (wire (pts (xy 21.59 151.13) (xy 21.59 153.67)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 79dcfac6-9187-44f5-8dcc-e81970b713dc) + ) + (wire (pts (xy 83.82 340.36) (xy 83.82 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7a9639ff-5642-4975-947f-1d6ab42b0daf) + ) + (wire (pts (xy 156.21 281.94) (xy 161.29 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7b096b15-5a48-41f1-a10c-404350e5cbf5) + ) + (wire (pts (xy 336.55 256.54) (xy 341.63 256.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7b591666-9ad7-49bf-a2e5-bfca0931771c) + ) + (wire (pts (xy 238.76 256.54) (xy 238.76 259.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7b71a269-bdff-412b-9d8e-8ce9f53cdd1e) + ) + (wire (pts (xy 256.54 54.61) (xy 256.54 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7b91cb09-fbc7-45b5-9f37-7f59d72f1395) + ) + (wire (pts (xy 143.51 44.45) (xy 146.05 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7be707c0-10a5-4a1b-a370-783cfed0feaa) + ) + (wire (pts (xy 57.15 293.37) (xy 57.15 295.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7be77875-26ca-4826-b1b9-03ba6e6fd888) + ) + (wire (pts (xy 289.56 121.92) (xy 292.1 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7bf356cb-503c-41e6-b3c9-3332f8ab613c) + ) + (wire (pts (xy 64.77 303.53) (xy 67.31 303.53)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7c0b91af-fa0b-4244-80e4-0c168735aed0) + ) + (wire (pts (xy 166.37 41.91) (xy 166.37 34.29)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7c4d372d-95c0-4365-91f5-16f7881ecc0f) + ) + (wire (pts (xy 173.99 360.68) (xy 176.53 360.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7c52f412-bb84-4fc9-8abd-77bbfd17d063) + ) + (wire (pts (xy 468.63 29.21) (xy 416.56 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7c591d0f-3f4e-4316-915b-96ac7272144e) + ) + (wire (pts (xy 44.45 133.35) (xy 46.99 133.35)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7cfd98b1-482b-4b1e-a7f1-adec7ceeb7ef) + ) + (wire (pts (xy 95.25 187.96) (xy 97.79 187.96)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7d176c82-e187-4ead-85be-1f09678736ce) + ) + (wire (pts (xy 389.89 137.16) (xy 392.43 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7d596d0e-e140-442b-b46b-285a8b8170ca) + ) + (wire (pts (xy 175.26 294.64) (xy 175.26 297.18)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7d5c5631-6160-496e-be40-b4b350ac2046) + ) + (wire (pts (xy 321.31 320.04) (xy 321.31 322.58)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7e29385a-9af1-49cc-ac08-bee58ab5e943) + ) + (wire (pts (xy 542.29 116.84) (xy 544.83 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7e7936e7-43e1-47fd-831d-ee03ca65e882) + ) + (wire (pts (xy 327.66 116.84) (xy 327.66 114.3)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7ee96a14-a063-4a18-a64f-deb51e00f58f) + ) + (wire (pts (xy 57.15 267.97) (xy 57.15 270.51)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7ef2c318-9c0f-4735-8e86-088668055d83) + ) + (wire (pts (xy 175.26 281.94) (xy 189.23 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7efb8515-b86e-4203-b6a2-2ebf487c022e) + ) + (wire (pts (xy 198.12 194.31) (xy 200.66 194.31)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7f77b110-3d40-431d-8721-b66d4851185a) + ) + (wire (pts (xy 361.95 119.38) (xy 373.38 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7f7d76bb-7d18-4c5b-bea9-cf03fdae0bd5) + ) + (wire (pts (xy 256.54 26.67) (xy 256.54 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7f967a2e-aab7-4c50-8574-742163e67487) + ) + (wire (pts (xy 60.96 57.15) (xy 48.26 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 80b1bffa-d7c1-4411-a72a-7b6d513a577b) + ) + (polyline (pts (xy 411.48 17.78) (xy 411.48 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 80ce55a5-360a-4bb0-a890-11ec650a020c) + ) + + (wire (pts (xy 455.93 41.91) (xy 458.47 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 80fc088e-ae86-46a5-a569-b087ea723cfb) + ) + (polyline (pts (xy 228.6 234.95) (xy 228.6 402.59)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 81687433-7a8e-4834-805f-3f7720bd7dcf) + ) + + (wire (pts (xy 361.95 109.22) (xy 373.38 109.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 81bc9412-767c-420b-8a9a-58c4e5a17120) + ) + (wire (pts (xy 146.05 281.94) (xy 146.05 297.18)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 827e919c-8bcb-4d5f-a787-64274f5c7c3e) + ) + (wire (pts (xy 22.86 264.16) (xy 22.86 270.51)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 82996e6c-12c4-4e2b-a5fe-66c2d5cb2848) + ) + (wire (pts (xy 491.49 152.4) (xy 494.03 152.4)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 82c5b054-f3df-4cb2-99f0-2c7a849da657) + ) + (wire (pts (xy 148.59 281.94) (xy 151.13 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 82d00928-eb9c-476c-aba3-d4585d56d269) + ) + (wire (pts (xy 44.45 120.65) (xy 46.99 120.65)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 82f8b0d1-d269-4bd4-b3dc-c81bc67a2350) + ) + (wire (pts (xy 173.99 342.9) (xy 179.07 342.9)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 83447a60-2ffe-4c96-a458-f9de9c608642) + ) + (wire (pts (xy 289.56 132.08) (xy 289.56 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 83643248-92de-4261-8fb3-c5bd84494cf6) + ) + (wire (pts (xy 238.76 292.1) (xy 238.76 294.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8389082b-d736-45b7-a1ab-09e2c25a7513) + ) + (wire (pts (xy 416.56 29.21) (xy 416.56 40.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 83aa4f26-f13c-4d41-a989-bafacb170fe4) + ) + (wire (pts (xy 35.56 31.75) (xy 40.64 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 83bea3af-e7bd-4a04-8a13-96f336971d4b) + ) + (wire (pts (xy 21.59 128.27) (xy 24.13 128.27)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 83ff0daf-b2c4-4465-9223-e20f42436c88) + ) + (wire (pts (xy 325.12 116.84) (xy 327.66 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 842cd086-f2ed-498f-9b6a-b443248a763d) + ) + (wire (pts (xy 386.08 46.99) (xy 391.16 46.99)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8464a5cc-4367-4279-a932-036d414cd4ac) + ) + (wire (pts (xy 93.98 121.92) (xy 96.52 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 851aef86-2f94-4e39-ac9c-6a8adeafbbbc) + ) + (wire (pts (xy 336.55 274.32) (xy 341.63 274.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 856b7979-8d92-4922-90e2-b99e43c823f8) + ) + (wire (pts (xy 78.74 147.32) (xy 107.95 147.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 859bb1a0-2c8f-4619-aa66-1dac508f2576) + ) + (wire (pts (xy 289.56 137.16) (xy 289.56 139.7)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 85c6f865-06f4-48bd-86a4-06b0bb455a14) + ) + (wire (pts (xy 491.49 147.32) (xy 494.03 147.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 85cccb4a-0a02-4c07-a6ca-0456208032b8) + ) + (wire (pts (xy 542.29 203.2) (xy 544.83 203.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8633b2a0-f062-4cbb-b981-515787ed3720) + ) + (wire (pts (xy 201.93 292.1) (xy 201.93 294.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 87185968-df4f-49d3-b32f-dfb407ff0ae6) + ) + (wire (pts (xy 189.23 281.94) (xy 189.23 284.48)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8734117c-1f79-48ae-add5-960a22fa2659) + ) + (wire (pts (xy 97.79 340.36) (xy 97.79 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 873a79b2-11c6-4929-8566-bf16ae5f8dfb) + ) + (wire (pts (xy 44.45 110.49) (xy 46.99 110.49)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 875fe62b-7a91-4b31-abdf-c0e797445687) + ) + (wire (pts (xy 542.29 195.58) (xy 544.83 195.58)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 87d3a8c6-08cc-4e2d-bd79-2a3104a4bb64) + ) + (wire (pts (xy 109.22 320.04) (xy 128.27 320.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 87eda974-678a-4121-8ac4-f75acecbe116) + ) + (wire (pts (xy 44.45 140.97) (xy 46.99 140.97)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 88326a74-734a-44fc-9a28-6f9bcba221c8) + ) + (wire (pts (xy 289.56 111.76) (xy 289.56 109.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 88514ba3-3c33-4eef-8020-c02f58bae04f) + ) + (wire (pts (xy 57.15 270.51) (xy 57.15 273.05)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 890a8c9a-5163-48e3-93f9-cc66ee85ed34) + ) + (wire (pts (xy 135.89 128.27) (xy 135.89 140.97)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 89106ef2-acc4-425a-aad8-27315241bdff) + ) + (wire (pts (xy 391.16 105.41) (xy 391.16 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 89948393-35df-487e-b714-0a18cfc2ef8b) + ) + (polyline (pts (xy 518.16 17.78) (xy 518.16 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 89f12562-d575-498f-b2b9-c3c853162107) + ) + (polyline (pts (xy 518.16 17.78) (xy 576.58 17.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8a13121f-7f6e-4298-8720-b82e924bf1cb) + ) + + (wire (pts (xy 189.23 294.64) (xy 201.93 294.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8a21fa8f-f55c-480a-b34c-282e21eaadc7) + ) + (wire (pts (xy 179.07 52.07) (xy 179.07 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8afb5bef-2837-4d02-b864-31fc5df72220) + ) + (wire (pts (xy 129.54 186.69) (xy 134.62 186.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8b0992b3-bbdf-47ea-80c8-23e663cd4501) + ) + (wire (pts (xy 389.89 121.92) (xy 392.43 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8b5d8da3-35b9-4019-87b0-0cf35fc64d17) + ) + (wire (pts (xy 325.12 109.22) (xy 327.66 109.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8b90afdf-5b75-4c38-9e9d-7b7d99faa7c5) + ) + (wire (pts (xy 386.08 62.23) (xy 391.16 62.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8bc8c3ae-9451-41e6-a70b-d700ad6748a3) + ) + (wire (pts (xy 21.59 148.59) (xy 24.13 148.59)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8c7b0831-1ebc-4ebb-aa1c-e66b008f225d) + ) + (wire (pts (xy 107.95 147.32) (xy 116.84 147.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8c887745-fbfd-4482-ae6a-49cee474d447) + ) + (wire (pts (xy 238.76 281.94) (xy 238.76 279.4)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8cbd6768-47a0-4c4a-867f-adeeb5d285cd) + ) + (wire (pts (xy 327.66 101.6) (xy 327.66 104.14)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8cf18105-108f-4b95-8671-31f202ef9854) + ) + (wire (pts (xy 389.89 180.34) (xy 392.43 180.34)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8d244b70-20ae-4c55-a2cd-a84698adbb40) + ) + (wire (pts (xy 194.31 374.65) (xy 194.31 377.19)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8d349747-f503-4312-b5cb-ace97d4c5ca4) + ) + (wire (pts (xy 191.77 59.69) (xy 191.77 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8d6c8857-c0bb-4d7f-99ff-41ff8072f38a) + ) + (wire (pts (xy 532.13 39.37) (xy 532.13 40.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8d756aea-5495-4870-b54a-784f0bf6efac) + ) + (wire (pts (xy 317.5 39.37) (xy 317.5 54.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8da57899-efad-4e7f-ab59-706aa1030beb) + ) + (wire (pts (xy 491.49 165.1) (xy 494.03 165.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8dcad18a-bd7e-45c6-ad07-7a70e3257d54) + ) + (wire (pts (xy 172.72 129.54) (xy 177.8 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8e6351d1-0b1d-444c-b1d7-68a8b93abb0f) + ) + (wire (pts (xy 481.33 46.99) (xy 481.33 52.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8e93d6c7-1c5a-45fa-89a5-f65017d979fa) + ) + (wire (pts (xy 175.26 294.64) (xy 189.23 294.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8e9f0149-64fc-4baa-821b-cf2dca6f8541) + ) + (wire (pts (xy 440.69 160.02) (xy 443.23 160.02)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8f0037eb-80d3-4bdd-b87e-6a9354ddc4db) + ) + (wire (pts (xy 44.45 125.73) (xy 46.99 125.73)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8fcd2ba2-efac-4b4f-a706-883667cd6e6e) + ) + (wire (pts (xy 143.51 41.91) (xy 166.37 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 90134005-5851-4997-9f09-a94ec90e9fe6) + ) + (wire (pts (xy 289.56 127) (xy 289.56 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 90b018c7-8a55-4435-b822-2b1c1d08774e) + ) + (wire (pts (xy 175.26 134.62) (xy 177.8 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 91490558-3308-4697-9029-61f2f1bc372e) + ) + (wire (pts (xy 332.74 71.12) (xy 332.74 73.66)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 91687566-796d-43be-8c6f-f14d80b2d32c) + ) + (wire (pts (xy 256.54 29.21) (xy 214.63 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 91953eca-2749-4adf-9224-bf911faadfdd) + ) + (wire (pts (xy 44.45 163.83) (xy 46.99 163.83)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 91c524b9-eb2b-427e-a9f3-7970fb32c42e) + ) + (wire (pts (xy 264.16 279.4) (xy 276.86 279.4)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9208977a-3c02-466f-9747-ba7d551bcf7f) + ) + (wire (pts (xy 158.75 134.62) (xy 173.99 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 921481b3-2aa4-4b77-9de3-316405421fda) + ) + (wire (pts (xy 306.07 304.8) (xy 311.15 304.8)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9260c3eb-1ba6-49e8-babc-e5ce8ba957fa) + ) + (wire (pts (xy 173.99 350.52) (xy 179.07 350.52)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 92b5d4be-93af-499b-8f3a-73b7f5f9c89f) + ) + (wire (pts (xy 542.29 185.42) (xy 544.83 185.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 92f3cd7d-d6fe-45b9-b280-44f3ff8bc571) + ) + (wire (pts (xy 215.9 292.1) (xy 215.9 294.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9371be6c-7c24-4546-a599-8fd31b068067) + ) + (wire (pts (xy 44.45 257.81) (xy 46.99 257.81)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9396c74e-8fcd-47a5-8c19-299f98c8171a) + ) + (wire (pts (xy 161.29 292.1) (xy 161.29 294.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 939bb037-beda-4a11-b373-3d097823a655) + ) + (wire (pts (xy 104.14 54.61) (xy 104.14 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 93b59317-627f-4c9e-825c-d30ee44cb934) + ) + (wire (pts (xy 173.99 327.66) (xy 179.07 327.66)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 93bff9d7-9c26-4269-a132-426a43cb9dad) + ) + (wire (pts (xy 215.9 284.48) (xy 215.9 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 94265119-4919-46ad-9e6a-f2d12d28d23d) + ) + (wire (pts (xy 321.31 322.58) (xy 321.31 325.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 946797dd-b5d8-4b37-929b-65dcdd5268fc) + ) + (wire (pts (xy 88.9 31.75) (xy 153.67 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 953ba648-32ba-437b-beee-09f47b973a4c) + ) + (wire (pts (xy 311.15 299.72) (xy 308.61 299.72)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 957bd002-371c-4542-ab50-90c1c2fcacad) + ) + (polyline (pts (xy 513.08 81.28) (xy 411.48 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 95c93166-e336-47df-a605-7f79594456dc) + ) + + (wire (pts (xy 151.13 388.62) (xy 151.13 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 95cf3d8b-7c23-4c53-a955-c725274fbc3c) + ) + (wire (pts (xy 251.46 246.38) (xy 251.46 248.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 96062ebf-6b65-4238-9b78-0ab472a3c91b) + ) + (wire (pts (xy 325.12 104.14) (xy 327.66 104.14)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 96707812-5f14-443a-97d6-ec9e987b4583) + ) + (wire (pts (xy 327.66 142.24) (xy 336.55 142.24)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 96d9b3f5-eeb3-4120-8e71-035f5334ddff) + ) + (wire (pts (xy 109.22 281.94) (xy 109.22 320.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 96dc7585-706d-4cbf-bee0-c8cea18f982e) + ) + (wire (pts (xy 336.55 149.86) (xy 336.55 156.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9758da75-d830-4d37-8b3a-b5ba0c2c9b0a) + ) + (wire (pts (xy 194.31 364.49) (xy 194.31 367.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 97e6b77f-ec18-4eb8-9c4a-4f1c5709d4c0) + ) + (wire (pts (xy 542.29 193.04) (xy 544.83 193.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 97f668d8-a549-47ec-b868-5fabf1bccdca) + ) + (wire (pts (xy 300.99 44.45) (xy 300.99 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 98062cb1-a2dd-4613-9aa4-dcd39b4861ea) + ) + (wire (pts (xy 440.69 114.3) (xy 443.23 114.3)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 983208f8-2e3f-4b58-b27e-bf1756f9db86) + ) + (wire (pts (xy 95.25 193.04) (xy 100.33 193.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 98d1248b-3a9a-481f-8dcd-94af924602e8) + ) + (wire (pts (xy 276.86 279.4) (xy 276.86 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 98d7fac1-a2c2-4c59-84d3-bd4a92632a26) + ) + (wire (pts (xy 386.08 54.61) (xy 391.16 54.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 999eb7dc-fb5a-40eb-a2fc-23c706341213) + ) + (wire (pts (xy 510.54 52.07) (xy 508 52.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9a0baa06-c1d4-4d03-b40e-71754829df76) + ) + (wire (pts (xy 388.62 39.37) (xy 388.62 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9a0edb64-e68d-4791-95b8-c7577838a022) + ) + (wire (pts (xy 327.66 134.62) (xy 327.66 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9a5862ee-851f-46dc-b537-f62deebf8adb) + ) + (wire (pts (xy 251.46 279.4) (xy 251.46 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9acf61f1-5c02-4025-8ace-ef4972417af5) + ) + (wire (pts (xy 238.76 259.08) (xy 238.76 261.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9b0d9600-3f53-41c7-ab53-32ba848dd815) + ) + (wire (pts (xy 323.85 246.38) (xy 321.31 246.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9b0e9ba3-fed2-48c7-9e52-6f7b8aacfd69) + ) + (wire (pts (xy 146.05 57.15) (xy 166.37 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9b1b7805-740d-4d79-99e4-884c294c8371) + ) + (wire (pts (xy 327.66 114.3) (xy 325.12 114.3)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9ba05756-bd3d-41df-90c2-8473f668051f) + ) + (wire (pts (xy 132.08 191.77) (xy 132.08 196.85)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9cb28d85-622e-4054-abe5-ba17b2f52d35) + ) + (wire (pts (xy 327.66 132.08) (xy 361.95 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9cc5c1ba-359d-458c-81ec-94773f4eb252) + ) + (wire (pts (xy 542.29 119.38) (xy 544.83 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9f27558a-7f77-476d-943a-29357ddfd502) + ) + (wire (pts (xy 389.89 170.18) (xy 392.43 170.18)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9f30acdd-ff73-4c09-bfc2-dc678b064b8e) + ) + (wire (pts (xy 306.07 292.1) (xy 311.15 292.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9f891ed1-c16c-482c-9d03-c742e7110c33) + ) + (wire (pts (xy 129.54 181.61) (xy 134.62 181.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9fe2d872-768c-41a0-84fc-4d2de2cecb24) + ) + (wire (pts (xy 22.86 270.51) (xy 57.15 270.51)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a04afd0f-dae2-45a3-b793-4b24560568c6) + ) + (wire (pts (xy 152.4 186.69) (xy 157.48 186.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a07929ec-f0c8-4259-9904-309e1dae4c67) + ) + (wire (pts (xy 468.63 59.69) (xy 510.54 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a10705d6-83b1-46d5-af89-78b6f7ddb5a1) + ) + (wire (pts (xy 153.67 388.62) (xy 153.67 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a1161bc9-0969-4a80-9c9e-acd901d602c6) + ) + (wire (pts (xy 93.98 119.38) (xy 96.52 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a17e6b7c-4624-4ef0-a7fe-7b11426894b5) + ) + (wire (pts (xy 128.27 378.46) (xy 125.73 378.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a1b92711-5470-4f31-8c8c-ed9f387d6f3d) + ) + (wire (pts (xy 332.74 67.31) (xy 332.74 71.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a1d7cbc8-1978-4b3e-8597-f1f714d9144f) + ) + (wire (pts (xy 389.89 152.4) (xy 392.43 152.4)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a25ab37e-7b6d-495b-92ec-310023e4088a) + ) + (wire (pts (xy 44.45 151.13) (xy 46.99 151.13)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a2708814-14f3-4fc6-af9d-82469b0925ce) + ) + (wire (pts (xy 21.59 100.33) (xy 21.59 105.41)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a2d203fe-bb06-46c2-9862-a90fbaaf5997) + ) + (wire (pts (xy 158.75 391.16) (xy 161.29 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a2d5c8da-c065-4abd-84cf-63ad2eec3e98) + ) + (wire (pts (xy 389.89 162.56) (xy 392.43 162.56)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a2e0598d-4f4f-43c9-ba8b-a9254a31d2b3) + ) + (wire (pts (xy 349.25 101.6) (xy 361.95 101.6)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a31edaf4-0ccd-470a-ab10-a01e0393a9b9) + ) + (wire (pts (xy 471.17 34.29) (xy 471.17 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a36ba794-ec41-4d29-9e60-805d8bbca246) + ) + (wire (pts (xy 175.26 121.92) (xy 177.8 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a43ee001-7fad-4d7f-a81b-ae600edb8122) + ) + (wire (pts (xy 251.46 101.6) (xy 264.16 101.6)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a459f4fa-a284-4702-8581-9e1fa06c424b) + ) + (wire (pts (xy 21.59 146.05) (xy 24.13 146.05)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a47b5d24-c722-4a9c-97a9-50e1193eb2c9) + ) + (wire (pts (xy 44.45 186.69) (xy 46.99 186.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a4c8a5d6-3621-4a70-9a88-9650a1354751) + ) + (wire (pts (xy 44.45 166.37) (xy 46.99 166.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a55d44cd-3652-4592-9f4f-19e130b2c711) + ) + (wire (pts (xy 223.52 137.16) (xy 223.52 143.51)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a560330c-0f7e-4cf4-9551-ec32e7033384) + ) + (wire (pts (xy 256.54 52.07) (xy 256.54 54.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a587a2ad-0ab9-462d-a9d5-36bd718da64f) + ) + (wire (pts (xy 491.49 177.8) (xy 494.03 177.8)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a5d704ae-c459-4219-8ea6-c7cf8d191a69) + ) + (wire (pts (xy 125.73 378.46) (xy 125.73 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a6818933-bef8-4476-bc5b-de46c8170c48) + ) + (wire (pts (xy 440.69 142.24) (xy 443.23 142.24)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a691f7c8-0fbb-49f5-8615-91af50a749ee) + ) + (wire (pts (xy 306.07 256.54) (xy 311.15 256.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a783f323-1cf4-46a1-ac3a-d481ef43c249) + ) + (wire (pts (xy 114.3 54.61) (xy 114.3 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a795055e-fc8e-4160-a5c2-b736d6a4dc04) + ) + (wire (pts (xy 161.29 281.94) (xy 175.26 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a85a4105-4c28-4207-a3aa-efa4d1f87a36) + ) + (wire (pts (xy 327.66 121.92) (xy 336.55 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a8631a38-6d10-4b03-a2fe-8a4d7bbfe8e1) + ) + (wire (pts (xy 135.89 140.97) (xy 148.59 140.97)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a9a3a97c-98bf-42d9-8a6e-27650a8d280f) + ) + (wire (pts (xy 251.46 289.56) (xy 251.46 292.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid aa8b50fc-c901-4c8e-8f81-7181f9761faf) + ) + (wire (pts (xy 325.12 127) (xy 327.66 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ab9a9293-adbe-4c9c-9592-545e98595b02) + ) + (wire (pts (xy 179.07 57.15) (xy 191.77 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid aba51e74-d5d3-4573-acb8-6f606acb0cb5) + ) + (wire (pts (xy 172.72 124.46) (xy 177.8 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid abd4c53a-9695-4bd1-b99f-2c8a769a690a) + ) + (wire (pts (xy 251.46 256.54) (xy 251.46 259.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ae477a67-8292-4807-ad44-2611ff2ebeb2) + ) + (wire (pts (xy 436.88 31.75) (xy 436.88 40.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ae781d3c-3eab-4695-85d4-b9098b2703a5) + ) + (wire (pts (xy 91.44 262.89) (xy 91.44 260.35)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ae84813a-7193-49dc-b4bd-0a957b319357) + ) + (wire (pts (xy 146.05 44.45) (xy 146.05 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid aea2bef4-417e-4f61-b981-c54ff155319c) + ) + (wire (pts (xy 191.77 39.37) (xy 191.77 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b0263f23-e9c4-44dc-9eb6-2a685bb454e7) + ) + (wire (pts (xy 330.2 41.91) (xy 332.74 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b0c3f19f-7257-49e8-8a15-8c312087c4b9) + ) + (wire (pts (xy 327.66 144.78) (xy 327.66 142.24)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b0d0f6e3-6e13-400d-8c3c-fd810ff6c2df) + ) + (wire (pts (xy 308.61 299.72) (xy 308.61 246.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b14f1ca0-49d1-4b10-b0b5-9cf006837624) + ) + (wire (pts (xy 389.89 116.84) (xy 392.43 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b17d6108-6100-4333-ba80-0bdf73e51951) + ) + (wire (pts (xy 491.49 142.24) (xy 494.03 142.24)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b18db09d-c0d3-487b-ab58-074acd698774) + ) + (polyline (pts (xy 233.68 234.95) (xy 360.68 234.95)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b262fc8b-b9fd-4fa3-8320-e26033473846) + ) + + (wire (pts (xy 289.56 121.92) (xy 289.56 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b2bc23db-f340-4c8c-92ea-5ac12aaacdb8) + ) + (wire (pts (xy 491.49 119.38) (xy 494.03 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b36bfce4-b975-4a8d-97db-9c8dc37798b5) + ) + (wire (pts (xy 289.56 106.68) (xy 289.56 104.14)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b3a696eb-d3f3-4532-8099-33634820097f) + ) + (wire (pts (xy 491.49 180.34) (xy 494.03 180.34)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b3e2dce7-dc88-4b47-a97e-56627cd5c768) + ) + (wire (pts (xy 21.59 138.43) (xy 21.59 140.97)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b3fb54d9-e1cf-4bbe-9605-589f0917679b) + ) + (wire (pts (xy 36.83 293.37) (xy 36.83 299.72)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b3fb7231-5b2e-47ba-8cca-371822d6a34d) + ) + (wire (pts (xy 21.59 151.13) (xy 24.13 151.13)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b460bdc3-dd59-4f22-a60e-75e4f0832123) + ) + (wire (pts (xy 191.77 57.15) (xy 191.77 52.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b4f88096-08f8-4a32-8d3f-75cdc0ba46f6) + ) + (wire (pts (xy 388.62 44.45) (xy 388.62 71.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b5a8d6d5-00ff-45c3-b1ab-a4423a6d7177) + ) + (wire (pts (xy 44.45 107.95) (xy 46.99 107.95)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b6b105b4-7ec3-4420-8e35-7b6235a9f590) + ) + (wire (pts (xy 542.29 157.48) (xy 544.83 157.48)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b6daac44-8a6a-4a36-bda0-dcfe97993990) + ) + (wire (pts (xy 332.74 41.91) (xy 335.28 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b734ae5a-4944-409f-9ae8-3300d6dbe0f0) + ) + (wire (pts (xy 440.69 116.84) (xy 443.23 116.84)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b78411d0-1a11-47d1-a15c-49374fa94375) + ) + (wire (pts (xy 557.53 39.37) (xy 560.07 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b785546e-bd61-449b-9e37-9ef0ba694e1a) + ) + (wire (pts (xy 22.86 31.75) (xy 22.86 34.29)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b7d28958-0ed6-48eb-8d95-79237caec674) + ) + (wire (pts (xy 146.05 391.16) (xy 148.59 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b7f72e68-f6ac-4475-a654-95069d56804a) + ) + (wire (pts (xy 336.55 292.1) (xy 341.63 292.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b8230444-d6e5-4876-93ed-fc033f08698d) + ) + (wire (pts (xy 373.38 119.38) (xy 373.38 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b828e985-d2ad-4efd-9377-dfe9ffbf457a) + ) + (wire (pts (xy 332.74 29.21) (xy 388.62 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b82c78f4-ede7-4a2b-ba95-bd922f8d98b1) + ) + (wire (pts (xy 251.46 109.22) (xy 264.16 109.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b8729dae-4901-4fcc-86f7-e540f25adf79) + ) + (wire (pts (xy 21.59 110.49) (xy 21.59 107.95)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b8909ea4-d194-40d6-98ec-bde854c2b6ee) + ) + (wire (pts (xy 44.45 135.89) (xy 46.99 135.89)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b8c5f1f2-99b2-4c88-9bc2-9130bc42eb04) + ) + (wire (pts (xy 336.55 279.4) (xy 341.63 279.4)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b8e6a200-fef6-4796-80f0-477646f03c42) + ) + (wire (pts (xy 542.29 124.46) (xy 544.83 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b90a2a9a-4e83-4b1d-a941-9e887c39432b) + ) + (wire (pts (xy 289.56 127) (xy 292.1 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b9a64084-699a-49ae-9375-6681e49eb0ae) + ) + (wire (pts (xy 97.79 391.16) (xy 109.22 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b9b23809-1ec4-4571-b890-26829d44d515) + ) + (wire (pts (xy 201.93 294.64) (xy 215.9 294.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b9c09c8e-1eea-42f7-afef-3ce3ede0a151) + ) + (wire (pts (xy 386.08 64.77) (xy 391.16 64.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b9dfa8a2-1cec-49e4-a761-390519d0a330) + ) + (wire (pts (xy 200.66 184.15) (xy 200.66 181.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid babf4ff0-c4d4-4274-86f5-191c50fc7600) + ) + (polyline (pts (xy 295.91 17.78) (xy 295.91 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bb0010cd-2cc9-48c3-8587-ff16d7d89250) + ) + + (wire (pts (xy 148.59 140.97) (xy 175.26 140.97)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bbbede46-09c0-4439-a4ae-317a14b22160) + ) + (wire (pts (xy 300.99 52.07) (xy 300.99 67.31)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bc47c703-8b5e-439f-a62b-7f8291840162) + ) + (wire (pts (xy 327.66 101.6) (xy 336.55 101.6)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bca69ba6-fabe-46c8-a9b3-bf3507624468) + ) + (wire (pts (xy 386.08 57.15) (xy 391.16 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bca772b9-5e5a-45fa-979f-d2e067a423a9) + ) + (wire (pts (xy 542.29 167.64) (xy 544.83 167.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bcf30438-e74b-43eb-9e85-a1bdcf81f9ba) + ) + (wire (pts (xy 21.59 130.81) (xy 24.13 130.81)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bdef97ed-ccf5-4cc9-82ad-11143185c297) + ) + (wire (pts (xy 349.25 156.21) (xy 336.55 156.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid be0d9c80-3e15-4e66-827d-3719925318cf) + ) + (wire (pts (xy 21.59 138.43) (xy 24.13 138.43)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid be24866a-0f6c-466a-81d8-e54889840cce) + ) + (wire (pts (xy 386.08 59.69) (xy 391.16 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid be669c5b-210c-4aac-ad90-e43d520d0d69) + ) + (polyline (pts (xy 204.47 81.28) (xy 17.78 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid beccd7ff-f25a-4c33-ae0d-1c73da72c645) + ) + + (wire (pts (xy 491.49 134.62) (xy 494.03 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c0c90633-3ea8-4831-a917-601f63129690) + ) + (wire (pts (xy 289.56 124.46) (xy 292.1 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c0e06899-5f16-459d-bc7d-19bfd9344269) + ) + (wire (pts (xy 458.47 198.12) (xy 458.47 200.66)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c124cefa-ec30-4bb2-84c7-6eecfbbdc6f0) + ) + (wire (pts (xy 215.9 294.64) (xy 215.9 308.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c1644c73-f0a1-43e5-b628-f52691e35f5d) + ) + (wire (pts (xy 173.99 137.16) (xy 177.8 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c1e35ecb-5e6e-4b21-b700-1492e3da1d0c) + ) + (wire (pts (xy 67.31 257.81) (xy 93.98 257.81)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c26548db-bdb5-471b-9b53-6e00c26d037d) + ) + (wire (pts (xy 391.16 132.08) (xy 392.43 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c265f969-5ac2-4466-856b-934853781621) + ) + (wire (pts (xy 289.56 116.84) (xy 289.56 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c276a43f-574a-469c-8f97-6058cf85b48a) + ) + (wire (pts (xy 109.22 281.94) (xy 146.05 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c2d39fd4-7599-4721-9435-a92a142e9ae4) + ) + (wire (pts (xy 389.89 167.64) (xy 392.43 167.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c3a67447-4b0d-4c60-8ad0-6e037a436dd9) + ) + (wire (pts (xy 289.56 129.54) (xy 289.56 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c3d8a844-fc2e-4b52-a493-26fcae0caeff) + ) + (wire (pts (xy 109.22 347.98) (xy 109.22 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c405d147-8a2a-4d87-9ecb-bafbc88988af) + ) + (wire (pts (xy 152.4 189.23) (xy 157.48 189.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c451a534-b461-4978-8761-587a9b54dabf) + ) + (wire (pts (xy 491.49 127) (xy 494.03 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c48d6524-c444-4aa6-9596-1194d975a3c4) + ) + (wire (pts (xy 557.53 36.83) (xy 557.53 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c5a80fcd-740c-4c2b-8fae-0ab54362534d) + ) + (wire (pts (xy 317.5 29.21) (xy 317.5 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c6d500e1-e8ba-46de-ba6f-07913a227629) + ) + (wire (pts (xy 388.62 44.45) (xy 391.16 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c7a492f0-492f-4fca-b1e6-8e4fd98b9c36) + ) + (wire (pts (xy 198.12 184.15) (xy 200.66 184.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c7baddaf-d7b5-47f9-91f9-af98cd421ac9) + ) + (wire (pts (xy 125.73 353.06) (xy 128.27 353.06)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c7be62d8-ab87-4292-a55e-4c1bec19522a) + ) + (wire (pts (xy 325.12 106.68) (xy 327.66 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c80b9c10-f473-4acf-a9ab-3efd30724259) + ) + (wire (pts (xy 468.63 59.69) (xy 436.88 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c81f1f51-d36d-4f82-a0fd-d0fa7847b54b) + ) + (wire (pts (xy 327.66 129.54) (xy 327.66 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c99fa6d2-9561-4c9d-990f-95ea4f4be910) + ) + (wire (pts (xy 276.86 101.6) (xy 289.56 101.6)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ca110188-0cf8-48ea-95bb-7b420e3725c2) + ) + (wire (pts (xy 238.76 101.6) (xy 251.46 101.6)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ca525e19-94ec-470d-b357-92e4ba8d84e9) + ) + (wire (pts (xy 389.89 119.38) (xy 392.43 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid caa379f3-c736-4566-a068-a504e3883107) + ) + (polyline (pts (xy 233.68 234.95) (xy 233.68 334.01)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cac309c9-9f42-49e4-b2de-59df4bed8769) + ) + + (wire (pts (xy 336.55 281.94) (xy 341.63 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid caf1f198-f263-4e73-814a-30439c072582) + ) + (wire (pts (xy 44.45 179.07) (xy 46.99 179.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid caf32f7d-63ad-4300-992d-f6152925e087) + ) + (wire (pts (xy 175.26 281.94) (xy 175.26 284.48)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid caf604c3-ec42-4830-9b6d-247d766b7fd7) + ) + (wire (pts (xy 289.56 101.6) (xy 289.56 95.25)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cb0bc55f-947e-4bf8-96da-1465bfd156a3) + ) + (wire (pts (xy 256.54 29.21) (xy 256.54 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cb6b11cf-6a9d-4353-b2c3-b87e56b7560a) + ) + (wire (pts (xy 389.89 160.02) (xy 392.43 160.02)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cba9495e-3fce-41c5-a038-191cabb8b6c1) + ) + (wire (pts (xy 179.07 39.37) (xy 191.77 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cba9ceeb-0a8d-4f9a-9d33-f74959b58ad1) + ) + (wire (pts (xy 440.69 149.86) (xy 443.23 149.86)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cbae81bd-794f-40b2-8a9c-10e929c6f1d0) + ) + (wire (pts (xy 336.55 284.48) (xy 341.63 284.48)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cbb8e5e0-8be3-43f9-9538-ec5891622206) + ) + (wire (pts (xy 172.72 132.08) (xy 177.8 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cc48121f-359d-41f1-84e4-233f0326a734) + ) + (wire (pts (xy 125.73 358.14) (xy 128.27 358.14)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cc6f284e-88cb-4aa5-82a4-31b7275917ec) + ) + (wire (pts (xy 107.95 114.3) (xy 107.95 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cc8e1723-cf4e-4b13-9669-aa634a901193) + ) + (wire (pts (xy 312.42 29.21) (xy 317.5 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ccf137bc-7447-43f2-9a98-a1e055b68c46) + ) + (wire (pts (xy 388.62 31.75) (xy 388.62 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cd1040e7-dfc7-4ef0-8b37-286b733900a9) + ) + (wire (pts (xy 487.68 48.26) (xy 487.68 52.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cdad9efa-afe7-4070-966e-0444df96d2f0) + ) + (wire (pts (xy 440.69 137.16) (xy 443.23 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cdbd410d-bb76-4ab4-a67a-f41e754afbf1) + ) + (wire (pts (xy 289.56 104.14) (xy 289.56 101.6)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ce3e8bc2-83d4-4eae-ba12-94d60e8f53e1) + ) + (wire (pts (xy 35.56 31.75) (xy 35.56 34.29)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cea66a57-36bc-489a-af51-7aad0f982d71) + ) + (wire (pts (xy 487.68 36.83) (xy 500.38 36.83)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cf1fac16-3074-4bbf-8651-5c51c763830d) + ) + (wire (pts (xy 146.05 308.61) (xy 175.26 308.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cf7d50b1-032b-492b-a56e-dd0c68a8cc1d) + ) + (wire (pts (xy 542.29 57.15) (xy 544.83 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cff16bd8-2ac1-40e3-83c5-2cf36753106c) + ) + (wire (pts (xy 289.56 139.7) (xy 289.56 142.24)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cfff217e-bf79-4946-a5a8-542cc9be35ee) + ) + (wire (pts (xy 542.29 170.18) (xy 544.83 170.18)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d11c557f-18b0-4d82-9c3a-81a4e54a61f4) + ) + (wire (pts (xy 389.89 124.46) (xy 392.43 124.46)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d134d42c-4cf6-4ad5-a43b-9a2e45153cf8) + ) + (wire (pts (xy 289.56 109.22) (xy 289.56 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d1462381-26ee-4da5-a8e6-c9bbec6c7c11) + ) + (wire (pts (xy 21.59 153.67) (xy 21.59 196.85)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d14c4c6e-a160-4e47-8362-be2921fe9399) + ) + (wire (pts (xy 532.13 57.15) (xy 534.67 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d1d7bf84-d1f8-4324-b370-aac12df172f8) + ) + (wire (pts (xy 312.42 26.67) (xy 312.42 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d1d8ff4d-3cdc-4892-9742-314533dce770) + ) + (wire (pts (xy 104.14 57.15) (xy 114.3 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d29a9ecb-5d3c-45ce-b557-2d5d8b5db571) + ) + (wire (pts (xy 163.83 388.62) (xy 163.83 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d2e0f7f8-3c2f-4a02-88cf-f4674c78884b) + ) + (wire (pts (xy 336.55 129.54) (xy 349.25 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d2ebb05c-4ea8-4d33-9cb9-e460bb3268bc) + ) + (wire (pts (xy 440.69 119.38) (xy 443.23 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d2ee9686-3bf2-474b-8d44-307ec7b9718c) + ) + (wire (pts (xy 173.99 355.6) (xy 179.07 355.6)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d2f6bb7f-ab68-487c-9224-14290b8f2f24) + ) + (wire (pts (xy 194.31 388.62) (xy 194.31 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d3069b49-29d2-4816-881e-4421a7b29b74) + ) + (wire (pts (xy 148.59 120.65) (xy 148.59 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d3238d91-1dcf-4ad3-bf1b-290dfe0c4ba2) + ) + (wire (pts (xy 24.13 107.95) (xy 21.59 107.95)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d34bf6ca-0984-43a9-a35c-dc02e47ac452) + ) + (wire (pts (xy 327.66 142.24) (xy 327.66 139.7)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d40067e4-6c42-4d7b-8c5b-095c37b41202) + ) + (wire (pts (xy 129.54 189.23) (xy 134.62 189.23)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d43cb3e5-0a0a-40e0-8f4c-775565629383) + ) + (wire (pts (xy 289.56 129.54) (xy 292.1 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d44da2e9-d54d-4999-a6da-9d646bf1253c) + ) + (wire (pts (xy 438.15 212.09) (xy 438.15 218.44)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d51a3680-9bd8-45a3-bf1e-8dabe485fe96) + ) + (wire (pts (xy 153.67 281.94) (xy 153.67 312.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d5304cfd-7f74-4c2e-9f15-4c2968cbfdb3) + ) + (wire (pts (xy 336.55 254) (xy 341.63 254)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d53af91d-13da-4bb9-a864-b98912dda3cf) + ) + (wire (pts (xy 21.59 148.59) (xy 21.59 151.13)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d5402645-de4e-426f-8341-6d5658413d42) + ) + (wire (pts (xy 289.56 144.78) (xy 292.1 144.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d54307ac-2c27-4d68-b192-7b0c7d168d74) + ) + (wire (pts (xy 154.94 176.53) (xy 154.94 191.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d5454e98-084c-4ac2-ac77-1b4dd835b3ef) + ) + (wire (pts (xy 289.56 156.21) (xy 289.56 158.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d57253a5-51e6-4777-8139-6bb5ab19b813) + ) + (wire (pts (xy 336.55 271.78) (xy 341.63 271.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d5f3c190-b3be-48f3-b8a6-e41bba2e269e) + ) + (wire (pts (xy 327.66 95.25) (xy 327.66 101.6)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d7705d4b-87f2-4eff-b8b0-cd5c3205c1af) + ) + (wire (pts (xy 200.66 186.69) (xy 198.12 186.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d7afaf78-16ab-4075-a792-2eadc732a504) + ) + (wire (pts (xy 114.3 46.99) (xy 114.3 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d7bd9c1b-e481-484d-ac1f-d68051f7403e) + ) + (wire (pts (xy 161.29 294.64) (xy 161.29 297.18)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d85c6aab-e7f8-4c13-8a6d-5d962f8ce045) + ) + (wire (pts (xy 306.07 266.7) (xy 311.15 266.7)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d9b4b9ec-e761-4f6a-8f3c-09025e57fd3d) + ) + (wire (pts (xy 109.22 325.12) (xy 128.27 325.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d9fc8702-3911-4d6c-9c7d-629c8a7053c9) + ) + (wire (pts (xy 325.12 119.38) (xy 327.66 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid da2fc784-27ec-4c61-85d5-aa3629f8da09) + ) + (wire (pts (xy 389.89 149.86) (xy 392.43 149.86)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid da4349c5-9342-4c74-8c10-cca4c3af9ad1) + ) + (wire (pts (xy 166.37 57.15) (xy 179.07 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid da5969f4-8b76-41cc-aca7-e77a19c1acda) + ) + (wire (pts (xy 317.5 54.61) (xy 335.28 54.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid da63cb36-8e80-4669-84f8-474e9a010aba) + ) + (wire (pts (xy 386.08 41.91) (xy 388.62 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid dafe236c-cf83-4c42-aa6c-801ceac80a46) + ) + (wire (pts (xy 389.89 154.94) (xy 392.43 154.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid db283921-b795-4168-9a9f-bee458e120cd) + ) + (wire (pts (xy 24.13 110.49) (xy 21.59 110.49)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid db4764ce-fff9-4e4f-9897-8fed6ea5be43) + ) + (polyline (pts (xy 411.48 17.78) (xy 513.08 17.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid db4b01d3-fd7b-4e5b-a35f-fef1da493ebf) + ) + (polyline (pts (xy 228.6 86.36) (xy 228.6 229.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid dc2ea5dc-fa1b-4205-b184-e65ae65fe33f) + ) + + (wire (pts (xy 21.59 113.03) (xy 21.59 110.49)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid dc520f92-46eb-4137-82c5-95d93320b925) + ) + (wire (pts (xy 532.13 57.15) (xy 532.13 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid dc555b3b-f6ff-47b0-a514-427b9969285f) + ) + (wire (pts (xy 134.62 191.77) (xy 132.08 191.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid dc93a231-3cd3-4ab3-9d1d-1d7ea48cd178) + ) + (wire (pts (xy 440.69 167.64) (xy 443.23 167.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid dcdf219b-4964-462d-9dfb-f7cbaee2f1b0) + ) + (wire (pts (xy 389.89 142.24) (xy 392.43 142.24)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid dd86796e-e669-4951-848f-949f102a5640) + ) + (wire (pts (xy 440.69 172.72) (xy 443.23 172.72)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid dddf22f0-745b-4711-98d4-14835975980e) + ) + (wire (pts (xy 57.15 246.38) (xy 57.15 250.19)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid de1dac42-7679-46f2-8099-4174341e7212) + ) + (wire (pts (xy 332.74 31.75) (xy 332.74 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid deae57c7-4455-4b7f-bf61-ad6f596f885e) + ) + (wire (pts (xy 173.99 337.82) (xy 179.07 337.82)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid df0bf2f1-4df4-4fc0-a7cf-1162a7a4f163) + ) + (wire (pts (xy 67.31 260.35) (xy 91.44 260.35)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid df52a7b4-1cf4-4543-94d4-1b9284abea4d) + ) + (wire (pts (xy 161.29 388.62) (xy 161.29 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid df858fae-c7ce-43aa-b111-d4cfab14f185) + ) + (wire (pts (xy 191.77 26.67) (xy 191.77 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e0754c4d-2d36-456c-af8f-b1fd6dd21f7d) + ) + (wire (pts (xy 148.59 304.8) (xy 148.59 307.34)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e151b314-4345-45b3-a60e-b6f5563ed4b9) + ) + (wire (pts (xy 173.99 134.62) (xy 173.99 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e1633004-76e0-497c-984b-b645fb97919f) + ) + (wire (pts (xy 109.22 279.4) (xy 109.22 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e1e4008b-36ca-4755-abc1-0eb90b4b8c20) + ) + (wire (pts (xy 21.59 153.67) (xy 24.13 153.67)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e28be3fd-41a4-4c93-9ce3-ba1085fbabf5) + ) + (wire (pts (xy 327.66 106.68) (xy 327.66 104.14)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e29a3715-8d20-4298-8e4f-7a77be781033) + ) + (wire (pts (xy 161.29 304.8) (xy 161.29 307.34)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e2afca88-9038-4254-b8d9-6f15a8305a6f) + ) + (wire (pts (xy 336.55 119.38) (xy 349.25 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e2ed3ef5-d68d-43b7-98a3-8729998bd090) + ) + (wire (pts (xy 330.2 44.45) (xy 335.28 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e3215ccf-9cd9-4be7-aa3b-52ac20afb41a) + ) + (wire (pts (xy 36.83 313.69) (xy 57.15 313.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e32f4b0c-9151-4bdc-8087-3fad50bdb172) + ) + (wire (pts (xy 336.55 121.92) (xy 349.25 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e3434fe1-feba-43a2-a398-e4f0e266a9e8) + ) + (wire (pts (xy 269.24 46.99) (xy 274.32 46.99)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e36d46ca-2b4f-4af1-9770-b8553d08a25c) + ) + (wire (pts (xy 491.49 129.54) (xy 494.03 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e3e8b31f-612a-49c5-a4fa-ca8e91491de4) + ) + (wire (pts (xy 325.12 129.54) (xy 327.66 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e3f48072-f34f-43bb-926e-42f6d9470f85) + ) + (wire (pts (xy 440.69 144.78) (xy 443.23 144.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e41e1060-6da7-4166-8666-48f594fd985b) + ) + (wire (pts (xy 491.49 162.56) (xy 494.03 162.56)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e4cc12e0-2fa6-4bcb-84fc-5847f16bee62) + ) + (wire (pts (xy 264.16 279.4) (xy 264.16 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e4cfccb9-df3e-4739-b834-5892227f4fbc) + ) + (wire (pts (xy 542.29 121.92) (xy 544.83 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e4d20ccb-1704-4245-91d9-02ce186e1618) + ) + (polyline (pts (xy 576.58 17.78) (xy 576.58 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e548067e-9a67-48e5-b727-7f8e72e4bbb3) + ) + + (wire (pts (xy 60.96 59.69) (xy 60.96 57.15)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e5700b4c-7818-4e4c-a2e1-735a496335df) + ) + (wire (pts (xy 135.89 106.68) (xy 148.59 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e5858076-ee6f-447a-9d8e-025438c112b6) + ) + (wire (pts (xy 325.12 139.7) (xy 327.66 139.7)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e60d70b4-49e6-4edd-bfe5-bd0e14ccd3ef) + ) + (wire (pts (xy 264.16 109.22) (xy 276.86 109.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e6502c95-79e4-4afa-812d-d3690a9a6bc7) + ) + (wire (pts (xy 440.69 162.56) (xy 443.23 162.56)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e66d8f6f-aa8b-48d8-bb2b-bde00dc24d64) + ) + (wire (pts (xy 289.56 134.62) (xy 289.56 137.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e673ed95-1154-4163-bdd6-b28f8dfd0f81) + ) + (wire (pts (xy 44.45 118.11) (xy 46.99 118.11)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e6a0fec0-6731-4ba3-a373-7651f4b2ce46) + ) + (wire (pts (xy 440.69 182.88) (xy 443.23 182.88)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e6a74ddc-6f8f-4868-9ad0-5812e222ffa6) + ) + (polyline (pts (xy 233.68 86.36) (xy 576.58 86.36)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e72217ac-e7b8-4ce5-a96b-669262d3b6bf) + ) + + (wire (pts (xy 349.25 121.92) (xy 361.95 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e7dfada0-47c3-45d7-ba34-76e6ec69eac0) + ) + (wire (pts (xy 44.45 143.51) (xy 46.99 143.51)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e7f4d28b-abfe-4186-8f14-ad53731ae1eb) + ) + (polyline (pts (xy 204.47 17.78) (xy 204.47 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e81ed50a-7f91-472c-a704-74a47e21ac7f) + ) + + (wire (pts (xy 306.07 279.4) (xy 311.15 279.4)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e83de6d9-e2fe-48ab-aeb7-834d6c1c834b) + ) + (wire (pts (xy 172.72 119.38) (xy 177.8 119.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e8466cba-89a7-485e-b76c-d442ce94bbe9) + ) + (wire (pts (xy 542.29 190.5) (xy 544.83 190.5)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e85c5154-4677-476b-9bed-f2f83c8e2f68) + ) + (wire (pts (xy 146.05 304.8) (xy 146.05 308.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ea089efc-1be6-472b-bb5e-7b4b3bcae926) + ) + (wire (pts (xy 143.51 39.37) (xy 179.07 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ead397d7-fe3a-4943-b342-4dc70134b94f) + ) + (wire (pts (xy 306.07 314.96) (xy 311.15 314.96)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid eae90ec1-ed12-4b1e-8ed4-822c258078e9) + ) + (wire (pts (xy 214.63 29.21) (xy 214.63 38.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid eafdceeb-1570-4757-9e9c-645e29bfe170) + ) + (polyline (pts (xy 576.58 86.36) (xy 576.58 229.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ec8948ea-321d-4dc8-897f-981423f8604b) + ) + + (wire (pts (xy 306.07 307.34) (xy 311.15 307.34)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ec9fabc3-8861-4da2-9a99-2b0406fbb553) + ) + (wire (pts (xy 440.69 170.18) (xy 443.23 170.18)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid eca6f3e6-732e-401b-b739-344833f71d09) + ) + (wire (pts (xy 327.66 111.76) (xy 336.55 111.76)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ede13543-bff9-44a1-9ad7-8de025fa7832) + ) + (wire (pts (xy 269.24 36.83) (xy 274.32 36.83)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid edeb6750-0e14-4138-9cc3-0c4a7d724d6e) + ) + (wire (pts (xy 214.63 54.61) (xy 214.63 45.72)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ee453272-ef64-43f6-b4ff-46485323c4fb) + ) + (wire (pts (xy 189.23 281.94) (xy 201.93 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid eea724ef-6f3d-443e-9ff8-3e910fec73e4) + ) + (wire (pts (xy 163.83 391.16) (xy 166.37 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid eecea968-486c-4d93-b94a-b3c8b1626844) + ) + (wire (pts (xy 306.07 309.88) (xy 311.15 309.88)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid eeea6827-16ca-4b7c-b901-57b705cf9c39) + ) + (wire (pts (xy 491.49 132.08) (xy 494.03 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ef9e72f8-74ef-43a3-91fc-acccc6bac796) + ) + (wire (pts (xy 327.66 109.22) (xy 327.66 106.68)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f07ae5b5-2f6d-4e83-adf9-96b53a8b1d2a) + ) + (wire (pts (xy 321.31 243.84) (xy 321.31 246.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f12725af-4878-45d0-8304-ba03ff81cb90) + ) + (wire (pts (xy 148.59 388.62) (xy 148.59 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f18ad9a4-fcc3-476e-b36f-7fc7a81592d9) + ) + (wire (pts (xy 335.28 52.07) (xy 332.74 52.07)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f275ea7b-1b27-40e1-9930-3cdcc075845c) + ) + (wire (pts (xy 151.13 281.94) (xy 153.67 281.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f2a25151-8206-4b96-a888-c16727723c2b) + ) + (wire (pts (xy 332.74 52.07) (xy 332.74 67.31)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f357ab18-5825-45c8-bddc-93d2109b876e) + ) + (polyline (pts (xy 360.68 234.95) (xy 360.68 334.01)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f381e827-6118-495d-b6d6-9af95822cc66) + ) + + (wire (pts (xy 44.45 113.03) (xy 46.99 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f3b353bc-c020-49ed-a59c-698245e9a214) + ) + (polyline (pts (xy 360.68 334.01) (xy 233.68 334.01)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f3d20a35-4fcb-41d8-8227-be3d4125fd41) + ) + + (wire (pts (xy 125.73 335.28) (xy 128.27 335.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f3d33590-a77a-4006-89d2-a55c6d28410f) + ) + (wire (pts (xy 125.73 363.22) (xy 128.27 363.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f44e5373-35da-4578-9066-0215d8508c51) + ) + (wire (pts (xy 125.73 391.16) (xy 140.97 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f51087bd-747d-451a-ab8e-669243f79e14) + ) + (wire (pts (xy 194.31 391.16) (xy 166.37 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f51fe8a5-7338-4fc2-8013-2c34df109998) + ) + (wire (pts (xy 325.12 144.78) (xy 327.66 144.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f644e274-cd95-4455-ad41-b865ccb60875) + ) + (wire (pts (xy 146.05 388.62) (xy 146.05 391.16)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f662967b-e25e-42a0-b2e8-90c400c87df5) + ) + (wire (pts (xy 152.4 191.77) (xy 154.94 191.77)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f673cc4e-9328-4574-91a8-bcc0266b5337) + ) + (wire (pts (xy 78.74 247.65) (xy 78.74 246.38)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f6dd8702-1cad-493e-a50b-7318d229e68d) + ) + (wire (pts (xy 146.05 308.61) (xy 146.05 312.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f7f2dfb0-c966-46f2-8503-18a9bf1bbf64) + ) + (wire (pts (xy 21.59 125.73) (xy 21.59 128.27)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f7fdc2c1-610a-4aa3-90aa-43dbb5fe3c4c) + ) + (wire (pts (xy 327.66 134.62) (xy 327.66 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f860ba0c-b181-4f81-8cb0-1638b4e7dc7a) + ) + (wire (pts (xy 161.29 294.64) (xy 175.26 294.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f92e25a3-2bd6-4c7c-8a71-43568d5efc35) + ) + (polyline (pts (xy 17.78 234.95) (xy 228.6 234.95)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f92e802f-1859-4dae-a194-bf624c520b98) + ) + + (wire (pts (xy 335.28 49.53) (xy 312.42 49.53)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f98167cb-072a-4b60-b8eb-28e59876abf6) + ) + (wire (pts (xy 416.56 59.69) (xy 436.88 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f9b277c9-635b-45d3-bf00-aee87acd7540) + ) + (wire (pts (xy 93.98 127) (xy 96.52 127)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f9fe60aa-39c5-4d53-8798-2510c6017369) + ) + (wire (pts (xy 468.63 26.67) (xy 468.63 29.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fa0e6f4b-ffb2-4c0b-b5fb-d27ac5b4e92b) + ) + (wire (pts (xy 336.55 109.22) (xy 349.25 109.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fabcfa4c-7c28-4ae0-a64b-b04db51a0a6a) + ) + (wire (pts (xy 542.29 205.74) (xy 544.83 205.74)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fad47e64-9478-468f-bb73-e47674324327) + ) + (wire (pts (xy 491.49 154.94) (xy 494.03 154.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fae4e572-a89f-4fa2-9d6a-8ff41dcbfaac) + ) + (wire (pts (xy 21.59 143.51) (xy 24.13 143.51)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fb0aa5d3-bcc6-41df-b946-81b5f17f5c13) + ) + (wire (pts (xy 24.13 105.41) (xy 21.59 105.41)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fbcc4657-d449-4b8d-8c42-303656a4991c) + ) + (wire (pts (xy 440.69 152.4) (xy 443.23 152.4)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fbf50745-10fe-4c33-9a3d-ff70ba6fa352) + ) + (wire (pts (xy 148.59 307.34) (xy 161.29 307.34)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fc2e233c-dc7d-44a6-bb1f-62a7f1c46333) + ) + (wire (pts (xy 60.96 31.75) (xy 60.96 34.29)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fcbe23d2-e5a1-404f-a784-3ddbe2cafbe8) + ) + (wire (pts (xy 175.26 304.8) (xy 175.26 308.61)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fd2d39fd-041e-4756-a705-58ea583888b8) + ) + (wire (pts (xy 21.59 107.95) (xy 21.59 105.41)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fd4e3ee8-8d9a-4836-911f-7be3c9ff0aa8) + ) + (wire (pts (xy 458.47 195.58) (xy 458.47 198.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fdbb8ec3-b81f-44e2-89f5-da3e1713fa8c) + ) + (wire (pts (xy 532.13 40.64) (xy 532.13 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fdc88220-530d-47e3-acd3-0e14091633c2) + ) + (wire (pts (xy 238.76 44.45) (xy 243.84 44.45)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fe1c90dd-b73c-4b68-a065-44b52c7dca37) + ) + (wire (pts (xy 36.83 293.37) (xy 57.15 293.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid feb80df0-431a-4e2d-aad7-22f113da6699) + ) + (wire (pts (xy 44.45 115.57) (xy 46.99 115.57)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid feea34ae-02b2-48f5-afdd-9193e07ebe12) + ) + (wire (pts (xy 468.63 29.21) (xy 468.63 34.29)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ff55cc5f-6d3d-40b4-970d-4b5962f70f1e) + ) + (wire (pts (xy 175.26 106.68) (xy 175.26 121.92)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ff8e96be-43e4-4668-920f-7369f88edd2d) + ) + (wire (pts (xy 264.16 289.56) (xy 264.16 292.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ff952b39-2a8f-432a-92db-4fe67d1759e5) + ) + + (text "Power" (at 19.05 81.28 0) + (effects (font (size 5.08 5.08)) (justify left bottom)) + (uuid 181ec476-59d8-4ca8-b56f-20ef96951bec) + ) + (text "USB" (at 19.05 402.59 0) + (effects (font (size 5.08 5.08)) (justify left bottom)) + (uuid 1aca072d-3bf5-4be7-9f8b-5fa770455b52) + ) + (text "LED & Button" (at 519.43 81.28 0) + (effects (font (size 5.08 5.08)) (justify left bottom)) + (uuid 3ddca920-30b5-43d4-97ca-93296b73b6d1) + ) + (text "RTC" (at 412.75 81.28 0) + (effects (font (size 5.08 5.08)) (justify left bottom)) + (uuid 47fa67f7-fe93-4ef9-9237-929deafbf4fa) + ) + (text "Connectors" (at 19.05 229.87 0) + (effects (font (size 5.08 5.08)) (justify left bottom)) + (uuid 8cfe3348-7196-480a-bd70-d4fe79a432d2) + ) + (text "MCU" (at 297.18 81.28 0) + (effects (font (size 5.08 5.08)) (justify left bottom)) + (uuid 99878fed-f1cd-468b-aae1-96d870469aad) + ) + (text "FPGA" (at 234.95 229.87 0) + (effects (font (size 5.08 5.08)) (justify left bottom)) + (uuid aae68b2c-1fe3-4e70-930b-c4060129cd42) + ) + (text "FLASH" (at 210.82 81.28 0) + (effects (font (size 5.08 5.08)) (justify left bottom)) + (uuid dba1726c-c812-4b1d-b90d-7cf14c3fe07b) + ) + (text "SDRAM" (at 234.95 334.01 0) + (effects (font (size 5.08 5.08)) (justify left bottom)) + (uuid eaf158fd-9575-40ea-92b5-19ec9465d3c5) + ) + + (label "USB_D+" (at 97.79 124.46 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 9e9366d2-556b-49f8-a14e-9220d0bb8efe) + ) + (label "USB_D-" (at 97.79 121.92 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid d86f1a5c-1f1e-489f-ab60-43f1ee05f57c) + ) + + (global_label "~{SDRAM_WE}" (shape output) (at 440.69 160.02 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 00a06083-ab41-4a2e-8b43-cc818a4e5a5b) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 428.4193 159.9406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD10" (shape bidirectional) (at 491.49 121.92 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 00e58770-65d9-4547-9ba4-506fa5973cc7) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5821 121.8406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SD_DAT2" (shape bidirectional) (at 389.89 124.46 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 0306f75a-e32f-4822-9f1c-a1788a4d9bc6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 379.494 124.3806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_VIDEO_SYNC" (shape input) (at 542.29 114.3 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 05063ff0-713b-494f-b9c3-de6c35ed0f12) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 523.8507 114.2206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_C3" (shape bidirectional) (at 542.29 200.66 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 06167227-8edd-4e80-b5ff-fc9f1e2a7454) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 200.5806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_D4" (shape bidirectional) (at 542.29 154.94 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 088442ca-c759-4cfb-944c-83bc7126be7d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 154.8606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD7" (shape bidirectional) (at 46.99 123.19 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 08a5259a-f133-4df2-9fe4-1ba986288be5) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 57.6883 123.1106 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "~{SDRAM_RAS}" (shape input) (at 306.07 314.96 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 0a3ac61f-fde0-4eb7-976d-e3487b257626) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 292.8317 314.8806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_D5" (shape bidirectional) (at 542.29 152.4 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 0b5e9a24-936f-4e88-8c7f-46fd39fcd0a7) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 152.3206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "I2C_SDA" (shape bidirectional) (at 455.93 41.91 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 0ba7afce-3a8c-49ce-87fa-f8fcfd969b62) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 445.8969 41.8306 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ0" (shape bidirectional) (at 341.63 254 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 0d3057ba-a28d-468d-865f-30a920c82db4) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 355.1102 253.9206 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SWCLK" (shape output) (at 129.54 181.61 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 0f544804-3f69-434f-8a5b-9f4238bbada4) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 120.8979 181.5306 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A5" (shape input) (at 306.07 274.32 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 10426801-9ec3-48ce-8c77-adc8af15e9f8) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 294.1017 274.2406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ4" (shape bidirectional) (at 440.69 172.72 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 10ab0831-83d8-44f1-8179-a00a20f8e1bc) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.2098 172.7994 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD0" (shape bidirectional) (at 46.99 105.41 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 122710c9-807b-4552-98d7-2ebe8536c117) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 57.6883 105.3306 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "I2C_SCL" (shape output) (at 391.16 41.91 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 13e7859c-efb9-43b6-bc33-24636fab908a) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 401.1326 41.8306 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_A10" (shape output) (at 440.69 134.62 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 15042f97-76de-47f1-be4d-07dd09f69db4) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.5121 134.5406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_BA0" (shape input) (at 306.07 254 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 15ad0be4-d88a-454e-8874-b245deb28fdf) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 292.8317 253.9206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A7" (shape output) (at 491.49 175.26 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 161da9c0-3456-4d4e-a5f7-b9a7fc75b43d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5217 175.1806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SD_DAT3" (shape bidirectional) (at 389.89 121.92 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 164b74f4-264e-4b83-afd8-5ee6098941f7) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 379.494 121.8406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "USB_EEDATA" (shape bidirectional) (at 125.73 358.14 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 16ceeae1-5829-4dc3-8c7f-82a742a7f9d2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 111.8264 358.0606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "LED" (shape output) (at 389.89 160.02 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 16d1d39e-6357-4df8-ac9d-613e4d9e2c45) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 384.0298 159.9406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "~{N64_READ}" (shape input) (at 491.49 132.08 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 16fb8642-092d-497a-a729-5686239cb3da) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5821 132.0006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD6" (shape bidirectional) (at 491.49 116.84 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 171d328e-476e-436c-a2a1-347c91ef48ce) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 480.7917 116.7606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "MCU_MOSI" (shape output) (at 391.16 57.15 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 175eeb88-1a0a-4e50-be6f-758fe7d90441) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 403.1888 57.0706 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ1" (shape bidirectional) (at 440.69 180.34 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 1812e8c2-ddeb-4e65-a6c4-25799ef8187c) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.2098 180.4194 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_D6" (shape bidirectional) (at 179.07 335.28 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 18b4f64c-da4b-41c6-9793-a1fcf330b566) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 335.2006 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_AD9" (shape bidirectional) (at 491.49 119.38 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 19cd7078-26d8-4c17-985a-2d22dc934fce) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 480.7917 119.3006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD10" (shape bidirectional) (at 46.99 130.81 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 1acbc1d1-9e24-456f-a33c-05ff24b12310) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 58.8979 130.7306 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "TEST1" (shape bidirectional) (at 542.29 167.64 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 1b001e17-bc47-4028-a68f-22267377fa4b) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 534.3736 167.5606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "USB_D+" (shape bidirectional) (at 125.73 337.82 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 1b17a283-8dd4-48a3-8cf1-f8a02aa16460) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 115.6969 337.7406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_ALEH" (shape input) (at 491.49 134.62 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 1ca1992b-0d9a-4e0b-b6ac-b7746d19b8b4) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.7636 134.5406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_D6" (shape bidirectional) (at 542.29 149.86 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 1cc1e8e4-a2ed-432b-bfa5-d4c881d96c8d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 149.7806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "~{N64_NMI}" (shape output) (at 46.99 163.83 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 1dab0c09-0962-4eb8-bca5-fa03ea04a165) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 57.5069 163.7506 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FLASH_CS" (shape input) (at 238.76 39.37 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 1f0ec49a-ac9c-48fb-8376-5425e55d7332) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 227.1545 39.2906 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "JTAG_TDO" (shape input) (at 157.48 189.23 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 1f5164c9-fe47-4ea8-a7b6-b5892d11f734) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 168.7226 189.1506 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ9" (shape bidirectional) (at 341.63 276.86 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 1f63fd73-b7ee-489a-8ec3-2501312312bf) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 355.1102 276.7806 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SD_DET" (shape input) (at 172.72 137.16 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 1fb15817-e953-4b7f-887d-d512cf5818f2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 163.4731 137.0806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "USB_EECS" (shape output) (at 125.73 353.06 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 1fbe8459-ee06-4f79-a6a2-641bca396ac2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 113.7617 352.9806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ0" (shape bidirectional) (at 440.69 182.88 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 221e82cb-067f-4ce4-83fa-610bdecb5910) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.2098 182.9594 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A9" (shape input) (at 306.07 284.48 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 224fb088-466c-4b91-af0d-4c05114c3f5f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 294.1017 284.4006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A0" (shape output) (at 440.69 137.16 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 229e750d-87d9-47de-961d-aff2353a3b26) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 428.7217 137.0806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SD_DET" (shape input) (at 389.89 127 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 22a39a68-38d7-4cbd-a740-231d1ce9c116) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 380.6431 126.9206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FLASH_CLK" (shape input) (at 238.76 44.45 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 2484e395-c6c8-497c-a7ba-8f6b3b07d107) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 226.0659 44.3706 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD3" (shape bidirectional) (at 491.49 144.78 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 268071e3-1b8d-4a79-916d-69904ecb20a0) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 480.7917 144.7006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD13" (shape bidirectional) (at 46.99 138.43 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 26925cf4-bed3-4ea0-8814-3c1399112c5d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 58.8979 138.3506 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "MCU_MOSI" (shape input) (at 389.89 134.62 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 274bf109-e745-4b31-8403-4df85fb6481f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 377.8612 134.5406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ6" (shape bidirectional) (at 440.69 167.64 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 2812acda-b90e-4133-ad76-6d93cb80a7f6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.2098 167.7194 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "~{N64_READ}" (shape output) (at 46.99 153.67 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 28bb94ba-0f1a-4d4b-b2a8-eb1898bae9e4) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 58.8979 153.5906 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_AD14" (shape bidirectional) (at 491.49 152.4 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 28f90a22-9b43-4a89-a7e5-29123d0f93e1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5821 152.3206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A2" (shape input) (at 306.07 266.7 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 2944eb7e-1e8d-40ff-bcaf-cc67ebe1d623) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 294.1017 266.6206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_D7" (shape bidirectional) (at 542.29 147.32 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 2d6d5228-e8bc-4002-bb03-eb9cb93e7b1b) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 147.2406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "UART_TX" (shape output) (at 389.89 149.86 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 2f1ffee8-2cf0-492c-8260-d3cec4b21b21) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 379.6755 149.7806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD0" (shape bidirectional) (at 491.49 160.02 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 2fbb2525-21bf-4eeb-8fca-e540768c8bea) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 480.7917 159.9406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD13" (shape bidirectional) (at 491.49 147.32 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 306a167d-44d6-4568-8b6d-00278e0a1a4c) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5821 147.2406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A3" (shape output) (at 440.69 144.78 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 30bd9939-5c19-4598-aed3-d323dfcdd6d2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 428.7217 144.7006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FLASH_CS" (shape output) (at 389.89 167.64 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 32f8776e-332c-424e-81b8-7f1727af9fbc) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 378.2845 167.5606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ5" (shape bidirectional) (at 341.63 266.7 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 379134a3-e40e-433e-8b90-c39a8d291532) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 355.1102 266.6206 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FTDI_C2" (shape bidirectional) (at 179.07 347.98 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 3a5f46a9-1447-4e19-9388-4201bcce1a38) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 348.0594 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "RTC_MFP" (shape output) (at 455.93 46.99 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 3aa7bf30-91da-4859-92c1-f204805b81c1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 445.2317 46.9106 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ8" (shape bidirectional) (at 440.69 114.3 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 3b374a5d-8ad8-41b1-9e64-a7a6fc3ad48c) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.2098 114.2206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_C1" (shape bidirectional) (at 179.07 345.44 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 3bfc06cd-0474-45fb-87c9-bfea6f85b233) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 345.5194 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ3" (shape bidirectional) (at 440.69 175.26 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 3ec18ba6-b51b-41bf-9338-022d450a0213) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.2098 175.3394 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "USB_EECLK" (shape input) (at 93.98 257.81 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 3fd90899-9eca-4bf4-93e9-d2c40bd39e4f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 107.0369 257.7306 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FTDI_D0" (shape bidirectional) (at 179.07 320.04 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 41437513-ad64-4811-b9d9-d41a1b9048f2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 319.9606 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FTDI_D3" (shape bidirectional) (at 179.07 327.66 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 41abbca5-3db2-4261-8bbd-29935ee3b119) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 327.5806 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_AD7" (shape bidirectional) (at 491.49 111.76 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 4261ac5b-6f8a-4079-8c68-e7e7bc97290d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 480.7917 111.6806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "JTAG_TDO" (shape output) (at 389.89 165.1 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 450fa7cb-c2f7-4521-8101-553c5bb6a792) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 378.6474 165.0206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FLASH_IO2" (shape bidirectional) (at 274.32 44.45 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 471c5a89-94ac-403b-aede-5520b8ca068e) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 286.5907 44.3706 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "MCU_SCLK" (shape output) (at 391.16 62.23 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 4722d1a3-d313-49cc-a6b7-66f91f38454a) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 403.3702 62.1506 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQMH" (shape output) (at 440.69 111.76 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 484b9026-3dab-4b12-8a99-7def43120310) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 425.6374 111.6806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_C4" (shape bidirectional) (at 179.07 353.06 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 485cb0db-67df-484e-85fa-88cd0d020e39) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 353.1394 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_AD12" (shape bidirectional) (at 46.99 135.89 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 4868bc29-747c-47d2-aca8-af105d60257b) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 58.8979 135.8106 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_CIC_CLK" (shape input) (at 330.2 59.69 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 4b694802-365b-4d7a-80d9-e2b550a05220) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 315.3893 59.6106 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_CIC_CLK" (shape output) (at 46.99 179.07 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 4eb5e4a7-7f09-4dd5-bf24-98b149b9e708) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 61.8007 178.9906 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FTDI_C6" (shape bidirectional) (at 542.29 193.04 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 4fb8eff1-2b11-45a1-96e2-721db6e2985e) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 192.9606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FLASH_IO3" (shape bidirectional) (at 389.89 180.34 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 514f53b6-dd93-4b69-b443-5f8fe142d832) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 377.6193 180.2606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SWDIO" (shape bidirectional) (at 129.54 184.15 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 52ff9922-6741-4d04-b642-e01198bddbc6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 121.2607 184.0706 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "TEST3" (shape bidirectional) (at 542.29 111.76 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 589e9103-5974-4036-b792-2d816362fea8) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 534.3736 111.6806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_PIF_CLK" (shape output) (at 46.99 171.45 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 59958c3b-738e-4c72-8892-e9663f1137ab) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 61.6193 171.3706 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "~{N64_RESET}" (shape input) (at 330.2 57.15 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 59c1180b-6948-47c4-bec5-e267a5910122) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 317.3245 57.0706 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FLASH_IO0" (shape bidirectional) (at 274.32 36.83 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 5a89e4e8-8836-45b1-aa1d-f1251a454dd2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 286.5907 36.7506 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FTDI_C4" (shape bidirectional) (at 542.29 198.12 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 5c71f2c7-0a90-47a3-979c-7bbea66c01f5) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 198.0406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_D0" (shape bidirectional) (at 542.29 165.1 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 5cef6ffa-99bd-4d88-a7e1-7d3d4251498c) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 165.0206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD12" (shape bidirectional) (at 491.49 142.24 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 5d2015c3-9c7b-4117-809c-2b5703b5b537) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5821 142.1606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ13" (shape bidirectional) (at 341.63 287.02 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 5d9cdd3a-5ddb-43b9-9423-534bd2d353f1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 356.3198 286.9406 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ11" (shape bidirectional) (at 440.69 121.92 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 5e16a200-b399-45de-ac4e-709d75fba8a1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 426.0002 121.8406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "JTAG_TCK" (shape input) (at 389.89 154.94 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 5fc93e12-178a-49a4-aaa0-658ecff051d9) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 378.7079 154.8606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ5" (shape bidirectional) (at 440.69 170.18 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 60a7c804-561e-4d86-b07a-0bba0f5df047) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.2098 170.2594 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "JTAG_TCK" (shape output) (at 157.48 184.15 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 61dab1f4-dabf-4e4e-92d7-e868e2c97ba6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 168.6621 184.0706 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "~{N64_INT}" (shape output) (at 46.99 166.37 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 6313e471-0e42-429d-a52d-0b729ecf9e00) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 57.0231 166.2906 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_ALEL" (shape input) (at 491.49 139.7 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 64209906-de57-4476-b26f-3f5bbdb4dc73) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 480.0659 139.7794 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_D3" (shape bidirectional) (at 542.29 157.48 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 65e65ec3-f3ad-4545-9772-41357a4ac357) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 157.4006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_D5" (shape bidirectional) (at 179.07 332.74 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 667ff85f-404a-44f2-965e-0a85b1b75332) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 332.6606 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_3V3" (shape input) (at 166.37 34.29 90) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 66a984fd-6146-48e9-8cac-8a6132b19c5a) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 166.2906 23.6521 90) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_A3" (shape input) (at 306.07 269.24 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 67d4a301-3d17-46ee-8e74-789ada1a1b14) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 294.1017 269.1606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "USB_D-" (shape bidirectional) (at 120.65 121.92 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 68872b63-fa53-4839-8a57-e48018321df4) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 130.6831 121.8406 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "TEST2" (shape bidirectional) (at 200.66 189.23 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 68d4dd2d-b033-4d72-affe-82bc7ff11d15) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 208.5764 189.1506 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "~{N64_RESET}" (shape input) (at 542.29 121.92 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 69e22a12-dc6d-4aea-bd9f-6d06ace72b14) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 529.4145 121.8406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "~{N64_INT}" (shape output) (at 542.29 124.46 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 6aba3847-332f-4a0a-b2c7-0ef407a66ca6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.2569 124.3806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "UART_RX" (shape output) (at 129.54 186.69 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 6b09f293-1d31-4624-b90b-ca76cc616060) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 119.0231 186.6106 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "MCU_MISO" (shape output) (at 389.89 132.08 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 6b186096-5860-4dd8-a677-ad388ac49ddb) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 377.8612 132.0006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "USB_D+" (shape bidirectional) (at 120.65 124.46 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 6b1d1589-706d-454f-9c2b-68e436b397d6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 130.6831 124.3806 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_JOYBUS" (shape bidirectional) (at 46.99 173.99 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 6d506282-933c-47ca-ac16-7e1b0facd68d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 61.3169 173.9106 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "BUTTON" (shape output) (at 560.07 39.37 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 6d532f04-a907-482f-a553-f2e324df260e) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 569.6798 39.2906 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_ALEL" (shape output) (at 46.99 148.59 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 6df9525d-2c65-4c23-9517-3108e1218e4f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 58.4141 148.5106 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "TEST3" (shape bidirectional) (at 200.66 191.77 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 6e891d4f-ea1a-4f45-a63e-7aa22f76a1f2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 208.5764 191.6906 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FTDI_D1" (shape bidirectional) (at 542.29 162.56 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 6fe96dee-a7b5-4c67-8f11-d2b4fd9d8e32) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 162.4806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_D7" (shape bidirectional) (at 179.07 337.82 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 704ecc72-e563-4987-9538-5fab6d12f49b) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 337.7406 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "LED" (shape output) (at 330.2 64.77 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 71b60253-7c6f-4c85-b3a7-924bb20963af) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 324.3398 64.6906 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "JTAG_TMS" (shape output) (at 157.48 181.61 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 7562de65-506a-4056-bc12-459ec3070c1c) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 168.7831 181.5306 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FLASH_IO2" (shape bidirectional) (at 389.89 172.72 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 75d8a006-2df4-49e5-bab2-714eb879fb12) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 377.6193 172.7994 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ13" (shape bidirectional) (at 440.69 127 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 7651212f-2e37-4342-90ae-bdedc907dd29) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 426.0002 126.9206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD2" (shape bidirectional) (at 46.99 110.49 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 77ede770-e2ac-45f6-92b1-fde17a7c7561) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 57.6883 110.4106 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SD_DAT3" (shape input) (at 172.72 116.84 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 791a8d7b-5603-474e-9366-ce400d37bd4a) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 162.324 116.7606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "USB_EEDATA" (shape bidirectional) (at 93.98 260.35 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 79701ba7-20fb-439f-8c34-8562fbd3502b) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 107.8836 260.2706 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_BA1" (shape output) (at 440.69 147.32 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 79dbfa58-dd69-4580-827e-78b10641ef38) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.4517 147.2406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A4" (shape input) (at 306.07 271.78 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 79e80610-9854-4673-b257-c5113c6a6b16) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 294.1017 271.7006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "UART_TX" (shape input) (at 129.54 189.23 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 7af68f95-5cbb-4bb0-8028-34fcb82a7f7d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 119.3255 189.1506 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "TEST2" (shape bidirectional) (at 542.29 170.18 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 7b96386e-1fe1-470d-8573-eb9522ef09b2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 534.3736 170.1006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_C7" (shape bidirectional) (at 179.07 360.68 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 7bbe1e1e-35c4-4fd1-b9aa-ec5f7bd68ef6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 360.6006 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "UART_TX" (shape input) (at 100.33 193.04 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 7c1e99a3-418e-4c92-976e-c4d22082f567) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 110.5445 193.1194 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_VIDEO_SYNC" (shape output) (at 46.99 186.69 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 7d1f81c6-c59d-46be-a091-9840303e42c8) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 65.4293 186.6106 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "BUTTON" (shape input) (at 542.29 185.42 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 7e115af1-d8fc-4f5f-a374-c3611a00eb40) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.6802 185.3406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "~{N64_RESET}" (shape output) (at 46.99 161.29 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 7e57d621-144d-4598-95ac-3b4e936f2bc3) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 59.8655 161.2106 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_AD1" (shape bidirectional) (at 491.49 154.94 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 815b25c1-bec1-44ed-9656-de3165677da9) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 480.7917 154.8606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SD_DAT1" (shape bidirectional) (at 389.89 111.76 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 8338ddaa-606a-4d1a-a4b0-c54371381637) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 379.494 111.6806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "USB_CLK" (shape input) (at 125.73 363.22 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 84302795-6e51-4792-a7ea-5c61af300bb2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 114.9712 363.2994 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A1" (shape output) (at 440.69 139.7 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 84b8af94-88df-4c85-8c42-5cd3fbbf6625) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 428.7217 139.6206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A6" (shape input) (at 306.07 276.86 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 85abfe4c-fae3-42b8-b150-4ad38497e106) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 294.1017 276.7806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ12" (shape bidirectional) (at 440.69 124.46 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 862fe50e-9b90-4138-a5d1-32a434b90437) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 426.0002 124.3806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "MCU_MISO" (shape input) (at 391.16 59.69 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 868964db-90df-4e71-bd86-c4b9792bdff7) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 403.1888 59.6106 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FLASH_IO1" (shape bidirectional) (at 274.32 39.37 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 8848bccd-8ef7-40a1-925f-7255e3788274) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 286.5907 39.2906 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ14" (shape bidirectional) (at 440.69 129.54 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 88bf97ab-56f0-4b4d-90d8-eb8b8e366de0) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 426.0002 129.4606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "I2C_SDA" (shape bidirectional) (at 330.2 41.91 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 891e0fcf-5b43-4967-90ae-5104b1d25ea3) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 320.1669 41.8306 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A6" (shape output) (at 491.49 177.8 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 8b5d8678-888b-47b8-863b-0f9a61de133e) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5217 177.7206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FLASH_IO0" (shape bidirectional) (at 389.89 175.26 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 8ba948e1-5a90-47ef-9a1c-9553ad875e0a) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 377.6193 175.1806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ10" (shape bidirectional) (at 341.63 279.4 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 8beeb667-2117-4095-b776-7ebd6ff965ec) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 356.3198 279.3206 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_A9" (shape output) (at 491.49 170.18 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 8bf63e73-0c16-43b1-9b86-649fd19a1cbf) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5217 170.2594 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD1" (shape bidirectional) (at 46.99 107.95 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 8d61e013-a8f1-4b32-8c83-dc37c8ec4d11) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 57.6883 107.8706 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQMH" (shape input) (at 306.07 307.34 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 8def7a66-ad1d-4f94-9811-e8068a174fc4) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 291.0174 307.2606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_CIC_DATA" (shape bidirectional) (at 542.29 132.08 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 8e6da4e0-fe1b-4db7-845d-749c54e234f9) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 526.6326 132.0006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A5" (shape output) (at 491.49 180.34 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 8fcf8802-7f36-4cdc-9727-0ff587283be6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5217 180.2606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ12" (shape bidirectional) (at 341.63 284.48 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 8ffc2dfa-9d31-45fc-834e-cf00010ff044) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 356.3198 284.4006 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_AD2" (shape bidirectional) (at 491.49 149.86 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 91ece52e-0278-4ae8-8fe9-033de700119d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 480.7917 149.7806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "~{SDRAM_CS}" (shape input) (at 306.07 297.18 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 920934fc-c396-4292-9af1-cfd5a436444b) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 293.9202 297.1006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SWDIO" (shape bidirectional) (at 391.16 46.99 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 923e676f-c0d1-472a-baf7-3f18b47c3276) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 399.4393 47.0694 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "~{SDRAM_CAS}" (shape input) (at 306.07 312.42 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 95082ce9-1d80-43b6-85c9-eeed4c9a0e52) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 292.8317 312.3406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "MCU_SCLK" (shape input) (at 389.89 137.16 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 96f16218-1eff-499e-8435-9f2494504c7f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 377.6798 137.0806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "USB_D-" (shape bidirectional) (at 125.73 335.28 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 977603e8-f004-4a5a-a7e3-0c18eb22953d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 115.6969 335.2006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A12" (shape output) (at 491.49 165.1 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 982d2a84-6872-4224-9e6a-e184848f60f1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 478.3121 165.1794 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SD_DAT0" (shape bidirectional) (at 389.89 114.3 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 9a88d170-0a50-4da3-8cfd-74444d3ee7f4) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 379.494 114.2206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_PIF_CLK" (shape input) (at 542.29 127 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 9ab4f203-b3a7-48a4-be84-79fcdb63ce24) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 527.6607 126.9206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "JTAG_TMS" (shape input) (at 389.89 152.4 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 9c6b6fcf-8dbd-4444-bb0f-49f0521190a8) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 378.5869 152.3206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD9" (shape bidirectional) (at 46.99 128.27 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 9d0ffb0d-5fa8-4b5d-b87b-114020e1fbc0) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 57.6883 128.1906 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "RTC_MFP" (shape input) (at 389.89 157.48 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 9d4e82d6-f198-4b7e-a7a2-457487cc56a6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 379.1917 157.5594 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD11" (shape bidirectional) (at 46.99 133.35 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 9dac2629-2fac-427d-8440-60e3f8c8ade5) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 58.8979 133.2706 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_CIC_DATA" (shape bidirectional) (at 46.99 181.61 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 9dbbce10-f377-4b65-b48f-cad343022805) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 62.6474 181.5306 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "LED" (shape input) (at 554.99 57.15 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 9dcffbe7-3023-4abb-bf9e-75222ac5befd) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 560.8502 57.0706 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_AD5" (shape bidirectional) (at 46.99 118.11 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 9ec7043d-0b4e-4882-b146-13557be5cab3) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 57.6883 118.0306 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "MCU_CS" (shape output) (at 391.16 64.77 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 9ff07e17-bc53-4106-bcd4-e89484ea3178) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 401.0721 64.6906 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_3V3" (shape output) (at 21.59 100.33 90) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid a0e882ba-d633-4867-91ab-a7665ea8ff2d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 21.5106 89.6921 90) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_A10" (shape input) (at 306.07 287.02 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid a163dbbd-acf2-4d62-8f57-219ffa673046) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 292.8921 286.9406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "UART_TX" (shape output) (at 391.16 52.07 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid a18fa5f4-3c36-4e7b-8ec9-8e454f6fa25d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 401.3745 52.1494 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_A1" (shape input) (at 306.07 264.16 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid a20cd07a-f46f-4d03-9d32-dc9b428ac0ac) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 294.1017 264.0806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_C3" (shape bidirectional) (at 179.07 350.52 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid a2bb5e0a-0840-49ec-bcf3-9b39f5fd069f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 350.5994 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_A12" (shape input) (at 306.07 292.1 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid a42fea39-0387-4c40-8d82-6c8e4a4bfe61) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 292.8921 292.0206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "~{SDRAM_CS}" (shape output) (at 440.69 152.4 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid a6d12459-33bb-4433-8907-eae2ee913080) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 428.5402 152.3206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD3" (shape bidirectional) (at 46.99 113.03 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid a9c7f496-a1eb-46f3-bd99-8ef0ab5b03bc) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 57.6883 112.9506 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "USB_EECS" (shape input) (at 44.45 257.81 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid aac17daa-d5f6-41e9-bc39-cf4a3950f306) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 32.4817 257.8894 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A4" (shape output) (at 491.49 182.88 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid ad144fdd-671b-44d0-be89-31f5677852e7) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5217 182.8006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ3" (shape bidirectional) (at 341.63 261.62 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid adc61e3e-9729-43b9-8b57-b610ce0914f9) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 355.1102 261.5406 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FTDI_D4" (shape bidirectional) (at 179.07 330.2 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid ae54ce75-c65f-4c0c-8444-58a9607a677e) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 330.1206 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SD_CMD" (shape bidirectional) (at 389.89 119.38 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid aea25a94-25b6-452a-8677-19051a759fb6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 380.0383 119.3006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "I2C_SDA" (shape bidirectional) (at 389.89 142.24 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid aeefd264-1af4-49f7-85d3-350e32584d00) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 379.8569 142.1606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_ALEH" (shape output) (at 46.99 151.13 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid b0af9440-e535-49c7-9c53-ba4c1feffaea) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 58.7164 151.0506 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FTDI_C0" (shape bidirectional) (at 542.29 208.28 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid b182f5c5-fb63-4e5d-b496-e4a75753fdcf) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 208.2006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD11" (shape bidirectional) (at 491.49 127 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid b1f4fa9c-4eb0-4c4d-9ab2-e5411430020f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5821 126.9206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "MCU_CS" (shape input) (at 389.89 139.7 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid b202406b-a772-45d0-8be3-5fd90bb325bb) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 379.9779 139.6206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_CIC_DATA" (shape bidirectional) (at 330.2 62.23 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid b25e98da-26bf-4f1c-b048-233efbdf894c) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 314.5426 62.1506 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ8" (shape bidirectional) (at 341.63 274.32 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid b2ef8eff-383d-44c4-9e67-d98f862692ff) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 355.1102 274.2406 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SD_CLK" (shape output) (at 389.89 116.84 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid b48acf7f-afbb-482b-be26-7b451c5979d1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 380.4617 116.7606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A7" (shape input) (at 306.07 279.4 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid b5f8c396-a866-48b6-8cd0-8c35f99c7908) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 294.1017 279.3206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FLASH_CLK" (shape output) (at 389.89 177.8 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid bb177665-a395-4543-be15-aee430dc634f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 377.1959 177.8794 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A0" (shape input) (at 306.07 261.62 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid bc0d8ad1-663b-4e88-945b-555547aa096f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 294.1017 261.5406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "USB_CLK" (shape output) (at 67.31 303.53 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid bccc538b-3d08-4a4b-b951-7784053c246a) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 78.0688 303.4506 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_JOYBUS" (shape bidirectional) (at 542.29 116.84 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid bd102889-e0f7-4ac6-a4cb-fa2bca0fb25a) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 527.9631 116.7606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_C2" (shape bidirectional) (at 542.29 203.2 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid bdbf70cd-c8cf-44e8-8357-316d241040fb) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 203.1206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_C7" (shape bidirectional) (at 542.29 187.96 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid becc3e13-b590-4677-b378-33261f35196e) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 187.8806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FPGA_CLK" (shape input) (at 542.29 190.5 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid bf0f029e-687e-4096-b8af-ba71a2f621e4) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 530.624 190.4206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ10" (shape bidirectional) (at 440.69 119.38 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid c1018502-6a41-488a-892b-ded31b4fdf2c) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 426.0002 119.3006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ15" (shape bidirectional) (at 341.63 292.1 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid c37f6d7b-cb0d-41e8-bebd-5887732015af) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 356.3198 292.0206 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SD_DAT2" (shape input) (at 172.72 114.3 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid c3df10c3-fba7-4c5a-9587-075444e684b7) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 162.324 114.2206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "I2C_SCL" (shape input) (at 389.89 144.78 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid c4030540-d494-4d87-a887-c49bd56508d7) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 379.9174 144.7006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A8" (shape input) (at 306.07 281.94 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid c5392dcf-e794-45b4-a5d5-99596dbc8929) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 294.1017 281.8606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQML" (shape input) (at 306.07 304.8 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid c54a76a7-12ab-4fcd-8bcb-4d465a460f36) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 291.3198 304.7206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "UART_RX" (shape input) (at 391.16 49.53 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid c70aea2c-4995-467d-8979-70c9e44f2a49) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 401.6769 49.6094 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "UART_RX" (shape output) (at 100.33 190.5 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid c928e6d5-dd6c-471f-8dbc-d6273a309270) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 110.8469 190.5794 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SD_CMD" (shape input) (at 172.72 119.38 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid cb6ed0c3-18c4-4032-8b10-384fa46481b2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 162.8683 119.3006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "RTC_MFP" (shape input) (at 330.2 44.45 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid cc0e68c9-0c90-4f05-81cf-ae7638c1dd8f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 319.5017 44.5294 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SD_CLK" (shape input) (at 172.72 124.46 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid cc52a326-8541-4213-a5d4-8f0d966505f1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 163.2917 124.3806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD8" (shape bidirectional) (at 491.49 114.3 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid cc97048b-fae3-414a-b01a-eb93ef628245) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 480.7917 114.2206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_BA1" (shape input) (at 306.07 256.54 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid cceff764-cfec-4042-acaa-f75f3164b4a3) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 292.8317 256.4606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "TEST1" (shape bidirectional) (at 200.66 186.69 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid ceb98ec4-6f5c-4899-bb11-b3a1b0002401) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 208.5764 186.6106 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ9" (shape bidirectional) (at 440.69 116.84 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid ceee921b-2a42-4f1f-a90c-7e797d2bdc41) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.2098 116.7606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_BA0" (shape output) (at 440.69 149.86 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid cf99d479-31fa-44b5-973a-dc3cf9297a26) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.4517 149.7806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "~{SDRAM_RAS}" (shape output) (at 440.69 154.94 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid d20cf9c0-ea4a-4f51-8f3f-c2587b9ead11) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.4517 154.8606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_CIC_CLK" (shape input) (at 542.29 129.54 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid d31e0d05-8fef-48fd-8045-5296aa6c9e34) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 527.4793 129.4606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "UART_RX" (shape input) (at 389.89 147.32 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid d34f3340-49fa-4fc7-88f3-cdcf981be752) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 379.3731 147.2406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD4" (shape bidirectional) (at 491.49 129.54 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid d41bc9ba-a78e-4d1b-a232-2dc47b67dcf8) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 480.7917 129.4606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "~{SDRAM_WE}" (shape input) (at 306.07 309.88 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid d4ce5c06-c6fa-4977-b319-3b49696f03e6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 293.7993 309.8006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_D2" (shape bidirectional) (at 179.07 325.12 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid d6203d9c-4f71-496b-a973-77d8a700a3b0) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 325.0406 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ6" (shape bidirectional) (at 341.63 269.24 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid da0d8a1b-a98c-4f10-bee1-6dee6985ef79) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 355.1102 269.1606 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FTDI_D1" (shape bidirectional) (at 179.07 322.58 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid da7a1850-24fc-4e54-8217-b6dc82c8c6a0) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 322.5006 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_AD8" (shape bidirectional) (at 46.99 125.73 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid daa12025-52c4-4c32-a1d8-9d6ee43baaf2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 57.6883 125.6506 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ15" (shape bidirectional) (at 440.69 132.08 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid dade527c-563d-4eb9-83a1-dd65dcbb1b6f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 426.0002 132.0006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_D2" (shape bidirectional) (at 542.29 160.02 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid dbd8a449-868d-40b6-af49-dcb2c6a6ceb7) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 159.9406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ11" (shape bidirectional) (at 341.63 281.94 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid dbe2158d-4ece-470a-a28e-c0afd4760ef9) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 356.3198 281.8606 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_A2" (shape output) (at 440.69 142.24 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid dc2aa244-f6c0-409f-8b99-de40d061d509) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 428.7217 142.1606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A11" (shape input) (at 306.07 289.56 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid dc800378-3706-48bf-8129-57dafbc4a19d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 292.8921 289.4806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SWCLK" (shape input) (at 391.16 44.45 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid dd616c5e-4bd6-4ddf-a478-ed1b96662535) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 399.8021 44.3706 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ7" (shape bidirectional) (at 341.63 271.78 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid de55684a-3078-4db1-ba90-08d4582b4149) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 355.1102 271.7006 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ7" (shape bidirectional) (at 440.69 165.1 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid e034e783-1a58-4cf1-9def-218949b0672f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.2098 165.1794 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_A11" (shape output) (at 491.49 167.64 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid e14528ed-c4f6-4b3c-bc43-7e08efb834ee) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 478.3121 167.7194 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "USB_EECLK" (shape output) (at 125.73 355.6 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid e2100e14-73d9-4521-a524-8edadbd1a3f5) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 112.6731 355.5206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FLASH_IO3" (shape bidirectional) (at 274.32 46.99 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid e378de3d-fb8b-4162-829d-a3d45274aea1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 286.5907 46.9106 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ1" (shape bidirectional) (at 341.63 256.54 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid e4bf007c-078e-4372-814b-421fe93cec7d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 355.1102 256.4606 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FTDI_C5" (shape bidirectional) (at 179.07 355.6 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid e63ad843-6dfa-4381-b863-323d40ea6a46) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 355.6794 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "~{N64_WRITE}" (shape input) (at 491.49 137.16 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid e71cd9b2-e5cf-4718-b394-5e4eb43249c1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 478.9169 137.0806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "I2C_SCL" (shape input) (at 455.93 39.37 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid e81d129e-be98-4675-8a9c-dbea091f173b) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 445.9574 39.2906 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_C6" (shape bidirectional) (at 179.07 358.14 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid e865223d-701b-4933-8a43-634eab253cf9) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 358.2194 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "MCU_INT" (shape output) (at 389.89 129.54 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid e8fb4f67-b4ca-47ed-95a2-2aefb2346b30) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 379.5545 129.4606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "~{N64_NMI}" (shape input) (at 542.29 119.38 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid ea04a177-ae39-49a0-a57c-c42701cc1564) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 531.7731 119.3006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "JTAG_TDI" (shape input) (at 389.89 162.56 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid eca7403d-1100-44b2-887a-70dd973438a1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 379.3731 162.4806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_C0" (shape bidirectional) (at 179.07 342.9 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid ededeb9b-06f5-4c37-b7c8-e9e7d9c3a823) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 188.8612 342.9794 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "~{N64_WRITE}" (shape output) (at 46.99 156.21 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid ee929389-ba3e-4f6f-8d5c-1f9e74c2c7da) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 59.5631 156.1306 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SD_DAT0" (shape input) (at 172.72 129.54 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid eef5ab7f-101f-4651-ad58-986ce67617f8) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 162.324 129.4606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD15" (shape bidirectional) (at 491.49 157.48 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid ef3c12f9-3eb9-49e5-914d-7f6a940c19d3) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5821 157.4006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD14" (shape bidirectional) (at 46.99 140.97 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid ef4beeb4-cb87-40bf-afe6-172634115d84) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 58.8979 140.8906 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_CLK" (shape output) (at 491.49 162.56 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid f06e4042-0158-4e88-93a8-8f2abd8d3ad9) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 478.2517 162.6394 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "~{SDRAM_CAS}" (shape output) (at 440.69 157.48 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid f17d9fb0-fa1b-4441-bf7f-5274ca383c63) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.4517 157.4006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SD_DAT1" (shape input) (at 172.72 132.08 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid f4443ecc-58c4-43a5-a3cc-2201a91029c2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 162.324 132.0006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD5" (shape bidirectional) (at 491.49 124.46 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid f4db8147-df0c-4bcc-bc33-42d72c6ee011) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 480.7917 124.3806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FLASH_IO1" (shape bidirectional) (at 389.89 170.18 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid f4e37a89-61a5-4786-a1ef-7c60f4ed27be) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 377.6193 170.2594 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FTDI_C5" (shape bidirectional) (at 542.29 195.58 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid f4e96f3d-78ba-4af4-a463-b60a283ff048) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 195.5006 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ2" (shape bidirectional) (at 440.69 177.8 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid f56bc09a-e006-4896-a9cd-f6b2d1c2b521) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 427.2098 177.8794 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "N64_AD4" (shape bidirectional) (at 46.99 115.57 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid f60080a4-bbc0-41f1-b528-b314f6fff8c1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 57.6883 115.4906 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ14" (shape bidirectional) (at 341.63 289.56 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid f6ed7df5-27f5-4627-9192-46fcd6263cc1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 356.3198 289.4806 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_AD6" (shape bidirectional) (at 46.99 120.65 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid f840a5c8-4149-4ff2-b48e-20614c70e69f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 57.6883 120.5706 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "FTDI_C1" (shape bidirectional) (at 542.29 205.74 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid f8935f4f-fd5b-4ba9-8e1f-c90d4a4adba1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 532.4988 205.6606 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "FPGA_CLK" (shape output) (at 468.63 208.28 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid fa0af7a0-5990-4b71-b45b-8f644891ae87) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 480.296 208.2006 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_CLK" (shape input) (at 306.07 302.26 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid fa51ae41-e32f-46c2-8bc0-91a0bc249a8e) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 292.8317 302.1806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "JTAG_TDI" (shape output) (at 157.48 186.69 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid fb46ad8c-9359-402d-b0bf-c998e11dc57c) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 167.9969 186.6106 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQML" (shape output) (at 440.69 162.56 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid fb596e4c-6b9f-4b73-8d91-d86ee0192628) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 425.9398 162.4806 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "MCU_INT" (shape input) (at 391.16 54.61 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid fc89a334-bf97-435f-bf94-8e279b40caaa) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 401.4955 54.5306 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_A8" (shape output) (at 491.49 172.72 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid fcc3a562-3965-45a5-ae04-fe20fefa481a) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 479.5217 172.6406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDRAM_DQ2" (shape bidirectional) (at 341.63 259.08 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid feb72417-aa60-4411-a809-87e616471644) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 355.1102 259.0006 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "SDRAM_DQ4" (shape bidirectional) (at 341.63 264.16 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid ff31b705-37ae-4fc2-ba54-4bd5eeac5314) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 355.1102 264.0806 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "N64_AD15" (shape bidirectional) (at 46.99 143.51 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid ff54d152-d011-4d5f-a511-091b49a5169b) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 58.8979 143.4306 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + + (symbol (lib_id "power:GND") (at 191.77 59.69 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 005d911a-2856-4c79-9c31-c86f93de6d0c) + (property "Reference" "#PWR04" (id 0) (at 191.77 66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 191.77 64.77 0)) + (property "Footprint" "" (id 2) (at 191.77 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 191.77 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 67eb998b-8136-4289-902a-697a5cd8166a)) + ) + + (symbol (lib_id "power:GND") (at 321.31 325.12 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 0150f8e7-8dce-4920-83f6-9e75396f39b7) + (property "Reference" "#PWR038" (id 0) (at 321.31 331.47 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 321.31 330.2 0)) + (property "Footprint" "" (id 2) (at 321.31 325.12 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 321.31 325.12 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d285748a-9fb8-4b09-8ec4-3b6d5a1b64b2)) + ) + + (symbol (lib_id "Device:C") (at 161.29 300.99 180) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 03085d81-2734-4969-bd47-0eafbab0f38e) + (property "Reference" "C8" (id 0) (at 165.1 299.7199 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "100nF" (id 1) (at 165.1 302.2599 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 160.3248 297.18 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 161.29 300.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 78ec5f65-40cb-4bc4-9206-7033a2c1d5a4)) + (pin "2" (uuid be5f343b-4288-423b-a394-2956b55b2d61)) + ) + + (symbol (lib_id "Device:C") (at 215.9 288.29 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 04819b2b-cb43-4cae-baac-01caae26be72) + (property "Reference" "C15" (id 0) (at 219.71 287.0199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 219.71 289.5599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 216.8652 292.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 215.9 288.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f0fc3ca8-9400-43e1-9bc6-c01d231ed10d)) + (pin "2" (uuid 67414286-2a97-4a35-85d5-6b93fee117c2)) + ) + + (symbol (lib_id "Connector:Micro_SD_Card_Det") (at 200.66 124.46 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 09e47e41-fce2-4be6-a894-63ccba0f1215) + (property "Reference" "J4" (id 0) (at 201.295 102.87 0)) + (property "Value" "104031-0811" (id 1) (at 201.295 105.41 0)) + (property "Footprint" "Connector_Card:microSD_HC_Molex_104031-0811" (id 2) (at 252.73 106.68 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "https://www.hirose.com/product/en/download_file/key_name/DM3/category/Catalog/doc_file_id/49662/?file_category_id=4&item_id=195&is_series=1" (id 3) (at 200.66 121.92 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8c8dd503-e03c-4d4c-9cf5-8ddbd1c80ac9)) + (pin "10" (uuid bf0d2ead-6363-401f-add7-220acad33022)) + (pin "11" (uuid 29a9cadd-8f72-4a15-849b-caff12ce470b)) + (pin "2" (uuid 45662729-4175-444c-a13e-dc3726b5538c)) + (pin "3" (uuid 0f11ff74-6e4d-4eca-8896-2fb594e0e16b)) + (pin "4" (uuid 31d88c23-2026-4b6e-92c0-c11072f45df0)) + (pin "5" (uuid ac8191f6-e782-4d4f-a65d-4d1c206e81d9)) + (pin "6" (uuid fa74ec4e-9ace-4228-b828-dd508f169201)) + (pin "7" (uuid 030c91b3-0dc9-4ce1-9cd9-a9d93e85ec88)) + (pin "8" (uuid b7979eef-147c-4605-aa50-92978529eb46)) + (pin "9" (uuid d59cdd67-b268-4271-ad81-bab8561091ad)) + ) + + (symbol (lib_id "Device:C") (at 36.83 303.53 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 0a51cd04-5336-4bfb-ac7b-21533c8d00bb) + (property "Reference" "C17" (id 0) (at 40.64 302.2599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 40.64 304.7999 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 37.7952 307.34 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 36.83 303.53 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e73c6929-39c9-42bb-9df2-bfdb2246d184)) + (pin "2" (uuid 95b8b15a-f750-4928-9a4c-b059161e2eb9)) + ) + + (symbol (lib_id "power:+3V3") (at 57.15 243.84 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 0a5cf21d-6f1b-4b58-968b-d6b8ebd6334f) + (property "Reference" "#PWR07" (id 0) (at 57.15 247.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 57.15 238.76 0)) + (property "Footprint" "" (id 2) (at 57.15 243.84 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 57.15 243.84 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 500b9d1e-84e9-4497-a093-08f6521d738f)) + ) + + (symbol (lib_id "power:GND") (at 223.52 143.51 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 0b54e0b3-595c-47db-bcec-c6a557e236e7) + (property "Reference" "#PWR044" (id 0) (at 223.52 149.86 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 223.52 148.59 0)) + (property "Footprint" "" (id 2) (at 223.52 143.51 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 223.52 143.51 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 6e4423c1-8cd7-4957-9ea6-b6568da196ea)) + ) + + (symbol (lib_id "Device:R") (at 121.92 347.98 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 0c635b0d-75d2-43fe-aa37-07274a83e016) + (property "Reference" "R6" (id 0) (at 121.92 345.44 90)) + (property "Value" "12k" (id 1) (at 125.73 345.44 90)) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 121.92 349.758 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 121.92 347.98 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 774b088d-6e01-4f35-a19c-8e8499e41911)) + (pin "2" (uuid b2a28053-c651-4dc3-b22f-390564c48823)) + ) + + (symbol (lib_id "sc64v2:N64_Cartridge") (at 34.29 102.87 0) (unit 1) + (in_bom no) (on_board yes) + (uuid 0ccace5b-45a7-46eb-82b5-c5e6d2488545) + (property "Reference" "J_N1" (id 0) (at 34.29 99.06 0)) + (property "Value" "N64_Cartridge" (id 1) (at 34.29 101.6 0)) + (property "Footprint" "sc64v2:N64_Edge" (id 2) (at 34.29 76.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 34.29 76.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5069c57b-e810-49d9-8aae-d7be5a744afb)) + (pin "10" (uuid b465f0d2-3ae2-4f5e-967c-db7ab60754c3)) + (pin "11" (uuid eaf90d05-c79a-451c-b84b-2c3cb0319974)) + (pin "12" (uuid b76376ee-eaa4-4b97-9f51-8f476e144c56)) + (pin "13" (uuid b4de5fb3-e939-4480-818c-886b3ab6bf9b)) + (pin "14" (uuid 01f80648-ea69-4e7a-b059-f145793c76c4)) + (pin "15" (uuid 781f73ef-153c-49c4-8450-d94e664e0017)) + (pin "16" (uuid d346f018-8e78-4a97-bf3c-b91adaf64498)) + (pin "17" (uuid fb9fbb52-14d4-4062-9475-ec74defe9327)) + (pin "18" (uuid ec7b4d89-a559-420d-a9a4-cd7159e5986d)) + (pin "19" (uuid 333784e4-fd7f-4860-a9e7-4ff64238b409)) + (pin "2" (uuid 5e6cba46-df91-4b36-a35e-6ebfc0595b91)) + (pin "20" (uuid efe2e735-4f3a-4940-b000-9681d2689d11)) + (pin "21" (uuid a09d377c-b35b-4fa3-af2e-1d8a03e33041)) + (pin "22" (uuid e60ea527-20fa-42d3-9be6-6be6076311e4)) + (pin "23" (uuid a6eaf040-48a7-41cb-b884-74f0a13be2af)) + (pin "24" (uuid 4f91a32d-26a4-403b-9fe4-f202a7d18ca1)) + (pin "25" (uuid 37fe2c29-fe26-4b0a-b981-aa090d129b3d)) + (pin "26" (uuid a89a082f-9076-4680-909a-e452a3efcce7)) + (pin "27" (uuid 26448286-f985-46f0-9387-272a4d45b15a)) + (pin "28" (uuid 0a78dbf4-50db-47ff-b551-3e85ce211bd5)) + (pin "29" (uuid 3b4c19c5-840d-42f3-aeca-cb1a8bdf6459)) + (pin "3" (uuid f8163210-6c92-4fb6-80e8-1b20a5dd7da5)) + (pin "30" (uuid 4fc49bfe-6d6d-447d-b945-90c3d4d5e8f3)) + (pin "31" (uuid f3256f02-73e2-47f0-9501-f1e1c4dc6b67)) + (pin "32" (uuid 7a1ca4ab-7ec1-42ff-a27b-73d126182235)) + (pin "33" (uuid d3664878-ce81-4230-b909-09dee5024175)) + (pin "34" (uuid 8c7cfb57-e13d-4a3d-beac-498f9f4de146)) + (pin "35" (uuid f3953bae-c4df-4889-9438-f2c7a8e12eda)) + (pin "36" (uuid 357d4381-714a-4aae-aa1a-b6d69a3491ea)) + (pin "37" (uuid fea712ce-8a4c-45e4-a137-d4e28236cccc)) + (pin "38" (uuid 3ff5cb30-19ec-4110-a1a6-ea12067c0154)) + (pin "39" (uuid d8e3e689-c509-4bd8-b960-1bb37ee4f3bd)) + (pin "4" (uuid ef3abe03-d68b-4855-bc8f-417487ded968)) + (pin "40" (uuid 18e2a33e-8c64-47e2-a97b-f5dbfe233a38)) + (pin "41" (uuid a86e114e-d6ff-43e3-b6ae-910ea32f6fd4)) + (pin "42" (uuid 9a72e10b-191a-4fb1-a40f-b2297f01e083)) + (pin "43" (uuid a75142f2-7a9b-4c12-8657-e47f90013fdb)) + (pin "44" (uuid 9d9315d5-1881-4093-8739-b574faa1fefd)) + (pin "45" (uuid 0970c0c6-ef87-4c89-ac5d-4b35bf51f93b)) + (pin "46" (uuid 4d747a23-5486-4016-a0e6-055ecc089488)) + (pin "47" (uuid 8c9c179f-318f-4b3c-a530-90beee2229b8)) + (pin "48" (uuid cd22000c-bb1e-4204-b747-65ef16ed2b36)) + (pin "49" (uuid 2eb200ba-e438-453e-943c-35f87d853bd8)) + (pin "5" (uuid 4bdde084-d87f-4b06-97a4-ba17eb9193b1)) + (pin "50" (uuid 4ebafd64-3121-41df-bb6e-0c057b15f983)) + (pin "6" (uuid 8d378657-dc8c-4d64-96f5-dba9b79c9424)) + (pin "7" (uuid d73d39f4-5b50-473f-a5b2-482acb60bcfa)) + (pin "8" (uuid b5ff3f55-cea3-4748-879d-af06b37815e3)) + (pin "9" (uuid 981034d3-4ba9-410a-8568-6651f93125bb)) + ) + + (symbol (lib_id "Device:C") (at 97.79 336.55 180) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 0f368328-b928-4c36-bde8-df1e5494dab0) + (property "Reference" "C13" (id 0) (at 101.6 335.2799 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "100nF" (id 1) (at 101.6 337.8199 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 96.8248 332.74 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 97.79 336.55 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 9e553944-1994-4642-b626-11b621d9344d)) + (pin "2" (uuid 4c5ce193-4baa-4fbe-9fef-6f19d08825b4)) + ) + + (symbol (lib_id "power:+3V3") (at 238.76 276.86 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 0f91af28-d384-42cd-b1de-f16367e46432) + (property "Reference" "#PWR037" (id 0) (at 238.76 280.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 238.76 271.78 0)) + (property "Footprint" "" (id 2) (at 238.76 276.86 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 238.76 276.86 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid bbf05ba4-c85d-4a37-9e7f-c493486418a0)) + ) + + (symbol (lib_id "power:GND") (at 458.47 220.98 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 0fad0d8f-fd7c-4df1-8c91-d5670e93c882) + (property "Reference" "#PWR029" (id 0) (at 458.47 227.33 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 458.47 226.06 0)) + (property "Footprint" "" (id 2) (at 458.47 220.98 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 458.47 220.98 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8b2b20e8-1e64-40a2-af92-c1b0a02a70de)) + ) + + (symbol (lib_id "Memory_Flash:W25Q128JVS") (at 256.54 41.91 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 0fc6d60f-b51b-46bd-9f02-cc292d56b643) + (property "Reference" "U5" (id 0) (at 258.5594 29.21 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "W25Q128JVSIQ" (id 1) (at 258.5594 31.75 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_SO:SOIC-8_5.23x5.23mm_P1.27mm" (id 2) (at 256.54 41.91 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.winbond.com/resource-files/w25q128jv_dtr%20revc%2003272018%20plus.pdf" (id 3) (at 256.54 41.91 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid fe2962cd-0750-4216-aad2-297e77503161)) + (pin "2" (uuid dd5b3a7f-b9f2-4a69-ab3e-e607b6a52b47)) + (pin "3" (uuid 40b072cb-1e29-412e-99c0-c22d0c5f58fb)) + (pin "4" (uuid d7da42d9-0113-421b-877d-621195b6776e)) + (pin "5" (uuid 15d48852-3ea2-4767-a896-46813dce8589)) + (pin "6" (uuid 1c741d7c-0741-43b4-824a-7f67568e467d)) + (pin "7" (uuid e4bc6609-8a6f-4c56-be99-bb869759cec3)) + (pin "8" (uuid 4ca440eb-2a1f-474e-a9b1-95dc25cddc9e)) + ) + + (symbol (lib_id "Device:C") (at 361.95 146.05 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 109c53cf-c8a3-456a-9546-7c3328fa259a) + (property "Reference" "C39" (id 0) (at 365.76 144.7799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 365.76 147.3199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 362.9152 149.86 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 361.95 146.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid bc260325-a1c3-4ee6-9928-87dbab025752)) + (pin "2" (uuid effa66c9-ce65-4f9f-86b5-c0c4531b7e34)) + ) + + (symbol (lib_id "sc64v2:TPS2111A") (at 134.62 34.29 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 11199015-56cf-4f32-a080-c15518c28d0f) + (property "Reference" "U2" (id 0) (at 134.62 30.48 0)) + (property "Value" "TPS2111A" (id 1) (at 134.62 33.02 0)) + (property "Footprint" "Package_SO:TSSOP-8_4.4x3mm_P0.65mm" (id 2) (at 134.62 27.94 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 134.62 34.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e10f9beb-2640-4cd4-b02b-6b7325f3a73e)) + (pin "2" (uuid 7da6179d-2a57-43b8-af5c-68a4f3b134af)) + (pin "3" (uuid 9353b1c6-e8b1-4d0e-b2ee-a35d4776530a)) + (pin "4" (uuid bb124602-4872-42dc-a675-06b1b96b21c1)) + (pin "5" (uuid 7522bc6a-1b61-41f4-b4ed-d83ff7443f2b)) + (pin "6" (uuid 7c1508c3-1070-4962-aac5-546376714306)) + (pin "7" (uuid cd7cde63-d84a-4e48-b120-00006dc30c85)) + (pin "8" (uuid e7bf6b3f-02bf-4404-83ac-ce12db24fe61)) + ) + + (symbol (lib_id "Device:C") (at 504.19 52.07 270) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 13265650-3af2-4401-adaf-15efd42a756b) + (property "Reference" "C22" (id 0) (at 504.19 44.45 90)) + (property "Value" "7pF" (id 1) (at 504.19 46.99 90)) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 500.38 53.0352 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 504.19 52.07 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 513a7c8d-2a85-445b-a77b-d9a549890b8e)) + (pin "2" (uuid a6d331cb-2bd2-483f-a339-1064b8eb9002)) + ) + + (symbol (lib_id "Device:C") (at 191.77 48.26 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 13d2b351-5091-4e28-9a5e-2a00667fbc07) + (property "Reference" "C5" (id 0) (at 195.58 46.9899 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 195.58 49.5299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 192.7352 52.07 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 191.77 48.26 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 9d3cba64-32da-4819-9222-df6ed78d7f59)) + (pin "2" (uuid b46ad284-2af0-41d1-9c41-ae5fabceb913)) + ) + + (symbol (lib_id "power:GND") (at 132.08 196.85 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 170387e1-6ac2-4b17-ba7d-81085fc7fcd1) + (property "Reference" "#PWR016" (id 0) (at 132.08 203.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 132.08 201.93 0)) + (property "Footprint" "" (id 2) (at 132.08 196.85 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 132.08 196.85 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 23f9f3df-5a48-4655-89e7-c1f3276af62b)) + ) + + (symbol (lib_id "Connector:Conn_01x03_Male") (at 90.17 190.5 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 18505a27-e048-4c99-939f-13bbdf43eb7b) + (property "Reference" "J2" (id 0) (at 90.805 182.88 0)) + (property "Value" "Conn_01x03_Male" (id 1) (at 90.805 185.42 0)) + (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" (id 2) (at 90.17 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 90.17 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b12e3d1c-ca3c-4418-aa7b-42dd51df6cdd)) + (pin "2" (uuid 1ebf271f-930e-438c-b0a2-66834e719963)) + (pin "3" (uuid e203e995-5e7f-4c58-bfca-13f6e9b68658)) + ) + + (symbol (lib_id "power:+3V3") (at 289.56 95.25 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 18a12c40-b756-4576-b5ce-524bd6741009) + (property "Reference" "#PWR030" (id 0) (at 289.56 99.06 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 289.56 90.17 0)) + (property "Footprint" "" (id 2) (at 289.56 95.25 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 289.56 95.25 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid cbe9e152-1419-4aae-b3d2-b01c455e571c)) + ) + + (symbol (lib_id "power:+3V3") (at 557.53 26.67 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 1c597b4f-8d32-41b8-a401-ea79b7e354de) + (property "Reference" "#PWR017" (id 0) (at 557.53 30.48 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 557.53 21.59 0)) + (property "Footprint" "" (id 2) (at 557.53 26.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 557.53 26.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 552194df-dadd-407e-9b6c-56b8334ee310)) + ) + + (symbol (lib_id "Memory_RAM:MT48LC16M16A2TG") (at 323.85 284.48 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 1dbbd042-b212-4933-895e-d1a10aa96c60) + (property "Reference" "U9" (id 0) (at 325.8694 246.38 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "IS42S16320F-7TL" (id 1) (at 325.8694 248.92 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_SO:TSOP-II-54_22.2x10.16mm_P0.8mm" (id 2) (at 323.85 320.04 0) + (effects (font (size 1.27 1.27) italic) hide) + ) + (property "Datasheet" "https://www.micron.com/-/media/client/global/documents/products/data-sheet/dram/256mb_sdr.pdf" (id 3) (at 323.85 290.83 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid fb86327d-efb2-45c0-bf20-16055d4b7806)) + (pin "10" (uuid fa1b5a6e-f150-4519-bc47-45d93fe8d11e)) + (pin "11" (uuid 0cf46e81-69e2-4789-8e57-a257d534e594)) + (pin "12" (uuid f2d3d108-862a-46e6-afdd-410f2bf8c492)) + (pin "13" (uuid ba5245a5-3473-40d0-8d61-7cc9e09d5d94)) + (pin "14" (uuid b686f8f0-5f0e-4848-b6d0-ab11e25d12d6)) + (pin "15" (uuid b0c3e341-ba2e-4e8c-9f68-c00d101de174)) + (pin "16" (uuid 5f86609c-6996-43b8-bb7a-f47694d2ae52)) + (pin "17" (uuid 6cc6419e-2483-4cd1-9f74-364b6b34e338)) + (pin "18" (uuid 06c51193-9653-4373-b83c-2bcd44e203e7)) + (pin "19" (uuid 5a186585-adac-4d2a-a473-4b316305a84f)) + (pin "2" (uuid 70918317-9ade-4314-bc9a-0027e04b9df0)) + (pin "20" (uuid 25cff1ca-78d7-4128-89ab-da7bf70f2602)) + (pin "21" (uuid da125f13-a6cd-4354-abfa-08431ff5a0e9)) + (pin "22" (uuid 5f5e4896-2da0-47c3-b996-c9b61ed5d77e)) + (pin "23" (uuid 1baa054f-91c8-4b60-a0fc-158a3773663d)) + (pin "24" (uuid 6a75c6b3-7e60-479d-bd02-45c0d17eb5cd)) + (pin "25" (uuid 8ea7cb43-2675-4007-910e-6aae7ef8a57e)) + (pin "26" (uuid b2f2574c-f18a-40e8-94e4-c63441a9fff3)) + (pin "27" (uuid 5c2e7ed4-1fa4-4cba-be6e-d15be51ce7d7)) + (pin "28" (uuid fd3be9c5-5665-4801-8155-84892f99ff19)) + (pin "29" (uuid a8495160-9c42-4a74-abdc-e223a140ab94)) + (pin "3" (uuid 234b3a37-930c-45d0-b18e-51e4d46299c6)) + (pin "30" (uuid 5a925200-55da-4ec8-8e3e-73bdefb745dc)) + (pin "31" (uuid 56b7ca5e-87b3-4c82-8b18-50ff81e0b72e)) + (pin "32" (uuid 3f599525-8211-46a7-a6bb-60db6a40aae0)) + (pin "33" (uuid 8a9f6e4a-e586-4ee7-9fe6-4e0137792ea0)) + (pin "34" (uuid 0bc364ab-c5b3-44f8-bec5-4094e38768f3)) + (pin "35" (uuid 49ad1df5-1ee4-4b4d-a502-67993612e8ae)) + (pin "36" (uuid bb21b2cd-3c58-44b7-8fd7-3d562d77419b)) + (pin "37" (uuid b7bc38c0-b47c-4f75-89f9-254c7fe4befe)) + (pin "38" (uuid ef20f7d0-a715-4df5-ae72-8b86e9262b9a)) + (pin "39" (uuid 35295ad0-1053-463c-a321-beb70a7aafb9)) + (pin "4" (uuid f0f7e5fe-5ffe-4196-8f9b-fe35a7f7f218)) + (pin "40" (uuid 19242da7-36d2-4a1d-8607-95b8164cb992)) + (pin "41" (uuid 419d0d48-ad3f-47ad-828b-d29bd36c7a06)) + (pin "42" (uuid 4765d818-81cd-4ea3-bd7b-485a3258ee1e)) + (pin "43" (uuid 3c6d702f-cace-46eb-adf0-11e4f0368ceb)) + (pin "44" (uuid c239a046-1e55-4fbe-a08c-e47326a0d23d)) + (pin "45" (uuid 827637da-92e9-4fe3-b90f-9308a19f7a00)) + (pin "46" (uuid 76849968-5890-4c2d-bd20-8d4b8baa9319)) + (pin "47" (uuid ac9ba36e-7d8d-4e9e-a34f-86e725a9202c)) + (pin "48" (uuid 28b39963-0f35-4e53-8780-ca410174b519)) + (pin "49" (uuid 17c2725f-9658-4fb4-b7ca-c275b3a5c755)) + (pin "5" (uuid 9225788f-dc25-426b-b356-6cb8e457b2b3)) + (pin "50" (uuid 96ec85ef-b9a0-4053-ad51-259c4bac5a98)) + (pin "51" (uuid db0215bf-317d-49df-a9b0-f8e5ecdbcc97)) + (pin "52" (uuid c8c4efb3-406d-4dd7-82e3-03fbcce00f48)) + (pin "53" (uuid ffb7d6a6-2123-45e3-a2e5-a5d5e053aba7)) + (pin "54" (uuid 8cb82971-52a3-44d9-a584-022d9394ce70)) + (pin "6" (uuid ac188212-e7eb-4b46-830f-31306ae230ba)) + (pin "7" (uuid 9de299e1-acc8-42a4-ac13-52d42c8fd559)) + (pin "8" (uuid 355b9530-f920-4d58-82da-be4e11708515)) + (pin "9" (uuid 122bcd35-e801-4408-a510-20a648a1a2e1)) + ) + + (symbol (lib_id "Device:C") (at 251.46 285.75 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 1df87e80-2d07-4a8a-bb5b-e5faf9d9c905) + (property "Reference" "C44" (id 0) (at 255.27 284.4799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 255.27 287.0199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 252.4252 289.56 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 251.46 285.75 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid cf4efc07-6ef6-45af-9aea-7b3e75134c25)) + (pin "2" (uuid 808c6f35-8a5f-44e6-940b-7e37a3716959)) + ) + + (symbol (lib_id "power:+3V3") (at 321.31 243.84 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 1ee21910-144e-4257-a76f-0adfeca68e45) + (property "Reference" "#PWR032" (id 0) (at 321.31 247.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 321.31 238.76 0)) + (property "Footprint" "" (id 2) (at 321.31 243.84 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 321.31 243.84 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 223892b5-4401-4fd4-b3c2-36cadf7f3ef7)) + ) + + (symbol (lib_id "power:GND") (at 532.13 41.91 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 1efd382c-77ba-44cc-854c-77f44cf4adc4) + (property "Reference" "#PWR018" (id 0) (at 532.13 48.26 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 532.13 46.99 0)) + (property "Footprint" "" (id 2) (at 532.13 41.91 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 532.13 41.91 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b89504aa-9d44-465c-a629-a4da64fefcc9)) + ) + + (symbol (lib_id "Device:R") (at 317.5 35.56 180) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 218503c2-8dbd-4619-ac7b-4c01fe0226fe) + (property "Reference" "R13" (id 0) (at 320.04 34.2899 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "10k" (id 1) (at 320.04 36.8299 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 319.278 35.56 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 317.5 35.56 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4f0b6391-10dd-468c-9bdb-6168afe5a8fd)) + (pin "2" (uuid 904fee75-2ae6-421c-beec-f7c72f8375ba)) + ) + + (symbol (lib_id "Device:C") (at 22.86 38.1 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 2263c8e5-5551-4045-b466-779e9e5fd361) + (property "Reference" "C1" (id 0) (at 26.67 36.8299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "4.7uF" (id 1) (at 26.67 39.3699 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 23.8252 41.91 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 22.86 38.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid a5723b07-dc9c-44a3-a5b8-be403a64434a)) + (pin "2" (uuid 99afb3ba-3a35-4529-9514-a36e09f2cf09)) + ) + + (symbol (lib_id "Device:C") (at 35.56 38.1 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 23f0bb46-eb5d-4798-b7ac-fd1aad5c7d6a) + (property "Reference" "C2" (id 0) (at 39.37 36.8299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 39.37 39.3699 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 36.5252 41.91 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 35.56 38.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 9ba6f386-abe4-4119-94dd-8931c9eb05e5)) + (pin "2" (uuid a5148bbe-5507-4466-8a74-a533b8f0b0ab)) + ) + + (symbol (lib_id "Device:C") (at 135.89 124.46 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 25b1fb90-87c1-483e-8933-09b55f4fd3ab) + (property "Reference" "C47" (id 0) (at 139.7 123.1899 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 139.7 125.7299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 136.8552 128.27 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 135.89 124.46 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 141e10e1-b0a4-421c-814f-05c077c1f9b4)) + (pin "2" (uuid 2b652fcd-ff28-4bae-bd6c-a4a3783b6ac4)) + ) + + (symbol (lib_id "Device:Battery_Cell") (at 436.88 45.72 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 29bdd9c1-a511-41a4-81ee-696b6cbdf543) + (property "Reference" "BT1" (id 0) (at 433.07 43.18 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "1060" (id 1) (at 433.07 45.72 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Battery:BatteryHolder_Keystone_1060_1x2032" (id 2) (at 436.88 44.196 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 436.88 44.196 90) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 829c06f1-fb75-4b63-bb5a-e244955425e5)) + (pin "2" (uuid 182d89c2-53e5-49ac-9766-d578fb676c72)) + ) + + (symbol (lib_id "Device:C") (at 349.25 105.41 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 2bbbf7e2-fec0-4e0e-af5e-d1d876305dd1) + (property "Reference" "C29" (id 0) (at 353.06 104.1399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 353.06 106.6799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 350.2152 109.22 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 349.25 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e76e2371-64e2-49bb-befd-3ab506a639c7)) + (pin "2" (uuid 30106391-6a34-4ba1-a6a9-3ac26f20bc10)) + ) + + (symbol (lib_id "power:GND") (at 60.96 59.69 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 2c68f5da-25e5-4b38-8f43-a5fa3c8fbaf6) + (property "Reference" "#PWR03" (id 0) (at 60.96 66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 60.96 64.77 0)) + (property "Footprint" "" (id 2) (at 60.96 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 60.96 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 210a999d-1d04-4446-98e8-20a41fa2f9e8)) + ) + + (symbol (lib_id "Regulator_Linear:TC1262-33") (at 48.26 31.75 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 2d0fed17-815d-432f-a7eb-ae8520ef2c33) + (property "Reference" "U1" (id 0) (at 48.26 24.13 0)) + (property "Value" "TC1264-3.3VDB" (id 1) (at 48.26 26.67 0)) + (property "Footprint" "Package_TO_SOT_SMD:SOT-223-3_TabPin2" (id 2) (at 48.26 26.035 0) + (effects (font (size 1.27 1.27) italic) hide) + ) + (property "Datasheet" "http://ww1.microchip.com/downloads/en/DeviceDoc/21373C.pdf" (id 3) (at 48.26 39.37 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid bbc2b036-3f97-45ce-a2a8-2f25a26f004f)) + (pin "2" (uuid 929089dd-a477-419f-8582-7057af5126ec)) + (pin "3" (uuid fef16bfc-b094-4595-bd39-b7e5968bdb00)) + ) + + (symbol (lib_id "Device:C") (at 161.29 288.29 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 2fe178e5-f305-4d73-9f34-5dc926fbad07) + (property "Reference" "C9" (id 0) (at 165.1 287.0199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 165.1 289.5599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 162.2552 292.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 161.29 288.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8bf07274-0e26-4d88-9c75-3611837f60f3)) + (pin "2" (uuid dbdae8d2-1a14-4ca5-84b9-4a4ef2d71fcb)) + ) + + (symbol (lib_id "Device:R") (at 332.74 35.56 180) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 303e7d15-a601-4397-8721-b9f3cf051807) + (property "Reference" "R14" (id 0) (at 335.28 34.2899 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "2.2k" (id 1) (at 335.28 36.8299 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 334.518 35.56 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 332.74 35.56 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 3e6b5ab8-9e22-4e2d-8b54-778e455e63d4)) + (pin "2" (uuid a2eb79cd-55e5-45c6-8014-298e7653bb5c)) + ) + + (symbol (lib_id "Device:R") (at 548.64 57.15 270) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 351bd7d9-24e6-4a96-9b71-d9b4f5d9bd9a) + (property "Reference" "R18" (id 0) (at 548.64 50.8 90)) + (property "Value" "1k" (id 1) (at 548.64 53.34 90)) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 548.64 55.372 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 548.64 57.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8557d29b-1845-48fc-99c3-72c457090ad2)) + (pin "2" (uuid c020f6c1-f97e-4b34-9717-f580fa1b2ea9)) + ) + + (symbol (lib_id "Device:C") (at 336.55 146.05 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 368cbd0e-6260-44d9-af09-bc08be9667bd) + (property "Reference" "C37" (id 0) (at 340.36 144.7799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 340.36 147.3199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 337.5152 149.86 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 336.55 146.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4c86ef8e-571c-4323-a2d0-5da22853b9ad)) + (pin "2" (uuid d01b07b9-55a7-40d0-9bfb-5f944831fe61)) + ) + + (symbol (lib_id "power:GND") (at 468.63 62.23 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 37f7588a-351f-492a-b5e9-a86d93620781) + (property "Reference" "#PWR027" (id 0) (at 468.63 68.58 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 468.63 67.31 0)) + (property "Footprint" "" (id 2) (at 468.63 62.23 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 468.63 62.23 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4acd6a17-ea60-4062-a93f-8718e5c7c8f1)) + ) + + (symbol (lib_id "Device:R") (at 104.14 50.8 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 38d3e0bc-e7f3-4fcf-b28b-1dd2ebbed152) + (property "Reference" "R2" (id 0) (at 106.68 49.5299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "330R" (id 1) (at 106.68 52.0699 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 102.362 50.8 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 104.14 50.8 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 24342104-877e-40a1-b189-b3992346cd5e)) + (pin "2" (uuid f8c80f73-db00-4c73-8c80-fd5b67bde0b3)) + ) + + (symbol (lib_id "Device:R") (at 194.31 370.84 180) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 38f041d3-336d-4c45-9e25-efeece1e2340) + (property "Reference" "R9" (id 0) (at 196.85 369.5699 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "5.1k" (id 1) (at 196.85 372.1099 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 196.088 370.84 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 194.31 370.84 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid a0f9be0b-1417-44d7-aba5-b865489be675)) + (pin "2" (uuid 006db38e-02df-4364-a2aa-4a3e749ffd52)) + ) + + (symbol (lib_id "Device:C") (at 60.96 38.1 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 3994f405-55be-4a04-8c8b-3ed658926389) + (property "Reference" "C3" (id 0) (at 64.77 36.8299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 64.77 39.3699 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 61.9252 41.91 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 60.96 38.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f5202ff-b120-4548-b40b-83e4abc7085e)) + (pin "2" (uuid ad0f3ac1-f325-4fd3-8d0a-8a97a5791a8b)) + ) + + (symbol (lib_id "power:+3V3") (at 238.76 243.84 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 3bf9f7aa-1b89-456b-9f4e-e9562a554fa8) + (property "Reference" "#PWR036" (id 0) (at 238.76 247.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 238.76 238.76 0)) + (property "Footprint" "" (id 2) (at 238.76 243.84 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 238.76 243.84 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 106a686d-d6ba-4158-96ef-14da1190e5cc)) + ) + + (symbol (lib_id "power:GND") (at 140.97 393.7 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 41638c83-80bc-4d96-917f-dab37e760733) + (property "Reference" "#PWR011" (id 0) (at 140.97 400.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 140.97 398.78 0)) + (property "Footprint" "" (id 2) (at 140.97 393.7 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 140.97 393.7 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 313132d2-7050-405d-bb5c-0a1f6a5577b9)) + ) + + (symbol (lib_id "Device:LED") (at 538.48 57.15 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 45c5d7eb-fb02-4045-bae4-ce53aa49b4f2) + (property "Reference" "D1" (id 0) (at 536.8925 50.8 0)) + (property "Value" "150060RS75000" (id 1) (at 536.8925 53.34 0)) + (property "Footprint" "LED_SMD:LED_0603_1608Metric" (id 2) (at 538.48 57.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 538.48 57.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d52b3c80-c929-4181-ad2a-7dc97fc56205)) + (pin "2" (uuid 652078c8-5c07-455c-8bf1-2b7bc915c944)) + ) + + (symbol (lib_id "Device:L") (at 148.59 300.99 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 45ec13fe-5f93-4814-b0a9-2ef724502115) + (property "Reference" "L2" (id 0) (at 149.86 297.18 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "470R" (id 1) (at 149.86 293.37 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Inductor_SMD:L_0603_1608Metric" (id 2) (at 148.59 300.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 148.59 300.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 9c143ef4-9b89-4801-9343-4de1ec938123)) + (pin "2" (uuid 82e84d3f-a4c7-49db-8497-5ae8c1bf7029)) + ) + + (symbol (lib_id "power:+3V3") (at 154.94 176.53 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 47f234bb-8c8e-4f7a-abbf-247429f54ebd) + (property "Reference" "#PWR014" (id 0) (at 154.94 180.34 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 154.94 171.45 0)) + (property "Footprint" "" (id 2) (at 154.94 176.53 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 154.94 176.53 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e76e450c-a5ca-41cb-9c46-1180005bdf24)) + ) + + (symbol (lib_id "Device:C") (at 438.15 208.28 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 49f3385c-4a1a-4ed1-a308-2c37f51240ba) + (property "Reference" "C23" (id 0) (at 441.96 207.0099 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 441.96 209.5499 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 439.1152 212.09 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 438.15 208.28 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 7e373579-0f11-4a22-bc30-ab910ddf1681)) + (pin "2" (uuid 7cc210e7-9675-481e-a95d-a328a4a8e6fb)) + ) + + (symbol (lib_id "Device:C") (at 238.76 285.75 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 4a8503ee-5770-4f04-9dfc-cfd261659fa9) + (property "Reference" "C43" (id 0) (at 242.57 284.4799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 242.57 287.0199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 239.7252 289.56 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 238.76 285.75 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid a7a42b76-5007-4414-a5fa-8aca321f7195)) + (pin "2" (uuid 57cec389-30d0-4687-8fcd-d921740d15f7)) + ) + + (symbol (lib_id "Device:C") (at 179.07 48.26 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 4d57f96b-3724-40e6-ab93-f23413cb8642) + (property "Reference" "C4" (id 0) (at 182.88 46.9899 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "47uF" (id 1) (at 182.88 49.5299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (id 2) (at 180.0352 52.07 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 179.07 48.26 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 169f68fb-2bf7-499e-8531-c06b1ebd48bf)) + (pin "2" (uuid 2d918c75-7089-4846-be61-e05e39c26032)) + ) + + (symbol (lib_id "Device:C") (at 336.55 105.41 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 4f8814bc-1ddc-4d9d-8341-e717fa829f27) + (property "Reference" "C28" (id 0) (at 340.36 104.1399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 340.36 106.6799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 337.5152 109.22 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 336.55 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 98480886-c9c0-4798-a409-72036d4ef8c9)) + (pin "2" (uuid f76be317-538c-4c0a-a1c2-b700a717e626)) + ) + + (symbol (lib_id "sc64v2:TC2050-FP") (at 143.51 179.07 0) (unit 1) + (in_bom no) (on_board yes) + (uuid 51744168-bfea-4a8e-8692-c99342c4a1b3) + (property "Reference" "J3" (id 0) (at 143.51 175.26 0)) + (property "Value" "TC2050-FP" (id 1) (at 143.51 177.8 0)) + (property "Footprint" "sc64v2:TC2050-FP" (id 2) (at 143.51 184.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 143.51 184.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 55239abb-9d4e-4d99-832d-cf1400c6c4cb)) + (pin "10" (uuid fafaaf9c-782e-46eb-b8b8-ec50999639f9)) + (pin "2" (uuid 67253d7a-9a5c-41bb-96c3-92719b2902e6)) + (pin "3" (uuid e416f08f-83aa-4154-9fc9-d42a7488879c)) + (pin "4" (uuid 51e1c19d-f8a7-4a1a-b1e8-cef5ae8d7825)) + (pin "5" (uuid d9abe738-6a47-4980-b4d3-316a7ed1f400)) + (pin "6" (uuid fcd53bb6-afcb-49c3-a34b-d9f070e5a3bd)) + (pin "7" (uuid f053964b-24b4-4410-8cb9-c69ce7405b6c)) + (pin "8" (uuid 30e965b0-bf6d-431a-9321-548f5b5d1765)) + (pin "9" (uuid 78b9464b-1b7e-40ca-8f65-428d0443e7ba)) + ) + + (symbol (lib_id "Device:R") (at 121.92 342.9 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 53a3914e-49ab-47c6-9e8c-471b61f99f60) + (property "Reference" "R7" (id 0) (at 121.92 340.36 90)) + (property "Value" "12k" (id 1) (at 125.73 340.36 90)) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 121.92 344.678 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 121.92 342.9 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid aaa009e6-afba-4469-ab3f-9d28abe92766)) + (pin "2" (uuid 6ed97f44-5dc4-4a4a-9877-0711ec832fbf)) + ) + + (symbol (lib_id "Device:C") (at 361.95 105.41 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 5641d56b-9829-49e8-b5b5-4c281f49578e) + (property "Reference" "C30" (id 0) (at 365.76 104.1399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 365.76 106.6799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 362.9152 109.22 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 361.95 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 18811c8e-995c-499d-9120-dbc4d23ee763)) + (pin "2" (uuid fcb30744-a514-4633-ac63-063796e5a31b)) + ) + + (symbol (lib_id "Device:R") (at 158.75 116.84 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid 57757361-0691-4a91-bc3d-0dc7562fcbe2) + (property "Reference" "R19" (id 0) (at 154.94 115.57 0)) + (property "Value" "10k" (id 1) (at 154.94 118.11 0)) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 160.528 116.84 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 158.75 116.84 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid ea7336cd-7833-4d46-9779-02780b1deb5c)) + (pin "2" (uuid 5dac5643-48b8-43c5-af48-46d29aa73d38)) + ) + + (symbol (lib_id "sc64v2:LCMXO2-7000Hx-xTG144x") (at 408.94 105.41 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 577a15d5-96bb-4ab6-91f7-9846e15282cb) + (property "Reference" "U8" (id 0) (at 408.94 101.6 0)) + (property "Value" "LCMXO2-7000Hx-xTG144x" (id 1) (at 408.94 104.14 0)) + (property "Footprint" "Package_QFP:TQFP-144_20x20mm_P0.5mm" (id 2) (at 408.94 101.6 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 407.67 173.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "109" (uuid fb4657fa-57f3-4a38-9bff-4baf8173538b)) + (pin "110" (uuid 16557af3-f5c5-470c-afd8-4096e4889e59)) + (pin "111" (uuid a4130b36-7e75-4d3d-8e78-414b307bbf21)) + (pin "112" (uuid da62d8ba-842c-4be7-95a8-5392ee0cd4a8)) + (pin "113" (uuid 68db1b88-e4de-49d4-a644-3b4a2ab570cd)) + (pin "114" (uuid b2dd5bc7-9128-4930-bc49-ecd82a262149)) + (pin "115" (uuid d52e24e1-1cb4-4e77-82db-a8e5113a6214)) + (pin "117" (uuid 498af2d3-4c56-41b5-98f6-7430147eb88c)) + (pin "119" (uuid 4cf83064-5a9f-4471-b9e2-cc44680e0cb9)) + (pin "120" (uuid c33f11c7-cdf7-4f60-acd7-751a0cc1048a)) + (pin "121" (uuid 67fe0a90-fda6-4ccf-8b8b-8216c9a4cac5)) + (pin "122" (uuid f3b34128-d2e3-42c0-a73e-4dc31c55fb29)) + (pin "125" (uuid 3d6fe5a5-761b-432f-9a60-2b10bf333922)) + (pin "126" (uuid 2e60c2bd-0e9b-485d-a6eb-a6ea114be825)) + (pin "127" (uuid 22c99fb1-9437-4d20-a986-841e97cd5748)) + (pin "128" (uuid 3e8e016f-b9fe-4c14-a642-496fa80b8750)) + (pin "130" (uuid 45138835-950e-4196-b0f3-bd87aeff9740)) + (pin "131" (uuid cb7929f0-78a7-435b-97c3-e7152db98287)) + (pin "132" (uuid 4ef331c4-ab88-4736-9ed6-58d0b617e2a2)) + (pin "133" (uuid 4b0e1279-fe65-4a4f-abb0-8a160ba1df59)) + (pin "136" (uuid ae5957ad-2eb1-458b-9fa5-9e9502ff64b9)) + (pin "137" (uuid 2e7f8740-74db-4d60-87db-38382db3f8bd)) + (pin "138" (uuid 71387787-5d64-4f8d-a5e8-f5a21e2f0aee)) + (pin "139" (uuid ff067746-b5ff-4f34-9e22-33e270ce059d)) + (pin "140" (uuid 3942668a-d46d-4b4f-a9d3-ec34509f84bb)) + (pin "141" (uuid 49940803-ba35-407d-84f6-00259ab13a4e)) + (pin "142" (uuid 588d11e5-456e-425a-8783-f06e68cdb795)) + (pin "143" (uuid f5fe1f7a-1472-4254-8f00-1b29ae900193)) + ) + + (symbol (lib_id "Device:C") (at 349.25 125.73 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 5a894943-2e60-4640-96a2-a55eb4cfef14) + (property "Reference" "C35" (id 0) (at 353.06 124.4599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 353.06 126.9999 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 350.2152 129.54 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 349.25 125.73 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 33bbbac0-b3ad-47be-846d-146c44997ac1)) + (pin "2" (uuid 9137cd46-421b-4423-ab02-8c6f9fcfd51d)) + ) + + (symbol (lib_id "Device:C") (at 175.26 300.99 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 5eb8655d-026d-48b3-9313-87b558b7f693) + (property "Reference" "C7" (id 0) (at 179.07 299.7199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 179.07 302.2599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 176.2252 304.8 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 175.26 300.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d665d116-2a64-4dfa-a0b4-ebcccc843b56)) + (pin "2" (uuid bd992064-4e87-4e3a-8f99-60b51901d9c2)) + ) + + (symbol (lib_id "Device:C") (at 201.93 288.29 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 5f5a5875-6a56-4582-a73d-ebf515c445e5) + (property "Reference" "C12" (id 0) (at 205.74 287.0199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 205.74 289.5599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 202.8952 292.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 201.93 288.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 07742cf2-73bc-4ee4-8195-f088b4065a5b)) + (pin "2" (uuid 053e85ef-ed2d-44c6-b37b-37e7a9c400d6)) + ) + + (symbol (lib_id "Device:C") (at 214.63 41.91 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 614914c2-3abd-4f26-90db-4b83af4389e9) + (property "Reference" "C18" (id 0) (at 218.44 40.6399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 218.44 43.1799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 215.5952 45.72 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 214.63 41.91 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b81ccbe6-7671-4e81-b2e5-e90db8c64e40)) + (pin "2" (uuid 705c8685-f677-4e9a-99cb-55d613845eb9)) + ) + + (symbol (lib_id "power:GND") (at 57.15 316.23 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 63aa8c01-796d-47a7-87b3-fbae1f65c90c) + (property "Reference" "#PWR013" (id 0) (at 57.15 322.58 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 57.15 321.31 0)) + (property "Footprint" "" (id 2) (at 57.15 316.23 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 57.15 316.23 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 27320a02-c07b-4457-8f24-e0008027e1b6)) + ) + + (symbol (lib_id "power:+5V") (at 96.52 104.14 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 64a62079-b9f5-4f84-9f85-ccc801bedcbe) + (property "Reference" "#PWR06" (id 0) (at 96.52 107.95 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (id 1) (at 96.52 99.06 0)) + (property "Footprint" "" (id 2) (at 96.52 104.14 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 96.52 104.14 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 91fc4efc-1c26-487a-bd70-5ed8b9629c31)) + ) + + (symbol (lib_id "power:+3V3") (at 458.47 195.58 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 65babc05-73c1-4c42-9a6a-9d66e0a48187) + (property "Reference" "#PWR028" (id 0) (at 458.47 199.39 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 458.47 190.5 0)) + (property "Footprint" "" (id 2) (at 458.47 195.58 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 458.47 195.58 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 0aaca05e-6437-49a4-bc85-67b9eacb7447)) + ) + + (symbol (lib_id "Device:C") (at 264.16 285.75 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 65dd3f32-98df-4103-ac72-9d5146d33dfe) + (property "Reference" "C45" (id 0) (at 267.97 284.4799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 267.97 287.0199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 265.1252 289.56 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 264.16 285.75 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2ab6e6a1-9162-405d-a159-ea7921d8595d)) + (pin "2" (uuid 74361fd2-dd17-48b6-952a-019d61812268)) + ) + + (symbol (lib_id "power:+3V3") (at 312.42 26.67 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 67f47780-6924-4e7e-aab1-3e59762a208e) + (property "Reference" "#PWR021" (id 0) (at 312.42 30.48 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 312.42 21.59 0)) + (property "Footprint" "" (id 2) (at 312.42 26.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 312.42 26.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 848d7c52-8857-486f-85b0-ed06510ca557)) + ) + + (symbol (lib_id "Device:L") (at 146.05 300.99 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 6a7f3f5f-7361-4bc7-aab9-0a665363dea2) + (property "Reference" "L1" (id 0) (at 147.32 297.18 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "470R" (id 1) (at 147.32 293.37 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Inductor_SMD:L_0603_1608Metric" (id 2) (at 146.05 300.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 146.05 300.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 31f63384-51db-41c5-8e08-ac7c654811c6)) + (pin "2" (uuid 1f4ab7ea-c988-41db-a98a-32da217ef8e5)) + ) + + (symbol (lib_id "Interface_USB:FT232H") (at 151.13 350.52 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 6e901f8d-de31-4712-9607-3a9979e49550) + (property "Reference" "U3" (id 0) (at 158.2294 311.15 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "FT232HL" (id 1) (at 158.2294 313.69 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_QFP:LQFP-48_7x7mm_P0.5mm" (id 2) (at 151.13 350.52 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232H.pdf" (id 3) (at 151.13 350.52 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 7a87a459-73eb-4f08-8858-b49ca522be0a)) + (pin "10" (uuid 3b2d4e6e-42d0-4a39-9b9d-544d19e121d7)) + (pin "11" (uuid e503ca88-b2a2-4e3a-ae0a-3b52d22319b0)) + (pin "12" (uuid 28fddfbe-d2c5-4b0f-9bca-621d9d254eff)) + (pin "13" (uuid c6302a3d-b609-4665-93dc-e3435ecdb2fe)) + (pin "14" (uuid 8eb99a3d-5fb1-41f5-99e3-783e0951133b)) + (pin "15" (uuid 062833b0-2159-4216-8af0-596483b473a9)) + (pin "16" (uuid 8408af19-7232-4499-90c5-b8c560d6efdb)) + (pin "17" (uuid ac128739-b2f9-4898-b789-370764845a31)) + (pin "18" (uuid 3936828e-a5aa-42df-af29-dbe71c6335f2)) + (pin "19" (uuid 2775c0b6-7485-48ac-909d-6cfa4be18753)) + (pin "2" (uuid e4f8afb1-ebee-4044-9d6c-387dacc543bb)) + (pin "20" (uuid fbd0dda8-3d20-483a-8856-8351d3927900)) + (pin "21" (uuid ef2a9e5b-9660-47a1-b722-a1620266b6c7)) + (pin "22" (uuid 8309988a-a7c7-4219-9b5f-77ce653bffb0)) + (pin "23" (uuid 62be7e6d-bced-458c-b0ef-6c97061886b0)) + (pin "24" (uuid a26218c6-933b-4c04-8294-5a0f2fa73526)) + (pin "25" (uuid fe4911d9-6679-4873-a51e-24464790eaa0)) + (pin "26" (uuid 2593b5c0-98ac-42d7-8998-3a8a598c9ae8)) + (pin "27" (uuid 66b50d5c-ae0c-4ae5-93fb-277ae3db49f2)) + (pin "28" (uuid a3a5d500-c79f-4b63-8e69-81b2d35d3d9a)) + (pin "29" (uuid ad86b028-df16-41eb-9f9c-520f29100440)) + (pin "3" (uuid f6c00c07-f9fe-4c24-8d8b-6e820287da5a)) + (pin "30" (uuid a0402ac9-02e0-42aa-a1a0-affe07005f5e)) + (pin "31" (uuid 3a15afe5-75cf-4e86-9bd8-122a71b6863b)) + (pin "32" (uuid 5e4a462a-cd9e-453d-8ddc-65f701dafe84)) + (pin "33" (uuid 5094167c-6b7e-4801-9d79-dacbf744ca58)) + (pin "34" (uuid 73ce4310-cf43-4b34-8968-d8ad5a5a4eff)) + (pin "35" (uuid 6ed6a843-73cd-420f-a28e-de5cb2e95fab)) + (pin "36" (uuid 7976da0d-1bd4-47e0-ad0e-411c82a3eddb)) + (pin "37" (uuid 91be2dde-18ea-430b-a791-31c4fb5a6a69)) + (pin "38" (uuid d2cc5bf1-25d4-4f4f-b03d-5ea05232c1cb)) + (pin "39" (uuid 56fbeeb4-2872-4ab0-833d-ad7cbfc11275)) + (pin "4" (uuid ee08476d-9ad7-4017-8f48-fd504d15561b)) + (pin "40" (uuid 376ce23a-cc80-4e67-84d6-dc9d0f1c445f)) + (pin "41" (uuid 7e76920a-c731-4586-b29a-6bfea191b9e3)) + (pin "42" (uuid 991bc940-05a6-44a0-bb23-49d000e100ad)) + (pin "43" (uuid 76abe24f-e706-4ce2-829e-bd6240c0fcfc)) + (pin "44" (uuid 1260b060-d71e-437d-aaed-987d0fb4a8e5)) + (pin "45" (uuid 0ddad5b3-7f77-4f45-b25a-7533c484dbb6)) + (pin "46" (uuid cf80fcf0-8530-4b16-b5ec-ec5dd4c095bd)) + (pin "47" (uuid 35c309c4-3b1d-4974-97db-f2bc225c907c)) + (pin "48" (uuid 9f46a45d-99aa-4772-8725-07a04bac535b)) + (pin "5" (uuid 6eea5d76-24a7-4e5a-bf9a-55961641c157)) + (pin "6" (uuid 214c0606-e05a-4af7-99d5-2eb9aa3b8e5e)) + (pin "7" (uuid 05e97ab9-ca84-4537-9a1c-c12539105538)) + (pin "8" (uuid c9d9348b-2a2a-4b89-a328-b55a51aae637)) + (pin "9" (uuid 2f836bcb-65b5-4251-b1a3-a8e1f456022e)) + ) + + (symbol (lib_id "power:GND") (at 532.13 59.69 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 6ebba947-44db-4edb-8b6b-eeb19c5c6a28) + (property "Reference" "#PWR041" (id 0) (at 532.13 66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 532.13 64.77 0)) + (property "Footprint" "" (id 2) (at 532.13 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 532.13 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid a6c51e8c-fb82-494a-b9d5-9a3b7c868169)) + ) + + (symbol (lib_id "Device:C") (at 361.95 115.57 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 6f6c2377-8039-497e-9b10-e130c951f0c3) + (property "Reference" "C33" (id 0) (at 365.76 114.2999 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 365.76 116.8399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 362.9152 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 361.95 115.57 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4a9057b2-f3bd-44bb-ba86-893c77b14d47)) + (pin "2" (uuid dd25349f-f5ce-47a3-b714-fbf32473c6ad)) + ) + + (symbol (lib_id "Device:R") (at 379.73 71.12 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 7295e019-ebb9-424a-ad6e-06fdc7f816d8) + (property "Reference" "R16" (id 0) (at 379.73 74.93 90)) + (property "Value" "10k" (id 1) (at 379.73 77.47 90)) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 379.73 72.898 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 379.73 71.12 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 42549dab-3d39-4fd2-a300-f5bac3018b6b)) + (pin "2" (uuid de0b94bb-019b-4eaf-92be-a1824955fcaa)) + ) + + (symbol (lib_id "power:+3V3") (at 109.22 279.4 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 74034037-1cbf-4668-b7ea-b8ab587359f0) + (property "Reference" "#PWR05" (id 0) (at 109.22 283.21 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 109.22 274.32 0)) + (property "Footprint" "" (id 2) (at 109.22 279.4 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 109.22 279.4 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5fee4d21-9163-429b-b92c-66806531b19e)) + ) + + (symbol (lib_id "sc64v2:LCMXO2-7000Hx-xTG144x") (at 510.54 105.41 0) (unit 3) + (in_bom yes) (on_board yes) + (uuid 749a3945-389b-4081-ad7d-147241e86892) + (property "Reference" "U8" (id 0) (at 510.54 101.6 0)) + (property "Value" "LCMXO2-7000Hx-xTG144x" (id 1) (at 510.54 104.14 0)) + (property "Footprint" "Package_QFP:TQFP-144_20x20mm_P0.5mm" (id 2) (at 510.54 101.6 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 509.27 173.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "38" (uuid c17c1775-f429-4f1d-81da-e26d6096aa4d)) + (pin "39" (uuid 0e97e150-366b-4b16-904a-ca282dc2b21a)) + (pin "40" (uuid 8d9a174b-9ec6-4c65-a9a3-d9aea06fa6a3)) + (pin "41" (uuid b5b21369-47c2-465a-b61c-c00e3586f84f)) + (pin "42" (uuid f7a66af8-a882-4399-b05e-bfec5bf4cdd6)) + (pin "43" (uuid 7e3cb3b0-3634-4d87-8c01-fabc2b809bf4)) + (pin "44" (uuid 2e9e347b-3a58-4bc6-a17d-c08a993af17a)) + (pin "45" (uuid d6643b17-e11e-4c27-8215-9609561249e1)) + (pin "47" (uuid c02a268e-d913-419c-975b-511d0cd73d51)) + (pin "48" (uuid 9a0e8de5-c18c-460b-869c-91bdbc649e78)) + (pin "49" (uuid a4c5c09d-4271-463f-afe4-ef7c011d6545)) + (pin "50" (uuid b6644ee6-4048-4f2d-9e3e-f0eef4a94e2f)) + (pin "52" (uuid 44a75638-709b-419c-9f95-93d392366995)) + (pin "54" (uuid c9140885-361c-47f8-a8e3-b4fb88f2bd88)) + (pin "55" (uuid 0dfb0be6-88c8-4877-a49c-16a62f40a0ff)) + (pin "56" (uuid e315ae77-cb56-463b-9266-bd2bee5a1181)) + (pin "57" (uuid 46dfdb1b-2143-41d3-acd0-de8ae969de3b)) + (pin "58" (uuid 6e26182d-ae13-4a6c-9fcd-2eabe2824985)) + (pin "59" (uuid ebe24487-8b30-4bef-a7db-7f8a7d8e2bd7)) + (pin "60" (uuid 048f02c8-501b-4bf0-97df-d26aa205545a)) + (pin "61" (uuid 61cffea8-33cb-441f-9aea-36f0010c68da)) + (pin "62" (uuid b836ad3e-37e5-4dd2-bb88-840d590d5ef7)) + (pin "63" (uuid 1ac7702f-105b-4f20-b7c2-a176db50d34a)) + (pin "65" (uuid ba8959b9-9e2a-42b3-9aaf-6c1295b7caca)) + (pin "67" (uuid 43d5bc29-3948-4d2d-aa05-cafe3d246117)) + (pin "68" (uuid 18fadf89-4b95-4f51-9a60-8a21d2679018)) + (pin "69" (uuid 44aa4be2-4efa-45ca-8a2d-d71f18f8b395)) + (pin "70" (uuid 53770c6b-3d2f-4266-acf5-b541d02d0105)) + (pin "71" (uuid faab6ecc-bf33-4d17-a6a2-1efd24ea4d17)) + ) + + (symbol (lib_id "Timer_RTC:MCP7940N-xST") (at 468.63 44.45 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 766e0844-4cc7-4fee-800a-7bdf93675837) + (property "Reference" "U7" (id 0) (at 470.6494 54.61 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "MCP7940N-x/ST" (id 1) (at 470.6494 57.15 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_SO:TSSOP-8_4.4x3mm_P0.65mm" (id 2) (at 468.63 44.45 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://ww1.microchip.com/downloads/en/DeviceDoc/20005010F.pdf" (id 3) (at 468.63 44.45 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 1d0bc410-e7bd-4b9c-a1fd-cf256f17ce27)) + (pin "2" (uuid 154b680f-281b-4faf-8ba8-acad07580b47)) + (pin "3" (uuid fa9ea85b-0756-4459-a821-966e59351da9)) + (pin "4" (uuid 55e2cfc2-97a8-4fae-8421-28077155644a)) + (pin "5" (uuid ced9f349-8a4d-4158-af95-01122339d289)) + (pin "6" (uuid 702ec2c7-0b1a-45d3-bb22-4a8dcab2509f)) + (pin "7" (uuid 8afe2534-6137-4456-b2d9-7aee57a1a30b)) + (pin "8" (uuid 0ce0d69e-0001-4dde-b09c-5023c2a816e1)) + ) + + (symbol (lib_id "power:GND") (at 289.56 158.75 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 774c0ae1-062a-41a5-88b0-73b765600eb4) + (property "Reference" "#PWR034" (id 0) (at 289.56 165.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 289.56 163.83 0)) + (property "Footprint" "" (id 2) (at 289.56 158.75 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 289.56 158.75 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 00e37dce-69e0-46c2-b309-7b12fc65063c)) + ) + + (symbol (lib_id "Device:C") (at 336.55 125.73 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 79c68ec7-484d-45d8-b8ea-7b0a7306e7c6) + (property "Reference" "C34" (id 0) (at 340.36 124.4599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 340.36 126.9999 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 337.5152 129.54 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 336.55 125.73 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 779e382f-d36d-406e-b56e-d23206bd0b1c)) + (pin "2" (uuid 5dd31f36-c7f3-4877-9cd5-a4174e509a79)) + ) + + (symbol (lib_id "sc64v2:LCMXO2-7000Hx-xTG144x") (at 308.61 97.79 0) (unit 7) + (in_bom yes) (on_board yes) + (uuid 7adce0b2-9540-4d77-8cf1-4df964c29563) + (property "Reference" "U8" (id 0) (at 308.61 93.98 0)) + (property "Value" "LCMXO2-7000Hx-xTG144x" (id 1) (at 308.61 96.52 0)) + (property "Footprint" "Package_QFP:TQFP-144_20x20mm_P0.5mm" (id 2) (at 308.61 93.98 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 307.34 166.37 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "101" (uuid 2666b010-652e-49ab-81c5-d2bf830f26b5)) + (pin "102" (uuid aae34dde-8ae8-424a-af98-54de85324f5c)) + (pin "108" (uuid c178f7f1-4925-4a54-a3bd-e0140569f708)) + (pin "116" (uuid 1d9dd410-ed16-42a6-8af9-d9eb0c10e8eb)) + (pin "118" (uuid e4392c0b-2440-458e-abee-33d8d1fdf0e5)) + (pin "123" (uuid cf906126-4b1f-4aed-8929-9118a382e683)) + (pin "124" (uuid 3b891ed4-4faa-4ee6-aff9-ceb17fa68753)) + (pin "129" (uuid 6c39050d-93a8-422a-b5f1-d78834ec5cd8)) + (pin "134" (uuid a60af4d2-5d91-4695-8ee9-8d0f881c08cb)) + (pin "135" (uuid 39f0f120-bf0e-4189-8aed-748ee8ea23c8)) + (pin "144" (uuid ce62eb64-1eac-449e-bf08-93978d6d2d74)) + (pin "16" (uuid fb73a17e-a1a3-4dc2-9abf-d6bee284a4d6)) + (pin "18" (uuid 3f64c7fd-f878-4ee9-9a52-cd93f587f7a3)) + (pin "29" (uuid 8a1da469-2f67-4d7c-adb9-2f5defd14349)) + (pin "30" (uuid 3427c520-9c95-4b88-8add-1b14afdb6841)) + (pin "36" (uuid c485be7e-4f3e-48f9-8f6f-7b4141b5ba3b)) + (pin "37" (uuid 70117813-d221-436c-8a3f-2d8087981f7a)) + (pin "46" (uuid 4dd1278c-3bb4-4c03-8b06-dac058c8136f)) + (pin "51" (uuid 86610fbf-d120-4efa-a859-3ec8b83e393f)) + (pin "53" (uuid 8400ed51-570a-4380-aeb9-667b382fb838)) + (pin "64" (uuid d3755158-ee87-4f86-bb23-81fcd0d549f7)) + (pin "66" (uuid 84ec5740-a60b-4496-abe3-c7afc6f4b8ff)) + (pin "7" (uuid 97faf88c-d449-4368-b1b6-9da1233f3329)) + (pin "72" (uuid dc33e51c-c4c6-4c5e-b50d-29c1bde8f9e0)) + (pin "79" (uuid f1573e99-45ae-44ad-b59a-b83aa215ce33)) + (pin "8" (uuid 1089fecb-3964-4aea-b047-f738ca1e8126)) + (pin "80" (uuid 92b423d0-bac0-464b-8337-b462121247c4)) + (pin "88" (uuid 08cb4e03-1054-45f5-a8c5-325b28531320)) + (pin "90" (uuid d9b38dbb-5d51-4bc3-8d7a-1f309cd840df)) + ) + + (symbol (lib_id "sc64v2:LCMXO2-7000Hx-xTG144x") (at 561.34 179.07 0) (unit 6) + (in_bom yes) (on_board yes) + (uuid 7b73b1ca-70af-4411-a26c-1686ab71a5d7) + (property "Reference" "U8" (id 0) (at 561.34 175.26 0)) + (property "Value" "LCMXO2-7000Hx-xTG144x" (id 1) (at 561.34 177.8 0)) + (property "Footprint" "Package_QFP:TQFP-144_20x20mm_P0.5mm" (id 2) (at 561.34 175.26 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 560.07 247.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid fc0c55c8-6ce7-4d8d-bc07-a9c777b9fc57)) + (pin "10" (uuid f61e68fd-2bb7-4fbc-8ba8-08a5977f3eba)) + (pin "11" (uuid 7a21823e-6e1e-4f5f-8705-1ba701f5fb6d)) + (pin "12" (uuid c092da90-b2ae-4b4b-8681-391a1bb0fa73)) + (pin "2" (uuid b4253259-e7ae-45da-8382-9c9dcc4f574b)) + (pin "3" (uuid 55b18e33-40e8-44e5-8400-d8e7d3d9b653)) + (pin "4" (uuid f127173d-0797-44ab-a695-9352ea8c6b6c)) + (pin "5" (uuid c4409593-5afe-4ce4-bfe7-02a95121e5d5)) + (pin "6" (uuid 55118e82-e7a0-4f5a-8ba2-9e61b06c845e)) + (pin "9" (uuid 13d69580-9a0f-43a8-871e-d07c275d982f)) + ) + + (symbol (lib_id "power:GND") (at 21.59 196.85 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 7cd28c5a-b83b-4570-9500-d0c58ef05970) + (property "Reference" "#PWR023" (id 0) (at 21.59 203.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 21.59 201.93 0)) + (property "Footprint" "" (id 2) (at 21.59 196.85 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 21.59 196.85 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 87b15a21-20a8-403b-8d93-8af3aed19dad)) + ) + + (symbol (lib_id "Device:R") (at 107.95 130.81 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid 7ed06213-5fec-4fc2-a07b-97a7e844b4e4) + (property "Reference" "R5" (id 0) (at 110.49 129.5399 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "5.1k" (id 1) (at 110.49 132.0799 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 109.728 130.81 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 107.95 130.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 80e76389-ca1b-4fef-8d5a-21dfa16f65a7)) + (pin "2" (uuid d758e864-ec66-44eb-b6da-56028fa32b86)) + ) + + (symbol (lib_id "power:+3V3") (at 468.63 26.67 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 7ee37472-5ec0-4930-a374-5a36eaeab663) + (property "Reference" "#PWR026" (id 0) (at 468.63 30.48 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 468.63 21.59 0)) + (property "Footprint" "" (id 2) (at 468.63 26.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 468.63 26.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e0cc9569-bb5d-4a14-9f76-e97f0072ac15)) + ) + + (symbol (lib_id "Device:C") (at 264.16 252.73 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 807f06fd-69e9-4462-bc69-40d576fe8720) + (property "Reference" "C42" (id 0) (at 267.97 251.4599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 267.97 253.9999 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 265.1252 256.54 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 264.16 252.73 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f33ba777-928f-4541-9db1-0fda157d02d9)) + (pin "2" (uuid 3e21b23b-1493-4311-98fa-b9e5cb8ee4fe)) + ) + + (symbol (lib_id "Device:C") (at 189.23 288.29 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 81faf8c0-1827-4289-ab03-9e47b8583766) + (property "Reference" "C11" (id 0) (at 193.04 287.0199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 193.04 289.5599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 190.1952 292.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 189.23 288.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8edf48d1-c36e-45d5-9914-79ab1ae508e8)) + (pin "2" (uuid 0a3e0ca6-6843-4a52-b368-684982f57e77)) + ) + + (symbol (lib_id "Device:R") (at 95.25 41.91 90) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 8225742a-f816-4b22-8618-1e188dae72ec) + (property "Reference" "R1" (id 0) (at 95.25 35.56 90)) + (property "Value" "1k" (id 1) (at 95.25 38.1 90)) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 95.25 43.688 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 95.25 41.91 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 89178ddb-9d99-4f4b-a882-3e17adecba56)) + (pin "2" (uuid 22ea0c2e-95ba-409f-8ad4-6d250acd432d)) + ) + + (symbol (lib_id "Device:R") (at 391.16 101.6 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid 83ac819d-dfbc-422a-a76f-f95cac775ba2) + (property "Reference" "R17" (id 0) (at 384.81 100.33 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "10k" (id 1) (at 384.81 102.87 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 392.938 101.6 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 391.16 101.6 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 7175f5b2-db2e-469b-8a0d-8d408e7bcf66)) + (pin "2" (uuid 0a9120f9-62b7-4608-ae34-ee2e4096638c)) + ) + + (symbol (lib_id "Device:C") (at 349.25 146.05 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 84b8b021-1eac-40ec-9d18-9bb490fec58a) + (property "Reference" "C38" (id 0) (at 353.06 144.7799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 353.06 147.3199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 350.2152 149.86 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 349.25 146.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 447652e0-3d77-4bdf-a044-458a998db51e)) + (pin "2" (uuid 4ae7b4af-c998-4290-859f-c81b523a4aed)) + ) + + (symbol (lib_id "power:GND") (at 57.15 273.05 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 857ad253-d593-4464-bc94-2d2973ed2c00) + (property "Reference" "#PWR010" (id 0) (at 57.15 279.4 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 57.15 278.13 0)) + (property "Footprint" "" (id 2) (at 57.15 273.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 57.15 273.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 560c7a08-430c-4501-b9ea-102050b8e1c9)) + ) + + (symbol (lib_id "Device:C") (at 166.37 48.26 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 8875e69d-d89e-41ba-bde2-45767e9df445) + (property "Reference" "C6" (id 0) (at 170.18 46.9899 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 170.18 49.5299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 167.3352 52.07 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 166.37 48.26 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 49866791-3e38-43b4-9515-5e69202a3d7c)) + (pin "2" (uuid e668a814-581e-45ef-bac3-2b61591b2038)) + ) + + (symbol (lib_id "sc64v2:STM32G030Fx") (at 360.68 39.37 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 8a46818f-80b6-48c6-9d8f-04eb3e3ccdb1) + (property "Reference" "U6" (id 0) (at 360.68 34.29 0)) + (property "Value" "STM32G030F6P6" (id 1) (at 360.68 36.83 0)) + (property "Footprint" "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm" (id 2) (at 360.68 33.02 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 360.68 39.37 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 38d2314f-cdba-4a73-a6da-51673f93ffba)) + (pin "10" (uuid bf235689-126e-43b0-ba20-617e4f35d81d)) + (pin "11" (uuid 6fa5a4bd-a1ec-4706-8401-07fe8beeadeb)) + (pin "12" (uuid ab16e148-366f-4d63-b7c2-cada265ffae3)) + (pin "13" (uuid 9dc6731c-248a-4759-b563-d5630bbba258)) + (pin "14" (uuid 73baf92f-8ca8-46bb-a4b8-bd6617fa7eee)) + (pin "15" (uuid 461c98cc-c655-4074-a4a6-7552b448ecdf)) + (pin "16" (uuid dc840bb7-4edd-473f-bda6-bed36e44f49e)) + (pin "17" (uuid 3e198ec8-d2e8-4ae0-aa92-a95aa003adc9)) + (pin "18" (uuid d5a6f72f-ebf4-4ecf-92e9-9707f0aec6b5)) + (pin "19" (uuid 1ef87488-8fd4-4f43-b25c-f048fcf053e7)) + (pin "2" (uuid 2440483d-899c-49a1-8cb8-9d610cc254f8)) + (pin "20" (uuid f29dc1ef-c42d-4843-a97c-6ff49382c948)) + (pin "3" (uuid f4480325-6393-4800-8079-de67c4a847db)) + (pin "4" (uuid da28dc44-d065-4c8f-b96d-866a720de0f7)) + (pin "5" (uuid 31a7150c-56bd-4513-9562-3dbe88af23f1)) + (pin "6" (uuid 71df99f4-64d1-402d-9c2a-ce04a930417d)) + (pin "7" (uuid 79ab062a-0ed4-4eed-9f7b-c74a43647482)) + (pin "8" (uuid 752eec4e-ec2c-4970-a1fa-e7a341331689)) + (pin "9" (uuid 5e2fa0f4-fd65-4e49-9644-25ef0629ab5b)) + ) + + (symbol (lib_id "Device:C") (at 361.95 125.73 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 8b893dd0-e97f-4683-8d2e-b0e1c10c6051) + (property "Reference" "C36" (id 0) (at 365.76 124.4599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 365.76 126.9999 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 362.9152 129.54 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 361.95 125.73 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 3b2f034c-1a00-4f03-b0bc-3e58aa36a7ce)) + (pin "2" (uuid 12fd6bc1-6007-4e78-846a-c7d31b59534d)) + ) + + (symbol (lib_id "sc64v2:LCMXO2-7000Hx-xTG144x") (at 459.74 105.41 0) (unit 2) + (in_bom yes) (on_board yes) + (uuid 93ddce85-c1a8-42b3-a16c-75b607cf3749) + (property "Reference" "U8" (id 0) (at 459.74 101.6 0)) + (property "Value" "LCMXO2-7000Hx-xTG144x" (id 1) (at 459.74 104.14 0)) + (property "Footprint" "Package_QFP:TQFP-144_20x20mm_P0.5mm" (id 2) (at 459.74 101.6 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 458.47 173.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "100" (uuid f200ece6-1391-4456-b8b4-c7baa982e3fe)) + (pin "103" (uuid 3d748e73-7b2d-4b0c-bc61-50127625d2ae)) + (pin "104" (uuid 61d21745-1426-463c-9df4-16ffbe16133d)) + (pin "105" (uuid 7f4324e0-cf6b-4ee8-82aa-e3271f1c4ca0)) + (pin "106" (uuid e1086ac2-6c23-41e6-9e61-31d537778988)) + (pin "107" (uuid 097eb178-e29e-4759-9a1b-8905942ebe38)) + (pin "73" (uuid 40d29be7-ffab-445e-a554-d86df039b2f1)) + (pin "74" (uuid cb8b37d4-5d82-4f05-9bea-70c287f12695)) + (pin "75" (uuid 6b72f293-8061-42f3-8519-369e151c23bb)) + (pin "76" (uuid 7e5ff8ee-de1d-4e8a-a7fc-8b3f821154eb)) + (pin "77" (uuid 044c83c4-0c67-4e67-a949-01ca1426f1a2)) + (pin "78" (uuid 1ea9e391-2120-4fb7-b5e4-91d83beada20)) + (pin "81" (uuid 3d66127a-ee0a-4d4c-a083-843baab38e37)) + (pin "82" (uuid 85911581-131a-4f5c-90d8-d9d0883e9dbf)) + (pin "83" (uuid fd06c921-4a30-42a0-8786-a8230288b0c8)) + (pin "84" (uuid acf3124c-dd81-4d56-a026-80a9637f580f)) + (pin "85" (uuid 06b06a06-d034-47e5-bf7e-48d51c4e262a)) + (pin "86" (uuid e4f7fbae-c4ff-42f6-8997-18c132fc05a0)) + (pin "87" (uuid 1186481c-877d-4b80-91f6-eb3cc21cccf9)) + (pin "89" (uuid 83135ce5-7216-4523-9ef2-56a94798c873)) + (pin "91" (uuid 68a305a8-a7e3-441d-abce-af2407c94e8d)) + (pin "92" (uuid a8ff4733-863c-45e1-b928-a8974a748681)) + (pin "93" (uuid 930f113c-37db-4bbf-bd73-589090affed8)) + (pin "94" (uuid 74f51382-3501-4606-bb6b-c88190bdc316)) + (pin "95" (uuid 9507338e-bdcd-40b1-9827-32a1eb238f1f)) + (pin "96" (uuid 0a2fbd4b-bd78-4a40-a408-4130e16b7e47)) + (pin "97" (uuid f604e180-2cd6-4148-9bef-1b3386de90f7)) + (pin "98" (uuid 6ab699e1-a17c-4900-9d07-e27029e4aabf)) + (pin "99" (uuid 1cbb8e74-4025-40c0-a3ae-ad53e794bc62)) + ) + + (symbol (lib_id "Device:C") (at 148.59 124.46 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 94dcb139-2876-4a88-9afc-5a91f644dff1) + (property "Reference" "C48" (id 0) (at 152.4 123.1899 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "47uF" (id 1) (at 152.4 125.7299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (id 2) (at 149.5552 128.27 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 148.59 124.46 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2c8fe060-e5fc-4b0b-b25c-7324221653ef)) + (pin "2" (uuid 58d9cee0-0986-462d-b90e-4287cc1abb38)) + ) + + (symbol (lib_id "sc64v2:Tactile_Switch") (at 539.75 39.37 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 95782e76-cb4b-4009-9945-08a041720df8) + (property "Reference" "SW1" (id 0) (at 539.75 31.75 0)) + (property "Value" "TS07-667-37-BK-160-SMT" (id 1) (at 539.75 34.29 0)) + (property "Footprint" "Button_Switch_SMD:SW_SPST_Omron_B3FS-101xP" (id 2) (at 539.75 34.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 539.75 34.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 40118294-9654-4f84-8f85-ef40caa6bfa2)) + (pin "2" (uuid a2da7b63-4221-48d8-b2e8-eb3b14a1dc64)) + (pin "3" (uuid 31c7e0cd-06a6-47fe-9560-932b5a81b2d2)) + (pin "4" (uuid 835abf66-10f8-40f6-a5b6-d76c2be1d1b5)) + ) + + (symbol (lib_id "Device:R") (at 116.84 130.81 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid 9676acb4-ecdb-4bb9-8697-bbf28b479ff0) + (property "Reference" "R4" (id 0) (at 119.38 129.5399 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "5.1k" (id 1) (at 119.38 132.0799 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 118.618 130.81 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 116.84 130.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2deb37b2-6719-46ba-b05d-9c88fcffb3dd)) + (pin "2" (uuid 006369e9-71c4-41c8-b00a-16990e99acfe)) + ) + + (symbol (lib_id "power:+3V3") (at 256.54 26.67 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 9683b3a6-2a8e-4e75-be41-f2397c3049c6) + (property "Reference" "#PWR019" (id 0) (at 256.54 30.48 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 256.54 21.59 0)) + (property "Footprint" "" (id 2) (at 256.54 26.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 256.54 26.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 97de9d96-9660-4a2b-8b73-42d358fd5264)) + ) + + (symbol (lib_id "Device:C") (at 504.19 36.83 90) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 994dc62b-2a7b-4bff-8f5a-68d36773f4c8) + (property "Reference" "C21" (id 0) (at 504.19 29.21 90)) + (property "Value" "7pF" (id 1) (at 504.19 31.75 90)) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 508 35.8648 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 504.19 36.83 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d64ac2f2-5ae4-4c77-9c4f-27bbd8b15391)) + (pin "2" (uuid 2b4b3b13-c1be-4546-b2bd-ff3c53e01f60)) + ) + + (symbol (lib_id "Device:C") (at 300.99 48.26 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 9a8905a3-5ca0-46a1-bee9-ca122e954a22) + (property "Reference" "C19" (id 0) (at 304.8 46.9899 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 304.8 49.5299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 301.9552 52.07 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 300.99 48.26 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 0bb81a15-7972-4312-8d35-8adf42610131)) + (pin "2" (uuid 978d6a17-5663-4ec0-8cb1-d4a85cef070b)) + ) + + (symbol (lib_id "Device:C") (at 22.86 260.35 180) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 9b5d4a16-c0ac-4bd5-96ac-9f9edadfcd60) + (property "Reference" "C16" (id 0) (at 26.67 259.0799 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "100nF" (id 1) (at 26.67 261.6199 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 21.8948 256.54 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 22.86 260.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid a723eed3-4221-46ad-94ba-672d3f2a0d60)) + (pin "2" (uuid cd84e6b3-3cdf-4d64-bf65-b5ede78317e1)) + ) + + (symbol (lib_id "Device:R") (at 78.74 251.46 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 9f9dfac6-0c0d-4ee0-924b-e95250d2b98f) + (property "Reference" "R11" (id 0) (at 81.28 250.1899 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "10k" (id 1) (at 81.28 252.7299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 76.962 251.46 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 78.74 251.46 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 42fe08e5-ecd3-4ab4-92b1-ff7ea902feae)) + (pin "2" (uuid d3a647aa-cdde-42f2-8464-cfb2eab9f099)) + ) + + (symbol (lib_id "Connector:TestPoint") (at 198.12 184.15 90) (unit 1) + (in_bom no) (on_board yes) + (uuid a0e5adb5-40f9-4fc8-a069-cb599973b556) + (property "Reference" "3V1" (id 0) (at 190.5 184.15 90)) + (property "Value" "TestPoint" (id 1) (at 181.61 184.15 90)) + (property "Footprint" "TestPoint:TestPoint_Pad_D1.5mm" (id 2) (at 198.12 179.07 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 198.12 179.07 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8b8c2431-f3b7-4547-810a-7280fd572125)) + ) + + (symbol (lib_id "Device:C") (at 251.46 252.73 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid a61e6e2e-0cef-4616-939d-fadea790ce4f) + (property "Reference" "C41" (id 0) (at 255.27 251.4599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 255.27 253.9999 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 252.4252 256.54 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 251.46 252.73 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d22c883b-1f16-43b2-8570-88faf8941d4a)) + (pin "2" (uuid 49b4517e-2474-4623-bdfa-04edc52180b8)) + ) + + (symbol (lib_id "Memory_EEPROM:93AAxxBT-xOT") (at 57.15 260.35 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid a669f65a-ba28-488f-8876-920a059fc027) + (property "Reference" "U4" (id 0) (at 59.1694 250.19 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "93AA56Bx-x/OT" (id 1) (at 59.1694 252.73 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_TO_SOT_SMD:SOT-23-6" (id 2) (at 58.42 251.46 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://ww1.microchip.com/downloads/en/DeviceDoc/20001749K.pdf" (id 3) (at 57.15 260.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4ac6bd4a-9afc-454e-b6f3-11ca777fc4ec)) + (pin "2" (uuid b463f65c-8921-4901-abb1-f4c70bc7efe8)) + (pin "3" (uuid ac18166f-bb66-4db7-b356-9d98d472a57c)) + (pin "4" (uuid 8770d09e-4634-4b01-adda-c140ff050901)) + (pin "5" (uuid ea05f697-d9aa-459a-811b-0d351998e19b)) + (pin "6" (uuid ef40b17d-8216-40b4-93e6-cf596c838ff2)) + ) + + (symbol (lib_id "Oscillator:XO32") (at 57.15 303.53 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid a73f4f5a-6e4d-472e-9b51-954e3d116bd7) + (property "Reference" "X1" (id 0) (at 64.77 298.45 0)) + (property "Value" "ECS-3225MV-120-CN" (id 1) (at 74.93 308.61 0)) + (property "Footprint" "Oscillator:Oscillator_SMD_SeikoEpson_SG8002CE-4Pin_3.2x2.5mm" (id 2) (at 74.93 312.42 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://cdn-reichelt.de/documents/datenblatt/B400/XO32.pdf" (id 3) (at 54.61 303.53 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f6d5aa71-5a46-45d1-a9bd-8e73bf6ab14f)) + (pin "2" (uuid 93b8deca-977a-4094-abfb-3154bf23a961)) + (pin "3" (uuid dbf9e78b-3ef7-49e4-a371-358a9d08b9ce)) + (pin "4" (uuid 0a2cbdd4-037d-4960-83ee-33b78e8b39ba)) + ) + + (symbol (lib_id "power:+5V") (at 194.31 364.49 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid a771b5d7-f1c3-419b-ac2e-e146642a46ee) + (property "Reference" "#PWR09" (id 0) (at 194.31 368.3 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (id 1) (at 194.31 359.41 0)) + (property "Footprint" "" (id 2) (at 194.31 364.49 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 194.31 364.49 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 19455271-6b57-42c0-850d-0567d5319984)) + ) + + (symbol (lib_id "power:+3V3") (at 200.66 181.61 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid a824162b-b4dd-4d47-803e-8843b8f30173) + (property "Reference" "#PWR022" (id 0) (at 200.66 185.42 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 200.66 176.53 0)) + (property "Footprint" "" (id 2) (at 200.66 181.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 200.66 181.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 141de58a-9884-44fc-a8ae-7911995b048a)) + ) + + (symbol (lib_id "power:GND") (at 238.76 294.64 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid a86370aa-3797-4213-9ea9-4badce967c0f) + (property "Reference" "#PWR040" (id 0) (at 238.76 300.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 238.76 299.72 0)) + (property "Footprint" "" (id 2) (at 238.76 294.64 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 238.76 294.64 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 56672355-c54e-4810-8aa9-49427e181f97)) + ) + + (symbol (lib_id "Device:R") (at 388.62 35.56 180) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid aab80820-43a0-4879-aa62-70e3b13add9d) + (property "Reference" "R15" (id 0) (at 391.16 34.2899 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "2.2k" (id 1) (at 391.16 36.8299 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 390.398 35.56 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 388.62 35.56 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 32984ba5-0e7d-496e-a1f1-f793d726ea15)) + (pin "2" (uuid 00f8908a-b852-42a7-84db-d2ea867ff377)) + ) + + (symbol (lib_id "Device:C") (at 264.16 105.41 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid acd48532-9df4-4213-8073-4ea5ab05ba2a) + (property "Reference" "C26" (id 0) (at 267.97 104.1399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 267.97 106.6799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 265.1252 109.22 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 264.16 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 50ff7639-a772-48b2-afa2-4d272fd38be7)) + (pin "2" (uuid 0caac02f-ee8d-4c45-a8a0-90757a5bcd75)) + ) + + (symbol (lib_id "power:+3V3") (at 391.16 95.25 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid adf9f3f1-7538-479d-a50d-194f1e3cefaa) + (property "Reference" "#PWR033" (id 0) (at 391.16 99.06 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 391.16 90.17 0)) + (property "Footprint" "" (id 2) (at 391.16 95.25 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 391.16 95.25 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid acfa46d2-2453-43f4-bb75-d66c402656e9)) + ) + + (symbol (lib_id "power:GND") (at 256.54 57.15 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid ae9dbf5d-0b80-4163-a4fe-13d2465aa517) + (property "Reference" "#PWR020" (id 0) (at 256.54 63.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 256.54 62.23 0)) + (property "Footprint" "" (id 2) (at 256.54 57.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 256.54 57.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 75f19191-0d9a-4878-b1f6-8e5fad6b35b7)) + ) + + (symbol (lib_id "Device:C") (at 276.86 285.75 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid aeb0d0cf-6d04-4e89-836d-342f2e598d6b) + (property "Reference" "C46" (id 0) (at 280.67 284.4799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 280.67 287.0199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 277.8252 289.56 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 276.86 285.75 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid a3e3f524-65c0-44ed-92ee-a49af0cdfd6b)) + (pin "2" (uuid 625333e5-31a2-41d9-91f9-f528dce41de0)) + ) + + (symbol (lib_id "Device:C") (at 175.26 288.29 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid b1eae589-88fc-49de-92a5-165aa1590642) + (property "Reference" "C10" (id 0) (at 179.07 287.0199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 179.07 289.5599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 176.2252 292.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 175.26 288.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 081249a9-c788-4832-a5e6-037fa70ba966)) + (pin "2" (uuid 4423323f-a01c-4fb2-97bc-38280c6af1e7)) + ) + + (symbol (lib_id "Device:C") (at 238.76 252.73 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid bc7d6f8c-6dfc-49b5-ab62-ccadd92d55cc) + (property "Reference" "C40" (id 0) (at 242.57 251.4599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 242.57 253.9999 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 239.7252 256.54 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 238.76 252.73 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d458013c-0e33-4cb6-b8ec-e7142ef62ec7)) + (pin "2" (uuid 436e645c-b8ce-405f-afdc-33c4ed5d00d2)) + ) + + (symbol (lib_id "power:GND") (at 78.74 149.86 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid be2d3c52-7f36-4a74-ba8c-05b8700e2bea) + (property "Reference" "#PWR08" (id 0) (at 78.74 156.21 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 78.74 154.94 0)) + (property "Footprint" "" (id 2) (at 78.74 149.86 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 78.74 149.86 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f9b7781-a3c8-47c3-ba35-a2d2d07d03e3)) + ) + + (symbol (lib_id "power:GND") (at 332.74 73.66 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid c089890d-d148-4ccc-be22-b628d8e27aaf) + (property "Reference" "#PWR025" (id 0) (at 332.74 80.01 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 332.74 78.74 0)) + (property "Footprint" "" (id 2) (at 332.74 73.66 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 332.74 73.66 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 42cb6e31-a2b3-4090-ab0d-0fd92cada699)) + ) + + (symbol (lib_id "power:+3V3") (at 191.77 26.67 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid c109cdee-19da-4a91-98c1-1d51fc988a11) + (property "Reference" "#PWR02" (id 0) (at 191.77 30.48 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 191.77 21.59 0)) + (property "Footprint" "" (id 2) (at 191.77 26.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 191.77 26.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d8a95d2f-7e06-46ad-829e-26f5e5851fc5)) + ) + + (symbol (lib_id "Device:Crystal") (at 487.68 44.45 270) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid c229caf9-bd8e-4df4-8266-2d39e81a3f5d) + (property "Reference" "Y1" (id 0) (at 491.49 43.1799 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "FC-135" (id 1) (at 491.49 45.7199 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Crystal:Crystal_SMD_3215-2Pin_3.2x1.5mm" (id 2) (at 487.68 44.45 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 487.68 44.45 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 85aee7ae-5ef9-4859-b75f-92a9170cc7d2)) + (pin "2" (uuid e7a3216a-5b9f-4f38-b29f-5458ec3aacd4)) + ) + + (symbol (lib_id "Device:C") (at 276.86 105.41 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid c3135751-427f-42d2-9a94-3179d7de2153) + (property "Reference" "C27" (id 0) (at 280.67 104.1399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 280.67 106.6799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 277.8252 109.22 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 276.86 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 56459342-74c4-47d6-bd59-3cdaa695012b)) + (pin "2" (uuid c3cb6156-fc3b-42dd-bffa-a3bf0184c9ad)) + ) + + (symbol (lib_id "power:+3V3") (at 175.26 104.14 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid c6c634ef-4b33-4bf2-aacc-34edbc5160d9) + (property "Reference" "#PWR042" (id 0) (at 175.26 107.95 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 175.26 99.06 0)) + (property "Footprint" "" (id 2) (at 175.26 104.14 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 175.26 104.14 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 35a57292-b504-4d14-aa47-c3d6abe6bf3c)) + ) + + (symbol (lib_id "power:GND") (at 336.55 158.75 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid c8077704-203f-45b6-95a4-afa8268ff12a) + (property "Reference" "#PWR035" (id 0) (at 336.55 165.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 336.55 163.83 0)) + (property "Footprint" "" (id 2) (at 336.55 158.75 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 336.55 158.75 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e7dfa7b5-e5f3-4c35-b093-b064f5e15b70)) + ) + + (symbol (lib_id "Device:R") (at 194.31 384.81 180) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid d1984805-4314-4f1c-9ab1-479802945b94) + (property "Reference" "R8" (id 0) (at 196.85 383.5399 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "10k" (id 1) (at 196.85 386.0799 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 196.088 384.81 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 194.31 384.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid fb2f349c-db94-4f70-8f63-2575709b4f31)) + (pin "2" (uuid bfa5af7e-7d4e-4646-adf1-a3cfc766b689)) + ) + + (symbol (lib_id "power:GND") (at 215.9 308.61 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid d1e1dc07-2364-4207-a1f0-283125671838) + (property "Reference" "#PWR0101" (id 0) (at 215.9 314.96 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 215.9 313.69 0)) + (property "Footprint" "" (id 2) (at 215.9 308.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 215.9 308.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 0dbb8752-32c8-400f-8916-238b8dd8b4af)) + ) + + (symbol (lib_id "Device:C") (at 416.56 44.45 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid d21e5415-679a-40f4-b9d3-0f558c2e3abf) + (property "Reference" "C20" (id 0) (at 420.37 43.1799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 420.37 45.7199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 417.5252 48.26 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 416.56 44.45 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid af309fdb-fb9d-44c7-9273-90630d17ea99)) + (pin "2" (uuid 10b56225-260d-424f-9585-22c9b9fc1ede)) + ) + + (symbol (lib_id "sc64v2:LCMXO2-7000Hx-xTG144x") (at 561.34 105.41 0) (unit 4) + (in_bom yes) (on_board yes) + (uuid d36b5d51-b628-4248-a4a1-d225a2713196) + (property "Reference" "U8" (id 0) (at 561.34 101.6 0)) + (property "Value" "LCMXO2-7000Hx-xTG144x" (id 1) (at 561.34 104.14 0)) + (property "Footprint" "Package_QFP:TQFP-144_20x20mm_P0.5mm" (id 2) (at 561.34 101.6 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 560.07 173.99 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "25" (uuid 3fb18ecc-3f3a-41a2-adba-ddc871226166)) + (pin "26" (uuid 9bc4f13a-3bcb-4091-9fa3-f898d0df4711)) + (pin "27" (uuid 0f46136a-95b8-4f04-94e8-834b07ae00bd)) + (pin "28" (uuid dc9c1263-ab13-4dd8-825a-6eb18ea2ed7f)) + (pin "31" (uuid 94fd2423-228f-46cc-be41-97962b123810)) + (pin "32" (uuid c9467401-4446-4fc3-b181-65488aba8557)) + (pin "33" (uuid 07f2b291-8813-491c-b1f8-7ed2cc19157a)) + (pin "34" (uuid 45543745-f29e-4554-bd7a-73d39834b1cb)) + (pin "35" (uuid cfb7c846-8348-4c83-b118-33309857562a)) + ) + + (symbol (lib_id "power:+3V3") (at 327.66 95.25 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid d3a144ca-c295-43c6-a8c7-703b2644694a) + (property "Reference" "#PWR031" (id 0) (at 327.66 99.06 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 327.66 90.17 0)) + (property "Footprint" "" (id 2) (at 327.66 95.25 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 327.66 95.25 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8d92c463-a3a2-4d7d-a230-7150605b07aa)) + ) + + (symbol (lib_id "Connector:TestPoint") (at 198.12 189.23 90) (unit 1) + (in_bom no) (on_board yes) + (uuid dc408f8d-04af-4d73-a1d2-90b29f263566) + (property "Reference" "TP2" (id 0) (at 190.5 189.23 90)) + (property "Value" "TestPoint" (id 1) (at 181.61 189.23 90)) + (property "Footprint" "TestPoint:TestPoint_Pad_D1.5mm" (id 2) (at 198.12 184.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 198.12 184.15 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 485ce1b9-eb7a-41c8-b64d-c31bc0ccb227)) + ) + + (symbol (lib_id "power:GND") (at 97.79 196.85 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid dc7974c1-e6b4-423c-8de3-91dd708511bc) + (property "Reference" "#PWR015" (id 0) (at 97.79 203.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 97.79 201.93 0)) + (property "Footprint" "" (id 2) (at 97.79 196.85 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 97.79 196.85 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid bbe16dae-a35e-4f8f-8df8-1af86ba3101e)) + ) + + (symbol (lib_id "Connector:USB_C_Receptacle_USB2.0") (at 78.74 121.92 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid defdcc3f-5dd1-462d-9a3c-629711ed4f38) + (property "Reference" "J1" (id 0) (at 78.74 99.06 0)) + (property "Value" "DX07S016JA3R1500" (id 1) (at 78.74 101.6 0)) + (property "Footprint" "Connector_USB:USB_C_Receptacle_JAE_DX07S016JA1R1500" (id 2) (at 82.55 121.92 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "https://www.usb.org/sites/default/files/documents/usb_type-c.zip" (id 3) (at 82.55 121.92 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "A1" (uuid a468c054-ab2a-4f77-855a-061c18f5bfe7)) + (pin "A12" (uuid 60822eef-b2dd-44ed-9ea8-fe3e13e51ff8)) + (pin "A4" (uuid 58ce638f-032b-4fb2-8872-043adedc4526)) + (pin "A5" (uuid c3a8d7c2-f273-4384-bce4-28ea730a08e8)) + (pin "A6" (uuid ba6ad123-c897-4e4a-a259-2e8891b52ca0)) + (pin "A7" (uuid 2e2e25eb-1f52-4568-a104-8d9d360bf22b)) + (pin "A8" (uuid 84133c6d-3c2e-48ac-85b7-429da2e9950a)) + (pin "A9" (uuid 8923fbb0-3db4-4688-918f-8e79a51e0d71)) + (pin "B1" (uuid 7df6fdfa-b2b9-456c-9463-7925942a69e5)) + (pin "B12" (uuid 60991980-2d22-436f-a8d6-9d172ab28e9a)) + (pin "B4" (uuid 0091152b-c2f8-415b-b749-238cc80a86d7)) + (pin "B5" (uuid befacab1-3ce9-4336-9354-65f45dcd62dd)) + (pin "B6" (uuid b487884f-d819-43b3-a930-6753691d8f8b)) + (pin "B7" (uuid 8236e5a1-51bf-4faa-8407-8ce7dcfd4acb)) + (pin "B8" (uuid fa0b1147-c05e-46b1-bc1e-8812e3686308)) + (pin "B9" (uuid 21dad6c1-73b2-4ac6-80a4-97474bbf5752)) + (pin "S1" (uuid e71af0a2-dfd9-4840-b219-906b44305ad2)) + ) + + (symbol (lib_id "Device:C") (at 336.55 115.57 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e1080d6b-d7da-48f7-b6bc-20790315d00d) + (property "Reference" "C31" (id 0) (at 340.36 114.2999 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 340.36 116.8399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 337.5152 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 336.55 115.57 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid bae0211a-ef16-420e-81d2-2e64eae0e0dc)) + (pin "2" (uuid 20413beb-f8ca-424d-a588-c083a4b9644d)) + ) + + (symbol (lib_id "Device:C") (at 251.46 105.41 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e1f00983-a235-4d69-9d9e-906d079c4b90) + (property "Reference" "C25" (id 0) (at 255.27 104.1399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 255.27 106.6799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 252.4252 109.22 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 251.46 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d1d63a2d-92c6-4332-9bdd-3d6cc44c97b9)) + (pin "2" (uuid 5f53482b-bf6d-4baf-9e55-4c293b9e534f)) + ) + + (symbol (lib_id "Connector:TestPoint") (at 198.12 191.77 90) (unit 1) + (in_bom no) (on_board yes) + (uuid e3a53687-1d2c-4f55-a6dc-3cb068c0e853) + (property "Reference" "TP3" (id 0) (at 190.5 191.77 90)) + (property "Value" "TestPoint" (id 1) (at 181.61 191.77 90)) + (property "Footprint" "TestPoint:TestPoint_Pad_D1.5mm" (id 2) (at 198.12 186.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 198.12 186.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 1370dd99-5ea4-4193-aeab-4abe4ea7d1f9)) + ) + + (symbol (lib_id "Device:C") (at 349.25 115.57 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e505a7b3-3ba0-4037-b4e7-40457055df66) + (property "Reference" "C32" (id 0) (at 353.06 114.2999 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 353.06 116.8399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 350.2152 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 349.25 115.57 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f1f1efc2-898d-4213-960a-c9ef33421b9d)) + (pin "2" (uuid 30610ec5-a677-4e1f-bee9-5e9161941912)) + ) + + (symbol (lib_id "Connector:TestPoint") (at 198.12 194.31 90) (unit 1) + (in_bom no) (on_board yes) + (uuid e5375fae-8d12-42aa-b7f4-67a68780c27e) + (property "Reference" "GND1" (id 0) (at 190.5 194.31 90)) + (property "Value" "TestPoint" (id 1) (at 181.61 194.31 90)) + (property "Footprint" "TestPoint:TestPoint_Pad_D1.5mm" (id 2) (at 198.12 189.23 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 198.12 189.23 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5b83a401-2009-495a-8ea7-d0e11708202c)) + ) + + (symbol (lib_id "power:GND") (at 238.76 261.62 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid ead7dcbd-53dc-4f4f-a8cf-1850e68132be) + (property "Reference" "#PWR039" (id 0) (at 238.76 267.97 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 238.76 266.7 0)) + (property "Footprint" "" (id 2) (at 238.76 261.62 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 238.76 261.62 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 19303d3e-1ad4-44cc-846d-a298cb2b7e06)) + ) + + (symbol (lib_id "power:GND") (at 175.26 143.51 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid ec505995-ff64-4251-b3f6-ca443e0ad59c) + (property "Reference" "#PWR043" (id 0) (at 175.26 149.86 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 175.26 148.59 0)) + (property "Footprint" "" (id 2) (at 175.26 143.51 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 175.26 143.51 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d43e3bf9-eccf-4747-b2e7-65e2b8be9d4d)) + ) + + (symbol (lib_id "power:GND") (at 200.66 196.85 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid edeed9d2-2863-47cf-a317-2f2c1d53c297) + (property "Reference" "#PWR024" (id 0) (at 200.66 203.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 200.66 201.93 0)) + (property "Footprint" "" (id 2) (at 200.66 196.85 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 200.66 196.85 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 42686e23-c675-42c8-9113-b1a94c5ffdd7)) + ) + + (symbol (lib_id "power:+3V3") (at 57.15 290.83 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid ee558bb1-143d-4f3f-b171-fbc651240e69) + (property "Reference" "#PWR012" (id 0) (at 57.15 294.64 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 57.15 285.75 0)) + (property "Footprint" "" (id 2) (at 57.15 290.83 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 57.15 290.83 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 039eb883-8d92-4a36-bade-662fbb361c87)) + ) + + (symbol (lib_id "Device:R") (at 114.3 50.8 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid f29baa2d-b8f7-45f8-96ad-5b304188d80b) + (property "Reference" "R3" (id 0) (at 116.84 49.5299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "470R" (id 1) (at 116.84 52.0699 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 112.522 50.8 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 114.3 50.8 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 0d2f1955-85e8-44fa-b9da-e6f7dc63a44c)) + (pin "2" (uuid 4d730846-1aa3-4922-bddd-bf53cbabe921)) + ) + + (symbol (lib_id "Device:R") (at 85.09 262.89 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid f47d1b56-1473-4960-b027-88c1d1af2f5a) + (property "Reference" "R10" (id 0) (at 85.09 266.7 90)) + (property "Value" "2.2k" (id 1) (at 85.09 269.24 90)) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 85.09 264.668 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 85.09 262.89 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid fa0cbd7f-4907-4874-bd52-8241b5f4851d)) + (pin "2" (uuid 3b9724c2-9538-4d3f-b4d1-47bd98cd797e)) + ) + + (symbol (lib_id "sc64v2:LCMXO2-7000Hx-xTG144x") (at 561.34 140.97 0) (unit 5) + (in_bom yes) (on_board yes) + (uuid f5284160-b8bd-4591-b634-bcdefecda6c2) + (property "Reference" "U8" (id 0) (at 561.34 137.16 0)) + (property "Value" "LCMXO2-7000Hx-xTG144x" (id 1) (at 561.34 139.7 0)) + (property "Footprint" "Package_QFP:TQFP-144_20x20mm_P0.5mm" (id 2) (at 561.34 137.16 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 560.07 209.55 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "13" (uuid 5129f4c8-e8af-4677-83d8-aa47398f3e0b)) + (pin "14" (uuid 4a18628a-e67b-44c3-8c6c-bdf181839e7f)) + (pin "15" (uuid 2cc2bcb6-10ea-4dcf-b356-ce2c4e73f4cf)) + (pin "17" (uuid 34f465a8-8770-4870-8719-ef29e25ce277)) + (pin "19" (uuid 22af3296-a8c0-44f0-a6da-1f2eb799fdbd)) + (pin "20" (uuid ed68e536-40f2-4d13-8061-3def96fcdef7)) + (pin "21" (uuid 68ac04a6-9a75-408e-9fd0-380c524f27a2)) + (pin "22" (uuid 87c020b6-2a55-4a5b-85b6-eabdc801a313)) + (pin "23" (uuid 122e301e-99d5-44c6-8527-e16c563c8a6c)) + (pin "24" (uuid b89d1e79-58c8-466c-bfdc-f293d0007f73)) + ) + + (symbol (lib_id "Device:R") (at 557.53 33.02 180) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid f9c93d04-ae88-4458-aada-7c0f1c1f482b) + (property "Reference" "R12" (id 0) (at 560.07 31.7499 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "10k" (id 1) (at 560.07 34.2899 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 559.308 33.02 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 557.53 33.02 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 7ef7c752-4a59-451b-ab3f-f0d2dfb46165)) + (pin "2" (uuid 412c3c31-afc9-4bfb-b84f-38a0e218d4aa)) + ) + + (symbol (lib_id "Device:C") (at 238.76 105.41 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid fd1e1286-95a1-43a4-bd11-65aa433249c2) + (property "Reference" "C24" (id 0) (at 242.57 104.1399 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "100nF" (id 1) (at 242.57 106.6799 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 239.7252 109.22 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 238.76 105.41 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 087c7d56-8bae-4105-811d-f435a8be8e48)) + (pin "2" (uuid d3a3cdb5-bd56-4e37-9d46-2d6e59e029a3)) + ) + + (symbol (lib_id "Oscillator:XO32") (at 458.47 208.28 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid fd95e6e1-2b37-4604-8f85-981efac5e15c) + (property "Reference" "X2" (id 0) (at 466.09 203.2 0)) + (property "Value" "ECS-3225MV-500-BN" (id 1) (at 476.25 213.36 0)) + (property "Footprint" "Oscillator:Oscillator_SMD_SeikoEpson_SG8002CE-4Pin_3.2x2.5mm" (id 2) (at 476.25 217.17 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://cdn-reichelt.de/documents/datenblatt/B400/XO32.pdf" (id 3) (at 455.93 208.28 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 19faaf36-574f-4c4e-9fc9-f1aa28b3fa5a)) + (pin "2" (uuid e32c6d5d-91f6-4f79-b290-8a4ab51f1803)) + (pin "3" (uuid 915df0da-3713-4a8b-a049-8d7b0106dd46)) + (pin "4" (uuid 2489abd9-b04d-4a73-8535-a49f1c4f3600)) + ) + + (symbol (lib_id "Connector:TestPoint") (at 198.12 186.69 90) (unit 1) + (in_bom no) (on_board yes) + (uuid fd9f5719-35a0-432f-9a74-8007f2818ce9) + (property "Reference" "TP1" (id 0) (at 190.5 186.69 90)) + (property "Value" "TestPoint" (id 1) (at 181.61 186.69 90)) + (property "Footprint" "TestPoint:TestPoint_Pad_D1.5mm" (id 2) (at 198.12 181.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 198.12 181.61 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d4ede2f0-9d6d-4e48-8597-d648786b8e45)) + ) + + (symbol (lib_id "Device:C") (at 83.82 336.55 180) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid fe7d11ce-921f-4c35-a390-452b3002c6eb) + (property "Reference" "C14" (id 0) (at 87.63 335.2799 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Value" "100nF" (id 1) (at 87.63 337.8199 0) + (effects (font (size 1.27 1.27)) (justify right)) + ) + (property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (id 2) (at 82.8548 332.74 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 83.82 336.55 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 7cd55f5b-19ec-4576-9061-4683ee95a55b)) + (pin "2" (uuid 7a28bed1-d614-43da-8207-5c5df8079d83)) + ) + + (symbol (lib_id "power:+5V") (at 22.86 26.67 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid fef8c560-dfd2-40f9-8939-71fd101cc4a1) + (property "Reference" "#PWR01" (id 0) (at 22.86 30.48 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (id 1) (at 22.86 21.59 0)) + (property "Footprint" "" (id 2) (at 22.86 26.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 22.86 26.67 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid adef4c3b-bd3c-423f-9129-fc4f486d6e61)) + ) + + (sheet_instances + (path "/" (page "1")) + ) + + (symbol_instances + (path "/fef8c560-dfd2-40f9-8939-71fd101cc4a1" + (reference "#PWR01") (unit 1) (value "+5V") (footprint "") + ) + (path "/c109cdee-19da-4a91-98c1-1d51fc988a11" + (reference "#PWR02") (unit 1) (value "+3V3") (footprint "") + ) + (path "/2c68f5da-25e5-4b38-8f43-a5fa3c8fbaf6" + (reference "#PWR03") (unit 1) (value "GND") (footprint "") + ) + (path "/005d911a-2856-4c79-9c31-c86f93de6d0c" + (reference "#PWR04") (unit 1) (value "GND") (footprint "") + ) + (path "/74034037-1cbf-4668-b7ea-b8ab587359f0" + (reference "#PWR05") (unit 1) (value "+3V3") (footprint "") + ) + (path "/64a62079-b9f5-4f84-9f85-ccc801bedcbe" + (reference "#PWR06") (unit 1) (value "+5V") (footprint "") + ) + (path "/0a5cf21d-6f1b-4b58-968b-d6b8ebd6334f" + (reference "#PWR07") (unit 1) (value "+3V3") (footprint "") + ) + (path "/be2d3c52-7f36-4a74-ba8c-05b8700e2bea" + (reference "#PWR08") (unit 1) (value "GND") (footprint "") + ) + (path "/a771b5d7-f1c3-419b-ac2e-e146642a46ee" + (reference "#PWR09") (unit 1) (value "+5V") (footprint "") + ) + (path "/857ad253-d593-4464-bc94-2d2973ed2c00" + (reference "#PWR010") (unit 1) (value "GND") (footprint "") + ) + (path "/41638c83-80bc-4d96-917f-dab37e760733" + (reference "#PWR011") (unit 1) (value "GND") (footprint "") + ) + (path "/ee558bb1-143d-4f3f-b171-fbc651240e69" + (reference "#PWR012") (unit 1) (value "+3V3") (footprint "") + ) + (path "/63aa8c01-796d-47a7-87b3-fbae1f65c90c" + (reference "#PWR013") (unit 1) (value "GND") (footprint "") + ) + (path "/47f234bb-8c8e-4f7a-abbf-247429f54ebd" + (reference "#PWR014") (unit 1) (value "+3V3") (footprint "") + ) + (path "/dc7974c1-e6b4-423c-8de3-91dd708511bc" + (reference "#PWR015") (unit 1) (value "GND") (footprint "") + ) + (path "/170387e1-6ac2-4b17-ba7d-81085fc7fcd1" + (reference "#PWR016") (unit 1) (value "GND") (footprint "") + ) + (path "/1c597b4f-8d32-41b8-a401-ea79b7e354de" + (reference "#PWR017") (unit 1) (value "+3V3") (footprint "") + ) + (path "/1efd382c-77ba-44cc-854c-77f44cf4adc4" + (reference "#PWR018") (unit 1) (value "GND") (footprint "") + ) + (path "/9683b3a6-2a8e-4e75-be41-f2397c3049c6" + (reference "#PWR019") (unit 1) (value "+3V3") (footprint "") + ) + (path "/ae9dbf5d-0b80-4163-a4fe-13d2465aa517" + (reference "#PWR020") (unit 1) (value "GND") (footprint "") + ) + (path "/67f47780-6924-4e7e-aab1-3e59762a208e" + (reference "#PWR021") (unit 1) (value "+3V3") (footprint "") + ) + (path "/a824162b-b4dd-4d47-803e-8843b8f30173" + (reference "#PWR022") (unit 1) (value "+3V3") (footprint "") + ) + (path "/7cd28c5a-b83b-4570-9500-d0c58ef05970" + (reference "#PWR023") (unit 1) (value "GND") (footprint "") + ) + (path "/edeed9d2-2863-47cf-a317-2f2c1d53c297" + (reference "#PWR024") (unit 1) (value "GND") (footprint "") + ) + (path "/c089890d-d148-4ccc-be22-b628d8e27aaf" + (reference "#PWR025") (unit 1) (value "GND") (footprint "") + ) + (path "/7ee37472-5ec0-4930-a374-5a36eaeab663" + (reference "#PWR026") (unit 1) (value "+3V3") (footprint "") + ) + (path "/37f7588a-351f-492a-b5e9-a86d93620781" + (reference "#PWR027") (unit 1) (value "GND") (footprint "") + ) + (path "/65babc05-73c1-4c42-9a6a-9d66e0a48187" + (reference "#PWR028") (unit 1) (value "+3V3") (footprint "") + ) + (path "/0fad0d8f-fd7c-4df1-8c91-d5670e93c882" + (reference "#PWR029") (unit 1) (value "GND") (footprint "") + ) + (path "/18a12c40-b756-4576-b5ce-524bd6741009" + (reference "#PWR030") (unit 1) (value "+3V3") (footprint "") + ) + (path "/d3a144ca-c295-43c6-a8c7-703b2644694a" + (reference "#PWR031") (unit 1) (value "+3V3") (footprint "") + ) + (path "/1ee21910-144e-4257-a76f-0adfeca68e45" + (reference "#PWR032") (unit 1) (value "+3V3") (footprint "") + ) + (path "/adf9f3f1-7538-479d-a50d-194f1e3cefaa" + (reference "#PWR033") (unit 1) (value "+3V3") (footprint "") + ) + (path "/774c0ae1-062a-41a5-88b0-73b765600eb4" + (reference "#PWR034") (unit 1) (value "GND") (footprint "") + ) + (path "/c8077704-203f-45b6-95a4-afa8268ff12a" + (reference "#PWR035") (unit 1) (value "GND") (footprint "") + ) + (path "/3bf9f7aa-1b89-456b-9f4e-e9562a554fa8" + (reference "#PWR036") (unit 1) (value "+3V3") (footprint "") + ) + (path "/0f91af28-d384-42cd-b1de-f16367e46432" + (reference "#PWR037") (unit 1) (value "+3V3") (footprint "") + ) + (path "/0150f8e7-8dce-4920-83f6-9e75396f39b7" + (reference "#PWR038") (unit 1) (value "GND") (footprint "") + ) + (path "/ead7dcbd-53dc-4f4f-a8cf-1850e68132be" + (reference "#PWR039") (unit 1) (value "GND") (footprint "") + ) + (path "/a86370aa-3797-4213-9ea9-4badce967c0f" + (reference "#PWR040") (unit 1) (value "GND") (footprint "") + ) + (path "/6ebba947-44db-4edb-8b6b-eeb19c5c6a28" + (reference "#PWR041") (unit 1) (value "GND") (footprint "") + ) + (path "/c6c634ef-4b33-4bf2-aacc-34edbc5160d9" + (reference "#PWR042") (unit 1) (value "+3V3") (footprint "") + ) + (path "/ec505995-ff64-4251-b3f6-ca443e0ad59c" + (reference "#PWR043") (unit 1) (value "GND") (footprint "") + ) + (path "/0b54e0b3-595c-47db-bcec-c6a557e236e7" + (reference "#PWR044") (unit 1) (value "GND") (footprint "") + ) + (path "/d1e1dc07-2364-4207-a1f0-283125671838" + (reference "#PWR0101") (unit 1) (value "GND") (footprint "") + ) + (path "/a0e5adb5-40f9-4fc8-a069-cb599973b556" + (reference "3V1") (unit 1) (value "TestPoint") (footprint "TestPoint:TestPoint_Pad_D1.5mm") + ) + (path "/29bdd9c1-a511-41a4-81ee-696b6cbdf543" + (reference "BT1") (unit 1) (value "1060") (footprint "Battery:BatteryHolder_Keystone_1060_1x2032") + ) + (path "/2263c8e5-5551-4045-b466-779e9e5fd361" + (reference "C1") (unit 1) (value "4.7uF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/23f0bb46-eb5d-4798-b7ac-fd1aad5c7d6a" + (reference "C2") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/3994f405-55be-4a04-8c8b-3ed658926389" + (reference "C3") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/4d57f96b-3724-40e6-ab93-f23413cb8642" + (reference "C4") (unit 1) (value "47uF") (footprint "Capacitor_SMD:C_0805_2012Metric") + ) + (path "/13d2b351-5091-4e28-9a5e-2a00667fbc07" + (reference "C5") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/8875e69d-d89e-41ba-bde2-45767e9df445" + (reference "C6") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/5eb8655d-026d-48b3-9313-87b558b7f693" + (reference "C7") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/03085d81-2734-4969-bd47-0eafbab0f38e" + (reference "C8") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/2fe178e5-f305-4d73-9f34-5dc926fbad07" + (reference "C9") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/b1eae589-88fc-49de-92a5-165aa1590642" + (reference "C10") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/81faf8c0-1827-4289-ab03-9e47b8583766" + (reference "C11") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/5f5a5875-6a56-4582-a73d-ebf515c445e5" + (reference "C12") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/0f368328-b928-4c36-bde8-df1e5494dab0" + (reference "C13") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/fe7d11ce-921f-4c35-a390-452b3002c6eb" + (reference "C14") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/04819b2b-cb43-4cae-baac-01caae26be72" + (reference "C15") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/9b5d4a16-c0ac-4bd5-96ac-9f9edadfcd60" + (reference "C16") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/0a51cd04-5336-4bfb-ac7b-21533c8d00bb" + (reference "C17") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/614914c2-3abd-4f26-90db-4b83af4389e9" + (reference "C18") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/9a8905a3-5ca0-46a1-bee9-ca122e954a22" + (reference "C19") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/d21e5415-679a-40f4-b9d3-0f558c2e3abf" + (reference "C20") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/994dc62b-2a7b-4bff-8f5a-68d36773f4c8" + (reference "C21") (unit 1) (value "7pF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/13265650-3af2-4401-adaf-15efd42a756b" + (reference "C22") (unit 1) (value "7pF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/49f3385c-4a1a-4ed1-a308-2c37f51240ba" + (reference "C23") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/fd1e1286-95a1-43a4-bd11-65aa433249c2" + (reference "C24") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/e1f00983-a235-4d69-9d9e-906d079c4b90" + (reference "C25") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/acd48532-9df4-4213-8073-4ea5ab05ba2a" + (reference "C26") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/c3135751-427f-42d2-9a94-3179d7de2153" + (reference "C27") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/4f8814bc-1ddc-4d9d-8341-e717fa829f27" + (reference "C28") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/2bbbf7e2-fec0-4e0e-af5e-d1d876305dd1" + (reference "C29") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/5641d56b-9829-49e8-b5b5-4c281f49578e" + (reference "C30") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/e1080d6b-d7da-48f7-b6bc-20790315d00d" + (reference "C31") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/e505a7b3-3ba0-4037-b4e7-40457055df66" + (reference "C32") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/6f6c2377-8039-497e-9b10-e130c951f0c3" + (reference "C33") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/79c68ec7-484d-45d8-b8ea-7b0a7306e7c6" + (reference "C34") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/5a894943-2e60-4640-96a2-a55eb4cfef14" + (reference "C35") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/8b893dd0-e97f-4683-8d2e-b0e1c10c6051" + (reference "C36") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/368cbd0e-6260-44d9-af09-bc08be9667bd" + (reference "C37") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/84b8b021-1eac-40ec-9d18-9bb490fec58a" + (reference "C38") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/109c53cf-c8a3-456a-9546-7c3328fa259a" + (reference "C39") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/bc7d6f8c-6dfc-49b5-ab62-ccadd92d55cc" + (reference "C40") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/a61e6e2e-0cef-4616-939d-fadea790ce4f" + (reference "C41") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/807f06fd-69e9-4462-bc69-40d576fe8720" + (reference "C42") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/4a8503ee-5770-4f04-9dfc-cfd261659fa9" + (reference "C43") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/1df87e80-2d07-4a8a-bb5b-e5faf9d9c905" + (reference "C44") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/65dd3f32-98df-4103-ac72-9d5146d33dfe" + (reference "C45") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/aeb0d0cf-6d04-4e89-836d-342f2e598d6b" + (reference "C46") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/25b1fb90-87c1-483e-8933-09b55f4fd3ab" + (reference "C47") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") + ) + (path "/94dcb139-2876-4a88-9afc-5a91f644dff1" + (reference "C48") (unit 1) (value "47uF") (footprint "Capacitor_SMD:C_0805_2012Metric") + ) + (path "/45c5d7eb-fb02-4045-bae4-ce53aa49b4f2" + (reference "D1") (unit 1) (value "150060RS75000") (footprint "LED_SMD:LED_0603_1608Metric") + ) + (path "/e5375fae-8d12-42aa-b7f4-67a68780c27e" + (reference "GND1") (unit 1) (value "TestPoint") (footprint "TestPoint:TestPoint_Pad_D1.5mm") + ) + (path "/defdcc3f-5dd1-462d-9a3c-629711ed4f38" + (reference "J1") (unit 1) (value "DX07S016JA3R1500") (footprint "Connector_USB:USB_C_Receptacle_JAE_DX07S016JA1R1500") + ) + (path "/18505a27-e048-4c99-939f-13bbdf43eb7b" + (reference "J2") (unit 1) (value "Conn_01x03_Male") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical") + ) + (path "/51744168-bfea-4a8e-8692-c99342c4a1b3" + (reference "J3") (unit 1) (value "TC2050-FP") (footprint "sc64v2:TC2050-FP") + ) + (path "/09e47e41-fce2-4be6-a894-63ccba0f1215" + (reference "J4") (unit 1) (value "104031-0811") (footprint "Connector_Card:microSD_HC_Molex_104031-0811") + ) + (path "/0ccace5b-45a7-46eb-82b5-c5e6d2488545" + (reference "J_N1") (unit 1) (value "N64_Cartridge") (footprint "sc64v2:N64_Edge") + ) + (path "/6a7f3f5f-7361-4bc7-aab9-0a665363dea2" + (reference "L1") (unit 1) (value "470R") (footprint "Inductor_SMD:L_0603_1608Metric") + ) + (path "/45ec13fe-5f93-4814-b0a9-2ef724502115" + (reference "L2") (unit 1) (value "470R") (footprint "Inductor_SMD:L_0603_1608Metric") + ) + (path "/8225742a-f816-4b22-8618-1e188dae72ec" + (reference "R1") (unit 1) (value "1k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/38d3e0bc-e7f3-4fcf-b28b-1dd2ebbed152" + (reference "R2") (unit 1) (value "330R") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/f29baa2d-b8f7-45f8-96ad-5b304188d80b" + (reference "R3") (unit 1) (value "470R") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/9676acb4-ecdb-4bb9-8697-bbf28b479ff0" + (reference "R4") (unit 1) (value "5.1k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/7ed06213-5fec-4fc2-a07b-97a7e844b4e4" + (reference "R5") (unit 1) (value "5.1k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/0c635b0d-75d2-43fe-aa37-07274a83e016" + (reference "R6") (unit 1) (value "12k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/53a3914e-49ab-47c6-9e8c-471b61f99f60" + (reference "R7") (unit 1) (value "12k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/d1984805-4314-4f1c-9ab1-479802945b94" + (reference "R8") (unit 1) (value "10k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/38f041d3-336d-4c45-9e25-efeece1e2340" + (reference "R9") (unit 1) (value "5.1k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/f47d1b56-1473-4960-b027-88c1d1af2f5a" + (reference "R10") (unit 1) (value "2.2k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/9f9dfac6-0c0d-4ee0-924b-e95250d2b98f" + (reference "R11") (unit 1) (value "10k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/f9c93d04-ae88-4458-aada-7c0f1c1f482b" + (reference "R12") (unit 1) (value "10k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/218503c2-8dbd-4619-ac7b-4c01fe0226fe" + (reference "R13") (unit 1) (value "10k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/303e7d15-a601-4397-8721-b9f3cf051807" + (reference "R14") (unit 1) (value "2.2k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/aab80820-43a0-4879-aa62-70e3b13add9d" + (reference "R15") (unit 1) (value "2.2k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/7295e019-ebb9-424a-ad6e-06fdc7f816d8" + (reference "R16") (unit 1) (value "10k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/83ac819d-dfbc-422a-a76f-f95cac775ba2" + (reference "R17") (unit 1) (value "10k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/351bd7d9-24e6-4a96-9b71-d9b4f5d9bd9a" + (reference "R18") (unit 1) (value "1k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/57757361-0691-4a91-bc3d-0dc7562fcbe2" + (reference "R19") (unit 1) (value "10k") (footprint "Resistor_SMD:R_0603_1608Metric") + ) + (path "/95782e76-cb4b-4009-9945-08a041720df8" + (reference "SW1") (unit 1) (value "TS07-667-37-BK-160-SMT") (footprint "Button_Switch_SMD:SW_SPST_Omron_B3FS-101xP") + ) + (path "/fd9f5719-35a0-432f-9a74-8007f2818ce9" + (reference "TP1") (unit 1) (value "TestPoint") (footprint "TestPoint:TestPoint_Pad_D1.5mm") + ) + (path "/dc408f8d-04af-4d73-a1d2-90b29f263566" + (reference "TP2") (unit 1) (value "TestPoint") (footprint "TestPoint:TestPoint_Pad_D1.5mm") + ) + (path "/e3a53687-1d2c-4f55-a6dc-3cb068c0e853" + (reference "TP3") (unit 1) (value "TestPoint") (footprint "TestPoint:TestPoint_Pad_D1.5mm") + ) + (path "/2d0fed17-815d-432f-a7eb-ae8520ef2c33" + (reference "U1") (unit 1) (value "TC1264-3.3VDB") (footprint "Package_TO_SOT_SMD:SOT-223-3_TabPin2") + ) + (path "/11199015-56cf-4f32-a080-c15518c28d0f" + (reference "U2") (unit 1) (value "TPS2111A") (footprint "Package_SO:TSSOP-8_4.4x3mm_P0.65mm") + ) + (path "/6e901f8d-de31-4712-9607-3a9979e49550" + (reference "U3") (unit 1) (value "FT232HL") (footprint "Package_QFP:LQFP-48_7x7mm_P0.5mm") + ) + (path "/a669f65a-ba28-488f-8876-920a059fc027" + (reference "U4") (unit 1) (value "93AA56Bx-x/OT") (footprint "Package_TO_SOT_SMD:SOT-23-6") + ) + (path "/0fc6d60f-b51b-46bd-9f02-cc292d56b643" + (reference "U5") (unit 1) (value "W25Q128JVSIQ") (footprint "Package_SO:SOIC-8_5.23x5.23mm_P1.27mm") + ) + (path "/8a46818f-80b6-48c6-9d8f-04eb3e3ccdb1" + (reference "U6") (unit 1) (value "STM32G030F6P6") (footprint "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm") + ) + (path "/766e0844-4cc7-4fee-800a-7bdf93675837" + (reference "U7") (unit 1) (value "MCP7940N-x/ST") (footprint "Package_SO:TSSOP-8_4.4x3mm_P0.65mm") + ) + (path "/577a15d5-96bb-4ab6-91f7-9846e15282cb" + (reference "U8") (unit 1) (value "LCMXO2-7000Hx-xTG144x") (footprint "Package_QFP:TQFP-144_20x20mm_P0.5mm") + ) + (path "/93ddce85-c1a8-42b3-a16c-75b607cf3749" + (reference "U8") (unit 2) (value "LCMXO2-7000Hx-xTG144x") (footprint "Package_QFP:TQFP-144_20x20mm_P0.5mm") + ) + (path "/749a3945-389b-4081-ad7d-147241e86892" + (reference "U8") (unit 3) (value "LCMXO2-7000Hx-xTG144x") (footprint "Package_QFP:TQFP-144_20x20mm_P0.5mm") + ) + (path "/d36b5d51-b628-4248-a4a1-d225a2713196" + (reference "U8") (unit 4) (value "LCMXO2-7000Hx-xTG144x") (footprint "Package_QFP:TQFP-144_20x20mm_P0.5mm") + ) + (path "/f5284160-b8bd-4591-b634-bcdefecda6c2" + (reference "U8") (unit 5) (value "LCMXO2-7000Hx-xTG144x") (footprint "Package_QFP:TQFP-144_20x20mm_P0.5mm") + ) + (path "/7b73b1ca-70af-4411-a26c-1686ab71a5d7" + (reference "U8") (unit 6) (value "LCMXO2-7000Hx-xTG144x") (footprint "Package_QFP:TQFP-144_20x20mm_P0.5mm") + ) + (path "/7adce0b2-9540-4d77-8cf1-4df964c29563" + (reference "U8") (unit 7) (value "LCMXO2-7000Hx-xTG144x") (footprint "Package_QFP:TQFP-144_20x20mm_P0.5mm") + ) + (path "/1dbbd042-b212-4933-895e-d1a10aa96c60" + (reference "U9") (unit 1) (value "IS42S16320F-7TL") (footprint "Package_SO:TSOP-II-54_22.2x10.16mm_P0.8mm") + ) + (path "/a73f4f5a-6e4d-472e-9b51-954e3d116bd7" + (reference "X1") (unit 1) (value "ECS-3225MV-120-CN") (footprint "Oscillator:Oscillator_SMD_SeikoEpson_SG8002CE-4Pin_3.2x2.5mm") + ) + (path "/fd95e6e1-2b37-4604-8f85-981efac5e15c" + (reference "X2") (unit 1) (value "ECS-3225MV-500-BN") (footprint "Oscillator:Oscillator_SMD_SeikoEpson_SG8002CE-4Pin_3.2x2.5mm") + ) + (path "/c229caf9-bd8e-4df4-8266-2d39e81a3f5d" + (reference "Y1") (unit 1) (value "FC-135") (footprint "Crystal:Crystal_SMD_3215-2Pin_3.2x1.5mm") + ) + ) +) diff --git a/hw/shell/sc64_shell.f3d b/hw/shell/sc64_shell.f3d new file mode 100644 index 0000000..101016a Binary files /dev/null and b/hw/shell/sc64_shell.f3d differ diff --git a/hw/shell/sc64_shell_back.stl b/hw/shell/sc64_shell_back.stl new file mode 100644 index 0000000..6de06c5 Binary files /dev/null and b/hw/shell/sc64_shell_back.stl differ diff --git a/hw/shell/sc64_shell_front.stl b/hw/shell/sc64_shell_front.stl new file mode 100644 index 0000000..7de72e6 Binary files /dev/null and b/hw/shell/sc64_shell_front.stl differ diff --git a/sw/n64/.gitignore b/sw/bootloader/.gitignore similarity index 100% rename from sw/n64/.gitignore rename to sw/bootloader/.gitignore diff --git a/sw/bootloader/Makefile b/sw/bootloader/Makefile new file mode 100644 index 0000000..bdbb28a --- /dev/null +++ b/sw/bootloader/Makefile @@ -0,0 +1,95 @@ +TOOLCHAIN = mips64-elf- +CC = $(TOOLCHAIN)gcc +CXX = $(TOOLCHAIN)g++ +OBJCOPY = $(TOOLCHAIN)objcopy +OBJDUMP = $(TOOLCHAIN)objdump +SIZE = $(TOOLCHAIN)size +PYTHON = python3 + +FLAGS = -march=vr4300 -mtune=vr4300 $(USER_FLAGS) +CFLAGS = -Os -Wall -ffunction-sections -fdata-sections -ffreestanding -MMD -MP +ASFLAGS = -Wa,-I$(N64_INST)/mips64-elf/lib +LDFLAGS = -lc -nostartfiles -Wl,--gc-sections + +SRC_DIR = src +ASSET_DIR = assets +BUILD_DIR = build + +SRC_FILES = \ + startup.S \ + boot.c \ + crc32.c \ + display.c \ + error.c \ + exception.c \ + exception.S \ + font.c \ + init.c \ + interrupt.c \ + io.c \ + ipl2.S \ + main.c \ + menu.c \ + sc64.c \ + syscalls.c \ + test.c \ + version.c \ + fatfs/diskio.c \ + fatfs/ff.c \ + fatfs/ffsystem.c \ + fatfs/ffunicode.c + +ASSET_FILES = \ + sc64_logo_640_240_dimmed.png + +SRCS = $(SRC_FILES) $(ASSET_FILES) +SRC_OBJS = $(patsubst %,%.o,$(SRC_FILES)) +ASSET_OBJS = $(patsubst %,%.asset.o,$(basename $(ASSET_FILES))) +OBJS = $(addprefix $(BUILD_DIR)/,$(notdir $(SRC_OBJS) $(ASSET_OBJS))) +DEPS = $(OBJS:.o=.d) +VPATH = $(SRC_DIR) $(SRC_DIR)/fatfs $(ASSET_DIR) + +$(@info $(shell mkdir -p ./$(BUILD_DIR) &> /dev/null)) + +$(BUILD_DIR)/%.S.o: %.S + $(CC) -x assembler-with-cpp $(FLAGS) $(ASFLAGS) $(CFLAGS) -c $< -o $@ + +$(BUILD_DIR)/%.c.o: %.c + $(CC) $(FLAGS) $(CFLAGS) -c $< -o $@ + +$(BUILD_DIR)/%.asset: $(ASSET_DIR)/%.png + $(PYTHON) tools/asset_converter.py $< $@ + +$(BUILD_DIR)/%.asset.o: $(BUILD_DIR)/%.asset $(ASSET_DIR)/assets.S + @sed -e "s,@sym@,$*,g" -e "s,@file@,$<," < $(ASSET_DIR)/assets.S | $(CC) -x assembler-with-cpp $(FLAGS) $(ASFLAGS) $(CFLAGS) -c - -o $@ + +$(BUILD_DIR)/bootloader.elf: $(OBJS) N64.ld + $(CXX) $(FLAGS) $(LDFLAGS) -TN64.ld $(OBJS) -o $@ + @$(OBJDUMP) -S $@ > $(BUILD_DIR)/bootloader.lst + +$(BUILD_DIR)/bootloader.bin: $(BUILD_DIR)/bootloader.elf + @$(OBJCOPY) -O binary $< $@ + @chksum64 $@ > /dev/null + @truncate --size=1028k $@ + +$(BUILD_DIR)/bootloader.hex: $(BUILD_DIR)/bootloader.bin + @$(OBJCOPY) -I binary -O ihex $< $@ + +print_size: $(BUILD_DIR)/bootloader.elf + @echo 'Size of modules:' + @$(SIZE) -B -d -t --common $(OBJS) + @echo 'Size of bootloader:' + @$(SIZE) -B -d $< + +all: $(BUILD_DIR)/bootloader.hex print_size + +clean: + @rm -rf ./$(BUILD_DIR)/* + +$(BUILD_DIR)/version.c.o: .FORCE + +.FORCE: + +.PHONY: .FORCE all clean print_size + +-include $(DEPS) diff --git a/sw/bootloader/N64.ld b/sw/bootloader/N64.ld new file mode 100644 index 0000000..1707375 --- /dev/null +++ b/sw/bootloader/N64.ld @@ -0,0 +1,57 @@ +MEMORY { + framebuffer (rw) : org = 0x8026A000, len = 600k + ram (rwx) : org = 0x80300000, len = 1M + rom (r) : org = 0xB0000000, len = 1028k +} + +ENTRY(entry_handler) + +__exception_stack_size = 8k; +__stack_size = 16k; + +SECTIONS { + .boot : { + KEEP(*(.text.rom_header)); + KEEP(*(.text.ipl3)); + } > rom + + .framebuffer (NOLOAD) : SUBALIGN(64) { + *(.framebuffer .framebuffer.*) + } > framebuffer + + .text : SUBALIGN(4) { + *(.text.entry_handler) + *(.text .text.* .gnu.linkonce.t.*) + *(.assets .assets.*) + *(.rodata .rodata.* .gnu.linkonce.r.*) + *(.data .data.* .gnu.linkonce.d.*) + _gp = . + 0x8000; + *(.sdata .sdata.* .gnu.linkonce.s.*) + *(.lit8 .lit4) + } > ram AT > rom + + .bss : { + . = ALIGN(8); + _sbss = .; + *(.sbss .sbss.* .gnu.linkonce.sb.*) + *(.scommon .scommon.*) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(8); + _ebss = .; + } > ram + + _sheap = .; + . = ORIGIN(ram) + LENGTH(ram) - __exception_stack_size - __stack_size; + _eheap = .; + + . += __exception_stack_size; + _esp = .; + + . += __stack_size; + _sp = .; + + /DISCARD/ : { + *(.MIPS.*) + } +} diff --git a/sw/bootloader/assets/assets.S b/sw/bootloader/assets/assets.S new file mode 100644 index 0000000..8c43d78 --- /dev/null +++ b/sw/bootloader/assets/assets.S @@ -0,0 +1,4 @@ +.section .assets.@sym@ +.global assets_@sym@ +assets_@sym@: + .incbin "@file@" diff --git a/sw/bootloader/assets/assets.h b/sw/bootloader/assets/assets.h new file mode 100644 index 0000000..d87d654 --- /dev/null +++ b/sw/bootloader/assets/assets.h @@ -0,0 +1,11 @@ +#ifndef ASSETS_H__ +#define ASSETS_H__ + + +#include + + +extern const uint32_t assets_sc64_logo_640_240_dimmed __attribute__((section(".assets"))); + + +#endif diff --git a/sw/bootloader/assets/sc64_logo_640_240_dimmed.png b/sw/bootloader/assets/sc64_logo_640_240_dimmed.png new file mode 100644 index 0000000..e31e936 Binary files /dev/null and b/sw/bootloader/assets/sc64_logo_640_240_dimmed.png differ diff --git a/sw/n64/src/boot.c b/sw/bootloader/src/boot.c similarity index 88% rename from sw/n64/src/boot.c rename to sw/bootloader/src/boot.c index 756aa93..0b540d4 100644 --- a/sw/n64/src/boot.c +++ b/sw/bootloader/src/boot.c @@ -1,7 +1,6 @@ #include "boot.h" #include "crc32.h" -#include "sc64.h" -#include "sys.h" +#include "io.h" extern uint32_t ipl2 __attribute__((section(".data"))); @@ -21,6 +20,7 @@ static const ipl3_crc32_t ipl3_crc32[] = { { .crc32 = 0x0B050EE0, .seed = 0x78, .version = 0 }, // x103 { .crc32 = 0x98BC2C86, .seed = 0x91, .version = 0 }, // x105 { .crc32 = 0xACC8580A, .seed = 0x85, .version = 0 }, // x106 + { .crc32 = 0x0E018159, .seed = 0xDD, .version = 0 }, // 5167 { .crc32 = 0x10C68B18, .seed = 0xDD, .version = 0 }, // NDXJ0 { .crc32 = 0xBC605D0A, .seed = 0xDD, .version = 0 }, // NDDJ0 { .crc32 = 0x502C4466, .seed = 0xDD, .version = 0 }, // NDDJ1 @@ -58,7 +58,6 @@ bool boot_get_tv_type (boot_info_t *info) { break; default: - LOG_E("Unknown region: [0x%02X]\r\n", region); return false; } @@ -68,14 +67,9 @@ bool boot_get_tv_type (boot_info_t *info) { bool boot_get_cic_seed_version (boot_info_t *info) { io32_t *base = boot_get_device_base(info); - uint32_t ipl3[1008]; + uint32_t ipl3[1008] __attribute__((aligned(8))); - io32_t *ipl3_src = &base[16]; - uint32_t *ipl3_dst = ipl3; - - for (int i = 0; i < sizeof(ipl3); i += sizeof(uint32_t)) { - *ipl3_dst++ = pi_io_read(ipl3_src++); - } + pi_dma_read(&base[16], ipl3, sizeof(ipl3)); uint32_t crc32 = crc32_calculate(ipl3, sizeof(ipl3)); @@ -87,14 +81,10 @@ bool boot_get_cic_seed_version (boot_info_t *info) { } } - LOG_E("Unknown IPL3 CRC32: [0x%08lX]\r\n", crc32); - return false; } void boot (boot_info_t *info) { - c0_set_status(C0_SR_CU1 | C0_SR_CU0 | C0_SR_FR); - OS_INFO->mem_size_6105 = OS_INFO->mem_size; while (!(io_read(&SP->SR) & SP_SR_HALT)); diff --git a/sw/n64/src/boot.h b/sw/bootloader/src/boot.h similarity index 60% rename from sw/n64/src/boot.h rename to sw/bootloader/src/boot.h index 09e3e1c..504e379 100644 --- a/sw/n64/src/boot.h +++ b/sw/bootloader/src/boot.h @@ -32,23 +32,6 @@ typedef struct { } boot_info_t; -typedef struct { - uint32_t tv_type; - uint32_t device_type; - uint32_t device_base; - uint32_t reset_type; - uint32_t cic_id; - uint32_t version; - uint32_t mem_size; - uint8_t app_nmi_buffer[64]; - uint32_t __reserved_1[37]; - uint32_t mem_size_6105; -} os_info_t; - -#define OS_INFO_BASE (0x80000300UL) -#define OS_INFO ((os_info_t *) OS_INFO_BASE) - - bool boot_get_tv_type (boot_info_t *info); bool boot_get_cic_seed_version (boot_info_t *info); void boot (boot_info_t *info); diff --git a/sw/n64/src/crc32.c b/sw/bootloader/src/crc32.c similarity index 100% rename from sw/n64/src/crc32.c rename to sw/bootloader/src/crc32.c diff --git a/sw/n64/src/crc32.h b/sw/bootloader/src/crc32.h similarity index 100% rename from sw/n64/src/crc32.h rename to sw/bootloader/src/crc32.h diff --git a/sw/bootloader/src/display.c b/sw/bootloader/src/display.c new file mode 100644 index 0000000..2288d58 --- /dev/null +++ b/sw/bootloader/src/display.c @@ -0,0 +1,148 @@ +#include +#include "display.h" +#include "font.h" +#include "io.h" + + +#define SCREEN_WIDTH (640) +#define SCREEN_HEIGHT (240) +#define BORDER_WIDTH (64) +#define BORDER_HEIGHT (24) + +#define BACKGROUND_COLOR (0x00000000UL) +#define TEXT_COLOR (0xFFFFFFFFUL) +#define LINE_SPACING (2) + + +static io32_t display_framebuffer[SCREEN_WIDTH * SCREEN_HEIGHT] __attribute__((section(".framebuffer"))); +static int char_x; +static int char_y; +static const vi_regs_t vi_config[] = {{ + .CR = ( + VI_CR_PIXEL_ADVANCE_1 | + VI_CR_PIXEL_ADVANCE_0 | + VI_CR_ANTIALIAS_1 | + VI_CR_ANTIALIAS_0 | + VI_CR_TYPE_32 + ), + .H_WIDTH = SCREEN_WIDTH, + .V_INTR = 0x000003FF, + .CURR_LINE = 0x00000000, + .TIMING = 0x0404233A, + .V_SYNC = 0x00000271, + .H_SYNC = 0x00150C69, + .H_SYNC_LEAP = 0x0C6F0C6E, + .H_LIMITS = 0x00800300, + .V_LIMITS = 0x005D023D, + .COLOR_BURST = 0x00090268, + .H_SCALE = 0x00000400, + .V_SCALE = 0x00000400, +}, { + .CR = ( + VI_CR_PIXEL_ADVANCE_1 | + VI_CR_PIXEL_ADVANCE_0 | + VI_CR_ANTIALIAS_1 | + VI_CR_ANTIALIAS_0 | + VI_CR_TYPE_32 + ), + .H_WIDTH = SCREEN_WIDTH, + .V_INTR = 0x000003FF, + .CURR_LINE = 0x00000000, + .TIMING = 0x03E52239, + .V_SYNC = 0x0000020D, + .H_SYNC = 0x00000C15, + .H_SYNC_LEAP = 0x0C150C15, + .H_LIMITS = 0x006C02EC, + .V_LIMITS = 0x00230203, + .COLOR_BURST = 0x000E0204, + .H_SCALE = 0x00000400, + .V_SCALE = 0x00000400, +}}; + + +static void display_draw_character (char c) { + if (c == '\n') { + char_x = BORDER_WIDTH; + char_y += FONT_HEIGHT + LINE_SPACING; + return; + } + + if ((char_x + FONT_WIDTH) > (SCREEN_WIDTH - BORDER_WIDTH)) { + char_x = BORDER_WIDTH; + char_y += FONT_HEIGHT + LINE_SPACING; + } + + if ((c < ' ') || (c > '~')) { + c = '\x7F'; + } + + for (int i = 0; i < (FONT_WIDTH * FONT_HEIGHT); i++) { + int c_x = char_x + (i % FONT_WIDTH); + int c_y = char_y + (i / FONT_WIDTH); + + if ((c_x >= (SCREEN_WIDTH - BORDER_WIDTH)) || (c_y >= (SCREEN_HEIGHT - BORDER_HEIGHT))) { + break; + } + + if (font_data[c - ' '][i / 8] & (1 << (i % 8))) { + int screen_offset = c_x + (c_y * SCREEN_WIDTH); + io_write(&display_framebuffer[screen_offset], TEXT_COLOR); + } + } + + char_x += FONT_WIDTH; +} + +static void display_draw_string (const char *s) { + while (*s != '\0') { + display_draw_character(*s++); + } +} + + +void display_init (uint32_t *background) { + const vi_regs_t *cfg = &vi_config[OS_INFO->tv_type]; + + char_x = BORDER_WIDTH; + char_y = BORDER_HEIGHT; + + if (background == NULL) { + for (int i = 0; i < (SCREEN_WIDTH * SCREEN_HEIGHT); i++) { + io_write(&display_framebuffer[i], BACKGROUND_COLOR); + } + } else { + for (int i = 0; i < (SCREEN_WIDTH * SCREEN_HEIGHT); i++) { + io_write(&display_framebuffer[i], *background++); + } + } + + io_write(&VI->MADDR, (uint32_t) (display_framebuffer)); + io_write(&VI->H_WIDTH, cfg->H_WIDTH); + io_write(&VI->V_INTR, cfg->V_INTR); + io_write(&VI->CURR_LINE, cfg->CURR_LINE); + io_write(&VI->TIMING, cfg->TIMING); + io_write(&VI->V_SYNC, cfg->V_SYNC); + io_write(&VI->H_SYNC, cfg->H_SYNC); + io_write(&VI->H_SYNC_LEAP, cfg->H_SYNC_LEAP); + io_write(&VI->H_LIMITS, cfg->H_LIMITS); + io_write(&VI->V_LIMITS, cfg->V_LIMITS); + io_write(&VI->COLOR_BURST, cfg->COLOR_BURST); + io_write(&VI->H_SCALE, cfg->H_SCALE); + io_write(&VI->V_SCALE, cfg->V_SCALE); + io_write(&VI->CR, cfg->CR); +} + +void display_vprintf (const char *fmt, va_list args) { + char line[256]; + + vsniprintf(line, sizeof(line), fmt, args); + display_draw_string(line); +} + +void display_printf (const char* fmt, ...) { + va_list args; + + va_start(args, fmt); + display_vprintf(fmt, args); + va_end(args); +} diff --git a/sw/bootloader/src/display.h b/sw/bootloader/src/display.h new file mode 100644 index 0000000..0ef73e3 --- /dev/null +++ b/sw/bootloader/src/display.h @@ -0,0 +1,14 @@ +#ifndef DISPLAY_H__ +#define DISPLAY_H__ + + +#include +#include + + +void display_init (uint32_t *background); +void display_vprintf (const char *fmt, va_list args); +void display_printf (const char* fmt, ...); + + +#endif diff --git a/sw/bootloader/src/error.c b/sw/bootloader/src/error.c new file mode 100644 index 0000000..c76c080 --- /dev/null +++ b/sw/bootloader/src/error.c @@ -0,0 +1,13 @@ +#include +#include "exception.h" + + +void error_display (const char *fmt, ...) { + va_list args; + + va_start(args, fmt); + EXCEPTION_TRIGGER(TRIGGER_CODE_ERROR); + va_end(args); + + while (1); +} diff --git a/sw/bootloader/src/error.h b/sw/bootloader/src/error.h new file mode 100644 index 0000000..af9a504 --- /dev/null +++ b/sw/bootloader/src/error.h @@ -0,0 +1,8 @@ +#ifndef ERROR_H__ +#define ERROR_H__ + + +void error_display (const char *fmt, ...); + + +#endif diff --git a/sw/bootloader/src/exception.S b/sw/bootloader/src/exception.S new file mode 100644 index 0000000..0919434 --- /dev/null +++ b/sw/bootloader/src/exception.S @@ -0,0 +1,235 @@ +#include "vr4300.h" + + +#define WATCHDOG_TIMEOUT (5 * (93750000UL / 2)) + +#define VECTOR_LOCATION (0xA0000000UL) +#define VECTOR_SIZE (0x80) +#define VECTOR_NUM (4) + +#define AT_OFFSET (8) +#define V0_OFFSET (16) +#define V1_OFFSET (24) +#define A0_OFFSET (32) +#define A1_OFFSET (40) +#define A2_OFFSET (48) +#define A3_OFFSET (56) +#define T0_OFFSET (64) +#define T1_OFFSET (72) +#define T2_OFFSET (80) +#define T3_OFFSET (88) +#define T4_OFFSET (96) +#define T5_OFFSET (104) +#define T6_OFFSET (112) +#define T7_OFFSET (120) +#define S0_OFFSET (128) +#define S1_OFFSET (136) +#define S2_OFFSET (144) +#define S3_OFFSET (152) +#define S4_OFFSET (160) +#define S5_OFFSET (168) +#define S6_OFFSET (176) +#define S7_OFFSET (184) +#define T8_OFFSET (192) +#define T9_OFFSET (200) +#define K0_OFFSET (208) +#define K1_OFFSET (216) +#define GP_OFFSET (224) +#define SP_OFFSET (232) +#define S8_OFFSET (240) +#define RA_OFFSET (248) +#define C0_STATUS_OFFSET (256) +#define C0_CAUSE_OFFSET (260) +#define C0_EPC_OFFSET (264) +#define C0_BADVADDR_OFFSET (272) +#define SAVE_REGISTERS_SIZE (280) + + +.section .text.exception_handler +exception_handler: + .set noat + la $k0, (_esp - SAVE_REGISTERS_SIZE) + sd $at, AT_OFFSET($k0) + sd $v0, V0_OFFSET($k0) + sd $v1, V1_OFFSET($k0) + sd $a0, A0_OFFSET($k0) + sd $a1, A1_OFFSET($k0) + sd $a2, A2_OFFSET($k0) + sd $a3, A3_OFFSET($k0) + sd $t0, T0_OFFSET($k0) + sd $t1, T1_OFFSET($k0) + sd $t2, T2_OFFSET($k0) + sd $t3, T3_OFFSET($k0) + sd $t4, T4_OFFSET($k0) + sd $t5, T5_OFFSET($k0) + sd $t6, T6_OFFSET($k0) + sd $t7, T7_OFFSET($k0) + sd $s0, S0_OFFSET($k0) + sd $s1, S1_OFFSET($k0) + sd $s2, S2_OFFSET($k0) + sd $s3, S3_OFFSET($k0) + sd $s4, S4_OFFSET($k0) + sd $s5, S5_OFFSET($k0) + sd $s6, S6_OFFSET($k0) + sd $s7, S7_OFFSET($k0) + sd $t8, T8_OFFSET($k0) + sd $t9, T9_OFFSET($k0) + sd $gp, GP_OFFSET($k0) + sd $sp, SP_OFFSET($k0) + sd $s8, S8_OFFSET($k0) + sd $ra, RA_OFFSET($k0) + .set at + + move $sp, $k0 + +exception_check_type: + mfc0 $a0, C0_CAUSE + sw $a0, C0_CAUSE_OFFSET($k0) + move $a1, $a0 + move $t0, $a0 + andi $t0, C0_CR_IP7 + andi $a0, C0_CR_EC_MASK + srl $a0, $a0, C0_CR_EC_BIT + andi $a1, C0_CR_IP_MASK + srl $a1, $a1, C0_CR_IP_BIT + bne $t0, $zero, exception_fatal + beq $a0, $zero, exception_interrupt + +exception_fatal: + sd $k0, K0_OFFSET($k0) + sd $k1, K1_OFFSET($k0) + mfc0 $t0, C0_STATUS + sw $t0, C0_STATUS_OFFSET($k0) + dmfc0 $t0, C0_EPC + sd $t0, C0_EPC_OFFSET($k0) + dmfc0 $t0, C0_BADVADDR + sd $t0, C0_BADVADDR_OFFSET($k0) + move $a2, $k0 + la $t1, exception_fatal_handler + jalr $t1 + ld $t0, C0_EPC_OFFSET($k0) + dmtc0 $t0, C0_EPC + j exception_restore + +exception_interrupt: + la $t1, exception_interrupt_handler + jalr $t1 + +exception_restore: + .set noat + ld $at, AT_OFFSET($k0) + ld $v0, V0_OFFSET($k0) + ld $v1, V1_OFFSET($k0) + ld $a0, A0_OFFSET($k0) + ld $a1, A1_OFFSET($k0) + ld $a2, A2_OFFSET($k0) + ld $a3, A3_OFFSET($k0) + ld $t0, T0_OFFSET($k0) + ld $t1, T1_OFFSET($k0) + ld $t2, T2_OFFSET($k0) + ld $t3, T3_OFFSET($k0) + ld $t4, T4_OFFSET($k0) + ld $t5, T5_OFFSET($k0) + ld $t6, T6_OFFSET($k0) + ld $t7, T7_OFFSET($k0) + ld $s0, S0_OFFSET($k0) + ld $s1, S1_OFFSET($k0) + ld $s2, S2_OFFSET($k0) + ld $s3, S3_OFFSET($k0) + ld $s4, S4_OFFSET($k0) + ld $s5, S5_OFFSET($k0) + ld $s6, S6_OFFSET($k0) + ld $s7, S7_OFFSET($k0) + ld $t8, T8_OFFSET($k0) + ld $t9, T9_OFFSET($k0) + ld $gp, GP_OFFSET($k0) + ld $sp, SP_OFFSET($k0) + ld $s8, S8_OFFSET($k0) + ld $ra, RA_OFFSET($k0) + .set at + + eret + + +.section .text.exception_vector +exception_vector: + .set noreorder + la $k0, exception_handler + jalr $k1, $k0 + nop + .equ exception_vector_size, (. - exception_vector) + .set reorder + + +.section .text.exception_install +exception_install: + .global exception_install + la $t0, exception_vector + li $t1, VECTOR_LOCATION + li $t2, (VECTOR_SIZE * VECTOR_NUM) + add $t2, $t2, $t1 +1: + move $t3, $t0 + move $t4, $t1 + li $t5, exception_vector_size + add $t5, $t5, $t4 +2: + lw $t6, 0($t3) + addiu $t3, 4 + sw $t6, 0($t4) + addiu $t4, 4 + bne $t4, $t5, 2b + addiu $t1, VECTOR_SIZE + bne $t1, $t2, 1b + li $t0, VECTOR_LOCATION + li $t1, (VECTOR_SIZE * VECTOR_NUM) + add $t1, $t0, $t1 +3: + cache HIT_INVALIDATE_I, 0($t0) + addiu $t0, CACHE_LINE_SIZE_I + bne $t0, $t1, 3b + jr $ra + + +.section .text.exception_enable_interrupts +exception_enable_interrupts: + .global exception_enable_interrupts + mfc0 $t0, C0_STATUS + li $t1, C0_SR_IE + or $t0, $t0, $t1 + mtc0 $t0, C0_STATUS + jr $ra + + +.section .text.exception_disable_interrupts +exception_disable_interrupts: + .global exception_disable_interrupts + mfc0 $t0, C0_STATUS + li $t1, ~(C0_SR_IE) + and $t0, $t0, $t1 + mtc0 $t0, C0_STATUS + jr $ra + + +.section .text.exception_enable_watchdog +exception_enable_watchdog: + .global exception_enable_watchdog + mtc0 $zero, C0_COUNT + li $t1, WATCHDOG_TIMEOUT + mtc0 $t1, C0_COMPARE + mfc0 $t0, C0_STATUS + li $t1, C0_SR_IM7 + or $t0, $t0, $t1 + mtc0 $t0, C0_STATUS + jr $ra + + +.section .text.exception_disable_watchdog +exception_disable_watchdog: + .global exception_disable_watchdog + mfc0 $t0, C0_STATUS + li $t1, ~(C0_SR_IM7) + and $t0, $t0, $t1 + mtc0 $t0, C0_STATUS + mtc0 $zero, C0_COMPARE + jr $ra diff --git a/sw/bootloader/src/exception.c b/sw/bootloader/src/exception.c new file mode 100644 index 0000000..9c967ee --- /dev/null +++ b/sw/bootloader/src/exception.c @@ -0,0 +1,83 @@ +#include +#include "display.h" +#include "exception_regs.h" +#include "exception.h" +#include "io.h" +#include "version.h" +#include "vr4300.h" +#include "../assets/assets.h" + + +#define EXCEPTION_INTERRUPT (0) +#define EXCEPTION_SYSCALL (8) + +#define INTERRUPT_MASK_TIMER (1 << 7) + +#define SYSCALL_CODE_MASK (0x03FFFFC0UL) +#define SYSCALL_CODE_BIT (6) + + +static const char *exception_get_description (uint8_t exception_code) { + switch (exception_code) { + case 0: return "Interrupt"; + case 1: return "TLB Modification exception"; + case 2: return "TLB Miss exception (load or instruction fetch)"; + case 3: return "TLB Miss exception (store)"; + case 4: return "Address Error exception (load or instruction fetch)"; + case 5: return "Address Error exception (store)"; + case 6: return "Bus Error exception (instruction fetch)"; + case 7: return "Bus Error exception (data reference: load or store)"; + case 8: return "Syscall exception"; + case 9: return "Breakpoint exception"; + case 10: return "Reserved Instruction exception"; + case 11: return "Coprocessor Unusable exception"; + case 12: return "Arithmetic Overflow exception"; + case 13: return "Trap exception"; + case 15: return "Floating-Point exception"; + case 23: return "Watch exception"; + } + + return "Unknown exception"; +} + + +void exception_fatal_handler (uint32_t exception_code, uint32_t interrupt_mask, exception_t *e) { + version_t *version = version_get(); + uint32_t *instruction_address = (((uint32_t *) (e->epc.u32)) + ((e->cr & C0_CR_BD) ? 1 : 0)); + + display_init((uint32_t *) (&assets_sc64_logo_640_240_dimmed)); + + display_printf("branch: %s | tag: %s\n", version->git_branch, version->git_tag); + display_printf("sha: %s\n", version->git_sha); + display_printf("%s\n\n", version->git_message); + + display_printf("%s\n", exception_get_description(exception_code)); + display_printf(" pc: 0x%08lX sr: 0x%08lX cr: 0x%08lX va: 0x%08lX\n", e->epc.u32, e->sr, e->cr, e->badvaddr.u32); + display_printf(" zr: 0x%08lX at: 0x%08lX v0: 0x%08lX v1: 0x%08lX\n", e->zr.u32, e->at.u32, e->v0.u32, e->v1.u32); + display_printf(" a0: 0x%08lX a1: 0x%08lX a2: 0x%08lX a3: 0x%08lX\n", e->a0.u32, e->a1.u32, e->a2.u32, e->a3.u32); + display_printf(" t0: 0x%08lX t1: 0x%08lX t2: 0x%08lX t3: 0x%08lX\n", e->t0.u32, e->t1.u32, e->t2.u32, e->t3.u32); + display_printf(" t4: 0x%08lX t5: 0x%08lX t6: 0x%08lX t7: 0x%08lX\n", e->t4.u32, e->t5.u32, e->t6.u32, e->t7.u32); + display_printf(" s0: 0x%08lX s1: 0x%08lX s2: 0x%08lX s3: 0x%08lX\n", e->s0.u32, e->s1.u32, e->s2.u32, e->s3.u32); + display_printf(" s4: 0x%08lX s5: 0x%08lX s6: 0x%08lX s7: 0x%08lX\n", e->s4.u32, e->s5.u32, e->s6.u32, e->s7.u32); + display_printf(" t8: 0x%08lX t9: 0x%08lX k0: 0x%08lX k1: 0x%08lX\n", e->t8.u32, e->t9.u32, e->k0.u32, e->k1.u32); + display_printf(" gp: 0x%08lX sp: 0x%08lX s8: 0x%08lX ra: 0x%08lX\n\n", e->gp.u32, e->sp.u32, e->s8.u32, e->ra.u32); + + if (exception_code == EXCEPTION_INTERRUPT) { + if (interrupt_mask & INTERRUPT_MASK_TIMER) { + exception_disable_watchdog(); + display_printf("Still loading after 5 second limit...\n\n"); + return; + } + } else if (exception_code == EXCEPTION_SYSCALL) { + uint32_t code = (((*instruction_address) & SYSCALL_CODE_MASK) >> SYSCALL_CODE_BIT); + + if (code == TRIGGER_CODE_ERROR) { + const char *fmt = (const char *) (e->a0.u32); + va_list args = *((va_list *) (e->sp.u32)); + display_vprintf(fmt, args); + display_printf("\n"); + } + } + + while (1); +} diff --git a/sw/bootloader/src/exception.h b/sw/bootloader/src/exception.h new file mode 100644 index 0000000..7b3873e --- /dev/null +++ b/sw/bootloader/src/exception.h @@ -0,0 +1,17 @@ +#ifndef EXCEPTION_H__ +#define EXCEPTION_H__ + + +#define TRIGGER_CODE_ERROR (0) + +#define EXCEPTION_TRIGGER(code) { asm volatile ("syscall %[c]\n" :: [c] "i" (code)); } + + +void exception_install (void); +void exception_enable_interrupts (void); +void exception_disable_interrupts (void); +void exception_enable_watchdog (void); +void exception_disable_watchdog (void); + + +#endif diff --git a/sw/bootloader/src/exception_regs.h b/sw/bootloader/src/exception_regs.h new file mode 100644 index 0000000..6e23421 --- /dev/null +++ b/sw/bootloader/src/exception_regs.h @@ -0,0 +1,56 @@ +#ifndef EXCEPTION_REGS_H__ +#define EXCEPTION_REGS_H__ + + +#include + + +typedef union { + uint64_t u64; + struct { + uint32_t u32_h; + uint32_t u32; + }; +} uint64_32_t; + +typedef struct { + uint64_32_t zr; + uint64_32_t at; + uint64_32_t v0; + uint64_32_t v1; + uint64_32_t a0; + uint64_32_t a1; + uint64_32_t a2; + uint64_32_t a3; + uint64_32_t t0; + uint64_32_t t1; + uint64_32_t t2; + uint64_32_t t3; + uint64_32_t t4; + uint64_32_t t5; + uint64_32_t t6; + uint64_32_t t7; + uint64_32_t s0; + uint64_32_t s1; + uint64_32_t s2; + uint64_32_t s3; + uint64_32_t s4; + uint64_32_t s5; + uint64_32_t s6; + uint64_32_t s7; + uint64_32_t t8; + uint64_32_t t9; + uint64_32_t k0; + uint64_32_t k1; + uint64_32_t gp; + uint64_32_t sp; + uint64_32_t s8; + uint64_32_t ra; + uint32_t sr; + uint32_t cr; + uint64_32_t epc; + uint64_32_t badvaddr; +} exception_t; + + +#endif diff --git a/sw/n64/src/fatfs/00history.txt b/sw/bootloader/src/fatfs/00history.txt similarity index 100% rename from sw/n64/src/fatfs/00history.txt rename to sw/bootloader/src/fatfs/00history.txt diff --git a/sw/n64/src/fatfs/00readme.txt b/sw/bootloader/src/fatfs/00readme.txt similarity index 100% rename from sw/n64/src/fatfs/00readme.txt rename to sw/bootloader/src/fatfs/00readme.txt diff --git a/sw/bootloader/src/fatfs/diskio.c b/sw/bootloader/src/fatfs/diskio.c new file mode 100644 index 0000000..445496a --- /dev/null +++ b/sw/bootloader/src/fatfs/diskio.c @@ -0,0 +1,119 @@ +#include +#include "ff.h" +#include "diskio.h" +#include "../io.h" +#include "../sc64.h" +#include "../error.h" + + +#define SD_SECTOR_SIZE (512) +#define BUFFER_BLOCKS_MAX (sizeof(SC64_BUFFERS->BUFFER) / SD_SECTOR_SIZE) +#define FROM_BCD(x) ((((x >> 4) & 0x0F) * 10) + (x & 0x0F)) + + +static DSTATUS status = STA_NOINIT; + + +DSTATUS disk_status (BYTE pdrv) { + if (pdrv > 0) { + return STA_NODISK; + } + return status; +} + +DSTATUS disk_initialize (BYTE pdrv) { + if (pdrv > 0) { + return STA_NODISK; + } + if (!sc64_sd_card_init()) { + status &= ~(STA_NOINIT); + } + return status; +} + +DRESULT disk_read (BYTE pdrv, BYTE *buff, LBA_t sector, UINT count) { + if (pdrv > 0) { + return RES_PARERR; + } + uint32_t *physical_address = (uint32_t *) (PHYSICAL(buff)); + if (physical_address < (uint32_t *) (N64_RAM_SIZE)) { + uint8_t aligned_buffer[BUFFER_BLOCKS_MAX * SD_SECTOR_SIZE] __attribute__((aligned(8))); + while (count > 0) { + uint32_t blocks = ((count > BUFFER_BLOCKS_MAX) ? BUFFER_BLOCKS_MAX : count); + size_t length = (blocks * SD_SECTOR_SIZE); + if (sc64_sd_read_sectors((uint32_t *) (SC64_BUFFERS->BUFFER), sector, blocks)) { + return RES_ERROR; + } + if (((uint32_t) (buff) % 8) == 0) { + pi_dma_read((io32_t *) (SC64_BUFFERS->BUFFER), buff, length); + } else { + pi_dma_read((io32_t *) (SC64_BUFFERS->BUFFER), aligned_buffer, length); + memcpy(buff, aligned_buffer, length); + } + buff += length; + sector += blocks; + count -= blocks; + } + } else { + if (sc64_sd_read_sectors(physical_address, sector, count)) { + return RES_ERROR; + } + } + return RES_OK; +} + +#if !FF_FS_READONLY +DRESULT disk_write (BYTE pdrv, const BYTE* buff, LBA_t sector, UINT count) { + if (pdrv > 0) { + return RES_PARERR; + } + uint32_t *physical_address = (uint32_t *) (PHYSICAL(buff)); + if (physical_address < (uint32_t *) (N64_RAM_SIZE)) { + uint8_t aligned_buffer[BUFFER_BLOCKS_MAX * SD_SECTOR_SIZE] __attribute__((aligned(8))); + while (count > 0) { + uint32_t blocks = ((count > BUFFER_BLOCKS_MAX) ? BUFFER_BLOCKS_MAX : count); + size_t length = (blocks * SD_SECTOR_SIZE); + if (((uint32_t) (buff) % 8) == 0) { + pi_dma_write((io32_t *) (SC64_BUFFERS->BUFFER), (void *) (buff), length); + } else { + memcpy(aligned_buffer, buff, length); + pi_dma_write((io32_t *) (SC64_BUFFERS->BUFFER), aligned_buffer, length); + } + if (sc64_sd_write_sectors((uint32_t *) (SC64_BUFFERS->BUFFER), sector, blocks)) { + return RES_ERROR; + } + buff += length; + sector += blocks; + count -= blocks; + } + } else { + if (sc64_sd_write_sectors(physical_address, sector, count)) { + return RES_ERROR; + } + } + return RES_OK; +} +#endif + +DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void *buff) { + if (pdrv > 0) { + return RES_PARERR; + } + if (cmd == CTRL_SYNC) { + return RES_OK; + } + return RES_PARERR; +} + +DWORD get_fattime(void) { + rtc_time_t t; + sc64_get_time(&t); + return ( + ((FROM_BCD(t.year) + 20) << 25) | + (FROM_BCD(t.month) << 21) | + (FROM_BCD(t.day) << 16) | + (FROM_BCD(t.hour) << 11) | + (FROM_BCD(t.minute) << 5) | + (FROM_BCD(t.second) >> 1) + ); +} diff --git a/sw/n64/src/fatfs/diskio.h b/sw/bootloader/src/fatfs/diskio.h similarity index 100% rename from sw/n64/src/fatfs/diskio.h rename to sw/bootloader/src/fatfs/diskio.h diff --git a/sw/n64/src/fatfs/ff.c b/sw/bootloader/src/fatfs/ff.c similarity index 100% rename from sw/n64/src/fatfs/ff.c rename to sw/bootloader/src/fatfs/ff.c diff --git a/sw/n64/src/fatfs/ff.h b/sw/bootloader/src/fatfs/ff.h similarity index 100% rename from sw/n64/src/fatfs/ff.h rename to sw/bootloader/src/fatfs/ff.h diff --git a/sw/n64/src/fatfs/ffconf.h b/sw/bootloader/src/fatfs/ffconf.h similarity index 96% rename from sw/n64/src/fatfs/ffconf.h rename to sw/bootloader/src/fatfs/ffconf.h index 076be51..330c993 100644 --- a/sw/n64/src/fatfs/ffconf.h +++ b/sw/bootloader/src/fatfs/ffconf.h @@ -8,14 +8,14 @@ / Function Configurations /---------------------------------------------------------------------------*/ -#define FF_FS_READONLY 1 +#define FF_FS_READONLY 0 /* This option switches read-only configuration. (0:Read/Write or 1:Read-only) / Read-only configuration removes writing API functions, f_write(), f_sync(), / f_unlink(), f_mkdir(), f_chmod(), f_rename(), f_truncate(), f_getfree() / and optional writing functions as well. */ -#define FF_FS_MINIMIZE 1 +#define FF_FS_MINIMIZE 2 /* This option defines minimization level to remove some basic API functions. / / 0: Basic functions are fully enabled. @@ -34,7 +34,7 @@ /* This option switches f_mkfs() function. (0:Disable or 1:Enable) */ -#define FF_USE_FASTSEEK 1 +#define FF_USE_FASTSEEK 0 /* This option switches fast seek function. (0:Disable or 1:Enable) */ @@ -153,7 +153,7 @@ / on character encoding. When LFN is not enabled, these options have no effect. */ -#define FF_FS_RPATH 2 +#define FF_FS_RPATH 0 /* This option configures support for relative path. / / 0: Disable relative path and remove related functions. @@ -166,7 +166,7 @@ / Drive/Volume Configurations /---------------------------------------------------------------------------*/ -#define FF_VOLUMES 2 +#define FF_VOLUMES 1 /* Number of volumes (logical drives) to be used. (1-10) */ @@ -224,7 +224,7 @@ / System Configurations /---------------------------------------------------------------------------*/ -#define FF_FS_TINY 0 +#define FF_FS_TINY 1 /* This option switches tiny buffer configuration. (0:Normal or 1:Tiny) / At the tiny configuration, size of file object (FIL) is shrinked FF_MAX_SS bytes. / Instead of private sector buffer eliminated from the file object, common sector @@ -237,7 +237,7 @@ / Note that enabling exFAT discards ANSI C (C89) compatibility. */ -#define FF_FS_NORTC 1 +#define FF_FS_NORTC 0 #define FF_NORTC_MON 1 #define FF_NORTC_MDAY 1 #define FF_NORTC_YEAR 2020 diff --git a/sw/n64/src/fatfs/ffsystem.c b/sw/bootloader/src/fatfs/ffsystem.c similarity index 100% rename from sw/n64/src/fatfs/ffsystem.c rename to sw/bootloader/src/fatfs/ffsystem.c diff --git a/sw/n64/src/fatfs/ffunicode.c b/sw/bootloader/src/fatfs/ffunicode.c similarity index 100% rename from sw/n64/src/fatfs/ffunicode.c rename to sw/bootloader/src/fatfs/ffunicode.c diff --git a/sw/bootloader/src/font.c b/sw/bootloader/src/font.c new file mode 100644 index 0000000..0732a3f --- /dev/null +++ b/sw/bootloader/src/font.c @@ -0,0 +1,103 @@ +// Manually converted font "Dogica" from https://www.dafont.com/dogica.font + +#include "font.h" + + +const uint8_t font_data[96][FONT_CHAR_BYTES] = { + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }, + { 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x00, }, + { 0x00, 0x6C, 0x6C, 0x36, 0x00, 0x00, 0x00, 0x00, }, + { 0x00, 0x6C, 0xFE, 0x6C, 0x6C, 0xFE, 0x6C, 0x00, }, + { 0x00, 0x7C, 0xD6, 0x16, 0x7C, 0xD0, 0xD6, 0x7C, }, + { 0x62, 0x35, 0x37, 0x1A, 0x58, 0xAC, 0xEC, 0x46, }, + { 0x1C, 0x36, 0x36, 0x1C, 0xF6, 0x66, 0xFC, 0x00, }, + { 0x00, 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, }, + { 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x00, }, + { 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x00, }, + { 0x00, 0x18, 0x7E, 0x3C, 0x7E, 0x18, 0x00, 0x00, }, + { 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x18, }, + { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, }, + { 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0C, 0x0C, }, + { 0x3C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, }, + { 0x18, 0x1E, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, }, + { 0x3C, 0x66, 0x60, 0x30, 0x18, 0x0C, 0x7E, 0x00, }, + { 0x3E, 0x60, 0x60, 0x3C, 0x60, 0x60, 0x3E, 0x00, }, + { 0x30, 0x38, 0x3C, 0x36, 0x7E, 0x30, 0x30, 0x00, }, + { 0x7E, 0x06, 0x3E, 0x60, 0x60, 0x66, 0x3C, 0x00, }, + { 0x3C, 0x66, 0x06, 0x3E, 0x66, 0x66, 0x3C, 0x00, }, + { 0x7E, 0x66, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x00, }, + { 0x3C, 0x66, 0x66, 0x3C, 0x66, 0x66, 0x3C, 0x00, }, + { 0x3C, 0x66, 0x66, 0x7C, 0x60, 0x30, 0x1C, 0x00, }, + { 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, }, + { 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x30, 0x18, }, + { 0x00, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x00, 0x00, }, + { 0x00, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x00, 0x00, }, + { 0x00, 0x18, 0x30, 0x60, 0x30, 0x18, 0x00, 0x00, }, + { 0x3C, 0x66, 0x60, 0x38, 0x0C, 0x00, 0x18, 0x00, }, + { 0x3E, 0x63, 0x7F, 0x7B, 0x3F, 0xC3, 0x7E, 0x00, }, + { 0x3C, 0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x00, }, + { 0x3E, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3E, 0x00, }, + { 0x3C, 0x66, 0x06, 0x06, 0x06, 0x66, 0x3C, 0x00, }, + { 0x3F, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, }, + { 0x7E, 0x06, 0x06, 0x3E, 0x06, 0x06, 0x7E, 0x00, }, + { 0x7E, 0x06, 0x06, 0x3E, 0x06, 0x06, 0x06, 0x00, }, + { 0x7C, 0x06, 0x06, 0x76, 0x66, 0x66, 0x7C, 0x00, }, + { 0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00, }, + { 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, }, + { 0x3E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0E, 0x00, }, + { 0x66, 0x36, 0x1E, 0x1E, 0x36, 0x36, 0x66, 0x00, }, + { 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x7C, 0x00, }, + { 0xC6, 0xC6, 0xEE, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, }, + { 0x66, 0x6E, 0x7E, 0x76, 0x66, 0x66, 0x66, 0x00, }, + { 0x3C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, }, + { 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x06, 0x00, }, + { 0x3C, 0x66, 0x66, 0x66, 0x6E, 0x36, 0x7C, 0x00, }, + { 0x3E, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x66, 0x00, }, + { 0x3C, 0x66, 0x06, 0x3C, 0x60, 0x66, 0x3C, 0x00, }, + { 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, }, + { 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, }, + { 0x66, 0x66, 0x66, 0x66, 0x3C, 0x3C, 0x18, 0x00, }, + { 0xC3, 0xC3, 0xDB, 0xDB, 0xDB, 0xFF, 0x66, 0x00, }, + { 0x66, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x66, 0x00, }, + { 0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x00, }, + { 0x7E, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x7E, 0x00, }, + { 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x00, }, + { 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, }, + { 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x00, }, + { 0x00, 0x38, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, }, + { 0x00, 0x18, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, }, + { 0x00, 0x3C, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x00, }, + { 0x06, 0x06, 0x3E, 0x66, 0x66, 0x66, 0x3E, 0x00, }, + { 0x00, 0x3C, 0x66, 0x06, 0x06, 0x06, 0x7C, 0x00, }, + { 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x7C, 0x00, }, + { 0x00, 0x3C, 0x66, 0x7E, 0x06, 0x06, 0x7C, 0x00, }, + { 0x78, 0x0C, 0x0C, 0x3E, 0x0C, 0x0C, 0x0C, 0x00, }, + { 0x00, 0x7C, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x3C, }, + { 0x06, 0x06, 0x3E, 0x6E, 0x66, 0x66, 0x66, 0x00, }, + { 0x18, 0x00, 0x1C, 0x18, 0x18, 0x18, 0x3C, 0x00, }, + { 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0C, }, + { 0x00, 0x66, 0x36, 0x1E, 0x1E, 0x36, 0x66, 0x00, }, + { 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x38, 0x00, }, + { 0x00, 0x7E, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x00, }, + { 0x00, 0x38, 0x6E, 0x66, 0x66, 0x66, 0x66, 0x00, }, + { 0x00, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, }, + { 0x00, 0x3E, 0x66, 0x66, 0x66, 0x3E, 0x06, 0x06, }, + { 0x00, 0x7C, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, }, + { 0x00, 0x78, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, }, + { 0x00, 0x3C, 0x06, 0x3C, 0x60, 0x66, 0x3C, 0x00, }, + { 0x0C, 0x0C, 0x7C, 0x0C, 0x0C, 0x0C, 0x78, 0x00, }, + { 0x00, 0x66, 0x66, 0x66, 0x66, 0x76, 0x7C, 0x00, }, + { 0x00, 0x66, 0x66, 0x66, 0x3C, 0x3C, 0x18, 0x00, }, + { 0x00, 0xC0, 0xDB, 0xDB, 0xDB, 0xDB, 0x7E, 0x00, }, + { 0x00, 0x66, 0x3C, 0x18, 0x18, 0x3C, 0x66, 0x00, }, + { 0x00, 0x6C, 0x6C, 0x6C, 0x38, 0x30, 0x1C, 0x00, }, + { 0x00, 0x7C, 0x60, 0x30, 0x18, 0x0C, 0x7C, 0x00, }, + { 0x30, 0x58, 0x08, 0x0C, 0x0C, 0x08, 0x58, 0x30, }, + { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, }, + { 0x18, 0x34, 0x20, 0x60, 0x60, 0x20, 0x34, 0x18, }, + { 0x00, 0x00, 0x00, 0xDC, 0x76, 0x00, 0x00, 0x00, }, + { 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, }, +}; diff --git a/sw/bootloader/src/font.h b/sw/bootloader/src/font.h new file mode 100644 index 0000000..350d070 --- /dev/null +++ b/sw/bootloader/src/font.h @@ -0,0 +1,16 @@ +#ifndef FONT_H__ +#define FONT_H__ + + +#include + + +#define FONT_WIDTH (8) +#define FONT_HEIGHT (8) +#define FONT_CHAR_BYTES (8) + + +extern const uint8_t font_data[96][FONT_CHAR_BYTES]; + + +#endif diff --git a/sw/bootloader/src/init.c b/sw/bootloader/src/init.c new file mode 100644 index 0000000..a2e38dc --- /dev/null +++ b/sw/bootloader/src/init.c @@ -0,0 +1,35 @@ +#include "error.h" +#include "exception.h" +#include "io.h" +#include "sc64.h" +#include "test.h" + + +void init (void) { + uint32_t pifram = si_io_read((io32_t *) (&PIFRAM[0x3C])); + si_io_write((io32_t *) (&PIFRAM[0x3C]), pifram | 0x08); + + exception_install(); + + sc64_unlock(); + + if (!sc64_check_presence()) { + error_display("SC64 hardware not detected"); + } + + exception_enable_watchdog(); + exception_enable_interrupts(); + + if (test_check()) { + exception_disable_watchdog(); + test_execute(); + } + + sc64_set_config(CFG_ID_BOOTLOADER_SWITCH, false); +} + +void deinit (void) { + exception_disable_interrupts(); + exception_disable_watchdog(); + sc64_lock(); +} diff --git a/sw/bootloader/src/init.h b/sw/bootloader/src/init.h new file mode 100644 index 0000000..d6c2dc2 --- /dev/null +++ b/sw/bootloader/src/init.h @@ -0,0 +1,9 @@ +#ifndef INIT_H__ +#define INIT_H__ + + +void init (void); +void deinit (void); + + +#endif diff --git a/sw/bootloader/src/interrupt.c b/sw/bootloader/src/interrupt.c new file mode 100644 index 0000000..95d6a47 --- /dev/null +++ b/sw/bootloader/src/interrupt.c @@ -0,0 +1,6 @@ +#include "exception_regs.h" + + +void exception_interrupt_handler (uint32_t exception_code, uint32_t interrupt_mask, exception_t *e) { + while (1); +} diff --git a/sw/bootloader/src/io.c b/sw/bootloader/src/io.c new file mode 100644 index 0000000..d3fa90a --- /dev/null +++ b/sw/bootloader/src/io.c @@ -0,0 +1,80 @@ +#include "io.h" +#include "vr4300.h" + + +static void cache_operation (uint8_t operation, uint8_t line_size, void *address, size_t length) { + uint32_t cache_address = (((uint32_t) (address)) & (~(line_size - 1))); + while (cache_address < ((uint32_t) (address) + length)) { + asm volatile ( + "cache %[operation], (%[cache_address]) \n" :: + [operation] "i" (operation), + [cache_address] "r" (cache_address) + ); + cache_address += line_size; + } +} + +void cache_data_hit_writeback_invalidate (void *address, size_t length) { + cache_operation(HIT_WRITE_BACK_INVALIDATE_D, CACHE_LINE_SIZE_D, address, length); +} + +void cache_data_hit_writeback (void *address, size_t length) { + cache_operation(HIT_WRITE_BACK_D, CACHE_LINE_SIZE_D, address, length); +} + +void cache_inst_hit_invalidate (void *address, size_t length) { + cache_operation(HIT_INVALIDATE_I, CACHE_LINE_SIZE_I, address, length); +} + +uint32_t io_read (io32_t *address) { + io32_t *uncached = UNCACHED(address); + uint32_t value = *uncached; + return value; +} + +void io_write (io32_t *address, uint32_t value) { + io32_t *uncached = UNCACHED(address); + *uncached = value; +} + +uint32_t pi_busy (void) { + return (io_read(&PI->SR) & (PI_SR_IO_BUSY | PI_SR_DMA_BUSY)); +} + +uint32_t pi_io_read (io32_t *address) { + return io_read(address); +} + +void pi_io_write (io32_t *address, uint32_t value) { + io_write(address, value); + while (pi_busy()); +} + +void pi_dma_read (io32_t *address, void *buffer, size_t length) { + cache_data_hit_writeback_invalidate(buffer, length); + io_write(&PI->PADDR, (uint32_t) (PHYSICAL(address))); + io_write(&PI->MADDR, (uint32_t) (PHYSICAL(buffer))); + io_write(&PI->WDMA, length - 1); + while (pi_busy()); +} + +void pi_dma_write (io32_t *address, void *buffer, size_t length) { + cache_data_hit_writeback(buffer, length); + io_write(&PI->PADDR, (uint32_t) (PHYSICAL(address))); + io_write(&PI->MADDR, (uint32_t) (PHYSICAL(buffer))); + io_write(&PI->RDMA, length - 1); + while (pi_busy()); +} + +uint32_t si_busy (void) { + return (io_read(&SI->SR) & (SI_SR_IO_BUSY | SI_SR_DMA_BUSY)); +} + +uint32_t si_io_read (io32_t *address) { + return io_read(address); +} + +void si_io_write (io32_t *address, uint32_t value) { + io_write(address, value); + while (si_busy()); +} diff --git a/sw/n64/src/sys.h b/sw/bootloader/src/io.h similarity index 75% rename from sw/n64/src/sys.h rename to sw/bootloader/src/io.h index 9bf29b1..03d3a18 100644 --- a/sw/n64/src/sys.h +++ b/sw/bootloader/src/io.h @@ -1,5 +1,5 @@ -#ifndef SYS_H__ -#define SYS_H__ +#ifndef IO_H__ +#define IO_H__ #include @@ -12,41 +12,10 @@ typedef volatile uint32_t io32_t; #define ALIGN(value, align) (((value) + ((typeof(value))(align) - 1)) & ~((typeof(value))(align) - 1)) +#define PHYSICAL(address) ((typeof(address)) (((io32_t) (address)) & (0x1FFFFFFFUL))) #define UNCACHED(address) ((typeof(address)) (((io32_t) (address)) | (0xA0000000UL))) -#define CPU_FREQUENCY (93750000UL) - - -#define C0_SR_CU3 (1 << 31) -#define C0_SR_CU2 (1 << 30) -#define C0_SR_CU1 (1 << 29) -#define C0_SR_CU0 (1 << 28) -#define C0_SR_RP (1 << 27) -#define C0_SR_FR (1 << 26) -#define C0_SR_RE (1 << 25) -#define C0_SR_DS_ITS (1 << 24) -#define C0_SR_DS_BEV (1 << 22) -#define C0_SR_DS_TS (1 << 21) -#define C0_SR_DS_SR (1 << 20) -#define C0_SR_DS_CH (1 << 18) -#define C0_SR_DS_CE (1 << 17) -#define C0_SR_DS_DE (1 << 16) -#define C0_SR_IM7 (1 << 15) -#define C0_SR_IM6 (1 << 14) -#define C0_SR_IM5 (1 << 13) -#define C0_SR_IM4 (1 << 12) -#define C0_SR_IM3 (1 << 11) -#define C0_SR_IM2 (1 << 10) -#define C0_SR_IM1 (1 << 9) -#define C0_SR_IM0 (1 << 8) -#define C0_SR_KX (1 << 7) -#define C0_SR_SX (1 << 6) -#define C0_SR_UX (1 << 5) -#define C0_SR_KSU1 (1 << 4) -#define C0_SR_KSU0 (1 << 3) -#define C0_SR_EXR (1 << 2) -#define C0_SR_EXL (1 << 1) -#define C0_SR_IE (1 << 0) +#define N64_RAM_SIZE (0x00800000UL) typedef struct { @@ -179,6 +148,10 @@ typedef struct { #define VI_CR_SERRATE_ON (1 << 6) #define VI_CR_ANTIALIAS_0 (1 << 8) #define VI_CR_ANTIALIAS_1 (1 << 9) +#define VI_CR_PIXEL_ADVANCE_0 (1 << 12) +#define VI_CR_PIXEL_ADVANCE_1 (1 << 13) +#define VI_CR_PIXEL_ADVANCE_2 (1 << 14) +#define VI_CR_PIXEL_ADVANCE_3 (1 << 15) #define VI_CR_DITHER_FILTER_ON (1 << 16) @@ -245,6 +218,8 @@ typedef struct { #define ROM_DDIPL_BASE (0x06000000UL) #define ROM_DDIPL ((io32_t *) ROM_DDIPL_BASE) + + #define ROM_CART_BASE (0x10000000UL) #define ROM_CART ((io32_t *) ROM_CART_BASE) @@ -253,17 +228,67 @@ typedef struct { #define PIFRAM ((io8_t *) PIFRAM_BASE) -void c0_set_status (uint32_t status); -uint32_t c0_get_count (void); -void wait_ms (uint32_t ms); +typedef struct { + io8_t BUFFER[8192]; + io8_t EEPROM[2048]; + io8_t DD_SECTOR[256]; + io8_t FLASHRAM[128]; +} sc64_buffers_t; + +#define SC64_BUFFERS_BASE (0x1FFE0000UL) +#define SC64_BUFFERS ((sc64_buffers_t *) SC64_BUFFERS_BASE) + + +typedef struct { + io32_t SR_CMD; + io32_t DATA[2]; + io32_t VERSION; + io32_t KEY; +} sc64_regs_t; + +#define SC64_REGS_BASE (0x1FFF0000UL) +#define SC64_REGS ((sc64_regs_t *) SC64_REGS_BASE) + +#define SC64_SR_IRQ_PENDING (1 << 29) +#define SC64_SR_CMD_ERROR (1 << 30) +#define SC64_SR_CPU_BUSY (1 << 31) + +#define SC64_KEY_RESET (0x00000000UL) +#define SC64_KEY_UNLOCK_1 (0x5F554E4CUL) +#define SC64_KEY_UNLOCK_2 (0x4F434B5FUL) +#define SC64_KEY_LOCK (0xFFFFFFFFUL) + + +typedef struct { + uint32_t tv_type; + uint32_t device_type; + uint32_t device_base; + uint32_t reset_type; + uint32_t cic_id; + uint32_t version; + uint32_t mem_size; + uint8_t app_nmi_buffer[64]; + uint32_t __reserved_1[37]; + uint32_t mem_size_6105; +} os_info_t; + +#define OS_INFO_BASE (0x80000300UL) +#define OS_INFO ((os_info_t *) OS_INFO_BASE) + + uint32_t io_read (io32_t *address); void io_write (io32_t *address, uint32_t value); uint32_t pi_busy (void); uint32_t pi_io_read (io32_t *address); void pi_io_write (io32_t *address, uint32_t value); +void pi_dma_read (io32_t *address, void *buffer, size_t length); +void pi_dma_write (io32_t *address, void *buffer, size_t length); uint32_t si_busy (void); uint32_t si_io_read (io32_t *address); void si_io_write (io32_t *address, uint32_t value); +void cache_data_hit_writeback_invalidate (void *address, size_t length); +void cache_data_hit_writeback (void *address, size_t length); +void cache_inst_hit_invalidate (void *address, size_t length); #endif diff --git a/sw/bootloader/src/ipl2.S b/sw/bootloader/src/ipl2.S new file mode 100644 index 0000000..abf4f4b --- /dev/null +++ b/sw/bootloader/src/ipl2.S @@ -0,0 +1,15 @@ +.set noat +.set noreorder + +.section .data.ipl2 +ipl2: + .global ipl2 + lui $t5, 0xBFC0 +1: + lw $t0, 0x7FC($t5) + addiu $t5, $t5, 0x7C0 + andi $t0, $t0, 0x80 + bnel $t0, $zero, 1b + lui $t5, 0xBFC0 + lw $t0, 0x24($t5) + lui $t3, 0xB000 diff --git a/sw/bootloader/src/main.c b/sw/bootloader/src/main.c new file mode 100644 index 0000000..88e1944 --- /dev/null +++ b/sw/bootloader/src/main.c @@ -0,0 +1,56 @@ +#include "boot.h" +#include "error.h" +#include "init.h" +#include "io.h" +#include "menu.h" +#include "sc64.h" + + +void main (void) { + boot_info_t boot_info; + sc64_boot_info_t sc64_boot_info; + + sc64_get_boot_info(&sc64_boot_info); + + switch (sc64_boot_info.boot_mode) { + case BOOT_MODE_MENU: + menu_load_and_run(); + break; + + case BOOT_MODE_ROM: + boot_info.device_type = BOOT_DEVICE_TYPE_ROM; + break; + + case BOOT_MODE_DDIPL: + boot_info.device_type = BOOT_DEVICE_TYPE_DD; + break; + + default: + error_display("Unknown boot mode selected [%d]\n", sc64_boot_info.boot_mode); + break; + } + + boot_info.reset_type = OS_INFO->reset_type; + + if (sc64_boot_info.tv_type != TV_TYPE_UNKNOWN) { + boot_info.tv_type = sc64_boot_info.tv_type; + } else { + if (!boot_get_tv_type(&boot_info)) { + boot_info.tv_type = OS_INFO->tv_type; + } + } + + if (sc64_boot_info.cic_seed != CIC_SEED_UNKNOWN) { + boot_info.cic_seed = sc64_boot_info.cic_seed & 0xFF; + boot_info.version = (sc64_boot_info.cic_seed >> 8) & 0x01; + } else { + if (!boot_get_cic_seed_version(&boot_info)) { + boot_info.cic_seed = 0x3F; + boot_info.version = 0; + } + } + + deinit(); + + boot(&boot_info); +} diff --git a/sw/bootloader/src/menu.c b/sw/bootloader/src/menu.c new file mode 100644 index 0000000..e5a8756 --- /dev/null +++ b/sw/bootloader/src/menu.c @@ -0,0 +1,73 @@ +#include "error.h" +#include "fatfs/ff.h" +#include "init.h" +#include "io.h" +#include "menu.h" + + +#define ROM_ENTRY_OFFSET (8) +#define ROM_CODE_OFFSET (4096) +#define ROM_MAX_LOAD_SIZE (1 * 1024 * 1024) + + +static const char *fatfs_error_codes[] = { + "Succeeded", + "A hard error occurred in the low level disk I/O layer", + "Assertion failed", + "The physical drive cannot work", + "Could not find the file", + "Could not find the path", + "The path name format is invalid", + "Access denied due to prohibited access or directory full", + "Access denied due to prohibited access", + "The file/directory object is invalid", + "The physical drive is write protected", + "The logical drive number is invalid", + "The volume has no work area", + "There is no valid FAT volume", + "The f_mkfs() aborted due to any problem", + "Could not get a grant to access the volume within defined period", + "The operation is rejected according to the file sharing policy", + "LFN working buffer could not be allocated", + "Number of open files > FF_FS_LOCK", + "Given parameter is invalid", +}; + + +#define FF_CHECK(x, message, ...) { \ + fresult = x; \ + if (fresult != FR_OK) { \ + error_display(message " [%s]:\n %s\n", __VA_ARGS__ __VA_OPT__(,) #x, fatfs_error_codes[fresult]); \ + } \ +} + + +void menu_load_and_run (void) { + void (* menu)(void); + FRESULT fresult; + FATFS fs; + FIL fil; + UINT br; + FSIZE_t size = ROM_MAX_LOAD_SIZE; + + FF_CHECK(f_mount(&fs, "", 1), "Couldn't mount drive"); + FF_CHECK(f_open(&fil, "sc64menu.n64", FA_READ), "Couldn't open menu file"); + FF_CHECK(f_lseek(&fil, ROM_ENTRY_OFFSET), "Couldn't seek to entry point offset"); + FF_CHECK(f_read(&fil, &menu, sizeof(menu), &br), "Couldn't read entry point"); + FF_CHECK(f_lseek(&fil, ROM_CODE_OFFSET), "Couldn't seek to code start offset"); + if ((f_size(&fil) - ROM_CODE_OFFSET) < size) { + size = (f_size(&fil) - ROM_CODE_OFFSET); + } + FF_CHECK(f_read(&fil, menu, size, &br), "Couldn't read menu file"); + FF_CHECK(br != size, "Read size is different than expected"); + FF_CHECK(f_close(&fil), "Couldn't close menu file"); + FF_CHECK(f_unmount(""), "Couldn't unmount drive"); + + cache_inst_hit_invalidate(menu, size); + + deinit(); + + menu(); + + while (1); +} diff --git a/sw/bootloader/src/menu.h b/sw/bootloader/src/menu.h new file mode 100644 index 0000000..505608b --- /dev/null +++ b/sw/bootloader/src/menu.h @@ -0,0 +1,8 @@ +#ifndef MENU_H__ +#define MENU_H__ + + +void menu_load_and_run (void); + + +#endif diff --git a/sw/bootloader/src/sc64.c b/sw/bootloader/src/sc64.c new file mode 100644 index 0000000..b452878 --- /dev/null +++ b/sw/bootloader/src/sc64.c @@ -0,0 +1,212 @@ +#include "io.h" +#include "sc64.h" + + +#define SC64_VERSION_2 (0x53437632) + + +typedef enum { + SC64_CMD_VERSION_GET = 'v', + SC64_CMD_CONFIG_SET = 'C', + SC64_CMD_CONFIG_GET = 'c', + SC64_CMD_TIME_SET = 'T', + SC64_CMD_TIME_GET = 't', + SC64_CMD_USB_WRITE_STATUS = 'U', + SC64_CMD_USB_WRITE = 'M', + SC64_CMD_USB_READ_STATUS = 'u', + SC64_CMD_USB_READ = 'm', + SC64_CMD_SD_CARD_OP = 'i', + SC64_CMD_SD_SECTOR_SET = 'I', + SC64_CMD_SD_WRITE = 'S', + SC64_CMD_SD_READ = 's', + SC64_CMD_DD_SD_DISK_INFO = 'D', + SC64_CMD_FLASH_ERASE_BLOCK = 'P', + SC64_CMD_FLASH_WAIT_BUSY = 'p', +} cmd_id_t; + +typedef enum { + SD_CARD_OP_DEINIT = 0, + SD_CARD_OP_INIT = 1, + SD_CARD_OP_GET_STATUS = 2, + SD_CARD_OP_GET_INFO = 3, +} sd_card_op_t; + + +static bool sc64_wait_cpu_busy (void) { + uint32_t sr; + do { + sr = pi_io_read(&SC64_REGS->SR_CMD); + } while (sr & SC64_SR_CPU_BUSY); + return (sr & SC64_SR_CMD_ERROR); +} + +static bool sc64_execute_cmd (uint8_t cmd, uint32_t *args, uint32_t *result) { + sc64_wait_cpu_busy(); + if (args != NULL) { + pi_io_write(&SC64_REGS->DATA[0], args[0]); + pi_io_write(&SC64_REGS->DATA[1], args[1]); + } + pi_io_write(&SC64_REGS->SR_CMD, ((uint32_t) (cmd)) & 0xFF); + bool error = sc64_wait_cpu_busy(); + if (result != NULL) { + result[0] = pi_io_read(&SC64_REGS->DATA[0]); + result[1] = pi_io_read(&SC64_REGS->DATA[1]); + } + return error; +} + +void sc64_unlock (void) { + pi_io_write(&SC64_REGS->KEY, SC64_KEY_RESET); + pi_io_write(&SC64_REGS->KEY, SC64_KEY_UNLOCK_1); + pi_io_write(&SC64_REGS->KEY, SC64_KEY_UNLOCK_2); +} + +void sc64_lock (void) { + pi_io_write(&SC64_REGS->KEY, SC64_KEY_RESET); + pi_io_write(&SC64_REGS->KEY, SC64_KEY_LOCK); +} + +bool sc64_check_presence (void) { + uint32_t version = pi_io_read(&SC64_REGS->VERSION); + return (version == SC64_VERSION_2); +} + +cmd_error_t sc64_get_error (void) { + if (pi_io_read(&SC64_REGS->SR_CMD) & SC64_SR_CMD_ERROR) { + return (cmd_error_t) pi_io_read(&SC64_REGS->DATA[0]); + } + return CMD_OK; +} + +void sc64_set_config (cfg_id_t id, uint32_t value) { + uint32_t args[2] = { id, value }; + sc64_execute_cmd(SC64_CMD_CONFIG_SET, args, NULL); +} + +uint32_t sc64_get_config (cfg_id_t id) { + uint32_t args[2] = { id, 0 }; + uint32_t result[2]; + sc64_execute_cmd(SC64_CMD_CONFIG_GET, args, result); + return result[1]; +} + +void sc64_get_boot_info (sc64_boot_info_t *info) { + info->cic_seed = (uint16_t) sc64_get_config(CFG_ID_CIC_SEED); + info->tv_type = (tv_type_t) sc64_get_config(CFG_ID_TV_TYPE); + info->boot_mode = (boot_mode_t) sc64_get_config(CFG_ID_BOOT_MODE); +} + +void sc64_set_time (rtc_time_t *t) { + uint32_t args[2] = { + ((t->hour << 16) | (t->minute << 8) | t->second), + ((t->weekday << 24) | (t->year << 16) | (t->month << 8) | t->day), + }; + sc64_execute_cmd(SC64_CMD_TIME_SET, args, NULL); +} + +void sc64_get_time (rtc_time_t *t) { + uint32_t result[2]; + sc64_execute_cmd(SC64_CMD_TIME_GET, NULL, result); + t->second = (result[0] & 0xFF); + t->minute = ((result[0] >> 8) & 0xFF); + t->hour = ((result[0] >> 16) & 0xFF); + t->weekday = ((result[1] >> 24) & 0xFF); + t->day = (result[1] & 0xFF); + t->month = ((result[1] >> 8) & 0xFF); + t->year = ((result[1] >> 16) & 0xFF); +} + +bool sc64_usb_write_ready (void) { + uint32_t result[2]; + sc64_execute_cmd(SC64_CMD_USB_WRITE_STATUS, NULL, result); + return (!(result[0] & (1 << 31))); +} + +bool sc64_usb_write (uint32_t *address, uint8_t type, uint32_t length) { + while (!sc64_usb_write_ready()); + uint32_t args[2] = { (uint32_t) (address), ((type << 24) | (length & 0xFFFFFF)) }; + return sc64_execute_cmd(SC64_CMD_USB_WRITE, args, NULL); +} + +bool sc64_usb_read_ready (uint8_t *type, uint32_t *length) { + uint32_t result[2]; + sc64_execute_cmd(SC64_CMD_USB_READ_STATUS, NULL, result); + if (type != NULL) { + *type = result[0] & 0xFF; + } + if (length != NULL) { + *length = result[1]; + } + return (result[1] > 0); +} + +bool sc64_usb_read (uint32_t *address, uint32_t length) { + uint32_t args[2] = { (uint32_t) (address), length }; + uint32_t result[2]; + if (sc64_execute_cmd(SC64_CMD_USB_READ, args, NULL)) { + return true; + } + do { + sc64_execute_cmd(SC64_CMD_USB_READ_STATUS, NULL, result); + } while(result[0] & (1 << 31)); + return false; +} + +bool sc64_sd_card_init (void) { + uint32_t args[2] = { 0, SD_CARD_OP_INIT }; + if (sc64_execute_cmd(SC64_CMD_SD_CARD_OP, args, NULL)) { + return true; + } + return false; +} + +bool sc64_sd_card_deinit (void) { + uint32_t args[2] = { 0, SD_CARD_OP_DEINIT }; + if (sc64_execute_cmd(SC64_CMD_SD_CARD_OP, args, NULL)) { + return true; + } + return false; +} + +sd_card_status_t sc64_sd_card_get_status (void) { + uint32_t args[2] = { 0, SD_CARD_OP_GET_STATUS }; + uint32_t result[2]; + if (sc64_execute_cmd(SC64_CMD_SD_CARD_OP, args, result)) { + return false; + } + return (sd_card_status_t) (result[1]); +} + +bool sc64_sd_card_get_info (uint32_t *address) { + uint32_t args[2] = { (uint32_t) (address), SD_CARD_OP_GET_INFO }; + if (sc64_execute_cmd(SC64_CMD_SD_CARD_OP, args, NULL)) { + return true; + } + return false; +} + +bool sc64_sd_write_sectors (uint32_t *address, uint32_t sector, uint32_t count) { + uint32_t sector_set_args[2] = { sector, 0 }; + uint32_t write_args[2] = { (uint32_t) (address), count }; + if (sc64_execute_cmd(SC64_CMD_SD_SECTOR_SET, sector_set_args, NULL)) { + return true; + } + return sc64_execute_cmd(SC64_CMD_SD_WRITE, write_args, NULL); +} + +bool sc64_sd_read_sectors (uint32_t *address, uint32_t sector, uint32_t count) { + uint32_t sector_set_args[2] = { sector, 0 }; + uint32_t read_args[2] = { (uint32_t) (address), count }; + if (sc64_execute_cmd(SC64_CMD_SD_SECTOR_SET, sector_set_args, NULL)) { + return true; + } + return sc64_execute_cmd(SC64_CMD_SD_READ, read_args, NULL); +} + +bool sc64_dd_set_sd_disk_info (uint32_t *address, uint32_t length) { + uint32_t args[2] = { (uint32_t) (address), length }; + if (sc64_execute_cmd(SC64_CMD_DD_SD_DISK_INFO, args, NULL)) { + return true; + } + return false; +} diff --git a/sw/bootloader/src/sc64.h b/sw/bootloader/src/sc64.h new file mode 100644 index 0000000..70e5e9e --- /dev/null +++ b/sw/bootloader/src/sc64.h @@ -0,0 +1,122 @@ +#ifndef SC64_H__ +#define SC64_H__ + + +#include +#include + + +typedef enum { + CMD_OK = 0, + CMD_ERROR_BAD_ADDRESS = 1, + CMD_ERROR_BAD_CONFIG_ID = 2, + CMD_ERROR_TIMEOUT = 3, + CMD_ERROR_UNKNOWN_CMD = -1, +} cmd_error_t; + +typedef enum { + CFG_ID_BOOTLOADER_SWITCH, + CFG_ID_ROM_WRITE_ENABLE, + CFG_ID_ROM_SHADOW_ENABLE, + CFG_ID_DD_MODE, + CFG_ID_ISV_ENABLE, + CFG_ID_BOOT_MODE, + CFG_ID_SAVE_TYPE, + CFG_ID_CIC_SEED, + CFG_ID_TV_TYPE, + CFG_ID_DD_SD_ENABLE, + CFG_ID_DD_DRIVE_TYPE, + CFG_ID_DD_DISK_STATE, + CFG_ID_BUTTON_STATE, + CFG_ID_BUTTON_MODE, + CFG_ID_ROM_EXTENDED_ENABLE, +} cfg_id_t; + +typedef enum { + DD_MODE_DISABLED = 0, + DD_MODE_REGS = 1, + DD_MODE_IPL = 2, + DD_MODE_FULL = 3 +} dd_mode_t; + +typedef enum { + BOOT_MODE_MENU = 0, + BOOT_MODE_ROM = 1, + BOOT_MODE_DDIPL = 2, + BOOT_MODE_DIRECT = 3 +} boot_mode_t; + +typedef enum { + SAVE_TYPE_NONE = 0, + SAVE_TYPE_EEPROM_4K = 1, + SAVE_TYPE_EEPROM_16K = 2, + SAVE_TYPE_SRAM = 3, + SAVE_TYPE_FLASHRAM = 4, + SAVE_TYPE_SRAM_BANKED = 5 +} save_type_t; + +typedef enum { + CIC_SEED_UNKNOWN = 0xFFFF +} cic_seed_t; + +typedef enum { + TV_TYPE_PAL = 0, + TV_TYPE_NTSC = 1, + TV_TYPE_MPAL = 2, + TV_TYPE_UNKNOWN = 3 +} tv_type_t; + +typedef enum { + BUTTON_MODE_NONE, + BUTTON_MODE_N64_IRQ, + BUTTON_MODE_USB_PACKET, + BUTTON_MODE_DD_DISK_SWAP, +} button_mode_t; + +typedef enum { + SD_CARD_STATUS_INITIALIZED = (1 << 0), + SD_CARD_STATUS_TYPE_BLOCK = (1 << 1), + SD_CARD_STATUS_50MHZ_MODE = (1 << 2), +} sd_card_status_t; + + +typedef struct { + boot_mode_t boot_mode; + uint16_t cic_seed; + tv_type_t tv_type; +} sc64_boot_info_t; + +typedef struct { + uint8_t second; + uint8_t minute; + uint8_t hour; + uint8_t weekday; + uint8_t day; + uint8_t month; + uint8_t year; +} rtc_time_t; + + +void sc64_unlock (void); +void sc64_lock (void); +bool sc64_check_presence (void); +cmd_error_t sc64_get_error (void); +void sc64_set_config (cfg_id_t id, uint32_t value); +uint32_t sc64_get_config (cfg_id_t id); +void sc64_get_boot_info (sc64_boot_info_t *info); +void sc64_set_time (rtc_time_t *t); +void sc64_get_time (rtc_time_t *t); +bool sc64_usb_write_ready (void); +bool sc64_usb_write (uint32_t *address, uint8_t type, uint32_t length); +bool sc64_usb_read_ready (uint8_t *type, uint32_t *length); +bool sc64_usb_read (uint32_t *address, uint32_t length); +bool sc64_sd_card_init (void); +bool sc64_sd_card_deinit (void); +sd_card_status_t sc64_sd_card_get_status (void); +bool sc64_sd_card_get_info (uint32_t *address); +bool sc64_sd_write_sectors (uint32_t *address, uint32_t sector, uint32_t count); +bool sc64_sd_read_sectors (uint32_t *address, uint32_t sector, uint32_t count); +bool sc64_dd_set_sd_disk_info (uint32_t *address, uint32_t length); + + +#endif diff --git a/sw/n64/src/startup.S b/sw/bootloader/src/startup.S similarity index 52% rename from sw/n64/src/startup.S rename to sw/bootloader/src/startup.S index c875e9f..2b2fe03 100644 --- a/sw/n64/src/startup.S +++ b/sw/bootloader/src/startup.S @@ -1,6 +1,4 @@ -#define STR(x) #x -#define XSTR(s) STR(s) -#define VERSION XSTR(__SC64_VERSION) +#include "vr4300.h" .section .text.rom_header @@ -21,9 +19,7 @@ header_crc: .org 0x20, 0x00 header_text_info: - .global header_text_info - .ascii "SummerLoader64 " - .ascii VERSION + .ascii "SC64 bootloader" .org 0x40, 0x00 @@ -39,7 +35,14 @@ entry_handler: la $gp, _gp la $sp, _sp -run: +bss_init: + la $a0, _sbss + la $a1, _ebss +1: + sd $zero, 0($a0) + addiu $a0, 8 + bltu $a0, $a1, 1b + la $t0, init jalr $t0 @@ -48,19 +51,3 @@ run: loop: j loop - - -.section .text.ipl2 -ipl2: - .global ipl2 - .set noat - .set noreorder - lui $t5, 0xBFC0 -1: - lw $t0, 0x7FC($t5) - addiu $t5, $t5, 0x7C0 - andi $t0, $t0, 0x80 - bnel $t0, $zero, 1b - lui $t5, 0xBFC0 - lw $t0, 0x24($t5) - lui $t3, 0xB000 diff --git a/sw/bootloader/src/syscalls.c b/sw/bootloader/src/syscalls.c new file mode 100644 index 0000000..70c1327 --- /dev/null +++ b/sw/bootloader/src/syscalls.c @@ -0,0 +1,22 @@ +#include +#include + + +extern char _sheap __attribute__((section(".data"))); +extern char _eheap __attribute__((section(".data"))); + + +caddr_t _sbrk_r (struct _reent *prt, ptrdiff_t incr) { + static char *curr_heap_end = &_sheap; + char *prev_heap_end; + + prev_heap_end = curr_heap_end; + curr_heap_end += incr; + + if (curr_heap_end > &_eheap) { + errno = ENOMEM; + return (caddr_t) -1; + } + + return (caddr_t) prev_heap_end; +} diff --git a/sw/bootloader/src/test.c b/sw/bootloader/src/test.c new file mode 100644 index 0000000..5095ccd --- /dev/null +++ b/sw/bootloader/src/test.c @@ -0,0 +1,66 @@ +#include +#include "display.h" +#include "io.h" +#include "sc64.h" +#include "test.h" + + +bool test_check (void) { + if (sc64_get_config(CFG_ID_BUTTON_STATE)) { + return true; + } + return false; +} + +void test_execute (void) { + sd_card_status_t card_status; + uint8_t card_info[32] __attribute__((aligned(8))); + + display_init(NULL); + + display_printf("SC64 Test suite\n\n"); + + if (sc64_sd_card_init()) { + display_printf("SD card init error!\n"); + while (1); + } + + card_status = sc64_sd_card_get_status(); + + if (card_status & SD_CARD_STATUS_INITIALIZED) { + display_printf("SD card initialized\n"); + } + if (card_status & SD_CARD_STATUS_TYPE_BLOCK) { + display_printf("SD card type block\n"); + } + if (card_status & SD_CARD_STATUS_50MHZ_MODE) { + display_printf("SD card 50 MHz clock mode\n"); + } + + if (sc64_sd_card_get_info((uint32_t *) (SC64_BUFFERS->BUFFER))) { + display_printf("SD card get info error!\n"); + while (1); + } + + pi_dma_read((io32_t *) (SC64_BUFFERS->BUFFER), card_info, sizeof(card_info)); + + display_printf("SD Card registers:\n CSD: 0x"); + for (int i = 0; i < 16; i++) { + display_printf("%02X", card_info[i]); + } + display_printf("\n CID: 0x"); + for (int i = 16; i < 32; i++) { + display_printf("%02X", card_info[i]); + } + display_printf("\n "); + for (int i = 16; i < 32; i++) { + display_printf("%c ", card_info[i] >= ' ' ? card_info[i] : 0xFF); + } + + if (sc64_sd_card_deinit()) { + display_printf("SD card deinit error!\n"); + while (1); + } + + while (1); +} diff --git a/sw/bootloader/src/test.h b/sw/bootloader/src/test.h new file mode 100644 index 0000000..a56bcd8 --- /dev/null +++ b/sw/bootloader/src/test.h @@ -0,0 +1,12 @@ +#ifndef TEST_H__ +#define TEST_H__ + + +#include + + +bool test_check (void); +void test_execute (void); + + +#endif diff --git a/sw/bootloader/src/version.c b/sw/bootloader/src/version.c new file mode 100644 index 0000000..645dfc8 --- /dev/null +++ b/sw/bootloader/src/version.c @@ -0,0 +1,30 @@ +#include "version.h" + + +static version_t version = { +#ifdef GIT_BRANCH + .git_branch = GIT_BRANCH, +#else +#warning "No GIT_BRANCH provided" +#endif +#ifdef GIT_TAG + .git_tag = GIT_TAG, +#else +#warning "No GIT_TAG provided" +#endif +#ifdef GIT_SHA + .git_sha = GIT_SHA, +#else +#warning "No GIT_SHA provided" +#endif +#ifdef GIT_MESSAGE + .git_message = GIT_MESSAGE, +#else +#warning "No GIT_MESSAGE provided" +#endif +}; + + +version_t *version_get (void) { + return &version; +} diff --git a/sw/bootloader/src/version.h b/sw/bootloader/src/version.h new file mode 100644 index 0000000..8b875ed --- /dev/null +++ b/sw/bootloader/src/version.h @@ -0,0 +1,16 @@ +#ifndef VERSION_H__ +#define VERSION_H__ + + +typedef const struct { + const char *git_branch; + const char *git_tag; + const char *git_sha; + const char *git_message; +} version_t; + + +const version_t *version_get (void); + + +#endif diff --git a/sw/bootloader/src/vr4300.h b/sw/bootloader/src/vr4300.h new file mode 100644 index 0000000..58b3617 --- /dev/null +++ b/sw/bootloader/src/vr4300.h @@ -0,0 +1,75 @@ +#ifndef VR4300_H__ +#define VR4300_H__ + + +#define HIT_INVALIDATE_I ((4 << 2) | 0) +#define HIT_WRITE_BACK_INVALIDATE_D ((5 << 2) | 1) +#define HIT_WRITE_BACK_D ((6 << 2) | 1) + +#define CACHE_LINE_SIZE_I (32) +#define CACHE_LINE_SIZE_D (16) + +#define C0_BADVADDR $8 +#define C0_COUNT $9 +#define C0_COMPARE $11 +#define C0_STATUS $12 +#define C0_CAUSE $13 +#define C0_EPC $14 + + +#define C0_SR_IE (1 << 0) +#define C0_SR_EXL (1 << 1) +#define C0_SR_EXR (1 << 2) +#define C0_SR_KSU0 (1 << 3) +#define C0_SR_KSU1 (1 << 4) +#define C0_SR_UX (1 << 5) +#define C0_SR_SX (1 << 6) +#define C0_SR_KX (1 << 7) +#define C0_SR_IM0 (1 << 8) +#define C0_SR_IM1 (1 << 9) +#define C0_SR_IM2 (1 << 10) +#define C0_SR_IM3 (1 << 11) +#define C0_SR_IM4 (1 << 12) +#define C0_SR_IM5 (1 << 13) +#define C0_SR_IM6 (1 << 14) +#define C0_SR_IM7 (1 << 15) +#define C0_SR_DS_DE (1 << 16) +#define C0_SR_DS_CE (1 << 17) +#define C0_SR_DS_CH (1 << 18) +#define C0_SR_DS_SR (1 << 20) +#define C0_SR_DS_TS (1 << 21) +#define C0_SR_DS_BEV (1 << 22) +#define C0_SR_DS_ITS (1 << 24) +#define C0_SR_RE (1 << 25) +#define C0_SR_FR (1 << 26) +#define C0_SR_RP (1 << 27) +#define C0_SR_CU0 (1 << 28) +#define C0_SR_CU1 (1 << 29) +#define C0_SR_CU2 (1 << 30) +#define C0_SR_CU3 (1 << 31) + + +#define C0_CR_EC0 (1 << 2) +#define C0_CR_EC1 (1 << 3) +#define C0_CR_EC2 (1 << 4) +#define C0_CR_EC3 (1 << 5) +#define C0_CR_EC4 (1 << 6) +#define C0_CR_IP0 (1 << 8) +#define C0_CR_IP1 (1 << 9) +#define C0_CR_IP2 (1 << 10) +#define C0_CR_IP3 (1 << 11) +#define C0_CR_IP4 (1 << 12) +#define C0_CR_IP5 (1 << 13) +#define C0_CR_IP6 (1 << 14) +#define C0_CR_IP7 (1 << 15) +#define C0_CR_CE0 (1 << 28) +#define C0_CR_CE1 (1 << 29) +#define C0_CR_BD (1 << 31) + +#define C0_CR_EC_MASK (C0_CR_EC4 | C0_CR_EC3 | C0_CR_EC2 | C0_CR_EC1 | C0_CR_EC0) +#define C0_CR_EC_BIT (2) +#define C0_CR_IP_MASK (C0_CR_IP7 | C0_CR_IP6 | C0_CR_IP5 | C0_CR_IP4 | C0_CR_IP3 | C0_CR_IP2 | C0_CR_IP1 | C0_CR_IP0) +#define C0_CR_IP_BIT (8) + + +#endif diff --git a/sw/bootloader/tools/asset_converter.py b/sw/bootloader/tools/asset_converter.py new file mode 100644 index 0000000..7341eb2 --- /dev/null +++ b/sw/bootloader/tools/asset_converter.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 + +import sys +from PIL import Image + + + +if __name__ == "__main__": + if (len(sys.argv) != 3): + print(f"Usage: python {sys.argv[0]} input_path output_path") + sys.exit(1) + + asset_input = sys.argv[1] + asset_output = sys.argv[2] + + source_asset = None + final_asset = None + + try: + source_asset = Image.open(asset_input) + converted_asset = source_asset.convert("RGBA") + final_asset = open(asset_output, "wb") + final_asset.write(converted_asset.tobytes()) + except FileNotFoundError: + print(f"Couldn't open file \"{asset_input}\"") + sys.exit(2) + except Exception as e: + print(e) + sys.exit(3) + finally: + if (source_asset): + source_asset.close() + if (final_asset): + final_asset.close() diff --git a/sw/bootloader/tools/requirements.txt b/sw/bootloader/tools/requirements.txt new file mode 100644 index 0000000..a6d4d60 --- /dev/null +++ b/sw/bootloader/tools/requirements.txt @@ -0,0 +1 @@ +Pillow==9.2.0 diff --git a/sw/cic b/sw/cic deleted file mode 160000 index 16fd1ee..0000000 --- a/sw/cic +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 16fd1eecd8528ab2d7fd0490f24fb7738017bd39 diff --git a/sw/controller/.gitattributes b/sw/controller/.gitattributes new file mode 100644 index 0000000..18d0af0 --- /dev/null +++ b/sw/controller/.gitattributes @@ -0,0 +1 @@ +lib/** linguist-vendored diff --git a/sw/controller/.gitignore b/sw/controller/.gitignore new file mode 100644 index 0000000..5743e15 --- /dev/null +++ b/sw/controller/.gitignore @@ -0,0 +1,2 @@ +/build +*.svd diff --git a/sw/controller/app.ld b/sw/controller/app.ld new file mode 100644 index 0000000..f90c3fd --- /dev/null +++ b/sw/controller/app.ld @@ -0,0 +1,62 @@ +MEMORY { + loader (rx) : org = 0x08000000, len = 4k + rom (rx) : org = 0x08001000, len = 28k + ram (rwx) : org = 0x20000000, len = 8k +} + +ENTRY(Reset_Handler) + +SECTIONS { + .loader : { + . = ALIGN(4); + KEEP(*(.loader)) + . = ALIGN(4); + } > loader + + .isr_vector : { + . = ALIGN(4); + KEEP(*(.isr_vector)) + . = ALIGN(4); + } > rom + + .text : { + . = ALIGN(4); + *(.text) + *(.text*) + *(.glue_7) + *(.glue_7t) + . = ALIGN(4); + _etext = .; + } > rom + + .bss : { + . = ALIGN(4); + _sbss = .; + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + . = ALIGN(4); + _ebss = .; + __bss_end__ = _ebss; + } > ram + + .data : { + _sidata = LOADADDR(.data); + . = ALIGN(4); + _sdata = .; + *(.data) + *(.data*) + . = ALIGN(4); + _edata = .; + } > ram AT > rom + + .rodata : { + . = ALIGN(4); + *(.rodata) + *(.rodata*) + . = ALIGN(4); + } > rom + + _estack = ORIGIN(ram) + LENGTH(ram); +} diff --git a/sw/controller/app.mk b/sw/controller/app.mk new file mode 100644 index 0000000..c43df45 --- /dev/null +++ b/sw/controller/app.mk @@ -0,0 +1,29 @@ +EXE_NAME = app +LD_SCRIPT = app.ld +BUILD_DIR = build/app +SRC_FILES = \ + app.S \ + app.c \ + button.c \ + cfg.c \ + cic.c \ + dd.c \ + debug.c \ + flash.c \ + flashram.c \ + fpga.c \ + gvr.c \ + hw.c \ + isv.c \ + lcmxo2.c \ + led.c \ + rtc.c \ + sd.c \ + task.c \ + update.c \ + usb.c +PAD_TO = 0x08008000 + +include common.mk + +$(BUILD_DIR)/app.S.o: ../build/loader/loader.bin diff --git a/sw/controller/build.sh b/sw/controller/build.sh new file mode 100755 index 0000000..a969cec --- /dev/null +++ b/sw/controller/build.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +case "$1" in + all) + make all -j -f loader.mk USER_FLAGS="$USER_FLAGS" + make all -j -f app.mk USER_FLAGS="$USER_FLAGS" + ;; + clean) + make clean -f loader.mk + make clean -f app.mk + ;; +esac diff --git a/sw/riscv/Makefile b/sw/controller/common.mk similarity index 55% rename from sw/riscv/Makefile rename to sw/controller/common.mk index 566e32b..bee414e 100644 --- a/sw/riscv/Makefile +++ b/sw/controller/common.mk @@ -1,18 +1,15 @@ -TOOLCHAIN = riscv32-unknown-elf- +TOOLCHAIN = arm-none-eabi- CC = $(TOOLCHAIN)gcc CXX = $(TOOLCHAIN)g++ OBJCOPY = $(TOOLCHAIN)objcopy OBJDUMP = $(TOOLCHAIN)objdump SIZE = $(TOOLCHAIN)size -FLAGS = -mabi=ilp32 -march=rv32i $(USER_FLAGS) -CFLAGS = -Os -Wall -ffunction-sections -fdata-sections -ffreestanding -MMD -MP +FLAGS = -mcpu=cortex-m0plus -mthumb -DSTM32G030xx $(USER_FLAGS) -g -ggdb3 +CFLAGS = -Os -Wall -ffunction-sections -fdata-sections -ffreestanding -MMD -MP -I./lib LDFLAGS = -nostartfiles -Wl,--gc-sections SRC_DIR = src -BUILD_DIR = build - -SRC_FILES = startup.S process.c usb.c cfg.c dma.c joybus.c rtc.c i2c.c flashram.c uart.c flash.c dd.c SRCS = $(addprefix $(SRC_DIR)/, $(SRC_FILES)) OBJS = $(addprefix $(BUILD_DIR)/, $(notdir $(patsubst %,%.o,$(SRCS)))) @@ -28,23 +25,23 @@ $(BUILD_DIR)/%.S.o: %.S $(BUILD_DIR)/%.c.o: %.c $(CC) $(FLAGS) $(CFLAGS) -c $< -o $@ -$(BUILD_DIR)/governor.elf: $(OBJS) SC64.ld - $(CXX) $(FLAGS) $(LDFLAGS) -TSC64.ld $(OBJS) -o $@ - @$(OBJDUMP) -D $@ > $(BUILD_DIR)/governor.lst +$(BUILD_DIR)/$(EXE_NAME).elf: $(OBJS) $(LD_SCRIPT) + $(CXX) $(FLAGS) $(LDFLAGS) -T$(LD_SCRIPT) $(OBJS) -o $@ + @$(OBJDUMP) -S -D $@ > $(BUILD_DIR)/$(EXE_NAME).lst -$(BUILD_DIR)/governor.bin: $(BUILD_DIR)/governor.elf - @$(OBJCOPY) -O binary $< $@ +$(BUILD_DIR)/$(EXE_NAME).bin: $(BUILD_DIR)/$(EXE_NAME).elf + $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to $(PAD_TO) $< $@ -$(BUILD_DIR)/governor.hex: $(BUILD_DIR)/governor.bin +$(BUILD_DIR)/$(EXE_NAME).hex: $(BUILD_DIR)/$(EXE_NAME).bin @$(OBJCOPY) -I binary -O ihex $< $@ -print_size: $(BUILD_DIR)/governor.elf +print_size: $(BUILD_DIR)/$(EXE_NAME).elf @echo 'Size of modules:' @$(SIZE) -B -d -t --common $(OBJS) - @echo 'Size of governor:' + @echo 'Size of $(EXE_NAME):' @$(SIZE) -B -d $< -all: $(BUILD_DIR)/governor.hex print_size +all: $(BUILD_DIR)/$(EXE_NAME).hex print_size clean: @rm -rf ./$(BUILD_DIR)/* diff --git a/sw/controller/lib/cmsis_compiler.h b/sw/controller/lib/cmsis_compiler.h new file mode 100644 index 0000000..21a2c71 --- /dev/null +++ b/sw/controller/lib/cmsis_compiler.h @@ -0,0 +1,283 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler generic header file + * @version V5.1.0 + * @date 09. October 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * 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 + * + * 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. + */ + +#ifndef __CMSIS_COMPILER_H +#define __CMSIS_COMPILER_H + +#include + +/* + * Arm Compiler 4/5 + */ +#if defined ( __CC_ARM ) + #include "cmsis_armcc.h" + + +/* + * Arm Compiler 6.6 LTM (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100) + #include "cmsis_armclang_ltm.h" + + /* + * Arm Compiler above 6.10.1 (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) + #include "cmsis_armclang.h" + + +/* + * GNU Compiler + */ +#elif defined ( __GNUC__ ) + #include "cmsis_gcc.h" + + +/* + * IAR Compiler + */ +#elif defined ( __ICCARM__ ) + #include + + +/* + * TI Arm Compiler + */ +#elif defined ( __TI_ARM__ ) + #include + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __attribute__((packed)) + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed)) + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed)) + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) + #endif + #ifndef __RESTRICT + #define __RESTRICT __restrict + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * TASKING Compiler + */ +#elif defined ( __TASKING__ ) + /* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __packed__ + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __packed__ + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __packed__ + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __packed__ T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __align(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * COSMIC Compiler + */ +#elif defined ( __CSMC__ ) + #include + + #ifndef __ASM + #define __ASM _asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + // NO RETURN is automatically detected hence no warning here + #define __NO_RETURN + #endif + #ifndef __USED + #warning No compiler specific solution for __USED. __USED is ignored. + #define __USED + #endif + #ifndef __WEAK + #define __WEAK __weak + #endif + #ifndef __PACKED + #define __PACKED @packed + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT @packed struct + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION @packed union + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + @packed struct T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. + #define __ALIGNED(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +#else + #error Unknown compiler. +#endif + + +#endif /* __CMSIS_COMPILER_H */ + diff --git a/sw/controller/lib/cmsis_gcc.h b/sw/controller/lib/cmsis_gcc.h new file mode 100644 index 0000000..1e08e7e --- /dev/null +++ b/sw/controller/lib/cmsis_gcc.h @@ -0,0 +1,2168 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler GCC header file + * @version V5.2.0 + * @date 08. May 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * 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 + * + * 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. + */ + +#ifndef __CMSIS_GCC_H +#define __CMSIS_GCC_H + +/* ignore some GCC warnings */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +/* Fallback for __has_builtin */ +#ifndef __has_builtin + #define __has_builtin(x) (0) +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START + +/** + \brief Initializes data and bss sections + \details This default implementations initialized all data and additional bss + sections relying on .copy.table and .zero.table specified properly + in the used linker script. + + */ +__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void) +{ + extern void _start(void) __NO_RETURN; + + typedef struct { + uint32_t const* src; + uint32_t* dest; + uint32_t wlen; + } __copy_table_t; + + typedef struct { + uint32_t* dest; + uint32_t wlen; + } __zero_table_t; + + extern const __copy_table_t __copy_table_start__; + extern const __copy_table_t __copy_table_end__; + extern const __zero_table_t __zero_table_start__; + extern const __zero_table_t __zero_table_end__; + + for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = pTable->src[i]; + } + } + + for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = 0u; + } + } + + _start(); +} + +#define __PROGRAM_START __cmsis_start +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP __StackTop +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT __StackLimit +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute((used, section(".vectors"))) +#endif + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_get_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + return __builtin_arm_get_fpscr(); +#else + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); +#endif +#else + return(0U); +#endif +} + + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_set_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + __builtin_arm_set_fpscr(fpscr); +#else + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); +#endif +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_REG(r) "+r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP() __ASM volatile ("nop") + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI() __ASM volatile ("wfi") + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE() __ASM volatile ("wfe") + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV() __ASM volatile ("sev") + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +__STATIC_FORCEINLINE void __ISB(void) +{ + __ASM volatile ("isb 0xF":::"memory"); +} + + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); +} + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__STATIC_FORCEINLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); +} + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE int16_t __REVSH(int16_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (int16_t)__builtin_bswap16(value); +#else + int16_t result; + + __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); +#else + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ +#endif + return result; +} + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +__STATIC_FORCEINLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ + __extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/sw/controller/lib/cmsis_version.h b/sw/controller/lib/cmsis_version.h new file mode 100644 index 0000000..3174cf6 --- /dev/null +++ b/sw/controller/lib/cmsis_version.h @@ -0,0 +1,39 @@ +/**************************************************************************//** + * @file cmsis_version.h + * @brief CMSIS Core(M) Version definitions + * @version V5.0.3 + * @date 24. June 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * 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 + * + * 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. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CMSIS_VERSION_H +#define __CMSIS_VERSION_H + +/* CMSIS Version definitions */ +#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +#define __CM_CMSIS_VERSION_SUB ( 3U) /*!< [15:0] CMSIS Core(M) sub version */ +#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ + __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +#endif diff --git a/sw/controller/lib/core_cm0plus.h b/sw/controller/lib/core_cm0plus.h new file mode 100644 index 0000000..fe7b424 --- /dev/null +++ b/sw/controller/lib/core_cm0plus.h @@ -0,0 +1,1085 @@ +/**************************************************************************//** + * @file core_cm0plus.h + * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 13. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * 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 + * + * 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. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM0PLUS_H_GENERIC +#define __CORE_CM0PLUS_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex-M0+ + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0+ definitions */ +#define __CM0PLUS_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0PLUS_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0PLUS_CMSIS_VERSION ((__CM0PLUS_CMSIS_VERSION_MAIN << 16U) | \ + __CM0PLUS_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0PLUS_H_DEPENDANT +#define __CORE_CM0PLUS_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0PLUS_REV + #define __CM0PLUS_REV 0x0000U + #warning "__CM0PLUS_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex-M0+ */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 8U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0+ header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0+ */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t vectors = SCB->VTOR; +#else + uint32_t vectors = 0x0U; +#endif + (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; + /* ARM Application Note 321 states that the M0+ does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t vectors = SCB->VTOR; +#else + uint32_t vectors = 0x0U; +#endif + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/sw/controller/lib/mpu_armv7.h b/sw/controller/lib/mpu_armv7.h new file mode 100644 index 0000000..337eb65 --- /dev/null +++ b/sw/controller/lib/mpu_armv7.h @@ -0,0 +1,272 @@ +/****************************************************************************** + * @file mpu_armv7.h + * @brief CMSIS MPU API for Armv7-M MPU + * @version V5.1.0 + * @date 08. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2017-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * 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 + * + * 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. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV7_H +#define ARM_MPU_ARMV7_H + +#define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes +#define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes +#define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes +#define ARM_MPU_REGION_SIZE_256B ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes +#define ARM_MPU_REGION_SIZE_512B ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes +#define ARM_MPU_REGION_SIZE_1KB ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte +#define ARM_MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes +#define ARM_MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes +#define ARM_MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes +#define ARM_MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes +#define ARM_MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes +#define ARM_MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes +#define ARM_MPU_REGION_SIZE_128KB ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes +#define ARM_MPU_REGION_SIZE_256KB ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes +#define ARM_MPU_REGION_SIZE_512KB ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes +#define ARM_MPU_REGION_SIZE_1MB ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte +#define ARM_MPU_REGION_SIZE_2MB ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes +#define ARM_MPU_REGION_SIZE_4MB ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes +#define ARM_MPU_REGION_SIZE_8MB ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes +#define ARM_MPU_REGION_SIZE_16MB ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes +#define ARM_MPU_REGION_SIZE_32MB ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes +#define ARM_MPU_REGION_SIZE_64MB ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes +#define ARM_MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes +#define ARM_MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes +#define ARM_MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes +#define ARM_MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte +#define ARM_MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes +#define ARM_MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes + +#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access +#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only +#define ARM_MPU_AP_URO 2U ///!< MPU Access Permission unprivileged access read-only +#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access +#define ARM_MPU_AP_PRO 5U ///!< MPU Access Permission privileged access read-only +#define ARM_MPU_AP_RO 6U ///!< MPU Access Permission read-only access + +/** MPU Region Base Address Register Value +* +* \param Region The region to be configured, number 0 to 15. +* \param BaseAddress The base address for the region. +*/ +#define ARM_MPU_RBAR(Region, BaseAddress) \ + (((BaseAddress) & MPU_RBAR_ADDR_Msk) | \ + ((Region) & MPU_RBAR_REGION_Msk) | \ + (MPU_RBAR_VALID_Msk)) + +/** +* MPU Memory Access Attributes +* +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +*/ +#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable) \ + ((((TypeExtField) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk) | \ + (((IsShareable) << MPU_RASR_S_Pos) & MPU_RASR_S_Msk) | \ + (((IsCacheable) << MPU_RASR_C_Pos) & MPU_RASR_C_Msk) | \ + (((IsBufferable) << MPU_RASR_B_Pos) & MPU_RASR_B_Msk)) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param AccessAttributes Memory access attribution, see \ref ARM_MPU_ACCESS_. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size) \ + ((((DisableExec) << MPU_RASR_XN_Pos) & MPU_RASR_XN_Msk) | \ + (((AccessPermission) << MPU_RASR_AP_Pos) & MPU_RASR_AP_Msk) | \ + (((AccessAttributes) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) | \ + (((SubRegionDisable) << MPU_RASR_SRD_Pos) & MPU_RASR_SRD_Msk) | \ + (((Size) << MPU_RASR_SIZE_Pos) & MPU_RASR_SIZE_Msk) | \ + (((MPU_RASR_ENABLE_Msk)))) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \ + ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size) + +/** +* MPU Memory Access Attribute for strongly ordered memory. +* - TEX: 000b +* - Shareable +* - Non-cacheable +* - Non-bufferable +*/ +#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U) + +/** +* MPU Memory Access Attribute for device memory. +* - TEX: 000b (if shareable) or 010b (if non-shareable) +* - Shareable or non-shareable +* - Non-cacheable +* - Bufferable (if shareable) or non-bufferable (if non-shareable) +* +* \param IsShareable Configures the device memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U)) + +/** +* MPU Memory Access Attribute for normal memory. +* - TEX: 1BBb (reflecting outer cacheability rules) +* - Shareable or non-shareable +* - Cacheable or non-cacheable (reflecting inner cacheability rules) +* - Bufferable or non-bufferable (reflecting inner cacheability rules) +* +* \param OuterCp Configures the outer cache policy. +* \param InnerCp Configures the inner cache policy. +* \param IsShareable Configures the memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) & 2U), ((InnerCp) & 1U)) + +/** +* MPU Memory Access Attribute non-cacheable policy. +*/ +#define ARM_MPU_CACHEP_NOCACHE 0U + +/** +* MPU Memory Access Attribute write-back, write and read allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_WRA 1U + +/** +* MPU Memory Access Attribute write-through, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WT_NWA 2U + +/** +* MPU Memory Access Attribute write-back, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_NWA 3U + + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; //!< The region base address register value (RBAR) + uint32_t RASR; //!< The region attribute and size register value (RASR) \ref MPU_RASR +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + MPU->RNR = rnr; + MPU->RASR = 0U; +} + +/** Configure an MPU region. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr) +{ + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr) +{ + MPU->RNR = rnr; + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + while (cnt > MPU_TYPE_RALIASES) { + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize); + table += MPU_TYPE_RALIASES; + cnt -= MPU_TYPE_RALIASES; + } + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize); +} + +#endif diff --git a/sw/controller/lib/stm32g030xx.h b/sw/controller/lib/stm32g030xx.h new file mode 100644 index 0000000..87131b4 --- /dev/null +++ b/sw/controller/lib/stm32g030xx.h @@ -0,0 +1,7335 @@ +/** + ****************************************************************************** + * @file stm32g030xx.h + * @author MCD Application Team + * @brief CMSIS Cortex-M0+ Device Peripheral Access Layer Header File. + * This file contains all the peripheral register's definitions, bits + * definitions and memory mapping for stm32g030xx devices. + * + * This file contains: + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral's registers hardware + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/** @addtogroup CMSIS_Device + * @{ + */ + +/** @addtogroup stm32g030xx + * @{ + */ + +#ifndef STM32G030xx_H +#define STM32G030xx_H + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M0+ Processor and Core Peripherals + */ +#define __CM0PLUS_REV 0U /*!< Core Revision r0p0 */ +#define __MPU_PRESENT 1U /*!< STM32G0xx provides an MPU */ +#define __VTOR_PRESENT 1U /*!< Vector Table Register supported */ +#define __NVIC_PRIO_BITS 2U /*!< STM32G0xx uses 2 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief stm32g030xx Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ + +/*!< Interrupt Number Definition */ +typedef enum +{ +/****** Cortex-M0+ Processor Exceptions Numbers ***************************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /*!< 3 Cortex-M Hard Fault Interrupt */ + SVC_IRQn = -5, /*!< 11 Cortex-M SV Call Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M System Tick Interrupt */ +/****** STM32G0xxxx specific Interrupt Numbers ****************************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + RTC_TAMP_IRQn = 2, /*!< RTC interrupt through the EXTI line 19 & 21 */ + FLASH_IRQn = 3, /*!< FLASH global Interrupt */ + RCC_IRQn = 4, /*!< RCC global Interrupt */ + EXTI0_1_IRQn = 5, /*!< EXTI 0 and 1 Interrupts */ + EXTI2_3_IRQn = 6, /*!< EXTI Line 2 and 3 Interrupts */ + EXTI4_15_IRQn = 7, /*!< EXTI Line 4 to 15 Interrupts */ + DMA1_Channel1_IRQn = 9, /*!< DMA1 Channel 1 Interrupt */ + DMA1_Channel2_3_IRQn = 10, /*!< DMA1 Channel 2 and Channel 3 Interrupts */ + DMA1_Ch4_5_DMAMUX1_OVR_IRQn = 11, /*!< DMA1 Channel 4 to Channel 5 and DMAMUX1 Overrun Interrupts */ + ADC1_IRQn = 12, /*!< ADC1 Interrupts */ + TIM1_BRK_UP_TRG_COM_IRQn = 13, /*!< TIM1 Break, Update, Trigger and Commutation Interrupts */ + TIM1_CC_IRQn = 14, /*!< TIM1 Capture Compare Interrupt */ + TIM3_IRQn = 16, /*!< TIM3 global Interrupt */ + TIM14_IRQn = 19, /*!< TIM14 global Interrupt */ + TIM16_IRQn = 21, /*!< TIM16 global Interrupt */ + TIM17_IRQn = 22, /*!< TIM17 global Interrupt */ + I2C1_IRQn = 23, /*!< I2C1 Interrupt (combined with EXTI 23) */ + I2C2_IRQn = 24, /*!< I2C2 Interrupt */ + SPI1_IRQn = 25, /*!< SPI1/I2S1 Interrupt */ + SPI2_IRQn = 26, /*!< SPI2 Interrupt */ + USART1_IRQn = 27, /*!< USART1 Interrupt */ + USART2_IRQn = 28, /*!< USART2 Interrupt */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm0plus.h" /* Cortex-M0+ processor and core peripherals */ +#include "system_stm32g0xx.h" +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ +typedef struct +{ + __IO uint32_t ISR; /*!< ADC interrupt and status register, Address offset: 0x00 */ + __IO uint32_t IER; /*!< ADC interrupt enable register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< ADC control register, Address offset: 0x08 */ + __IO uint32_t CFGR1; /*!< ADC configuration register 1, Address offset: 0x0C */ + __IO uint32_t CFGR2; /*!< ADC configuration register 2, Address offset: 0x10 */ + __IO uint32_t SMPR; /*!< ADC sampling time register, Address offset: 0x14 */ + uint32_t RESERVED1; /*!< Reserved, 0x18 */ + uint32_t RESERVED2; /*!< Reserved, 0x1C */ + __IO uint32_t TR1; /*!< ADC analog watchdog 1 threshold register, Address offset: 0x20 */ + __IO uint32_t TR2; /*!< ADC analog watchdog 2 threshold register, Address offset: 0x24 */ + __IO uint32_t CHSELR; /*!< ADC group regular sequencer register, Address offset: 0x28 */ + __IO uint32_t TR3; /*!< ADC analog watchdog 3 threshold register, Address offset: 0x2C */ + uint32_t RESERVED3[4]; /*!< Reserved, 0x30 - 0x3C */ + __IO uint32_t DR; /*!< ADC group regular data register, Address offset: 0x40 */ + uint32_t RESERVED4[23];/*!< Reserved, 0x44 - 0x9C */ + __IO uint32_t AWD2CR; /*!< ADC analog watchdog 2 configuration register, Address offset: 0xA0 */ + __IO uint32_t AWD3CR; /*!< ADC analog watchdog 3 configuration register, Address offset: 0xA4 */ + uint32_t RESERVED5[3]; /*!< Reserved, 0xA8 - 0xB0 */ + __IO uint32_t CALFACT; /*!< ADC Calibration factor register, Address offset: 0xB4 */ +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CCR; /*!< ADC common configuration register, Address offset: ADC1 base address + 0x308 */ +} ADC_Common_TypeDef; + + + + +/** + * @brief CRC calculation unit + */ +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ + uint32_t RESERVED1; /*!< Reserved, 0x0C */ + __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */ + __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */ +} CRC_TypeDef; + + +/** + * @brief Debug MCU + */ +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug configuration register, Address offset: 0x04 */ + __IO uint32_t APBFZ1; /*!< Debug APB freeze register 1, Address offset: 0x08 */ + __IO uint32_t APBFZ2; /*!< Debug APB freeze register 2, Address offset: 0x0C */ +} DBG_TypeDef; + +/** + * @brief DMA Controller + */ +typedef struct +{ + __IO uint32_t CCR; /*!< DMA channel x configuration register */ + __IO uint32_t CNDTR; /*!< DMA channel x number of data register */ + __IO uint32_t CPAR; /*!< DMA channel x peripheral address register */ + __IO uint32_t CMAR; /*!< DMA channel x memory address register */ +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register, Address offset: 0x00 */ + __IO uint32_t IFCR; /*!< DMA interrupt flag clear register, Address offset: 0x04 */ +} DMA_TypeDef; + +/** + * @brief DMA Multiplexer + */ +typedef struct +{ + __IO uint32_t CCR; /*!< DMA Multiplexer Channel x Control Register Address offset: 0x0004 * (channel x) */ +}DMAMUX_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< DMA Channel Status Register Address offset: 0x0080 */ + __IO uint32_t CFR; /*!< DMA Channel Clear Flag Register Address offset: 0x0084 */ +}DMAMUX_ChannelStatus_TypeDef; + +typedef struct +{ + __IO uint32_t RGCR; /*!< DMA Request Generator x Control Register Address offset: 0x0100 + 0x0004 * (Req Gen x) */ +}DMAMUX_RequestGen_TypeDef; + +typedef struct +{ + __IO uint32_t RGSR; /*!< DMA Request Generator Status Register Address offset: 0x0140 */ + __IO uint32_t RGCFR; /*!< DMA Request Generator Clear Flag Register Address offset: 0x0144 */ +}DMAMUX_RequestGenStatus_TypeDef; + +/** + * @brief Asynch Interrupt/Event Controller (EXTI) + */ +typedef struct +{ + __IO uint32_t RTSR1; /*!< EXTI Rising Trigger Selection Register 1, Address offset: 0x00 */ + __IO uint32_t FTSR1; /*!< EXTI Falling Trigger Selection Register 1, Address offset: 0x04 */ + __IO uint32_t SWIER1; /*!< EXTI Software Interrupt event Register 1, Address offset: 0x08 */ + __IO uint32_t RPR1; /*!< EXTI Rising Pending Register 1, Address offset: 0x0C */ + __IO uint32_t FPR1; /*!< EXTI Falling Pending Register 1, Address offset: 0x10 */ + uint32_t RESERVED1[3]; /*!< Reserved 1, 0x14 -- 0x1C */ + uint32_t RESERVED2[5]; /*!< Reserved 2, 0x20 -- 0x30 */ + uint32_t RESERVED3[11]; /*!< Reserved 3, 0x34 -- 0x5C */ + __IO uint32_t EXTICR[4]; /*!< EXTI External Interrupt Configuration Register, 0x60 -- 0x6C */ + uint32_t RESERVED4[4]; /*!< Reserved 4, 0x70 -- 0x7C */ + __IO uint32_t IMR1; /*!< EXTI Interrupt Mask Register 1, Address offset: 0x80 */ + __IO uint32_t EMR1; /*!< EXTI Event Mask Register 1, Address offset: 0x84 */ +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ +typedef struct +{ + __IO uint32_t ACR; /*!< FLASH Access Control register, Address offset: 0x00 */ + uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x04 */ + __IO uint32_t KEYR; /*!< FLASH Key register, Address offset: 0x08 */ + __IO uint32_t OPTKEYR; /*!< FLASH Option Key register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< FLASH Status register, Address offset: 0x10 */ + __IO uint32_t CR; /*!< FLASH Control register, Address offset: 0x14 */ + __IO uint32_t ECCR; /*!< FLASH ECC register, Address offset: 0x18 */ + uint32_t RESERVED2; /*!< Reserved2, Address offset: 0x1C */ + __IO uint32_t OPTR; /*!< FLASH Option register, Address offset: 0x20 */ + uint32_t RESERVED3[2]; /*!< Reserved3, Address offset: 0x24--0x28 */ + __IO uint32_t WRP1AR; /*!< FLASH Bank WRP area A address register, Address offset: 0x2C */ + __IO uint32_t WRP1BR; /*!< FLASH Bank WRP area B address register, Address offset: 0x30 */ + uint32_t RESERVED4[2]; /*!< Reserved4, Address offset: 0x34--0x38 */ +} FLASH_TypeDef; + +/** + * @brief General Purpose I/O + */ +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */ + __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */ +} GPIO_TypeDef; + + +/** + * @brief Inter-integrated Circuit Interface + */ +typedef struct +{ + __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */ + __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */ + __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */ + __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */ + __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */ + __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */ + __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */ + __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */ + __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */ + __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */ +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ +typedef struct +{ + __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */ + __IO uint32_t WINR; /*!< IWDG Window register, Address offset: 0x10 */ +} IWDG_TypeDef; + + + +/** + * @brief Power Control + */ +typedef struct +{ + __IO uint32_t CR1; /*!< PWR Power Control Register 1, Address offset: 0x00 */ + uint32_t RESERVED0; /*!< Reserved, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< PWR Power Control Register 3, Address offset: 0x08 */ + __IO uint32_t CR4; /*!< PWR Power Control Register 4, Address offset: 0x0C */ + __IO uint32_t SR1; /*!< PWR Power Status Register 1, Address offset: 0x10 */ + __IO uint32_t SR2; /*!< PWR Power Status Register 2, Address offset: 0x14 */ + __IO uint32_t SCR; /*!< PWR Power Status Clear Register, Address offset: 0x18 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x1C */ + __IO uint32_t PUCRA; /*!< PWR Pull-Up Control Register of port A, Address offset: 0x20 */ + __IO uint32_t PDCRA; /*!< PWR Pull-Down Control Register of port A, Address offset: 0x24 */ + __IO uint32_t PUCRB; /*!< PWR Pull-Up Control Register of port B, Address offset: 0x28 */ + __IO uint32_t PDCRB; /*!< PWR Pull-Down Control Register of port B, Address offset: 0x2C */ + __IO uint32_t PUCRC; /*!< PWR Pull-Up Control Register of port C, Address offset: 0x30 */ + __IO uint32_t PDCRC; /*!< PWR Pull-Down Control Register of port C, Address offset: 0x34 */ + __IO uint32_t PUCRD; /*!< PWR Pull-Up Control Register of port D, Address offset: 0x38 */ + __IO uint32_t PDCRD; /*!< PWR Pull-Down Control Register of port D, Address offset: 0x3C */ + uint32_t RESERVED2; /*!< Reserved, Address offset: 0x40 */ + uint32_t RESERVED3; /*!< Reserved, Address offset: 0x44 */ + __IO uint32_t PUCRF; /*!< PWR Pull-Up Control Register of port F, Address offset: 0x48 */ + __IO uint32_t PDCRF; /*!< PWR Pull-Down Control Register of port F, Address offset: 0x4C */ +} PWR_TypeDef; + +/** + * @brief Reset and Clock Control + */ +typedef struct +{ + __IO uint32_t CR; /*!< RCC Clock Sources Control Register, Address offset: 0x00 */ + __IO uint32_t ICSCR; /*!< RCC Internal Clock Sources Calibration Register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC Regulated Domain Clocks Configuration Register, Address offset: 0x08 */ + __IO uint32_t PLLCFGR; /*!< RCC System PLL configuration Register, Address offset: 0x0C */ + __IO uint32_t RESERVED0; /*!< Reserved, Address offset: 0x10 */ + __IO uint32_t RESERVED1; /*!< Reserved, Address offset: 0x14 */ + __IO uint32_t CIER; /*!< RCC Clock Interrupt Enable Register, Address offset: 0x18 */ + __IO uint32_t CIFR; /*!< RCC Clock Interrupt Flag Register, Address offset: 0x1C */ + __IO uint32_t CICR; /*!< RCC Clock Interrupt Clear Register, Address offset: 0x20 */ + __IO uint32_t IOPRSTR; /*!< RCC IO port reset register, Address offset: 0x24 */ + __IO uint32_t AHBRSTR; /*!< RCC AHB peripherals reset register, Address offset: 0x28 */ + __IO uint32_t APBRSTR1; /*!< RCC APB peripherals reset register 1, Address offset: 0x2C */ + __IO uint32_t APBRSTR2; /*!< RCC APB peripherals reset register 2, Address offset: 0x30 */ + __IO uint32_t IOPENR; /*!< RCC IO port enable register, Address offset: 0x34 */ + __IO uint32_t AHBENR; /*!< RCC AHB peripherals clock enable register, Address offset: 0x38 */ + __IO uint32_t APBENR1; /*!< RCC APB peripherals clock enable register1, Address offset: 0x3C */ + __IO uint32_t APBENR2; /*!< RCC APB peripherals clock enable register2, Address offset: 0x40 */ + __IO uint32_t IOPSMENR; /*!< RCC IO port clocks enable in sleep mode register, Address offset: 0x44 */ + __IO uint32_t AHBSMENR; /*!< RCC AHB peripheral clocks enable in sleep mode register, Address offset: 0x48 */ + __IO uint32_t APBSMENR1; /*!< RCC APB peripheral clocks enable in sleep mode register1, Address offset: 0x4C */ + __IO uint32_t APBSMENR2; /*!< RCC APB peripheral clocks enable in sleep mode register2, Address offset: 0x50 */ + __IO uint32_t CCIPR; /*!< RCC Peripherals Independent Clocks Configuration Register, Address offset: 0x54 */ + __IO uint32_t RESERVED2; /*!< Reserved, Address offset: 0x58 */ + __IO uint32_t BDCR; /*!< RCC Backup Domain Control Register, Address offset: 0x5C */ + __IO uint32_t CSR; /*!< RCC Unregulated Domain Clock Control and Status Register, Address offset: 0x60 */ +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ +typedef struct +{ + __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */ + __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x08 */ + __IO uint32_t ICSR; /*!< RTC initialization control and status register, Address offset: 0x0C */ + __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */ + __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */ + __IO uint32_t CR; /*!< RTC control register, Address offset: 0x18 */ + uint32_t RESERVED0; /*!< Reserved Address offset: 0x1C */ + uint32_t RESERVED1; /*!< Reserved Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x28 */ + __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */ + __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */ + __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */ + __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */ + uint32_t RESERVED2; /*!< Reserved Address offset: 0x1C */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x48 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x4C */ + __IO uint32_t SR; /*!< RTC Status register, Address offset: 0x50 */ + __IO uint32_t MISR; /*!< RTC Masked Interrupt Status register, Address offset: 0x54 */ + uint32_t RESERVED3; /*!< Reserved Address offset: 0x58 */ + __IO uint32_t SCR; /*!< RTC Status Clear register, Address offset: 0x5C */ + __IO uint32_t OR; /*!< RTC option register, Address offset: 0x60 */ +} RTC_TypeDef; + +/** + * @brief Tamper and backup registers + */ +typedef struct +{ + __IO uint32_t CR1; /*!< TAMP configuration register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TAMP configuration register 2, Address offset: 0x04 */ + uint32_t RESERVED0; /*!< Reserved Address offset: 0x08 */ + __IO uint32_t FLTCR; /*!< Reserved Address offset: 0x0C */ + uint32_t RESERVED1[7]; /*!< Reserved Address offset: 0x10 -- 0x28 */ + __IO uint32_t IER; /*!< TAMP Interrupt enable register, Address offset: 0x2C */ + __IO uint32_t SR; /*!< TAMP Status register, Address offset: 0x30 */ + __IO uint32_t MISR; /*!< TAMP Masked Interrupt Status register, Address offset: 0x34 */ + uint32_t RESERVED2; /*!< Reserved Address offset: 0x38 */ + __IO uint32_t SCR; /*!< TAMP Status clear register, Address offset: 0x3C */ + uint32_t RESERVED3[48]; /*!< Reserved Address offset: 0x54 -- 0xFC */ + __IO uint32_t BKP0R; /*!< TAMP backup register 0, Address offset: 0x100 */ + __IO uint32_t BKP1R; /*!< TAMP backup register 1, Address offset: 0x104 */ + __IO uint32_t BKP2R; /*!< TAMP backup register 2, Address offset: 0x108 */ + __IO uint32_t BKP3R; /*!< TAMP backup register 3, Address offset: 0x10C */ + __IO uint32_t BKP4R; /*!< TAMP backup register 4, Address offset: 0x110 */ +} TAMP_TypeDef; + + /** + * @brief Serial Peripheral Interface + */ +typedef struct +{ + __IO uint32_t CR1; /*!< SPI Control register 1 (not used in I2S mode), Address offset: 0x00 */ + __IO uint32_t CR2; /*!< SPI Control register 2, Address offset: 0x04 */ + __IO uint32_t SR; /*!< SPI Status register, Address offset: 0x08 */ + __IO uint32_t DR; /*!< SPI data register, Address offset: 0x0C */ + __IO uint32_t CRCPR; /*!< SPI CRC polynomial register (not used in I2S mode), Address offset: 0x10 */ + __IO uint32_t RXCRCR; /*!< SPI Rx CRC register (not used in I2S mode), Address offset: 0x14 */ + __IO uint32_t TXCRCR; /*!< SPI Tx CRC register (not used in I2S mode), Address offset: 0x18 */ + __IO uint32_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */ + __IO uint32_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */ +} SPI_TypeDef; + +/** + * @brief System configuration controller + */ +typedef struct +{ + __IO uint32_t CFGR1; /*!< SYSCFG configuration register 1, Address offset: 0x00 */ + uint32_t RESERVED0[5]; /*!< Reserved, 0x04 --0x14 */ + __IO uint32_t CFGR2; /*!< SYSCFG configuration register 2, Address offset: 0x18 */ + uint32_t RESERVED1[25]; /*!< Reserved 0x1C */ + __IO uint32_t IT_LINE_SR[32]; /*!< SYSCFG configuration IT_LINE register, Address offset: 0x80 */ +} SYSCFG_TypeDef; + +/** + * @brief TIM + */ +typedef struct +{ + __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */ + __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint32_t PSC; /*!< TIM prescaler register, Address offset: 0x28 */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */ + __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x48 */ + __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x4C */ + __IO uint32_t OR1; /*!< TIM option register, Address offset: 0x50 */ + __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x54 */ + __IO uint32_t CCR5; /*!< TIM capture/compare register5, Address offset: 0x58 */ + __IO uint32_t CCR6; /*!< TIM capture/compare register6, Address offset: 0x5C */ + __IO uint32_t AF1; /*!< TIM alternate function register 1, Address offset: 0x60 */ + __IO uint32_t AF2; /*!< TIM alternate function register 2, Address offset: 0x64 */ + __IO uint32_t TISEL; /*!< TIM Input Selection register, Address offset: 0x68 */ +} TIM_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ +typedef struct +{ + __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */ + __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */ + __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */ + __IO uint32_t RTOR; /*!< USART Receiver Time Out register, Address offset: 0x14 */ + __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */ + __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */ + __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */ + __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */ + __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */ + __IO uint32_t PRESC; /*!< USART Prescaler register, Address offset: 0x2C */ +} USART_TypeDef; + + +/** + * @brief Window WATCHDOG + */ +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + + + +/** @addtogroup Peripheral_memory_map + * @{ + */ +#define FLASH_BASE (0x08000000UL) /*!< FLASH base address */ +#define SRAM_BASE (0x20000000UL) /*!< SRAM base address */ +#define PERIPH_BASE (0x40000000UL) /*!< Peripheral base address */ +#define IOPORT_BASE (0x50000000UL) /*!< IOPORT base address */ +#define SRAM_SIZE_MAX (0x00002000UL) /*!< maximum SRAM size (up to 8 KBytes) */ + +#define FLASH_SIZE (((*((uint32_t *)FLASHSIZE_BASE)) & (0x007FU)) << 10U) + +/*!< Peripheral memory map */ +#define APBPERIPH_BASE (PERIPH_BASE) +#define AHBPERIPH_BASE (PERIPH_BASE + 0x00020000UL) + +/*!< APB peripherals */ + +#define TIM3_BASE (APBPERIPH_BASE + 0x00000400UL) +#define TIM14_BASE (APBPERIPH_BASE + 0x00002000UL) +#define RTC_BASE (APBPERIPH_BASE + 0x00002800UL) +#define WWDG_BASE (APBPERIPH_BASE + 0x00002C00UL) +#define IWDG_BASE (APBPERIPH_BASE + 0x00003000UL) +#define SPI2_BASE (APBPERIPH_BASE + 0x00003800UL) +#define USART2_BASE (APBPERIPH_BASE + 0x00004400UL) +#define I2C1_BASE (APBPERIPH_BASE + 0x00005400UL) +#define I2C2_BASE (APBPERIPH_BASE + 0x00005800UL) +#define PWR_BASE (APBPERIPH_BASE + 0x00007000UL) +#define TAMP_BASE (APBPERIPH_BASE + 0x0000B000UL) +#define SYSCFG_BASE (APBPERIPH_BASE + 0x00010000UL) +#define ADC1_BASE (APBPERIPH_BASE + 0x00012400UL) +#define ADC1_COMMON_BASE (APBPERIPH_BASE + 0x00012708UL) +#define ADC_BASE (ADC1_COMMON_BASE) /* Kept for legacy purpose */ +#define TIM1_BASE (APBPERIPH_BASE + 0x00012C00UL) +#define SPI1_BASE (APBPERIPH_BASE + 0x00013000UL) +#define USART1_BASE (APBPERIPH_BASE + 0x00013800UL) +#define TIM16_BASE (APBPERIPH_BASE + 0x00014400UL) +#define TIM17_BASE (APBPERIPH_BASE + 0x00014800UL) +#define DBG_BASE (APBPERIPH_BASE + 0x00015800UL) + + +/*!< AHB peripherals */ +#define DMA1_BASE (AHBPERIPH_BASE) +#define DMAMUX1_BASE (AHBPERIPH_BASE + 0x00000800UL) +#define RCC_BASE (AHBPERIPH_BASE + 0x00001000UL) +#define EXTI_BASE (AHBPERIPH_BASE + 0x00001800UL) +#define FLASH_R_BASE (AHBPERIPH_BASE + 0x00002000UL) +#define CRC_BASE (AHBPERIPH_BASE + 0x00003000UL) + + +#define DMA1_Channel1_BASE (DMA1_BASE + 0x00000008UL) +#define DMA1_Channel2_BASE (DMA1_BASE + 0x0000001CUL) +#define DMA1_Channel3_BASE (DMA1_BASE + 0x00000030UL) +#define DMA1_Channel4_BASE (DMA1_BASE + 0x00000044UL) +#define DMA1_Channel5_BASE (DMA1_BASE + 0x00000058UL) + +#define DMAMUX1_Channel0_BASE (DMAMUX1_BASE) +#define DMAMUX1_Channel1_BASE (DMAMUX1_BASE + 0x00000004UL) +#define DMAMUX1_Channel2_BASE (DMAMUX1_BASE + 0x00000008UL) +#define DMAMUX1_Channel3_BASE (DMAMUX1_BASE + 0x0000000CUL) +#define DMAMUX1_Channel4_BASE (DMAMUX1_BASE + 0x00000010UL) + +#define DMAMUX1_RequestGenerator0_BASE (DMAMUX1_BASE + 0x00000100UL) +#define DMAMUX1_RequestGenerator1_BASE (DMAMUX1_BASE + 0x00000104UL) +#define DMAMUX1_RequestGenerator2_BASE (DMAMUX1_BASE + 0x00000108UL) +#define DMAMUX1_RequestGenerator3_BASE (DMAMUX1_BASE + 0x0000010CUL) + +#define DMAMUX1_ChannelStatus_BASE (DMAMUX1_BASE + 0x00000080UL) +#define DMAMUX1_RequestGenStatus_BASE (DMAMUX1_BASE + 0x00000140UL) + +/*!< IOPORT */ +#define GPIOA_BASE (IOPORT_BASE + 0x00000000UL) +#define GPIOB_BASE (IOPORT_BASE + 0x00000400UL) +#define GPIOC_BASE (IOPORT_BASE + 0x00000800UL) +#define GPIOD_BASE (IOPORT_BASE + 0x00000C00UL) +#define GPIOF_BASE (IOPORT_BASE + 0x00001400UL) + +/*!< Device Electronic Signature */ +#define PACKAGE_BASE (0x1FFF7500UL) /*!< Package data register base address */ +#define UID_BASE (0x1FFF7590UL) /*!< Unique device ID register base address */ +#define FLASHSIZE_BASE (0x1FFF75E0UL) /*!< Flash size data register base address */ + +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM14 ((TIM_TypeDef *) TIM14_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define TAMP ((TAMP_TypeDef *) TAMP_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define TIM16 ((TIM_TypeDef *) TIM16_BASE) +#define TIM17 ((TIM_TypeDef *) TIM17_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC1_COMMON ((ADC_Common_TypeDef *) ADC1_COMMON_BASE) +#define ADC (ADC1_COMMON) /* Kept for legacy purpose */ + + + +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMAMUX1 ((DMAMUX_Channel_TypeDef *) DMAMUX1_BASE) +#define DMAMUX1_Channel0 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel0_BASE) +#define DMAMUX1_Channel1 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel1_BASE) +#define DMAMUX1_Channel2 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel2_BASE) +#define DMAMUX1_Channel3 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel3_BASE) +#define DMAMUX1_Channel4 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel4_BASE) + +#define DMAMUX1_RequestGenerator0 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator0_BASE) +#define DMAMUX1_RequestGenerator1 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator1_BASE) +#define DMAMUX1_RequestGenerator2 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator2_BASE) +#define DMAMUX1_RequestGenerator3 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator3_BASE) + +#define DMAMUX1_ChannelStatus ((DMAMUX_ChannelStatus_TypeDef *) DMAMUX1_ChannelStatus_BASE) +#define DMAMUX1_RequestGenStatus ((DMAMUX_RequestGenStatus_TypeDef *) DMAMUX1_RequestGenStatus_BASE) + +#define DBG ((DBG_TypeDef *) DBG_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + + /** @addtogroup Hardware_Constant_Definition + * @{ + */ +#define LSI_STARTUP_TIME 130U /*!< LSI Maximum startup time in us */ + + /** + * @} + */ + + /** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers Bits Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter (ADC) */ +/* */ +/******************************************************************************/ +/******************** Bit definition for ADC_ISR register *******************/ +#define ADC_ISR_ADRDY_Pos (0U) +#define ADC_ISR_ADRDY_Msk (0x1UL << ADC_ISR_ADRDY_Pos) /*!< 0x00000001 */ +#define ADC_ISR_ADRDY ADC_ISR_ADRDY_Msk /*!< ADC ready flag */ +#define ADC_ISR_EOSMP_Pos (1U) +#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */ +#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */ +#define ADC_ISR_EOC_Pos (2U) +#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */ +#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */ +#define ADC_ISR_EOS_Pos (3U) +#define ADC_ISR_EOS_Msk (0x1UL << ADC_ISR_EOS_Pos) /*!< 0x00000008 */ +#define ADC_ISR_EOS ADC_ISR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */ +#define ADC_ISR_OVR_Pos (4U) +#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */ +#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */ +#define ADC_ISR_AWD1_Pos (7U) +#define ADC_ISR_AWD1_Msk (0x1UL << ADC_ISR_AWD1_Pos) /*!< 0x00000080 */ +#define ADC_ISR_AWD1 ADC_ISR_AWD1_Msk /*!< ADC analog watchdog 1 flag */ +#define ADC_ISR_AWD2_Pos (8U) +#define ADC_ISR_AWD2_Msk (0x1UL << ADC_ISR_AWD2_Pos) /*!< 0x00000100 */ +#define ADC_ISR_AWD2 ADC_ISR_AWD2_Msk /*!< ADC analog watchdog 2 flag */ +#define ADC_ISR_AWD3_Pos (9U) +#define ADC_ISR_AWD3_Msk (0x1UL << ADC_ISR_AWD3_Pos) /*!< 0x00000200 */ +#define ADC_ISR_AWD3 ADC_ISR_AWD3_Msk /*!< ADC analog watchdog 3 flag */ +#define ADC_ISR_EOCAL_Pos (11U) +#define ADC_ISR_EOCAL_Msk (0x1UL << ADC_ISR_EOCAL_Pos) /*!< 0x00000800 */ +#define ADC_ISR_EOCAL ADC_ISR_EOCAL_Msk /*!< ADC end of calibration flag */ +#define ADC_ISR_CCRDY_Pos (13U) +#define ADC_ISR_CCRDY_Msk (0x1UL << ADC_ISR_CCRDY_Pos) /*!< 0x00002000 */ +#define ADC_ISR_CCRDY ADC_ISR_CCRDY_Msk /*!< ADC channel configuration ready flag */ + +/* Legacy defines */ +#define ADC_ISR_EOSEQ (ADC_ISR_EOS) + +/******************** Bit definition for ADC_IER register *******************/ +#define ADC_IER_ADRDYIE_Pos (0U) +#define ADC_IER_ADRDYIE_Msk (0x1UL << ADC_IER_ADRDYIE_Pos) /*!< 0x00000001 */ +#define ADC_IER_ADRDYIE ADC_IER_ADRDYIE_Msk /*!< ADC ready interrupt */ +#define ADC_IER_EOSMPIE_Pos (1U) +#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */ +#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */ +#define ADC_IER_EOCIE_Pos (2U) +#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */ +#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */ +#define ADC_IER_EOSIE_Pos (3U) +#define ADC_IER_EOSIE_Msk (0x1UL << ADC_IER_EOSIE_Pos) /*!< 0x00000008 */ +#define ADC_IER_EOSIE ADC_IER_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */ +#define ADC_IER_OVRIE_Pos (4U) +#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */ +#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */ +#define ADC_IER_AWD1IE_Pos (7U) +#define ADC_IER_AWD1IE_Msk (0x1UL << ADC_IER_AWD1IE_Pos) /*!< 0x00000080 */ +#define ADC_IER_AWD1IE ADC_IER_AWD1IE_Msk /*!< ADC analog watchdog 1 interrupt */ +#define ADC_IER_AWD2IE_Pos (8U) +#define ADC_IER_AWD2IE_Msk (0x1UL << ADC_IER_AWD2IE_Pos) /*!< 0x00000100 */ +#define ADC_IER_AWD2IE ADC_IER_AWD2IE_Msk /*!< ADC analog watchdog 2 interrupt */ +#define ADC_IER_AWD3IE_Pos (9U) +#define ADC_IER_AWD3IE_Msk (0x1UL << ADC_IER_AWD3IE_Pos) /*!< 0x00000200 */ +#define ADC_IER_AWD3IE ADC_IER_AWD3IE_Msk /*!< ADC analog watchdog 3 interrupt */ +#define ADC_IER_EOCALIE_Pos (11U) +#define ADC_IER_EOCALIE_Msk (0x1UL << ADC_IER_EOCALIE_Pos) /*!< 0x00000800 */ +#define ADC_IER_EOCALIE ADC_IER_EOCALIE_Msk /*!< ADC end of calibration interrupt */ +#define ADC_IER_CCRDYIE_Pos (13U) +#define ADC_IER_CCRDYIE_Msk (0x1UL << ADC_IER_CCRDYIE_Pos) /*!< 0x00002000 */ +#define ADC_IER_CCRDYIE ADC_IER_CCRDYIE_Msk /*!< ADC channel configuration ready interrupt */ + +/* Legacy defines */ +#define ADC_IER_EOSEQIE (ADC_IER_EOSIE) + +/******************** Bit definition for ADC_CR register ********************/ +#define ADC_CR_ADEN_Pos (0U) +#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */ +#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */ +#define ADC_CR_ADDIS_Pos (1U) +#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */ +#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk /*!< ADC disable */ +#define ADC_CR_ADSTART_Pos (2U) +#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */ +#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */ +#define ADC_CR_ADSTP_Pos (4U) +#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */ +#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */ +#define ADC_CR_ADVREGEN_Pos (28U) +#define ADC_CR_ADVREGEN_Msk (0x1UL << ADC_CR_ADVREGEN_Pos) /*!< 0x10000000 */ +#define ADC_CR_ADVREGEN ADC_CR_ADVREGEN_Msk /*!< ADC voltage regulator enable */ +#define ADC_CR_ADCAL_Pos (31U) +#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_ADCAL_Pos) /*!< 0x80000000 */ +#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */ + +/******************** Bit definition for ADC_CFGR1 register *****************/ +#define ADC_CFGR1_DMAEN_Pos (0U) +#define ADC_CFGR1_DMAEN_Msk (0x1UL << ADC_CFGR1_DMAEN_Pos) /*!< 0x00000001 */ +#define ADC_CFGR1_DMAEN ADC_CFGR1_DMAEN_Msk /*!< ADC DMA transfer enable */ +#define ADC_CFGR1_DMACFG_Pos (1U) +#define ADC_CFGR1_DMACFG_Msk (0x1UL << ADC_CFGR1_DMACFG_Pos) /*!< 0x00000002 */ +#define ADC_CFGR1_DMACFG ADC_CFGR1_DMACFG_Msk /*!< ADC DMA transfer configuration */ + +#define ADC_CFGR1_SCANDIR_Pos (2U) +#define ADC_CFGR1_SCANDIR_Msk (0x1UL << ADC_CFGR1_SCANDIR_Pos) /*!< 0x00000004 */ +#define ADC_CFGR1_SCANDIR ADC_CFGR1_SCANDIR_Msk /*!< ADC group regular sequencer scan direction */ + +#define ADC_CFGR1_RES_Pos (3U) +#define ADC_CFGR1_RES_Msk (0x3UL << ADC_CFGR1_RES_Pos) /*!< 0x00000018 */ +#define ADC_CFGR1_RES ADC_CFGR1_RES_Msk /*!< ADC data resolution */ +#define ADC_CFGR1_RES_0 (0x1U << ADC_CFGR1_RES_Pos) /*!< 0x00000008 */ +#define ADC_CFGR1_RES_1 (0x2U << ADC_CFGR1_RES_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR1_ALIGN_Pos (5U) +#define ADC_CFGR1_ALIGN_Msk (0x1UL << ADC_CFGR1_ALIGN_Pos) /*!< 0x00000020 */ +#define ADC_CFGR1_ALIGN ADC_CFGR1_ALIGN_Msk /*!< ADC data alignment */ + +#define ADC_CFGR1_EXTSEL_Pos (6U) +#define ADC_CFGR1_EXTSEL_Msk (0x7UL << ADC_CFGR1_EXTSEL_Pos) /*!< 0x000001C0 */ +#define ADC_CFGR1_EXTSEL ADC_CFGR1_EXTSEL_Msk /*!< ADC group regular external trigger source */ +#define ADC_CFGR1_EXTSEL_0 (0x1UL << ADC_CFGR1_EXTSEL_Pos) /*!< 0x00000040 */ +#define ADC_CFGR1_EXTSEL_1 (0x2UL << ADC_CFGR1_EXTSEL_Pos) /*!< 0x00000080 */ +#define ADC_CFGR1_EXTSEL_2 (0x4UL << ADC_CFGR1_EXTSEL_Pos) /*!< 0x00000100 */ + +#define ADC_CFGR1_EXTEN_Pos (10U) +#define ADC_CFGR1_EXTEN_Msk (0x3UL << ADC_CFGR1_EXTEN_Pos) /*!< 0x00000C00 */ +#define ADC_CFGR1_EXTEN ADC_CFGR1_EXTEN_Msk /*!< ADC group regular external trigger polarity */ +#define ADC_CFGR1_EXTEN_0 (0x1UL << ADC_CFGR1_EXTEN_Pos) /*!< 0x00000400 */ +#define ADC_CFGR1_EXTEN_1 (0x2UL << ADC_CFGR1_EXTEN_Pos) /*!< 0x00000800 */ + +#define ADC_CFGR1_OVRMOD_Pos (12U) +#define ADC_CFGR1_OVRMOD_Msk (0x1UL << ADC_CFGR1_OVRMOD_Pos) /*!< 0x00001000 */ +#define ADC_CFGR1_OVRMOD ADC_CFGR1_OVRMOD_Msk /*!< ADC group regular overrun configuration */ +#define ADC_CFGR1_CONT_Pos (13U) +#define ADC_CFGR1_CONT_Msk (0x1UL << ADC_CFGR1_CONT_Pos) /*!< 0x00002000 */ +#define ADC_CFGR1_CONT ADC_CFGR1_CONT_Msk /*!< ADC group regular continuous conversion mode */ +#define ADC_CFGR1_WAIT_Pos (14U) +#define ADC_CFGR1_WAIT_Msk (0x1UL << ADC_CFGR1_WAIT_Pos) /*!< 0x00004000 */ +#define ADC_CFGR1_WAIT ADC_CFGR1_WAIT_Msk /*!< ADC low power auto wait */ +#define ADC_CFGR1_AUTOFF_Pos (15U) +#define ADC_CFGR1_AUTOFF_Msk (0x1UL << ADC_CFGR1_AUTOFF_Pos) /*!< 0x00008000 */ +#define ADC_CFGR1_AUTOFF ADC_CFGR1_AUTOFF_Msk /*!< ADC low power auto power off */ +#define ADC_CFGR1_DISCEN_Pos (16U) +#define ADC_CFGR1_DISCEN_Msk (0x1UL << ADC_CFGR1_DISCEN_Pos) /*!< 0x00010000 */ +#define ADC_CFGR1_DISCEN ADC_CFGR1_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */ +#define ADC_CFGR1_CHSELRMOD_Pos (21U) +#define ADC_CFGR1_CHSELRMOD_Msk (0x1UL << ADC_CFGR1_CHSELRMOD_Pos) /*!< 0x00200000 */ +#define ADC_CFGR1_CHSELRMOD ADC_CFGR1_CHSELRMOD_Msk /*!< ADC group regular sequencer mode */ + +#define ADC_CFGR1_AWD1SGL_Pos (22U) +#define ADC_CFGR1_AWD1SGL_Msk (0x1UL << ADC_CFGR1_AWD1SGL_Pos) /*!< 0x00400000 */ +#define ADC_CFGR1_AWD1SGL ADC_CFGR1_AWD1SGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */ +#define ADC_CFGR1_AWD1EN_Pos (23U) +#define ADC_CFGR1_AWD1EN_Msk (0x1UL << ADC_CFGR1_AWD1EN_Pos) /*!< 0x00800000 */ +#define ADC_CFGR1_AWD1EN ADC_CFGR1_AWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */ + +#define ADC_CFGR1_AWD1CH_Pos (26U) +#define ADC_CFGR1_AWD1CH_Msk (0x1FUL << ADC_CFGR1_AWD1CH_Pos) /*!< 0x7C000000 */ +#define ADC_CFGR1_AWD1CH ADC_CFGR1_AWD1CH_Msk /*!< ADC analog watchdog 1 monitored channel selection */ +#define ADC_CFGR1_AWD1CH_0 (0x01UL << ADC_CFGR1_AWD1CH_Pos) /*!< 0x04000000 */ +#define ADC_CFGR1_AWD1CH_1 (0x02UL << ADC_CFGR1_AWD1CH_Pos) /*!< 0x08000000 */ +#define ADC_CFGR1_AWD1CH_2 (0x04UL << ADC_CFGR1_AWD1CH_Pos) /*!< 0x10000000 */ +#define ADC_CFGR1_AWD1CH_3 (0x08UL << ADC_CFGR1_AWD1CH_Pos) /*!< 0x20000000 */ +#define ADC_CFGR1_AWD1CH_4 (0x10UL << ADC_CFGR1_AWD1CH_Pos) /*!< 0x40000000 */ + +/* Legacy defines */ +#define ADC_CFGR1_AUTDLY (ADC_CFGR1_WAIT) + +/******************** Bit definition for ADC_CFGR2 register *****************/ +#define ADC_CFGR2_OVSE_Pos (0U) +#define ADC_CFGR2_OVSE_Msk (0x1UL << ADC_CFGR2_OVSE_Pos) /*!< 0x00000001 */ +#define ADC_CFGR2_OVSE ADC_CFGR2_OVSE_Msk /*!< ADC oversampler enable on scope ADC group regular */ + +#define ADC_CFGR2_OVSR_Pos (2U) +#define ADC_CFGR2_OVSR_Msk (0x7UL << ADC_CFGR2_OVSR_Pos) /*!< 0x0000001C */ +#define ADC_CFGR2_OVSR ADC_CFGR2_OVSR_Msk /*!< ADC oversampling ratio */ +#define ADC_CFGR2_OVSR_0 (0x1UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000004 */ +#define ADC_CFGR2_OVSR_1 (0x2UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000008 */ +#define ADC_CFGR2_OVSR_2 (0x4UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR2_OVSS_Pos (5U) +#define ADC_CFGR2_OVSS_Msk (0xFUL << ADC_CFGR2_OVSS_Pos) /*!< 0x000001E0 */ +#define ADC_CFGR2_OVSS ADC_CFGR2_OVSS_Msk /*!< ADC oversampling shift */ +#define ADC_CFGR2_OVSS_0 (0x1UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000020 */ +#define ADC_CFGR2_OVSS_1 (0x2UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000040 */ +#define ADC_CFGR2_OVSS_2 (0x4UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000080 */ +#define ADC_CFGR2_OVSS_3 (0x8UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000100 */ + +#define ADC_CFGR2_TOVS_Pos (9U) +#define ADC_CFGR2_TOVS_Msk (0x1UL << ADC_CFGR2_TOVS_Pos) /*!< 0x00000200 */ +#define ADC_CFGR2_TOVS ADC_CFGR2_TOVS_Msk /*!< ADC oversampling discontinuous mode (triggered mode) for ADC group regular */ + +#define ADC_CFGR2_LFTRIG_Pos (29U) +#define ADC_CFGR2_LFTRIG_Msk (0x1UL << ADC_CFGR2_LFTRIG_Pos) /*!< 0x20000000 */ +#define ADC_CFGR2_LFTRIG ADC_CFGR2_LFTRIG_Msk /*!< ADC low frequency trigger mode */ + +#define ADC_CFGR2_CKMODE_Pos (30U) +#define ADC_CFGR2_CKMODE_Msk (0x3UL << ADC_CFGR2_CKMODE_Pos) /*!< 0xC0000000 */ +#define ADC_CFGR2_CKMODE ADC_CFGR2_CKMODE_Msk /*!< ADC clock source and prescaler (prescaler only for clock source synchronous) */ +#define ADC_CFGR2_CKMODE_1 (0x2UL << ADC_CFGR2_CKMODE_Pos) /*!< 0x80000000 */ +#define ADC_CFGR2_CKMODE_0 (0x1UL << ADC_CFGR2_CKMODE_Pos) /*!< 0x40000000 */ + +/******************** Bit definition for ADC_SMPR register ******************/ +#define ADC_SMPR_SMP1_Pos (0U) +#define ADC_SMPR_SMP1_Msk (0x7UL << ADC_SMPR_SMP1_Pos) /*!< 0x00000007 */ +#define ADC_SMPR_SMP1 ADC_SMPR_SMP1_Msk /*!< ADC group of channels sampling time 1 */ +#define ADC_SMPR_SMP1_0 (0x1UL << ADC_SMPR_SMP1_Pos) /*!< 0x00000001 */ +#define ADC_SMPR_SMP1_1 (0x2UL << ADC_SMPR_SMP1_Pos) /*!< 0x00000002 */ +#define ADC_SMPR_SMP1_2 (0x4UL << ADC_SMPR_SMP1_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR_SMP2_Pos (4U) +#define ADC_SMPR_SMP2_Msk (0x7UL << ADC_SMPR_SMP2_Pos) /*!< 0x00000070 */ +#define ADC_SMPR_SMP2 ADC_SMPR_SMP2_Msk /*!< ADC group of channels sampling time 2 */ +#define ADC_SMPR_SMP2_0 (0x1UL << ADC_SMPR_SMP2_Pos) /*!< 0x00000010 */ +#define ADC_SMPR_SMP2_1 (0x2UL << ADC_SMPR_SMP2_Pos) /*!< 0x00000020 */ +#define ADC_SMPR_SMP2_2 (0x4UL << ADC_SMPR_SMP2_Pos) /*!< 0x00000040 */ + +#define ADC_SMPR_SMPSEL_Pos (8U) +#define ADC_SMPR_SMPSEL_Msk (0x7FFFFUL << ADC_SMPR_SMPSEL_Pos) /*!< 0x07FFFF00 */ +#define ADC_SMPR_SMPSEL ADC_SMPR_SMPSEL_Msk /*!< ADC all channels sampling time selection */ +#define ADC_SMPR_SMPSEL0_Pos (8U) +#define ADC_SMPR_SMPSEL0_Msk (0x1UL << ADC_SMPR_SMPSEL0_Pos) /*!< 0x00000100 */ +#define ADC_SMPR_SMPSEL0 ADC_SMPR_SMPSEL0_Msk /*!< ADC channel 0 sampling time selection */ +#define ADC_SMPR_SMPSEL1_Pos (9U) +#define ADC_SMPR_SMPSEL1_Msk (0x1UL << ADC_SMPR_SMPSEL1_Pos) /*!< 0x00000200 */ +#define ADC_SMPR_SMPSEL1 ADC_SMPR_SMPSEL1_Msk /*!< ADC channel 1 sampling time selection */ +#define ADC_SMPR_SMPSEL2_Pos (10U) +#define ADC_SMPR_SMPSEL2_Msk (0x1UL << ADC_SMPR_SMPSEL2_Pos) /*!< 0x00000400 */ +#define ADC_SMPR_SMPSEL2 ADC_SMPR_SMPSEL2_Msk /*!< ADC channel 2 sampling time selection */ +#define ADC_SMPR_SMPSEL3_Pos (11U) +#define ADC_SMPR_SMPSEL3_Msk (0x1UL << ADC_SMPR_SMPSEL3_Pos) /*!< 0x00000800 */ +#define ADC_SMPR_SMPSEL3 ADC_SMPR_SMPSEL3_Msk /*!< ADC channel 3 sampling time selection */ +#define ADC_SMPR_SMPSEL4_Pos (12U) +#define ADC_SMPR_SMPSEL4_Msk (0x1UL << ADC_SMPR_SMPSEL4_Pos) /*!< 0x00001000 */ +#define ADC_SMPR_SMPSEL4 ADC_SMPR_SMPSEL4_Msk /*!< ADC channel 4 sampling time selection */ +#define ADC_SMPR_SMPSEL5_Pos (13U) +#define ADC_SMPR_SMPSEL5_Msk (0x1UL << ADC_SMPR_SMPSEL5_Pos) /*!< 0x00002000 */ +#define ADC_SMPR_SMPSEL5 ADC_SMPR_SMPSEL5_Msk /*!< ADC channel 5 sampling time selection */ +#define ADC_SMPR_SMPSEL6_Pos (14U) +#define ADC_SMPR_SMPSEL6_Msk (0x1UL << ADC_SMPR_SMPSEL6_Pos) /*!< 0x00004000 */ +#define ADC_SMPR_SMPSEL6 ADC_SMPR_SMPSEL6_Msk /*!< ADC channel 6 sampling time selection */ +#define ADC_SMPR_SMPSEL7_Pos (15U) +#define ADC_SMPR_SMPSEL7_Msk (0x1UL << ADC_SMPR_SMPSEL7_Pos) /*!< 0x00008000 */ +#define ADC_SMPR_SMPSEL7 ADC_SMPR_SMPSEL7_Msk /*!< ADC channel 7 sampling time selection */ +#define ADC_SMPR_SMPSEL8_Pos (16U) +#define ADC_SMPR_SMPSEL8_Msk (0x1UL << ADC_SMPR_SMPSEL8_Pos) /*!< 0x00010000 */ +#define ADC_SMPR_SMPSEL8 ADC_SMPR_SMPSEL8_Msk /*!< ADC channel 8 sampling time selection */ +#define ADC_SMPR_SMPSEL9_Pos (17U) +#define ADC_SMPR_SMPSEL9_Msk (0x1UL << ADC_SMPR_SMPSEL9_Pos) /*!< 0x00020000 */ +#define ADC_SMPR_SMPSEL9 ADC_SMPR_SMPSEL9_Msk /*!< ADC channel 9 sampling time selection */ +#define ADC_SMPR_SMPSEL10_Pos (18U) +#define ADC_SMPR_SMPSEL10_Msk (0x1UL << ADC_SMPR_SMPSEL10_Pos) /*!< 0x00040000 */ +#define ADC_SMPR_SMPSEL10 ADC_SMPR_SMPSEL10_Msk /*!< ADC channel 10 sampling time selection */ +#define ADC_SMPR_SMPSEL11_Pos (19U) +#define ADC_SMPR_SMPSEL11_Msk (0x1UL << ADC_SMPR_SMPSEL11_Pos) /*!< 0x00080000 */ +#define ADC_SMPR_SMPSEL11 ADC_SMPR_SMPSEL11_Msk /*!< ADC channel 11 sampling time selection */ +#define ADC_SMPR_SMPSEL12_Pos (20U) +#define ADC_SMPR_SMPSEL12_Msk (0x1UL << ADC_SMPR_SMPSEL12_Pos) /*!< 0x00100000 */ +#define ADC_SMPR_SMPSEL12 ADC_SMPR_SMPSEL12_Msk /*!< ADC channel 12 sampling time selection */ +#define ADC_SMPR_SMPSEL13_Pos (21U) +#define ADC_SMPR_SMPSEL13_Msk (0x1UL << ADC_SMPR_SMPSEL13_Pos) /*!< 0x00200000 */ +#define ADC_SMPR_SMPSEL13 ADC_SMPR_SMPSEL13_Msk /*!< ADC channel 13 sampling time selection */ +#define ADC_SMPR_SMPSEL14_Pos (22U) +#define ADC_SMPR_SMPSEL14_Msk (0x1UL << ADC_SMPR_SMPSEL14_Pos) /*!< 0x00400000 */ +#define ADC_SMPR_SMPSEL14 ADC_SMPR_SMPSEL14_Msk /*!< ADC channel 14 sampling time selection */ +#define ADC_SMPR_SMPSEL15_Pos (23U) +#define ADC_SMPR_SMPSEL15_Msk (0x1UL << ADC_SMPR_SMPSEL15_Pos) /*!< 0x00800000 */ +#define ADC_SMPR_SMPSEL15 ADC_SMPR_SMPSEL15_Msk /*!< ADC channel 15 sampling time selection */ +#define ADC_SMPR_SMPSEL16_Pos (24U) +#define ADC_SMPR_SMPSEL16_Msk (0x1UL << ADC_SMPR_SMPSEL16_Pos) /*!< 0x01000000 */ +#define ADC_SMPR_SMPSEL16 ADC_SMPR_SMPSEL16_Msk /*!< ADC channel 16 sampling time selection */ +#define ADC_SMPR_SMPSEL17_Pos (25U) +#define ADC_SMPR_SMPSEL17_Msk (0x1UL << ADC_SMPR_SMPSEL17_Pos) /*!< 0x02000000 */ +#define ADC_SMPR_SMPSEL17 ADC_SMPR_SMPSEL17_Msk /*!< ADC channel 17 sampling time selection */ +#define ADC_SMPR_SMPSEL18_Pos (26U) +#define ADC_SMPR_SMPSEL18_Msk (0x1UL << ADC_SMPR_SMPSEL18_Pos) /*!< 0x04000000 */ +#define ADC_SMPR_SMPSEL18 ADC_SMPR_SMPSEL18_Msk /*!< ADC channel 18 sampling time selection */ + +/******************** Bit definition for ADC_TR1 register *******************/ +#define ADC_TR1_LT1_Pos (0U) +#define ADC_TR1_LT1_Msk (0xFFFUL << ADC_TR1_LT1_Pos) /*!< 0x00000FFF */ +#define ADC_TR1_LT1 ADC_TR1_LT1_Msk /*!< ADC analog watchdog 1 threshold low */ +#define ADC_TR1_LT1_0 (0x001UL << ADC_TR1_LT1_Pos) /*!< 0x00000001 */ +#define ADC_TR1_LT1_1 (0x002UL << ADC_TR1_LT1_Pos) /*!< 0x00000002 */ +#define ADC_TR1_LT1_2 (0x004UL << ADC_TR1_LT1_Pos) /*!< 0x00000004 */ +#define ADC_TR1_LT1_3 (0x008UL << ADC_TR1_LT1_Pos) /*!< 0x00000008 */ +#define ADC_TR1_LT1_4 (0x010UL << ADC_TR1_LT1_Pos) /*!< 0x00000010 */ +#define ADC_TR1_LT1_5 (0x020UL << ADC_TR1_LT1_Pos) /*!< 0x00000020 */ +#define ADC_TR1_LT1_6 (0x040UL << ADC_TR1_LT1_Pos) /*!< 0x00000040 */ +#define ADC_TR1_LT1_7 (0x080UL << ADC_TR1_LT1_Pos) /*!< 0x00000080 */ +#define ADC_TR1_LT1_8 (0x100UL << ADC_TR1_LT1_Pos) /*!< 0x00000100 */ +#define ADC_TR1_LT1_9 (0x200UL << ADC_TR1_LT1_Pos) /*!< 0x00000200 */ +#define ADC_TR1_LT1_10 (0x400UL << ADC_TR1_LT1_Pos) /*!< 0x00000400 */ +#define ADC_TR1_LT1_11 (0x800UL << ADC_TR1_LT1_Pos) /*!< 0x00000800 */ + +#define ADC_TR1_HT1_Pos (16U) +#define ADC_TR1_HT1_Msk (0xFFFUL << ADC_TR1_HT1_Pos) /*!< 0x0FFF0000 */ +#define ADC_TR1_HT1 ADC_TR1_HT1_Msk /*!< ADC Analog watchdog 1 threshold high */ +#define ADC_TR1_HT1_0 (0x001UL << ADC_TR1_HT1_Pos) /*!< 0x00010000 */ +#define ADC_TR1_HT1_1 (0x002UL << ADC_TR1_HT1_Pos) /*!< 0x00020000 */ +#define ADC_TR1_HT1_2 (0x004UL << ADC_TR1_HT1_Pos) /*!< 0x00040000 */ +#define ADC_TR1_HT1_3 (0x008UL << ADC_TR1_HT1_Pos) /*!< 0x00080000 */ +#define ADC_TR1_HT1_4 (0x010UL << ADC_TR1_HT1_Pos) /*!< 0x00100000 */ +#define ADC_TR1_HT1_5 (0x020UL << ADC_TR1_HT1_Pos) /*!< 0x00200000 */ +#define ADC_TR1_HT1_6 (0x040UL << ADC_TR1_HT1_Pos) /*!< 0x00400000 */ +#define ADC_TR1_HT1_7 (0x080UL << ADC_TR1_HT1_Pos) /*!< 0x00800000 */ +#define ADC_TR1_HT1_8 (0x100UL << ADC_TR1_HT1_Pos) /*!< 0x01000000 */ +#define ADC_TR1_HT1_9 (0x200UL << ADC_TR1_HT1_Pos) /*!< 0x02000000 */ +#define ADC_TR1_HT1_10 (0x400UL << ADC_TR1_HT1_Pos) /*!< 0x04000000 */ +#define ADC_TR1_HT1_11 (0x800UL << ADC_TR1_HT1_Pos) /*!< 0x08000000 */ + +/******************** Bit definition for ADC_TR2 register *******************/ +#define ADC_TR2_LT2_Pos (0U) +#define ADC_TR2_LT2_Msk (0xFFFUL << ADC_TR2_LT2_Pos) /*!< 0x00000FFF */ +#define ADC_TR2_LT2 ADC_TR2_LT2_Msk /*!< ADC analog watchdog 2 threshold low */ +#define ADC_TR2_LT2_0 (0x001UL << ADC_TR2_LT2_Pos) /*!< 0x00000001 */ +#define ADC_TR2_LT2_1 (0x002UL << ADC_TR2_LT2_Pos) /*!< 0x00000002 */ +#define ADC_TR2_LT2_2 (0x004UL << ADC_TR2_LT2_Pos) /*!< 0x00000004 */ +#define ADC_TR2_LT2_3 (0x008UL << ADC_TR2_LT2_Pos) /*!< 0x00000008 */ +#define ADC_TR2_LT2_4 (0x010UL << ADC_TR2_LT2_Pos) /*!< 0x00000010 */ +#define ADC_TR2_LT2_5 (0x020UL << ADC_TR2_LT2_Pos) /*!< 0x00000020 */ +#define ADC_TR2_LT2_6 (0x040UL << ADC_TR2_LT2_Pos) /*!< 0x00000040 */ +#define ADC_TR2_LT2_7 (0x080UL << ADC_TR2_LT2_Pos) /*!< 0x00000080 */ +#define ADC_TR2_LT2_8 (0x100UL << ADC_TR2_LT2_Pos) /*!< 0x00000100 */ +#define ADC_TR2_LT2_9 (0x200UL << ADC_TR2_LT2_Pos) /*!< 0x00000200 */ +#define ADC_TR2_LT2_10 (0x400UL << ADC_TR2_LT2_Pos) /*!< 0x00000400 */ +#define ADC_TR2_LT2_11 (0x800UL << ADC_TR2_LT2_Pos) /*!< 0x00000800 */ + +#define ADC_TR2_HT2_Pos (16U) +#define ADC_TR2_HT2_Msk (0xFFFUL << ADC_TR2_HT2_Pos) /*!< 0x0FFF0000 */ +#define ADC_TR2_HT2 ADC_TR2_HT2_Msk /*!< ADC analog watchdog 2 threshold high */ +#define ADC_TR2_HT2_0 (0x001UL << ADC_TR2_HT2_Pos) /*!< 0x00010000 */ +#define ADC_TR2_HT2_1 (0x002UL << ADC_TR2_HT2_Pos) /*!< 0x00020000 */ +#define ADC_TR2_HT2_2 (0x004UL << ADC_TR2_HT2_Pos) /*!< 0x00040000 */ +#define ADC_TR2_HT2_3 (0x008UL << ADC_TR2_HT2_Pos) /*!< 0x00080000 */ +#define ADC_TR2_HT2_4 (0x010UL << ADC_TR2_HT2_Pos) /*!< 0x00100000 */ +#define ADC_TR2_HT2_5 (0x020UL << ADC_TR2_HT2_Pos) /*!< 0x00200000 */ +#define ADC_TR2_HT2_6 (0x040UL << ADC_TR2_HT2_Pos) /*!< 0x00400000 */ +#define ADC_TR2_HT2_7 (0x080UL << ADC_TR2_HT2_Pos) /*!< 0x00800000 */ +#define ADC_TR2_HT2_8 (0x100UL << ADC_TR2_HT2_Pos) /*!< 0x01000000 */ +#define ADC_TR2_HT2_9 (0x200UL << ADC_TR2_HT2_Pos) /*!< 0x02000000 */ +#define ADC_TR2_HT2_10 (0x400UL << ADC_TR2_HT2_Pos) /*!< 0x04000000 */ +#define ADC_TR2_HT2_11 (0x800UL << ADC_TR2_HT2_Pos) /*!< 0x08000000 */ + +/******************** Bit definition for ADC_CHSELR register ****************/ +#define ADC_CHSELR_CHSEL_Pos (0U) +#define ADC_CHSELR_CHSEL_Msk (0x7FFFFUL << ADC_CHSELR_CHSEL_Pos) /*!< 0x0007FFFF */ +#define ADC_CHSELR_CHSEL ADC_CHSELR_CHSEL_Msk /*!< ADC group regular sequencer channels, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL18_Pos (18U) +#define ADC_CHSELR_CHSEL18_Msk (0x1UL << ADC_CHSELR_CHSEL18_Pos) /*!< 0x00040000 */ +#define ADC_CHSELR_CHSEL18 ADC_CHSELR_CHSEL18_Msk /*!< ADC group regular sequencer channel 18, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL17_Pos (17U) +#define ADC_CHSELR_CHSEL17_Msk (0x1UL << ADC_CHSELR_CHSEL17_Pos) /*!< 0x00020000 */ +#define ADC_CHSELR_CHSEL17 ADC_CHSELR_CHSEL17_Msk /*!< ADC group regular sequencer channel 17, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL16_Pos (16U) +#define ADC_CHSELR_CHSEL16_Msk (0x1UL << ADC_CHSELR_CHSEL16_Pos) /*!< 0x00010000 */ +#define ADC_CHSELR_CHSEL16 ADC_CHSELR_CHSEL16_Msk /*!< ADC group regular sequencer channel 16, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL15_Pos (15U) +#define ADC_CHSELR_CHSEL15_Msk (0x1UL << ADC_CHSELR_CHSEL15_Pos) /*!< 0x00008000 */ +#define ADC_CHSELR_CHSEL15 ADC_CHSELR_CHSEL15_Msk /*!< ADC group regular sequencer channel 15, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL14_Pos (14U) +#define ADC_CHSELR_CHSEL14_Msk (0x1UL << ADC_CHSELR_CHSEL14_Pos) /*!< 0x00004000 */ +#define ADC_CHSELR_CHSEL14 ADC_CHSELR_CHSEL14_Msk /*!< ADC group regular sequencer channel 14, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL13_Pos (13U) +#define ADC_CHSELR_CHSEL13_Msk (0x1UL << ADC_CHSELR_CHSEL13_Pos) /*!< 0x00002000 */ +#define ADC_CHSELR_CHSEL13 ADC_CHSELR_CHSEL13_Msk /*!< ADC group regular sequencer channel 13, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL12_Pos (12U) +#define ADC_CHSELR_CHSEL12_Msk (0x1UL << ADC_CHSELR_CHSEL12_Pos) /*!< 0x00001000 */ +#define ADC_CHSELR_CHSEL12 ADC_CHSELR_CHSEL12_Msk /*!< ADC group regular sequencer channel 12, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL11_Pos (11U) +#define ADC_CHSELR_CHSEL11_Msk (0x1UL << ADC_CHSELR_CHSEL11_Pos) /*!< 0x00000800 */ +#define ADC_CHSELR_CHSEL11 ADC_CHSELR_CHSEL11_Msk /*!< ADC group regular sequencer channel 11, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL10_Pos (10U) +#define ADC_CHSELR_CHSEL10_Msk (0x1UL << ADC_CHSELR_CHSEL10_Pos) /*!< 0x00000400 */ +#define ADC_CHSELR_CHSEL10 ADC_CHSELR_CHSEL10_Msk /*!< ADC group regular sequencer channel 10, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL9_Pos (9U) +#define ADC_CHSELR_CHSEL9_Msk (0x1UL << ADC_CHSELR_CHSEL9_Pos) /*!< 0x00000200 */ +#define ADC_CHSELR_CHSEL9 ADC_CHSELR_CHSEL9_Msk /*!< ADC group regular sequencer channel 9, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL8_Pos (8U) +#define ADC_CHSELR_CHSEL8_Msk (0x1UL << ADC_CHSELR_CHSEL8_Pos) /*!< 0x00000100 */ +#define ADC_CHSELR_CHSEL8 ADC_CHSELR_CHSEL8_Msk /*!< ADC group regular sequencer channel 8, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL7_Pos (7U) +#define ADC_CHSELR_CHSEL7_Msk (0x1UL << ADC_CHSELR_CHSEL7_Pos) /*!< 0x00000080 */ +#define ADC_CHSELR_CHSEL7 ADC_CHSELR_CHSEL7_Msk /*!< ADC group regular sequencer channel 7, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL6_Pos (6U) +#define ADC_CHSELR_CHSEL6_Msk (0x1UL << ADC_CHSELR_CHSEL6_Pos) /*!< 0x00000040 */ +#define ADC_CHSELR_CHSEL6 ADC_CHSELR_CHSEL6_Msk /*!< ADC group regular sequencer channel 6, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL5_Pos (5U) +#define ADC_CHSELR_CHSEL5_Msk (0x1UL << ADC_CHSELR_CHSEL5_Pos) /*!< 0x00000020 */ +#define ADC_CHSELR_CHSEL5 ADC_CHSELR_CHSEL5_Msk /*!< ADC group regular sequencer channel 5, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL4_Pos (4U) +#define ADC_CHSELR_CHSEL4_Msk (0x1UL << ADC_CHSELR_CHSEL4_Pos) /*!< 0x00000010 */ +#define ADC_CHSELR_CHSEL4 ADC_CHSELR_CHSEL4_Msk /*!< ADC group regular sequencer channel 4, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL3_Pos (3U) +#define ADC_CHSELR_CHSEL3_Msk (0x1UL << ADC_CHSELR_CHSEL3_Pos) /*!< 0x00000008 */ +#define ADC_CHSELR_CHSEL3 ADC_CHSELR_CHSEL3_Msk /*!< ADC group regular sequencer channel 3, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL2_Pos (2U) +#define ADC_CHSELR_CHSEL2_Msk (0x1UL << ADC_CHSELR_CHSEL2_Pos) /*!< 0x00000004 */ +#define ADC_CHSELR_CHSEL2 ADC_CHSELR_CHSEL2_Msk /*!< ADC group regular sequencer channel 2, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL1_Pos (1U) +#define ADC_CHSELR_CHSEL1_Msk (0x1UL << ADC_CHSELR_CHSEL1_Pos) /*!< 0x00000002 */ +#define ADC_CHSELR_CHSEL1 ADC_CHSELR_CHSEL1_Msk /*!< ADC group regular sequencer channel 1, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL0_Pos (0U) +#define ADC_CHSELR_CHSEL0_Msk (0x1UL << ADC_CHSELR_CHSEL0_Pos) /*!< 0x00000001 */ +#define ADC_CHSELR_CHSEL0 ADC_CHSELR_CHSEL0_Msk /*!< ADC group regular sequencer channel 0, available when ADC_CFGR1_CHSELRMOD is reset */ + +#define ADC_CHSELR_SQ_ALL_Pos (0U) +#define ADC_CHSELR_SQ_ALL_Msk (0xFFFFFFFFUL << ADC_CHSELR_SQ_ALL_Pos) /*!< 0xFFFFFFFF */ +#define ADC_CHSELR_SQ_ALL ADC_CHSELR_SQ_ALL_Msk /*!< ADC group regular sequencer all ranks, available when ADC_CFGR1_CHSELRMOD is set */ + +#define ADC_CHSELR_SQ8_Pos (28U) +#define ADC_CHSELR_SQ8_Msk (0xFUL << ADC_CHSELR_SQ8_Pos) /*!< 0xF0000000 */ +#define ADC_CHSELR_SQ8 ADC_CHSELR_SQ8_Msk /*!< ADC group regular sequencer rank 8, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ8_0 (0x1UL << ADC_CHSELR_SQ8_Pos) /*!< 0x10000000 */ +#define ADC_CHSELR_SQ8_1 (0x2UL << ADC_CHSELR_SQ8_Pos) /*!< 0x20000000 */ +#define ADC_CHSELR_SQ8_2 (0x4UL << ADC_CHSELR_SQ8_Pos) /*!< 0x40000000 */ +#define ADC_CHSELR_SQ8_3 (0x8UL << ADC_CHSELR_SQ8_Pos) /*!< 0x80000000 */ + +#define ADC_CHSELR_SQ7_Pos (24U) +#define ADC_CHSELR_SQ7_Msk (0xFUL << ADC_CHSELR_SQ7_Pos) /*!< 0x0F000000 */ +#define ADC_CHSELR_SQ7 ADC_CHSELR_SQ7_Msk /*!< ADC group regular sequencer rank 7, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ7_0 (0x1UL << ADC_CHSELR_SQ7_Pos) /*!< 0x01000000 */ +#define ADC_CHSELR_SQ7_1 (0x2UL << ADC_CHSELR_SQ7_Pos) /*!< 0x02000000 */ +#define ADC_CHSELR_SQ7_2 (0x4UL << ADC_CHSELR_SQ7_Pos) /*!< 0x04000000 */ +#define ADC_CHSELR_SQ7_3 (0x8UL << ADC_CHSELR_SQ7_Pos) /*!< 0x08000000 */ + +#define ADC_CHSELR_SQ6_Pos (20U) +#define ADC_CHSELR_SQ6_Msk (0xFUL << ADC_CHSELR_SQ6_Pos) /*!< 0x00F00000 */ +#define ADC_CHSELR_SQ6 ADC_CHSELR_SQ6_Msk /*!< ADC group regular sequencer rank 6, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ6_0 (0x1UL << ADC_CHSELR_SQ6_Pos) /*!< 0x00100000 */ +#define ADC_CHSELR_SQ6_1 (0x2UL << ADC_CHSELR_SQ6_Pos) /*!< 0x00200000 */ +#define ADC_CHSELR_SQ6_2 (0x4UL << ADC_CHSELR_SQ6_Pos) /*!< 0x00400000 */ +#define ADC_CHSELR_SQ6_3 (0x8UL << ADC_CHSELR_SQ6_Pos) /*!< 0x00800000 */ + +#define ADC_CHSELR_SQ5_Pos (16U) +#define ADC_CHSELR_SQ5_Msk (0xFUL << ADC_CHSELR_SQ5_Pos) /*!< 0x000F0000 */ +#define ADC_CHSELR_SQ5 ADC_CHSELR_SQ5_Msk /*!< ADC group regular sequencer rank 5, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ5_0 (0x1UL << ADC_CHSELR_SQ5_Pos) /*!< 0x00010000 */ +#define ADC_CHSELR_SQ5_1 (0x2UL << ADC_CHSELR_SQ5_Pos) /*!< 0x00020000 */ +#define ADC_CHSELR_SQ5_2 (0x4UL << ADC_CHSELR_SQ5_Pos) /*!< 0x00040000 */ +#define ADC_CHSELR_SQ5_3 (0x8UL << ADC_CHSELR_SQ5_Pos) /*!< 0x00080000 */ + +#define ADC_CHSELR_SQ4_Pos (12U) +#define ADC_CHSELR_SQ4_Msk (0xFUL << ADC_CHSELR_SQ4_Pos) /*!< 0x0000F000 */ +#define ADC_CHSELR_SQ4 ADC_CHSELR_SQ4_Msk /*!< ADC group regular sequencer rank 4, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ4_0 (0x1UL << ADC_CHSELR_SQ4_Pos) /*!< 0x00001000 */ +#define ADC_CHSELR_SQ4_1 (0x2UL << ADC_CHSELR_SQ4_Pos) /*!< 0x00002000 */ +#define ADC_CHSELR_SQ4_2 (0x4UL << ADC_CHSELR_SQ4_Pos) /*!< 0x00004000 */ +#define ADC_CHSELR_SQ4_3 (0x8UL << ADC_CHSELR_SQ4_Pos) /*!< 0x00008000 */ + +#define ADC_CHSELR_SQ3_Pos (8U) +#define ADC_CHSELR_SQ3_Msk (0xFUL << ADC_CHSELR_SQ3_Pos) /*!< 0x00000F00 */ +#define ADC_CHSELR_SQ3 ADC_CHSELR_SQ3_Msk /*!< ADC group regular sequencer rank 3, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ3_0 (0x1UL << ADC_CHSELR_SQ3_Pos) /*!< 0x00000100 */ +#define ADC_CHSELR_SQ3_1 (0x2UL << ADC_CHSELR_SQ3_Pos) /*!< 0x00000200 */ +#define ADC_CHSELR_SQ3_2 (0x4UL << ADC_CHSELR_SQ3_Pos) /*!< 0x00000400 */ +#define ADC_CHSELR_SQ3_3 (0x8UL << ADC_CHSELR_SQ3_Pos) /*!< 0x00000800 */ + +#define ADC_CHSELR_SQ2_Pos (4U) +#define ADC_CHSELR_SQ2_Msk (0xFUL << ADC_CHSELR_SQ2_Pos) /*!< 0x000000F0 */ +#define ADC_CHSELR_SQ2 ADC_CHSELR_SQ2_Msk /*!< ADC group regular sequencer rank 2, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ2_0 (0x1UL << ADC_CHSELR_SQ2_Pos) /*!< 0x00000010 */ +#define ADC_CHSELR_SQ2_1 (0x2UL << ADC_CHSELR_SQ2_Pos) /*!< 0x00000020 */ +#define ADC_CHSELR_SQ2_2 (0x4UL << ADC_CHSELR_SQ2_Pos) /*!< 0x00000040 */ +#define ADC_CHSELR_SQ2_3 (0x8UL << ADC_CHSELR_SQ2_Pos) /*!< 0x00000080 */ + +#define ADC_CHSELR_SQ1_Pos (0U) +#define ADC_CHSELR_SQ1_Msk (0xFUL << ADC_CHSELR_SQ1_Pos) /*!< 0x0000000F */ +#define ADC_CHSELR_SQ1 ADC_CHSELR_SQ1_Msk /*!< ADC group regular sequencer rank 1, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ1_0 (0x1UL << ADC_CHSELR_SQ1_Pos) /*!< 0x00000001 */ +#define ADC_CHSELR_SQ1_1 (0x2UL << ADC_CHSELR_SQ1_Pos) /*!< 0x00000002 */ +#define ADC_CHSELR_SQ1_2 (0x4UL << ADC_CHSELR_SQ1_Pos) /*!< 0x00000004 */ +#define ADC_CHSELR_SQ1_3 (0x8UL << ADC_CHSELR_SQ1_Pos) /*!< 0x00000008 */ + +/******************** Bit definition for ADC_TR3 register *******************/ +#define ADC_TR3_LT3_Pos (0U) +#define ADC_TR3_LT3_Msk (0xFFFUL << ADC_TR3_LT3_Pos) /*!< 0x00000FFF */ +#define ADC_TR3_LT3 ADC_TR3_LT3_Msk /*!< ADC analog watchdog 3 threshold low */ +#define ADC_TR3_LT3_0 (0x001UL << ADC_TR3_LT3_Pos) /*!< 0x00000001 */ +#define ADC_TR3_LT3_1 (0x002UL << ADC_TR3_LT3_Pos) /*!< 0x00000002 */ +#define ADC_TR3_LT3_2 (0x004UL << ADC_TR3_LT3_Pos) /*!< 0x00000004 */ +#define ADC_TR3_LT3_3 (0x008UL << ADC_TR3_LT3_Pos) /*!< 0x00000008 */ +#define ADC_TR3_LT3_4 (0x010UL << ADC_TR3_LT3_Pos) /*!< 0x00000010 */ +#define ADC_TR3_LT3_5 (0x020UL << ADC_TR3_LT3_Pos) /*!< 0x00000020 */ +#define ADC_TR3_LT3_6 (0x040UL << ADC_TR3_LT3_Pos) /*!< 0x00000040 */ +#define ADC_TR3_LT3_7 (0x080UL << ADC_TR3_LT3_Pos) /*!< 0x00000080 */ +#define ADC_TR3_LT3_8 (0x100UL << ADC_TR3_LT3_Pos) /*!< 0x00000100 */ +#define ADC_TR3_LT3_9 (0x200UL << ADC_TR3_LT3_Pos) /*!< 0x00000200 */ +#define ADC_TR3_LT3_10 (0x400UL << ADC_TR3_LT3_Pos) /*!< 0x00000400 */ +#define ADC_TR3_LT3_11 (0x800UL << ADC_TR3_LT3_Pos) /*!< 0x00000800 */ + +#define ADC_TR3_HT3_Pos (16U) +#define ADC_TR3_HT3_Msk (0xFFFUL << ADC_TR3_HT3_Pos) /*!< 0x0FFF0000 */ +#define ADC_TR3_HT3 ADC_TR3_HT3_Msk /*!< ADC analog watchdog 3 threshold high */ +#define ADC_TR3_HT3_0 (0x001UL << ADC_TR3_HT3_Pos) /*!< 0x00010000 */ +#define ADC_TR3_HT3_1 (0x002UL << ADC_TR3_HT3_Pos) /*!< 0x00020000 */ +#define ADC_TR3_HT3_2 (0x004UL << ADC_TR3_HT3_Pos) /*!< 0x00040000 */ +#define ADC_TR3_HT3_3 (0x008UL << ADC_TR3_HT3_Pos) /*!< 0x00080000 */ +#define ADC_TR3_HT3_4 (0x010UL << ADC_TR3_HT3_Pos) /*!< 0x00100000 */ +#define ADC_TR3_HT3_5 (0x020UL << ADC_TR3_HT3_Pos) /*!< 0x00200000 */ +#define ADC_TR3_HT3_6 (0x040UL << ADC_TR3_HT3_Pos) /*!< 0x00400000 */ +#define ADC_TR3_HT3_7 (0x080UL << ADC_TR3_HT3_Pos) /*!< 0x00800000 */ +#define ADC_TR3_HT3_8 (0x100UL << ADC_TR3_HT3_Pos) /*!< 0x01000000 */ +#define ADC_TR3_HT3_9 (0x200UL << ADC_TR3_HT3_Pos) /*!< 0x02000000 */ +#define ADC_TR3_HT3_10 (0x400UL << ADC_TR3_HT3_Pos) /*!< 0x04000000 */ +#define ADC_TR3_HT3_11 (0x800UL << ADC_TR3_HT3_Pos) /*!< 0x08000000 */ + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_DATA_Pos (0U) +#define ADC_DR_DATA_Msk (0xFFFFUL << ADC_DR_DATA_Pos) /*!< 0x0000FFFF */ +#define ADC_DR_DATA ADC_DR_DATA_Msk /*!< ADC group regular conversion data */ +#define ADC_DR_DATA_0 (0x0001UL << ADC_DR_DATA_Pos) /*!< 0x00000001 */ +#define ADC_DR_DATA_1 (0x0002UL << ADC_DR_DATA_Pos) /*!< 0x00000002 */ +#define ADC_DR_DATA_2 (0x0004UL << ADC_DR_DATA_Pos) /*!< 0x00000004 */ +#define ADC_DR_DATA_3 (0x0008UL << ADC_DR_DATA_Pos) /*!< 0x00000008 */ +#define ADC_DR_DATA_4 (0x0010UL << ADC_DR_DATA_Pos) /*!< 0x00000010 */ +#define ADC_DR_DATA_5 (0x0020UL << ADC_DR_DATA_Pos) /*!< 0x00000020 */ +#define ADC_DR_DATA_6 (0x0040UL << ADC_DR_DATA_Pos) /*!< 0x00000040 */ +#define ADC_DR_DATA_7 (0x0080UL << ADC_DR_DATA_Pos) /*!< 0x00000080 */ +#define ADC_DR_DATA_8 (0x0100UL << ADC_DR_DATA_Pos) /*!< 0x00000100 */ +#define ADC_DR_DATA_9 (0x0200UL << ADC_DR_DATA_Pos) /*!< 0x00000200 */ +#define ADC_DR_DATA_10 (0x0400UL << ADC_DR_DATA_Pos) /*!< 0x00000400 */ +#define ADC_DR_DATA_11 (0x0800UL << ADC_DR_DATA_Pos) /*!< 0x00000800 */ +#define ADC_DR_DATA_12 (0x1000UL << ADC_DR_DATA_Pos) /*!< 0x00001000 */ +#define ADC_DR_DATA_13 (0x2000UL << ADC_DR_DATA_Pos) /*!< 0x00002000 */ +#define ADC_DR_DATA_14 (0x4000UL << ADC_DR_DATA_Pos) /*!< 0x00004000 */ +#define ADC_DR_DATA_15 (0x8000UL << ADC_DR_DATA_Pos) /*!< 0x00008000 */ + +/******************** Bit definition for ADC_AWD2CR register ****************/ +#define ADC_AWD2CR_AWD2CH_Pos (0U) +#define ADC_AWD2CR_AWD2CH_Msk (0x7FFFFUL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD2CR_AWD2CH ADC_AWD2CR_AWD2CH_Msk /*!< ADC analog watchdog 2 monitored channel selection */ +#define ADC_AWD2CR_AWD2CH_0 (0x00001UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD2CR_AWD2CH_1 (0x00002UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD2CR_AWD2CH_2 (0x00004UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD2CR_AWD2CH_3 (0x00008UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD2CR_AWD2CH_4 (0x00010UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD2CR_AWD2CH_5 (0x00020UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD2CR_AWD2CH_6 (0x00040UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD2CR_AWD2CH_7 (0x00080UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD2CR_AWD2CH_8 (0x00100UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD2CR_AWD2CH_9 (0x00200UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD2CR_AWD2CH_10 (0x00400UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD2CR_AWD2CH_11 (0x00800UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD2CR_AWD2CH_12 (0x01000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD2CR_AWD2CH_13 (0x02000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD2CR_AWD2CH_14 (0x04000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD2CR_AWD2CH_15 (0x08000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD2CR_AWD2CH_16 (0x10000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD2CR_AWD2CH_17 (0x20000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD2CR_AWD2CH_18 (0x40000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_AWD3CR register ****************/ +#define ADC_AWD3CR_AWD3CH_Pos (0U) +#define ADC_AWD3CR_AWD3CH_Msk (0x7FFFFUL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD3CR_AWD3CH ADC_AWD3CR_AWD3CH_Msk /*!< ADC analog watchdog 3 monitored channel selection */ +#define ADC_AWD3CR_AWD3CH_0 (0x00001UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD3CR_AWD3CH_1 (0x00002UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD3CR_AWD3CH_2 (0x00004UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD3CR_AWD3CH_3 (0x00008UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD3CR_AWD3CH_4 (0x00010UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD3CR_AWD3CH_5 (0x00020UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD3CR_AWD3CH_6 (0x00040UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD3CR_AWD3CH_7 (0x00080UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD3CR_AWD3CH_8 (0x00100UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD3CR_AWD3CH_9 (0x00200UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD3CR_AWD3CH_10 (0x00400UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD3CR_AWD3CH_11 (0x00800UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD3CR_AWD3CH_12 (0x01000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD3CR_AWD3CH_13 (0x02000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD3CR_AWD3CH_14 (0x04000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD3CR_AWD3CH_15 (0x08000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD3CR_AWD3CH_16 (0x10000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD3CR_AWD3CH_17 (0x20000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD3CR_AWD3CH_18 (0x40000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_CALFACT register ***************/ +#define ADC_CALFACT_CALFACT_Pos (0U) +#define ADC_CALFACT_CALFACT_Msk (0x7FUL << ADC_CALFACT_CALFACT_Pos) /*!< 0x0000007F */ +#define ADC_CALFACT_CALFACT ADC_CALFACT_CALFACT_Msk /*!< ADC calibration factor in single-ended mode */ +#define ADC_CALFACT_CALFACT_0 (0x01UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000001 */ +#define ADC_CALFACT_CALFACT_1 (0x02UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000002 */ +#define ADC_CALFACT_CALFACT_2 (0x04UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000004 */ +#define ADC_CALFACT_CALFACT_3 (0x08UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000008 */ +#define ADC_CALFACT_CALFACT_4 (0x10UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000010 */ +#define ADC_CALFACT_CALFACT_5 (0x20UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000020 */ +#define ADC_CALFACT_CALFACT_6 (0x40UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000040 */ + +/************************* ADC Common registers *****************************/ +/******************** Bit definition for ADC_CCR register *******************/ +#define ADC_CCR_PRESC_Pos (18U) +#define ADC_CCR_PRESC_Msk (0xFUL << ADC_CCR_PRESC_Pos) /*!< 0x003C0000 */ +#define ADC_CCR_PRESC ADC_CCR_PRESC_Msk /*!< ADC common clock prescaler, only for clock source asynchronous */ +#define ADC_CCR_PRESC_0 (0x1UL << ADC_CCR_PRESC_Pos) /*!< 0x00040000 */ +#define ADC_CCR_PRESC_1 (0x2UL << ADC_CCR_PRESC_Pos) /*!< 0x00080000 */ +#define ADC_CCR_PRESC_2 (0x4UL << ADC_CCR_PRESC_Pos) /*!< 0x00100000 */ +#define ADC_CCR_PRESC_3 (0x8UL << ADC_CCR_PRESC_Pos) /*!< 0x00200000 */ + +#define ADC_CCR_VREFEN_Pos (22U) +#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */ +#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */ +#define ADC_CCR_TSEN_Pos (23U) +#define ADC_CCR_TSEN_Msk (0x1UL << ADC_CCR_TSEN_Pos) /*!< 0x00800000 */ +#define ADC_CCR_TSEN ADC_CCR_TSEN_Msk /*!< ADC internal path to temperature sensor enable */ +#define ADC_CCR_VBATEN_Pos (24U) +#define ADC_CCR_VBATEN_Msk (0x1UL << ADC_CCR_VBATEN_Pos) /*!< 0x01000000 */ +#define ADC_CCR_VBATEN ADC_CCR_VBATEN_Msk /*!< ADC internal path to battery voltage enable */ + +/* Legacy */ +#define ADC_CCR_LFMEN_Pos (25U) +#define ADC_CCR_LFMEN_Msk (0x1UL << ADC_CCR_LFMEN_Pos) /*!< 0x02000000 */ +#define ADC_CCR_LFMEN ADC_CCR_LFMEN_Msk /*!< Legacy feature, useless on STM32G0 (ADC common clock low frequency mode is automatically managed by ADC peripheral on STM32G0) */ + + +/******************************************************************************/ +/* */ +/* CRC calculation unit */ +/* */ +/******************************************************************************/ +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR_Pos (0U) +#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */ + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR_Pos (0U) +#define CRC_IDR_IDR_Msk (0xFFFFFFFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 32-bits data register bits */ + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET_Pos (0U) +#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */ +#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */ +#define CRC_CR_POLYSIZE_Pos (3U) +#define CRC_CR_POLYSIZE_Msk (0x3UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000018 */ +#define CRC_CR_POLYSIZE CRC_CR_POLYSIZE_Msk /*!< Polynomial size bits */ +#define CRC_CR_POLYSIZE_0 (0x1UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000008 */ +#define CRC_CR_POLYSIZE_1 (0x2UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000010 */ +#define CRC_CR_REV_IN_Pos (5U) +#define CRC_CR_REV_IN_Msk (0x3UL << CRC_CR_REV_IN_Pos) /*!< 0x00000060 */ +#define CRC_CR_REV_IN CRC_CR_REV_IN_Msk /*!< REV_IN Reverse Input Data bits */ +#define CRC_CR_REV_IN_0 (0x1UL << CRC_CR_REV_IN_Pos) /*!< 0x00000020 */ +#define CRC_CR_REV_IN_1 (0x2UL << CRC_CR_REV_IN_Pos) /*!< 0x00000040 */ +#define CRC_CR_REV_OUT_Pos (7U) +#define CRC_CR_REV_OUT_Msk (0x1UL << CRC_CR_REV_OUT_Pos) /*!< 0x00000080 */ +#define CRC_CR_REV_OUT CRC_CR_REV_OUT_Msk /*!< REV_OUT Reverse Output Data bits */ + +/******************* Bit definition for CRC_INIT register *******************/ +#define CRC_INIT_INIT_Pos (0U) +#define CRC_INIT_INIT_Msk (0xFFFFFFFFUL << CRC_INIT_INIT_Pos) /*!< 0xFFFFFFFF */ +#define CRC_INIT_INIT CRC_INIT_INIT_Msk /*!< Initial CRC value bits */ + +/******************* Bit definition for CRC_POL register ********************/ +#define CRC_POL_POL_Pos (0U) +#define CRC_POL_POL_Msk (0xFFFFFFFFUL << CRC_POL_POL_Pos) /*!< 0xFFFFFFFF */ +#define CRC_POL_POL CRC_POL_POL_Msk /*!< Coefficients of the polynomial */ + + + +/******************************************************************************/ +/* */ +/* Debug MCU */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* DMA Controller (DMA) */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for DMA_ISR register ********************/ +#define DMA_ISR_GIF1_Pos (0U) +#define DMA_ISR_GIF1_Msk (0x1UL << DMA_ISR_GIF1_Pos) /*!< 0x00000001 */ +#define DMA_ISR_GIF1 DMA_ISR_GIF1_Msk /*!< Channel 1 Global interrupt flag */ +#define DMA_ISR_TCIF1_Pos (1U) +#define DMA_ISR_TCIF1_Msk (0x1UL << DMA_ISR_TCIF1_Pos) /*!< 0x00000002 */ +#define DMA_ISR_TCIF1 DMA_ISR_TCIF1_Msk /*!< Channel 1 Transfer Complete flag */ +#define DMA_ISR_HTIF1_Pos (2U) +#define DMA_ISR_HTIF1_Msk (0x1UL << DMA_ISR_HTIF1_Pos) /*!< 0x00000004 */ +#define DMA_ISR_HTIF1 DMA_ISR_HTIF1_Msk /*!< Channel 1 Half Transfer flag */ +#define DMA_ISR_TEIF1_Pos (3U) +#define DMA_ISR_TEIF1_Msk (0x1UL << DMA_ISR_TEIF1_Pos) /*!< 0x00000008 */ +#define DMA_ISR_TEIF1 DMA_ISR_TEIF1_Msk /*!< Channel 1 Transfer Error flag */ +#define DMA_ISR_GIF2_Pos (4U) +#define DMA_ISR_GIF2_Msk (0x1UL << DMA_ISR_GIF2_Pos) /*!< 0x00000010 */ +#define DMA_ISR_GIF2 DMA_ISR_GIF2_Msk /*!< Channel 2 Global interrupt flag */ +#define DMA_ISR_TCIF2_Pos (5U) +#define DMA_ISR_TCIF2_Msk (0x1UL << DMA_ISR_TCIF2_Pos) /*!< 0x00000020 */ +#define DMA_ISR_TCIF2 DMA_ISR_TCIF2_Msk /*!< Channel 2 Transfer Complete flag */ +#define DMA_ISR_HTIF2_Pos (6U) +#define DMA_ISR_HTIF2_Msk (0x1UL << DMA_ISR_HTIF2_Pos) /*!< 0x00000040 */ +#define DMA_ISR_HTIF2 DMA_ISR_HTIF2_Msk /*!< Channel 2 Half Transfer flag */ +#define DMA_ISR_TEIF2_Pos (7U) +#define DMA_ISR_TEIF2_Msk (0x1UL << DMA_ISR_TEIF2_Pos) /*!< 0x00000080 */ +#define DMA_ISR_TEIF2 DMA_ISR_TEIF2_Msk /*!< Channel 2 Transfer Error flag */ +#define DMA_ISR_GIF3_Pos (8U) +#define DMA_ISR_GIF3_Msk (0x1UL << DMA_ISR_GIF3_Pos) /*!< 0x00000100 */ +#define DMA_ISR_GIF3 DMA_ISR_GIF3_Msk /*!< Channel 3 Global interrupt flag */ +#define DMA_ISR_TCIF3_Pos (9U) +#define DMA_ISR_TCIF3_Msk (0x1UL << DMA_ISR_TCIF3_Pos) /*!< 0x00000200 */ +#define DMA_ISR_TCIF3 DMA_ISR_TCIF3_Msk /*!< Channel 3 Transfer Complete flag */ +#define DMA_ISR_HTIF3_Pos (10U) +#define DMA_ISR_HTIF3_Msk (0x1UL << DMA_ISR_HTIF3_Pos) /*!< 0x00000400 */ +#define DMA_ISR_HTIF3 DMA_ISR_HTIF3_Msk /*!< Channel 3 Half Transfer flag */ +#define DMA_ISR_TEIF3_Pos (11U) +#define DMA_ISR_TEIF3_Msk (0x1UL << DMA_ISR_TEIF3_Pos) /*!< 0x00000800 */ +#define DMA_ISR_TEIF3 DMA_ISR_TEIF3_Msk /*!< Channel 3 Transfer Error flag */ +#define DMA_ISR_GIF4_Pos (12U) +#define DMA_ISR_GIF4_Msk (0x1UL << DMA_ISR_GIF4_Pos) /*!< 0x00001000 */ +#define DMA_ISR_GIF4 DMA_ISR_GIF4_Msk /*!< Channel 4 Global interrupt flag */ +#define DMA_ISR_TCIF4_Pos (13U) +#define DMA_ISR_TCIF4_Msk (0x1UL << DMA_ISR_TCIF4_Pos) /*!< 0x00002000 */ +#define DMA_ISR_TCIF4 DMA_ISR_TCIF4_Msk /*!< Channel 4 Transfer Complete flag */ +#define DMA_ISR_HTIF4_Pos (14U) +#define DMA_ISR_HTIF4_Msk (0x1UL << DMA_ISR_HTIF4_Pos) /*!< 0x00004000 */ +#define DMA_ISR_HTIF4 DMA_ISR_HTIF4_Msk /*!< Channel 4 Half Transfer flag */ +#define DMA_ISR_TEIF4_Pos (15U) +#define DMA_ISR_TEIF4_Msk (0x1UL << DMA_ISR_TEIF4_Pos) /*!< 0x00008000 */ +#define DMA_ISR_TEIF4 DMA_ISR_TEIF4_Msk /*!< Channel 4 Transfer Error flag */ +#define DMA_ISR_GIF5_Pos (16U) +#define DMA_ISR_GIF5_Msk (0x1UL << DMA_ISR_GIF5_Pos) /*!< 0x00010000 */ +#define DMA_ISR_GIF5 DMA_ISR_GIF5_Msk /*!< Channel 5 Global interrupt flag */ +#define DMA_ISR_TCIF5_Pos (17U) +#define DMA_ISR_TCIF5_Msk (0x1UL << DMA_ISR_TCIF5_Pos) /*!< 0x00020000 */ +#define DMA_ISR_TCIF5 DMA_ISR_TCIF5_Msk /*!< Channel 5 Transfer Complete flag */ +#define DMA_ISR_HTIF5_Pos (18U) +#define DMA_ISR_HTIF5_Msk (0x1UL << DMA_ISR_HTIF5_Pos) /*!< 0x00040000 */ +#define DMA_ISR_HTIF5 DMA_ISR_HTIF5_Msk /*!< Channel 5 Half Transfer flag */ +#define DMA_ISR_TEIF5_Pos (19U) +#define DMA_ISR_TEIF5_Msk (0x1UL << DMA_ISR_TEIF5_Pos) /*!< 0x00080000 */ +#define DMA_ISR_TEIF5 DMA_ISR_TEIF5_Msk /*!< Channel 5 Transfer Error flag */ +#define DMA_ISR_GIF6_Pos (20U) +#define DMA_ISR_GIF6_Msk (0x1UL << DMA_ISR_GIF6_Pos) /*!< 0x00100000 */ +#define DMA_ISR_GIF6 DMA_ISR_GIF6_Msk /*!< Channel 6 Global interrupt flag */ +#define DMA_ISR_TCIF6_Pos (21U) +#define DMA_ISR_TCIF6_Msk (0x1UL << DMA_ISR_TCIF6_Pos) /*!< 0x00200000 */ +#define DMA_ISR_TCIF6 DMA_ISR_TCIF6_Msk /*!< Channel 6 Transfer Complete flag */ +#define DMA_ISR_HTIF6_Pos (22U) +#define DMA_ISR_HTIF6_Msk (0x1UL << DMA_ISR_HTIF6_Pos) /*!< 0x00400000 */ +#define DMA_ISR_HTIF6 DMA_ISR_HTIF6_Msk /*!< Channel 6 Half Transfer flag */ +#define DMA_ISR_TEIF6_Pos (23U) +#define DMA_ISR_TEIF6_Msk (0x1UL << DMA_ISR_TEIF6_Pos) /*!< 0x00800000 */ +#define DMA_ISR_TEIF6 DMA_ISR_TEIF6_Msk /*!< Channel 6 Transfer Error flag */ +#define DMA_ISR_GIF7_Pos (24U) +#define DMA_ISR_GIF7_Msk (0x1UL << DMA_ISR_GIF7_Pos) /*!< 0x01000000 */ +#define DMA_ISR_GIF7 DMA_ISR_GIF7_Msk /*!< Channel 7 Global interrupt flag */ +#define DMA_ISR_TCIF7_Pos (25U) +#define DMA_ISR_TCIF7_Msk (0x1UL << DMA_ISR_TCIF7_Pos) /*!< 0x02000000 */ +#define DMA_ISR_TCIF7 DMA_ISR_TCIF7_Msk /*!< Channel 7 Transfer Complete flag */ +#define DMA_ISR_HTIF7_Pos (26U) +#define DMA_ISR_HTIF7_Msk (0x1UL << DMA_ISR_HTIF7_Pos) /*!< 0x04000000 */ +#define DMA_ISR_HTIF7 DMA_ISR_HTIF7_Msk /*!< Channel 7 Half Transfer flag */ +#define DMA_ISR_TEIF7_Pos (27U) +#define DMA_ISR_TEIF7_Msk (0x1UL << DMA_ISR_TEIF7_Pos) /*!< 0x08000000 */ +#define DMA_ISR_TEIF7 DMA_ISR_TEIF7_Msk /*!< Channel 7 Transfer Error flag */ + +/******************* Bit definition for DMA_IFCR register *******************/ +#define DMA_IFCR_CGIF1_Pos (0U) +#define DMA_IFCR_CGIF1_Msk (0x1UL << DMA_IFCR_CGIF1_Pos) /*!< 0x00000001 */ +#define DMA_IFCR_CGIF1 DMA_IFCR_CGIF1_Msk /*!< Channel 1 Global interrupt clearr */ +#define DMA_IFCR_CTCIF1_Pos (1U) +#define DMA_IFCR_CTCIF1_Msk (0x1UL << DMA_IFCR_CTCIF1_Pos) /*!< 0x00000002 */ +#define DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1_Msk /*!< Channel 1 Transfer Complete clear */ +#define DMA_IFCR_CHTIF1_Pos (2U) +#define DMA_IFCR_CHTIF1_Msk (0x1UL << DMA_IFCR_CHTIF1_Pos) /*!< 0x00000004 */ +#define DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1_Msk /*!< Channel 1 Half Transfer clear */ +#define DMA_IFCR_CTEIF1_Pos (3U) +#define DMA_IFCR_CTEIF1_Msk (0x1UL << DMA_IFCR_CTEIF1_Pos) /*!< 0x00000008 */ +#define DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1_Msk /*!< Channel 1 Transfer Error clear */ +#define DMA_IFCR_CGIF2_Pos (4U) +#define DMA_IFCR_CGIF2_Msk (0x1UL << DMA_IFCR_CGIF2_Pos) /*!< 0x00000010 */ +#define DMA_IFCR_CGIF2 DMA_IFCR_CGIF2_Msk /*!< Channel 2 Global interrupt clear */ +#define DMA_IFCR_CTCIF2_Pos (5U) +#define DMA_IFCR_CTCIF2_Msk (0x1UL << DMA_IFCR_CTCIF2_Pos) /*!< 0x00000020 */ +#define DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2_Msk /*!< Channel 2 Transfer Complete clear */ +#define DMA_IFCR_CHTIF2_Pos (6U) +#define DMA_IFCR_CHTIF2_Msk (0x1UL << DMA_IFCR_CHTIF2_Pos) /*!< 0x00000040 */ +#define DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2_Msk /*!< Channel 2 Half Transfer clear */ +#define DMA_IFCR_CTEIF2_Pos (7U) +#define DMA_IFCR_CTEIF2_Msk (0x1UL << DMA_IFCR_CTEIF2_Pos) /*!< 0x00000080 */ +#define DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2_Msk /*!< Channel 2 Transfer Error clear */ +#define DMA_IFCR_CGIF3_Pos (8U) +#define DMA_IFCR_CGIF3_Msk (0x1UL << DMA_IFCR_CGIF3_Pos) /*!< 0x00000100 */ +#define DMA_IFCR_CGIF3 DMA_IFCR_CGIF3_Msk /*!< Channel 3 Global interrupt clear */ +#define DMA_IFCR_CTCIF3_Pos (9U) +#define DMA_IFCR_CTCIF3_Msk (0x1UL << DMA_IFCR_CTCIF3_Pos) /*!< 0x00000200 */ +#define DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3_Msk /*!< Channel 3 Transfer Complete clear */ +#define DMA_IFCR_CHTIF3_Pos (10U) +#define DMA_IFCR_CHTIF3_Msk (0x1UL << DMA_IFCR_CHTIF3_Pos) /*!< 0x00000400 */ +#define DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3_Msk /*!< Channel 3 Half Transfer clear */ +#define DMA_IFCR_CTEIF3_Pos (11U) +#define DMA_IFCR_CTEIF3_Msk (0x1UL << DMA_IFCR_CTEIF3_Pos) /*!< 0x00000800 */ +#define DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3_Msk /*!< Channel 3 Transfer Error clear */ +#define DMA_IFCR_CGIF4_Pos (12U) +#define DMA_IFCR_CGIF4_Msk (0x1UL << DMA_IFCR_CGIF4_Pos) /*!< 0x00001000 */ +#define DMA_IFCR_CGIF4 DMA_IFCR_CGIF4_Msk /*!< Channel 4 Global interrupt clear */ +#define DMA_IFCR_CTCIF4_Pos (13U) +#define DMA_IFCR_CTCIF4_Msk (0x1UL << DMA_IFCR_CTCIF4_Pos) /*!< 0x00002000 */ +#define DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4_Msk /*!< Channel 4 Transfer Complete clear */ +#define DMA_IFCR_CHTIF4_Pos (14U) +#define DMA_IFCR_CHTIF4_Msk (0x1UL << DMA_IFCR_CHTIF4_Pos) /*!< 0x00004000 */ +#define DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4_Msk /*!< Channel 4 Half Transfer clear */ +#define DMA_IFCR_CTEIF4_Pos (15U) +#define DMA_IFCR_CTEIF4_Msk (0x1UL << DMA_IFCR_CTEIF4_Pos) /*!< 0x00008000 */ +#define DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4_Msk /*!< Channel 4 Transfer Error clear */ +#define DMA_IFCR_CGIF5_Pos (16U) +#define DMA_IFCR_CGIF5_Msk (0x1UL << DMA_IFCR_CGIF5_Pos) /*!< 0x00010000 */ +#define DMA_IFCR_CGIF5 DMA_IFCR_CGIF5_Msk /*!< Channel 5 Global interrupt clear */ +#define DMA_IFCR_CTCIF5_Pos (17U) +#define DMA_IFCR_CTCIF5_Msk (0x1UL << DMA_IFCR_CTCIF5_Pos) /*!< 0x00020000 */ +#define DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5_Msk /*!< Channel 5 Transfer Complete clear */ +#define DMA_IFCR_CHTIF5_Pos (18U) +#define DMA_IFCR_CHTIF5_Msk (0x1UL << DMA_IFCR_CHTIF5_Pos) /*!< 0x00040000 */ +#define DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5_Msk /*!< Channel 5 Half Transfer clear */ +#define DMA_IFCR_CTEIF5_Pos (19U) +#define DMA_IFCR_CTEIF5_Msk (0x1UL << DMA_IFCR_CTEIF5_Pos) /*!< 0x00080000 */ +#define DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5_Msk /*!< Channel 5 Transfer Error clear */ +#define DMA_IFCR_CGIF6_Pos (20U) +#define DMA_IFCR_CGIF6_Msk (0x1UL << DMA_IFCR_CGIF6_Pos) /*!< 0x00100000 */ +#define DMA_IFCR_CGIF6 DMA_IFCR_CGIF6_Msk /*!< Channel 6 Global interrupt clear */ +#define DMA_IFCR_CTCIF6_Pos (21U) +#define DMA_IFCR_CTCIF6_Msk (0x1UL << DMA_IFCR_CTCIF6_Pos) /*!< 0x00200000 */ +#define DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6_Msk /*!< Channel 6 Transfer Complete clear */ +#define DMA_IFCR_CHTIF6_Pos (22U) +#define DMA_IFCR_CHTIF6_Msk (0x1UL << DMA_IFCR_CHTIF6_Pos) /*!< 0x00400000 */ +#define DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6_Msk /*!< Channel 6 Half Transfer clear */ +#define DMA_IFCR_CTEIF6_Pos (23U) +#define DMA_IFCR_CTEIF6_Msk (0x1UL << DMA_IFCR_CTEIF6_Pos) /*!< 0x00800000 */ +#define DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6_Msk /*!< Channel 6 Transfer Error clear */ +#define DMA_IFCR_CGIF7_Pos (24U) +#define DMA_IFCR_CGIF7_Msk (0x1UL << DMA_IFCR_CGIF7_Pos) /*!< 0x01000000 */ +#define DMA_IFCR_CGIF7 DMA_IFCR_CGIF7_Msk /*!< Channel 7 Global interrupt clear */ +#define DMA_IFCR_CTCIF7_Pos (25U) +#define DMA_IFCR_CTCIF7_Msk (0x1UL << DMA_IFCR_CTCIF7_Pos) /*!< 0x02000000 */ +#define DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7_Msk /*!< Channel 7 Transfer Complete clear */ +#define DMA_IFCR_CHTIF7_Pos (26U) +#define DMA_IFCR_CHTIF7_Msk (0x1UL << DMA_IFCR_CHTIF7_Pos) /*!< 0x04000000 */ +#define DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7_Msk /*!< Channel 7 Half Transfer clear */ +#define DMA_IFCR_CTEIF7_Pos (27U) +#define DMA_IFCR_CTEIF7_Msk (0x1UL << DMA_IFCR_CTEIF7_Pos) /*!< 0x08000000 */ +#define DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7_Msk /*!< Channel 7 Transfer Error clear */ + +/******************* Bit definition for DMA_CCR register ********************/ +#define DMA_CCR_EN_Pos (0U) +#define DMA_CCR_EN_Msk (0x1UL << DMA_CCR_EN_Pos) /*!< 0x00000001 */ +#define DMA_CCR_EN DMA_CCR_EN_Msk /*!< Channel enable */ +#define DMA_CCR_TCIE_Pos (1U) +#define DMA_CCR_TCIE_Msk (0x1UL << DMA_CCR_TCIE_Pos) /*!< 0x00000002 */ +#define DMA_CCR_TCIE DMA_CCR_TCIE_Msk /*!< Transfer complete interrupt enable */ +#define DMA_CCR_HTIE_Pos (2U) +#define DMA_CCR_HTIE_Msk (0x1UL << DMA_CCR_HTIE_Pos) /*!< 0x00000004 */ +#define DMA_CCR_HTIE DMA_CCR_HTIE_Msk /*!< Half Transfer interrupt enable */ +#define DMA_CCR_TEIE_Pos (3U) +#define DMA_CCR_TEIE_Msk (0x1UL << DMA_CCR_TEIE_Pos) /*!< 0x00000008 */ +#define DMA_CCR_TEIE DMA_CCR_TEIE_Msk /*!< Transfer error interrupt enable */ +#define DMA_CCR_DIR_Pos (4U) +#define DMA_CCR_DIR_Msk (0x1UL << DMA_CCR_DIR_Pos) /*!< 0x00000010 */ +#define DMA_CCR_DIR DMA_CCR_DIR_Msk /*!< Data transfer direction */ +#define DMA_CCR_CIRC_Pos (5U) +#define DMA_CCR_CIRC_Msk (0x1UL << DMA_CCR_CIRC_Pos) /*!< 0x00000020 */ +#define DMA_CCR_CIRC DMA_CCR_CIRC_Msk /*!< Circular mode */ +#define DMA_CCR_PINC_Pos (6U) +#define DMA_CCR_PINC_Msk (0x1UL << DMA_CCR_PINC_Pos) /*!< 0x00000040 */ +#define DMA_CCR_PINC DMA_CCR_PINC_Msk /*!< Peripheral increment mode */ +#define DMA_CCR_MINC_Pos (7U) +#define DMA_CCR_MINC_Msk (0x1UL << DMA_CCR_MINC_Pos) /*!< 0x00000080 */ +#define DMA_CCR_MINC DMA_CCR_MINC_Msk /*!< Memory increment mode */ + +#define DMA_CCR_PSIZE_Pos (8U) +#define DMA_CCR_PSIZE_Msk (0x3UL << DMA_CCR_PSIZE_Pos) /*!< 0x00000300 */ +#define DMA_CCR_PSIZE DMA_CCR_PSIZE_Msk /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR_PSIZE_0 (0x1UL << DMA_CCR_PSIZE_Pos) /*!< 0x00000100 */ +#define DMA_CCR_PSIZE_1 (0x2UL << DMA_CCR_PSIZE_Pos) /*!< 0x00000200 */ + +#define DMA_CCR_MSIZE_Pos (10U) +#define DMA_CCR_MSIZE_Msk (0x3UL << DMA_CCR_MSIZE_Pos) /*!< 0x00000C00 */ +#define DMA_CCR_MSIZE DMA_CCR_MSIZE_Msk /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR_MSIZE_0 (0x1UL << DMA_CCR_MSIZE_Pos) /*!< 0x00000400 */ +#define DMA_CCR_MSIZE_1 (0x2UL << DMA_CCR_MSIZE_Pos) /*!< 0x00000800 */ + +#define DMA_CCR_PL_Pos (12U) +#define DMA_CCR_PL_Msk (0x3UL << DMA_CCR_PL_Pos) /*!< 0x00003000 */ +#define DMA_CCR_PL DMA_CCR_PL_Msk /*!< PL[1:0] bits(Channel Priority level)*/ +#define DMA_CCR_PL_0 (0x1UL << DMA_CCR_PL_Pos) /*!< 0x00001000 */ +#define DMA_CCR_PL_1 (0x2UL << DMA_CCR_PL_Pos) /*!< 0x00002000 */ + +#define DMA_CCR_MEM2MEM_Pos (14U) +#define DMA_CCR_MEM2MEM_Msk (0x1UL << DMA_CCR_MEM2MEM_Pos) /*!< 0x00004000 */ +#define DMA_CCR_MEM2MEM DMA_CCR_MEM2MEM_Msk /*!< Memory to memory mode */ + +/****************** Bit definition for DMA_CNDTR register *******************/ +#define DMA_CNDTR_NDT_Pos (0U) +#define DMA_CNDTR_NDT_Msk (0xFFFFUL << DMA_CNDTR_NDT_Pos) /*!< 0x0000FFFF */ +#define DMA_CNDTR_NDT DMA_CNDTR_NDT_Msk /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CPAR register ********************/ +#define DMA_CPAR_PA_Pos (0U) +#define DMA_CPAR_PA_Msk (0xFFFFFFFFUL << DMA_CPAR_PA_Pos) /*!< 0xFFFFFFFF */ +#define DMA_CPAR_PA DMA_CPAR_PA_Msk /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CMAR register ********************/ +#define DMA_CMAR_MA_Pos (0U) +#define DMA_CMAR_MA_Msk (0xFFFFFFFFUL << DMA_CMAR_MA_Pos) /*!< 0xFFFFFFFF */ +#define DMA_CMAR_MA DMA_CMAR_MA_Msk /*!< Memory Address */ + +/******************************************************************************/ +/* */ +/* DMAMUX Controller */ +/* */ +/******************************************************************************/ +/******************** Bits definition for DMAMUX_CxCR register **************/ +#define DMAMUX_CxCR_DMAREQ_ID_Pos (0U) +#define DMAMUX_CxCR_DMAREQ_ID_Msk (0x3FUL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x0000003F */ +#define DMAMUX_CxCR_DMAREQ_ID DMAMUX_CxCR_DMAREQ_ID_Msk /*!< DMA Request ID */ +#define DMAMUX_CxCR_DMAREQ_ID_0 (0x01UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000001 */ +#define DMAMUX_CxCR_DMAREQ_ID_1 (0x02UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000002 */ +#define DMAMUX_CxCR_DMAREQ_ID_2 (0x04UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000004 */ +#define DMAMUX_CxCR_DMAREQ_ID_3 (0x08UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000008 */ +#define DMAMUX_CxCR_DMAREQ_ID_4 (0x10UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000010 */ +#define DMAMUX_CxCR_DMAREQ_ID_5 (0x20UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000020 */ +#define DMAMUX_CxCR_DMAREQ_ID_6 (0x40UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000040 */ +#define DMAMUX_CxCR_SOIE_Pos (8U) +#define DMAMUX_CxCR_SOIE_Msk (0x1UL << DMAMUX_CxCR_SOIE_Pos) /*!< 0x00000100 */ +#define DMAMUX_CxCR_SOIE DMAMUX_CxCR_SOIE_Msk /*!< Synchro overrun interrupt enable */ +#define DMAMUX_CxCR_EGE_Pos (9U) +#define DMAMUX_CxCR_EGE_Msk (0x1UL << DMAMUX_CxCR_EGE_Pos) /*!< 0x00000200 */ +#define DMAMUX_CxCR_EGE DMAMUX_CxCR_EGE_Msk /*!< Event generation interrupt enable */ +#define DMAMUX_CxCR_SE_Pos (16U) +#define DMAMUX_CxCR_SE_Msk (0x1UL << DMAMUX_CxCR_SE_Pos) /*!< 0x00010000 */ +#define DMAMUX_CxCR_SE DMAMUX_CxCR_SE_Msk /*!< Synchronization enable */ +#define DMAMUX_CxCR_SPOL_Pos (17U) +#define DMAMUX_CxCR_SPOL_Msk (0x3UL << DMAMUX_CxCR_SPOL_Pos) /*!< 0x00060000 */ +#define DMAMUX_CxCR_SPOL DMAMUX_CxCR_SPOL_Msk /*!< Synchronization polarity */ +#define DMAMUX_CxCR_SPOL_0 (0x1UL << DMAMUX_CxCR_SPOL_Pos) /*!< 0x00020000 */ +#define DMAMUX_CxCR_SPOL_1 (0x2UL << DMAMUX_CxCR_SPOL_Pos) /*!< 0x00040000 */ +#define DMAMUX_CxCR_NBREQ_Pos (19U) +#define DMAMUX_CxCR_NBREQ_Msk (0x1FUL << DMAMUX_CxCR_NBREQ_Pos) /*!< 0x00F80000 */ +#define DMAMUX_CxCR_NBREQ DMAMUX_CxCR_NBREQ_Msk /*!< Number of request */ +#define DMAMUX_CxCR_NBREQ_0 (0x01UL << DMAMUX_CxCR_NBREQ_Pos) /*!< 0x00080000 */ +#define DMAMUX_CxCR_NBREQ_1 (0x02UL << DMAMUX_CxCR_NBREQ_Pos) /*!< 0x00100000 */ +#define DMAMUX_CxCR_NBREQ_2 (0x04UL << DMAMUX_CxCR_NBREQ_Pos) /*!< 0x00200000 */ +#define DMAMUX_CxCR_NBREQ_3 (0x08UL << DMAMUX_CxCR_NBREQ_Pos) /*!< 0x00400000 */ +#define DMAMUX_CxCR_NBREQ_4 (0x10UL << DMAMUX_CxCR_NBREQ_Pos) /*!< 0x00800000 */ +#define DMAMUX_CxCR_SYNC_ID_Pos (24U) +#define DMAMUX_CxCR_SYNC_ID_Msk (0x1FUL << DMAMUX_CxCR_SYNC_ID_Pos) /*!< 0x1F000000 */ +#define DMAMUX_CxCR_SYNC_ID DMAMUX_CxCR_SYNC_ID_Msk /*!< Synchronization ID */ +#define DMAMUX_CxCR_SYNC_ID_0 (0x01UL << DMAMUX_CxCR_SYNC_ID_Pos) /*!< 0x01000000 */ +#define DMAMUX_CxCR_SYNC_ID_1 (0x02UL << DMAMUX_CxCR_SYNC_ID_Pos) /*!< 0x02000000 */ +#define DMAMUX_CxCR_SYNC_ID_2 (0x04UL << DMAMUX_CxCR_SYNC_ID_Pos) /*!< 0x04000000 */ +#define DMAMUX_CxCR_SYNC_ID_3 (0x08UL << DMAMUX_CxCR_SYNC_ID_Pos) /*!< 0x08000000 */ +#define DMAMUX_CxCR_SYNC_ID_4 (0x10UL << DMAMUX_CxCR_SYNC_ID_Pos) /*!< 0x10000000 */ + +/******************* Bits definition for DMAMUX_CSR register **************/ +#define DMAMUX_CSR_SOF0_Pos (0U) +#define DMAMUX_CSR_SOF0_Msk (0x1UL << DMAMUX_CSR_SOF0_Pos) /*!< 0x00000001 */ +#define DMAMUX_CSR_SOF0 DMAMUX_CSR_SOF0_Msk /*!< Synchronization Overrun Flag 0 */ +#define DMAMUX_CSR_SOF1_Pos (1U) +#define DMAMUX_CSR_SOF1_Msk (0x1UL << DMAMUX_CSR_SOF1_Pos) /*!< 0x00000002 */ +#define DMAMUX_CSR_SOF1 DMAMUX_CSR_SOF1_Msk /*!< Synchronization Overrun Flag 1 */ +#define DMAMUX_CSR_SOF2_Pos (2U) +#define DMAMUX_CSR_SOF2_Msk (0x1UL << DMAMUX_CSR_SOF2_Pos) /*!< 0x00000004 */ +#define DMAMUX_CSR_SOF2 DMAMUX_CSR_SOF2_Msk /*!< Synchronization Overrun Flag 2 */ +#define DMAMUX_CSR_SOF3_Pos (3U) +#define DMAMUX_CSR_SOF3_Msk (0x1UL << DMAMUX_CSR_SOF3_Pos) /*!< 0x00000008 */ +#define DMAMUX_CSR_SOF3 DMAMUX_CSR_SOF3_Msk /*!< Synchronization Overrun Flag 3 */ +#define DMAMUX_CSR_SOF4_Pos (4U) +#define DMAMUX_CSR_SOF4_Msk (0x1UL << DMAMUX_CSR_SOF4_Pos) /*!< 0x00000010 */ +#define DMAMUX_CSR_SOF4 DMAMUX_CSR_SOF4_Msk /*!< Synchronization Overrun Flag 4 */ +#define DMAMUX_CSR_SOF5_Pos (5U) +#define DMAMUX_CSR_SOF5_Msk (0x1UL << DMAMUX_CSR_SOF5_Pos) /*!< 0x00000020 */ +#define DMAMUX_CSR_SOF5 DMAMUX_CSR_SOF5_Msk /*!< Synchronization Overrun Flag 5 */ +#define DMAMUX_CSR_SOF6_Pos (6U) +#define DMAMUX_CSR_SOF6_Msk (0x1UL << DMAMUX_CSR_SOF6_Pos) /*!< 0x00000040 */ +#define DMAMUX_CSR_SOF6 DMAMUX_CSR_SOF6_Msk /*!< Synchronization Overrun Flag 6 */ + +/******************** Bits definition for DMAMUX_CFR register **************/ +#define DMAMUX_CFR_CSOF0_Pos (0U) +#define DMAMUX_CFR_CSOF0_Msk (0x1UL << DMAMUX_CFR_CSOF0_Pos) /*!< 0x00000001 */ +#define DMAMUX_CFR_CSOF0 DMAMUX_CFR_CSOF0_Msk /*!< Clear Overrun Flag 0 */ +#define DMAMUX_CFR_CSOF1_Pos (1U) +#define DMAMUX_CFR_CSOF1_Msk (0x1UL << DMAMUX_CFR_CSOF1_Pos) /*!< 0x00000002 */ +#define DMAMUX_CFR_CSOF1 DMAMUX_CFR_CSOF1_Msk /*!< Clear Overrun Flag 1 */ +#define DMAMUX_CFR_CSOF2_Pos (2U) +#define DMAMUX_CFR_CSOF2_Msk (0x1UL << DMAMUX_CFR_CSOF2_Pos) /*!< 0x00000004 */ +#define DMAMUX_CFR_CSOF2 DMAMUX_CFR_CSOF2_Msk /*!< Clear Overrun Flag 2 */ +#define DMAMUX_CFR_CSOF3_Pos (3U) +#define DMAMUX_CFR_CSOF3_Msk (0x1UL << DMAMUX_CFR_CSOF3_Pos) /*!< 0x00000008 */ +#define DMAMUX_CFR_CSOF3 DMAMUX_CFR_CSOF3_Msk /*!< Clear Overrun Flag 3 */ +#define DMAMUX_CFR_CSOF4_Pos (4U) +#define DMAMUX_CFR_CSOF4_Msk (0x1UL << DMAMUX_CFR_CSOF4_Pos) /*!< 0x00000010 */ +#define DMAMUX_CFR_CSOF4 DMAMUX_CFR_CSOF4_Msk /*!< Clear Overrun Flag 4 */ +#define DMAMUX_CFR_CSOF5_Pos (5U) +#define DMAMUX_CFR_CSOF5_Msk (0x1UL << DMAMUX_CFR_CSOF5_Pos) /*!< 0x00000020 */ +#define DMAMUX_CFR_CSOF5 DMAMUX_CFR_CSOF5_Msk /*!< Clear Overrun Flag 5 */ +#define DMAMUX_CFR_CSOF6_Pos (6U) +#define DMAMUX_CFR_CSOF6_Msk (0x1UL << DMAMUX_CFR_CSOF6_Pos) /*!< 0x00000040 */ +#define DMAMUX_CFR_CSOF6 DMAMUX_CFR_CSOF6_Msk /*!< Clear Overrun Flag 6 */ + +/******************** Bits definition for DMAMUX_RGxCR register ************/ +#define DMAMUX_RGxCR_SIG_ID_Pos (0U) +#define DMAMUX_RGxCR_SIG_ID_Msk (0x1FUL << DMAMUX_RGxCR_SIG_ID_Pos) /*!< 0x0000001F */ +#define DMAMUX_RGxCR_SIG_ID DMAMUX_RGxCR_SIG_ID_Msk /*!< Signal ID */ +#define DMAMUX_RGxCR_SIG_ID_0 (0x01UL << DMAMUX_RGxCR_SIG_ID_Pos) /*!< 0x00000001 */ +#define DMAMUX_RGxCR_SIG_ID_1 (0x02UL << DMAMUX_RGxCR_SIG_ID_Pos) /*!< 0x00000002 */ +#define DMAMUX_RGxCR_SIG_ID_2 (0x04UL << DMAMUX_RGxCR_SIG_ID_Pos) /*!< 0x00000004 */ +#define DMAMUX_RGxCR_SIG_ID_3 (0x08UL << DMAMUX_RGxCR_SIG_ID_Pos) /*!< 0x00000008 */ +#define DMAMUX_RGxCR_SIG_ID_4 (0x10UL << DMAMUX_RGxCR_SIG_ID_Pos) /*!< 0x00000010 */ +#define DMAMUX_RGxCR_OIE_Pos (8U) +#define DMAMUX_RGxCR_OIE_Msk (0x1UL << DMAMUX_RGxCR_OIE_Pos) /*!< 0x00000100 */ +#define DMAMUX_RGxCR_OIE DMAMUX_RGxCR_OIE_Msk /*!< Overrun interrupt enable */ +#define DMAMUX_RGxCR_GE_Pos (16U) +#define DMAMUX_RGxCR_GE_Msk (0x1UL << DMAMUX_RGxCR_GE_Pos) /*!< 0x00010000 */ +#define DMAMUX_RGxCR_GE DMAMUX_RGxCR_GE_Msk /*!< Generation enable */ +#define DMAMUX_RGxCR_GPOL_Pos (17U) +#define DMAMUX_RGxCR_GPOL_Msk (0x3UL << DMAMUX_RGxCR_GPOL_Pos) /*!< 0x00060000 */ +#define DMAMUX_RGxCR_GPOL DMAMUX_RGxCR_GPOL_Msk /*!< Generation polarity */ +#define DMAMUX_RGxCR_GPOL_0 (0x1UL << DMAMUX_RGxCR_GPOL_Pos) /*!< 0x00020000 */ +#define DMAMUX_RGxCR_GPOL_1 (0x2UL << DMAMUX_RGxCR_GPOL_Pos) /*!< 0x00040000 */ +#define DMAMUX_RGxCR_GNBREQ_Pos (19U) +#define DMAMUX_RGxCR_GNBREQ_Msk (0x1FUL << DMAMUX_RGxCR_GNBREQ_Pos) /*!< 0x00F80000 */ +#define DMAMUX_RGxCR_GNBREQ DMAMUX_RGxCR_GNBREQ_Msk /*!< Number of request */ +#define DMAMUX_RGxCR_GNBREQ_0 (0x01UL << DMAMUX_RGxCR_GNBREQ_Pos) /*!< 0x00080000 */ +#define DMAMUX_RGxCR_GNBREQ_1 (0x02UL << DMAMUX_RGxCR_GNBREQ_Pos) /*!< 0x00100000 */ +#define DMAMUX_RGxCR_GNBREQ_2 (0x04UL << DMAMUX_RGxCR_GNBREQ_Pos) /*!< 0x00200000 */ +#define DMAMUX_RGxCR_GNBREQ_3 (0x08UL << DMAMUX_RGxCR_GNBREQ_Pos) /*!< 0x00400000 */ +#define DMAMUX_RGxCR_GNBREQ_4 (0x10UL << DMAMUX_RGxCR_GNBREQ_Pos) /*!< 0x00800000 */ + +/******************** Bits definition for DMAMUX_RGSR register **************/ +#define DMAMUX_RGSR_OF0_Pos (0U) +#define DMAMUX_RGSR_OF0_Msk (0x1UL << DMAMUX_RGSR_OF0_Pos) /*!< 0x00000001 */ +#define DMAMUX_RGSR_OF0 DMAMUX_RGSR_OF0_Msk /*!< Overrun flag 0 */ +#define DMAMUX_RGSR_OF1_Pos (1U) +#define DMAMUX_RGSR_OF1_Msk (0x1UL << DMAMUX_RGSR_OF1_Pos) /*!< 0x00000002 */ +#define DMAMUX_RGSR_OF1 DMAMUX_RGSR_OF1_Msk /*!< Overrun flag 1 */ +#define DMAMUX_RGSR_OF2_Pos (2U) +#define DMAMUX_RGSR_OF2_Msk (0x1UL << DMAMUX_RGSR_OF2_Pos) /*!< 0x00000004 */ +#define DMAMUX_RGSR_OF2 DMAMUX_RGSR_OF2_Msk /*!< Overrun flag 2 */ +#define DMAMUX_RGSR_OF3_Pos (3U) +#define DMAMUX_RGSR_OF3_Msk (0x1UL << DMAMUX_RGSR_OF3_Pos) /*!< 0x00000008 */ +#define DMAMUX_RGSR_OF3 DMAMUX_RGSR_OF3_Msk /*!< Overrun flag 3 */ + +/******************** Bits definition for DMAMUX_RGCFR register **************/ +#define DMAMUX_RGCFR_COF0_Pos (0U) +#define DMAMUX_RGCFR_COF0_Msk (0x1UL << DMAMUX_RGCFR_COF0_Pos) /*!< 0x00000001 */ +#define DMAMUX_RGCFR_COF0 DMAMUX_RGCFR_COF0_Msk /*!< Clear Overrun flag 0 */ +#define DMAMUX_RGCFR_COF1_Pos (1U) +#define DMAMUX_RGCFR_COF1_Msk (0x1UL << DMAMUX_RGCFR_COF1_Pos) /*!< 0x00000002 */ +#define DMAMUX_RGCFR_COF1 DMAMUX_RGCFR_COF1_Msk /*!< Clear Overrun flag 1 */ +#define DMAMUX_RGCFR_COF2_Pos (2U) +#define DMAMUX_RGCFR_COF2_Msk (0x1UL << DMAMUX_RGCFR_COF2_Pos) /*!< 0x00000004 */ +#define DMAMUX_RGCFR_COF2 DMAMUX_RGCFR_COF2_Msk /*!< Clear Overrun flag 2 */ +#define DMAMUX_RGCFR_COF3_Pos (3U) +#define DMAMUX_RGCFR_COF3_Msk (0x1UL << DMAMUX_RGCFR_COF3_Pos) /*!< 0x00000008 */ +#define DMAMUX_RGCFR_COF3 DMAMUX_RGCFR_COF3_Msk /*!< Clear Overrun flag 3 */ + +/******************************************************************************/ +/* */ +/* External Interrupt/Event Controller */ +/* */ +/******************************************************************************/ +/****************** Bit definition for EXTI_RTSR1 register ******************/ +#define EXTI_RTSR1_RT0_Pos (0U) +#define EXTI_RTSR1_RT0_Msk (0x1UL << EXTI_RTSR1_RT0_Pos) /*!< 0x00000001 */ +#define EXTI_RTSR1_RT0 EXTI_RTSR1_RT0_Msk /*!< Rising trigger configuration for input line 0 */ +#define EXTI_RTSR1_RT1_Pos (1U) +#define EXTI_RTSR1_RT1_Msk (0x1UL << EXTI_RTSR1_RT1_Pos) /*!< 0x00000002 */ +#define EXTI_RTSR1_RT1 EXTI_RTSR1_RT1_Msk /*!< Rising trigger configuration for input line 1 */ +#define EXTI_RTSR1_RT2_Pos (2U) +#define EXTI_RTSR1_RT2_Msk (0x1UL << EXTI_RTSR1_RT2_Pos) /*!< 0x00000004 */ +#define EXTI_RTSR1_RT2 EXTI_RTSR1_RT2_Msk /*!< Rising trigger configuration for input line 2 */ +#define EXTI_RTSR1_RT3_Pos (3U) +#define EXTI_RTSR1_RT3_Msk (0x1UL << EXTI_RTSR1_RT3_Pos) /*!< 0x00000008 */ +#define EXTI_RTSR1_RT3 EXTI_RTSR1_RT3_Msk /*!< Rising trigger configuration for input line 3 */ +#define EXTI_RTSR1_RT4_Pos (4U) +#define EXTI_RTSR1_RT4_Msk (0x1UL << EXTI_RTSR1_RT4_Pos) /*!< 0x00000010 */ +#define EXTI_RTSR1_RT4 EXTI_RTSR1_RT4_Msk /*!< Rising trigger configuration for input line 4 */ +#define EXTI_RTSR1_RT5_Pos (5U) +#define EXTI_RTSR1_RT5_Msk (0x1UL << EXTI_RTSR1_RT5_Pos) /*!< 0x00000020 */ +#define EXTI_RTSR1_RT5 EXTI_RTSR1_RT5_Msk /*!< Rising trigger configuration for input line 5 */ +#define EXTI_RTSR1_RT6_Pos (6U) +#define EXTI_RTSR1_RT6_Msk (0x1UL << EXTI_RTSR1_RT6_Pos) /*!< 0x00000040 */ +#define EXTI_RTSR1_RT6 EXTI_RTSR1_RT6_Msk /*!< Rising trigger configuration for input line 6 */ +#define EXTI_RTSR1_RT7_Pos (7U) +#define EXTI_RTSR1_RT7_Msk (0x1UL << EXTI_RTSR1_RT7_Pos) /*!< 0x00000080 */ +#define EXTI_RTSR1_RT7 EXTI_RTSR1_RT7_Msk /*!< Rising trigger configuration for input line 7 */ +#define EXTI_RTSR1_RT8_Pos (8U) +#define EXTI_RTSR1_RT8_Msk (0x1UL << EXTI_RTSR1_RT8_Pos) /*!< 0x00000100 */ +#define EXTI_RTSR1_RT8 EXTI_RTSR1_RT8_Msk /*!< Rising trigger configuration for input line 8 */ +#define EXTI_RTSR1_RT9_Pos (9U) +#define EXTI_RTSR1_RT9_Msk (0x1UL << EXTI_RTSR1_RT9_Pos) /*!< 0x00000200 */ +#define EXTI_RTSR1_RT9 EXTI_RTSR1_RT9_Msk /*!< Rising trigger configuration for input line 9 */ +#define EXTI_RTSR1_RT10_Pos (10U) +#define EXTI_RTSR1_RT10_Msk (0x1UL << EXTI_RTSR1_RT10_Pos) /*!< 0x00000400 */ +#define EXTI_RTSR1_RT10 EXTI_RTSR1_RT10_Msk /*!< Rising trigger configuration for input line 10 */ +#define EXTI_RTSR1_RT11_Pos (11U) +#define EXTI_RTSR1_RT11_Msk (0x1UL << EXTI_RTSR1_RT11_Pos) /*!< 0x00000800 */ +#define EXTI_RTSR1_RT11 EXTI_RTSR1_RT11_Msk /*!< Rising trigger configuration for input line 11 */ +#define EXTI_RTSR1_RT12_Pos (12U) +#define EXTI_RTSR1_RT12_Msk (0x1UL << EXTI_RTSR1_RT12_Pos) /*!< 0x00001000 */ +#define EXTI_RTSR1_RT12 EXTI_RTSR1_RT12_Msk /*!< Rising trigger configuration for input line 12 */ +#define EXTI_RTSR1_RT13_Pos (13U) +#define EXTI_RTSR1_RT13_Msk (0x1UL << EXTI_RTSR1_RT13_Pos) /*!< 0x00002000 */ +#define EXTI_RTSR1_RT13 EXTI_RTSR1_RT13_Msk /*!< Rising trigger configuration for input line 13 */ +#define EXTI_RTSR1_RT14_Pos (14U) +#define EXTI_RTSR1_RT14_Msk (0x1UL << EXTI_RTSR1_RT14_Pos) /*!< 0x00004000 */ +#define EXTI_RTSR1_RT14 EXTI_RTSR1_RT14_Msk /*!< Rising trigger configuration for input line 14 */ +#define EXTI_RTSR1_RT15_Pos (15U) +#define EXTI_RTSR1_RT15_Msk (0x1UL << EXTI_RTSR1_RT15_Pos) /*!< 0x00008000 */ +#define EXTI_RTSR1_RT15 EXTI_RTSR1_RT15_Msk /*!< Rising trigger configuration for input line 15 */ + +/****************** Bit definition for EXTI_FTSR1 register ******************/ +#define EXTI_FTSR1_FT0_Pos (0U) +#define EXTI_FTSR1_FT0_Msk (0x1UL << EXTI_FTSR1_FT0_Pos) /*!< 0x00000001 */ +#define EXTI_FTSR1_FT0 EXTI_FTSR1_FT0_Msk /*!< Falling trigger configuration for input line 0 */ +#define EXTI_FTSR1_FT1_Pos (1U) +#define EXTI_FTSR1_FT1_Msk (0x1UL << EXTI_FTSR1_FT1_Pos) /*!< 0x00000002 */ +#define EXTI_FTSR1_FT1 EXTI_FTSR1_FT1_Msk /*!< Falling trigger configuration for input line 1 */ +#define EXTI_FTSR1_FT2_Pos (2U) +#define EXTI_FTSR1_FT2_Msk (0x1UL << EXTI_FTSR1_FT2_Pos) /*!< 0x00000004 */ +#define EXTI_FTSR1_FT2 EXTI_FTSR1_FT2_Msk /*!< Falling trigger configuration for input line 2 */ +#define EXTI_FTSR1_FT3_Pos (3U) +#define EXTI_FTSR1_FT3_Msk (0x1UL << EXTI_FTSR1_FT3_Pos) /*!< 0x00000008 */ +#define EXTI_FTSR1_FT3 EXTI_FTSR1_FT3_Msk /*!< Falling trigger configuration for input line 3 */ +#define EXTI_FTSR1_FT4_Pos (4U) +#define EXTI_FTSR1_FT4_Msk (0x1UL << EXTI_FTSR1_FT4_Pos) /*!< 0x00000010 */ +#define EXTI_FTSR1_FT4 EXTI_FTSR1_FT4_Msk /*!< Falling trigger configuration for input line 4 */ +#define EXTI_FTSR1_FT5_Pos (5U) +#define EXTI_FTSR1_FT5_Msk (0x1UL << EXTI_FTSR1_FT5_Pos) /*!< 0x00000020 */ +#define EXTI_FTSR1_FT5 EXTI_FTSR1_FT5_Msk /*!< Falling trigger configuration for input line 5 */ +#define EXTI_FTSR1_FT6_Pos (6U) +#define EXTI_FTSR1_FT6_Msk (0x1UL << EXTI_FTSR1_FT6_Pos) /*!< 0x00000040 */ +#define EXTI_FTSR1_FT6 EXTI_FTSR1_FT6_Msk /*!< Falling trigger configuration for input line 6 */ +#define EXTI_FTSR1_FT7_Pos (7U) +#define EXTI_FTSR1_FT7_Msk (0x1UL << EXTI_FTSR1_FT7_Pos) /*!< 0x00000080 */ +#define EXTI_FTSR1_FT7 EXTI_FTSR1_FT7_Msk /*!< Falling trigger configuration for input line 7 */ +#define EXTI_FTSR1_FT8_Pos (8U) +#define EXTI_FTSR1_FT8_Msk (0x1UL << EXTI_FTSR1_FT8_Pos) /*!< 0x00000100 */ +#define EXTI_FTSR1_FT8 EXTI_FTSR1_FT8_Msk /*!< Falling trigger configuration for input line 8 */ +#define EXTI_FTSR1_FT9_Pos (9U) +#define EXTI_FTSR1_FT9_Msk (0x1UL << EXTI_FTSR1_FT9_Pos) /*!< 0x00000200 */ +#define EXTI_FTSR1_FT9 EXTI_FTSR1_FT9_Msk /*!< Falling trigger configuration for input line 9 */ +#define EXTI_FTSR1_FT10_Pos (10U) +#define EXTI_FTSR1_FT10_Msk (0x1UL << EXTI_FTSR1_FT10_Pos) /*!< 0x00000400 */ +#define EXTI_FTSR1_FT10 EXTI_FTSR1_FT10_Msk /*!< Falling trigger configuration for input line 10 */ +#define EXTI_FTSR1_FT11_Pos (11U) +#define EXTI_FTSR1_FT11_Msk (0x1UL << EXTI_FTSR1_FT11_Pos) /*!< 0x00000800 */ +#define EXTI_FTSR1_FT11 EXTI_FTSR1_FT11_Msk /*!< Falling trigger configuration for input line 11 */ +#define EXTI_FTSR1_FT12_Pos (12U) +#define EXTI_FTSR1_FT12_Msk (0x1UL << EXTI_FTSR1_FT12_Pos) /*!< 0x00001000 */ +#define EXTI_FTSR1_FT12 EXTI_FTSR1_FT12_Msk /*!< Falling trigger configuration for input line 12 */ +#define EXTI_FTSR1_FT13_Pos (13U) +#define EXTI_FTSR1_FT13_Msk (0x1UL << EXTI_FTSR1_FT13_Pos) /*!< 0x00002000 */ +#define EXTI_FTSR1_FT13 EXTI_FTSR1_FT13_Msk /*!< Falling trigger configuration for input line 13 */ +#define EXTI_FTSR1_FT14_Pos (14U) +#define EXTI_FTSR1_FT14_Msk (0x1UL << EXTI_FTSR1_FT14_Pos) /*!< 0x00004000 */ +#define EXTI_FTSR1_FT14 EXTI_FTSR1_FT14_Msk /*!< Falling trigger configuration for input line 14 */ +#define EXTI_FTSR1_FT15_Pos (15U) +#define EXTI_FTSR1_FT15_Msk (0x1UL << EXTI_FTSR1_FT15_Pos) /*!< 0x00008000 */ +#define EXTI_FTSR1_FT15 EXTI_FTSR1_FT15_Msk /*!< Falling trigger configuration for input line 15 */ + +/****************** Bit definition for EXTI_SWIER1 register *****************/ +#define EXTI_SWIER1_SWI0_Pos (0U) +#define EXTI_SWIER1_SWI0_Msk (0x1UL << EXTI_SWIER1_SWI0_Pos) /*!< 0x00000001 */ +#define EXTI_SWIER1_SWI0 EXTI_SWIER1_SWI0_Msk /*!< Software Interrupt on line 0 */ +#define EXTI_SWIER1_SWI1_Pos (1U) +#define EXTI_SWIER1_SWI1_Msk (0x1UL << EXTI_SWIER1_SWI1_Pos) /*!< 0x00000002 */ +#define EXTI_SWIER1_SWI1 EXTI_SWIER1_SWI1_Msk /*!< Software Interrupt on line 1 */ +#define EXTI_SWIER1_SWI2_Pos (2U) +#define EXTI_SWIER1_SWI2_Msk (0x1UL << EXTI_SWIER1_SWI2_Pos) /*!< 0x00000004 */ +#define EXTI_SWIER1_SWI2 EXTI_SWIER1_SWI2_Msk /*!< Software Interrupt on line 2 */ +#define EXTI_SWIER1_SWI3_Pos (3U) +#define EXTI_SWIER1_SWI3_Msk (0x1UL << EXTI_SWIER1_SWI3_Pos) /*!< 0x00000008 */ +#define EXTI_SWIER1_SWI3 EXTI_SWIER1_SWI3_Msk /*!< Software Interrupt on line 3 */ +#define EXTI_SWIER1_SWI4_Pos (4U) +#define EXTI_SWIER1_SWI4_Msk (0x1UL << EXTI_SWIER1_SWI4_Pos) /*!< 0x00000010 */ +#define EXTI_SWIER1_SWI4 EXTI_SWIER1_SWI4_Msk /*!< Software Interrupt on line 4 */ +#define EXTI_SWIER1_SWI5_Pos (5U) +#define EXTI_SWIER1_SWI5_Msk (0x1UL << EXTI_SWIER1_SWI5_Pos) /*!< 0x00000020 */ +#define EXTI_SWIER1_SWI5 EXTI_SWIER1_SWI5_Msk /*!< Software Interrupt on line 5 */ +#define EXTI_SWIER1_SWI6_Pos (6U) +#define EXTI_SWIER1_SWI6_Msk (0x1UL << EXTI_SWIER1_SWI6_Pos) /*!< 0x00000040 */ +#define EXTI_SWIER1_SWI6 EXTI_SWIER1_SWI6_Msk /*!< Software Interrupt on line 6 */ +#define EXTI_SWIER1_SWI7_Pos (7U) +#define EXTI_SWIER1_SWI7_Msk (0x1UL << EXTI_SWIER1_SWI7_Pos) /*!< 0x00000080 */ +#define EXTI_SWIER1_SWI7 EXTI_SWIER1_SWI7_Msk /*!< Software Interrupt on line 7 */ +#define EXTI_SWIER1_SWI8_Pos (8U) +#define EXTI_SWIER1_SWI8_Msk (0x1UL << EXTI_SWIER1_SWI8_Pos) /*!< 0x00000100 */ +#define EXTI_SWIER1_SWI8 EXTI_SWIER1_SWI8_Msk /*!< Software Interrupt on line 8 */ +#define EXTI_SWIER1_SWI9_Pos (9U) +#define EXTI_SWIER1_SWI9_Msk (0x1UL << EXTI_SWIER1_SWI9_Pos) /*!< 0x00000200 */ +#define EXTI_SWIER1_SWI9 EXTI_SWIER1_SWI9_Msk /*!< Software Interrupt on line 9 */ +#define EXTI_SWIER1_SWI10_Pos (10U) +#define EXTI_SWIER1_SWI10_Msk (0x1UL << EXTI_SWIER1_SWI10_Pos) /*!< 0x00000400 */ +#define EXTI_SWIER1_SWI10 EXTI_SWIER1_SWI10_Msk /*!< Software Interrupt on line 10 */ +#define EXTI_SWIER1_SWI11_Pos (11U) +#define EXTI_SWIER1_SWI11_Msk (0x1UL << EXTI_SWIER1_SWI11_Pos) /*!< 0x00000800 */ +#define EXTI_SWIER1_SWI11 EXTI_SWIER1_SWI11_Msk /*!< Software Interrupt on line 11 */ +#define EXTI_SWIER1_SWI12_Pos (12U) +#define EXTI_SWIER1_SWI12_Msk (0x1UL << EXTI_SWIER1_SWI12_Pos) /*!< 0x00001000 */ +#define EXTI_SWIER1_SWI12 EXTI_SWIER1_SWI12_Msk /*!< Software Interrupt on line 12 */ +#define EXTI_SWIER1_SWI13_Pos (13U) +#define EXTI_SWIER1_SWI13_Msk (0x1UL << EXTI_SWIER1_SWI13_Pos) /*!< 0x00002000 */ +#define EXTI_SWIER1_SWI13 EXTI_SWIER1_SWI13_Msk /*!< Software Interrupt on line 13 */ +#define EXTI_SWIER1_SWI14_Pos (14U) +#define EXTI_SWIER1_SWI14_Msk (0x1UL << EXTI_SWIER1_SWI14_Pos) /*!< 0x00004000 */ +#define EXTI_SWIER1_SWI14 EXTI_SWIER1_SWI14_Msk /*!< Software Interrupt on line 14 */ +#define EXTI_SWIER1_SWI15_Pos (15U) +#define EXTI_SWIER1_SWI15_Msk (0x1UL << EXTI_SWIER1_SWI15_Pos) /*!< 0x00008000 */ +#define EXTI_SWIER1_SWI15 EXTI_SWIER1_SWI15_Msk /*!< Software Interrupt on line 15 */ + +/******************* Bit definition for EXTI_RPR1 register ******************/ +#define EXTI_RPR1_RPIF0_Pos (0U) +#define EXTI_RPR1_RPIF0_Msk (0x1UL << EXTI_RPR1_RPIF0_Pos) /*!< 0x00000001 */ +#define EXTI_RPR1_RPIF0 EXTI_RPR1_RPIF0_Msk /*!< Rising Pending Interrupt Flag on line 0 */ +#define EXTI_RPR1_RPIF1_Pos (1U) +#define EXTI_RPR1_RPIF1_Msk (0x1UL << EXTI_RPR1_RPIF1_Pos) /*!< 0x00000002 */ +#define EXTI_RPR1_RPIF1 EXTI_RPR1_RPIF1_Msk /*!< Rising Pending Interrupt Flag on line 1 */ +#define EXTI_RPR1_RPIF2_Pos (2U) +#define EXTI_RPR1_RPIF2_Msk (0x1UL << EXTI_RPR1_RPIF2_Pos) /*!< 0x00000004 */ +#define EXTI_RPR1_RPIF2 EXTI_RPR1_RPIF2_Msk /*!< Rising Pending Interrupt Flag on line 2 */ +#define EXTI_RPR1_RPIF3_Pos (3U) +#define EXTI_RPR1_RPIF3_Msk (0x1UL << EXTI_RPR1_RPIF3_Pos) /*!< 0x00000008 */ +#define EXTI_RPR1_RPIF3 EXTI_RPR1_RPIF3_Msk /*!< Rising Pending Interrupt Flag on line 3 */ +#define EXTI_RPR1_RPIF4_Pos (4U) +#define EXTI_RPR1_RPIF4_Msk (0x1UL << EXTI_RPR1_RPIF4_Pos) /*!< 0x00000010 */ +#define EXTI_RPR1_RPIF4 EXTI_RPR1_RPIF4_Msk /*!< Rising Pending Interrupt Flag on line 4 */ +#define EXTI_RPR1_RPIF5_Pos (5U) +#define EXTI_RPR1_RPIF5_Msk (0x1UL << EXTI_RPR1_RPIF5_Pos) /*!< 0x00000020 */ +#define EXTI_RPR1_RPIF5 EXTI_RPR1_RPIF5_Msk /*!< Rising Pending Interrupt Flag on line 5 */ +#define EXTI_RPR1_RPIF6_Pos (6U) +#define EXTI_RPR1_RPIF6_Msk (0x1UL << EXTI_RPR1_RPIF6_Pos) /*!< 0x00000040 */ +#define EXTI_RPR1_RPIF6 EXTI_RPR1_RPIF6_Msk /*!< Rising Pending Interrupt Flag on line 6 */ +#define EXTI_RPR1_RPIF7_Pos (7U) +#define EXTI_RPR1_RPIF7_Msk (0x1UL << EXTI_RPR1_RPIF7_Pos) /*!< 0x00000080 */ +#define EXTI_RPR1_RPIF7 EXTI_RPR1_RPIF7_Msk /*!< Rising Pending Interrupt Flag on line 7 */ +#define EXTI_RPR1_RPIF8_Pos (8U) +#define EXTI_RPR1_RPIF8_Msk (0x1UL << EXTI_RPR1_RPIF8_Pos) /*!< 0x00000100 */ +#define EXTI_RPR1_RPIF8 EXTI_RPR1_RPIF8_Msk /*!< Rising Pending Interrupt Flag on line 8 */ +#define EXTI_RPR1_RPIF9_Pos (9U) +#define EXTI_RPR1_RPIF9_Msk (0x1UL << EXTI_RPR1_RPIF9_Pos) /*!< 0x00000200 */ +#define EXTI_RPR1_RPIF9 EXTI_RPR1_RPIF9_Msk /*!< Rising Pending Interrupt Flag on line 9 */ +#define EXTI_RPR1_RPIF10_Pos (10U) +#define EXTI_RPR1_RPIF10_Msk (0x1UL << EXTI_RPR1_RPIF10_Pos) /*!< 0x00000400 */ +#define EXTI_RPR1_RPIF10 EXTI_RPR1_RPIF10_Msk /*!< Rising Pending Interrupt Flag on line 10 */ +#define EXTI_RPR1_RPIF11_Pos (11U) +#define EXTI_RPR1_RPIF11_Msk (0x1UL << EXTI_RPR1_RPIF11_Pos) /*!< 0x00000800 */ +#define EXTI_RPR1_RPIF11 EXTI_RPR1_RPIF11_Msk /*!< Rising Pending Interrupt Flag on line 11 */ +#define EXTI_RPR1_RPIF12_Pos (12U) +#define EXTI_RPR1_RPIF12_Msk (0x1UL << EXTI_RPR1_RPIF12_Pos) /*!< 0x00001000 */ +#define EXTI_RPR1_RPIF12 EXTI_RPR1_RPIF12_Msk /*!< Rising Pending Interrupt Flag on line 12 */ +#define EXTI_RPR1_RPIF13_Pos (13U) +#define EXTI_RPR1_RPIF13_Msk (0x1UL << EXTI_RPR1_RPIF13_Pos) /*!< 0x00002000 */ +#define EXTI_RPR1_RPIF13 EXTI_RPR1_RPIF13_Msk /*!< Rising Pending Interrupt Flag on line 13 */ +#define EXTI_RPR1_RPIF14_Pos (14U) +#define EXTI_RPR1_RPIF14_Msk (0x1UL << EXTI_RPR1_RPIF14_Pos) /*!< 0x00004000 */ +#define EXTI_RPR1_RPIF14 EXTI_RPR1_RPIF14_Msk /*!< Rising Pending Interrupt Flag on line 14 */ +#define EXTI_RPR1_RPIF15_Pos (15U) +#define EXTI_RPR1_RPIF15_Msk (0x1UL << EXTI_RPR1_RPIF15_Pos) /*!< 0x00008000 */ +#define EXTI_RPR1_RPIF15 EXTI_RPR1_RPIF15_Msk /*!< Rising Pending Interrupt Flag on line 15 */ + +/******************* Bit definition for EXTI_FPR1 register ******************/ +#define EXTI_FPR1_FPIF0_Pos (0U) +#define EXTI_FPR1_FPIF0_Msk (0x1UL << EXTI_FPR1_FPIF0_Pos) /*!< 0x00000001 */ +#define EXTI_FPR1_FPIF0 EXTI_FPR1_FPIF0_Msk /*!< Falling Pending Interrupt Flag on line 0 */ +#define EXTI_FPR1_FPIF1_Pos (1U) +#define EXTI_FPR1_FPIF1_Msk (0x1UL << EXTI_FPR1_FPIF1_Pos) /*!< 0x00000002 */ +#define EXTI_FPR1_FPIF1 EXTI_FPR1_FPIF1_Msk /*!< Falling Pending Interrupt Flag on line 1 */ +#define EXTI_FPR1_FPIF2_Pos (2U) +#define EXTI_FPR1_FPIF2_Msk (0x1UL << EXTI_FPR1_FPIF2_Pos) /*!< 0x00000004 */ +#define EXTI_FPR1_FPIF2 EXTI_FPR1_FPIF2_Msk /*!< Falling Pending Interrupt Flag on line 2 */ +#define EXTI_FPR1_FPIF3_Pos (3U) +#define EXTI_FPR1_FPIF3_Msk (0x1UL << EXTI_FPR1_FPIF3_Pos) /*!< 0x00000008 */ +#define EXTI_FPR1_FPIF3 EXTI_FPR1_FPIF3_Msk /*!< Falling Pending Interrupt Flag on line 3 */ +#define EXTI_FPR1_FPIF4_Pos (4U) +#define EXTI_FPR1_FPIF4_Msk (0x1UL << EXTI_FPR1_FPIF4_Pos) /*!< 0x00000010 */ +#define EXTI_FPR1_FPIF4 EXTI_FPR1_FPIF4_Msk /*!< Falling Pending Interrupt Flag on line 4 */ +#define EXTI_FPR1_FPIF5_Pos (5U) +#define EXTI_FPR1_FPIF5_Msk (0x1UL << EXTI_FPR1_FPIF5_Pos) /*!< 0x00000020 */ +#define EXTI_FPR1_FPIF5 EXTI_FPR1_FPIF5_Msk /*!< Falling Pending Interrupt Flag on line 5 */ +#define EXTI_FPR1_FPIF6_Pos (6U) +#define EXTI_FPR1_FPIF6_Msk (0x1UL << EXTI_FPR1_FPIF6_Pos) /*!< 0x00000040 */ +#define EXTI_FPR1_FPIF6 EXTI_FPR1_FPIF6_Msk /*!< Falling Pending Interrupt Flag on line 6 */ +#define EXTI_FPR1_FPIF7_Pos (7U) +#define EXTI_FPR1_FPIF7_Msk (0x1UL << EXTI_FPR1_FPIF7_Pos) /*!< 0x00000080 */ +#define EXTI_FPR1_FPIF7 EXTI_FPR1_FPIF7_Msk /*!< Falling Pending Interrupt Flag on line 7 */ +#define EXTI_FPR1_FPIF8_Pos (8U) +#define EXTI_FPR1_FPIF8_Msk (0x1UL << EXTI_FPR1_FPIF8_Pos) /*!< 0x00000100 */ +#define EXTI_FPR1_FPIF8 EXTI_FPR1_FPIF8_Msk /*!< Falling Pending Interrupt Flag on line 8 */ +#define EXTI_FPR1_FPIF9_Pos (9U) +#define EXTI_FPR1_FPIF9_Msk (0x1UL << EXTI_FPR1_FPIF9_Pos) /*!< 0x00000200 */ +#define EXTI_FPR1_FPIF9 EXTI_FPR1_FPIF9_Msk /*!< Falling Pending Interrupt Flag on line 9 */ +#define EXTI_FPR1_FPIF10_Pos (10U) +#define EXTI_FPR1_FPIF10_Msk (0x1UL << EXTI_FPR1_FPIF10_Pos) /*!< 0x00000400 */ +#define EXTI_FPR1_FPIF10 EXTI_FPR1_FPIF10_Msk /*!< Falling Pending Interrupt Flag on line 10 */ +#define EXTI_FPR1_FPIF11_Pos (11U) +#define EXTI_FPR1_FPIF11_Msk (0x1UL << EXTI_FPR1_FPIF11_Pos) /*!< 0x00000800 */ +#define EXTI_FPR1_FPIF11 EXTI_FPR1_FPIF11_Msk /*!< Falling Pending Interrupt Flag on line 11 */ +#define EXTI_FPR1_FPIF12_Pos (12U) +#define EXTI_FPR1_FPIF12_Msk (0x1UL << EXTI_FPR1_FPIF12_Pos) /*!< 0x00001000 */ +#define EXTI_FPR1_FPIF12 EXTI_FPR1_FPIF12_Msk /*!< Falling Pending Interrupt Flag on line 12 */ +#define EXTI_FPR1_FPIF13_Pos (13U) +#define EXTI_FPR1_FPIF13_Msk (0x1UL << EXTI_FPR1_FPIF13_Pos) /*!< 0x00002000 */ +#define EXTI_FPR1_FPIF13 EXTI_FPR1_FPIF13_Msk /*!< Falling Pending Interrupt Flag on line 13 */ +#define EXTI_FPR1_FPIF14_Pos (14U) +#define EXTI_FPR1_FPIF14_Msk (0x1UL << EXTI_FPR1_FPIF14_Pos) /*!< 0x00004000 */ +#define EXTI_FPR1_FPIF14 EXTI_FPR1_FPIF14_Msk /*!< Falling Pending Interrupt Flag on line 14 */ +#define EXTI_FPR1_FPIF15_Pos (15U) +#define EXTI_FPR1_FPIF15_Msk (0x1UL << EXTI_FPR1_FPIF15_Pos) /*!< 0x00008000 */ +#define EXTI_FPR1_FPIF15 EXTI_FPR1_FPIF15_Msk /*!< Falling Pending Interrupt Flag on line 15 */ + +/***************** Bit definition for EXTI_EXTICR1 register **************/ +#define EXTI_EXTICR1_EXTI0_Pos (0U) +#define EXTI_EXTICR1_EXTI0_Msk (0x7UL << EXTI_EXTICR1_EXTI0_Pos) /*!< 0x00000007 */ +#define EXTI_EXTICR1_EXTI0 EXTI_EXTICR1_EXTI0_Msk /*!< EXTI 0 configuration */ +#define EXTI_EXTICR1_EXTI0_0 (0x1UL << EXTI_EXTICR1_EXTI0_Pos) /*!< 0x00000001 */ +#define EXTI_EXTICR1_EXTI0_1 (0x2UL << EXTI_EXTICR1_EXTI0_Pos) /*!< 0x00000002 */ +#define EXTI_EXTICR1_EXTI0_2 (0x4UL << EXTI_EXTICR1_EXTI0_Pos) /*!< 0x00000004 */ +#define EXTI_EXTICR1_EXTI1_Pos (8U) +#define EXTI_EXTICR1_EXTI1_Msk (0x7UL << EXTI_EXTICR1_EXTI1_Pos) /*!< 0x00000700 */ +#define EXTI_EXTICR1_EXTI1 EXTI_EXTICR1_EXTI1_Msk /*!< EXTI 1 configuration */ +#define EXTI_EXTICR1_EXTI1_0 (0x1UL << EXTI_EXTICR1_EXTI1_Pos) /*!< 0x00000100 */ +#define EXTI_EXTICR1_EXTI1_1 (0x2UL << EXTI_EXTICR1_EXTI1_Pos) /*!< 0x00000200 */ +#define EXTI_EXTICR1_EXTI1_2 (0x4UL << EXTI_EXTICR1_EXTI1_Pos) /*!< 0x00000400 */ +#define EXTI_EXTICR1_EXTI2_Pos (16U) +#define EXTI_EXTICR1_EXTI2_Msk (0x7UL << EXTI_EXTICR1_EXTI2_Pos) /*!< 0x00070000 */ +#define EXTI_EXTICR1_EXTI2 EXTI_EXTICR1_EXTI2_Msk /*!< EXTI 2 configuration */ +#define EXTI_EXTICR1_EXTI2_0 (0x1UL << EXTI_EXTICR1_EXTI2_Pos) /*!< 0x00010000 */ +#define EXTI_EXTICR1_EXTI2_1 (0x2UL << EXTI_EXTICR1_EXTI2_Pos) /*!< 0x00020000 */ +#define EXTI_EXTICR1_EXTI2_2 (0x4UL << EXTI_EXTICR1_EXTI2_Pos) /*!< 0x00040000 */ +#define EXTI_EXTICR1_EXTI3_Pos (24U) +#define EXTI_EXTICR1_EXTI3_Msk (0x7UL << EXTI_EXTICR1_EXTI3_Pos) /*!< 0x07000000 */ +#define EXTI_EXTICR1_EXTI3 EXTI_EXTICR1_EXTI3_Msk /*!< EXTI 3 configuration */ +#define EXTI_EXTICR1_EXTI3_0 (0x1UL << EXTI_EXTICR1_EXTI3_Pos) /*!< 0x01000000 */ +#define EXTI_EXTICR1_EXTI3_1 (0x2UL << EXTI_EXTICR1_EXTI3_Pos) /*!< 0x02000000 */ +#define EXTI_EXTICR1_EXTI3_2 (0x4UL << EXTI_EXTICR1_EXTI3_Pos) /*!< 0x04000000 */ + +/***************** Bit definition for EXTI_EXTICR2 register **************/ +#define EXTI_EXTICR2_EXTI4_Pos (0U) +#define EXTI_EXTICR2_EXTI4_Msk (0x7UL << EXTI_EXTICR2_EXTI4_Pos) /*!< 0x00000007 */ +#define EXTI_EXTICR2_EXTI4 EXTI_EXTICR2_EXTI4_Msk /*!< EXTI 4 configuration */ +#define EXTI_EXTICR2_EXTI4_0 (0x1UL << EXTI_EXTICR2_EXTI4_Pos) /*!< 0x00000001 */ +#define EXTI_EXTICR2_EXTI4_1 (0x2UL << EXTI_EXTICR2_EXTI4_Pos) /*!< 0x00000002 */ +#define EXTI_EXTICR2_EXTI4_2 (0x4UL << EXTI_EXTICR2_EXTI4_Pos) /*!< 0x00000004 */ +#define EXTI_EXTICR2_EXTI5_Pos (8U) +#define EXTI_EXTICR2_EXTI5_Msk (0x7UL << EXTI_EXTICR2_EXTI5_Pos) /*!< 0x00000700 */ +#define EXTI_EXTICR2_EXTI5 EXTI_EXTICR2_EXTI5_Msk /*!< EXTI 5 configuration */ +#define EXTI_EXTICR2_EXTI5_0 (0x1UL << EXTI_EXTICR2_EXTI5_Pos) /*!< 0x00000100 */ +#define EXTI_EXTICR2_EXTI5_1 (0x2UL << EXTI_EXTICR2_EXTI5_Pos) /*!< 0x00000200 */ +#define EXTI_EXTICR2_EXTI5_2 (0x4UL << EXTI_EXTICR2_EXTI5_Pos) /*!< 0x00000400 */ +#define EXTI_EXTICR2_EXTI6_Pos (16U) +#define EXTI_EXTICR2_EXTI6_Msk (0x7UL << EXTI_EXTICR2_EXTI6_Pos) /*!< 0x00070000 */ +#define EXTI_EXTICR2_EXTI6 EXTI_EXTICR2_EXTI6_Msk /*!< EXTI 6 configuration */ +#define EXTI_EXTICR2_EXTI6_0 (0x1UL << EXTI_EXTICR2_EXTI6_Pos) /*!< 0x00010000 */ +#define EXTI_EXTICR2_EXTI6_1 (0x2UL << EXTI_EXTICR2_EXTI6_Pos) /*!< 0x00020000 */ +#define EXTI_EXTICR2_EXTI6_2 (0x4UL << EXTI_EXTICR2_EXTI6_Pos) /*!< 0x00040000 */ +#define EXTI_EXTICR2_EXTI7_Pos (24U) +#define EXTI_EXTICR2_EXTI7_Msk (0x7UL << EXTI_EXTICR2_EXTI7_Pos) /*!< 0x07000000 */ +#define EXTI_EXTICR2_EXTI7 EXTI_EXTICR2_EXTI7_Msk /*!< EXTI 7 configuration */ +#define EXTI_EXTICR2_EXTI7_0 (0x1UL << EXTI_EXTICR2_EXTI7_Pos) /*!< 0x01000000 */ +#define EXTI_EXTICR2_EXTI7_1 (0x2UL << EXTI_EXTICR2_EXTI7_Pos) /*!< 0x02000000 */ +#define EXTI_EXTICR2_EXTI7_2 (0x4UL << EXTI_EXTICR2_EXTI7_Pos) /*!< 0x04000000 */ + +/***************** Bit definition for EXTI_EXTICR3 register **************/ +#define EXTI_EXTICR3_EXTI8_Pos (0U) +#define EXTI_EXTICR3_EXTI8_Msk (0x7UL << EXTI_EXTICR3_EXTI8_Pos) /*!< 0x00000007 */ +#define EXTI_EXTICR3_EXTI8 EXTI_EXTICR3_EXTI8_Msk /*!< EXTI 8 configuration */ +#define EXTI_EXTICR3_EXTI8_0 (0x1UL << EXTI_EXTICR3_EXTI8_Pos) /*!< 0x00000001 */ +#define EXTI_EXTICR3_EXTI8_1 (0x2UL << EXTI_EXTICR3_EXTI8_Pos) /*!< 0x00000002 */ +#define EXTI_EXTICR3_EXTI8_2 (0x4UL << EXTI_EXTICR3_EXTI8_Pos) /*!< 0x00000004 */ +#define EXTI_EXTICR3_EXTI9_Pos (8U) +#define EXTI_EXTICR3_EXTI9_Msk (0x7UL << EXTI_EXTICR3_EXTI9_Pos) /*!< 0x00000700 */ +#define EXTI_EXTICR3_EXTI9 EXTI_EXTICR3_EXTI9_Msk /*!< EXTI 9 configuration */ +#define EXTI_EXTICR3_EXTI9_0 (0x1UL << EXTI_EXTICR3_EXTI9_Pos) /*!< 0x00000100 */ +#define EXTI_EXTICR3_EXTI9_1 (0x2UL << EXTI_EXTICR3_EXTI9_Pos) /*!< 0x00000200 */ +#define EXTI_EXTICR3_EXTI9_2 (0x4UL << EXTI_EXTICR3_EXTI9_Pos) /*!< 0x00000400 */ +#define EXTI_EXTICR3_EXTI10_Pos (16U) +#define EXTI_EXTICR3_EXTI10_Msk (0x7UL << EXTI_EXTICR3_EXTI10_Pos) /*!< 0x00070000 */ +#define EXTI_EXTICR3_EXTI10 EXTI_EXTICR3_EXTI10_Msk /*!< EXTI 10 configuration */ +#define EXTI_EXTICR3_EXTI10_0 (0x1UL << EXTI_EXTICR3_EXTI10_Pos) /*!< 0x00010000 */ +#define EXTI_EXTICR3_EXTI10_1 (0x2UL << EXTI_EXTICR3_EXTI10_Pos) /*!< 0x00020000 */ +#define EXTI_EXTICR3_EXTI10_2 (0x4UL << EXTI_EXTICR3_EXTI10_Pos) /*!< 0x00040000 */ +#define EXTI_EXTICR3_EXTI11_Pos (24U) +#define EXTI_EXTICR3_EXTI11_Msk (0x7UL << EXTI_EXTICR3_EXTI11_Pos) /*!< 0x07000000 */ +#define EXTI_EXTICR3_EXTI11 EXTI_EXTICR3_EXTI11_Msk /*!< EXTI 11 configuration */ +#define EXTI_EXTICR3_EXTI11_0 (0x1UL << EXTI_EXTICR3_EXTI11_Pos) /*!< 0x01000000 */ +#define EXTI_EXTICR3_EXTI11_1 (0x2UL << EXTI_EXTICR3_EXTI11_Pos) /*!< 0x02000000 */ +#define EXTI_EXTICR3_EXTI11_2 (0x4UL << EXTI_EXTICR3_EXTI11_Pos) /*!< 0x04000000 */ + +/***************** Bit definition for EXTI_EXTICR4 register **************/ +#define EXTI_EXTICR4_EXTI12_Pos (0U) +#define EXTI_EXTICR4_EXTI12_Msk (0x7UL << EXTI_EXTICR4_EXTI12_Pos) /*!< 0x00000007 */ +#define EXTI_EXTICR4_EXTI12 EXTI_EXTICR4_EXTI12_Msk /*!< EXTI 12 configuration */ +#define EXTI_EXTICR4_EXTI12_0 (0x1UL << EXTI_EXTICR4_EXTI12_Pos) /*!< 0x00000001 */ +#define EXTI_EXTICR4_EXTI12_1 (0x2UL << EXTI_EXTICR4_EXTI12_Pos) /*!< 0x00000002 */ +#define EXTI_EXTICR4_EXTI12_2 (0x4UL << EXTI_EXTICR4_EXTI12_Pos) /*!< 0x00000004 */ +#define EXTI_EXTICR4_EXTI13_Pos (8U) +#define EXTI_EXTICR4_EXTI13_Msk (0x7UL << EXTI_EXTICR4_EXTI13_Pos) /*!< 0x00000700 */ +#define EXTI_EXTICR4_EXTI13 EXTI_EXTICR4_EXTI13_Msk /*!< EXTI 13 configuration */ +#define EXTI_EXTICR4_EXTI13_0 (0x1UL << EXTI_EXTICR4_EXTI13_Pos) /*!< 0x00000100 */ +#define EXTI_EXTICR4_EXTI13_1 (0x2UL << EXTI_EXTICR4_EXTI13_Pos) /*!< 0x00000200 */ +#define EXTI_EXTICR4_EXTI13_2 (0x4UL << EXTI_EXTICR4_EXTI13_Pos) /*!< 0x00000400 */ +#define EXTI_EXTICR4_EXTI14_Pos (16U) +#define EXTI_EXTICR4_EXTI14_Msk (0x7UL << EXTI_EXTICR4_EXTI14_Pos) /*!< 0x00070000 */ +#define EXTI_EXTICR4_EXTI14 EXTI_EXTICR4_EXTI14_Msk /*!< EXTI 14 configuration */ +#define EXTI_EXTICR4_EXTI14_0 (0x1UL << EXTI_EXTICR4_EXTI14_Pos) /*!< 0x00010000 */ +#define EXTI_EXTICR4_EXTI14_1 (0x2UL << EXTI_EXTICR4_EXTI14_Pos) /*!< 0x00020000 */ +#define EXTI_EXTICR4_EXTI14_2 (0x4UL << EXTI_EXTICR4_EXTI14_Pos) /*!< 0x00040000 */ +#define EXTI_EXTICR4_EXTI15_Pos (24U) +#define EXTI_EXTICR4_EXTI15_Msk (0x7UL << EXTI_EXTICR4_EXTI15_Pos) /*!< 0x07000000 */ +#define EXTI_EXTICR4_EXTI15 EXTI_EXTICR4_EXTI15_Msk /*!< EXTI 15 configuration */ +#define EXTI_EXTICR4_EXTI15_0 (0x1UL << EXTI_EXTICR4_EXTI15_Pos) /*!< 0x01000000 */ +#define EXTI_EXTICR4_EXTI15_1 (0x2UL << EXTI_EXTICR4_EXTI15_Pos) /*!< 0x02000000 */ +#define EXTI_EXTICR4_EXTI15_2 (0x4UL << EXTI_EXTICR4_EXTI15_Pos) /*!< 0x04000000 */ + +/******************* Bit definition for EXTI_IMR1 register ******************/ +#define EXTI_IMR1_IM0_Pos (0U) +#define EXTI_IMR1_IM0_Msk (0x1UL << EXTI_IMR1_IM0_Pos) /*!< 0x00000001 */ +#define EXTI_IMR1_IM0 EXTI_IMR1_IM0_Msk /*!< Interrupt Mask on line 0 */ +#define EXTI_IMR1_IM1_Pos (1U) +#define EXTI_IMR1_IM1_Msk (0x1UL << EXTI_IMR1_IM1_Pos) /*!< 0x00000002 */ +#define EXTI_IMR1_IM1 EXTI_IMR1_IM1_Msk /*!< Interrupt Mask on line 1 */ +#define EXTI_IMR1_IM2_Pos (2U) +#define EXTI_IMR1_IM2_Msk (0x1UL << EXTI_IMR1_IM2_Pos) /*!< 0x00000004 */ +#define EXTI_IMR1_IM2 EXTI_IMR1_IM2_Msk /*!< Interrupt Mask on line 2 */ +#define EXTI_IMR1_IM3_Pos (3U) +#define EXTI_IMR1_IM3_Msk (0x1UL << EXTI_IMR1_IM3_Pos) /*!< 0x00000008 */ +#define EXTI_IMR1_IM3 EXTI_IMR1_IM3_Msk /*!< Interrupt Mask on line 3 */ +#define EXTI_IMR1_IM4_Pos (4U) +#define EXTI_IMR1_IM4_Msk (0x1UL << EXTI_IMR1_IM4_Pos) /*!< 0x00000010 */ +#define EXTI_IMR1_IM4 EXTI_IMR1_IM4_Msk /*!< Interrupt Mask on line 4 */ +#define EXTI_IMR1_IM5_Pos (5U) +#define EXTI_IMR1_IM5_Msk (0x1UL << EXTI_IMR1_IM5_Pos) /*!< 0x00000020 */ +#define EXTI_IMR1_IM5 EXTI_IMR1_IM5_Msk /*!< Interrupt Mask on line 5 */ +#define EXTI_IMR1_IM6_Pos (6U) +#define EXTI_IMR1_IM6_Msk (0x1UL << EXTI_IMR1_IM6_Pos) /*!< 0x00000040 */ +#define EXTI_IMR1_IM6 EXTI_IMR1_IM6_Msk /*!< Interrupt Mask on line 6 */ +#define EXTI_IMR1_IM7_Pos (7U) +#define EXTI_IMR1_IM7_Msk (0x1UL << EXTI_IMR1_IM7_Pos) /*!< 0x00000080 */ +#define EXTI_IMR1_IM7 EXTI_IMR1_IM7_Msk /*!< Interrupt Mask on line 7 */ +#define EXTI_IMR1_IM8_Pos (8U) +#define EXTI_IMR1_IM8_Msk (0x1UL << EXTI_IMR1_IM8_Pos) /*!< 0x00000100 */ +#define EXTI_IMR1_IM8 EXTI_IMR1_IM8_Msk /*!< Interrupt Mask on line 8 */ +#define EXTI_IMR1_IM9_Pos (9U) +#define EXTI_IMR1_IM9_Msk (0x1UL << EXTI_IMR1_IM9_Pos) /*!< 0x00000200 */ +#define EXTI_IMR1_IM9 EXTI_IMR1_IM9_Msk /*!< Interrupt Mask on line 9 */ +#define EXTI_IMR1_IM10_Pos (10U) +#define EXTI_IMR1_IM10_Msk (0x1UL << EXTI_IMR1_IM10_Pos) /*!< 0x00000400 */ +#define EXTI_IMR1_IM10 EXTI_IMR1_IM10_Msk /*!< Interrupt Mask on line 10 */ +#define EXTI_IMR1_IM11_Pos (11U) +#define EXTI_IMR1_IM11_Msk (0x1UL << EXTI_IMR1_IM11_Pos) /*!< 0x00000800 */ +#define EXTI_IMR1_IM11 EXTI_IMR1_IM11_Msk /*!< Interrupt Mask on line 11 */ +#define EXTI_IMR1_IM12_Pos (12U) +#define EXTI_IMR1_IM12_Msk (0x1UL << EXTI_IMR1_IM12_Pos) /*!< 0x00001000 */ +#define EXTI_IMR1_IM12 EXTI_IMR1_IM12_Msk /*!< Interrupt Mask on line 12 */ +#define EXTI_IMR1_IM13_Pos (13U) +#define EXTI_IMR1_IM13_Msk (0x1UL << EXTI_IMR1_IM13_Pos) /*!< 0x00002000 */ +#define EXTI_IMR1_IM13 EXTI_IMR1_IM13_Msk /*!< Interrupt Mask on line 13 */ +#define EXTI_IMR1_IM14_Pos (14U) +#define EXTI_IMR1_IM14_Msk (0x1UL << EXTI_IMR1_IM14_Pos) /*!< 0x00004000 */ +#define EXTI_IMR1_IM14 EXTI_IMR1_IM14_Msk /*!< Interrupt Mask on line 14 */ +#define EXTI_IMR1_IM15_Pos (15U) +#define EXTI_IMR1_IM15_Msk (0x1UL << EXTI_IMR1_IM15_Pos) /*!< 0x00008000 */ +#define EXTI_IMR1_IM15 EXTI_IMR1_IM15_Msk /*!< Interrupt Mask on line 15 */ +#define EXTI_IMR1_IM19_Pos (19U) +#define EXTI_IMR1_IM19_Msk (0x1UL << EXTI_IMR1_IM19_Pos) /*!< 0x00080000 */ +#define EXTI_IMR1_IM19 EXTI_IMR1_IM19_Msk /*!< Interrupt Mask on line 19 */ +#define EXTI_IMR1_IM21_Pos (21U) +#define EXTI_IMR1_IM21_Msk (0x1UL << EXTI_IMR1_IM21_Pos) /*!< 0x00200000 */ +#define EXTI_IMR1_IM21 EXTI_IMR1_IM21_Msk /*!< Interrupt Mask on line 21 */ +#define EXTI_IMR1_IM23_Pos (23U) +#define EXTI_IMR1_IM23_Msk (0x1UL << EXTI_IMR1_IM23_Pos) /*!< 0x00800000 */ +#define EXTI_IMR1_IM23 EXTI_IMR1_IM23_Msk /*!< Interrupt Mask on line 23 */ +#define EXTI_IMR1_IM25_Pos (25U) +#define EXTI_IMR1_IM25_Msk (0x1UL << EXTI_IMR1_IM25_Pos) /*!< 0x02000000 */ +#define EXTI_IMR1_IM25 EXTI_IMR1_IM25_Msk /*!< Interrupt Mask on line 25 */ +#define EXTI_IMR1_IM31_Pos (31U) +#define EXTI_IMR1_IM31_Msk (0x1UL << EXTI_IMR1_IM31_Pos) /*!< 0x80000000 */ +#define EXTI_IMR1_IM31 EXTI_IMR1_IM31_Msk /*!< Interrupt Mask on line 31 */ +#define EXTI_IMR1_IM_Pos (0U) +#define EXTI_IMR1_IM_Msk (0x82A8FFFFUL << EXTI_IMR1_IM_Pos) /*!< 0x82A8FFFF */ +#define EXTI_IMR1_IM EXTI_IMR1_IM_Msk /*!< Interrupt Mask All */ + + +/******************* Bit definition for EXTI_EMR1 register ******************/ +#define EXTI_EMR1_EM0_Pos (0U) +#define EXTI_EMR1_EM0_Msk (0x1UL << EXTI_EMR1_EM0_Pos) /*!< 0x00000001 */ +#define EXTI_EMR1_EM0 EXTI_EMR1_EM0_Msk /*!< Event Mask on line 0 */ +#define EXTI_EMR1_EM1_Pos (1U) +#define EXTI_EMR1_EM1_Msk (0x1UL << EXTI_EMR1_EM1_Pos) /*!< 0x00000002 */ +#define EXTI_EMR1_EM1 EXTI_EMR1_EM1_Msk /*!< Event Mask on line 1 */ +#define EXTI_EMR1_EM2_Pos (2U) +#define EXTI_EMR1_EM2_Msk (0x1UL << EXTI_EMR1_EM2_Pos) /*!< 0x00000004 */ +#define EXTI_EMR1_EM2 EXTI_EMR1_EM2_Msk /*!< Event Mask on line 2 */ +#define EXTI_EMR1_EM3_Pos (3U) +#define EXTI_EMR1_EM3_Msk (0x1UL << EXTI_EMR1_EM3_Pos) /*!< 0x00000008 */ +#define EXTI_EMR1_EM3 EXTI_EMR1_EM3_Msk /*!< Event Mask on line 3 */ +#define EXTI_EMR1_EM4_Pos (4U) +#define EXTI_EMR1_EM4_Msk (0x1UL << EXTI_EMR1_EM4_Pos) /*!< 0x00000010 */ +#define EXTI_EMR1_EM4 EXTI_EMR1_EM4_Msk /*!< Event Mask on line 4 */ +#define EXTI_EMR1_EM5_Pos (5U) +#define EXTI_EMR1_EM5_Msk (0x1UL << EXTI_EMR1_EM5_Pos) /*!< 0x00000020 */ +#define EXTI_EMR1_EM5 EXTI_EMR1_EM5_Msk /*!< Event Mask on line 5 */ +#define EXTI_EMR1_EM6_Pos (6U) +#define EXTI_EMR1_EM6_Msk (0x1UL << EXTI_EMR1_EM6_Pos) /*!< 0x00000040 */ +#define EXTI_EMR1_EM6 EXTI_EMR1_EM6_Msk /*!< Event Mask on line 6 */ +#define EXTI_EMR1_EM7_Pos (7U) +#define EXTI_EMR1_EM7_Msk (0x1UL << EXTI_EMR1_EM7_Pos) /*!< 0x00000080 */ +#define EXTI_EMR1_EM7 EXTI_EMR1_EM7_Msk /*!< Event Mask on line 7 */ +#define EXTI_EMR1_EM8_Pos (8U) +#define EXTI_EMR1_EM8_Msk (0x1UL << EXTI_EMR1_EM8_Pos) /*!< 0x00000100 */ +#define EXTI_EMR1_EM8 EXTI_EMR1_EM8_Msk /*!< Event Mask on line 8 */ +#define EXTI_EMR1_EM9_Pos (9U) +#define EXTI_EMR1_EM9_Msk (0x1UL << EXTI_EMR1_EM9_Pos) /*!< 0x00000200 */ +#define EXTI_EMR1_EM9 EXTI_EMR1_EM9_Msk /*!< Event Mask on line 9 */ +#define EXTI_EMR1_EM10_Pos (10U) +#define EXTI_EMR1_EM10_Msk (0x1UL << EXTI_EMR1_EM10_Pos) /*!< 0x00000400 */ +#define EXTI_EMR1_EM10 EXTI_EMR1_EM10_Msk /*!< Event Mask on line 10 */ +#define EXTI_EMR1_EM11_Pos (11U) +#define EXTI_EMR1_EM11_Msk (0x1UL << EXTI_EMR1_EM11_Pos) /*!< 0x00000800 */ +#define EXTI_EMR1_EM11 EXTI_EMR1_EM11_Msk /*!< Event Mask on line 11 */ +#define EXTI_EMR1_EM12_Pos (12U) +#define EXTI_EMR1_EM12_Msk (0x1UL << EXTI_EMR1_EM12_Pos) /*!< 0x00001000 */ +#define EXTI_EMR1_EM12 EXTI_EMR1_EM12_Msk /*!< Event Mask on line 12 */ +#define EXTI_EMR1_EM13_Pos (13U) +#define EXTI_EMR1_EM13_Msk (0x1UL << EXTI_EMR1_EM13_Pos) /*!< 0x00002000 */ +#define EXTI_EMR1_EM13 EXTI_EMR1_EM13_Msk /*!< Event Mask on line 13 */ +#define EXTI_EMR1_EM14_Pos (14U) +#define EXTI_EMR1_EM14_Msk (0x1UL << EXTI_EMR1_EM14_Pos) /*!< 0x00004000 */ +#define EXTI_EMR1_EM14 EXTI_EMR1_EM14_Msk /*!< Event Mask on line 14 */ +#define EXTI_EMR1_EM15_Pos (15U) +#define EXTI_EMR1_EM15_Msk (0x1UL << EXTI_EMR1_EM15_Pos) /*!< 0x00008000 */ +#define EXTI_EMR1_EM15 EXTI_EMR1_EM15_Msk /*!< Event Mask on line 15 */ +#define EXTI_EMR1_EM19_Pos (19U) +#define EXTI_EMR1_EM19_Msk (0x1UL << EXTI_EMR1_EM19_Pos) /*!< 0x00080000 */ +#define EXTI_EMR1_EM19 EXTI_EMR1_EM19_Msk /*!< Event Mask on line 19 */ +#define EXTI_EMR1_EM21_Pos (21U) +#define EXTI_EMR1_EM21_Msk (0x1UL << EXTI_EMR1_EM21_Pos) /*!< 0x00200000 */ +#define EXTI_EMR1_EM21 EXTI_EMR1_EM21_Msk /*!< Event Mask on line 21 */ +#define EXTI_EMR1_EM23_Pos (23U) +#define EXTI_EMR1_EM23_Msk (0x1UL << EXTI_EMR1_EM23_Pos) /*!< 0x00800000 */ +#define EXTI_EMR1_EM23 EXTI_EMR1_EM23_Msk /*!< Event Mask on line 23 */ +#define EXTI_EMR1_EM25_Pos (25U) +#define EXTI_EMR1_EM25_Msk (0x1UL << EXTI_EMR1_EM25_Pos) /*!< 0x02000000 */ +#define EXTI_EMR1_EM25 EXTI_EMR1_EM25_Msk /*!< Event Mask on line 25 */ +#define EXTI_EMR1_EM31_Pos (31U) +#define EXTI_EMR1_EM31_Msk (0x1UL << EXTI_EMR1_EM31_Pos) /*!< 0x80000000 */ +#define EXTI_EMR1_EM31 EXTI_EMR1_EM31_Msk /*!< Event Mask on line 31 */ + + +/******************************************************************************/ +/* */ +/* FLASH */ +/* */ +/******************************************************************************/ +/* Note: No specific macro feature on this device */ + +/******************* Bits definition for FLASH_ACR register *****************/ +#define FLASH_ACR_LATENCY_Pos (0U) +#define FLASH_ACR_LATENCY_Msk (0x7UL << FLASH_ACR_LATENCY_Pos) /*!< 0x00000007 */ +#define FLASH_ACR_LATENCY FLASH_ACR_LATENCY_Msk +#define FLASH_ACR_LATENCY_0 (0x1UL << FLASH_ACR_LATENCY_Pos) /*!< 0x00000001 */ +#define FLASH_ACR_LATENCY_1 (0x2UL << FLASH_ACR_LATENCY_Pos) /*!< 0x00000002 */ +#define FLASH_ACR_LATENCY_2 (0x4UL << FLASH_ACR_LATENCY_Pos) /*!< 0x00000004 */ +#define FLASH_ACR_PRFTEN_Pos (8U) +#define FLASH_ACR_PRFTEN_Msk (0x1UL << FLASH_ACR_PRFTEN_Pos) /*!< 0x00000100 */ +#define FLASH_ACR_PRFTEN FLASH_ACR_PRFTEN_Msk +#define FLASH_ACR_ICEN_Pos (9U) +#define FLASH_ACR_ICEN_Msk (0x1UL << FLASH_ACR_ICEN_Pos) /*!< 0x00000200 */ +#define FLASH_ACR_ICEN FLASH_ACR_ICEN_Msk +#define FLASH_ACR_ICRST_Pos (11U) +#define FLASH_ACR_ICRST_Msk (0x1UL << FLASH_ACR_ICRST_Pos) /*!< 0x00000800 */ +#define FLASH_ACR_ICRST FLASH_ACR_ICRST_Msk +#define FLASH_ACR_PROGEMPTY_Pos (16U) +#define FLASH_ACR_PROGEMPTY_Msk (0x1UL << FLASH_ACR_PROGEMPTY_Pos) /*!< 0x00010000 */ +#define FLASH_ACR_PROGEMPTY FLASH_ACR_PROGEMPTY_Msk + +/******************* Bits definition for FLASH_SR register ******************/ +#define FLASH_SR_EOP_Pos (0U) +#define FLASH_SR_EOP_Msk (0x1UL << FLASH_SR_EOP_Pos) /*!< 0x00000001 */ +#define FLASH_SR_EOP FLASH_SR_EOP_Msk +#define FLASH_SR_OPERR_Pos (1U) +#define FLASH_SR_OPERR_Msk (0x1UL << FLASH_SR_OPERR_Pos) /*!< 0x00000002 */ +#define FLASH_SR_OPERR FLASH_SR_OPERR_Msk +#define FLASH_SR_PROGERR_Pos (3U) +#define FLASH_SR_PROGERR_Msk (0x1UL << FLASH_SR_PROGERR_Pos) /*!< 0x00000008 */ +#define FLASH_SR_PROGERR FLASH_SR_PROGERR_Msk +#define FLASH_SR_WRPERR_Pos (4U) +#define FLASH_SR_WRPERR_Msk (0x1UL << FLASH_SR_WRPERR_Pos) /*!< 0x00000010 */ +#define FLASH_SR_WRPERR FLASH_SR_WRPERR_Msk +#define FLASH_SR_PGAERR_Pos (5U) +#define FLASH_SR_PGAERR_Msk (0x1UL << FLASH_SR_PGAERR_Pos) /*!< 0x00000020 */ +#define FLASH_SR_PGAERR FLASH_SR_PGAERR_Msk +#define FLASH_SR_SIZERR_Pos (6U) +#define FLASH_SR_SIZERR_Msk (0x1UL << FLASH_SR_SIZERR_Pos) /*!< 0x00000040 */ +#define FLASH_SR_SIZERR FLASH_SR_SIZERR_Msk +#define FLASH_SR_PGSERR_Pos (7U) +#define FLASH_SR_PGSERR_Msk (0x1UL << FLASH_SR_PGSERR_Pos) /*!< 0x00000080 */ +#define FLASH_SR_PGSERR FLASH_SR_PGSERR_Msk +#define FLASH_SR_MISERR_Pos (8U) +#define FLASH_SR_MISERR_Msk (0x1UL << FLASH_SR_MISERR_Pos) /*!< 0x00000100 */ +#define FLASH_SR_MISERR FLASH_SR_MISERR_Msk +#define FLASH_SR_FASTERR_Pos (9U) +#define FLASH_SR_FASTERR_Msk (0x1UL << FLASH_SR_FASTERR_Pos) /*!< 0x00000200 */ +#define FLASH_SR_FASTERR FLASH_SR_FASTERR_Msk +#define FLASH_SR_OPTVERR_Pos (15U) +#define FLASH_SR_OPTVERR_Msk (0x1UL << FLASH_SR_OPTVERR_Pos) /*!< 0x00008000 */ +#define FLASH_SR_OPTVERR FLASH_SR_OPTVERR_Msk +#define FLASH_SR_BSY1_Pos (16U) +#define FLASH_SR_BSY1_Msk (0x1UL << FLASH_SR_BSY1_Pos) /*!< 0x00010000 */ +#define FLASH_SR_BSY1 FLASH_SR_BSY1_Msk +#define FLASH_SR_CFGBSY_Pos (18U) +#define FLASH_SR_CFGBSY_Msk (0x1UL << FLASH_SR_CFGBSY_Pos) /*!< 0x00040000 */ +#define FLASH_SR_CFGBSY FLASH_SR_CFGBSY_Msk + +/******************* Bits definition for FLASH_CR register ******************/ +#define FLASH_CR_PG_Pos (0U) +#define FLASH_CR_PG_Msk (0x1UL << FLASH_CR_PG_Pos) /*!< 0x00000001 */ +#define FLASH_CR_PG FLASH_CR_PG_Msk +#define FLASH_CR_PER_Pos (1U) +#define FLASH_CR_PER_Msk (0x1UL << FLASH_CR_PER_Pos) /*!< 0x00000002 */ +#define FLASH_CR_PER FLASH_CR_PER_Msk +#define FLASH_CR_MER1_Pos (2U) +#define FLASH_CR_MER1_Msk (0x1UL << FLASH_CR_MER1_Pos) /*!< 0x00000004 */ +#define FLASH_CR_MER1 FLASH_CR_MER1_Msk +#define FLASH_CR_PNB_Pos (3U) +#define FLASH_CR_PNB_Msk (0x1FUL << FLASH_CR_PNB_Pos) /*!< 0x000000F8 */ +#define FLASH_CR_PNB FLASH_CR_PNB_Msk +#define FLASH_CR_STRT_Pos (16U) +#define FLASH_CR_STRT_Msk (0x1UL << FLASH_CR_STRT_Pos) /*!< 0x00010000 */ +#define FLASH_CR_STRT FLASH_CR_STRT_Msk +#define FLASH_CR_OPTSTRT_Pos (17U) +#define FLASH_CR_OPTSTRT_Msk (0x1UL << FLASH_CR_OPTSTRT_Pos) /*!< 0x00020000 */ +#define FLASH_CR_OPTSTRT FLASH_CR_OPTSTRT_Msk +#define FLASH_CR_FSTPG_Pos (18U) +#define FLASH_CR_FSTPG_Msk (0x1UL << FLASH_CR_FSTPG_Pos) /*!< 0x00040000 */ +#define FLASH_CR_FSTPG FLASH_CR_FSTPG_Msk +#define FLASH_CR_EOPIE_Pos (24U) +#define FLASH_CR_EOPIE_Msk (0x1UL << FLASH_CR_EOPIE_Pos) /*!< 0x01000000 */ +#define FLASH_CR_EOPIE FLASH_CR_EOPIE_Msk +#define FLASH_CR_ERRIE_Pos (25U) +#define FLASH_CR_ERRIE_Msk (0x1UL << FLASH_CR_ERRIE_Pos) /*!< 0x02000000 */ +#define FLASH_CR_ERRIE FLASH_CR_ERRIE_Msk +#define FLASH_CR_OBL_LAUNCH_Pos (27U) +#define FLASH_CR_OBL_LAUNCH_Msk (0x1UL << FLASH_CR_OBL_LAUNCH_Pos) /*!< 0x08000000 */ +#define FLASH_CR_OBL_LAUNCH FLASH_CR_OBL_LAUNCH_Msk +#define FLASH_CR_OPTLOCK_Pos (30U) +#define FLASH_CR_OPTLOCK_Msk (0x1UL << FLASH_CR_OPTLOCK_Pos) /*!< 0x40000000 */ +#define FLASH_CR_OPTLOCK FLASH_CR_OPTLOCK_Msk +#define FLASH_CR_LOCK_Pos (31U) +#define FLASH_CR_LOCK_Msk (0x1UL << FLASH_CR_LOCK_Pos) /*!< 0x80000000 */ +#define FLASH_CR_LOCK FLASH_CR_LOCK_Msk + +/******************* Bits definition for FLASH_ECCR register ****************/ +#define FLASH_ECCR_ADDR_ECC_Pos (0U) +#define FLASH_ECCR_ADDR_ECC_Msk (0x3FFFUL << FLASH_ECCR_ADDR_ECC_Pos) /*!< 0x00003FFF */ +#define FLASH_ECCR_ADDR_ECC FLASH_ECCR_ADDR_ECC_Msk +#define FLASH_ECCR_SYSF_ECC_Pos (20U) +#define FLASH_ECCR_SYSF_ECC_Msk (0x1UL << FLASH_ECCR_SYSF_ECC_Pos) /*!< 0x00100000 */ +#define FLASH_ECCR_SYSF_ECC FLASH_ECCR_SYSF_ECC_Msk +#define FLASH_ECCR_ECCCIE_Pos (24U) +#define FLASH_ECCR_ECCCIE_Msk (0x1UL << FLASH_ECCR_ECCCIE_Pos) /*!< 0x01000000 */ +#define FLASH_ECCR_ECCCIE FLASH_ECCR_ECCCIE_Msk +#define FLASH_ECCR_ECCC_Pos (30U) +#define FLASH_ECCR_ECCC_Msk (0x1UL << FLASH_ECCR_ECCC_Pos) /*!< 0x40000000 */ +#define FLASH_ECCR_ECCC FLASH_ECCR_ECCC_Msk +#define FLASH_ECCR_ECCD_Pos (31U) +#define FLASH_ECCR_ECCD_Msk (0x1UL << FLASH_ECCR_ECCD_Pos) /*!< 0x80000000 */ +#define FLASH_ECCR_ECCD FLASH_ECCR_ECCD_Msk + +/******************* Bits definition for FLASH_OPTR register ****************/ +#define FLASH_OPTR_RDP_Pos (0U) +#define FLASH_OPTR_RDP_Msk (0xFFUL << FLASH_OPTR_RDP_Pos) /*!< 0x000000FF */ +#define FLASH_OPTR_RDP FLASH_OPTR_RDP_Msk +#define FLASH_OPTR_nRST_STOP_Pos (13U) +#define FLASH_OPTR_nRST_STOP_Msk (0x1UL << FLASH_OPTR_nRST_STOP_Pos) /*!< 0x00002000 */ +#define FLASH_OPTR_nRST_STOP FLASH_OPTR_nRST_STOP_Msk +#define FLASH_OPTR_nRST_STDBY_Pos (14U) +#define FLASH_OPTR_nRST_STDBY_Msk (0x1UL << FLASH_OPTR_nRST_STDBY_Pos) /*!< 0x00004000 */ +#define FLASH_OPTR_nRST_STDBY FLASH_OPTR_nRST_STDBY_Msk +#define FLASH_OPTR_IWDG_SW_Pos (16U) +#define FLASH_OPTR_IWDG_SW_Msk (0x1UL << FLASH_OPTR_IWDG_SW_Pos) /*!< 0x00010000 */ +#define FLASH_OPTR_IWDG_SW FLASH_OPTR_IWDG_SW_Msk +#define FLASH_OPTR_IWDG_STOP_Pos (17U) +#define FLASH_OPTR_IWDG_STOP_Msk (0x1UL << FLASH_OPTR_IWDG_STOP_Pos) /*!< 0x00020000 */ +#define FLASH_OPTR_IWDG_STOP FLASH_OPTR_IWDG_STOP_Msk +#define FLASH_OPTR_IWDG_STDBY_Pos (18U) +#define FLASH_OPTR_IWDG_STDBY_Msk (0x1UL << FLASH_OPTR_IWDG_STDBY_Pos) /*!< 0x00040000 */ +#define FLASH_OPTR_IWDG_STDBY FLASH_OPTR_IWDG_STDBY_Msk +#define FLASH_OPTR_WWDG_SW_Pos (19U) +#define FLASH_OPTR_WWDG_SW_Msk (0x1UL << FLASH_OPTR_WWDG_SW_Pos) /*!< 0x00080000 */ +#define FLASH_OPTR_WWDG_SW FLASH_OPTR_WWDG_SW_Msk +#define FLASH_OPTR_RAM_PARITY_CHECK_Pos (22U) +#define FLASH_OPTR_RAM_PARITY_CHECK_Msk (0x1UL << FLASH_OPTR_RAM_PARITY_CHECK_Pos) /*!< 0x00400000 */ +#define FLASH_OPTR_RAM_PARITY_CHECK FLASH_OPTR_RAM_PARITY_CHECK_Msk +#define FLASH_OPTR_nBOOT_SEL_Pos (24U) +#define FLASH_OPTR_nBOOT_SEL_Msk (0x1UL << FLASH_OPTR_nBOOT_SEL_Pos) /*!< 0x01000000 */ +#define FLASH_OPTR_nBOOT_SEL FLASH_OPTR_nBOOT_SEL_Msk +#define FLASH_OPTR_nBOOT1_Pos (25U) +#define FLASH_OPTR_nBOOT1_Msk (0x1UL << FLASH_OPTR_nBOOT1_Pos) /*!< 0x02000000 */ +#define FLASH_OPTR_nBOOT1 FLASH_OPTR_nBOOT1_Msk +#define FLASH_OPTR_nBOOT0_Pos (26U) +#define FLASH_OPTR_nBOOT0_Msk (0x1UL << FLASH_OPTR_nBOOT0_Pos) /*!< 0x04000000 */ +#define FLASH_OPTR_nBOOT0 FLASH_OPTR_nBOOT0_Msk + +/****************** Bits definition for FLASH_WRP1AR register ***************/ +#define FLASH_WRP1AR_WRP1A_STRT_Pos (0U) +#define FLASH_WRP1AR_WRP1A_STRT_Msk (0x1FUL << FLASH_WRP1AR_WRP1A_STRT_Pos) /*!< 0x0000001F */ +#define FLASH_WRP1AR_WRP1A_STRT FLASH_WRP1AR_WRP1A_STRT_Msk +#define FLASH_WRP1AR_WRP1A_END_Pos (16U) +#define FLASH_WRP1AR_WRP1A_END_Msk (0x1FUL << FLASH_WRP1AR_WRP1A_END_Pos) /*!< 0x001F0000 */ +#define FLASH_WRP1AR_WRP1A_END FLASH_WRP1AR_WRP1A_END_Msk + +/****************** Bits definition for FLASH_WRP1BR register ***************/ +#define FLASH_WRP1BR_WRP1B_STRT_Pos (0U) +#define FLASH_WRP1BR_WRP1B_STRT_Msk (0x1FUL << FLASH_WRP1BR_WRP1B_STRT_Pos) /*!< 0x0000001F */ +#define FLASH_WRP1BR_WRP1B_STRT FLASH_WRP1BR_WRP1B_STRT_Msk +#define FLASH_WRP1BR_WRP1B_END_Pos (16U) +#define FLASH_WRP1BR_WRP1B_END_Msk (0x1FUL << FLASH_WRP1BR_WRP1B_END_Pos) /*!< 0x001F0000 */ +#define FLASH_WRP1BR_WRP1B_END FLASH_WRP1BR_WRP1B_END_Msk + + +/******************************************************************************/ +/* */ +/* General Purpose I/O */ +/* */ +/******************************************************************************/ +/****************** Bits definition for GPIO_MODER register *****************/ +#define GPIO_MODER_MODE0_Pos (0U) +#define GPIO_MODER_MODE0_Msk (0x3UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000003 */ +#define GPIO_MODER_MODE0 GPIO_MODER_MODE0_Msk +#define GPIO_MODER_MODE0_0 (0x1UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000001 */ +#define GPIO_MODER_MODE0_1 (0x2UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000002 */ +#define GPIO_MODER_MODE1_Pos (2U) +#define GPIO_MODER_MODE1_Msk (0x3UL << GPIO_MODER_MODE1_Pos) /*!< 0x0000000C */ +#define GPIO_MODER_MODE1 GPIO_MODER_MODE1_Msk +#define GPIO_MODER_MODE1_0 (0x1UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000004 */ +#define GPIO_MODER_MODE1_1 (0x2UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000008 */ +#define GPIO_MODER_MODE2_Pos (4U) +#define GPIO_MODER_MODE2_Msk (0x3UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000030 */ +#define GPIO_MODER_MODE2 GPIO_MODER_MODE2_Msk +#define GPIO_MODER_MODE2_0 (0x1UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000010 */ +#define GPIO_MODER_MODE2_1 (0x2UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000020 */ +#define GPIO_MODER_MODE3_Pos (6U) +#define GPIO_MODER_MODE3_Msk (0x3UL << GPIO_MODER_MODE3_Pos) /*!< 0x000000C0 */ +#define GPIO_MODER_MODE3 GPIO_MODER_MODE3_Msk +#define GPIO_MODER_MODE3_0 (0x1UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000040 */ +#define GPIO_MODER_MODE3_1 (0x2UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000080 */ +#define GPIO_MODER_MODE4_Pos (8U) +#define GPIO_MODER_MODE4_Msk (0x3UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000300 */ +#define GPIO_MODER_MODE4 GPIO_MODER_MODE4_Msk +#define GPIO_MODER_MODE4_0 (0x1UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000100 */ +#define GPIO_MODER_MODE4_1 (0x2UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000200 */ +#define GPIO_MODER_MODE5_Pos (10U) +#define GPIO_MODER_MODE5_Msk (0x3UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000C00 */ +#define GPIO_MODER_MODE5 GPIO_MODER_MODE5_Msk +#define GPIO_MODER_MODE5_0 (0x1UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000400 */ +#define GPIO_MODER_MODE5_1 (0x2UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000800 */ +#define GPIO_MODER_MODE6_Pos (12U) +#define GPIO_MODER_MODE6_Msk (0x3UL << GPIO_MODER_MODE6_Pos) /*!< 0x00003000 */ +#define GPIO_MODER_MODE6 GPIO_MODER_MODE6_Msk +#define GPIO_MODER_MODE6_0 (0x1UL << GPIO_MODER_MODE6_Pos) /*!< 0x00001000 */ +#define GPIO_MODER_MODE6_1 (0x2UL << GPIO_MODER_MODE6_Pos) /*!< 0x00002000 */ +#define GPIO_MODER_MODE7_Pos (14U) +#define GPIO_MODER_MODE7_Msk (0x3UL << GPIO_MODER_MODE7_Pos) /*!< 0x0000C000 */ +#define GPIO_MODER_MODE7 GPIO_MODER_MODE7_Msk +#define GPIO_MODER_MODE7_0 (0x1UL << GPIO_MODER_MODE7_Pos) /*!< 0x00004000 */ +#define GPIO_MODER_MODE7_1 (0x2UL << GPIO_MODER_MODE7_Pos) /*!< 0x00008000 */ +#define GPIO_MODER_MODE8_Pos (16U) +#define GPIO_MODER_MODE8_Msk (0x3UL << GPIO_MODER_MODE8_Pos) /*!< 0x00030000 */ +#define GPIO_MODER_MODE8 GPIO_MODER_MODE8_Msk +#define GPIO_MODER_MODE8_0 (0x1UL << GPIO_MODER_MODE8_Pos) /*!< 0x00010000 */ +#define GPIO_MODER_MODE8_1 (0x2UL << GPIO_MODER_MODE8_Pos) /*!< 0x00020000 */ +#define GPIO_MODER_MODE9_Pos (18U) +#define GPIO_MODER_MODE9_Msk (0x3UL << GPIO_MODER_MODE9_Pos) /*!< 0x000C0000 */ +#define GPIO_MODER_MODE9 GPIO_MODER_MODE9_Msk +#define GPIO_MODER_MODE9_0 (0x1UL << GPIO_MODER_MODE9_Pos) /*!< 0x00040000 */ +#define GPIO_MODER_MODE9_1 (0x2UL << GPIO_MODER_MODE9_Pos) /*!< 0x00080000 */ +#define GPIO_MODER_MODE10_Pos (20U) +#define GPIO_MODER_MODE10_Msk (0x3UL << GPIO_MODER_MODE10_Pos) /*!< 0x00300000 */ +#define GPIO_MODER_MODE10 GPIO_MODER_MODE10_Msk +#define GPIO_MODER_MODE10_0 (0x1UL << GPIO_MODER_MODE10_Pos) /*!< 0x00100000 */ +#define GPIO_MODER_MODE10_1 (0x2UL << GPIO_MODER_MODE10_Pos) /*!< 0x00200000 */ +#define GPIO_MODER_MODE11_Pos (22U) +#define GPIO_MODER_MODE11_Msk (0x3UL << GPIO_MODER_MODE11_Pos) /*!< 0x00C00000 */ +#define GPIO_MODER_MODE11 GPIO_MODER_MODE11_Msk +#define GPIO_MODER_MODE11_0 (0x1UL << GPIO_MODER_MODE11_Pos) /*!< 0x00400000 */ +#define GPIO_MODER_MODE11_1 (0x2UL << GPIO_MODER_MODE11_Pos) /*!< 0x00800000 */ +#define GPIO_MODER_MODE12_Pos (24U) +#define GPIO_MODER_MODE12_Msk (0x3UL << GPIO_MODER_MODE12_Pos) /*!< 0x03000000 */ +#define GPIO_MODER_MODE12 GPIO_MODER_MODE12_Msk +#define GPIO_MODER_MODE12_0 (0x1UL << GPIO_MODER_MODE12_Pos) /*!< 0x01000000 */ +#define GPIO_MODER_MODE12_1 (0x2UL << GPIO_MODER_MODE12_Pos) /*!< 0x02000000 */ +#define GPIO_MODER_MODE13_Pos (26U) +#define GPIO_MODER_MODE13_Msk (0x3UL << GPIO_MODER_MODE13_Pos) /*!< 0x0C000000 */ +#define GPIO_MODER_MODE13 GPIO_MODER_MODE13_Msk +#define GPIO_MODER_MODE13_0 (0x1UL << GPIO_MODER_MODE13_Pos) /*!< 0x04000000 */ +#define GPIO_MODER_MODE13_1 (0x2UL << GPIO_MODER_MODE13_Pos) /*!< 0x08000000 */ +#define GPIO_MODER_MODE14_Pos (28U) +#define GPIO_MODER_MODE14_Msk (0x3UL << GPIO_MODER_MODE14_Pos) /*!< 0x30000000 */ +#define GPIO_MODER_MODE14 GPIO_MODER_MODE14_Msk +#define GPIO_MODER_MODE14_0 (0x1UL << GPIO_MODER_MODE14_Pos) /*!< 0x10000000 */ +#define GPIO_MODER_MODE14_1 (0x2UL << GPIO_MODER_MODE14_Pos) /*!< 0x20000000 */ +#define GPIO_MODER_MODE15_Pos (30U) +#define GPIO_MODER_MODE15_Msk (0x3UL << GPIO_MODER_MODE15_Pos) /*!< 0xC0000000 */ +#define GPIO_MODER_MODE15 GPIO_MODER_MODE15_Msk +#define GPIO_MODER_MODE15_0 (0x1UL << GPIO_MODER_MODE15_Pos) /*!< 0x40000000 */ +#define GPIO_MODER_MODE15_1 (0x2UL << GPIO_MODER_MODE15_Pos) /*!< 0x80000000 */ + +/****************** Bits definition for GPIO_OTYPER register ****************/ +#define GPIO_OTYPER_OT0_Pos (0U) +#define GPIO_OTYPER_OT0_Msk (0x1UL << GPIO_OTYPER_OT0_Pos) /*!< 0x00000001 */ +#define GPIO_OTYPER_OT0 GPIO_OTYPER_OT0_Msk +#define GPIO_OTYPER_OT1_Pos (1U) +#define GPIO_OTYPER_OT1_Msk (0x1UL << GPIO_OTYPER_OT1_Pos) /*!< 0x00000002 */ +#define GPIO_OTYPER_OT1 GPIO_OTYPER_OT1_Msk +#define GPIO_OTYPER_OT2_Pos (2U) +#define GPIO_OTYPER_OT2_Msk (0x1UL << GPIO_OTYPER_OT2_Pos) /*!< 0x00000004 */ +#define GPIO_OTYPER_OT2 GPIO_OTYPER_OT2_Msk +#define GPIO_OTYPER_OT3_Pos (3U) +#define GPIO_OTYPER_OT3_Msk (0x1UL << GPIO_OTYPER_OT3_Pos) /*!< 0x00000008 */ +#define GPIO_OTYPER_OT3 GPIO_OTYPER_OT3_Msk +#define GPIO_OTYPER_OT4_Pos (4U) +#define GPIO_OTYPER_OT4_Msk (0x1UL << GPIO_OTYPER_OT4_Pos) /*!< 0x00000010 */ +#define GPIO_OTYPER_OT4 GPIO_OTYPER_OT4_Msk +#define GPIO_OTYPER_OT5_Pos (5U) +#define GPIO_OTYPER_OT5_Msk (0x1UL << GPIO_OTYPER_OT5_Pos) /*!< 0x00000020 */ +#define GPIO_OTYPER_OT5 GPIO_OTYPER_OT5_Msk +#define GPIO_OTYPER_OT6_Pos (6U) +#define GPIO_OTYPER_OT6_Msk (0x1UL << GPIO_OTYPER_OT6_Pos) /*!< 0x00000040 */ +#define GPIO_OTYPER_OT6 GPIO_OTYPER_OT6_Msk +#define GPIO_OTYPER_OT7_Pos (7U) +#define GPIO_OTYPER_OT7_Msk (0x1UL << GPIO_OTYPER_OT7_Pos) /*!< 0x00000080 */ +#define GPIO_OTYPER_OT7 GPIO_OTYPER_OT7_Msk +#define GPIO_OTYPER_OT8_Pos (8U) +#define GPIO_OTYPER_OT8_Msk (0x1UL << GPIO_OTYPER_OT8_Pos) /*!< 0x00000100 */ +#define GPIO_OTYPER_OT8 GPIO_OTYPER_OT8_Msk +#define GPIO_OTYPER_OT9_Pos (9U) +#define GPIO_OTYPER_OT9_Msk (0x1UL << GPIO_OTYPER_OT9_Pos) /*!< 0x00000200 */ +#define GPIO_OTYPER_OT9 GPIO_OTYPER_OT9_Msk +#define GPIO_OTYPER_OT10_Pos (10U) +#define GPIO_OTYPER_OT10_Msk (0x1UL << GPIO_OTYPER_OT10_Pos) /*!< 0x00000400 */ +#define GPIO_OTYPER_OT10 GPIO_OTYPER_OT10_Msk +#define GPIO_OTYPER_OT11_Pos (11U) +#define GPIO_OTYPER_OT11_Msk (0x1UL << GPIO_OTYPER_OT11_Pos) /*!< 0x00000800 */ +#define GPIO_OTYPER_OT11 GPIO_OTYPER_OT11_Msk +#define GPIO_OTYPER_OT12_Pos (12U) +#define GPIO_OTYPER_OT12_Msk (0x1UL << GPIO_OTYPER_OT12_Pos) /*!< 0x00001000 */ +#define GPIO_OTYPER_OT12 GPIO_OTYPER_OT12_Msk +#define GPIO_OTYPER_OT13_Pos (13U) +#define GPIO_OTYPER_OT13_Msk (0x1UL << GPIO_OTYPER_OT13_Pos) /*!< 0x00002000 */ +#define GPIO_OTYPER_OT13 GPIO_OTYPER_OT13_Msk +#define GPIO_OTYPER_OT14_Pos (14U) +#define GPIO_OTYPER_OT14_Msk (0x1UL << GPIO_OTYPER_OT14_Pos) /*!< 0x00004000 */ +#define GPIO_OTYPER_OT14 GPIO_OTYPER_OT14_Msk +#define GPIO_OTYPER_OT15_Pos (15U) +#define GPIO_OTYPER_OT15_Msk (0x1UL << GPIO_OTYPER_OT15_Pos) /*!< 0x00008000 */ +#define GPIO_OTYPER_OT15 GPIO_OTYPER_OT15_Msk + +/****************** Bits definition for GPIO_OSPEEDR register ***************/ +#define GPIO_OSPEEDR_OSPEED0_Pos (0U) +#define GPIO_OSPEEDR_OSPEED0_Msk (0x3UL << GPIO_OSPEEDR_OSPEED0_Pos) /*!< 0x00000003 */ +#define GPIO_OSPEEDR_OSPEED0 GPIO_OSPEEDR_OSPEED0_Msk +#define GPIO_OSPEEDR_OSPEED0_0 (0x1UL << GPIO_OSPEEDR_OSPEED0_Pos) /*!< 0x00000001 */ +#define GPIO_OSPEEDR_OSPEED0_1 (0x2UL << GPIO_OSPEEDR_OSPEED0_Pos) /*!< 0x00000002 */ +#define GPIO_OSPEEDR_OSPEED1_Pos (2U) +#define GPIO_OSPEEDR_OSPEED1_Msk (0x3UL << GPIO_OSPEEDR_OSPEED1_Pos) /*!< 0x0000000C */ +#define GPIO_OSPEEDR_OSPEED1 GPIO_OSPEEDR_OSPEED1_Msk +#define GPIO_OSPEEDR_OSPEED1_0 (0x1UL << GPIO_OSPEEDR_OSPEED1_Pos) /*!< 0x00000004 */ +#define GPIO_OSPEEDR_OSPEED1_1 (0x2UL << GPIO_OSPEEDR_OSPEED1_Pos) /*!< 0x00000008 */ +#define GPIO_OSPEEDR_OSPEED2_Pos (4U) +#define GPIO_OSPEEDR_OSPEED2_Msk (0x3UL << GPIO_OSPEEDR_OSPEED2_Pos) /*!< 0x00000030 */ +#define GPIO_OSPEEDR_OSPEED2 GPIO_OSPEEDR_OSPEED2_Msk +#define GPIO_OSPEEDR_OSPEED2_0 (0x1UL << GPIO_OSPEEDR_OSPEED2_Pos) /*!< 0x00000010 */ +#define GPIO_OSPEEDR_OSPEED2_1 (0x2UL << GPIO_OSPEEDR_OSPEED2_Pos) /*!< 0x00000020 */ +#define GPIO_OSPEEDR_OSPEED3_Pos (6U) +#define GPIO_OSPEEDR_OSPEED3_Msk (0x3UL << GPIO_OSPEEDR_OSPEED3_Pos) /*!< 0x000000C0 */ +#define GPIO_OSPEEDR_OSPEED3 GPIO_OSPEEDR_OSPEED3_Msk +#define GPIO_OSPEEDR_OSPEED3_0 (0x1UL << GPIO_OSPEEDR_OSPEED3_Pos) /*!< 0x00000040 */ +#define GPIO_OSPEEDR_OSPEED3_1 (0x2UL << GPIO_OSPEEDR_OSPEED3_Pos) /*!< 0x00000080 */ +#define GPIO_OSPEEDR_OSPEED4_Pos (8U) +#define GPIO_OSPEEDR_OSPEED4_Msk (0x3UL << GPIO_OSPEEDR_OSPEED4_Pos) /*!< 0x00000300 */ +#define GPIO_OSPEEDR_OSPEED4 GPIO_OSPEEDR_OSPEED4_Msk +#define GPIO_OSPEEDR_OSPEED4_0 (0x1UL << GPIO_OSPEEDR_OSPEED4_Pos) /*!< 0x00000100 */ +#define GPIO_OSPEEDR_OSPEED4_1 (0x2UL << GPIO_OSPEEDR_OSPEED4_Pos) /*!< 0x00000200 */ +#define GPIO_OSPEEDR_OSPEED5_Pos (10U) +#define GPIO_OSPEEDR_OSPEED5_Msk (0x3UL << GPIO_OSPEEDR_OSPEED5_Pos) /*!< 0x00000C00 */ +#define GPIO_OSPEEDR_OSPEED5 GPIO_OSPEEDR_OSPEED5_Msk +#define GPIO_OSPEEDR_OSPEED5_0 (0x1UL << GPIO_OSPEEDR_OSPEED5_Pos) /*!< 0x00000400 */ +#define GPIO_OSPEEDR_OSPEED5_1 (0x2UL << GPIO_OSPEEDR_OSPEED5_Pos) /*!< 0x00000800 */ +#define GPIO_OSPEEDR_OSPEED6_Pos (12U) +#define GPIO_OSPEEDR_OSPEED6_Msk (0x3UL << GPIO_OSPEEDR_OSPEED6_Pos) /*!< 0x00003000 */ +#define GPIO_OSPEEDR_OSPEED6 GPIO_OSPEEDR_OSPEED6_Msk +#define GPIO_OSPEEDR_OSPEED6_0 (0x1UL << GPIO_OSPEEDR_OSPEED6_Pos) /*!< 0x00001000 */ +#define GPIO_OSPEEDR_OSPEED6_1 (0x2UL << GPIO_OSPEEDR_OSPEED6_Pos) /*!< 0x00002000 */ +#define GPIO_OSPEEDR_OSPEED7_Pos (14U) +#define GPIO_OSPEEDR_OSPEED7_Msk (0x3UL << GPIO_OSPEEDR_OSPEED7_Pos) /*!< 0x0000C000 */ +#define GPIO_OSPEEDR_OSPEED7 GPIO_OSPEEDR_OSPEED7_Msk +#define GPIO_OSPEEDR_OSPEED7_0 (0x1UL << GPIO_OSPEEDR_OSPEED7_Pos) /*!< 0x00004000 */ +#define GPIO_OSPEEDR_OSPEED7_1 (0x2UL << GPIO_OSPEEDR_OSPEED7_Pos) /*!< 0x00008000 */ +#define GPIO_OSPEEDR_OSPEED8_Pos (16U) +#define GPIO_OSPEEDR_OSPEED8_Msk (0x3UL << GPIO_OSPEEDR_OSPEED8_Pos) /*!< 0x00030000 */ +#define GPIO_OSPEEDR_OSPEED8 GPIO_OSPEEDR_OSPEED8_Msk +#define GPIO_OSPEEDR_OSPEED8_0 (0x1UL << GPIO_OSPEEDR_OSPEED8_Pos) /*!< 0x00010000 */ +#define GPIO_OSPEEDR_OSPEED8_1 (0x2UL << GPIO_OSPEEDR_OSPEED8_Pos) /*!< 0x00020000 */ +#define GPIO_OSPEEDR_OSPEED9_Pos (18U) +#define GPIO_OSPEEDR_OSPEED9_Msk (0x3UL << GPIO_OSPEEDR_OSPEED9_Pos) /*!< 0x000C0000 */ +#define GPIO_OSPEEDR_OSPEED9 GPIO_OSPEEDR_OSPEED9_Msk +#define GPIO_OSPEEDR_OSPEED9_0 (0x1UL << GPIO_OSPEEDR_OSPEED9_Pos) /*!< 0x00040000 */ +#define GPIO_OSPEEDR_OSPEED9_1 (0x2UL << GPIO_OSPEEDR_OSPEED9_Pos) /*!< 0x00080000 */ +#define GPIO_OSPEEDR_OSPEED10_Pos (20U) +#define GPIO_OSPEEDR_OSPEED10_Msk (0x3UL << GPIO_OSPEEDR_OSPEED10_Pos) /*!< 0x00300000 */ +#define GPIO_OSPEEDR_OSPEED10 GPIO_OSPEEDR_OSPEED10_Msk +#define GPIO_OSPEEDR_OSPEED10_0 (0x1UL << GPIO_OSPEEDR_OSPEED10_Pos) /*!< 0x00100000 */ +#define GPIO_OSPEEDR_OSPEED10_1 (0x2UL << GPIO_OSPEEDR_OSPEED10_Pos) /*!< 0x00200000 */ +#define GPIO_OSPEEDR_OSPEED11_Pos (22U) +#define GPIO_OSPEEDR_OSPEED11_Msk (0x3UL << GPIO_OSPEEDR_OSPEED11_Pos) /*!< 0x00C00000 */ +#define GPIO_OSPEEDR_OSPEED11 GPIO_OSPEEDR_OSPEED11_Msk +#define GPIO_OSPEEDR_OSPEED11_0 (0x1UL << GPIO_OSPEEDR_OSPEED11_Pos) /*!< 0x00400000 */ +#define GPIO_OSPEEDR_OSPEED11_1 (0x2UL << GPIO_OSPEEDR_OSPEED11_Pos) /*!< 0x00800000 */ +#define GPIO_OSPEEDR_OSPEED12_Pos (24U) +#define GPIO_OSPEEDR_OSPEED12_Msk (0x3UL << GPIO_OSPEEDR_OSPEED12_Pos) /*!< 0x03000000 */ +#define GPIO_OSPEEDR_OSPEED12 GPIO_OSPEEDR_OSPEED12_Msk +#define GPIO_OSPEEDR_OSPEED12_0 (0x1UL << GPIO_OSPEEDR_OSPEED12_Pos) /*!< 0x01000000 */ +#define GPIO_OSPEEDR_OSPEED12_1 (0x2UL << GPIO_OSPEEDR_OSPEED12_Pos) /*!< 0x02000000 */ +#define GPIO_OSPEEDR_OSPEED13_Pos (26U) +#define GPIO_OSPEEDR_OSPEED13_Msk (0x3UL << GPIO_OSPEEDR_OSPEED13_Pos) /*!< 0x0C000000 */ +#define GPIO_OSPEEDR_OSPEED13 GPIO_OSPEEDR_OSPEED13_Msk +#define GPIO_OSPEEDR_OSPEED13_0 (0x1UL << GPIO_OSPEEDR_OSPEED13_Pos) /*!< 0x04000000 */ +#define GPIO_OSPEEDR_OSPEED13_1 (0x2UL << GPIO_OSPEEDR_OSPEED13_Pos) /*!< 0x08000000 */ +#define GPIO_OSPEEDR_OSPEED14_Pos (28U) +#define GPIO_OSPEEDR_OSPEED14_Msk (0x3UL << GPIO_OSPEEDR_OSPEED14_Pos) /*!< 0x30000000 */ +#define GPIO_OSPEEDR_OSPEED14 GPIO_OSPEEDR_OSPEED14_Msk +#define GPIO_OSPEEDR_OSPEED14_0 (0x1UL << GPIO_OSPEEDR_OSPEED14_Pos) /*!< 0x10000000 */ +#define GPIO_OSPEEDR_OSPEED14_1 (0x2UL << GPIO_OSPEEDR_OSPEED14_Pos) /*!< 0x20000000 */ +#define GPIO_OSPEEDR_OSPEED15_Pos (30U) +#define GPIO_OSPEEDR_OSPEED15_Msk (0x3UL << GPIO_OSPEEDR_OSPEED15_Pos) /*!< 0xC0000000 */ +#define GPIO_OSPEEDR_OSPEED15 GPIO_OSPEEDR_OSPEED15_Msk +#define GPIO_OSPEEDR_OSPEED15_0 (0x1UL << GPIO_OSPEEDR_OSPEED15_Pos) /*!< 0x40000000 */ +#define GPIO_OSPEEDR_OSPEED15_1 (0x2UL << GPIO_OSPEEDR_OSPEED15_Pos) /*!< 0x80000000 */ + +/****************** Bits definition for GPIO_PUPDR register *****************/ +#define GPIO_PUPDR_PUPD0_Pos (0U) +#define GPIO_PUPDR_PUPD0_Msk (0x3UL << GPIO_PUPDR_PUPD0_Pos) /*!< 0x00000003 */ +#define GPIO_PUPDR_PUPD0 GPIO_PUPDR_PUPD0_Msk +#define GPIO_PUPDR_PUPD0_0 (0x1UL << GPIO_PUPDR_PUPD0_Pos) /*!< 0x00000001 */ +#define GPIO_PUPDR_PUPD0_1 (0x2UL << GPIO_PUPDR_PUPD0_Pos) /*!< 0x00000002 */ +#define GPIO_PUPDR_PUPD1_Pos (2U) +#define GPIO_PUPDR_PUPD1_Msk (0x3UL << GPIO_PUPDR_PUPD1_Pos) /*!< 0x0000000C */ +#define GPIO_PUPDR_PUPD1 GPIO_PUPDR_PUPD1_Msk +#define GPIO_PUPDR_PUPD1_0 (0x1UL << GPIO_PUPDR_PUPD1_Pos) /*!< 0x00000004 */ +#define GPIO_PUPDR_PUPD1_1 (0x2UL << GPIO_PUPDR_PUPD1_Pos) /*!< 0x00000008 */ +#define GPIO_PUPDR_PUPD2_Pos (4U) +#define GPIO_PUPDR_PUPD2_Msk (0x3UL << GPIO_PUPDR_PUPD2_Pos) /*!< 0x00000030 */ +#define GPIO_PUPDR_PUPD2 GPIO_PUPDR_PUPD2_Msk +#define GPIO_PUPDR_PUPD2_0 (0x1UL << GPIO_PUPDR_PUPD2_Pos) /*!< 0x00000010 */ +#define GPIO_PUPDR_PUPD2_1 (0x2UL << GPIO_PUPDR_PUPD2_Pos) /*!< 0x00000020 */ +#define GPIO_PUPDR_PUPD3_Pos (6U) +#define GPIO_PUPDR_PUPD3_Msk (0x3UL << GPIO_PUPDR_PUPD3_Pos) /*!< 0x000000C0 */ +#define GPIO_PUPDR_PUPD3 GPIO_PUPDR_PUPD3_Msk +#define GPIO_PUPDR_PUPD3_0 (0x1UL << GPIO_PUPDR_PUPD3_Pos) /*!< 0x00000040 */ +#define GPIO_PUPDR_PUPD3_1 (0x2UL << GPIO_PUPDR_PUPD3_Pos) /*!< 0x00000080 */ +#define GPIO_PUPDR_PUPD4_Pos (8U) +#define GPIO_PUPDR_PUPD4_Msk (0x3UL << GPIO_PUPDR_PUPD4_Pos) /*!< 0x00000300 */ +#define GPIO_PUPDR_PUPD4 GPIO_PUPDR_PUPD4_Msk +#define GPIO_PUPDR_PUPD4_0 (0x1UL << GPIO_PUPDR_PUPD4_Pos) /*!< 0x00000100 */ +#define GPIO_PUPDR_PUPD4_1 (0x2UL << GPIO_PUPDR_PUPD4_Pos) /*!< 0x00000200 */ +#define GPIO_PUPDR_PUPD5_Pos (10U) +#define GPIO_PUPDR_PUPD5_Msk (0x3UL << GPIO_PUPDR_PUPD5_Pos) /*!< 0x00000C00 */ +#define GPIO_PUPDR_PUPD5 GPIO_PUPDR_PUPD5_Msk +#define GPIO_PUPDR_PUPD5_0 (0x1UL << GPIO_PUPDR_PUPD5_Pos) /*!< 0x00000400 */ +#define GPIO_PUPDR_PUPD5_1 (0x2UL << GPIO_PUPDR_PUPD5_Pos) /*!< 0x00000800 */ +#define GPIO_PUPDR_PUPD6_Pos (12U) +#define GPIO_PUPDR_PUPD6_Msk (0x3UL << GPIO_PUPDR_PUPD6_Pos) /*!< 0x00003000 */ +#define GPIO_PUPDR_PUPD6 GPIO_PUPDR_PUPD6_Msk +#define GPIO_PUPDR_PUPD6_0 (0x1UL << GPIO_PUPDR_PUPD6_Pos) /*!< 0x00001000 */ +#define GPIO_PUPDR_PUPD6_1 (0x2UL << GPIO_PUPDR_PUPD6_Pos) /*!< 0x00002000 */ +#define GPIO_PUPDR_PUPD7_Pos (14U) +#define GPIO_PUPDR_PUPD7_Msk (0x3UL << GPIO_PUPDR_PUPD7_Pos) /*!< 0x0000C000 */ +#define GPIO_PUPDR_PUPD7 GPIO_PUPDR_PUPD7_Msk +#define GPIO_PUPDR_PUPD7_0 (0x1UL << GPIO_PUPDR_PUPD7_Pos) /*!< 0x00004000 */ +#define GPIO_PUPDR_PUPD7_1 (0x2UL << GPIO_PUPDR_PUPD7_Pos) /*!< 0x00008000 */ +#define GPIO_PUPDR_PUPD8_Pos (16U) +#define GPIO_PUPDR_PUPD8_Msk (0x3UL << GPIO_PUPDR_PUPD8_Pos) /*!< 0x00030000 */ +#define GPIO_PUPDR_PUPD8 GPIO_PUPDR_PUPD8_Msk +#define GPIO_PUPDR_PUPD8_0 (0x1UL << GPIO_PUPDR_PUPD8_Pos) /*!< 0x00010000 */ +#define GPIO_PUPDR_PUPD8_1 (0x2UL << GPIO_PUPDR_PUPD8_Pos) /*!< 0x00020000 */ +#define GPIO_PUPDR_PUPD9_Pos (18U) +#define GPIO_PUPDR_PUPD9_Msk (0x3UL << GPIO_PUPDR_PUPD9_Pos) /*!< 0x000C0000 */ +#define GPIO_PUPDR_PUPD9 GPIO_PUPDR_PUPD9_Msk +#define GPIO_PUPDR_PUPD9_0 (0x1UL << GPIO_PUPDR_PUPD9_Pos) /*!< 0x00040000 */ +#define GPIO_PUPDR_PUPD9_1 (0x2UL << GPIO_PUPDR_PUPD9_Pos) /*!< 0x00080000 */ +#define GPIO_PUPDR_PUPD10_Pos (20U) +#define GPIO_PUPDR_PUPD10_Msk (0x3UL << GPIO_PUPDR_PUPD10_Pos) /*!< 0x00300000 */ +#define GPIO_PUPDR_PUPD10 GPIO_PUPDR_PUPD10_Msk +#define GPIO_PUPDR_PUPD10_0 (0x1UL << GPIO_PUPDR_PUPD10_Pos) /*!< 0x00100000 */ +#define GPIO_PUPDR_PUPD10_1 (0x2UL << GPIO_PUPDR_PUPD10_Pos) /*!< 0x00200000 */ +#define GPIO_PUPDR_PUPD11_Pos (22U) +#define GPIO_PUPDR_PUPD11_Msk (0x3UL << GPIO_PUPDR_PUPD11_Pos) /*!< 0x00C00000 */ +#define GPIO_PUPDR_PUPD11 GPIO_PUPDR_PUPD11_Msk +#define GPIO_PUPDR_PUPD11_0 (0x1UL << GPIO_PUPDR_PUPD11_Pos) /*!< 0x00400000 */ +#define GPIO_PUPDR_PUPD11_1 (0x2UL << GPIO_PUPDR_PUPD11_Pos) /*!< 0x00800000 */ +#define GPIO_PUPDR_PUPD12_Pos (24U) +#define GPIO_PUPDR_PUPD12_Msk (0x3UL << GPIO_PUPDR_PUPD12_Pos) /*!< 0x03000000 */ +#define GPIO_PUPDR_PUPD12 GPIO_PUPDR_PUPD12_Msk +#define GPIO_PUPDR_PUPD12_0 (0x1UL << GPIO_PUPDR_PUPD12_Pos) /*!< 0x01000000 */ +#define GPIO_PUPDR_PUPD12_1 (0x2UL << GPIO_PUPDR_PUPD12_Pos) /*!< 0x02000000 */ +#define GPIO_PUPDR_PUPD13_Pos (26U) +#define GPIO_PUPDR_PUPD13_Msk (0x3UL << GPIO_PUPDR_PUPD13_Pos) /*!< 0x0C000000 */ +#define GPIO_PUPDR_PUPD13 GPIO_PUPDR_PUPD13_Msk +#define GPIO_PUPDR_PUPD13_0 (0x1UL << GPIO_PUPDR_PUPD13_Pos) /*!< 0x04000000 */ +#define GPIO_PUPDR_PUPD13_1 (0x2UL << GPIO_PUPDR_PUPD13_Pos) /*!< 0x08000000 */ +#define GPIO_PUPDR_PUPD14_Pos (28U) +#define GPIO_PUPDR_PUPD14_Msk (0x3UL << GPIO_PUPDR_PUPD14_Pos) /*!< 0x30000000 */ +#define GPIO_PUPDR_PUPD14 GPIO_PUPDR_PUPD14_Msk +#define GPIO_PUPDR_PUPD14_0 (0x1UL << GPIO_PUPDR_PUPD14_Pos) /*!< 0x10000000 */ +#define GPIO_PUPDR_PUPD14_1 (0x2UL << GPIO_PUPDR_PUPD14_Pos) /*!< 0x20000000 */ +#define GPIO_PUPDR_PUPD15_Pos (30U) +#define GPIO_PUPDR_PUPD15_Msk (0x3UL << GPIO_PUPDR_PUPD15_Pos) /*!< 0xC0000000 */ +#define GPIO_PUPDR_PUPD15 GPIO_PUPDR_PUPD15_Msk +#define GPIO_PUPDR_PUPD15_0 (0x1UL << GPIO_PUPDR_PUPD15_Pos) /*!< 0x40000000 */ +#define GPIO_PUPDR_PUPD15_1 (0x2UL << GPIO_PUPDR_PUPD15_Pos) /*!< 0x80000000 */ + +/****************** Bits definition for GPIO_IDR register *******************/ +#define GPIO_IDR_ID0_Pos (0U) +#define GPIO_IDR_ID0_Msk (0x1UL << GPIO_IDR_ID0_Pos) /*!< 0x00000001 */ +#define GPIO_IDR_ID0 GPIO_IDR_ID0_Msk +#define GPIO_IDR_ID1_Pos (1U) +#define GPIO_IDR_ID1_Msk (0x1UL << GPIO_IDR_ID1_Pos) /*!< 0x00000002 */ +#define GPIO_IDR_ID1 GPIO_IDR_ID1_Msk +#define GPIO_IDR_ID2_Pos (2U) +#define GPIO_IDR_ID2_Msk (0x1UL << GPIO_IDR_ID2_Pos) /*!< 0x00000004 */ +#define GPIO_IDR_ID2 GPIO_IDR_ID2_Msk +#define GPIO_IDR_ID3_Pos (3U) +#define GPIO_IDR_ID3_Msk (0x1UL << GPIO_IDR_ID3_Pos) /*!< 0x00000008 */ +#define GPIO_IDR_ID3 GPIO_IDR_ID3_Msk +#define GPIO_IDR_ID4_Pos (4U) +#define GPIO_IDR_ID4_Msk (0x1UL << GPIO_IDR_ID4_Pos) /*!< 0x00000010 */ +#define GPIO_IDR_ID4 GPIO_IDR_ID4_Msk +#define GPIO_IDR_ID5_Pos (5U) +#define GPIO_IDR_ID5_Msk (0x1UL << GPIO_IDR_ID5_Pos) /*!< 0x00000020 */ +#define GPIO_IDR_ID5 GPIO_IDR_ID5_Msk +#define GPIO_IDR_ID6_Pos (6U) +#define GPIO_IDR_ID6_Msk (0x1UL << GPIO_IDR_ID6_Pos) /*!< 0x00000040 */ +#define GPIO_IDR_ID6 GPIO_IDR_ID6_Msk +#define GPIO_IDR_ID7_Pos (7U) +#define GPIO_IDR_ID7_Msk (0x1UL << GPIO_IDR_ID7_Pos) /*!< 0x00000080 */ +#define GPIO_IDR_ID7 GPIO_IDR_ID7_Msk +#define GPIO_IDR_ID8_Pos (8U) +#define GPIO_IDR_ID8_Msk (0x1UL << GPIO_IDR_ID8_Pos) /*!< 0x00000100 */ +#define GPIO_IDR_ID8 GPIO_IDR_ID8_Msk +#define GPIO_IDR_ID9_Pos (9U) +#define GPIO_IDR_ID9_Msk (0x1UL << GPIO_IDR_ID9_Pos) /*!< 0x00000200 */ +#define GPIO_IDR_ID9 GPIO_IDR_ID9_Msk +#define GPIO_IDR_ID10_Pos (10U) +#define GPIO_IDR_ID10_Msk (0x1UL << GPIO_IDR_ID10_Pos) /*!< 0x00000400 */ +#define GPIO_IDR_ID10 GPIO_IDR_ID10_Msk +#define GPIO_IDR_ID11_Pos (11U) +#define GPIO_IDR_ID11_Msk (0x1UL << GPIO_IDR_ID11_Pos) /*!< 0x00000800 */ +#define GPIO_IDR_ID11 GPIO_IDR_ID11_Msk +#define GPIO_IDR_ID12_Pos (12U) +#define GPIO_IDR_ID12_Msk (0x1UL << GPIO_IDR_ID12_Pos) /*!< 0x00001000 */ +#define GPIO_IDR_ID12 GPIO_IDR_ID12_Msk +#define GPIO_IDR_ID13_Pos (13U) +#define GPIO_IDR_ID13_Msk (0x1UL << GPIO_IDR_ID13_Pos) /*!< 0x00002000 */ +#define GPIO_IDR_ID13 GPIO_IDR_ID13_Msk +#define GPIO_IDR_ID14_Pos (14U) +#define GPIO_IDR_ID14_Msk (0x1UL << GPIO_IDR_ID14_Pos) /*!< 0x00004000 */ +#define GPIO_IDR_ID14 GPIO_IDR_ID14_Msk +#define GPIO_IDR_ID15_Pos (15U) +#define GPIO_IDR_ID15_Msk (0x1UL << GPIO_IDR_ID15_Pos) /*!< 0x00008000 */ +#define GPIO_IDR_ID15 GPIO_IDR_ID15_Msk + +/****************** Bits definition for GPIO_ODR register *******************/ +#define GPIO_ODR_OD0_Pos (0U) +#define GPIO_ODR_OD0_Msk (0x1UL << GPIO_ODR_OD0_Pos) /*!< 0x00000001 */ +#define GPIO_ODR_OD0 GPIO_ODR_OD0_Msk +#define GPIO_ODR_OD1_Pos (1U) +#define GPIO_ODR_OD1_Msk (0x1UL << GPIO_ODR_OD1_Pos) /*!< 0x00000002 */ +#define GPIO_ODR_OD1 GPIO_ODR_OD1_Msk +#define GPIO_ODR_OD2_Pos (2U) +#define GPIO_ODR_OD2_Msk (0x1UL << GPIO_ODR_OD2_Pos) /*!< 0x00000004 */ +#define GPIO_ODR_OD2 GPIO_ODR_OD2_Msk +#define GPIO_ODR_OD3_Pos (3U) +#define GPIO_ODR_OD3_Msk (0x1UL << GPIO_ODR_OD3_Pos) /*!< 0x00000008 */ +#define GPIO_ODR_OD3 GPIO_ODR_OD3_Msk +#define GPIO_ODR_OD4_Pos (4U) +#define GPIO_ODR_OD4_Msk (0x1UL << GPIO_ODR_OD4_Pos) /*!< 0x00000010 */ +#define GPIO_ODR_OD4 GPIO_ODR_OD4_Msk +#define GPIO_ODR_OD5_Pos (5U) +#define GPIO_ODR_OD5_Msk (0x1UL << GPIO_ODR_OD5_Pos) /*!< 0x00000020 */ +#define GPIO_ODR_OD5 GPIO_ODR_OD5_Msk +#define GPIO_ODR_OD6_Pos (6U) +#define GPIO_ODR_OD6_Msk (0x1UL << GPIO_ODR_OD6_Pos) /*!< 0x00000040 */ +#define GPIO_ODR_OD6 GPIO_ODR_OD6_Msk +#define GPIO_ODR_OD7_Pos (7U) +#define GPIO_ODR_OD7_Msk (0x1UL << GPIO_ODR_OD7_Pos) /*!< 0x00000080 */ +#define GPIO_ODR_OD7 GPIO_ODR_OD7_Msk +#define GPIO_ODR_OD8_Pos (8U) +#define GPIO_ODR_OD8_Msk (0x1UL << GPIO_ODR_OD8_Pos) /*!< 0x00000100 */ +#define GPIO_ODR_OD8 GPIO_ODR_OD8_Msk +#define GPIO_ODR_OD9_Pos (9U) +#define GPIO_ODR_OD9_Msk (0x1UL << GPIO_ODR_OD9_Pos) /*!< 0x00000200 */ +#define GPIO_ODR_OD9 GPIO_ODR_OD9_Msk +#define GPIO_ODR_OD10_Pos (10U) +#define GPIO_ODR_OD10_Msk (0x1UL << GPIO_ODR_OD10_Pos) /*!< 0x00000400 */ +#define GPIO_ODR_OD10 GPIO_ODR_OD10_Msk +#define GPIO_ODR_OD11_Pos (11U) +#define GPIO_ODR_OD11_Msk (0x1UL << GPIO_ODR_OD11_Pos) /*!< 0x00000800 */ +#define GPIO_ODR_OD11 GPIO_ODR_OD11_Msk +#define GPIO_ODR_OD12_Pos (12U) +#define GPIO_ODR_OD12_Msk (0x1UL << GPIO_ODR_OD12_Pos) /*!< 0x00001000 */ +#define GPIO_ODR_OD12 GPIO_ODR_OD12_Msk +#define GPIO_ODR_OD13_Pos (13U) +#define GPIO_ODR_OD13_Msk (0x1UL << GPIO_ODR_OD13_Pos) /*!< 0x00002000 */ +#define GPIO_ODR_OD13 GPIO_ODR_OD13_Msk +#define GPIO_ODR_OD14_Pos (14U) +#define GPIO_ODR_OD14_Msk (0x1UL << GPIO_ODR_OD14_Pos) /*!< 0x00004000 */ +#define GPIO_ODR_OD14 GPIO_ODR_OD14_Msk +#define GPIO_ODR_OD15_Pos (15U) +#define GPIO_ODR_OD15_Msk (0x1UL << GPIO_ODR_OD15_Pos) /*!< 0x00008000 */ +#define GPIO_ODR_OD15 GPIO_ODR_OD15_Msk + +/****************** Bits definition for GPIO_BSRR register ******************/ +#define GPIO_BSRR_BS0_Pos (0U) +#define GPIO_BSRR_BS0_Msk (0x1UL << GPIO_BSRR_BS0_Pos) /*!< 0x00000001 */ +#define GPIO_BSRR_BS0 GPIO_BSRR_BS0_Msk +#define GPIO_BSRR_BS1_Pos (1U) +#define GPIO_BSRR_BS1_Msk (0x1UL << GPIO_BSRR_BS1_Pos) /*!< 0x00000002 */ +#define GPIO_BSRR_BS1 GPIO_BSRR_BS1_Msk +#define GPIO_BSRR_BS2_Pos (2U) +#define GPIO_BSRR_BS2_Msk (0x1UL << GPIO_BSRR_BS2_Pos) /*!< 0x00000004 */ +#define GPIO_BSRR_BS2 GPIO_BSRR_BS2_Msk +#define GPIO_BSRR_BS3_Pos (3U) +#define GPIO_BSRR_BS3_Msk (0x1UL << GPIO_BSRR_BS3_Pos) /*!< 0x00000008 */ +#define GPIO_BSRR_BS3 GPIO_BSRR_BS3_Msk +#define GPIO_BSRR_BS4_Pos (4U) +#define GPIO_BSRR_BS4_Msk (0x1UL << GPIO_BSRR_BS4_Pos) /*!< 0x00000010 */ +#define GPIO_BSRR_BS4 GPIO_BSRR_BS4_Msk +#define GPIO_BSRR_BS5_Pos (5U) +#define GPIO_BSRR_BS5_Msk (0x1UL << GPIO_BSRR_BS5_Pos) /*!< 0x00000020 */ +#define GPIO_BSRR_BS5 GPIO_BSRR_BS5_Msk +#define GPIO_BSRR_BS6_Pos (6U) +#define GPIO_BSRR_BS6_Msk (0x1UL << GPIO_BSRR_BS6_Pos) /*!< 0x00000040 */ +#define GPIO_BSRR_BS6 GPIO_BSRR_BS6_Msk +#define GPIO_BSRR_BS7_Pos (7U) +#define GPIO_BSRR_BS7_Msk (0x1UL << GPIO_BSRR_BS7_Pos) /*!< 0x00000080 */ +#define GPIO_BSRR_BS7 GPIO_BSRR_BS7_Msk +#define GPIO_BSRR_BS8_Pos (8U) +#define GPIO_BSRR_BS8_Msk (0x1UL << GPIO_BSRR_BS8_Pos) /*!< 0x00000100 */ +#define GPIO_BSRR_BS8 GPIO_BSRR_BS8_Msk +#define GPIO_BSRR_BS9_Pos (9U) +#define GPIO_BSRR_BS9_Msk (0x1UL << GPIO_BSRR_BS9_Pos) /*!< 0x00000200 */ +#define GPIO_BSRR_BS9 GPIO_BSRR_BS9_Msk +#define GPIO_BSRR_BS10_Pos (10U) +#define GPIO_BSRR_BS10_Msk (0x1UL << GPIO_BSRR_BS10_Pos) /*!< 0x00000400 */ +#define GPIO_BSRR_BS10 GPIO_BSRR_BS10_Msk +#define GPIO_BSRR_BS11_Pos (11U) +#define GPIO_BSRR_BS11_Msk (0x1UL << GPIO_BSRR_BS11_Pos) /*!< 0x00000800 */ +#define GPIO_BSRR_BS11 GPIO_BSRR_BS11_Msk +#define GPIO_BSRR_BS12_Pos (12U) +#define GPIO_BSRR_BS12_Msk (0x1UL << GPIO_BSRR_BS12_Pos) /*!< 0x00001000 */ +#define GPIO_BSRR_BS12 GPIO_BSRR_BS12_Msk +#define GPIO_BSRR_BS13_Pos (13U) +#define GPIO_BSRR_BS13_Msk (0x1UL << GPIO_BSRR_BS13_Pos) /*!< 0x00002000 */ +#define GPIO_BSRR_BS13 GPIO_BSRR_BS13_Msk +#define GPIO_BSRR_BS14_Pos (14U) +#define GPIO_BSRR_BS14_Msk (0x1UL << GPIO_BSRR_BS14_Pos) /*!< 0x00004000 */ +#define GPIO_BSRR_BS14 GPIO_BSRR_BS14_Msk +#define GPIO_BSRR_BS15_Pos (15U) +#define GPIO_BSRR_BS15_Msk (0x1UL << GPIO_BSRR_BS15_Pos) /*!< 0x00008000 */ +#define GPIO_BSRR_BS15 GPIO_BSRR_BS15_Msk +#define GPIO_BSRR_BR0_Pos (16U) +#define GPIO_BSRR_BR0_Msk (0x1UL << GPIO_BSRR_BR0_Pos) /*!< 0x00010000 */ +#define GPIO_BSRR_BR0 GPIO_BSRR_BR0_Msk +#define GPIO_BSRR_BR1_Pos (17U) +#define GPIO_BSRR_BR1_Msk (0x1UL << GPIO_BSRR_BR1_Pos) /*!< 0x00020000 */ +#define GPIO_BSRR_BR1 GPIO_BSRR_BR1_Msk +#define GPIO_BSRR_BR2_Pos (18U) +#define GPIO_BSRR_BR2_Msk (0x1UL << GPIO_BSRR_BR2_Pos) /*!< 0x00040000 */ +#define GPIO_BSRR_BR2 GPIO_BSRR_BR2_Msk +#define GPIO_BSRR_BR3_Pos (19U) +#define GPIO_BSRR_BR3_Msk (0x1UL << GPIO_BSRR_BR3_Pos) /*!< 0x00080000 */ +#define GPIO_BSRR_BR3 GPIO_BSRR_BR3_Msk +#define GPIO_BSRR_BR4_Pos (20U) +#define GPIO_BSRR_BR4_Msk (0x1UL << GPIO_BSRR_BR4_Pos) /*!< 0x00100000 */ +#define GPIO_BSRR_BR4 GPIO_BSRR_BR4_Msk +#define GPIO_BSRR_BR5_Pos (21U) +#define GPIO_BSRR_BR5_Msk (0x1UL << GPIO_BSRR_BR5_Pos) /*!< 0x00200000 */ +#define GPIO_BSRR_BR5 GPIO_BSRR_BR5_Msk +#define GPIO_BSRR_BR6_Pos (22U) +#define GPIO_BSRR_BR6_Msk (0x1UL << GPIO_BSRR_BR6_Pos) /*!< 0x00400000 */ +#define GPIO_BSRR_BR6 GPIO_BSRR_BR6_Msk +#define GPIO_BSRR_BR7_Pos (23U) +#define GPIO_BSRR_BR7_Msk (0x1UL << GPIO_BSRR_BR7_Pos) /*!< 0x00800000 */ +#define GPIO_BSRR_BR7 GPIO_BSRR_BR7_Msk +#define GPIO_BSRR_BR8_Pos (24U) +#define GPIO_BSRR_BR8_Msk (0x1UL << GPIO_BSRR_BR8_Pos) /*!< 0x01000000 */ +#define GPIO_BSRR_BR8 GPIO_BSRR_BR8_Msk +#define GPIO_BSRR_BR9_Pos (25U) +#define GPIO_BSRR_BR9_Msk (0x1UL << GPIO_BSRR_BR9_Pos) /*!< 0x02000000 */ +#define GPIO_BSRR_BR9 GPIO_BSRR_BR9_Msk +#define GPIO_BSRR_BR10_Pos (26U) +#define GPIO_BSRR_BR10_Msk (0x1UL << GPIO_BSRR_BR10_Pos) /*!< 0x04000000 */ +#define GPIO_BSRR_BR10 GPIO_BSRR_BR10_Msk +#define GPIO_BSRR_BR11_Pos (27U) +#define GPIO_BSRR_BR11_Msk (0x1UL << GPIO_BSRR_BR11_Pos) /*!< 0x08000000 */ +#define GPIO_BSRR_BR11 GPIO_BSRR_BR11_Msk +#define GPIO_BSRR_BR12_Pos (28U) +#define GPIO_BSRR_BR12_Msk (0x1UL << GPIO_BSRR_BR12_Pos) /*!< 0x10000000 */ +#define GPIO_BSRR_BR12 GPIO_BSRR_BR12_Msk +#define GPIO_BSRR_BR13_Pos (29U) +#define GPIO_BSRR_BR13_Msk (0x1UL << GPIO_BSRR_BR13_Pos) /*!< 0x20000000 */ +#define GPIO_BSRR_BR13 GPIO_BSRR_BR13_Msk +#define GPIO_BSRR_BR14_Pos (30U) +#define GPIO_BSRR_BR14_Msk (0x1UL << GPIO_BSRR_BR14_Pos) /*!< 0x40000000 */ +#define GPIO_BSRR_BR14 GPIO_BSRR_BR14_Msk +#define GPIO_BSRR_BR15_Pos (31U) +#define GPIO_BSRR_BR15_Msk (0x1UL << GPIO_BSRR_BR15_Pos) /*!< 0x80000000 */ +#define GPIO_BSRR_BR15 GPIO_BSRR_BR15_Msk + +/****************** Bit definition for GPIO_LCKR register *********************/ +#define GPIO_LCKR_LCK0_Pos (0U) +#define GPIO_LCKR_LCK0_Msk (0x1UL << GPIO_LCKR_LCK0_Pos) /*!< 0x00000001 */ +#define GPIO_LCKR_LCK0 GPIO_LCKR_LCK0_Msk +#define GPIO_LCKR_LCK1_Pos (1U) +#define GPIO_LCKR_LCK1_Msk (0x1UL << GPIO_LCKR_LCK1_Pos) /*!< 0x00000002 */ +#define GPIO_LCKR_LCK1 GPIO_LCKR_LCK1_Msk +#define GPIO_LCKR_LCK2_Pos (2U) +#define GPIO_LCKR_LCK2_Msk (0x1UL << GPIO_LCKR_LCK2_Pos) /*!< 0x00000004 */ +#define GPIO_LCKR_LCK2 GPIO_LCKR_LCK2_Msk +#define GPIO_LCKR_LCK3_Pos (3U) +#define GPIO_LCKR_LCK3_Msk (0x1UL << GPIO_LCKR_LCK3_Pos) /*!< 0x00000008 */ +#define GPIO_LCKR_LCK3 GPIO_LCKR_LCK3_Msk +#define GPIO_LCKR_LCK4_Pos (4U) +#define GPIO_LCKR_LCK4_Msk (0x1UL << GPIO_LCKR_LCK4_Pos) /*!< 0x00000010 */ +#define GPIO_LCKR_LCK4 GPIO_LCKR_LCK4_Msk +#define GPIO_LCKR_LCK5_Pos (5U) +#define GPIO_LCKR_LCK5_Msk (0x1UL << GPIO_LCKR_LCK5_Pos) /*!< 0x00000020 */ +#define GPIO_LCKR_LCK5 GPIO_LCKR_LCK5_Msk +#define GPIO_LCKR_LCK6_Pos (6U) +#define GPIO_LCKR_LCK6_Msk (0x1UL << GPIO_LCKR_LCK6_Pos) /*!< 0x00000040 */ +#define GPIO_LCKR_LCK6 GPIO_LCKR_LCK6_Msk +#define GPIO_LCKR_LCK7_Pos (7U) +#define GPIO_LCKR_LCK7_Msk (0x1UL << GPIO_LCKR_LCK7_Pos) /*!< 0x00000080 */ +#define GPIO_LCKR_LCK7 GPIO_LCKR_LCK7_Msk +#define GPIO_LCKR_LCK8_Pos (8U) +#define GPIO_LCKR_LCK8_Msk (0x1UL << GPIO_LCKR_LCK8_Pos) /*!< 0x00000100 */ +#define GPIO_LCKR_LCK8 GPIO_LCKR_LCK8_Msk +#define GPIO_LCKR_LCK9_Pos (9U) +#define GPIO_LCKR_LCK9_Msk (0x1UL << GPIO_LCKR_LCK9_Pos) /*!< 0x00000200 */ +#define GPIO_LCKR_LCK9 GPIO_LCKR_LCK9_Msk +#define GPIO_LCKR_LCK10_Pos (10U) +#define GPIO_LCKR_LCK10_Msk (0x1UL << GPIO_LCKR_LCK10_Pos) /*!< 0x00000400 */ +#define GPIO_LCKR_LCK10 GPIO_LCKR_LCK10_Msk +#define GPIO_LCKR_LCK11_Pos (11U) +#define GPIO_LCKR_LCK11_Msk (0x1UL << GPIO_LCKR_LCK11_Pos) /*!< 0x00000800 */ +#define GPIO_LCKR_LCK11 GPIO_LCKR_LCK11_Msk +#define GPIO_LCKR_LCK12_Pos (12U) +#define GPIO_LCKR_LCK12_Msk (0x1UL << GPIO_LCKR_LCK12_Pos) /*!< 0x00001000 */ +#define GPIO_LCKR_LCK12 GPIO_LCKR_LCK12_Msk +#define GPIO_LCKR_LCK13_Pos (13U) +#define GPIO_LCKR_LCK13_Msk (0x1UL << GPIO_LCKR_LCK13_Pos) /*!< 0x00002000 */ +#define GPIO_LCKR_LCK13 GPIO_LCKR_LCK13_Msk +#define GPIO_LCKR_LCK14_Pos (14U) +#define GPIO_LCKR_LCK14_Msk (0x1UL << GPIO_LCKR_LCK14_Pos) /*!< 0x00004000 */ +#define GPIO_LCKR_LCK14 GPIO_LCKR_LCK14_Msk +#define GPIO_LCKR_LCK15_Pos (15U) +#define GPIO_LCKR_LCK15_Msk (0x1UL << GPIO_LCKR_LCK15_Pos) /*!< 0x00008000 */ +#define GPIO_LCKR_LCK15 GPIO_LCKR_LCK15_Msk +#define GPIO_LCKR_LCKK_Pos (16U) +#define GPIO_LCKR_LCKK_Msk (0x1UL << GPIO_LCKR_LCKK_Pos) /*!< 0x00010000 */ +#define GPIO_LCKR_LCKK GPIO_LCKR_LCKK_Msk + +/****************** Bit definition for GPIO_AFRL register *********************/ +#define GPIO_AFRL_AFSEL0_Pos (0U) +#define GPIO_AFRL_AFSEL0_Msk (0xFUL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x0000000F */ +#define GPIO_AFRL_AFSEL0 GPIO_AFRL_AFSEL0_Msk +#define GPIO_AFRL_AFSEL0_0 (0x1UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000001 */ +#define GPIO_AFRL_AFSEL0_1 (0x2UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000002 */ +#define GPIO_AFRL_AFSEL0_2 (0x4UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000004 */ +#define GPIO_AFRL_AFSEL0_3 (0x8UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000008 */ +#define GPIO_AFRL_AFSEL1_Pos (4U) +#define GPIO_AFRL_AFSEL1_Msk (0xFUL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x000000F0 */ +#define GPIO_AFRL_AFSEL1 GPIO_AFRL_AFSEL1_Msk +#define GPIO_AFRL_AFSEL1_0 (0x1UL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x00000010 */ +#define GPIO_AFRL_AFSEL1_1 (0x2UL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x00000020 */ +#define GPIO_AFRL_AFSEL1_2 (0x4UL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x00000040 */ +#define GPIO_AFRL_AFSEL1_3 (0x8UL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x00000080 */ +#define GPIO_AFRL_AFSEL2_Pos (8U) +#define GPIO_AFRL_AFSEL2_Msk (0xFUL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000F00 */ +#define GPIO_AFRL_AFSEL2 GPIO_AFRL_AFSEL2_Msk +#define GPIO_AFRL_AFSEL2_0 (0x1UL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000100 */ +#define GPIO_AFRL_AFSEL2_1 (0x2UL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000200 */ +#define GPIO_AFRL_AFSEL2_2 (0x4UL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000400 */ +#define GPIO_AFRL_AFSEL2_3 (0x8UL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000800 */ +#define GPIO_AFRL_AFSEL3_Pos (12U) +#define GPIO_AFRL_AFSEL3_Msk (0xFUL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x0000F000 */ +#define GPIO_AFRL_AFSEL3 GPIO_AFRL_AFSEL3_Msk +#define GPIO_AFRL_AFSEL3_0 (0x1UL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x00001000 */ +#define GPIO_AFRL_AFSEL3_1 (0x2UL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x00002000 */ +#define GPIO_AFRL_AFSEL3_2 (0x4UL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x00004000 */ +#define GPIO_AFRL_AFSEL3_3 (0x8UL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x00008000 */ +#define GPIO_AFRL_AFSEL4_Pos (16U) +#define GPIO_AFRL_AFSEL4_Msk (0xFUL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x000F0000 */ +#define GPIO_AFRL_AFSEL4 GPIO_AFRL_AFSEL4_Msk +#define GPIO_AFRL_AFSEL4_0 (0x1UL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x00010000 */ +#define GPIO_AFRL_AFSEL4_1 (0x2UL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x00020000 */ +#define GPIO_AFRL_AFSEL4_2 (0x4UL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x00040000 */ +#define GPIO_AFRL_AFSEL4_3 (0x8UL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x00080000 */ +#define GPIO_AFRL_AFSEL5_Pos (20U) +#define GPIO_AFRL_AFSEL5_Msk (0xFUL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00F00000 */ +#define GPIO_AFRL_AFSEL5 GPIO_AFRL_AFSEL5_Msk +#define GPIO_AFRL_AFSEL5_0 (0x1UL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00100000 */ +#define GPIO_AFRL_AFSEL5_1 (0x2UL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00200000 */ +#define GPIO_AFRL_AFSEL5_2 (0x4UL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00400000 */ +#define GPIO_AFRL_AFSEL5_3 (0x8UL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00800000 */ +#define GPIO_AFRL_AFSEL6_Pos (24U) +#define GPIO_AFRL_AFSEL6_Msk (0xFUL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x0F000000 */ +#define GPIO_AFRL_AFSEL6 GPIO_AFRL_AFSEL6_Msk +#define GPIO_AFRL_AFSEL6_0 (0x1UL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x01000000 */ +#define GPIO_AFRL_AFSEL6_1 (0x2UL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x02000000 */ +#define GPIO_AFRL_AFSEL6_2 (0x4UL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x04000000 */ +#define GPIO_AFRL_AFSEL6_3 (0x8UL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x08000000 */ +#define GPIO_AFRL_AFSEL7_Pos (28U) +#define GPIO_AFRL_AFSEL7_Msk (0xFUL << GPIO_AFRL_AFSEL7_Pos) /*!< 0xF0000000 */ +#define GPIO_AFRL_AFSEL7 GPIO_AFRL_AFSEL7_Msk +#define GPIO_AFRL_AFSEL7_0 (0x1UL << GPIO_AFRL_AFSEL7_Pos) /*!< 0x10000000 */ +#define GPIO_AFRL_AFSEL7_1 (0x2UL << GPIO_AFRL_AFSEL7_Pos) /*!< 0x20000000 */ +#define GPIO_AFRL_AFSEL7_2 (0x4UL << GPIO_AFRL_AFSEL7_Pos) /*!< 0x40000000 */ +#define GPIO_AFRL_AFSEL7_3 (0x8UL << GPIO_AFRL_AFSEL7_Pos) /*!< 0x80000000 */ + +/****************** Bit definition for GPIO_AFRH register *********************/ +#define GPIO_AFRH_AFSEL8_Pos (0U) +#define GPIO_AFRH_AFSEL8_Msk (0xFUL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x0000000F */ +#define GPIO_AFRH_AFSEL8 GPIO_AFRH_AFSEL8_Msk +#define GPIO_AFRH_AFSEL8_0 (0x1UL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x00000001 */ +#define GPIO_AFRH_AFSEL8_1 (0x2UL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x00000002 */ +#define GPIO_AFRH_AFSEL8_2 (0x4UL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x00000004 */ +#define GPIO_AFRH_AFSEL8_3 (0x8UL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x00000008 */ +#define GPIO_AFRH_AFSEL9_Pos (4U) +#define GPIO_AFRH_AFSEL9_Msk (0xFUL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x000000F0 */ +#define GPIO_AFRH_AFSEL9 GPIO_AFRH_AFSEL9_Msk +#define GPIO_AFRH_AFSEL9_0 (0x1UL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x00000010 */ +#define GPIO_AFRH_AFSEL9_1 (0x2UL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x00000020 */ +#define GPIO_AFRH_AFSEL9_2 (0x4UL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x00000040 */ +#define GPIO_AFRH_AFSEL9_3 (0x8UL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x00000080 */ +#define GPIO_AFRH_AFSEL10_Pos (8U) +#define GPIO_AFRH_AFSEL10_Msk (0xFUL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000F00 */ +#define GPIO_AFRH_AFSEL10 GPIO_AFRH_AFSEL10_Msk +#define GPIO_AFRH_AFSEL10_0 (0x1UL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000100 */ +#define GPIO_AFRH_AFSEL10_1 (0x2UL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000200 */ +#define GPIO_AFRH_AFSEL10_2 (0x4UL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000400 */ +#define GPIO_AFRH_AFSEL10_3 (0x8UL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000800 */ +#define GPIO_AFRH_AFSEL11_Pos (12U) +#define GPIO_AFRH_AFSEL11_Msk (0xFUL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x0000F000 */ +#define GPIO_AFRH_AFSEL11 GPIO_AFRH_AFSEL11_Msk +#define GPIO_AFRH_AFSEL11_0 (0x1UL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x00001000 */ +#define GPIO_AFRH_AFSEL11_1 (0x2UL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x00002000 */ +#define GPIO_AFRH_AFSEL11_2 (0x4UL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x00004000 */ +#define GPIO_AFRH_AFSEL11_3 (0x8UL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x00008000 */ +#define GPIO_AFRH_AFSEL12_Pos (16U) +#define GPIO_AFRH_AFSEL12_Msk (0xFUL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x000F0000 */ +#define GPIO_AFRH_AFSEL12 GPIO_AFRH_AFSEL12_Msk +#define GPIO_AFRH_AFSEL12_0 (0x1UL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x00010000 */ +#define GPIO_AFRH_AFSEL12_1 (0x2UL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x00020000 */ +#define GPIO_AFRH_AFSEL12_2 (0x4UL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x00040000 */ +#define GPIO_AFRH_AFSEL12_3 (0x8UL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x00080000 */ +#define GPIO_AFRH_AFSEL13_Pos (20U) +#define GPIO_AFRH_AFSEL13_Msk (0xFUL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00F00000 */ +#define GPIO_AFRH_AFSEL13 GPIO_AFRH_AFSEL13_Msk +#define GPIO_AFRH_AFSEL13_0 (0x1UL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00100000 */ +#define GPIO_AFRH_AFSEL13_1 (0x2UL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00200000 */ +#define GPIO_AFRH_AFSEL13_2 (0x4UL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00400000 */ +#define GPIO_AFRH_AFSEL13_3 (0x8UL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00800000 */ +#define GPIO_AFRH_AFSEL14_Pos (24U) +#define GPIO_AFRH_AFSEL14_Msk (0xFUL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x0F000000 */ +#define GPIO_AFRH_AFSEL14 GPIO_AFRH_AFSEL14_Msk +#define GPIO_AFRH_AFSEL14_0 (0x1UL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x01000000 */ +#define GPIO_AFRH_AFSEL14_1 (0x2UL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x02000000 */ +#define GPIO_AFRH_AFSEL14_2 (0x4UL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x04000000 */ +#define GPIO_AFRH_AFSEL14_3 (0x8UL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x08000000 */ +#define GPIO_AFRH_AFSEL15_Pos (28U) +#define GPIO_AFRH_AFSEL15_Msk (0xFUL << GPIO_AFRH_AFSEL15_Pos) /*!< 0xF0000000 */ +#define GPIO_AFRH_AFSEL15 GPIO_AFRH_AFSEL15_Msk +#define GPIO_AFRH_AFSEL15_0 (0x1UL << GPIO_AFRH_AFSEL15_Pos) /*!< 0x10000000 */ +#define GPIO_AFRH_AFSEL15_1 (0x2UL << GPIO_AFRH_AFSEL15_Pos) /*!< 0x20000000 */ +#define GPIO_AFRH_AFSEL15_2 (0x4UL << GPIO_AFRH_AFSEL15_Pos) /*!< 0x40000000 */ +#define GPIO_AFRH_AFSEL15_3 (0x8UL << GPIO_AFRH_AFSEL15_Pos) /*!< 0x80000000 */ + +/****************** Bits definition for GPIO_BRR register ******************/ +#define GPIO_BRR_BR0_Pos (0U) +#define GPIO_BRR_BR0_Msk (0x1UL << GPIO_BRR_BR0_Pos) /*!< 0x00000001 */ +#define GPIO_BRR_BR0 GPIO_BRR_BR0_Msk +#define GPIO_BRR_BR1_Pos (1U) +#define GPIO_BRR_BR1_Msk (0x1UL << GPIO_BRR_BR1_Pos) /*!< 0x00000002 */ +#define GPIO_BRR_BR1 GPIO_BRR_BR1_Msk +#define GPIO_BRR_BR2_Pos (2U) +#define GPIO_BRR_BR2_Msk (0x1UL << GPIO_BRR_BR2_Pos) /*!< 0x00000004 */ +#define GPIO_BRR_BR2 GPIO_BRR_BR2_Msk +#define GPIO_BRR_BR3_Pos (3U) +#define GPIO_BRR_BR3_Msk (0x1UL << GPIO_BRR_BR3_Pos) /*!< 0x00000008 */ +#define GPIO_BRR_BR3 GPIO_BRR_BR3_Msk +#define GPIO_BRR_BR4_Pos (4U) +#define GPIO_BRR_BR4_Msk (0x1UL << GPIO_BRR_BR4_Pos) /*!< 0x00000010 */ +#define GPIO_BRR_BR4 GPIO_BRR_BR4_Msk +#define GPIO_BRR_BR5_Pos (5U) +#define GPIO_BRR_BR5_Msk (0x1UL << GPIO_BRR_BR5_Pos) /*!< 0x00000020 */ +#define GPIO_BRR_BR5 GPIO_BRR_BR5_Msk +#define GPIO_BRR_BR6_Pos (6U) +#define GPIO_BRR_BR6_Msk (0x1UL << GPIO_BRR_BR6_Pos) /*!< 0x00000040 */ +#define GPIO_BRR_BR6 GPIO_BRR_BR6_Msk +#define GPIO_BRR_BR7_Pos (7U) +#define GPIO_BRR_BR7_Msk (0x1UL << GPIO_BRR_BR7_Pos) /*!< 0x00000080 */ +#define GPIO_BRR_BR7 GPIO_BRR_BR7_Msk +#define GPIO_BRR_BR8_Pos (8U) +#define GPIO_BRR_BR8_Msk (0x1UL << GPIO_BRR_BR8_Pos) /*!< 0x00000100 */ +#define GPIO_BRR_BR8 GPIO_BRR_BR8_Msk +#define GPIO_BRR_BR9_Pos (9U) +#define GPIO_BRR_BR9_Msk (0x1UL << GPIO_BRR_BR9_Pos) /*!< 0x00000200 */ +#define GPIO_BRR_BR9 GPIO_BRR_BR9_Msk +#define GPIO_BRR_BR10_Pos (10U) +#define GPIO_BRR_BR10_Msk (0x1UL << GPIO_BRR_BR10_Pos) /*!< 0x00000400 */ +#define GPIO_BRR_BR10 GPIO_BRR_BR10_Msk +#define GPIO_BRR_BR11_Pos (11U) +#define GPIO_BRR_BR11_Msk (0x1UL << GPIO_BRR_BR11_Pos) /*!< 0x00000800 */ +#define GPIO_BRR_BR11 GPIO_BRR_BR11_Msk +#define GPIO_BRR_BR12_Pos (12U) +#define GPIO_BRR_BR12_Msk (0x1UL << GPIO_BRR_BR12_Pos) /*!< 0x00001000 */ +#define GPIO_BRR_BR12 GPIO_BRR_BR12_Msk +#define GPIO_BRR_BR13_Pos (13U) +#define GPIO_BRR_BR13_Msk (0x1UL << GPIO_BRR_BR13_Pos) /*!< 0x00002000 */ +#define GPIO_BRR_BR13 GPIO_BRR_BR13_Msk +#define GPIO_BRR_BR14_Pos (14U) +#define GPIO_BRR_BR14_Msk (0x1UL << GPIO_BRR_BR14_Pos) /*!< 0x00004000 */ +#define GPIO_BRR_BR14 GPIO_BRR_BR14_Msk +#define GPIO_BRR_BR15_Pos (15U) +#define GPIO_BRR_BR15_Msk (0x1UL << GPIO_BRR_BR15_Pos) /*!< 0x00008000 */ +#define GPIO_BRR_BR15 GPIO_BRR_BR15_Msk + + +/******************************************************************************/ +/* */ +/* Inter-integrated Circuit Interface (I2C) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for I2C_CR1 register *******************/ +#define I2C_CR1_PE_Pos (0U) +#define I2C_CR1_PE_Msk (0x1UL << I2C_CR1_PE_Pos) /*!< 0x00000001 */ +#define I2C_CR1_PE I2C_CR1_PE_Msk /*!< Peripheral enable */ +#define I2C_CR1_TXIE_Pos (1U) +#define I2C_CR1_TXIE_Msk (0x1UL << I2C_CR1_TXIE_Pos) /*!< 0x00000002 */ +#define I2C_CR1_TXIE I2C_CR1_TXIE_Msk /*!< TX interrupt enable */ +#define I2C_CR1_RXIE_Pos (2U) +#define I2C_CR1_RXIE_Msk (0x1UL << I2C_CR1_RXIE_Pos) /*!< 0x00000004 */ +#define I2C_CR1_RXIE I2C_CR1_RXIE_Msk /*!< RX interrupt enable */ +#define I2C_CR1_ADDRIE_Pos (3U) +#define I2C_CR1_ADDRIE_Msk (0x1UL << I2C_CR1_ADDRIE_Pos) /*!< 0x00000008 */ +#define I2C_CR1_ADDRIE I2C_CR1_ADDRIE_Msk /*!< Address match interrupt enable */ +#define I2C_CR1_NACKIE_Pos (4U) +#define I2C_CR1_NACKIE_Msk (0x1UL << I2C_CR1_NACKIE_Pos) /*!< 0x00000010 */ +#define I2C_CR1_NACKIE I2C_CR1_NACKIE_Msk /*!< NACK received interrupt enable */ +#define I2C_CR1_STOPIE_Pos (5U) +#define I2C_CR1_STOPIE_Msk (0x1UL << I2C_CR1_STOPIE_Pos) /*!< 0x00000020 */ +#define I2C_CR1_STOPIE I2C_CR1_STOPIE_Msk /*!< STOP detection interrupt enable */ +#define I2C_CR1_TCIE_Pos (6U) +#define I2C_CR1_TCIE_Msk (0x1UL << I2C_CR1_TCIE_Pos) /*!< 0x00000040 */ +#define I2C_CR1_TCIE I2C_CR1_TCIE_Msk /*!< Transfer complete interrupt enable */ +#define I2C_CR1_ERRIE_Pos (7U) +#define I2C_CR1_ERRIE_Msk (0x1UL << I2C_CR1_ERRIE_Pos) /*!< 0x00000080 */ +#define I2C_CR1_ERRIE I2C_CR1_ERRIE_Msk /*!< Errors interrupt enable */ +#define I2C_CR1_DNF_Pos (8U) +#define I2C_CR1_DNF_Msk (0xFUL << I2C_CR1_DNF_Pos) /*!< 0x00000F00 */ +#define I2C_CR1_DNF I2C_CR1_DNF_Msk /*!< Digital noise filter */ +#define I2C_CR1_ANFOFF_Pos (12U) +#define I2C_CR1_ANFOFF_Msk (0x1UL << I2C_CR1_ANFOFF_Pos) /*!< 0x00001000 */ +#define I2C_CR1_ANFOFF I2C_CR1_ANFOFF_Msk /*!< Analog noise filter OFF */ +#define I2C_CR1_SWRST_Pos (13U) +#define I2C_CR1_SWRST_Msk (0x1UL << I2C_CR1_SWRST_Pos) /*!< 0x00002000 */ +#define I2C_CR1_SWRST I2C_CR1_SWRST_Msk /*!< Software reset */ +#define I2C_CR1_TXDMAEN_Pos (14U) +#define I2C_CR1_TXDMAEN_Msk (0x1UL << I2C_CR1_TXDMAEN_Pos) /*!< 0x00004000 */ +#define I2C_CR1_TXDMAEN I2C_CR1_TXDMAEN_Msk /*!< DMA transmission requests enable */ +#define I2C_CR1_RXDMAEN_Pos (15U) +#define I2C_CR1_RXDMAEN_Msk (0x1UL << I2C_CR1_RXDMAEN_Pos) /*!< 0x00008000 */ +#define I2C_CR1_RXDMAEN I2C_CR1_RXDMAEN_Msk /*!< DMA reception requests enable */ +#define I2C_CR1_SBC_Pos (16U) +#define I2C_CR1_SBC_Msk (0x1UL << I2C_CR1_SBC_Pos) /*!< 0x00010000 */ +#define I2C_CR1_SBC I2C_CR1_SBC_Msk /*!< Slave byte control */ +#define I2C_CR1_NOSTRETCH_Pos (17U) +#define I2C_CR1_NOSTRETCH_Msk (0x1UL << I2C_CR1_NOSTRETCH_Pos) /*!< 0x00020000 */ +#define I2C_CR1_NOSTRETCH I2C_CR1_NOSTRETCH_Msk /*!< Clock stretching disable */ +#define I2C_CR1_WUPEN_Pos (18U) +#define I2C_CR1_WUPEN_Msk (0x1UL << I2C_CR1_WUPEN_Pos) /*!< 0x00040000 */ +#define I2C_CR1_WUPEN I2C_CR1_WUPEN_Msk /*!< Wakeup from STOP enable */ +#define I2C_CR1_GCEN_Pos (19U) +#define I2C_CR1_GCEN_Msk (0x1UL << I2C_CR1_GCEN_Pos) /*!< 0x00080000 */ +#define I2C_CR1_GCEN I2C_CR1_GCEN_Msk /*!< General call enable */ +#define I2C_CR1_SMBHEN_Pos (20U) +#define I2C_CR1_SMBHEN_Msk (0x1UL << I2C_CR1_SMBHEN_Pos) /*!< 0x00100000 */ +#define I2C_CR1_SMBHEN I2C_CR1_SMBHEN_Msk /*!< SMBus host address enable */ +#define I2C_CR1_SMBDEN_Pos (21U) +#define I2C_CR1_SMBDEN_Msk (0x1UL << I2C_CR1_SMBDEN_Pos) /*!< 0x00200000 */ +#define I2C_CR1_SMBDEN I2C_CR1_SMBDEN_Msk /*!< SMBus device default address enable */ +#define I2C_CR1_ALERTEN_Pos (22U) +#define I2C_CR1_ALERTEN_Msk (0x1UL << I2C_CR1_ALERTEN_Pos) /*!< 0x00400000 */ +#define I2C_CR1_ALERTEN I2C_CR1_ALERTEN_Msk /*!< SMBus alert enable */ +#define I2C_CR1_PECEN_Pos (23U) +#define I2C_CR1_PECEN_Msk (0x1UL << I2C_CR1_PECEN_Pos) /*!< 0x00800000 */ +#define I2C_CR1_PECEN I2C_CR1_PECEN_Msk /*!< PEC enable */ + +/****************** Bit definition for I2C_CR2 register ********************/ +#define I2C_CR2_SADD_Pos (0U) +#define I2C_CR2_SADD_Msk (0x3FFUL << I2C_CR2_SADD_Pos) /*!< 0x000003FF */ +#define I2C_CR2_SADD I2C_CR2_SADD_Msk /*!< Slave address (master mode) */ +#define I2C_CR2_RD_WRN_Pos (10U) +#define I2C_CR2_RD_WRN_Msk (0x1UL << I2C_CR2_RD_WRN_Pos) /*!< 0x00000400 */ +#define I2C_CR2_RD_WRN I2C_CR2_RD_WRN_Msk /*!< Transfer direction (master mode) */ +#define I2C_CR2_ADD10_Pos (11U) +#define I2C_CR2_ADD10_Msk (0x1UL << I2C_CR2_ADD10_Pos) /*!< 0x00000800 */ +#define I2C_CR2_ADD10 I2C_CR2_ADD10_Msk /*!< 10-bit addressing mode (master mode) */ +#define I2C_CR2_HEAD10R_Pos (12U) +#define I2C_CR2_HEAD10R_Msk (0x1UL << I2C_CR2_HEAD10R_Pos) /*!< 0x00001000 */ +#define I2C_CR2_HEAD10R I2C_CR2_HEAD10R_Msk /*!< 10-bit address header only read direction (master mode) */ +#define I2C_CR2_START_Pos (13U) +#define I2C_CR2_START_Msk (0x1UL << I2C_CR2_START_Pos) /*!< 0x00002000 */ +#define I2C_CR2_START I2C_CR2_START_Msk /*!< START generation */ +#define I2C_CR2_STOP_Pos (14U) +#define I2C_CR2_STOP_Msk (0x1UL << I2C_CR2_STOP_Pos) /*!< 0x00004000 */ +#define I2C_CR2_STOP I2C_CR2_STOP_Msk /*!< STOP generation (master mode) */ +#define I2C_CR2_NACK_Pos (15U) +#define I2C_CR2_NACK_Msk (0x1UL << I2C_CR2_NACK_Pos) /*!< 0x00008000 */ +#define I2C_CR2_NACK I2C_CR2_NACK_Msk /*!< NACK generation (slave mode) */ +#define I2C_CR2_NBYTES_Pos (16U) +#define I2C_CR2_NBYTES_Msk (0xFFUL << I2C_CR2_NBYTES_Pos) /*!< 0x00FF0000 */ +#define I2C_CR2_NBYTES I2C_CR2_NBYTES_Msk /*!< Number of bytes */ +#define I2C_CR2_RELOAD_Pos (24U) +#define I2C_CR2_RELOAD_Msk (0x1UL << I2C_CR2_RELOAD_Pos) /*!< 0x01000000 */ +#define I2C_CR2_RELOAD I2C_CR2_RELOAD_Msk /*!< NBYTES reload mode */ +#define I2C_CR2_AUTOEND_Pos (25U) +#define I2C_CR2_AUTOEND_Msk (0x1UL << I2C_CR2_AUTOEND_Pos) /*!< 0x02000000 */ +#define I2C_CR2_AUTOEND I2C_CR2_AUTOEND_Msk /*!< Automatic end mode (master mode) */ +#define I2C_CR2_PECBYTE_Pos (26U) +#define I2C_CR2_PECBYTE_Msk (0x1UL << I2C_CR2_PECBYTE_Pos) /*!< 0x04000000 */ +#define I2C_CR2_PECBYTE I2C_CR2_PECBYTE_Msk /*!< Packet error checking byte */ + +/******************* Bit definition for I2C_OAR1 register ******************/ +#define I2C_OAR1_OA1_Pos (0U) +#define I2C_OAR1_OA1_Msk (0x3FFUL << I2C_OAR1_OA1_Pos) /*!< 0x000003FF */ +#define I2C_OAR1_OA1 I2C_OAR1_OA1_Msk /*!< Interface own address 1 */ +#define I2C_OAR1_OA1MODE_Pos (10U) +#define I2C_OAR1_OA1MODE_Msk (0x1UL << I2C_OAR1_OA1MODE_Pos) /*!< 0x00000400 */ +#define I2C_OAR1_OA1MODE I2C_OAR1_OA1MODE_Msk /*!< Own address 1 10-bit mode */ +#define I2C_OAR1_OA1EN_Pos (15U) +#define I2C_OAR1_OA1EN_Msk (0x1UL << I2C_OAR1_OA1EN_Pos) /*!< 0x00008000 */ +#define I2C_OAR1_OA1EN I2C_OAR1_OA1EN_Msk /*!< Own address 1 enable */ + +/******************* Bit definition for I2C_OAR2 register ******************/ +#define I2C_OAR2_OA2_Pos (1U) +#define I2C_OAR2_OA2_Msk (0x7FUL << I2C_OAR2_OA2_Pos) /*!< 0x000000FE */ +#define I2C_OAR2_OA2 I2C_OAR2_OA2_Msk /*!< Interface own address 2 */ +#define I2C_OAR2_OA2MSK_Pos (8U) +#define I2C_OAR2_OA2MSK_Msk (0x7UL << I2C_OAR2_OA2MSK_Pos) /*!< 0x00000700 */ +#define I2C_OAR2_OA2MSK I2C_OAR2_OA2MSK_Msk /*!< Own address 2 masks */ +#define I2C_OAR2_OA2NOMASK (0U) /*!< No mask */ +#define I2C_OAR2_OA2MASK01_Pos (8U) +#define I2C_OAR2_OA2MASK01_Msk (0x1UL << I2C_OAR2_OA2MASK01_Pos) /*!< 0x00000100 */ +#define I2C_OAR2_OA2MASK01 I2C_OAR2_OA2MASK01_Msk /*!< OA2[1] is masked, Only OA2[7:2] are compared */ +#define I2C_OAR2_OA2MASK02_Pos (9U) +#define I2C_OAR2_OA2MASK02_Msk (0x1UL << I2C_OAR2_OA2MASK02_Pos) /*!< 0x00000200 */ +#define I2C_OAR2_OA2MASK02 I2C_OAR2_OA2MASK02_Msk /*!< OA2[2:1] is masked, Only OA2[7:3] are compared */ +#define I2C_OAR2_OA2MASK03_Pos (8U) +#define I2C_OAR2_OA2MASK03_Msk (0x3UL << I2C_OAR2_OA2MASK03_Pos) /*!< 0x00000300 */ +#define I2C_OAR2_OA2MASK03 I2C_OAR2_OA2MASK03_Msk /*!< OA2[3:1] is masked, Only OA2[7:4] are compared */ +#define I2C_OAR2_OA2MASK04_Pos (10U) +#define I2C_OAR2_OA2MASK04_Msk (0x1UL << I2C_OAR2_OA2MASK04_Pos) /*!< 0x00000400 */ +#define I2C_OAR2_OA2MASK04 I2C_OAR2_OA2MASK04_Msk /*!< OA2[4:1] is masked, Only OA2[7:5] are compared */ +#define I2C_OAR2_OA2MASK05_Pos (8U) +#define I2C_OAR2_OA2MASK05_Msk (0x5UL << I2C_OAR2_OA2MASK05_Pos) /*!< 0x00000500 */ +#define I2C_OAR2_OA2MASK05 I2C_OAR2_OA2MASK05_Msk /*!< OA2[5:1] is masked, Only OA2[7:6] are compared */ +#define I2C_OAR2_OA2MASK06_Pos (9U) +#define I2C_OAR2_OA2MASK06_Msk (0x3UL << I2C_OAR2_OA2MASK06_Pos) /*!< 0x00000600 */ +#define I2C_OAR2_OA2MASK06 I2C_OAR2_OA2MASK06_Msk /*!< OA2[6:1] is masked, Only OA2[7] are compared */ +#define I2C_OAR2_OA2MASK07_Pos (8U) +#define I2C_OAR2_OA2MASK07_Msk (0x7UL << I2C_OAR2_OA2MASK07_Pos) /*!< 0x00000700 */ +#define I2C_OAR2_OA2MASK07 I2C_OAR2_OA2MASK07_Msk /*!< OA2[7:1] is masked, No comparison is done */ +#define I2C_OAR2_OA2EN_Pos (15U) +#define I2C_OAR2_OA2EN_Msk (0x1UL << I2C_OAR2_OA2EN_Pos) /*!< 0x00008000 */ +#define I2C_OAR2_OA2EN I2C_OAR2_OA2EN_Msk /*!< Own address 2 enable */ + +/******************* Bit definition for I2C_TIMINGR register *******************/ +#define I2C_TIMINGR_SCLL_Pos (0U) +#define I2C_TIMINGR_SCLL_Msk (0xFFUL << I2C_TIMINGR_SCLL_Pos) /*!< 0x000000FF */ +#define I2C_TIMINGR_SCLL I2C_TIMINGR_SCLL_Msk /*!< SCL low period (master mode) */ +#define I2C_TIMINGR_SCLH_Pos (8U) +#define I2C_TIMINGR_SCLH_Msk (0xFFUL << I2C_TIMINGR_SCLH_Pos) /*!< 0x0000FF00 */ +#define I2C_TIMINGR_SCLH I2C_TIMINGR_SCLH_Msk /*!< SCL high period (master mode) */ +#define I2C_TIMINGR_SDADEL_Pos (16U) +#define I2C_TIMINGR_SDADEL_Msk (0xFUL << I2C_TIMINGR_SDADEL_Pos) /*!< 0x000F0000 */ +#define I2C_TIMINGR_SDADEL I2C_TIMINGR_SDADEL_Msk /*!< Data hold time */ +#define I2C_TIMINGR_SCLDEL_Pos (20U) +#define I2C_TIMINGR_SCLDEL_Msk (0xFUL << I2C_TIMINGR_SCLDEL_Pos) /*!< 0x00F00000 */ +#define I2C_TIMINGR_SCLDEL I2C_TIMINGR_SCLDEL_Msk /*!< Data setup time */ +#define I2C_TIMINGR_PRESC_Pos (28U) +#define I2C_TIMINGR_PRESC_Msk (0xFUL << I2C_TIMINGR_PRESC_Pos) /*!< 0xF0000000 */ +#define I2C_TIMINGR_PRESC I2C_TIMINGR_PRESC_Msk /*!< Timings prescaler */ + +/******************* Bit definition for I2C_TIMEOUTR register *******************/ +#define I2C_TIMEOUTR_TIMEOUTA_Pos (0U) +#define I2C_TIMEOUTR_TIMEOUTA_Msk (0xFFFUL << I2C_TIMEOUTR_TIMEOUTA_Pos) /*!< 0x00000FFF */ +#define I2C_TIMEOUTR_TIMEOUTA I2C_TIMEOUTR_TIMEOUTA_Msk /*!< Bus timeout A */ +#define I2C_TIMEOUTR_TIDLE_Pos (12U) +#define I2C_TIMEOUTR_TIDLE_Msk (0x1UL << I2C_TIMEOUTR_TIDLE_Pos) /*!< 0x00001000 */ +#define I2C_TIMEOUTR_TIDLE I2C_TIMEOUTR_TIDLE_Msk /*!< Idle clock timeout detection */ +#define I2C_TIMEOUTR_TIMOUTEN_Pos (15U) +#define I2C_TIMEOUTR_TIMOUTEN_Msk (0x1UL << I2C_TIMEOUTR_TIMOUTEN_Pos) /*!< 0x00008000 */ +#define I2C_TIMEOUTR_TIMOUTEN I2C_TIMEOUTR_TIMOUTEN_Msk /*!< Clock timeout enable */ +#define I2C_TIMEOUTR_TIMEOUTB_Pos (16U) +#define I2C_TIMEOUTR_TIMEOUTB_Msk (0xFFFUL << I2C_TIMEOUTR_TIMEOUTB_Pos) /*!< 0x0FFF0000 */ +#define I2C_TIMEOUTR_TIMEOUTB I2C_TIMEOUTR_TIMEOUTB_Msk /*!< Bus timeout B*/ +#define I2C_TIMEOUTR_TEXTEN_Pos (31U) +#define I2C_TIMEOUTR_TEXTEN_Msk (0x1UL << I2C_TIMEOUTR_TEXTEN_Pos) /*!< 0x80000000 */ +#define I2C_TIMEOUTR_TEXTEN I2C_TIMEOUTR_TEXTEN_Msk /*!< Extended clock timeout enable */ + +/****************** Bit definition for I2C_ISR register *********************/ +#define I2C_ISR_TXE_Pos (0U) +#define I2C_ISR_TXE_Msk (0x1UL << I2C_ISR_TXE_Pos) /*!< 0x00000001 */ +#define I2C_ISR_TXE I2C_ISR_TXE_Msk /*!< Transmit data register empty */ +#define I2C_ISR_TXIS_Pos (1U) +#define I2C_ISR_TXIS_Msk (0x1UL << I2C_ISR_TXIS_Pos) /*!< 0x00000002 */ +#define I2C_ISR_TXIS I2C_ISR_TXIS_Msk /*!< Transmit interrupt status */ +#define I2C_ISR_RXNE_Pos (2U) +#define I2C_ISR_RXNE_Msk (0x1UL << I2C_ISR_RXNE_Pos) /*!< 0x00000004 */ +#define I2C_ISR_RXNE I2C_ISR_RXNE_Msk /*!< Receive data register not empty */ +#define I2C_ISR_ADDR_Pos (3U) +#define I2C_ISR_ADDR_Msk (0x1UL << I2C_ISR_ADDR_Pos) /*!< 0x00000008 */ +#define I2C_ISR_ADDR I2C_ISR_ADDR_Msk /*!< Address matched (slave mode)*/ +#define I2C_ISR_NACKF_Pos (4U) +#define I2C_ISR_NACKF_Msk (0x1UL << I2C_ISR_NACKF_Pos) /*!< 0x00000010 */ +#define I2C_ISR_NACKF I2C_ISR_NACKF_Msk /*!< NACK received flag */ +#define I2C_ISR_STOPF_Pos (5U) +#define I2C_ISR_STOPF_Msk (0x1UL << I2C_ISR_STOPF_Pos) /*!< 0x00000020 */ +#define I2C_ISR_STOPF I2C_ISR_STOPF_Msk /*!< STOP detection flag */ +#define I2C_ISR_TC_Pos (6U) +#define I2C_ISR_TC_Msk (0x1UL << I2C_ISR_TC_Pos) /*!< 0x00000040 */ +#define I2C_ISR_TC I2C_ISR_TC_Msk /*!< Transfer complete (master mode) */ +#define I2C_ISR_TCR_Pos (7U) +#define I2C_ISR_TCR_Msk (0x1UL << I2C_ISR_TCR_Pos) /*!< 0x00000080 */ +#define I2C_ISR_TCR I2C_ISR_TCR_Msk /*!< Transfer complete reload */ +#define I2C_ISR_BERR_Pos (8U) +#define I2C_ISR_BERR_Msk (0x1UL << I2C_ISR_BERR_Pos) /*!< 0x00000100 */ +#define I2C_ISR_BERR I2C_ISR_BERR_Msk /*!< Bus error */ +#define I2C_ISR_ARLO_Pos (9U) +#define I2C_ISR_ARLO_Msk (0x1UL << I2C_ISR_ARLO_Pos) /*!< 0x00000200 */ +#define I2C_ISR_ARLO I2C_ISR_ARLO_Msk /*!< Arbitration lost */ +#define I2C_ISR_OVR_Pos (10U) +#define I2C_ISR_OVR_Msk (0x1UL << I2C_ISR_OVR_Pos) /*!< 0x00000400 */ +#define I2C_ISR_OVR I2C_ISR_OVR_Msk /*!< Overrun/Underrun */ +#define I2C_ISR_PECERR_Pos (11U) +#define I2C_ISR_PECERR_Msk (0x1UL << I2C_ISR_PECERR_Pos) /*!< 0x00000800 */ +#define I2C_ISR_PECERR I2C_ISR_PECERR_Msk /*!< PEC error in reception */ +#define I2C_ISR_TIMEOUT_Pos (12U) +#define I2C_ISR_TIMEOUT_Msk (0x1UL << I2C_ISR_TIMEOUT_Pos) /*!< 0x00001000 */ +#define I2C_ISR_TIMEOUT I2C_ISR_TIMEOUT_Msk /*!< Timeout or Tlow detection flag */ +#define I2C_ISR_ALERT_Pos (13U) +#define I2C_ISR_ALERT_Msk (0x1UL << I2C_ISR_ALERT_Pos) /*!< 0x00002000 */ +#define I2C_ISR_ALERT I2C_ISR_ALERT_Msk /*!< SMBus alert */ +#define I2C_ISR_BUSY_Pos (15U) +#define I2C_ISR_BUSY_Msk (0x1UL << I2C_ISR_BUSY_Pos) /*!< 0x00008000 */ +#define I2C_ISR_BUSY I2C_ISR_BUSY_Msk /*!< Bus busy */ +#define I2C_ISR_DIR_Pos (16U) +#define I2C_ISR_DIR_Msk (0x1UL << I2C_ISR_DIR_Pos) /*!< 0x00010000 */ +#define I2C_ISR_DIR I2C_ISR_DIR_Msk /*!< Transfer direction (slave mode) */ +#define I2C_ISR_ADDCODE_Pos (17U) +#define I2C_ISR_ADDCODE_Msk (0x7FUL << I2C_ISR_ADDCODE_Pos) /*!< 0x00FE0000 */ +#define I2C_ISR_ADDCODE I2C_ISR_ADDCODE_Msk /*!< Address match code (slave mode) */ + +/****************** Bit definition for I2C_ICR register *********************/ +#define I2C_ICR_ADDRCF_Pos (3U) +#define I2C_ICR_ADDRCF_Msk (0x1UL << I2C_ICR_ADDRCF_Pos) /*!< 0x00000008 */ +#define I2C_ICR_ADDRCF I2C_ICR_ADDRCF_Msk /*!< Address matched clear flag */ +#define I2C_ICR_NACKCF_Pos (4U) +#define I2C_ICR_NACKCF_Msk (0x1UL << I2C_ICR_NACKCF_Pos) /*!< 0x00000010 */ +#define I2C_ICR_NACKCF I2C_ICR_NACKCF_Msk /*!< NACK clear flag */ +#define I2C_ICR_STOPCF_Pos (5U) +#define I2C_ICR_STOPCF_Msk (0x1UL << I2C_ICR_STOPCF_Pos) /*!< 0x00000020 */ +#define I2C_ICR_STOPCF I2C_ICR_STOPCF_Msk /*!< STOP detection clear flag */ +#define I2C_ICR_BERRCF_Pos (8U) +#define I2C_ICR_BERRCF_Msk (0x1UL << I2C_ICR_BERRCF_Pos) /*!< 0x00000100 */ +#define I2C_ICR_BERRCF I2C_ICR_BERRCF_Msk /*!< Bus error clear flag */ +#define I2C_ICR_ARLOCF_Pos (9U) +#define I2C_ICR_ARLOCF_Msk (0x1UL << I2C_ICR_ARLOCF_Pos) /*!< 0x00000200 */ +#define I2C_ICR_ARLOCF I2C_ICR_ARLOCF_Msk /*!< Arbitration lost clear flag */ +#define I2C_ICR_OVRCF_Pos (10U) +#define I2C_ICR_OVRCF_Msk (0x1UL << I2C_ICR_OVRCF_Pos) /*!< 0x00000400 */ +#define I2C_ICR_OVRCF I2C_ICR_OVRCF_Msk /*!< Overrun/Underrun clear flag */ +#define I2C_ICR_PECCF_Pos (11U) +#define I2C_ICR_PECCF_Msk (0x1UL << I2C_ICR_PECCF_Pos) /*!< 0x00000800 */ +#define I2C_ICR_PECCF I2C_ICR_PECCF_Msk /*!< PAC error clear flag */ +#define I2C_ICR_TIMOUTCF_Pos (12U) +#define I2C_ICR_TIMOUTCF_Msk (0x1UL << I2C_ICR_TIMOUTCF_Pos) /*!< 0x00001000 */ +#define I2C_ICR_TIMOUTCF I2C_ICR_TIMOUTCF_Msk /*!< Timeout clear flag */ +#define I2C_ICR_ALERTCF_Pos (13U) +#define I2C_ICR_ALERTCF_Msk (0x1UL << I2C_ICR_ALERTCF_Pos) /*!< 0x00002000 */ +#define I2C_ICR_ALERTCF I2C_ICR_ALERTCF_Msk /*!< Alert clear flag */ + +/****************** Bit definition for I2C_PECR register *********************/ +#define I2C_PECR_PEC_Pos (0U) +#define I2C_PECR_PEC_Msk (0xFFUL << I2C_PECR_PEC_Pos) /*!< 0x000000FF */ +#define I2C_PECR_PEC I2C_PECR_PEC_Msk /*!< PEC register */ + +/****************** Bit definition for I2C_RXDR register *********************/ +#define I2C_RXDR_RXDATA_Pos (0U) +#define I2C_RXDR_RXDATA_Msk (0xFFUL << I2C_RXDR_RXDATA_Pos) /*!< 0x000000FF */ +#define I2C_RXDR_RXDATA I2C_RXDR_RXDATA_Msk /*!< 8-bit receive data */ + +/****************** Bit definition for I2C_TXDR register *********************/ +#define I2C_TXDR_TXDATA_Pos (0U) +#define I2C_TXDR_TXDATA_Msk (0xFFUL << I2C_TXDR_TXDATA_Pos) /*!< 0x000000FF */ +#define I2C_TXDR_TXDATA I2C_TXDR_TXDATA_Msk /*!< 8-bit transmit data */ + + +/******************************************************************************/ +/* */ +/* Independent WATCHDOG (IWDG) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for IWDG_KR register ********************/ +#define IWDG_KR_KEY_Pos (0U) +#define IWDG_KR_KEY_Msk (0xFFFFUL << IWDG_KR_KEY_Pos) /*!< 0x0000FFFF */ +#define IWDG_KR_KEY IWDG_KR_KEY_Msk /*! */ +#define RTC_ICSR_ALRBWF_Pos (1U) +#define RTC_ICSR_ALRBWF_Msk (0x1UL << RTC_ICSR_ALRBWF_Pos) /*!< 0x00000002 */ +#define RTC_ICSR_ALRBWF RTC_ICSR_ALRBWF_Msk +#define RTC_ICSR_ALRAWF_Pos (0U) +#define RTC_ICSR_ALRAWF_Msk (0x1UL << RTC_ICSR_ALRAWF_Pos) /*!< 0x00000001 */ +#define RTC_ICSR_ALRAWF RTC_ICSR_ALRAWF_Msk + +/******************** Bits definition for RTC_PRER register *****************/ +#define RTC_PRER_PREDIV_A_Pos (16U) +#define RTC_PRER_PREDIV_A_Msk (0x7FUL << RTC_PRER_PREDIV_A_Pos) /*!< 0x007F0000 */ +#define RTC_PRER_PREDIV_A RTC_PRER_PREDIV_A_Msk +#define RTC_PRER_PREDIV_S_Pos (0U) +#define RTC_PRER_PREDIV_S_Msk (0x7FFFUL << RTC_PRER_PREDIV_S_Pos) /*!< 0x00007FFF */ +#define RTC_PRER_PREDIV_S RTC_PRER_PREDIV_S_Msk + +/******************** Bits definition for RTC_WUTR register *****************/ +#define RTC_WUTR_WUT_Pos (0U) +#define RTC_WUTR_WUT_Msk (0xFFFFUL << RTC_WUTR_WUT_Pos) /*!< 0x0000FFFF */ +#define RTC_WUTR_WUT RTC_WUTR_WUT_Msk /*!< Wakeup auto-reload value bits > */ + +/******************** Bits definition for RTC_CR register *******************/ +#define RTC_CR_OUT2EN_Pos (31U) +#define RTC_CR_OUT2EN_Msk (0x1UL << RTC_CR_OUT2EN_Pos) /*!< 0x80000000 */ +#define RTC_CR_OUT2EN RTC_CR_OUT2EN_Msk /*!< RTC_OUT2 output enable */ +#define RTC_CR_TAMPALRM_TYPE_Pos (30U) +#define RTC_CR_TAMPALRM_TYPE_Msk (0x1UL << RTC_CR_TAMPALRM_TYPE_Pos) /*!< 0x40000000 */ +#define RTC_CR_TAMPALRM_TYPE RTC_CR_TAMPALRM_TYPE_Msk /*!< TAMPALARM output type */ +#define RTC_CR_TAMPALRM_PU_Pos (29U) +#define RTC_CR_TAMPALRM_PU_Msk (0x1UL << RTC_CR_TAMPALRM_PU_Pos) /*!< 0x20000000 */ +#define RTC_CR_TAMPALRM_PU RTC_CR_TAMPALRM_PU_Msk /*!< TAMPALARM output pull-up config */ +#define RTC_CR_TAMPOE_Pos (26U) +#define RTC_CR_TAMPOE_Msk (0x1UL << RTC_CR_TAMPOE_Pos) /*!< 0x04000000 */ +#define RTC_CR_TAMPOE RTC_CR_TAMPOE_Msk /*!< Tamper detection output enable on TAMPALARM */ +#define RTC_CR_TAMPTS_Pos (25U) +#define RTC_CR_TAMPTS_Msk (0x1UL << RTC_CR_TAMPTS_Pos) /*!< 0x02000000 */ +#define RTC_CR_TAMPTS RTC_CR_TAMPTS_Msk /*!< Activate timestamp on tamper detection event */ +#define RTC_CR_ITSE_Pos (24U) +#define RTC_CR_ITSE_Msk (0x1UL << RTC_CR_ITSE_Pos) /*!< 0x01000000 */ +#define RTC_CR_ITSE RTC_CR_ITSE_Msk /*!< Timestamp on internal event enable */ +#define RTC_CR_COE_Pos (23U) +#define RTC_CR_COE_Msk (0x1UL << RTC_CR_COE_Pos) /*!< 0x00800000 */ +#define RTC_CR_COE RTC_CR_COE_Msk +#define RTC_CR_OSEL_Pos (21U) +#define RTC_CR_OSEL_Msk (0x3UL << RTC_CR_OSEL_Pos) /*!< 0x00600000 */ +#define RTC_CR_OSEL RTC_CR_OSEL_Msk +#define RTC_CR_OSEL_0 (0x1UL << RTC_CR_OSEL_Pos) /*!< 0x00200000 */ +#define RTC_CR_OSEL_1 (0x2UL << RTC_CR_OSEL_Pos) /*!< 0x00400000 */ +#define RTC_CR_POL_Pos (20U) +#define RTC_CR_POL_Msk (0x1UL << RTC_CR_POL_Pos) /*!< 0x00100000 */ +#define RTC_CR_POL RTC_CR_POL_Msk +#define RTC_CR_COSEL_Pos (19U) +#define RTC_CR_COSEL_Msk (0x1UL << RTC_CR_COSEL_Pos) /*!< 0x00080000 */ +#define RTC_CR_COSEL RTC_CR_COSEL_Msk +#define RTC_CR_BKP_Pos (18U) +#define RTC_CR_BKP_Msk (0x1UL << RTC_CR_BKP_Pos) /*!< 0x00040000 */ +#define RTC_CR_BKP RTC_CR_BKP_Msk +#define RTC_CR_SUB1H_Pos (17U) +#define RTC_CR_SUB1H_Msk (0x1UL << RTC_CR_SUB1H_Pos) /*!< 0x00020000 */ +#define RTC_CR_SUB1H RTC_CR_SUB1H_Msk +#define RTC_CR_ADD1H_Pos (16U) +#define RTC_CR_ADD1H_Msk (0x1UL << RTC_CR_ADD1H_Pos) /*!< 0x00010000 */ +#define RTC_CR_ADD1H RTC_CR_ADD1H_Msk +#define RTC_CR_TSIE_Pos (15U) +#define RTC_CR_TSIE_Msk (0x1UL << RTC_CR_TSIE_Pos) /*!< 0x00008000 */ +#define RTC_CR_TSIE RTC_CR_TSIE_Msk /*!< Timestamp interrupt enable > */ +#define RTC_CR_WUTIE_Pos (14U) +#define RTC_CR_WUTIE_Msk (0x1UL << RTC_CR_WUTIE_Pos) /*!< 0x00004000 */ +#define RTC_CR_WUTIE RTC_CR_WUTIE_Msk /*!< Wakeup timer interrupt enable > */ +#define RTC_CR_ALRBIE_Pos (13U) +#define RTC_CR_ALRBIE_Msk (0x1UL << RTC_CR_ALRBIE_Pos) /*!< 0x00002000 */ +#define RTC_CR_ALRBIE RTC_CR_ALRBIE_Msk +#define RTC_CR_ALRAIE_Pos (12U) +#define RTC_CR_ALRAIE_Msk (0x1UL << RTC_CR_ALRAIE_Pos) /*!< 0x00001000 */ +#define RTC_CR_ALRAIE RTC_CR_ALRAIE_Msk +#define RTC_CR_TSE_Pos (11U) +#define RTC_CR_TSE_Msk (0x1UL << RTC_CR_TSE_Pos) /*!< 0x00000800 */ +#define RTC_CR_TSE RTC_CR_TSE_Msk /*!< timestamp enable > */ +#define RTC_CR_WUTE_Pos (10U) +#define RTC_CR_WUTE_Msk (0x1UL << RTC_CR_WUTE_Pos) /*!< 0x00000400 */ +#define RTC_CR_WUTE RTC_CR_WUTE_Msk /*!< Wakeup timer enable > */ +#define RTC_CR_ALRBE_Pos (9U) +#define RTC_CR_ALRBE_Msk (0x1UL << RTC_CR_ALRBE_Pos) /*!< 0x00000200 */ +#define RTC_CR_ALRBE RTC_CR_ALRBE_Msk +#define RTC_CR_ALRAE_Pos (8U) +#define RTC_CR_ALRAE_Msk (0x1UL << RTC_CR_ALRAE_Pos) /*!< 0x00000100 */ +#define RTC_CR_ALRAE RTC_CR_ALRAE_Msk +#define RTC_CR_FMT_Pos (6U) +#define RTC_CR_FMT_Msk (0x1UL << RTC_CR_FMT_Pos) /*!< 0x00000040 */ +#define RTC_CR_FMT RTC_CR_FMT_Msk +#define RTC_CR_BYPSHAD_Pos (5U) +#define RTC_CR_BYPSHAD_Msk (0x1UL << RTC_CR_BYPSHAD_Pos) /*!< 0x00000020 */ +#define RTC_CR_BYPSHAD RTC_CR_BYPSHAD_Msk +#define RTC_CR_REFCKON_Pos (4U) +#define RTC_CR_REFCKON_Msk (0x1UL << RTC_CR_REFCKON_Pos) /*!< 0x00000010 */ +#define RTC_CR_REFCKON RTC_CR_REFCKON_Msk +#define RTC_CR_TSEDGE_Pos (3U) +#define RTC_CR_TSEDGE_Msk (0x1UL << RTC_CR_TSEDGE_Pos) /*!< 0x00000008 */ +#define RTC_CR_TSEDGE RTC_CR_TSEDGE_Msk /*!< Timestamp event active edge > */ +#define RTC_CR_WUCKSEL_Pos (0U) +#define RTC_CR_WUCKSEL_Msk (0x7UL << RTC_CR_WUCKSEL_Pos) /*!< 0x00000007 */ +#define RTC_CR_WUCKSEL RTC_CR_WUCKSEL_Msk /*!< Wakeup clock selection > */ +#define RTC_CR_WUCKSEL_0 (0x1UL << RTC_CR_WUCKSEL_Pos) /*!< 0x00000001 */ +#define RTC_CR_WUCKSEL_1 (0x2UL << RTC_CR_WUCKSEL_Pos) /*!< 0x00000002 */ +#define RTC_CR_WUCKSEL_2 (0x4UL << RTC_CR_WUCKSEL_Pos) /*!< 0x00000004 */ + +/******************** Bits definition for RTC_WPR register ******************/ +#define RTC_WPR_KEY_Pos (0U) +#define RTC_WPR_KEY_Msk (0xFFUL << RTC_WPR_KEY_Pos) /*!< 0x000000FF */ +#define RTC_WPR_KEY RTC_WPR_KEY_Msk + +/******************** Bits definition for RTC_CALR register *****************/ +#define RTC_CALR_CALP_Pos (15U) +#define RTC_CALR_CALP_Msk (0x1UL << RTC_CALR_CALP_Pos) /*!< 0x00008000 */ +#define RTC_CALR_CALP RTC_CALR_CALP_Msk +#define RTC_CALR_CALW8_Pos (14U) +#define RTC_CALR_CALW8_Msk (0x1UL << RTC_CALR_CALW8_Pos) /*!< 0x00004000 */ +#define RTC_CALR_CALW8 RTC_CALR_CALW8_Msk +#define RTC_CALR_CALW16_Pos (13U) +#define RTC_CALR_CALW16_Msk (0x1UL << RTC_CALR_CALW16_Pos) /*!< 0x00002000 */ +#define RTC_CALR_CALW16 RTC_CALR_CALW16_Msk +#define RTC_CALR_CALM_Pos (0U) +#define RTC_CALR_CALM_Msk (0x1FFUL << RTC_CALR_CALM_Pos) /*!< 0x000001FF */ +#define RTC_CALR_CALM RTC_CALR_CALM_Msk +#define RTC_CALR_CALM_0 (0x001UL << RTC_CALR_CALM_Pos) /*!< 0x00000001 */ +#define RTC_CALR_CALM_1 (0x002UL << RTC_CALR_CALM_Pos) /*!< 0x00000002 */ +#define RTC_CALR_CALM_2 (0x004UL << RTC_CALR_CALM_Pos) /*!< 0x00000004 */ +#define RTC_CALR_CALM_3 (0x008UL << RTC_CALR_CALM_Pos) /*!< 0x00000008 */ +#define RTC_CALR_CALM_4 (0x010UL << RTC_CALR_CALM_Pos) /*!< 0x00000010 */ +#define RTC_CALR_CALM_5 (0x020UL << RTC_CALR_CALM_Pos) /*!< 0x00000020 */ +#define RTC_CALR_CALM_6 (0x040UL << RTC_CALR_CALM_Pos) /*!< 0x00000040 */ +#define RTC_CALR_CALM_7 (0x080UL << RTC_CALR_CALM_Pos) /*!< 0x00000080 */ +#define RTC_CALR_CALM_8 (0x100UL << RTC_CALR_CALM_Pos) /*!< 0x00000100 */ + +/******************** Bits definition for RTC_SHIFTR register ***************/ +#define RTC_SHIFTR_SUBFS_Pos (0U) +#define RTC_SHIFTR_SUBFS_Msk (0x7FFFUL << RTC_SHIFTR_SUBFS_Pos) /*!< 0x00007FFF */ +#define RTC_SHIFTR_SUBFS RTC_SHIFTR_SUBFS_Msk +#define RTC_SHIFTR_ADD1S_Pos (31U) +#define RTC_SHIFTR_ADD1S_Msk (0x1UL << RTC_SHIFTR_ADD1S_Pos) /*!< 0x80000000 */ +#define RTC_SHIFTR_ADD1S RTC_SHIFTR_ADD1S_Msk + +/******************** Bits definition for RTC_TSTR register *****************/ +#define RTC_TSTR_PM_Pos (22U) +#define RTC_TSTR_PM_Msk (0x1UL << RTC_TSTR_PM_Pos) /*!< 0x00400000 */ +#define RTC_TSTR_PM RTC_TSTR_PM_Msk /*!< AM-PM notation > */ +#define RTC_TSTR_HT_Pos (20U) +#define RTC_TSTR_HT_Msk (0x3UL << RTC_TSTR_HT_Pos) /*!< 0x00300000 */ +#define RTC_TSTR_HT RTC_TSTR_HT_Msk +#define RTC_TSTR_HT_0 (0x1UL << RTC_TSTR_HT_Pos) /*!< 0x00100000 */ +#define RTC_TSTR_HT_1 (0x2UL << RTC_TSTR_HT_Pos) /*!< 0x00200000 */ +#define RTC_TSTR_HU_Pos (16U) +#define RTC_TSTR_HU_Msk (0xFUL << RTC_TSTR_HU_Pos) /*!< 0x000F0000 */ +#define RTC_TSTR_HU RTC_TSTR_HU_Msk +#define RTC_TSTR_HU_0 (0x1UL << RTC_TSTR_HU_Pos) /*!< 0x00010000 */ +#define RTC_TSTR_HU_1 (0x2UL << RTC_TSTR_HU_Pos) /*!< 0x00020000 */ +#define RTC_TSTR_HU_2 (0x4UL << RTC_TSTR_HU_Pos) /*!< 0x00040000 */ +#define RTC_TSTR_HU_3 (0x8UL << RTC_TSTR_HU_Pos) /*!< 0x00080000 */ +#define RTC_TSTR_MNT_Pos (12U) +#define RTC_TSTR_MNT_Msk (0x7UL << RTC_TSTR_MNT_Pos) /*!< 0x00007000 */ +#define RTC_TSTR_MNT RTC_TSTR_MNT_Msk +#define RTC_TSTR_MNT_0 (0x1UL << RTC_TSTR_MNT_Pos) /*!< 0x00001000 */ +#define RTC_TSTR_MNT_1 (0x2UL << RTC_TSTR_MNT_Pos) /*!< 0x00002000 */ +#define RTC_TSTR_MNT_2 (0x4UL << RTC_TSTR_MNT_Pos) /*!< 0x00004000 */ +#define RTC_TSTR_MNU_Pos (8U) +#define RTC_TSTR_MNU_Msk (0xFUL << RTC_TSTR_MNU_Pos) /*!< 0x00000F00 */ +#define RTC_TSTR_MNU RTC_TSTR_MNU_Msk +#define RTC_TSTR_MNU_0 (0x1UL << RTC_TSTR_MNU_Pos) /*!< 0x00000100 */ +#define RTC_TSTR_MNU_1 (0x2UL << RTC_TSTR_MNU_Pos) /*!< 0x00000200 */ +#define RTC_TSTR_MNU_2 (0x4UL << RTC_TSTR_MNU_Pos) /*!< 0x00000400 */ +#define RTC_TSTR_MNU_3 (0x8UL << RTC_TSTR_MNU_Pos) /*!< 0x00000800 */ +#define RTC_TSTR_ST_Pos (4U) +#define RTC_TSTR_ST_Msk (0x7UL << RTC_TSTR_ST_Pos) /*!< 0x00000070 */ +#define RTC_TSTR_ST RTC_TSTR_ST_Msk +#define RTC_TSTR_ST_0 (0x1UL << RTC_TSTR_ST_Pos) /*!< 0x00000010 */ +#define RTC_TSTR_ST_1 (0x2UL << RTC_TSTR_ST_Pos) /*!< 0x00000020 */ +#define RTC_TSTR_ST_2 (0x4UL << RTC_TSTR_ST_Pos) /*!< 0x00000040 */ +#define RTC_TSTR_SU_Pos (0U) +#define RTC_TSTR_SU_Msk (0xFUL << RTC_TSTR_SU_Pos) /*!< 0x0000000F */ +#define RTC_TSTR_SU RTC_TSTR_SU_Msk +#define RTC_TSTR_SU_0 (0x1UL << RTC_TSTR_SU_Pos) /*!< 0x00000001 */ +#define RTC_TSTR_SU_1 (0x2UL << RTC_TSTR_SU_Pos) /*!< 0x00000002 */ +#define RTC_TSTR_SU_2 (0x4UL << RTC_TSTR_SU_Pos) /*!< 0x00000004 */ +#define RTC_TSTR_SU_3 (0x8UL << RTC_TSTR_SU_Pos) /*!< 0x00000008 */ + +/******************** Bits definition for RTC_TSDR register *****************/ +#define RTC_TSDR_WDU_Pos (13U) +#define RTC_TSDR_WDU_Msk (0x7UL << RTC_TSDR_WDU_Pos) /*!< 0x0000E000 */ +#define RTC_TSDR_WDU RTC_TSDR_WDU_Msk /*!< Week day units > */ +#define RTC_TSDR_WDU_0 (0x1UL << RTC_TSDR_WDU_Pos) /*!< 0x00002000 */ +#define RTC_TSDR_WDU_1 (0x2UL << RTC_TSDR_WDU_Pos) /*!< 0x00004000 */ +#define RTC_TSDR_WDU_2 (0x4UL << RTC_TSDR_WDU_Pos) /*!< 0x00008000 */ +#define RTC_TSDR_MT_Pos (12U) +#define RTC_TSDR_MT_Msk (0x1UL << RTC_TSDR_MT_Pos) /*!< 0x00001000 */ +#define RTC_TSDR_MT RTC_TSDR_MT_Msk +#define RTC_TSDR_MU_Pos (8U) +#define RTC_TSDR_MU_Msk (0xFUL << RTC_TSDR_MU_Pos) /*!< 0x00000F00 */ +#define RTC_TSDR_MU RTC_TSDR_MU_Msk +#define RTC_TSDR_MU_0 (0x1UL << RTC_TSDR_MU_Pos) /*!< 0x00000100 */ +#define RTC_TSDR_MU_1 (0x2UL << RTC_TSDR_MU_Pos) /*!< 0x00000200 */ +#define RTC_TSDR_MU_2 (0x4UL << RTC_TSDR_MU_Pos) /*!< 0x00000400 */ +#define RTC_TSDR_MU_3 (0x8UL << RTC_TSDR_MU_Pos) /*!< 0x00000800 */ +#define RTC_TSDR_DT_Pos (4U) +#define RTC_TSDR_DT_Msk (0x3UL << RTC_TSDR_DT_Pos) /*!< 0x00000030 */ +#define RTC_TSDR_DT RTC_TSDR_DT_Msk +#define RTC_TSDR_DT_0 (0x1UL << RTC_TSDR_DT_Pos) /*!< 0x00000010 */ +#define RTC_TSDR_DT_1 (0x2UL << RTC_TSDR_DT_Pos) /*!< 0x00000020 */ +#define RTC_TSDR_DU_Pos (0U) +#define RTC_TSDR_DU_Msk (0xFUL << RTC_TSDR_DU_Pos) /*!< 0x0000000F */ +#define RTC_TSDR_DU RTC_TSDR_DU_Msk +#define RTC_TSDR_DU_0 (0x1UL << RTC_TSDR_DU_Pos) /*!< 0x00000001 */ +#define RTC_TSDR_DU_1 (0x2UL << RTC_TSDR_DU_Pos) /*!< 0x00000002 */ +#define RTC_TSDR_DU_2 (0x4UL << RTC_TSDR_DU_Pos) /*!< 0x00000004 */ +#define RTC_TSDR_DU_3 (0x8UL << RTC_TSDR_DU_Pos) /*!< 0x00000008 */ + +/******************** Bits definition for RTC_TSSSR register ****************/ +#define RTC_TSSSR_SS_Pos (0U) +#define RTC_TSSSR_SS_Msk (0xFFFFUL << RTC_TSSSR_SS_Pos) /*!< 0x0000FFFF */ +#define RTC_TSSSR_SS RTC_TSSSR_SS_Msk /*!< Sub second value > */ + +/******************** Bits definition for RTC_ALRMAR register ***************/ +#define RTC_ALRMAR_MSK4_Pos (31U) +#define RTC_ALRMAR_MSK4_Msk (0x1UL << RTC_ALRMAR_MSK4_Pos) /*!< 0x80000000 */ +#define RTC_ALRMAR_MSK4 RTC_ALRMAR_MSK4_Msk +#define RTC_ALRMAR_WDSEL_Pos (30U) +#define RTC_ALRMAR_WDSEL_Msk (0x1UL << RTC_ALRMAR_WDSEL_Pos) /*!< 0x40000000 */ +#define RTC_ALRMAR_WDSEL RTC_ALRMAR_WDSEL_Msk +#define RTC_ALRMAR_DT_Pos (28U) +#define RTC_ALRMAR_DT_Msk (0x3UL << RTC_ALRMAR_DT_Pos) /*!< 0x30000000 */ +#define RTC_ALRMAR_DT RTC_ALRMAR_DT_Msk +#define RTC_ALRMAR_DT_0 (0x1UL << RTC_ALRMAR_DT_Pos) /*!< 0x10000000 */ +#define RTC_ALRMAR_DT_1 (0x2UL << RTC_ALRMAR_DT_Pos) /*!< 0x20000000 */ +#define RTC_ALRMAR_DU_Pos (24U) +#define RTC_ALRMAR_DU_Msk (0xFUL << RTC_ALRMAR_DU_Pos) /*!< 0x0F000000 */ +#define RTC_ALRMAR_DU RTC_ALRMAR_DU_Msk +#define RTC_ALRMAR_DU_0 (0x1UL << RTC_ALRMAR_DU_Pos) /*!< 0x01000000 */ +#define RTC_ALRMAR_DU_1 (0x2UL << RTC_ALRMAR_DU_Pos) /*!< 0x02000000 */ +#define RTC_ALRMAR_DU_2 (0x4UL << RTC_ALRMAR_DU_Pos) /*!< 0x04000000 */ +#define RTC_ALRMAR_DU_3 (0x8UL << RTC_ALRMAR_DU_Pos) /*!< 0x08000000 */ +#define RTC_ALRMAR_MSK3_Pos (23U) +#define RTC_ALRMAR_MSK3_Msk (0x1UL << RTC_ALRMAR_MSK3_Pos) /*!< 0x00800000 */ +#define RTC_ALRMAR_MSK3 RTC_ALRMAR_MSK3_Msk +#define RTC_ALRMAR_PM_Pos (22U) +#define RTC_ALRMAR_PM_Msk (0x1UL << RTC_ALRMAR_PM_Pos) /*!< 0x00400000 */ +#define RTC_ALRMAR_PM RTC_ALRMAR_PM_Msk +#define RTC_ALRMAR_HT_Pos (20U) +#define RTC_ALRMAR_HT_Msk (0x3UL << RTC_ALRMAR_HT_Pos) /*!< 0x00300000 */ +#define RTC_ALRMAR_HT RTC_ALRMAR_HT_Msk +#define RTC_ALRMAR_HT_0 (0x1UL << RTC_ALRMAR_HT_Pos) /*!< 0x00100000 */ +#define RTC_ALRMAR_HT_1 (0x2UL << RTC_ALRMAR_HT_Pos) /*!< 0x00200000 */ +#define RTC_ALRMAR_HU_Pos (16U) +#define RTC_ALRMAR_HU_Msk (0xFUL << RTC_ALRMAR_HU_Pos) /*!< 0x000F0000 */ +#define RTC_ALRMAR_HU RTC_ALRMAR_HU_Msk +#define RTC_ALRMAR_HU_0 (0x1UL << RTC_ALRMAR_HU_Pos) /*!< 0x00010000 */ +#define RTC_ALRMAR_HU_1 (0x2UL << RTC_ALRMAR_HU_Pos) /*!< 0x00020000 */ +#define RTC_ALRMAR_HU_2 (0x4UL << RTC_ALRMAR_HU_Pos) /*!< 0x00040000 */ +#define RTC_ALRMAR_HU_3 (0x8UL << RTC_ALRMAR_HU_Pos) /*!< 0x00080000 */ +#define RTC_ALRMAR_MSK2_Pos (15U) +#define RTC_ALRMAR_MSK2_Msk (0x1UL << RTC_ALRMAR_MSK2_Pos) /*!< 0x00008000 */ +#define RTC_ALRMAR_MSK2 RTC_ALRMAR_MSK2_Msk +#define RTC_ALRMAR_MNT_Pos (12U) +#define RTC_ALRMAR_MNT_Msk (0x7UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00007000 */ +#define RTC_ALRMAR_MNT RTC_ALRMAR_MNT_Msk +#define RTC_ALRMAR_MNT_0 (0x1UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00001000 */ +#define RTC_ALRMAR_MNT_1 (0x2UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00002000 */ +#define RTC_ALRMAR_MNT_2 (0x4UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00004000 */ +#define RTC_ALRMAR_MNU_Pos (8U) +#define RTC_ALRMAR_MNU_Msk (0xFUL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000F00 */ +#define RTC_ALRMAR_MNU RTC_ALRMAR_MNU_Msk +#define RTC_ALRMAR_MNU_0 (0x1UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000100 */ +#define RTC_ALRMAR_MNU_1 (0x2UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000200 */ +#define RTC_ALRMAR_MNU_2 (0x4UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000400 */ +#define RTC_ALRMAR_MNU_3 (0x8UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000800 */ +#define RTC_ALRMAR_MSK1_Pos (7U) +#define RTC_ALRMAR_MSK1_Msk (0x1UL << RTC_ALRMAR_MSK1_Pos) /*!< 0x00000080 */ +#define RTC_ALRMAR_MSK1 RTC_ALRMAR_MSK1_Msk +#define RTC_ALRMAR_ST_Pos (4U) +#define RTC_ALRMAR_ST_Msk (0x7UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000070 */ +#define RTC_ALRMAR_ST RTC_ALRMAR_ST_Msk +#define RTC_ALRMAR_ST_0 (0x1UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000010 */ +#define RTC_ALRMAR_ST_1 (0x2UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000020 */ +#define RTC_ALRMAR_ST_2 (0x4UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000040 */ +#define RTC_ALRMAR_SU_Pos (0U) +#define RTC_ALRMAR_SU_Msk (0xFUL << RTC_ALRMAR_SU_Pos) /*!< 0x0000000F */ +#define RTC_ALRMAR_SU RTC_ALRMAR_SU_Msk +#define RTC_ALRMAR_SU_0 (0x1UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000001 */ +#define RTC_ALRMAR_SU_1 (0x2UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000002 */ +#define RTC_ALRMAR_SU_2 (0x4UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000004 */ +#define RTC_ALRMAR_SU_3 (0x8UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000008 */ + +/******************** Bits definition for RTC_ALRMASSR register *************/ +#define RTC_ALRMASSR_MASKSS_Pos (24U) +#define RTC_ALRMASSR_MASKSS_Msk (0xFUL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x0F000000 */ +#define RTC_ALRMASSR_MASKSS RTC_ALRMASSR_MASKSS_Msk +#define RTC_ALRMASSR_MASKSS_0 (0x1UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x01000000 */ +#define RTC_ALRMASSR_MASKSS_1 (0x2UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x02000000 */ +#define RTC_ALRMASSR_MASKSS_2 (0x4UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x04000000 */ +#define RTC_ALRMASSR_MASKSS_3 (0x8UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x08000000 */ +#define RTC_ALRMASSR_SS_Pos (0U) +#define RTC_ALRMASSR_SS_Msk (0x7FFFUL << RTC_ALRMASSR_SS_Pos) /*!< 0x00007FFF */ +#define RTC_ALRMASSR_SS RTC_ALRMASSR_SS_Msk + +/******************** Bits definition for RTC_ALRMBR register ***************/ +#define RTC_ALRMBR_MSK4_Pos (31U) +#define RTC_ALRMBR_MSK4_Msk (0x1UL << RTC_ALRMBR_MSK4_Pos) /*!< 0x80000000 */ +#define RTC_ALRMBR_MSK4 RTC_ALRMBR_MSK4_Msk +#define RTC_ALRMBR_WDSEL_Pos (30U) +#define RTC_ALRMBR_WDSEL_Msk (0x1UL << RTC_ALRMBR_WDSEL_Pos) /*!< 0x40000000 */ +#define RTC_ALRMBR_WDSEL RTC_ALRMBR_WDSEL_Msk +#define RTC_ALRMBR_DT_Pos (28U) +#define RTC_ALRMBR_DT_Msk (0x3UL << RTC_ALRMBR_DT_Pos) /*!< 0x30000000 */ +#define RTC_ALRMBR_DT RTC_ALRMBR_DT_Msk +#define RTC_ALRMBR_DT_0 (0x1UL << RTC_ALRMBR_DT_Pos) /*!< 0x10000000 */ +#define RTC_ALRMBR_DT_1 (0x2UL << RTC_ALRMBR_DT_Pos) /*!< 0x20000000 */ +#define RTC_ALRMBR_DU_Pos (24U) +#define RTC_ALRMBR_DU_Msk (0xFUL << RTC_ALRMBR_DU_Pos) /*!< 0x0F000000 */ +#define RTC_ALRMBR_DU RTC_ALRMBR_DU_Msk +#define RTC_ALRMBR_DU_0 (0x1UL << RTC_ALRMBR_DU_Pos) /*!< 0x01000000 */ +#define RTC_ALRMBR_DU_1 (0x2UL << RTC_ALRMBR_DU_Pos) /*!< 0x02000000 */ +#define RTC_ALRMBR_DU_2 (0x4UL << RTC_ALRMBR_DU_Pos) /*!< 0x04000000 */ +#define RTC_ALRMBR_DU_3 (0x8UL << RTC_ALRMBR_DU_Pos) /*!< 0x08000000 */ +#define RTC_ALRMBR_MSK3_Pos (23U) +#define RTC_ALRMBR_MSK3_Msk (0x1UL << RTC_ALRMBR_MSK3_Pos) /*!< 0x00800000 */ +#define RTC_ALRMBR_MSK3 RTC_ALRMBR_MSK3_Msk +#define RTC_ALRMBR_PM_Pos (22U) +#define RTC_ALRMBR_PM_Msk (0x1UL << RTC_ALRMBR_PM_Pos) /*!< 0x00400000 */ +#define RTC_ALRMBR_PM RTC_ALRMBR_PM_Msk +#define RTC_ALRMBR_HT_Pos (20U) +#define RTC_ALRMBR_HT_Msk (0x3UL << RTC_ALRMBR_HT_Pos) /*!< 0x00300000 */ +#define RTC_ALRMBR_HT RTC_ALRMBR_HT_Msk +#define RTC_ALRMBR_HT_0 (0x1UL << RTC_ALRMBR_HT_Pos) /*!< 0x00100000 */ +#define RTC_ALRMBR_HT_1 (0x2UL << RTC_ALRMBR_HT_Pos) /*!< 0x00200000 */ +#define RTC_ALRMBR_HU_Pos (16U) +#define RTC_ALRMBR_HU_Msk (0xFUL << RTC_ALRMBR_HU_Pos) /*!< 0x000F0000 */ +#define RTC_ALRMBR_HU RTC_ALRMBR_HU_Msk +#define RTC_ALRMBR_HU_0 (0x1UL << RTC_ALRMBR_HU_Pos) /*!< 0x00010000 */ +#define RTC_ALRMBR_HU_1 (0x2UL << RTC_ALRMBR_HU_Pos) /*!< 0x00020000 */ +#define RTC_ALRMBR_HU_2 (0x4UL << RTC_ALRMBR_HU_Pos) /*!< 0x00040000 */ +#define RTC_ALRMBR_HU_3 (0x8UL << RTC_ALRMBR_HU_Pos) /*!< 0x00080000 */ +#define RTC_ALRMBR_MSK2_Pos (15U) +#define RTC_ALRMBR_MSK2_Msk (0x1UL << RTC_ALRMBR_MSK2_Pos) /*!< 0x00008000 */ +#define RTC_ALRMBR_MSK2 RTC_ALRMBR_MSK2_Msk +#define RTC_ALRMBR_MNT_Pos (12U) +#define RTC_ALRMBR_MNT_Msk (0x7UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00007000 */ +#define RTC_ALRMBR_MNT RTC_ALRMBR_MNT_Msk +#define RTC_ALRMBR_MNT_0 (0x1UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00001000 */ +#define RTC_ALRMBR_MNT_1 (0x2UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00002000 */ +#define RTC_ALRMBR_MNT_2 (0x4UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00004000 */ +#define RTC_ALRMBR_MNU_Pos (8U) +#define RTC_ALRMBR_MNU_Msk (0xFUL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000F00 */ +#define RTC_ALRMBR_MNU RTC_ALRMBR_MNU_Msk +#define RTC_ALRMBR_MNU_0 (0x1UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000100 */ +#define RTC_ALRMBR_MNU_1 (0x2UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000200 */ +#define RTC_ALRMBR_MNU_2 (0x4UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000400 */ +#define RTC_ALRMBR_MNU_3 (0x8UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000800 */ +#define RTC_ALRMBR_MSK1_Pos (7U) +#define RTC_ALRMBR_MSK1_Msk (0x1UL << RTC_ALRMBR_MSK1_Pos) /*!< 0x00000080 */ +#define RTC_ALRMBR_MSK1 RTC_ALRMBR_MSK1_Msk +#define RTC_ALRMBR_ST_Pos (4U) +#define RTC_ALRMBR_ST_Msk (0x7UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000070 */ +#define RTC_ALRMBR_ST RTC_ALRMBR_ST_Msk +#define RTC_ALRMBR_ST_0 (0x1UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000010 */ +#define RTC_ALRMBR_ST_1 (0x2UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000020 */ +#define RTC_ALRMBR_ST_2 (0x4UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000040 */ +#define RTC_ALRMBR_SU_Pos (0U) +#define RTC_ALRMBR_SU_Msk (0xFUL << RTC_ALRMBR_SU_Pos) /*!< 0x0000000F */ +#define RTC_ALRMBR_SU RTC_ALRMBR_SU_Msk +#define RTC_ALRMBR_SU_0 (0x1UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000001 */ +#define RTC_ALRMBR_SU_1 (0x2UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000002 */ +#define RTC_ALRMBR_SU_2 (0x4UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000004 */ +#define RTC_ALRMBR_SU_3 (0x8UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000008 */ + +/******************** Bits definition for RTC_ALRMASSR register *************/ +#define RTC_ALRMBSSR_MASKSS_Pos (24U) +#define RTC_ALRMBSSR_MASKSS_Msk (0xFUL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x0F000000 */ +#define RTC_ALRMBSSR_MASKSS RTC_ALRMBSSR_MASKSS_Msk +#define RTC_ALRMBSSR_MASKSS_0 (0x1UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x01000000 */ +#define RTC_ALRMBSSR_MASKSS_1 (0x2UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x02000000 */ +#define RTC_ALRMBSSR_MASKSS_2 (0x4UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x04000000 */ +#define RTC_ALRMBSSR_MASKSS_3 (0x8UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x08000000 */ +#define RTC_ALRMBSSR_SS_Pos (0U) +#define RTC_ALRMBSSR_SS_Msk (0x7FFFUL << RTC_ALRMBSSR_SS_Pos) /*!< 0x00007FFF */ +#define RTC_ALRMBSSR_SS RTC_ALRMBSSR_SS_Msk + +/******************** Bits definition for RTC_SR register *******************/ +#define RTC_SR_ITSF_Pos (5U) +#define RTC_SR_ITSF_Msk (0x1UL << RTC_SR_ITSF_Pos) /*!< 0x00000020 */ +#define RTC_SR_ITSF RTC_SR_ITSF_Msk +#define RTC_SR_TSOVF_Pos (4U) +#define RTC_SR_TSOVF_Msk (0x1UL << RTC_SR_TSOVF_Pos) /*!< 0x00000010 */ +#define RTC_SR_TSOVF RTC_SR_TSOVF_Msk /*!< Timestamp overflow flag > */ +#define RTC_SR_TSF_Pos (3U) +#define RTC_SR_TSF_Msk (0x1UL << RTC_SR_TSF_Pos) /*!< 0x00000008 */ +#define RTC_SR_TSF RTC_SR_TSF_Msk /*!< Timestamp flag > */ +#define RTC_SR_WUTF_Pos (2U) +#define RTC_SR_WUTF_Msk (0x1UL << RTC_SR_WUTF_Pos) /*!< 0x00000004 */ +#define RTC_SR_WUTF RTC_SR_WUTF_Msk /*!< Wakeup timer flag > */ +#define RTC_SR_ALRBF_Pos (1U) +#define RTC_SR_ALRBF_Msk (0x1UL << RTC_SR_ALRBF_Pos) /*!< 0x00000002 */ +#define RTC_SR_ALRBF RTC_SR_ALRBF_Msk +#define RTC_SR_ALRAF_Pos (0U) +#define RTC_SR_ALRAF_Msk (0x1UL << RTC_SR_ALRAF_Pos) /*!< 0x00000001 */ +#define RTC_SR_ALRAF RTC_SR_ALRAF_Msk + +/******************** Bits definition for RTC_MISR register *****************/ +#define RTC_MISR_ITSMF_Pos (5U) +#define RTC_MISR_ITSMF_Msk (0x1UL << RTC_MISR_ITSMF_Pos) /*!< 0x00000020 */ +#define RTC_MISR_ITSMF RTC_MISR_ITSMF_Msk +#define RTC_MISR_TSOVMF_Pos (4U) +#define RTC_MISR_TSOVMF_Msk (0x1UL << RTC_MISR_TSOVMF_Pos) /*!< 0x00000010 */ +#define RTC_MISR_TSOVMF RTC_MISR_TSOVMF_Msk /*!< Timestamp overflow masked flag > */ +#define RTC_MISR_TSMF_Pos (3U) +#define RTC_MISR_TSMF_Msk (0x1UL << RTC_MISR_TSMF_Pos) /*!< 0x00000008 */ +#define RTC_MISR_TSMF RTC_MISR_TSMF_Msk /*!< Timestamp masked flag > */ +#define RTC_MISR_WUTMF_Pos (2U) +#define RTC_MISR_WUTMF_Msk (0x1UL << RTC_MISR_WUTMF_Pos) /*!< 0x00000004 */ +#define RTC_MISR_WUTMF RTC_MISR_WUTMF_Msk /*!< Wakeup timer masked flag > */ +#define RTC_MISR_ALRBMF_Pos (1U) +#define RTC_MISR_ALRBMF_Msk (0x1UL << RTC_MISR_ALRBMF_Pos) /*!< 0x00000002 */ +#define RTC_MISR_ALRBMF RTC_MISR_ALRBMF_Msk +#define RTC_MISR_ALRAMF_Pos (0U) +#define RTC_MISR_ALRAMF_Msk (0x1UL << RTC_MISR_ALRAMF_Pos) /*!< 0x00000001 */ +#define RTC_MISR_ALRAMF RTC_MISR_ALRAMF_Msk + +/******************** Bits definition for RTC_SCR register ******************/ +#define RTC_SCR_CITSF_Pos (5U) +#define RTC_SCR_CITSF_Msk (0x1UL << RTC_SCR_CITSF_Pos) /*!< 0x00000020 */ +#define RTC_SCR_CITSF RTC_SCR_CITSF_Msk +#define RTC_SCR_CTSOVF_Pos (4U) +#define RTC_SCR_CTSOVF_Msk (0x1UL << RTC_SCR_CTSOVF_Pos) /*!< 0x00000010 */ +#define RTC_SCR_CTSOVF RTC_SCR_CTSOVF_Msk /*!< Clear timestamp overflow flag > */ +#define RTC_SCR_CTSF_Pos (3U) +#define RTC_SCR_CTSF_Msk (0x1UL << RTC_SCR_CTSF_Pos) /*!< 0x00000008 */ +#define RTC_SCR_CTSF RTC_SCR_CTSF_Msk /*!< Clear timestamp flag > */ +#define RTC_SCR_CWUTF_Pos (2U) +#define RTC_SCR_CWUTF_Msk (0x1UL << RTC_SCR_CWUTF_Pos) /*!< 0x00000004 */ +#define RTC_SCR_CWUTF RTC_SCR_CWUTF_Msk /*!< Clear wakeup timer flag > */ +#define RTC_SCR_CALRBF_Pos (1U) +#define RTC_SCR_CALRBF_Msk (0x1UL << RTC_SCR_CALRBF_Pos) /*!< 0x00000002 */ +#define RTC_SCR_CALRBF RTC_SCR_CALRBF_Msk +#define RTC_SCR_CALRAF_Pos (0U) +#define RTC_SCR_CALRAF_Msk (0x1UL << RTC_SCR_CALRAF_Pos) /*!< 0x00000001 */ +#define RTC_SCR_CALRAF RTC_SCR_CALRAF_Msk + +/******************************************************************************/ +/* */ +/* Tamper and backup register (TAMP) */ +/* */ +/******************************************************************************/ +/******************** Bits definition for TAMP_CR1 register *****************/ +#define TAMP_CR1_TAMP1E_Pos (0U) +#define TAMP_CR1_TAMP1E_Msk (0x1UL << TAMP_CR1_TAMP1E_Pos) /*!< 0x00000001 */ +#define TAMP_CR1_TAMP1E TAMP_CR1_TAMP1E_Msk +#define TAMP_CR1_TAMP2E_Pos (1U) +#define TAMP_CR1_TAMP2E_Msk (0x1UL << TAMP_CR1_TAMP2E_Pos) /*!< 0x00000002 */ +#define TAMP_CR1_TAMP2E TAMP_CR1_TAMP2E_Msk +#define TAMP_CR1_ITAMP3E_Pos (18U) +#define TAMP_CR1_ITAMP3E_Msk (0x1UL << TAMP_CR1_ITAMP3E_Pos) /*!< 0x00040000 */ +#define TAMP_CR1_ITAMP3E TAMP_CR1_ITAMP3E_Msk +#define TAMP_CR1_ITAMP4E_Pos (19U) +#define TAMP_CR1_ITAMP4E_Msk (0x1UL << TAMP_CR1_ITAMP4E_Pos) /*!< 0x00080000 */ +#define TAMP_CR1_ITAMP4E TAMP_CR1_ITAMP4E_Msk +#define TAMP_CR1_ITAMP5E_Pos (20U) +#define TAMP_CR1_ITAMP5E_Msk (0x1UL << TAMP_CR1_ITAMP5E_Pos) /*!< 0x00100000 */ +#define TAMP_CR1_ITAMP5E TAMP_CR1_ITAMP5E_Msk +#define TAMP_CR1_ITAMP6E_Pos (21U) +#define TAMP_CR1_ITAMP6E_Msk (0x1UL << TAMP_CR1_ITAMP6E_Pos) /*!< 0x00200000 */ +#define TAMP_CR1_ITAMP6E TAMP_CR1_ITAMP6E_Msk + +/******************** Bits definition for TAMP_CR2 register *****************/ +#define TAMP_CR2_TAMP1NOERASE_Pos (0U) +#define TAMP_CR2_TAMP1NOERASE_Msk (0x1UL << TAMP_CR2_TAMP1NOERASE_Pos) /*!< 0x00000001 */ +#define TAMP_CR2_TAMP1NOERASE TAMP_CR2_TAMP1NOERASE_Msk +#define TAMP_CR2_TAMP2NOERASE_Pos (1U) +#define TAMP_CR2_TAMP2NOERASE_Msk (0x1UL << TAMP_CR2_TAMP2NOERASE_Pos) /*!< 0x00000002 */ +#define TAMP_CR2_TAMP2NOERASE TAMP_CR2_TAMP2NOERASE_Msk +#define TAMP_CR2_TAMP1MSK_Pos (16U) +#define TAMP_CR2_TAMP1MSK_Msk (0x1UL << TAMP_CR2_TAMP1MSK_Pos) /*!< 0x00010000 */ +#define TAMP_CR2_TAMP1MSK TAMP_CR2_TAMP1MSK_Msk +#define TAMP_CR2_TAMP2MSK_Pos (17U) +#define TAMP_CR2_TAMP2MSK_Msk (0x1UL << TAMP_CR2_TAMP2MSK_Pos) /*!< 0x00020000 */ +#define TAMP_CR2_TAMP2MSK TAMP_CR2_TAMP2MSK_Msk +#define TAMP_CR2_TAMP1TRG_Pos (24U) +#define TAMP_CR2_TAMP1TRG_Msk (0x1UL << TAMP_CR2_TAMP1TRG_Pos) /*!< 0x01000000 */ +#define TAMP_CR2_TAMP1TRG TAMP_CR2_TAMP1TRG_Msk +#define TAMP_CR2_TAMP2TRG_Pos (25U) +#define TAMP_CR2_TAMP2TRG_Msk (0x1UL << TAMP_CR2_TAMP2TRG_Pos) /*!< 0x02000000 */ +#define TAMP_CR2_TAMP2TRG TAMP_CR2_TAMP2TRG_Msk + +/******************** Bits definition for TAMP_FLTCR register ***************/ +#define TAMP_FLTCR_TAMPFREQ_0 0x00000001U +#define TAMP_FLTCR_TAMPFREQ_1 0x00000002U +#define TAMP_FLTCR_TAMPFREQ_2 0x00000004U +#define TAMP_FLTCR_TAMPFREQ_Pos (0U) +#define TAMP_FLTCR_TAMPFREQ_Msk (0x7UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000007 */ +#define TAMP_FLTCR_TAMPFREQ TAMP_FLTCR_TAMPFREQ_Msk +#define TAMP_FLTCR_TAMPFLT_0 0x00000008U +#define TAMP_FLTCR_TAMPFLT_1 0x00000010U +#define TAMP_FLTCR_TAMPFLT_Pos (3U) +#define TAMP_FLTCR_TAMPFLT_Msk (0x3UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000018 */ +#define TAMP_FLTCR_TAMPFLT TAMP_FLTCR_TAMPFLT_Msk +#define TAMP_FLTCR_TAMPPRCH_0 0x00000020U +#define TAMP_FLTCR_TAMPPRCH_1 0x00000040U +#define TAMP_FLTCR_TAMPPRCH_Pos (5U) +#define TAMP_FLTCR_TAMPPRCH_Msk (0x3UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000060 */ +#define TAMP_FLTCR_TAMPPRCH TAMP_FLTCR_TAMPPRCH_Msk +#define TAMP_FLTCR_TAMPPUDIS_Pos (7U) +#define TAMP_FLTCR_TAMPPUDIS_Msk (0x1UL << TAMP_FLTCR_TAMPPUDIS_Pos) /*!< 0x00000080 */ +#define TAMP_FLTCR_TAMPPUDIS TAMP_FLTCR_TAMPPUDIS_Msk + +/******************** Bits definition for TAMP_IER register *****************/ +#define TAMP_IER_TAMP1IE_Pos (0U) +#define TAMP_IER_TAMP1IE_Msk (0x1UL << TAMP_IER_TAMP1IE_Pos) /*!< 0x00000001 */ +#define TAMP_IER_TAMP1IE TAMP_IER_TAMP1IE_Msk +#define TAMP_IER_TAMP2IE_Pos (1U) +#define TAMP_IER_TAMP2IE_Msk (0x1UL << TAMP_IER_TAMP2IE_Pos) /*!< 0x00000002 */ +#define TAMP_IER_TAMP2IE TAMP_IER_TAMP2IE_Msk +#define TAMP_IER_ITAMP3IE_Pos (18U) +#define TAMP_IER_ITAMP3IE_Msk (0x1UL << TAMP_IER_ITAMP3IE_Pos) /*!< 0x00040000 */ +#define TAMP_IER_ITAMP3IE TAMP_IER_ITAMP3IE_Msk +#define TAMP_IER_ITAMP4IE_Pos (19U) +#define TAMP_IER_ITAMP4IE_Msk (0x1UL << TAMP_IER_ITAMP4IE_Pos) /*!< 0x00080000 */ +#define TAMP_IER_ITAMP4IE TAMP_IER_ITAMP4IE_Msk +#define TAMP_IER_ITAMP5IE_Pos (20U) +#define TAMP_IER_ITAMP5IE_Msk (0x1UL << TAMP_IER_ITAMP5IE_Pos) /*!< 0x00100000 */ +#define TAMP_IER_ITAMP5IE TAMP_IER_ITAMP5IE_Msk +#define TAMP_IER_ITAMP6IE_Pos (21U) +#define TAMP_IER_ITAMP6IE_Msk (0x1UL << TAMP_IER_ITAMP6IE_Pos) /*!< 0x00200000 */ +#define TAMP_IER_ITAMP6IE TAMP_IER_ITAMP6IE_Msk + +/******************** Bits definition for TAMP_SR register ******************/ +#define TAMP_SR_TAMP1F_Pos (0U) +#define TAMP_SR_TAMP1F_Msk (0x1UL << TAMP_SR_TAMP1F_Pos) /*!< 0x00000001 */ +#define TAMP_SR_TAMP1F TAMP_SR_TAMP1F_Msk +#define TAMP_SR_TAMP2F_Pos (1U) +#define TAMP_SR_TAMP2F_Msk (0x1UL << TAMP_SR_TAMP2F_Pos) /*!< 0x00000002 */ +#define TAMP_SR_TAMP2F TAMP_SR_TAMP2F_Msk +#define TAMP_SR_ITAMP3F_Pos (18U) +#define TAMP_SR_ITAMP3F_Msk (0x1UL << TAMP_SR_ITAMP3F_Pos) /*!< 0x00040000 */ +#define TAMP_SR_ITAMP3F TAMP_SR_ITAMP3F_Msk +#define TAMP_SR_ITAMP4F_Pos (19U) +#define TAMP_SR_ITAMP4F_Msk (0x1UL << TAMP_SR_ITAMP4F_Pos) /*!< 0x00080000 */ +#define TAMP_SR_ITAMP4F TAMP_SR_ITAMP4F_Msk +#define TAMP_SR_ITAMP5F_Pos (20U) +#define TAMP_SR_ITAMP5F_Msk (0x1UL << TAMP_SR_ITAMP5F_Pos) /*!< 0x00100000 */ +#define TAMP_SR_ITAMP5F TAMP_SR_ITAMP5F_Msk +#define TAMP_SR_ITAMP6F_Pos (21U) +#define TAMP_SR_ITAMP6F_Msk (0x1UL << TAMP_SR_ITAMP6F_Pos) /*!< 0x00200000 */ +#define TAMP_SR_ITAMP6F TAMP_SR_ITAMP6F_Msk + +/******************** Bits definition for TAMP_MISR register ****************/ +#define TAMP_MISR_TAMP1MF_Pos (0U) +#define TAMP_MISR_TAMP1MF_Msk (0x1UL << TAMP_MISR_TAMP1MF_Pos) /*!< 0x00000001 */ +#define TAMP_MISR_TAMP1MF TAMP_MISR_TAMP1MF_Msk +#define TAMP_MISR_TAMP2MF_Pos (1U) +#define TAMP_MISR_TAMP2MF_Msk (0x1UL << TAMP_MISR_TAMP2MF_Pos) /*!< 0x00000002 */ +#define TAMP_MISR_TAMP2MF TAMP_MISR_TAMP2MF_Msk +#define TAMP_MISR_ITAMP3MF_Pos (18U) +#define TAMP_MISR_ITAMP3MF_Msk (0x1UL << TAMP_MISR_ITAMP3MF_Pos) /*!< 0x00040000 */ +#define TAMP_MISR_ITAMP3MF TAMP_MISR_ITAMP3MF_Msk +#define TAMP_MISR_ITAMP4MF_Pos (19U) +#define TAMP_MISR_ITAMP4MF_Msk (0x1UL << TAMP_MISR_ITAMP4MF_Pos) /*!< 0x00080000 */ +#define TAMP_MISR_ITAMP4MF TAMP_MISR_ITAMP4MF_Msk +#define TAMP_MISR_ITAMP5MF_Pos (20U) +#define TAMP_MISR_ITAMP5MF_Msk (0x1UL << TAMP_MISR_ITAMP5MF_Pos) /*!< 0x00100000 */ +#define TAMP_MISR_ITAMP5MF TAMP_MISR_ITAMP5MF_Msk +#define TAMP_MISR_ITAMP6MF_Pos (21U) +#define TAMP_MISR_ITAMP6MF_Msk (0x1UL << TAMP_MISR_ITAMP6MF_Pos) /*!< 0x00200000 */ +#define TAMP_MISR_ITAMP6MF TAMP_MISR_ITAMP6MF_Msk + +/******************** Bits definition for TAMP_SCR register *****************/ +#define TAMP_SCR_CTAMP1F_Pos (0U) +#define TAMP_SCR_CTAMP1F_Msk (0x1UL << TAMP_SCR_CTAMP1F_Pos) /*!< 0x00000001 */ +#define TAMP_SCR_CTAMP1F TAMP_SCR_CTAMP1F_Msk +#define TAMP_SCR_CTAMP2F_Pos (1U) +#define TAMP_SCR_CTAMP2F_Msk (0x1UL << TAMP_SCR_CTAMP2F_Pos) /*!< 0x00000002 */ +#define TAMP_SCR_CTAMP2F TAMP_SCR_CTAMP2F_Msk +#define TAMP_SCR_CITAMP3F_Pos (18U) +#define TAMP_SCR_CITAMP3F_Msk (0x1UL << TAMP_SCR_CITAMP3F_Pos) /*!< 0x00040000 */ +#define TAMP_SCR_CITAMP3F TAMP_SCR_CITAMP3F_Msk +#define TAMP_SCR_CITAMP4F_Pos (19U) +#define TAMP_SCR_CITAMP4F_Msk (0x1UL << TAMP_SCR_CITAMP4F_Pos) /*!< 0x00080000 */ +#define TAMP_SCR_CITAMP4F TAMP_SCR_CITAMP4F_Msk +#define TAMP_SCR_CITAMP5F_Pos (20U) +#define TAMP_SCR_CITAMP5F_Msk (0x1UL << TAMP_SCR_CITAMP5F_Pos) /*!< 0x00100000 */ +#define TAMP_SCR_CITAMP5F TAMP_SCR_CITAMP5F_Msk +#define TAMP_SCR_CITAMP6F_Pos (21U) +#define TAMP_SCR_CITAMP6F_Msk (0x1UL << TAMP_SCR_CITAMP6F_Pos) /*!< 0x00200000 */ +#define TAMP_SCR_CITAMP6F TAMP_SCR_CITAMP6F_Msk + +/******************** Bits definition for TAMP_BKP0R register ***************/ +#define TAMP_BKP0R_Pos (0U) +#define TAMP_BKP0R_Msk (0xFFFFFFFFUL << TAMP_BKP0R_Pos) /*!< 0xFFFFFFFF */ +#define TAMP_BKP0R TAMP_BKP0R_Msk + +/******************** Bits definition for TAMP_BKP1R register ***************/ +#define TAMP_BKP1R_Pos (0U) +#define TAMP_BKP1R_Msk (0xFFFFFFFFUL << TAMP_BKP1R_Pos) /*!< 0xFFFFFFFF */ +#define TAMP_BKP1R TAMP_BKP1R_Msk + +/******************** Bits definition for TAMP_BKP2R register ***************/ +#define TAMP_BKP2R_Pos (0U) +#define TAMP_BKP2R_Msk (0xFFFFFFFFUL << TAMP_BKP2R_Pos) /*!< 0xFFFFFFFF */ +#define TAMP_BKP2R TAMP_BKP2R_Msk + +/******************** Bits definition for TAMP_BKP3R register ***************/ +#define TAMP_BKP3R_Pos (0U) +#define TAMP_BKP3R_Msk (0xFFFFFFFFUL << TAMP_BKP3R_Pos) /*!< 0xFFFFFFFF */ +#define TAMP_BKP3R TAMP_BKP3R_Msk + +/******************** Bits definition for TAMP_BKP4R register ***************/ +#define TAMP_BKP4R_Pos (0U) +#define TAMP_BKP4R_Msk (0xFFFFFFFFUL << TAMP_BKP4R_Pos) /*!< 0xFFFFFFFF */ +#define TAMP_BKP4R TAMP_BKP4R_Msk + +/******************************************************************************/ +/* */ +/* Serial Peripheral Interface (SPI) */ +/* */ +/******************************************************************************/ +/* + * @brief Specific device feature definitions (not present on all devices in the STM32G0 series) + */ +#define SPI_I2S_SUPPORT /*!< I2S support */ + +/******************* Bit definition for SPI_CR1 register ********************/ +#define SPI_CR1_CPHA_Pos (0U) +#define SPI_CR1_CPHA_Msk (0x1UL << SPI_CR1_CPHA_Pos) /*!< 0x00000001 */ +#define SPI_CR1_CPHA SPI_CR1_CPHA_Msk /*! exti[21] interrupt */ +#define SYSCFG_ITLINE2_SR_RTC_Pos (1U) +#define SYSCFG_ITLINE2_SR_RTC_Msk (0x1UL << SYSCFG_ITLINE2_SR_RTC_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE2_SR_RTC SYSCFG_ITLINE2_SR_RTC_Msk /*!< RTC -> exti[19] interrupt .... */ +#define SYSCFG_ITLINE3_SR_FLASH_ECC_Pos (0U) +#define SYSCFG_ITLINE3_SR_FLASH_ECC_Msk (0x1UL << SYSCFG_ITLINE3_SR_FLASH_ECC_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE3_SR_FLASH_ECC SYSCFG_ITLINE3_SR_FLASH_ECC_Msk /*!< Flash ITF ECC interrupt */ +#define SYSCFG_ITLINE3_SR_FLASH_ITF_Pos (1U) +#define SYSCFG_ITLINE3_SR_FLASH_ITF_Msk (0x1UL << SYSCFG_ITLINE3_SR_FLASH_ITF_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE3_SR_FLASH_ITF SYSCFG_ITLINE3_SR_FLASH_ITF_Msk /*!< FLASH ITF interrupt */ +#define SYSCFG_ITLINE4_SR_CLK_CTRL_Pos (0U) +#define SYSCFG_ITLINE4_SR_CLK_CTRL_Msk (0x1UL << SYSCFG_ITLINE4_SR_CLK_CTRL_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE4_SR_CLK_CTRL SYSCFG_ITLINE4_SR_CLK_CTRL_Msk /*!< RCC interrupt */ +#define SYSCFG_ITLINE5_SR_EXTI0_Pos (0U) +#define SYSCFG_ITLINE5_SR_EXTI0_Msk (0x1UL << SYSCFG_ITLINE5_SR_EXTI0_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE5_SR_EXTI0 SYSCFG_ITLINE5_SR_EXTI0_Msk /*!< External Interrupt 0 */ +#define SYSCFG_ITLINE5_SR_EXTI1_Pos (1U) +#define SYSCFG_ITLINE5_SR_EXTI1_Msk (0x1UL << SYSCFG_ITLINE5_SR_EXTI1_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE5_SR_EXTI1 SYSCFG_ITLINE5_SR_EXTI1_Msk /*!< External Interrupt 1 */ +#define SYSCFG_ITLINE6_SR_EXTI2_Pos (0U) +#define SYSCFG_ITLINE6_SR_EXTI2_Msk (0x1UL << SYSCFG_ITLINE6_SR_EXTI2_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE6_SR_EXTI2 SYSCFG_ITLINE6_SR_EXTI2_Msk /*!< External Interrupt 2 */ +#define SYSCFG_ITLINE6_SR_EXTI3_Pos (1U) +#define SYSCFG_ITLINE6_SR_EXTI3_Msk (0x1UL << SYSCFG_ITLINE6_SR_EXTI3_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE6_SR_EXTI3 SYSCFG_ITLINE6_SR_EXTI3_Msk /*!< External Interrupt 3 */ +#define SYSCFG_ITLINE7_SR_EXTI4_Pos (0U) +#define SYSCFG_ITLINE7_SR_EXTI4_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI4_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE7_SR_EXTI4 SYSCFG_ITLINE7_SR_EXTI4_Msk /*!< External Interrupt 4 */ +#define SYSCFG_ITLINE7_SR_EXTI5_Pos (1U) +#define SYSCFG_ITLINE7_SR_EXTI5_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI5_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE7_SR_EXTI5 SYSCFG_ITLINE7_SR_EXTI5_Msk /*!< External Interrupt 5 */ +#define SYSCFG_ITLINE7_SR_EXTI6_Pos (2U) +#define SYSCFG_ITLINE7_SR_EXTI6_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI6_Pos) /*!< 0x00000004 */ +#define SYSCFG_ITLINE7_SR_EXTI6 SYSCFG_ITLINE7_SR_EXTI6_Msk /*!< External Interrupt 6 */ +#define SYSCFG_ITLINE7_SR_EXTI7_Pos (3U) +#define SYSCFG_ITLINE7_SR_EXTI7_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI7_Pos) /*!< 0x00000008 */ +#define SYSCFG_ITLINE7_SR_EXTI7 SYSCFG_ITLINE7_SR_EXTI7_Msk /*!< External Interrupt 7 */ +#define SYSCFG_ITLINE7_SR_EXTI8_Pos (4U) +#define SYSCFG_ITLINE7_SR_EXTI8_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI8_Pos) /*!< 0x00000010 */ +#define SYSCFG_ITLINE7_SR_EXTI8 SYSCFG_ITLINE7_SR_EXTI8_Msk /*!< External Interrupt 8 */ +#define SYSCFG_ITLINE7_SR_EXTI9_Pos (5U) +#define SYSCFG_ITLINE7_SR_EXTI9_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI9_Pos) /*!< 0x00000020 */ +#define SYSCFG_ITLINE7_SR_EXTI9 SYSCFG_ITLINE7_SR_EXTI9_Msk /*!< External Interrupt 9 */ +#define SYSCFG_ITLINE7_SR_EXTI10_Pos (6U) +#define SYSCFG_ITLINE7_SR_EXTI10_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI10_Pos) /*!< 0x00000040 */ +#define SYSCFG_ITLINE7_SR_EXTI10 SYSCFG_ITLINE7_SR_EXTI10_Msk /*!< External Interrupt 10 */ +#define SYSCFG_ITLINE7_SR_EXTI11_Pos (7U) +#define SYSCFG_ITLINE7_SR_EXTI11_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI11_Pos) /*!< 0x00000080 */ +#define SYSCFG_ITLINE7_SR_EXTI11 SYSCFG_ITLINE7_SR_EXTI11_Msk /*!< External Interrupt 11 */ +#define SYSCFG_ITLINE7_SR_EXTI12_Pos (8U) +#define SYSCFG_ITLINE7_SR_EXTI12_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI12_Pos) /*!< 0x00000100 */ +#define SYSCFG_ITLINE7_SR_EXTI12 SYSCFG_ITLINE7_SR_EXTI12_Msk /*!< External Interrupt 12 */ +#define SYSCFG_ITLINE7_SR_EXTI13_Pos (9U) +#define SYSCFG_ITLINE7_SR_EXTI13_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI13_Pos) /*!< 0x00000200 */ +#define SYSCFG_ITLINE7_SR_EXTI13 SYSCFG_ITLINE7_SR_EXTI13_Msk /*!< External Interrupt 13 */ +#define SYSCFG_ITLINE7_SR_EXTI14_Pos (10U) +#define SYSCFG_ITLINE7_SR_EXTI14_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI14_Pos) /*!< 0x00000400 */ +#define SYSCFG_ITLINE7_SR_EXTI14 SYSCFG_ITLINE7_SR_EXTI14_Msk /*!< External Interrupt 14 */ +#define SYSCFG_ITLINE7_SR_EXTI15_Pos (11U) +#define SYSCFG_ITLINE7_SR_EXTI15_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI15_Pos) /*!< 0x00000800 */ +#define SYSCFG_ITLINE7_SR_EXTI15 SYSCFG_ITLINE7_SR_EXTI15_Msk /*!< External Interrupt 15 */ +#define SYSCFG_ITLINE9_SR_DMA1_CH1_Pos (0U) +#define SYSCFG_ITLINE9_SR_DMA1_CH1_Msk (0x1UL << SYSCFG_ITLINE9_SR_DMA1_CH1_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE9_SR_DMA1_CH1 SYSCFG_ITLINE9_SR_DMA1_CH1_Msk /*!< DMA1 Channel 1 Interrupt */ +#define SYSCFG_ITLINE10_SR_DMA1_CH2_Pos (0U) +#define SYSCFG_ITLINE10_SR_DMA1_CH2_Msk (0x1UL << SYSCFG_ITLINE10_SR_DMA1_CH2_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE10_SR_DMA1_CH2 SYSCFG_ITLINE10_SR_DMA1_CH2_Msk /*!< DMA1 Channel 2 Interrupt */ +#define SYSCFG_ITLINE10_SR_DMA1_CH3_Pos (1U) +#define SYSCFG_ITLINE10_SR_DMA1_CH3_Msk (0x1UL << SYSCFG_ITLINE10_SR_DMA1_CH3_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE10_SR_DMA1_CH3 SYSCFG_ITLINE10_SR_DMA1_CH3_Msk /*!< DMA2 Channel 3 Interrupt */ +#define SYSCFG_ITLINE11_SR_DMAMUX1_Pos (0U) +#define SYSCFG_ITLINE11_SR_DMAMUX1_Msk (0x1UL << SYSCFG_ITLINE11_SR_DMAMUX1_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE11_SR_DMAMUX1 SYSCFG_ITLINE11_SR_DMAMUX1_Msk /*!< DMAMUX Interrupt */ +#define SYSCFG_ITLINE11_SR_DMA1_CH4_Pos (1U) +#define SYSCFG_ITLINE11_SR_DMA1_CH4_Msk (0x1UL << SYSCFG_ITLINE11_SR_DMA1_CH4_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE11_SR_DMA1_CH4 SYSCFG_ITLINE11_SR_DMA1_CH4_Msk /*!< DMA1 Channel 4 Interrupt */ +#define SYSCFG_ITLINE11_SR_DMA1_CH5_Pos (2U) +#define SYSCFG_ITLINE11_SR_DMA1_CH5_Msk (0x1UL << SYSCFG_ITLINE11_SR_DMA1_CH5_Pos) /*!< 0x00000004 */ +#define SYSCFG_ITLINE11_SR_DMA1_CH5 SYSCFG_ITLINE11_SR_DMA1_CH5_Msk /*!< DMA1 Channel 5 Interrupt */ +#define SYSCFG_ITLINE12_SR_ADC_Pos (0U) +#define SYSCFG_ITLINE12_SR_ADC_Msk (0x1UL << SYSCFG_ITLINE12_SR_ADC_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE12_SR_ADC SYSCFG_ITLINE12_SR_ADC_Msk /*!< ADC Interrupt */ +#define SYSCFG_ITLINE13_SR_TIM1_CCU_Pos (0U) +#define SYSCFG_ITLINE13_SR_TIM1_CCU_Msk (0x1UL << SYSCFG_ITLINE13_SR_TIM1_CCU_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE13_SR_TIM1_CCU SYSCFG_ITLINE13_SR_TIM1_CCU_Msk /*!< TIM1 CCU Interrupt */ +#define SYSCFG_ITLINE13_SR_TIM1_TRG_Pos (1U) +#define SYSCFG_ITLINE13_SR_TIM1_TRG_Msk (0x1UL << SYSCFG_ITLINE13_SR_TIM1_TRG_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE13_SR_TIM1_TRG SYSCFG_ITLINE13_SR_TIM1_TRG_Msk /*!< TIM1 TRG Interrupt */ +#define SYSCFG_ITLINE13_SR_TIM1_UPD_Pos (2U) +#define SYSCFG_ITLINE13_SR_TIM1_UPD_Msk (0x1UL << SYSCFG_ITLINE13_SR_TIM1_UPD_Pos) /*!< 0x00000004 */ +#define SYSCFG_ITLINE13_SR_TIM1_UPD SYSCFG_ITLINE13_SR_TIM1_UPD_Msk /*!< TIM1 UPD Interrupt */ +#define SYSCFG_ITLINE13_SR_TIM1_BRK_Pos (3U) +#define SYSCFG_ITLINE13_SR_TIM1_BRK_Msk (0x1UL << SYSCFG_ITLINE13_SR_TIM1_BRK_Pos) /*!< 0x00000008 */ +#define SYSCFG_ITLINE13_SR_TIM1_BRK SYSCFG_ITLINE13_SR_TIM1_BRK_Msk /*!< TIM1 BRK Interrupt */ +#define SYSCFG_ITLINE14_SR_TIM1_CC_Pos (0U) +#define SYSCFG_ITLINE14_SR_TIM1_CC_Msk (0x1UL << SYSCFG_ITLINE14_SR_TIM1_CC_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE14_SR_TIM1_CC SYSCFG_ITLINE14_SR_TIM1_CC_Msk /*!< TIM1 CC Interrupt */ +#define SYSCFG_ITLINE16_SR_TIM3_GLB_Pos (0U) +#define SYSCFG_ITLINE16_SR_TIM3_GLB_Msk (0x1UL << SYSCFG_ITLINE16_SR_TIM3_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE16_SR_TIM3_GLB SYSCFG_ITLINE16_SR_TIM3_GLB_Msk /*!< TIM3 GLB Interrupt */ +#define SYSCFG_ITLINE19_SR_TIM14_GLB_Pos (0U) +#define SYSCFG_ITLINE19_SR_TIM14_GLB_Msk (0x1UL << SYSCFG_ITLINE19_SR_TIM14_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE19_SR_TIM14_GLB SYSCFG_ITLINE19_SR_TIM14_GLB_Msk /*!< TIM14 GLB Interrupt */ +#define SYSCFG_ITLINE21_SR_TIM16_GLB_Pos (0U) +#define SYSCFG_ITLINE21_SR_TIM16_GLB_Msk (0x1UL << SYSCFG_ITLINE21_SR_TIM16_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE21_SR_TIM16_GLB SYSCFG_ITLINE21_SR_TIM16_GLB_Msk /*!< TIM16 GLB Interrupt */ +#define SYSCFG_ITLINE22_SR_TIM17_GLB_Pos (0U) +#define SYSCFG_ITLINE22_SR_TIM17_GLB_Msk (0x1UL << SYSCFG_ITLINE22_SR_TIM17_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE22_SR_TIM17_GLB SYSCFG_ITLINE22_SR_TIM17_GLB_Msk /*!< TIM17 GLB Interrupt */ +#define SYSCFG_ITLINE23_SR_I2C1_GLB_Pos (0U) +#define SYSCFG_ITLINE23_SR_I2C1_GLB_Msk (0x1UL << SYSCFG_ITLINE23_SR_I2C1_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE23_SR_I2C1_GLB SYSCFG_ITLINE23_SR_I2C1_GLB_Msk /*!< I2C1 GLB Interrupt -> exti[23] */ +#define SYSCFG_ITLINE24_SR_I2C2_GLB_Pos (0U) +#define SYSCFG_ITLINE24_SR_I2C2_GLB_Msk (0x1UL << SYSCFG_ITLINE24_SR_I2C2_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE24_SR_I2C2_GLB SYSCFG_ITLINE24_SR_I2C2_GLB_Msk /*!< I2C2 GLB Interrupt -> exti[22]*/ +#define SYSCFG_ITLINE25_SR_SPI1_Pos (0U) +#define SYSCFG_ITLINE25_SR_SPI1_Msk (0x1UL << SYSCFG_ITLINE25_SR_SPI1_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE25_SR_SPI1 SYSCFG_ITLINE25_SR_SPI1_Msk /*!< SPI1 Interrupt */ +#define SYSCFG_ITLINE26_SR_SPI2_Pos (0U) +#define SYSCFG_ITLINE26_SR_SPI2_Msk (0x1UL << SYSCFG_ITLINE26_SR_SPI2_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE26_SR_SPI2 SYSCFG_ITLINE26_SR_SPI2_Msk /*!< SPI2 Interrupt */ +#define SYSCFG_ITLINE27_SR_USART1_GLB_Pos (0U) +#define SYSCFG_ITLINE27_SR_USART1_GLB_Msk (0x1UL << SYSCFG_ITLINE27_SR_USART1_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE27_SR_USART1_GLB SYSCFG_ITLINE27_SR_USART1_GLB_Msk /*!< USART1 GLB Interrupt -> exti[25] */ +#define SYSCFG_ITLINE28_SR_USART2_GLB_Pos (0U) +#define SYSCFG_ITLINE28_SR_USART2_GLB_Msk (0x1UL << SYSCFG_ITLINE28_SR_USART2_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE28_SR_USART2_GLB SYSCFG_ITLINE28_SR_USART2_GLB_Msk /*!< USART2 GLB Interrupt -> exti[26] */ + +/******************************************************************************/ +/* */ +/* TIM */ +/* */ +/******************************************************************************/ +/******************* Bit definition for TIM_CR1 register ********************/ +#define TIM_CR1_CEN_Pos (0U) +#define TIM_CR1_CEN_Msk (0x1UL << TIM_CR1_CEN_Pos) /*!< 0x00000001 */ +#define TIM_CR1_CEN TIM_CR1_CEN_Msk /*! rom + + .startup : { + . = ALIGN(4); + *(.text.Reset_Handler) + . = ALIGN(4); + } > rom + + .text : { + _sitext = LOADADDR(.text); + . = ALIGN(4); + _stext = .; + *(.text) + *(.text*) + *(.glue_7) + *(.glue_7t) + . = ALIGN(4); + _etext = .; + } > ram AT > rom + + .bss : { + . = ALIGN(4); + _sbss = .; + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + . = ALIGN(4); + _ebss = .; + __bss_end__ = _ebss; + } > ram + + .data : { + _sidata = LOADADDR(.data); + . = ALIGN(4); + _sdata = .; + *(.data) + *(.data*) + . = ALIGN(4); + _edata = .; + } > ram AT > rom + + .rodata : { + _sirodata = LOADADDR(.rodata); + . = ALIGN(4); + _srodata = .; + *(.rodata) + *(.rodata*) + . = ALIGN(4); + _erodata = .; + } > ram AT > rom + + _app_header = ORIGIN(rom) + LENGTH(rom); + _app_magic = _app_header + 16; + _estack = ORIGIN(ram) + LENGTH(ram); +} diff --git a/sw/controller/loader.mk b/sw/controller/loader.mk new file mode 100644 index 0000000..32917db --- /dev/null +++ b/sw/controller/loader.mk @@ -0,0 +1,14 @@ +EXE_NAME = loader +LD_SCRIPT = loader.ld +BUILD_DIR = build/loader +SRC_FILES = \ + loader.S \ + flash.c \ + fpga.c \ + hw.c \ + lcmxo2.c \ + loader.c \ + update.c +PAD_TO = 0x08001000 + +include common.mk diff --git a/sw/controller/src/app.S b/sw/controller/src/app.S new file mode 100644 index 0000000..2c524e0 --- /dev/null +++ b/sw/controller/src/app.S @@ -0,0 +1,164 @@ +.syntax unified +.cpu cortex-m0plus +.fpu softvfp +.thumb + +.section .loader, "a", %progbits +.type g_pfnVectors, %object +loader: + .incbin "../build/loader/loader.bin" + + +.section .text.Reset_Handler +.type Reset_Handler, %function +Reset_Handler: + .global Reset_Handler + cpsid i + +init_data: + ldr r0, =_sdata + ldr r1, =_edata + ldr r2, =_sidata + movs r3, #0 + b 2f +1: + ldr r4, [r2, r3] + str r4, [r0, r3] + adds r3, r3, #4 +2: + adds r4, r0, r3 + cmp r4, r1 + bcc 1b + +init_bss: + ldr r2, =_sbss + ldr r4, =_ebss + movs r3, #0 + b 2f +1: + str r3, [r2] + adds r2, r2, #4 +2: + cmp r2, r4 + bcc 1b + +run: + bl app + +loop: + b loop + + +.section .text.Default_Handler, "ax", %progbits +Default_Handler: + .global Default_Handler + b Default_Handler + + +.section .isr_vector, "a", %progbits +.type g_pfnVectors, %object +g_pfnVectors: + .global g_pfnVectors + .word _estack + .word Reset_Handler + .word NMI_Handler + .word HardFault_Handler + .word 0x34364353 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word SVC_Handler + .word 0 + .word 0 + .word PendSV_Handler + .word SysTick_Handler + .word WWDG_IRQHandler + .word 0 + .word RTC_TAMP_IRQHandler + .word FLASH_IRQHandler + .word RCC_IRQHandler + .word EXTI0_1_IRQHandler + .word EXTI2_3_IRQHandler + .word EXTI4_15_IRQHandler + .word 0 + .word DMA1_Channel1_IRQHandler + .word DMA1_Channel2_3_IRQHandler + .word DMA1_Ch4_5_DMAMUX1_OVR_IRQHandler + .word ADC1_IRQHandler + .word TIM1_BRK_UP_TRG_COM_IRQHandler + .word TIM1_CC_IRQHandler + .word 0 + .word TIM3_IRQHandler + .word 0 + .word 0 + .word TIM14_IRQHandler + .word 0 + .word TIM16_IRQHandler + .word TIM17_IRQHandler + .word I2C1_IRQHandler + .word I2C2_IRQHandler + .word SPI1_IRQHandler + .word SPI2_IRQHandler + .word USART1_IRQHandler + .word USART2_IRQHandler + .word 0 + + .weak NMI_Handler + .thumb_set NMI_Handler, Default_Handler + .weak HardFault_Handler + .thumb_set HardFault_Handler, Default_Handler + .weak SVC_Handler + .thumb_set SVC_Handler, Default_Handler + .weak PendSV_Handler + .thumb_set PendSV_Handler, Default_Handler + .weak SysTick_Handler + .thumb_set SysTick_Handler, Default_Handler + .weak WWDG_IRQHandler + .thumb_set WWDG_IRQHandler, Default_Handler + .weak RTC_TAMP_IRQHandler + .thumb_set RTC_TAMP_IRQHandler, Default_Handler + .weak FLASH_IRQHandler + .thumb_set FLASH_IRQHandler, Default_Handler + .weak RCC_IRQHandler + .thumb_set RCC_IRQHandler, Default_Handler + .weak EXTI0_1_IRQHandler + .thumb_set EXTI0_1_IRQHandler, Default_Handler + .weak EXTI2_3_IRQHandler + .thumb_set EXTI2_3_IRQHandler, Default_Handler + .weak EXTI4_15_IRQHandler + .thumb_set EXTI4_15_IRQHandler, Default_Handler + .weak DMA1_Channel1_IRQHandler + .thumb_set DMA1_Channel1_IRQHandler, Default_Handler + .weak DMA1_Channel2_3_IRQHandler + .thumb_set DMA1_Channel2_3_IRQHandler, Default_Handler + .weak DMA1_Ch4_5_DMAMUX1_OVR_IRQHandler + .thumb_set DMA1_Ch4_5_DMAMUX1_OVR_IRQHandler, Default_Handler + .weak ADC1_IRQHandler + .thumb_set ADC1_IRQHandler, Default_Handler + .weak TIM1_BRK_UP_TRG_COM_IRQHandler + .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler, Default_Handler + .weak TIM1_CC_IRQHandler + .thumb_set TIM1_CC_IRQHandler, Default_Handler + .weak TIM3_IRQHandler + .thumb_set TIM3_IRQHandler, Default_Handler + .weak TIM14_IRQHandler + .thumb_set TIM14_IRQHandler, Default_Handler + .weak TIM16_IRQHandler + .thumb_set TIM16_IRQHandler, Default_Handler + .weak TIM17_IRQHandler + .thumb_set TIM17_IRQHandler, Default_Handler + .weak I2C1_IRQHandler + .thumb_set I2C1_IRQHandler, Default_Handler + .weak I2C2_IRQHandler + .thumb_set I2C2_IRQHandler, Default_Handler + .weak SPI1_IRQHandler + .thumb_set SPI1_IRQHandler, Default_Handler + .weak SPI2_IRQHandler + .thumb_set SPI2_IRQHandler, Default_Handler + .weak USART1_IRQHandler + .thumb_set USART1_IRQHandler, Default_Handler + .weak USART2_IRQHandler + .thumb_set USART2_IRQHandler, Default_Handler diff --git a/sw/controller/src/app.c b/sw/controller/src/app.c new file mode 100644 index 0000000..9bceeb5 --- /dev/null +++ b/sw/controller/src/app.c @@ -0,0 +1,32 @@ +#include +#include "cic.h" +#include "gvr.h" +#include "hw.h" +#include "led.h" +#include "rtc.h" +#include "task.h" + + +#define CIC_STACK_SIZE (256) +#define RTC_STACK_SIZE (256) +#define LED_STACK_SIZE (256) +#define GVR_STACK_SIZE (2048) + + +uint8_t cic_stack[CIC_STACK_SIZE] __attribute__((aligned(8))); +uint8_t rtc_stack[RTC_STACK_SIZE] __attribute__((aligned(8))); +uint8_t led_stack[LED_STACK_SIZE] __attribute__((aligned(8))); +uint8_t gvr_stack[GVR_STACK_SIZE] __attribute__((aligned(8))); + + +void app (void) { + hw_init(); + cic_hw_init(); + + task_create(TASK_ID_CIC, cic_task, cic_stack, CIC_STACK_SIZE); + task_create(TASK_ID_RTC, rtc_task, rtc_stack, RTC_STACK_SIZE); + task_create(TASK_ID_LED, led_task, led_stack, LED_STACK_SIZE); + task_create(TASK_ID_GVR, gvr_task, gvr_stack, GVR_STACK_SIZE); + + task_scheduler_start(); +} diff --git a/sw/controller/src/button.c b/sw/controller/src/button.c new file mode 100644 index 0000000..1c10b30 --- /dev/null +++ b/sw/controller/src/button.c @@ -0,0 +1,92 @@ +#include +#include "button.h" +#include "dd.h" +#include "fpga.h" +#include "usb.h" + + +#define BUTTON_COUNTER_TRIGGER_ON (64) +#define BUTTON_COUNTER_TRIGGER_OFF (0) + + +struct process { + uint8_t counter; + bool state; + button_mode_t mode; + bool trigger; +}; + + +static struct process p; + + +bool button_get_state (void) { + return p.state; +} + +bool button_set_mode (button_mode_t mode) { + if (mode > BUTTON_MODE_DD_DISK_SWAP) { + return true; + } + p.mode = mode; + if (p.mode == BUTTON_MODE_NONE) { + p.trigger = false; + } + return false; +} + +button_mode_t button_get_mode (void) { + return p.mode; +} + +void button_init (void) { + p.counter = 0; + p.state = false; + p.mode = BUTTON_MODE_NONE; + p.trigger = false; +} + +void button_process (void) { + usb_tx_info_t packet_info; + uint32_t status = fpga_reg_get(REG_CFG_SCR); + if (status & CFG_SCR_BUTTON_STATE) { + if (p.counter < BUTTON_COUNTER_TRIGGER_ON) { + p.counter += 1; + } + } else { + if (p.counter > BUTTON_COUNTER_TRIGGER_OFF) { + p.counter -= 1; + } + } + if (!p.state && p.counter == BUTTON_COUNTER_TRIGGER_ON) { + p.state = true; + p.trigger = true; + } + if (p.state && p.counter == BUTTON_COUNTER_TRIGGER_OFF) { + p.state = false; + } + if (p.trigger) { + switch (p.mode) { + case BUTTON_MODE_N64_IRQ: + fpga_reg_set(REG_CFG_CMD, CFG_CMD_IRQ); + p.trigger = false; + break; + + case BUTTON_MODE_USB_PACKET: + usb_create_packet(&packet_info, PACKET_CMD_BUTTON_TRIGGER); + if (usb_enqueue_packet(&packet_info)) { + p.trigger = false; + } + break; + + case BUTTON_MODE_DD_DISK_SWAP: + dd_handle_button(); + p.trigger = false; + break; + + default: + p.trigger = false; + break; + } + } +} diff --git a/sw/controller/src/button.h b/sw/controller/src/button.h new file mode 100644 index 0000000..3c41913 --- /dev/null +++ b/sw/controller/src/button.h @@ -0,0 +1,23 @@ +#ifndef BUTTON_H__ +#define BUTTON_H__ + + +#include + + +typedef enum { + BUTTON_MODE_NONE, + BUTTON_MODE_N64_IRQ, + BUTTON_MODE_USB_PACKET, + BUTTON_MODE_DD_DISK_SWAP, +} button_mode_t; + + +bool button_get_state (void); +bool button_set_mode (button_mode_t mode); +button_mode_t button_get_mode (void); +void button_init (void); +void button_process (void); + + +#endif diff --git a/sw/controller/src/cfg.c b/sw/controller/src/cfg.c new file mode 100644 index 0000000..8481e84 --- /dev/null +++ b/sw/controller/src/cfg.c @@ -0,0 +1,585 @@ +#include "button.h" +#include "cfg.h" +#include "dd.h" +#include "flash.h" +#include "fpga.h" +#include "isv.h" +#include "rtc.h" +#include "sd.h" +#include "usb.h" + + +typedef enum { + CFG_ID_BOOTLOADER_SWITCH, + CFG_ID_ROM_WRITE_ENABLE, + CFG_ID_ROM_SHADOW_ENABLE, + CFG_ID_DD_MODE, + CFG_ID_ISV_ADDRESS, + CFG_ID_BOOT_MODE, + CFG_ID_SAVE_TYPE, + CFG_ID_CIC_SEED, + CFG_ID_TV_TYPE, + CFG_ID_DD_SD_ENABLE, + CFG_ID_DD_DRIVE_TYPE, + CFG_ID_DD_DISK_STATE, + CFG_ID_BUTTON_STATE, + CFG_ID_BUTTON_MODE, + CFG_ID_ROM_EXTENDED_ENABLE, +} cfg_id_t; + +typedef enum { + DD_MODE_DISABLED = 0, + DD_MODE_REGS = 1, + DD_MODE_IPL = 2, + DD_MODE_FULL = 3 +} dd_mode_t; + +typedef enum { + BOOT_MODE_MENU = 0, + BOOT_MODE_ROM = 1, + BOOT_MODE_DD = 2, + BOOT_MODE_DIRECT = 3 +} boot_mode_t; + +typedef enum { + SAVE_TYPE_NONE = 0, + SAVE_TYPE_EEPROM_4K = 1, + SAVE_TYPE_EEPROM_16K = 2, + SAVE_TYPE_SRAM = 3, + SAVE_TYPE_FLASHRAM = 4, + SAVE_TYPE_SRAM_BANKED = 5 +} save_type_t; + +typedef enum { + CIC_SEED_UNKNOWN = 0xFFFF +} cic_seed_t; + +typedef enum { + TV_TYPE_PAL = 0, + TV_TYPE_NTSC = 1, + TV_TYPE_MPAL = 2, + TV_TYPE_UNKNOWN = 3 +} tv_type_t; + +typedef enum { + CFG_ERROR_OK = 0, + CFG_ERROR_BAD_ARGUMENT = 1, + CFG_ERROR_BAD_ADDRESS = 2, + CFG_ERROR_BAD_CONFIG_ID = 3, + CFG_ERROR_TIMEOUT = 4, + CFG_ERROR_SD_CARD = 5, + CFG_ERROR_UNKNOWN_CMD = -1, +} cfg_error_t; + +typedef enum { + SD_CARD_OP_DEINIT = 0, + SD_CARD_OP_INIT = 1, + SD_CARD_OP_GET_STATUS = 2, + SD_CARD_OP_GET_INFO = 3, +} sd_card_op_t; + +typedef enum { + SDRAM = (1 << 0), + FLASH = (1 << 1), + BRAM = (1 << 2), +} translate_type_t; + + +struct process { + boot_mode_t boot_mode; + save_type_t save_type; + cic_seed_t cic_seed; + tv_type_t tv_type; + bool usb_output_ready; + uint32_t sd_card_sector; +}; + + +static struct process p; + + +static void cfg_set_usb_output_ready (void) { + p.usb_output_ready = true; +} + +static bool cfg_translate_address (uint32_t *address, uint32_t length, translate_type_t type) { + if (length == 0) { + return true; + } + *address &= 0x1FFFFFFF; + if (type & SDRAM) { + if (*address >= 0x06000000 && *address < 0x06400000) { + if ((*address + length) <= 0x06400000) { + *address = *address - 0x06000000 + 0x03BC0000; + return false; + } + } + if (*address >= 0x08000000 && *address < 0x08020000) { + if ((*address + length) <= 0x08020000) { + *address = *address - 0x08000000 + 0x03FE0000; + return false; + } + } + if (*address >= 0x10000000 && *address < 0x14000000) { + if ((*address + length) <= 0x14000000) { + *address = *address - 0x10000000 + 0x00000000; + return false; + } + } + } + if (type & FLASH) { + if (*address >= 0x14000000 && *address < 0x14E00000) { + if ((*address + length) <= 0x14E00000) { + *address = *address - 0x14000000 + 0x04000000; + return false; + } + } + if (*address >= 0x1FFC0000 && *address < 0x1FFE0000) { + if ((*address + length) <= 0x1FFE0000) { + *address = *address - 0x1FFC0000 + 0x04E00000; + return false; + } + } + } + if (type & BRAM) { + if (*address >= 0x1FFE0000 && *address < 0x1FFE2000) { + if ((*address + length) <= 0x1FFE2000) { + *address = *address - 0x1FFE0000 + 0x05000000; + return false; + } + } + if (*address >= 0x1FFE2000 && *address < 0x1FFE2800) { + if ((*address + length) <= 0x1FFE2800) { + *address = *address - 0x1FFE2000 + 0x05002000; + return false; + } + } + } + return true; +} + +static void cfg_set_error (cfg_error_t error) { + fpga_reg_set(REG_CFG_DATA_0, error); + fpga_reg_set(REG_CFG_DATA_1, 0); + fpga_reg_set(REG_CFG_CMD, CFG_CMD_ERROR | CFG_CMD_DONE); +} + +static void cfg_change_scr_bits (uint32_t mask, bool value) { + if (value) { + fpga_reg_set(REG_CFG_SCR, fpga_reg_get(REG_CFG_SCR) | mask); + } else { + fpga_reg_set(REG_CFG_SCR, fpga_reg_get(REG_CFG_SCR) & (~mask)); + } +} + +static bool cfg_set_save_type (save_type_t save_type) { + if (save_type > SAVE_TYPE_SRAM_BANKED) { + return true; + } + + uint32_t save_reset_mask = ( + CFG_SCR_EEPROM_16K | + CFG_SCR_EEPROM_ENABLED | + CFG_SCR_FLASHRAM_ENABLED | + CFG_SCR_SRAM_BANKED | + CFG_SCR_SRAM_ENABLED + ); + + cfg_change_scr_bits(save_reset_mask, false); + + switch (save_type) { + case SAVE_TYPE_NONE: + break; + case SAVE_TYPE_EEPROM_4K: + cfg_change_scr_bits(CFG_SCR_EEPROM_ENABLED, true); + break; + case SAVE_TYPE_EEPROM_16K: + cfg_change_scr_bits(CFG_SCR_EEPROM_16K | CFG_SCR_EEPROM_ENABLED, true); + break; + case SAVE_TYPE_SRAM: + cfg_change_scr_bits(CFG_SCR_SRAM_ENABLED, true); + break; + case SAVE_TYPE_FLASHRAM: + cfg_change_scr_bits(CFG_SCR_FLASHRAM_ENABLED, true); + break; + case SAVE_TYPE_SRAM_BANKED: + cfg_change_scr_bits(CFG_SCR_SRAM_BANKED | CFG_SCR_SRAM_ENABLED, true); + break; + default: + save_type = SAVE_TYPE_NONE; + break; + } + + p.save_type = save_type; + + return false; +} + + +uint32_t cfg_get_version (void) { + return fpga_reg_get(REG_CFG_VERSION); +} + +bool cfg_query (uint32_t *args) { + uint32_t scr = fpga_reg_get(REG_CFG_SCR); + + switch (args[0]) { + case CFG_ID_BOOTLOADER_SWITCH: + args[1] = (scr & CFG_SCR_BOOTLOADER_ENABLED); + break; + case CFG_ID_ROM_WRITE_ENABLE: + args[1] = (scr & CFG_SCR_ROM_WRITE_ENABLED); + break; + case CFG_ID_ROM_SHADOW_ENABLE: + args[1] = (scr & CFG_SCR_ROM_SHADOW_ENABLED); + break; + case CFG_ID_DD_MODE: + args[1] = DD_MODE_DISABLED; + if (scr & CFG_SCR_DDIPL_ENABLED) { + args[1] |= DD_MODE_IPL; + } + if (scr & CFG_SCR_DD_ENABLED) { + args[1] |= DD_MODE_REGS; + } + break; + case CFG_ID_ISV_ADDRESS: + args[1] = isv_get_address(); + break; + case CFG_ID_BOOT_MODE: + args[1] = p.boot_mode; + break; + case CFG_ID_SAVE_TYPE: + args[1] = p.save_type; + break; + case CFG_ID_CIC_SEED: + args[1] = p.cic_seed; + break; + case CFG_ID_TV_TYPE: + args[1] = p.tv_type; + break; + case CFG_ID_DD_SD_ENABLE: + args[1] = dd_get_sd_mode(); + break; + case CFG_ID_DD_DRIVE_TYPE: + args[1] = dd_get_drive_type(); + break; + case CFG_ID_DD_DISK_STATE: + args[1] = dd_get_disk_state(); + break; + case CFG_ID_BUTTON_STATE: + args[1] = button_get_state(); + break; + case CFG_ID_BUTTON_MODE: + args[1] = button_get_mode(); + break; + case CFG_ID_ROM_EXTENDED_ENABLE: + args[1] = (scr & CFG_SCR_ROM_EXTENDED_ENABLED); + break; + default: + return true; + } + + return false; +} + +bool cfg_update (uint32_t *args) { + switch (args[0]) { + case CFG_ID_BOOTLOADER_SWITCH: + cfg_change_scr_bits(CFG_SCR_BOOTLOADER_ENABLED, args[1]); + break; + case CFG_ID_ROM_WRITE_ENABLE: + cfg_change_scr_bits(CFG_SCR_ROM_WRITE_ENABLED, args[1]); + break; + case CFG_ID_ROM_SHADOW_ENABLE: + cfg_change_scr_bits(CFG_SCR_ROM_SHADOW_ENABLED, args[1]); + break; + case CFG_ID_DD_MODE: + if (args[1] == DD_MODE_DISABLED) { + cfg_change_scr_bits(CFG_SCR_DD_ENABLED | CFG_SCR_DDIPL_ENABLED, false); + } else if (args[1] == DD_MODE_REGS) { + cfg_change_scr_bits(CFG_SCR_DD_ENABLED, true); + cfg_change_scr_bits(CFG_SCR_DDIPL_ENABLED, false); + } else if (args[1] == DD_MODE_IPL) { + cfg_change_scr_bits(CFG_SCR_DD_ENABLED, false); + cfg_change_scr_bits(CFG_SCR_DDIPL_ENABLED, true); + } else if (args[1] == DD_MODE_FULL) { + cfg_change_scr_bits(CFG_SCR_DD_ENABLED | CFG_SCR_DDIPL_ENABLED, true); + } else { + return true; + } + break; + case CFG_ID_ISV_ADDRESS: + return isv_set_address(args[1]); + break; + case CFG_ID_BOOT_MODE: + if (args[1] > BOOT_MODE_DIRECT) { + return true; + } + p.boot_mode = args[1]; + cfg_change_scr_bits(CFG_SCR_BOOTLOADER_SKIP, (args[1] == BOOT_MODE_DIRECT)); + break; + case CFG_ID_SAVE_TYPE: + return cfg_set_save_type((save_type_t) (args[1])); + break; + case CFG_ID_CIC_SEED: + if ((args[1] != 0xFFFF) && (args[1] > 0x1FF)) { + return true; + } + p.cic_seed = (cic_seed_t) (args[1] & 0xFFFF); + break; + case CFG_ID_TV_TYPE: + if (args[1] > TV_TYPE_UNKNOWN) { + return true; + } + p.tv_type = (tv_type_t) (args[1] & 0x03); + break; + case CFG_ID_DD_SD_ENABLE: + dd_set_sd_mode(args[1]); + break; + case CFG_ID_DD_DRIVE_TYPE: + return dd_set_drive_type(args[1]); + break; + case CFG_ID_DD_DISK_STATE: + return dd_set_disk_state(args[1]); + break; + case CFG_ID_BUTTON_STATE: + return true; + break; + case CFG_ID_BUTTON_MODE: + return button_set_mode(args[1]); + break; + case CFG_ID_ROM_EXTENDED_ENABLE: + cfg_change_scr_bits(CFG_SCR_ROM_EXTENDED_ENABLED, args[1]); + break; + default: + return true; + } + + return false; +} + +void cfg_get_time (uint32_t *args) { + rtc_time_t t; + rtc_get_time(&t); + args[0] = ((t.hour << 16) | (t.minute << 8) | t.second); + args[1] = ((t.weekday << 24) | (t.year << 16) | (t.month << 8) | t.day); +} + +void cfg_set_time (uint32_t *args) { + rtc_time_t t; + t.second = (args[0] & 0xFF); + t.minute = ((args[0] >> 8) & 0xFF); + t.hour = ((args[0] >> 16) & 0xFF); + t.weekday = ((args[0] >> 24) & 0xFF); + t.day = (args[1] & 0xFF); + t.month = ((args[1] >> 8) & 0xFF); + t.year = ((args[1] >> 16) & 0xFF); + rtc_set_time(&t); +} + +void cfg_reset_state (void) { + uint32_t mask = ( + CFG_SCR_BOOTLOADER_SKIP | + CFG_SCR_ROM_WRITE_ENABLED | + CFG_SCR_ROM_SHADOW_ENABLED | + CFG_SCR_DD_ENABLED | + CFG_SCR_DDIPL_ENABLED | + CFG_SCR_ROM_EXTENDED_ENABLED + ); + cfg_change_scr_bits(mask, false); + cfg_set_save_type(SAVE_TYPE_NONE); + button_set_mode(BUTTON_MODE_NONE); + dd_set_drive_type(DD_DRIVE_TYPE_RETAIL); + dd_set_disk_state(DD_DISK_STATE_EJECTED); + dd_set_sd_mode(false); + isv_set_address(0); + p.cic_seed = CIC_SEED_UNKNOWN; + p.tv_type = TV_TYPE_UNKNOWN; + p.boot_mode = BOOT_MODE_MENU; +} + +void cfg_init (void) { + fpga_reg_set(REG_CFG_SCR, CFG_SCR_BOOTLOADER_ENABLED); + cfg_reset_state(); + p.usb_output_ready = true; +} + +void cfg_process (void) { + uint32_t reg; + uint32_t args[2]; + uint32_t prev_cfg[2]; + usb_tx_info_t packet_info; + + reg = fpga_reg_get(REG_CFG_CMD); + + if (reg & CFG_CMD_PENDING) { + args[0] = fpga_reg_get(REG_CFG_DATA_0); + args[1] = fpga_reg_get(REG_CFG_DATA_1); + char cmd = (char) ((reg & CFG_CMD_MASK) >> CFG_CMD_BIT); + + switch (cmd) { + case 'v': + args[0] = cfg_get_version(); + break; + + case 'c': + if (cfg_query(args)) { + cfg_set_error(CFG_ERROR_BAD_CONFIG_ID); + return; + } + break; + + case 'C': + prev_cfg[0] = args[0]; + cfg_query(prev_cfg); + if (cfg_update(args)) { + cfg_set_error(CFG_ERROR_BAD_CONFIG_ID); + return; + } + args[1] = prev_cfg[1]; + break; + + case 't': + cfg_get_time(args); + break; + + case 'T': + cfg_set_time(args); + break; + + case 'm': + if (cfg_translate_address(&args[0], args[1], (SDRAM | BRAM))) { + cfg_set_error(CFG_ERROR_BAD_ADDRESS); + return; + } + if (!usb_prepare_read(args)) { + return; + } + break; + + case 'M': + if (cfg_translate_address(&args[0], args[1] & 0xFFFFFF, (SDRAM | BRAM))) { + cfg_set_error(CFG_ERROR_BAD_ADDRESS); + return; + } + usb_create_packet(&packet_info, PACKET_CMD_DEBUG_OUTPUT); + packet_info.data_length = 4; + packet_info.data[0] = args[1]; + packet_info.dma_length = (args[1] & 0xFFFFFF); + packet_info.dma_address = args[0]; + packet_info.done_callback = cfg_set_usb_output_ready; + if (usb_enqueue_packet(&packet_info)) { + p.usb_output_ready = false; + } else { + return; + } + break; + + case 'u': + usb_get_read_info(args); + break; + + case 'U': + args[0] = p.usb_output_ready ? 0 : (1 << 31); + break; + + case 'i': + switch (args[1]) { + case SD_CARD_OP_DEINIT: + sd_card_deinit(); + break; + case SD_CARD_OP_INIT: + if (sd_card_init()) { + cfg_set_error(CFG_ERROR_SD_CARD); + return; + } + break; + case SD_CARD_OP_GET_STATUS: + args[1] = sd_card_get_status(); + break; + case SD_CARD_OP_GET_INFO: + if (cfg_translate_address(&args[0], 32, (SDRAM | BRAM))) { + cfg_set_error(CFG_ERROR_BAD_ADDRESS); + return; + } + if (sd_card_get_info(args[0])) { + cfg_set_error(CFG_ERROR_SD_CARD); + return; + } + break; + default: + cfg_set_error(CFG_ERROR_BAD_ARGUMENT); + return; + } + break; + + case 'I': + p.sd_card_sector = args[0]; + break; + + case 's': + if (args[1] >= 0x800000) { + cfg_set_error(CFG_ERROR_BAD_ARGUMENT); + return; + } + if (cfg_translate_address(&args[0], args[1] * SD_SECTOR_SIZE, (SDRAM | BRAM | FLASH))) { + cfg_set_error(CFG_ERROR_BAD_ADDRESS); + return; + } + if (sd_read_sectors(args[0], p.sd_card_sector, args[1])) { + cfg_set_error(CFG_ERROR_SD_CARD); + return; + } + break; + + case 'S': + if (args[1] >= 0x800000) { + cfg_set_error(CFG_ERROR_BAD_ARGUMENT); + return; + } + if (cfg_translate_address(&args[0], args[1] * SD_SECTOR_SIZE, (SDRAM | BRAM | FLASH))) { + cfg_set_error(CFG_ERROR_BAD_ADDRESS); + return; + } + if (sd_write_sectors(args[0], p.sd_card_sector, args[1])) { + cfg_set_error(CFG_ERROR_SD_CARD); + return; + } + break; + + case 'D': + if (cfg_translate_address(&args[0], args[1], (SDRAM | BRAM))) { + cfg_set_error(CFG_ERROR_BAD_ADDRESS); + return; + } + dd_set_sd_disk_info(args[0], args[1]); + break; + + case 'p': + flash_wait_busy(); + args[0] = FLASH_ERASE_BLOCK_SIZE; + break; + + case 'P': + if (cfg_translate_address(&args[0], FLASH_ERASE_BLOCK_SIZE, FLASH)) { + cfg_set_error(CFG_ERROR_BAD_ADDRESS); + return; + } + flash_erase_block(args[0]); + break; + + case '?': + args[0] = fpga_reg_get(REG_DEBUG_0); + args[1] = fpga_reg_get(REG_DEBUG_1); + break; + + default: + cfg_set_error(CFG_ERROR_UNKNOWN_CMD); + return; + } + + fpga_reg_set(REG_CFG_DATA_0, args[0]); + fpga_reg_set(REG_CFG_DATA_1, args[1]); + fpga_reg_set(REG_CFG_CMD, CFG_CMD_DONE); + } +} diff --git a/sw/controller/src/cfg.h b/sw/controller/src/cfg.h new file mode 100644 index 0000000..8ca463b --- /dev/null +++ b/sw/controller/src/cfg.h @@ -0,0 +1,19 @@ +#ifndef CFG_H__ +#define CFG_H__ + + +#include +#include + + +uint32_t cfg_get_version (void); +bool cfg_query (uint32_t *args); +bool cfg_update (uint32_t *args); +void cfg_get_time (uint32_t *args); +void cfg_set_time (uint32_t *args); +void cfg_reset_state (void); +void cfg_init (void); +void cfg_process (void); + + +#endif diff --git a/sw/controller/src/cic.c b/sw/controller/src/cic.c new file mode 100644 index 0000000..19e9ead --- /dev/null +++ b/sw/controller/src/cic.c @@ -0,0 +1,383 @@ +// Original code from https://github.com/jago85/UltraCIC_C licensed under the MIT License + +#include +#include "cic.h" +#include "hw.h" +#include "led.h" +#include "rtc.h" +#include "task.h" + + +typedef enum { + REGION_NTSC, + REGION_PAL, + __REGION_MAX +} cic_region_t; + + +static volatile bool cic_enabled = false; +static volatile bool cic_detect_enabled; + +static volatile uint8_t cic_next_rd; +static volatile uint8_t cic_next_wr; + +static volatile bool cic_disabled = false; +static volatile bool cic_dd_mode = false; +static volatile uint8_t cic_seed = 0x3F; +static volatile uint8_t cic_checksum[6] = { 0xA5, 0x36, 0xC0, 0xF1, 0xD8, 0x59 }; + +static uint8_t cic_ram[32]; +static uint8_t cic_x105_ram[30]; + +static const uint8_t cic_ram_init[2][32] = {{ + 0x0E, 0x00, 0x09, 0x0A, 0x01, 0x08, 0x05, 0x0A, 0x01, 0x03, 0x0E, 0x01, 0x00, 0x0D, 0x0E, 0x0C, + 0x00, 0x0B, 0x01, 0x04, 0x0F, 0x08, 0x0B, 0x05, 0x07, 0x0C, 0x0D, 0x06, 0x01, 0x0E, 0x09, 0x08 +}, { + 0x0E, 0x00, 0x04, 0x0F, 0x05, 0x01, 0x02, 0x01, 0x07, 0x01, 0x09, 0x08, 0x05, 0x07, 0x05, 0x0A, + 0x00, 0x0B, 0x01, 0x02, 0x03, 0x0F, 0x08, 0x02, 0x07, 0x01, 0x09, 0x08, 0x01, 0x01, 0x05, 0x0C +}}; + + +static void cic_irq_reset_falling (void) { + cic_enabled = false; + hw_gpio_set(GPIO_ID_N64_CIC_DQ); + led_clear_error(LED_ERROR_CIC); +} + +static void cic_irq_reset_rising (void) { + if (!cic_disabled) { + cic_enabled = true; + task_set_ready_and_reset(TASK_ID_CIC); + } +} + +static void cic_irq_clk_falling (void) { + if (cic_enabled) { + if (!cic_next_wr) { + hw_gpio_reset(GPIO_ID_N64_CIC_DQ); + } + cic_next_rd = hw_gpio_get(GPIO_ID_N64_CIC_DQ) ? 1 : 0; + task_set_ready(TASK_ID_CIC); + } +} + +static void cic_irq_clk_rising (void) { + hw_gpio_set(GPIO_ID_N64_CIC_DQ); + if (cic_detect_enabled) { + cic_detect_enabled = false; + if (!hw_gpio_get(GPIO_ID_N64_CIC_DQ)) { + cic_enabled = false; + } + } +} + +static uint8_t cic_read (void) { + cic_next_wr = 1; + task_yield(); + return cic_next_rd; +} + +static void cic_write (uint8_t bit) { + cic_next_wr = bit; + task_yield(); +} + +static void cic_start_detect (void) { + cic_detect_enabled = cic_dd_mode; +} + +static uint8_t cic_read_nibble (void) { + uint8_t data = 0; + for (int i = 0; i < 4; i++) { + data = ((data << 1) | cic_read()); + } + return data; +} + +static void cic_write_nibble (uint8_t data) { + cic_write(data & 0x08); + cic_write(data & 0x04); + cic_write(data & 0x02); + cic_write(data & 0x01); +} + +static void cic_write_ram_nibbles (uint8_t index) { + do { + cic_write_nibble(cic_ram[index++]); + } while ((index & 0x0F) != 0); +} + +static void cic_encode_round (uint8_t index) { + uint8_t data = cic_ram[index++]; + do { + data = ((((data + 1) & 0x0F) + cic_ram[index]) & 0x0F); + cic_ram[index++] = data; + } while ((index & 0x0F) != 0); +} + +static void cic_write_id (cic_region_t region) { + cic_start_detect(); + cic_write(cic_dd_mode ? 1 : 0); + cic_write(region == REGION_PAL ? 1 : 0); + cic_write(0); + cic_write(1); +} + +static void cic_write_id_failed (void) { + uint8_t current_region = rtc_get_region(); + uint8_t next_region = (current_region == REGION_NTSC) ? REGION_PAL : REGION_NTSC; + rtc_set_region(next_region); + led_blink_error(LED_ERROR_CIC); +} + +static void cic_write_seed (void) { + cic_ram[0x0A] = 0x0B; + cic_ram[0x0B] = 0x05; + cic_ram[0x0C] = (cic_seed >> 4); + cic_ram[0x0D] = cic_seed; + cic_ram[0x0E] = (cic_seed >> 4); + cic_ram[0x0F] = cic_seed; + cic_encode_round(0x0A); + cic_encode_round(0x0A); + cic_write_ram_nibbles(0x0A); +} + +static void cic_write_checksum (void) { + for (int i = 0; i < 4; i++) { + cic_ram[i] = 0x00; + } + for (int i = 0; i < 6; i++) { + cic_ram[(i * 2) + 4] = ((cic_checksum[i] >> 4) & 0x0F); + cic_ram[(i * 2) + 5] = (cic_checksum[i] & 0x0F); + } + cic_encode_round(0x00); + cic_encode_round(0x00); + cic_encode_round(0x00); + cic_encode_round(0x00); + cic_write(0); + cic_write_ram_nibbles(0x00); +} + +static void cic_init_ram (cic_region_t region) { + if (region < __REGION_MAX) { + for (int i = 0; i < 32; i++) { + cic_ram[i] = cic_ram_init[region][i]; + } + } + cic_ram[0x01] = cic_read_nibble(); + cic_ram[0x11] = cic_read_nibble(); +} + +static void cic_exchange_bytes (uint8_t *a, uint8_t *b) { + uint8_t tmp = *a; + *a = *b; + *b = tmp; +} + +static void cic_round (uint8_t *m) { + uint8_t a, b, x; + + x = m[15]; + a = x; + + do { + b = 1; + a += (m[b] + 1); + m[b] = a; + b++; + a += (m[b] + 1); + cic_exchange_bytes(&a, &m[b]); + m[b] = ~(m[b]); + b++; + a &= 0x0F; + a += ((m[b] & 0x0F) + 1); + if (a < 16) { + cic_exchange_bytes(&a, &m[b]); + b++; + } + a += m[b]; + m[b] = a; + b++; + a += m[b]; + cic_exchange_bytes(&a, &m[b]); + b++; + a &= 0x0F; + a += 8; + if (a < 16) { + a += m[b]; + } + cic_exchange_bytes(&a, &m[b]); + b++; + do { + a += (m[b] + 1); + m[b] = a; + b++; + b &= 0x0F; + } while (b != 0); + a = (x + 0x0F); + x = (a & 0x0F); + } while (x != 0x0F); +} + +static void cic_compare_mode (cic_region_t region) { + cic_round(&cic_ram[0x10]); + cic_round(&cic_ram[0x10]); + cic_round(&cic_ram[0x10]); + + uint8_t index = (cic_ram[0x17] & 0x0F); + if (index == 0) { + index = 1; + } + index |= 0x10; + + do { + cic_read(); + cic_write(cic_ram[index] & 0x01); + if (region == REGION_PAL) { + index--; + } else { + index++; + } + } while (index & 0x0F); +} + +static void cic_x105_algorithm (void) { + uint8_t a = 5; + uint8_t carry = 1; + + for (int i = 0; i < 30; ++i) { + if (!(cic_x105_ram[i] & 0x01)) { + a += 8; + } + if (!(a & 0x02)) { + a += 4; + } + a = ((a + cic_x105_ram[i]) & 0x0F); + cic_x105_ram[i] = a; + if (!carry) { + a += 7; + } + a = ((a + cic_x105_ram[i]) & 0x0F); + a = (a + cic_x105_ram[i] + carry); + if (a >= 0x10) { + carry = 1; + a -= 0x10; + } else { + carry = 0; + } + a = (~(a) & 0x0F); + cic_x105_ram[i] = a; + } +} + +static void cic_x105_mode (void) { + cic_write_nibble(0x0A); + cic_write_nibble(0x0A); + + for (int i = 0; i < 30; i++) { + cic_x105_ram[i] = cic_read_nibble(); + } + + cic_x105_algorithm(); + + cic_write(0); + + for (int i = 0; i < 30; i++) { + cic_write_nibble(cic_x105_ram[i]); + } +} + +static void cic_soft_reset_timeout (void) { + hw_gpio_reset(GPIO_ID_N64_CIC_DQ); + task_set_ready(TASK_ID_CIC); +} + +static void cic_soft_reset (void) { + cic_read(); + hw_tim_setup(TIM_ID_CIC, 550, cic_soft_reset_timeout); + task_yield(); +} + + +void cic_reset_parameters (void) { + cic_disabled = false; + cic_dd_mode = false; + cic_seed = 0x3F; + cic_checksum[0] = 0xA5; + cic_checksum[1] = 0x36; + cic_checksum[2] = 0xC0; + cic_checksum[3] = 0xF1; + cic_checksum[4] = 0xD8; + cic_checksum[5] = 0x59; +} + +void cic_set_parameters (uint32_t *args) { + cic_disabled = (args[0] >> 24) & (1 << 1); + cic_dd_mode = (args[0] >> 24) & (1 << 0); + cic_seed = (args[0] >> 16) & 0xFF; + cic_checksum[0] = (args[0] >> 8) & 0xFF; + cic_checksum[1] = args[0] & 0xFF; + cic_checksum[2] = (args[1] >> 24) & 0xFF; + cic_checksum[3] = (args[1] >> 16) & 0xFF; + cic_checksum[4] = (args[1] >> 8) & 0xFF; + cic_checksum[5] = args[1] & 0xFF; +} + +void cic_hw_init (void) { + hw_gpio_irq_setup(GPIO_ID_N64_RESET, GPIO_IRQ_FALLING, cic_irq_reset_falling); + hw_gpio_irq_setup(GPIO_ID_N64_RESET, GPIO_IRQ_RISING, cic_irq_reset_rising); + hw_gpio_irq_setup(GPIO_ID_N64_CIC_CLK, GPIO_IRQ_FALLING, cic_irq_clk_falling); + hw_gpio_irq_setup(GPIO_ID_N64_CIC_CLK, GPIO_IRQ_RISING, cic_irq_clk_rising); +} + +void cic_task (void) { + while (!hw_gpio_get(GPIO_ID_N64_RESET)) { + task_yield(); + } + + cic_region_t region = rtc_get_region(); + if (region >= __REGION_MAX) { + region = REGION_NTSC; + rtc_set_region(region); + } + + cic_write_id(region); + + hw_tim_setup(TIM_ID_CIC, 1000, cic_write_id_failed); + cic_write_seed(); + hw_tim_stop(TIM_ID_CIC); + + cic_write_checksum(); + cic_init_ram(region); + + while (1) { + uint8_t cmd = 0; + cmd |= (cic_read() << 1); + cmd |= cic_read(); + + switch (cmd) { + case 0: { + cic_compare_mode(region); + break; + } + + case 2: { + cic_x105_mode(); + break; + } + + case 3: { + cic_soft_reset(); + break; + } + + case 1: + default: { + while (1) { + task_yield(); + } + break; + } + } + } +} diff --git a/sw/controller/src/cic.h b/sw/controller/src/cic.h new file mode 100644 index 0000000..d5a70e8 --- /dev/null +++ b/sw/controller/src/cic.h @@ -0,0 +1,14 @@ +#ifndef CIC_H__ +#define CIC_H__ + + +#include + + +void cic_reset_parameters (void); +void cic_set_parameters (uint32_t *args); +void cic_hw_init (void); +void cic_task (void); + + +#endif diff --git a/sw/controller/src/dd.c b/sw/controller/src/dd.c new file mode 100644 index 0000000..43f2ef0 --- /dev/null +++ b/sw/controller/src/dd.c @@ -0,0 +1,562 @@ +#include +#include "dd.h" +#include "fpga.h" +#include "hw.h" +#include "led.h" +#include "rtc.h" +#include "sd.h" +#include "usb.h" + + +#define DD_SECTOR_MAX_SIZE (232) +#define DD_BLOCK_DATA_SECTORS_NUM (85) +#define DD_BLOCK_BUFFER_SIZE (ALIGN(DD_SECTOR_MAX_SIZE * DD_BLOCK_DATA_SECTORS_NUM, SD_SECTOR_SIZE) + SD_SECTOR_SIZE) +#define DD_BLOCK_BUFFER_ADDRESS (0x03BC0000UL - DD_BLOCK_BUFFER_SIZE) +#define DD_SECTOR_BUFFER_ADDRESS (0x05002800UL) +#define DD_SD_SECTOR_TABLE_SIZE (DD_BLOCK_BUFFER_SIZE / SD_SECTOR_SIZE) +#define DD_SD_MAX_DISKS (4) + +#define DD_DRIVE_ID_RETAIL (0x0003) +#define DD_DRIVE_ID_DEVELOPMENT (0x0004) +#define DD_VERSION_RETAIL (0x0114) + +#define DD_SPIN_UP_TIME (2000) + + +typedef enum { + DD_CMD_SEEK_READ = 0x01, + DD_CMD_SEEK_WRITE = 0x02, + DD_CMD_CLEAR_DISK_CHANGE = 0x08, + DD_CMD_CLEAR_RESET_STATE = 0x09, + DD_CMD_READ_VERSION = 0x0A, + DD_CMD_SET_DISK_TYPE = 0x0B, + DD_CMD_REQUEST_STATUS = 0x0C, + DD_CMD_SET_RTC_YEAR_MONTH = 0x0F, + DD_CMD_SET_RTC_DAY_HOUR = 0x10, + DD_CMD_SET_RTC_MINUTE_SECOND = 0x11, + DD_CMD_GET_RTC_YEAR_MONTH = 0x12, + DD_CMD_GET_RTC_DAY_HOUR = 0x13, + DD_CMD_GET_RTC_MINUTE_SECOND = 0x14, + DD_CMD_READ_PROGRAM_VERSION = 0x1B, +} dd_cmd_t; + + +enum state { + STATE_IDLE, + STATE_START, + STATE_BLOCK_READ_WAIT, + STATE_SECTOR_READ, + STATE_SECTOR_WRITE, + STATE_BLOCK_WRITE, + STATE_BLOCK_WRITE_WAIT, + STATE_NEXT_BLOCK, +}; + +typedef union { + uint32_t full; + struct { + uint8_t sector_num; + uint8_t sector_size; + uint8_t sector_size_full; + uint8_t sectors_in_block; + }; +} sector_info_t; + +typedef struct { + uint32_t thb_table_address; + uint32_t sector_table_address; +} sd_disk_info_t; + +struct process { + enum state state; + rtc_time_t time; + bool disk_spinning; + bool cmd_response_delayed; + bool cmd_response_ready; + bool bm_running; + bool transfer_mode; + bool full_track_transfer; + bool starting_block; + uint16_t head_track; + uint8_t current_sector; + sector_info_t sector_info; + bool block_ready; + bool block_valid; + uint32_t block_offset; + dd_drive_type_t drive_type; + bool sd_mode; + uint8_t sd_current_disk; + sd_disk_info_t sd_disk_info[DD_SD_MAX_DISKS]; +}; + + +static struct process p; + + +static uint16_t dd_track_head_block (void) { + uint16_t track = ((p.head_track & DD_TRACK_MASK) << 2); + uint16_t head = (((p.head_track & DD_HEAD_MASK) ? 1 : 0) << 1); + uint16_t block = (p.starting_block ? 1 : 0); + return (track | head | block); +} + +static uint32_t dd_fill_sd_sector_table (uint32_t index, uint32_t *sector_table) { + uint32_t tmp; + sd_disk_info_t info = p.sd_disk_info[p.sd_current_disk]; + if (info.thb_table_address == 0xFFFFFFFF) { + return 0; + } + uint32_t thb_entry_address = (info.thb_table_address + (index * sizeof(uint32_t))); + fpga_mem_read(thb_entry_address, sizeof(uint32_t), (uint8_t *) (&tmp)); + uint32_t start_offset = SWAP32(tmp); + if (start_offset == 0xFFFFFFFF) { + return 0; + } + p.block_offset = (start_offset % SD_SECTOR_SIZE); + uint32_t block_length = ((p.sector_info.sector_size + 1) * DD_BLOCK_DATA_SECTORS_NUM); + uint32_t end_offset = ((start_offset + block_length) - 1); + uint32_t starting_sector = (start_offset / SD_SECTOR_SIZE); + uint32_t sectors = (1 + ((end_offset / SD_SECTOR_SIZE) - starting_sector)); + for (int i = 0; i < sectors; i++) { + uint32_t sector_entry_address = info.sector_table_address + ((starting_sector + i) * sizeof(uint32_t)); + fpga_mem_read(sector_entry_address, sizeof(uint32_t), (uint8_t *) (&tmp)); + sector_table[i] = SWAP32(tmp); + } + return sectors; +} + +static void dd_process_sd_request (uint16_t index, uint32_t buffer_address, bool write) { + uint32_t sector_table[DD_SD_SECTOR_TABLE_SIZE]; + uint32_t sectors = dd_fill_sd_sector_table(index, sector_table); + dd_set_block_ready(false); + if (sectors == 0) { + return; + } + uint32_t starting_sector = 0; + uint32_t sectors_to_process = 0; + for (uint32_t i = 0; i < sectors; i++) { + sectors_to_process += 1; + if ((i < (sectors - 1)) && ((sector_table[i] + 1) == sector_table[i + 1])) { + continue; + } + if (write) { + if (sd_write_sectors(buffer_address, sector_table[starting_sector], sectors_to_process)) { + return; + } + } else { + if (sd_read_sectors(buffer_address, sector_table[starting_sector], sectors_to_process)) { + return; + } + } + buffer_address += (sectors_to_process * SD_SECTOR_SIZE); + starting_sector += sectors_to_process; + sectors_to_process = 0; + } + dd_set_block_ready(true); +} + +static bool dd_block_read_request (void) { + uint16_t index = dd_track_head_block(); + uint32_t buffer_address = DD_BLOCK_BUFFER_ADDRESS; + if (p.sd_mode) { + dd_process_sd_request(index, buffer_address, false); + } else { + usb_tx_info_t packet_info; + usb_create_packet(&packet_info, PACKET_CMD_DD_REQUEST); + packet_info.data_length = 12; + packet_info.data[0] = 1; + packet_info.data[1] = buffer_address; + packet_info.data[2] = index; + p.block_ready = false; + p.block_offset = 0; + return usb_enqueue_packet(&packet_info); + } + return true; +} + +static bool dd_block_write_request (void) { + uint32_t index = dd_track_head_block(); + uint32_t buffer_address = DD_BLOCK_BUFFER_ADDRESS; + if (p.sd_mode) { + dd_process_sd_request(index, buffer_address, true); + } else { + usb_tx_info_t packet_info; + usb_create_packet(&packet_info, PACKET_CMD_DD_REQUEST); + packet_info.data_length = 12; + packet_info.data[0] = 2; + packet_info.data[1] = buffer_address; + packet_info.data[2] = index; + packet_info.dma_length = (p.sector_info.sector_size + 1) * DD_BLOCK_DATA_SECTORS_NUM; + packet_info.dma_address = buffer_address; + p.block_ready = false; + p.block_offset = 0; + return usb_enqueue_packet(&packet_info); + } + return true; +} + +static void dd_set_cmd_response_ready (void) { + p.cmd_response_ready = true; +} + + +void dd_set_block_ready (bool valid) { + p.block_ready = true; + p.block_valid = valid; +} + +dd_drive_type_t dd_get_drive_type (void) { + return p.drive_type; +} + +bool dd_set_drive_type (dd_drive_type_t type) { + switch (type) { + case DD_DRIVE_TYPE_RETAIL: + fpga_reg_set(REG_DD_DRIVE_ID, DD_DRIVE_ID_RETAIL); + p.drive_type = type; + break; + + case DD_DRIVE_TYPE_DEVELOPMENT: + fpga_reg_set(REG_DD_DRIVE_ID, DD_DRIVE_ID_DEVELOPMENT); + p.drive_type = type; + break; + + default: + return true; + } + return false; +} + +dd_disk_state_t dd_get_disk_state (void) { + uint32_t scr = fpga_reg_get(REG_DD_SCR); + if (scr & DD_SCR_DISK_CHANGED) { + return DD_DISK_STATE_CHANGED; + } + if (scr & DD_SCR_DISK_INSERTED) { + return DD_DISK_STATE_INSERTED; + } + return DD_DISK_STATE_EJECTED; +} + +bool dd_set_disk_state (dd_disk_state_t state) { + if (state > DD_DISK_STATE_CHANGED) { + return true; + } + uint32_t scr = fpga_reg_get(REG_DD_SCR); + scr &= ~(DD_SCR_DISK_CHANGED | DD_SCR_DISK_INSERTED); + switch (state) { + case DD_DISK_STATE_EJECTED: + break; + + case DD_DISK_STATE_INSERTED: + scr |= DD_SCR_DISK_INSERTED; + break; + + case DD_DISK_STATE_CHANGED: + scr |= (DD_SCR_DISK_CHANGED | DD_SCR_DISK_INSERTED); + break; + } + fpga_reg_set(REG_DD_SCR, scr); + return false; +} + +bool dd_get_sd_mode (void) { + return p.sd_mode; +} + +void dd_set_sd_mode (bool value) { + p.sd_mode = value; +} + +void dd_set_sd_disk_info (uint32_t address, uint32_t length) { + sd_disk_info_t info; + length /= sizeof(info); + p.sd_current_disk = 0; + for (int i = 0; i < DD_SD_MAX_DISKS; i++) { + if (i < length) { + fpga_mem_read(address, sizeof(info), (uint8_t *) (&info)); + p.sd_disk_info[i].thb_table_address = (SWAP32(info.thb_table_address) & 0x1FFFFFFF); + p.sd_disk_info[i].sector_table_address = (SWAP32(info.sector_table_address) & 0x1FFFFFFF); + address += sizeof(info); + } else { + p.sd_disk_info[i].thb_table_address = 0xFFFFFFFF; + p.sd_disk_info[i].sector_table_address = 0xFFFFFFFF; + } + } +} + +void dd_handle_button (void) { + led_blink_act(); + if (dd_get_disk_state() == DD_DISK_STATE_EJECTED) { + dd_set_disk_state(DD_DISK_STATE_INSERTED); + } else { + dd_set_disk_state(DD_DISK_STATE_EJECTED); + for (uint8_t i = 0; i < DD_SD_MAX_DISKS; i++) { + uint8_t sd_next_disk = ((p.sd_current_disk + i + 1) % DD_SD_MAX_DISKS); + if (p.sd_disk_info[sd_next_disk].thb_table_address != 0xFFFFFFFF) { + p.sd_current_disk = sd_next_disk; + break; + } + } + } +} + +void dd_init (void) { + fpga_reg_set(REG_DD_SCR, 0); + fpga_reg_set(REG_DD_HEAD_TRACK, 0); + fpga_reg_set(REG_DD_DRIVE_ID, DD_DRIVE_ID_RETAIL); + p.state = STATE_IDLE; + p.cmd_response_delayed = false; + p.cmd_response_ready = false; + p.disk_spinning = false; + p.bm_running = false; + p.drive_type = DD_DRIVE_TYPE_RETAIL; + p.sd_mode = false; + p.sd_current_disk = 0; + dd_set_sd_disk_info(0, 0); +} + +void dd_process (void) { + uint32_t starting_scr = fpga_reg_get(REG_DD_SCR); + uint32_t scr = starting_scr; + + if (scr & DD_SCR_HARD_RESET) { + p.state = STATE_IDLE; + p.cmd_response_delayed = false; + p.cmd_response_ready = false; + p.disk_spinning = false; + p.bm_running = false; + p.head_track = 0; + scr &= ~(DD_SCR_DISK_CHANGED); + } + + if (scr & DD_SCR_CMD_PENDING) { + uint32_t cmd_data = fpga_reg_get(REG_DD_CMD_DATA); + uint8_t cmd = (cmd_data >> 16) & 0xFF; + uint16_t data = cmd_data & 0xFFFF; + + if (p.cmd_response_delayed) { + if (p.cmd_response_ready) { + p.cmd_response_delayed = false; + fpga_reg_set(REG_DD_HEAD_TRACK, DD_HEAD_TRACK_INDEX_LOCK | data); + scr |= DD_SCR_CMD_READY; + } + } else if ((cmd == DD_CMD_SEEK_READ) || (cmd == DD_CMD_SEEK_WRITE)) { + p.cmd_response_delayed = true; + p.cmd_response_ready = false; + if (!p.disk_spinning) { + p.disk_spinning = true; + hw_tim_setup(TIM_ID_DD, DD_SPIN_UP_TIME, dd_set_cmd_response_ready); + } else { + p.cmd_response_ready = true; + } + fpga_reg_set(REG_DD_HEAD_TRACK, p.head_track & ~(DD_HEAD_TRACK_INDEX_LOCK)); + p.head_track = data & DD_HEAD_TRACK_MASK; + } else { + switch (cmd) { + case DD_CMD_CLEAR_DISK_CHANGE: + scr &= ~(DD_SCR_DISK_CHANGED); + break; + + case DD_CMD_CLEAR_RESET_STATE: + scr &= ~(DD_SCR_DISK_CHANGED); + scr |= DD_SCR_HARD_RESET_CLEAR; + break; + + case DD_CMD_READ_VERSION: + data = DD_VERSION_RETAIL; + break; + + case DD_CMD_SET_DISK_TYPE: + break; + + case DD_CMD_REQUEST_STATUS: + data = 0; + break; + + case DD_CMD_SET_RTC_YEAR_MONTH: + p.time.year = ((data >> 8) & 0xFF); + p.time.month = (data & 0xFF); + break; + + case DD_CMD_SET_RTC_DAY_HOUR: + p.time.day = ((data >> 8) & 0xFF); + p.time.hour = (data & 0xFF); + break; + + case DD_CMD_SET_RTC_MINUTE_SECOND: + p.time.minute = ((data >> 8) & 0xFF); + p.time.second = (data & 0xFF); + rtc_set_time(&p.time); + break; + + case DD_CMD_GET_RTC_YEAR_MONTH: + data = (p.time.year << 8) | p.time.month; + break; + + case DD_CMD_GET_RTC_DAY_HOUR: + data = (p.time.day << 8) | p.time.hour; + break; + + case DD_CMD_GET_RTC_MINUTE_SECOND: + rtc_get_time(&p.time); + data = (p.time.minute << 8) | p.time.second; + break; + + case DD_CMD_READ_PROGRAM_VERSION: + data = 0; + break; + + default: + break; + } + + fpga_reg_set(REG_DD_CMD_DATA, data); + scr |= DD_SCR_CMD_READY; + } + } + + if (scr & DD_SCR_BM_STOP) { + scr |= DD_SCR_BM_STOP_CLEAR; + scr &= ~(DD_SCR_BM_MICRO_ERROR | DD_SCR_BM_TRANSFER_C2 | DD_SCR_BM_TRANSFER_DATA); + p.bm_running = false; + } else if (scr & DD_SCR_BM_START) { + scr |= DD_SCR_BM_CLEAR | DD_SCR_BM_ACK_CLEAR | DD_SCR_BM_START_CLEAR; + scr &= ~(DD_SCR_BM_MICRO_ERROR | DD_SCR_BM_TRANSFER_C2 | DD_SCR_BM_TRANSFER_DATA); + p.state = STATE_START; + p.bm_running = true; + p.transfer_mode = (scr & DD_SCR_BM_TRANSFER_MODE); + p.full_track_transfer = (scr & DD_SCR_BM_TRANSFER_BLOCKS); + p.sector_info.full = fpga_reg_get(REG_DD_SECTOR_INFO); + p.starting_block = (p.sector_info.sector_num == (p.sector_info.sectors_in_block + 1)); + } else if (p.bm_running) { + if (scr & DD_SCR_BM_PENDING) { + scr |= DD_SCR_BM_CLEAR; + if (p.transfer_mode) { + if (p.current_sector < (p.sector_info.sectors_in_block - 4)) { + p.state = STATE_SECTOR_READ; + } else if (p.current_sector == (p.sector_info.sectors_in_block - 4)) { + p.current_sector += 1; + scr &= ~(DD_SCR_BM_TRANSFER_DATA); + scr |= DD_SCR_BM_READY; + } else if (p.current_sector >= p.sector_info.sectors_in_block) { + p.state = STATE_NEXT_BLOCK; + } else { + } + } else { + if (p.current_sector < (p.sector_info.sectors_in_block - 4)) { + p.state = STATE_SECTOR_WRITE; + } + } + } + if (scr & DD_SCR_BM_ACK) { + scr |= DD_SCR_BM_ACK_CLEAR; + if (p.transfer_mode) { + if ((p.current_sector <= (p.sector_info.sectors_in_block - 4))) { + } else if (p.current_sector < p.sector_info.sectors_in_block) { + p.current_sector += 1; + scr |= DD_SCR_BM_READY; + } else if (p.current_sector == p.sector_info.sectors_in_block) { + p.current_sector += 1; + scr |= DD_SCR_BM_TRANSFER_C2 | DD_SCR_BM_READY; + } + } else { + if (p.current_sector == (p.sector_info.sectors_in_block - 4)) { + p.bm_running = false; + } + } + } + + switch (p.state) { + case STATE_IDLE: + break; + + case STATE_START: + p.current_sector = 0; + if (dd_block_read_request()) { + p.state = STATE_BLOCK_READ_WAIT; + } + break; + + case STATE_BLOCK_READ_WAIT: + if (p.block_ready) { + if (p.transfer_mode) { + if (p.block_valid) { + p.state = STATE_SECTOR_READ; + scr |= DD_SCR_BM_TRANSFER_DATA; + } else { + p.state = STATE_SECTOR_READ; + scr |= DD_SCR_BM_MICRO_ERROR; + } + } else { + p.state = STATE_IDLE; + if (p.block_valid) { + scr |= DD_SCR_BM_TRANSFER_DATA | DD_SCR_BM_READY; + } else { + scr |= DD_SCR_BM_MICRO_ERROR | DD_SCR_BM_READY; + } + } + } + break; + + case STATE_SECTOR_READ: + fpga_mem_copy( + DD_BLOCK_BUFFER_ADDRESS + p.block_offset + (p.current_sector * (p.sector_info.sector_size + 1)), + DD_SECTOR_BUFFER_ADDRESS, + p.sector_info.sector_size + 1 + ); + p.state = STATE_IDLE; + p.current_sector += 1; + scr |= DD_SCR_BM_READY; + break; + + case STATE_SECTOR_WRITE: + fpga_mem_copy( + DD_SECTOR_BUFFER_ADDRESS, + DD_BLOCK_BUFFER_ADDRESS + p.block_offset + (p.current_sector * (p.sector_info.sector_size + 1)), + p.sector_info.sector_size + 1 + ); + p.current_sector += 1; + if (p.current_sector < (p.sector_info.sectors_in_block - 4)) { + p.state = STATE_IDLE; + scr |= DD_SCR_BM_READY; + } else { + p.state = STATE_BLOCK_WRITE; + } + break; + + case STATE_BLOCK_WRITE: + if (dd_block_write_request()) { + p.state = STATE_BLOCK_WRITE_WAIT; + } + break; + + case STATE_BLOCK_WRITE_WAIT: + if (p.block_ready) { + p.state = STATE_NEXT_BLOCK; + } + break; + + case STATE_NEXT_BLOCK: + if (p.full_track_transfer) { + p.state = STATE_START; + p.full_track_transfer = false; + p.starting_block = !p.starting_block; + scr &= ~(DD_SCR_BM_TRANSFER_C2); + } else { + if (p.transfer_mode) { + p.bm_running = false; + } else { + p.state = STATE_IDLE; + scr &= ~(DD_SCR_BM_TRANSFER_C2 | DD_SCR_BM_TRANSFER_DATA); + scr |= DD_SCR_BM_READY; + } + } + break; + } + } + + if (scr != starting_scr) { + fpga_reg_set(REG_DD_SCR, scr); + } +} diff --git a/sw/controller/src/dd.h b/sw/controller/src/dd.h new file mode 100644 index 0000000..3bddaff --- /dev/null +++ b/sw/controller/src/dd.h @@ -0,0 +1,34 @@ +#ifndef DD_H__ +#define DD_H__ + + +#include +#include + + +typedef enum { + DD_DRIVE_TYPE_RETAIL = 0, + DD_DRIVE_TYPE_DEVELOPMENT = 1, +} dd_drive_type_t; + +typedef enum { + DD_DISK_STATE_EJECTED = 0, + DD_DISK_STATE_INSERTED = 1, + DD_DISK_STATE_CHANGED = 2, +} dd_disk_state_t; + + +void dd_set_block_ready (bool valid); +dd_drive_type_t dd_get_drive_type (void); +bool dd_set_drive_type (dd_drive_type_t type); +dd_disk_state_t dd_get_disk_state (void); +bool dd_set_disk_state (dd_disk_state_t state); +bool dd_get_sd_mode (void); +void dd_set_sd_mode (bool value); +void dd_set_sd_disk_info (uint32_t address, uint32_t length); +void dd_handle_button (void); +void dd_init (void); +void dd_process (void); + + +#endif diff --git a/sw/controller/src/debug.c b/sw/controller/src/debug.c new file mode 100644 index 0000000..59c5b0f --- /dev/null +++ b/sw/controller/src/debug.c @@ -0,0 +1,34 @@ +#include +#include "debug.h" +#include "hw.h" + + +static char hex_chars[16] = { + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', +}; + + +void debug_print_text (char *text) { + hw_uart_write((uint8_t *) (text), strlen(text)); +} + +void debug_print_8bit (uint8_t value) { + char buffer[3] = { + hex_chars[(value >> 4) & 0x0F], + hex_chars[value & 0x0F], + '\0' + }; + debug_print_text(buffer); +} + +void debug_print_16bit (uint16_t value) { + debug_print_8bit((value >> 8) & 0xFF); + debug_print_8bit(value & 0xFF); +} + +void debug_print_32bit (uint32_t value) { + debug_print_8bit((value >> 24) & 0xFF); + debug_print_8bit((value >> 16) & 0xFF); + debug_print_8bit((value >> 8) & 0xFF); + debug_print_8bit(value & 0xFF); +} diff --git a/sw/controller/src/debug.h b/sw/controller/src/debug.h new file mode 100644 index 0000000..46a64c4 --- /dev/null +++ b/sw/controller/src/debug.h @@ -0,0 +1,14 @@ +#ifndef DEBUG_H__ +#define DEBUG_H__ + + +#include + + +void debug_print_text (char *text); +void debug_print_8bit (uint8_t value); +void debug_print_16bit (uint16_t value); +void debug_print_32bit (uint32_t value); + + +#endif diff --git a/sw/controller/src/flash.c b/sw/controller/src/flash.c new file mode 100644 index 0000000..bca24aa --- /dev/null +++ b/sw/controller/src/flash.c @@ -0,0 +1,21 @@ +#include "flash.h" +#include "fpga.h" + + +#define FLASH_ADDRESS (0x04000000UL) +#define ERASE_BLOCK_SIZE (64 * 1024) + + +void flash_wait_busy (void) { + uint8_t dummy[2]; + fpga_mem_read(FLASH_ADDRESS, 2, dummy); +} + +void flash_erase_block (uint32_t offset) { + for (int i = 0; i < (FLASH_ERASE_BLOCK_SIZE / ERASE_BLOCK_SIZE); i++) { + fpga_reg_set(REG_FLASH_SCR, offset); + while (fpga_reg_get(REG_FLASH_SCR) & FLASH_SCR_BUSY); + offset += ERASE_BLOCK_SIZE; + } + flash_wait_busy(); +} diff --git a/sw/controller/src/flash.h b/sw/controller/src/flash.h new file mode 100644 index 0000000..a60d010 --- /dev/null +++ b/sw/controller/src/flash.h @@ -0,0 +1,15 @@ +#ifndef FLASH_H__ +#define FLASH_H__ + + +#include + + +#define FLASH_ERASE_BLOCK_SIZE (128 * 1024) + + +void flash_wait_busy (void); +void flash_erase_block (uint32_t offset); + + +#endif diff --git a/sw/controller/src/flashram.c b/sw/controller/src/flashram.c new file mode 100644 index 0000000..21ccab4 --- /dev/null +++ b/sw/controller/src/flashram.c @@ -0,0 +1,71 @@ +#include +#include "fpga.h" + + +#define FLASHRAM_SIZE (128 * 1024) +#define FLASHRAM_SECTOR_SIZE (16 * 1024) +#define FLASHRAM_PAGE_SIZE (128) +#define FLASHRAM_ADDRESS (0x03FE0000UL) +#define FLASHRAM_BUFFER_ADDRESS (0x05002900UL) + + +enum operation { + OP_NONE, + OP_ERASE_ALL, + OP_ERASE_SECTOR, + OP_WRITE_PAGE +}; + + +static enum operation flashram_operation_type (uint32_t scr) { + if (!(scr & FLASHRAM_SCR_PENDING)) { + return OP_NONE; + } + + if (scr & FLASHRAM_SCR_WRITE_OR_ERASE) { + if (scr & FLASHRAM_SCR_SECTOR_OR_ALL) { + return OP_ERASE_ALL; + } else { + return OP_ERASE_SECTOR; + } + } else { + return OP_WRITE_PAGE; + } +} + + +void flashram_init (void) { + fpga_reg_set(REG_FLASHRAM_SCR, FLASHRAM_SCR_DONE); +} + +void flashram_process (void) { + uint32_t scr = fpga_reg_get(REG_FLASHRAM_SCR); + enum operation op = flashram_operation_type(scr); + uint8_t buffer[FLASHRAM_PAGE_SIZE]; + uint32_t address = FLASHRAM_ADDRESS; + uint32_t erase_size = (op == OP_ERASE_SECTOR) ? FLASHRAM_SECTOR_SIZE : FLASHRAM_SIZE; + uint32_t page = (op != OP_ERASE_ALL) ? ((scr & FLASHRAM_SCR_PAGE_MASK) >> FLASHRAM_SCR_PAGE_BIT) : 0; + address += page * FLASHRAM_PAGE_SIZE; + + switch (op) { + case OP_ERASE_ALL: + case OP_ERASE_SECTOR: + for (int i = 0; i < FLASHRAM_PAGE_SIZE; i++) { + buffer[i] = 0xFF; + } + for (int i = 0; i < erase_size; i += FLASHRAM_PAGE_SIZE) { + fpga_mem_write(address + i, FLASHRAM_PAGE_SIZE, buffer); + } + fpga_reg_set(REG_FLASHRAM_SCR, FLASHRAM_SCR_DONE); + break; + + case OP_WRITE_PAGE: + fpga_mem_copy(FLASHRAM_BUFFER_ADDRESS, address, FLASHRAM_PAGE_SIZE); + fpga_reg_set(REG_FLASHRAM_SCR, FLASHRAM_SCR_DONE); + break; + + case OP_NONE: + default: + break; + } +} diff --git a/sw/riscv/src/flashram.h b/sw/controller/src/flashram.h similarity index 56% rename from sw/riscv/src/flashram.h rename to sw/controller/src/flashram.h index 2d682bc..4fdb24d 100644 --- a/sw/riscv/src/flashram.h +++ b/sw/controller/src/flashram.h @@ -2,11 +2,8 @@ #define FLASHRAM_H__ -#include "sys.h" - - void flashram_init (void); -void process_flashram (void); +void flashram_process (void); #endif diff --git a/sw/controller/src/fpga.c b/sw/controller/src/fpga.c new file mode 100644 index 0000000..9edf7c6 --- /dev/null +++ b/sw/controller/src/fpga.c @@ -0,0 +1,124 @@ +#include "fpga.h" +#include "hw.h" + + +uint8_t fpga_id_get (void) { + fpga_cmd_t cmd = CMD_IDENTIFY; + uint8_t id; + + hw_spi_start(); + hw_spi_trx((uint8_t *) (&cmd), 1, SPI_TX); + hw_spi_trx(&id, 1, SPI_RX); + hw_spi_stop(); + + return id; +} + +uint32_t fpga_reg_get (fpga_reg_t reg) { + fpga_cmd_t cmd = CMD_REG_READ; + uint32_t value; + + hw_spi_start(); + hw_spi_trx((uint8_t *) (&cmd), 1, SPI_TX); + hw_spi_trx(®, 1, SPI_TX); + hw_spi_trx((uint8_t *) (&value), 4, SPI_RX); + hw_spi_stop(); + + return value; +} + +void fpga_reg_set (fpga_reg_t reg, uint32_t value) { + fpga_cmd_t cmd = CMD_REG_WRITE; + + hw_spi_start(); + hw_spi_trx((uint8_t *) (&cmd), 1, SPI_TX); + hw_spi_trx(®, 1, SPI_TX); + hw_spi_trx((uint8_t *) (&value), 4, SPI_TX); + hw_spi_stop(); +} + +void fpga_mem_read (uint32_t address, size_t length, uint8_t *buffer) { + fpga_cmd_t cmd = CMD_MEM_READ; + uint8_t buffer_address = 0; + size_t dma_length = length; + if ((dma_length % 2) != 0) { + dma_length += 1; + } + + fpga_reg_set(REG_MEM_ADDRESS, address); + fpga_reg_set(REG_MEM_SCR, (dma_length << MEM_SCR_LENGTH_BIT) | MEM_SCR_START); + while (fpga_reg_get(REG_MEM_SCR) & MEM_SCR_BUSY); + + hw_spi_start(); + hw_spi_trx((uint8_t *) (&cmd), 1, SPI_TX); + hw_spi_trx(&buffer_address, 1, SPI_TX); + hw_spi_trx(buffer, length, SPI_RX); + hw_spi_stop(); +} + +void fpga_mem_write (uint32_t address, size_t length, uint8_t *buffer) { + fpga_cmd_t cmd = CMD_MEM_WRITE; + uint8_t buffer_address = 0; + size_t dma_length = length; + if ((dma_length % 2) != 0) { + dma_length += 1; + } + + hw_spi_start(); + hw_spi_trx((uint8_t *) (&cmd), 1, SPI_TX); + hw_spi_trx(&buffer_address, 1, SPI_TX); + hw_spi_trx(buffer, length, SPI_TX); + hw_spi_stop(); + + fpga_reg_set(REG_MEM_ADDRESS, address); + fpga_reg_set(REG_MEM_SCR, (dma_length << MEM_SCR_LENGTH_BIT) | MEM_SCR_DIRECTION | MEM_SCR_START); + while (fpga_reg_get(REG_MEM_SCR) & MEM_SCR_BUSY); +} + +void fpga_mem_copy (uint32_t src, uint32_t dst, size_t length) { + size_t dma_length = length; + if ((dma_length % 2) != 0) { + dma_length += 1; + } + + fpga_reg_set(REG_MEM_ADDRESS, src); + fpga_reg_set(REG_MEM_SCR, (dma_length << MEM_SCR_LENGTH_BIT) | MEM_SCR_START); + while (fpga_reg_get(REG_MEM_SCR) & MEM_SCR_BUSY); + + fpga_reg_set(REG_MEM_ADDRESS, dst); + fpga_reg_set(REG_MEM_SCR, (dma_length << MEM_SCR_LENGTH_BIT) | MEM_SCR_DIRECTION | MEM_SCR_START); + while (fpga_reg_get(REG_MEM_SCR) & MEM_SCR_BUSY); +} + +uint8_t fpga_usb_status_get (void) { + fpga_cmd_t cmd = CMD_USB_STATUS; + uint8_t status; + + hw_spi_start(); + hw_spi_trx((uint8_t *) (&cmd), 1, SPI_TX); + hw_spi_trx(&status, 1, SPI_RX); + hw_spi_stop(); + + return status; +} + +uint8_t fpga_usb_pop (void) { + fpga_cmd_t cmd = CMD_USB_READ; + uint8_t data; + + hw_spi_start(); + hw_spi_trx((uint8_t *) (&cmd), 1, SPI_TX); + hw_spi_trx(&data, 1, SPI_RX); + hw_spi_stop(); + + return data; +} + +void fpga_usb_push (uint8_t data) { + fpga_cmd_t cmd = CMD_USB_WRITE; + + hw_spi_start(); + hw_spi_trx((uint8_t *) (&cmd), 1, SPI_TX); + hw_spi_trx(&data, 1, SPI_TX); + hw_spi_stop(); +} diff --git a/sw/controller/src/fpga.h b/sw/controller/src/fpga.h new file mode 100644 index 0000000..28a4979 --- /dev/null +++ b/sw/controller/src/fpga.h @@ -0,0 +1,199 @@ +#ifndef FPGA_H__ +#define FPGA_H__ + + +#include +#include + + +typedef enum { + CMD_IDENTIFY, + CMD_REG_READ, + CMD_REG_WRITE, + CMD_MEM_READ, + CMD_MEM_WRITE, + CMD_USB_STATUS, + CMD_USB_READ, + CMD_USB_WRITE +} fpga_cmd_t; + +typedef enum { + REG_MEM_ADDRESS, + REG_MEM_SCR, + REG_USB_SCR, + REG_USB_DMA_ADDRESS, + REG_USB_DMA_LENGTH, + REG_USB_DMA_SCR, + REG_CFG_SCR, + REG_CFG_DATA_0, + REG_CFG_DATA_1, + REG_CFG_CMD, + REG_CFG_VERSION, + REG_FLASHRAM_SCR, + REG_FLASH_SCR, + REG_RTC_SCR, + REG_RTC_TIME_0, + REG_RTC_TIME_1, + REG_SD_SCR, + REG_SD_ARG, + REG_SD_CMD, + REG_SD_RSP_0, + REG_SD_RSP_1, + REG_SD_RSP_2, + REG_SD_RSP_3, + REG_SD_DAT, + REG_SD_DMA_ADDRESS, + REG_SD_DMA_LENGTH, + REG_SD_DMA_SCR, + REG_DD_SCR, + REG_DD_CMD_DATA, + REG_DD_HEAD_TRACK, + REG_DD_SECTOR_INFO, + REG_DD_DRIVE_ID, + REG_VENDOR_SCR, + REG_VENDOR_DATA, + REG_DEBUG_0, + REG_DEBUG_1, +} fpga_reg_t; + + +#define ALIGN(value, align) (((value) + ((typeof(value))(align) - 1)) & ~((typeof(value))(align) - 1)) +#define SWAP16(x) ((((x) & 0xFF) << 8) | (((x) & 0xFF00) >> 8)) +#define SWAP32(x) (((x) & 0xFF) << 24 | ((x) & 0xFF00) << 8 | ((x) & 0xFF0000) >> 8 | ((x) & 0xFF000000) >> 24) + +#define FPGA_ID (0x64) + +#define FPGA_MAX_MEM_TRANSFER (1024) + +#define USB_STATUS_RXNE (1 << 0) +#define USB_STATUS_TXE (1 << 1) + +#define MEM_SCR_START (1 << 0) +#define MEM_SCR_STOP (1 << 1) +#define MEM_SCR_DIRECTION (1 << 2) +#define MEM_SCR_BUSY (1 << 3) +#define MEM_SCR_LENGTH_BIT (4) + +#define USB_SCR_FIFO_FLUSH (1 << 0) +#define USB_SCR_RXNE (1 << 1) +#define USB_SCR_TXE (1 << 2) +#define USB_SCR_RESET_PENDING (1 << 3) +#define USB_SCR_RESET_ACK (1 << 4) +#define USB_SCR_WRITE_FLUSH (1 << 5) +#define USB_SCR_RX_COUNT_BIT (6) +#define USB_SCR_RX_COUNT_MASK (0x7FF << USB_SCR_RX_COUNT_BIT) +#define USB_SCR_TX_COUNT_BIT (17) +#define USB_SCR_TX_COUNT_MASK (0x7FF << USB_SCR_TX_COUNT_BIT) +#define USB_SCR_RESET_STATE (1 << 28) +#define USB_SCR_PWRSAV (1 << 29) + +#define DMA_SCR_START (1 << 0) +#define DMA_SCR_STOP (1 << 1) +#define DMA_SCR_DIRECTION (1 << 2) +#define DMA_SCR_BUSY (1 << 3) + +#define CFG_SCR_BOOTLOADER_ENABLED (1 << 0) +#define CFG_SCR_BOOTLOADER_SKIP (1 << 1) +#define CFG_SCR_ROM_WRITE_ENABLED (1 << 2) +#define CFG_SCR_ROM_SHADOW_ENABLED (1 << 3) +#define CFG_SCR_SRAM_ENABLED (1 << 4) +#define CFG_SCR_SRAM_BANKED (1 << 5) +#define CFG_SCR_FLASHRAM_ENABLED (1 << 6) +#define CFG_SCR_DD_ENABLED (1 << 7) +#define CFG_SCR_DDIPL_ENABLED (1 << 8) +#define CFG_SCR_EEPROM_ENABLED (1 << 9) +#define CFG_SCR_EEPROM_16K (1 << 10) +#define CFG_SCR_ROM_EXTENDED_ENABLED (1 << 11) +#define CFG_SCR_BUTTON_STATE (1 << 31) + +#define CFG_CMD_BIT (0) +#define CFG_CMD_MASK (0xFF << CFG_CMD_BIT) +#define CFG_CMD_PENDING (1 << 8) +#define CFG_CMD_DONE (1 << 9) +#define CFG_CMD_ERROR (1 << 10) +#define CFG_CMD_IRQ (1 << 11) + +#define FLASHRAM_SCR_DONE (1 << 0) +#define FLASHRAM_SCR_PENDING (1 << 1) +#define FLASHRAM_SCR_PAGE_BIT (2) +#define FLASHRAM_SCR_PAGE_MASK (0x3FF << FLASHRAM_SCR_PAGE_BIT) +#define FLASHRAM_SCR_SECTOR_OR_ALL (1 << 12) +#define FLASHRAM_SCR_WRITE_OR_ERASE (1 << 13) + +#define FLASH_SCR_BUSY (1 << 0) + +#define RTC_SCR_PENDING (1 << 0) +#define RTC_SCR_DONE (1 << 1) +#define RTC_SCR_MAGIC (0x52544300) +#define RTC_SCR_MAGIC_MASK (0xFFFFFF00) + +#define SD_SCR_CLOCK_MODE_OFF (0 << 0) +#define SD_SCR_CLOCK_MODE_400KHZ (1 << 0) +#define SD_SCR_CLOCK_MODE_25MHZ (2 << 0) +#define SD_SCR_CLOCK_MODE_50MHZ (3 << 0) +#define SD_SCR_CLOCK_MODE_BIT (0) +#define SD_SCR_CLOCK_MODE_MASK (0x3 << SD_SCR_CLOCK_MODE_BIT) +#define SD_SCR_CMD_BUSY (1 << 2) +#define SD_SCR_CMD_ERROR (1 << 3) +#define SD_SCR_CARD_BUSY (1 << 4) +#define SD_SCR_CARD_INSERTED (1 << 5) +#define SD_SCR_RX_COUNT_BIT (6) +#define SD_SCR_RX_COUNT_MASK (0x7FF << SD_SCR_RX_COUNT_BIT) +#define SD_SCR_TX_COUNT_BIT (17) +#define SD_SCR_TX_COUNT_MASK (0x7FF << SD_SCR_TX_COUNT_BIT) + +#define SD_CMD_INDEX_BIT (0) +#define SD_CMD_INDEX_MASK (0x3F) +#define SD_CMD_SKIP_RESPONSE (1 << 6) +#define SD_CMD_RESERVED_RESPONSE (1 << 7) +#define SD_CMD_LONG_RESPONSE (1 << 8) +#define SD_CMD_IGNORE_CRC (1 << 9) + +#define SD_DAT_FIFO_FLUSH (1 << 0) +#define SD_DAT_START_WRITE (1 << 1) +#define SD_DAT_START_READ (1 << 2) +#define SD_DAT_STOP (1 << 3) +#define SD_DAT_BLOCKS_BIT (4) +#define SD_DAT_BLOCKS_MASK (0xFF << SD_DAT_BLOCKS_BIT) +#define SD_DAT_BUSY (1 << 12) +#define SD_DAT_ERROR (1 << 13) + +#define DD_SCR_HARD_RESET (1 << 0) +#define DD_SCR_HARD_RESET_CLEAR (1 << 1) +#define DD_SCR_CMD_PENDING (1 << 2) +#define DD_SCR_CMD_READY (1 << 3) +#define DD_SCR_BM_PENDING (1 << 4) +#define DD_SCR_BM_READY (1 << 5) +#define DD_SCR_DISK_INSERTED (1 << 6) +#define DD_SCR_DISK_CHANGED (1 << 7) +#define DD_SCR_BM_START (1 << 8) +#define DD_SCR_BM_START_CLEAR (1 << 9) +#define DD_SCR_BM_STOP (1 << 10) +#define DD_SCR_BM_STOP_CLEAR (1 << 11) +#define DD_SCR_BM_TRANSFER_MODE (1 << 12) +#define DD_SCR_BM_TRANSFER_BLOCKS (1 << 13) +#define DD_SCR_BM_TRANSFER_DATA (1 << 14) +#define DD_SCR_BM_TRANSFER_C2 (1 << 15) +#define DD_SCR_BM_MICRO_ERROR (1 << 16) +#define DD_SCR_BM_ACK (1 << 17) +#define DD_SCR_BM_ACK_CLEAR (1 << 18) +#define DD_SCR_BM_CLEAR (1 << 19) + +#define DD_TRACK_MASK (0x0FFF) +#define DD_HEAD_MASK (0x1000) +#define DD_HEAD_TRACK_MASK (DD_HEAD_MASK | DD_TRACK_MASK) +#define DD_HEAD_TRACK_INDEX_LOCK (1 << 13) + + +uint8_t fpga_id_get (void); +uint32_t fpga_reg_get (fpga_reg_t reg); +void fpga_reg_set (fpga_reg_t reg, uint32_t value); +void fpga_mem_read (uint32_t address, size_t length, uint8_t *buffer); +void fpga_mem_write (uint32_t address, size_t length, uint8_t *buffer); +void fpga_mem_copy (uint32_t src, uint32_t dst, size_t length); +uint8_t fpga_usb_status_get (void); +uint8_t fpga_usb_pop (void); +void fpga_usb_push (uint8_t data); + + +#endif diff --git a/sw/controller/src/gvr.c b/sw/controller/src/gvr.c new file mode 100644 index 0000000..bdc836a --- /dev/null +++ b/sw/controller/src/gvr.c @@ -0,0 +1,33 @@ +#include "button.h" +#include "cfg.h" +#include "dd.h" +#include "flashram.h" +#include "fpga.h" +#include "isv.h" +#include "rtc.h" +#include "sd.h" +#include "usb.h" + + +void gvr_task (void) { + while (fpga_id_get() != FPGA_ID); + + button_init(); + cfg_init(); + dd_init(); + flashram_init(); + isv_init(); + sd_init(); + usb_init(); + + while (1) { + button_process(); + cfg_process(); + dd_process(); + flashram_process(); + isv_process(); + rtc_process(); + sd_process(); + usb_process(); + } +} diff --git a/sw/controller/src/gvr.h b/sw/controller/src/gvr.h new file mode 100644 index 0000000..2a782d1 --- /dev/null +++ b/sw/controller/src/gvr.h @@ -0,0 +1,8 @@ +#ifndef GVR_H__ +#define GVR_H__ + + +void gvr_task (void); + + +#endif diff --git a/sw/controller/src/hw.c b/sw/controller/src/hw.c new file mode 100644 index 0000000..cff7c0e --- /dev/null +++ b/sw/controller/src/hw.c @@ -0,0 +1,604 @@ +#include +#include "hw.h" + + +typedef enum { + GPIO_INPUT = 0b00, + GPIO_OUTPUT = 0b01, + GPIO_ALT = 0b10, + GPIO_ANALOG = 0b11 +} gpio_mode_t; + +typedef enum { + GPIO_PP = 0b0, + GPIO_OD = 0b1 +} gpio_ot_t; + +typedef enum { + GPIO_SPEED_VLOW = 0b00, + GPIO_SPEED_LOW = 0b01, + GPIO_SPEED_HIGH = 0b10, + GPIO_SPEED_VHIGH = 0b11 +} gpio_ospeed_t; + +typedef enum { + GPIO_PULL_NONE = 0b00, + GPIO_PULL_UP = 0b01, + GPIO_PULL_DOWN = 0b10 +} gpio_pupd_t; + +typedef enum { + GPIO_AF_0 = 0x00, + GPIO_AF_1 = 0x01, + GPIO_AF_2 = 0x02, + GPIO_AF_3 = 0x03, + GPIO_AF_4 = 0x04, + GPIO_AF_5 = 0x05, + GPIO_AF_6 = 0x06, + GPIO_AF_7 = 0x07 +} gpio_af_t; + + +typedef struct { + void (*volatile falling)(void); + void (*volatile rising)(void); +} gpio_irq_callback_t; + + +static const GPIO_TypeDef *gpios[] = { GPIOA, GPIOB, 0, 0, 0, 0, 0, 0 }; +static gpio_irq_callback_t gpio_irq_callbacks[16]; +static volatile uint8_t *i2c_data_txptr; +static volatile uint8_t *i2c_data_rxptr; +static volatile uint32_t i2c_next_cr2; +static void (*volatile i2c_callback)(void); +static const TIM_TypeDef *tims[] = { TIM14, TIM16, TIM17, TIM3, TIM1 }; +static void (*volatile tim_callbacks[5])(void); + + +static void hw_gpio_init (gpio_id_t id, gpio_mode_t mode, gpio_ot_t ot, gpio_ospeed_t ospeed, gpio_pupd_t pupd, gpio_af_t af, int value) { + GPIO_TypeDef tmp; + GPIO_TypeDef *gpio = ((GPIO_TypeDef *) (gpios[(id >> 4) & 0x07])); + uint8_t pin = (id & 0x0F); + uint8_t afr = ((pin < 8) ? 0 : 1); + + tmp.MODER = (gpio->MODER & ~(GPIO_MODER_MODE0_Msk << (pin * 2))); + tmp.OTYPER = (gpio->OTYPER & ~(GPIO_OTYPER_OT0_Msk << pin)); + tmp.OSPEEDR = (gpio->OSPEEDR & ~(GPIO_OSPEEDR_OSPEED0_Msk << (pin * 2))); + tmp.PUPDR = (gpio->PUPDR & ~(GPIO_PUPDR_PUPD0_Msk << (pin * 2))); + tmp.AFR[afr] = (gpio->AFR[afr] & ~(GPIO_AFRL_AFSEL0_Msk << ((pin - (afr * 8)) * 4))); + + gpio->MODER |= (GPIO_MODER_MODE0_Msk << (pin * 2)); + gpio->OTYPER = (tmp.OTYPER | (ot << pin)); + gpio->OSPEEDR = (tmp.OSPEEDR | (ospeed << (pin * 2))); + gpio->PUPDR = (tmp.PUPDR | (pupd << (pin * 2))); + gpio->AFR[afr] = (tmp.AFR[afr] | (af << ((pin - (afr * 8)) * 4))); + gpio->BSRR = ((value ? GPIO_BSRR_BS0 : GPIO_BSRR_BR0) << pin); + gpio->MODER = (tmp.MODER | (mode << (pin * 2))); +} + +void hw_gpio_irq_setup (gpio_id_t id, gpio_irq_t irq, void (*callback)(void)) { + uint8_t port = ((id >> 4) & 0x07); + uint8_t pin = (id & 0x0F); + if (irq == GPIO_IRQ_FALLING) { + EXTI->FTSR1 |= (EXTI_FTSR1_FT0 << pin); + gpio_irq_callbacks[pin].falling = callback; + } else { + EXTI->RTSR1 |= (EXTI_RTSR1_RT0 << pin); + gpio_irq_callbacks[pin].rising = callback; + } + EXTI->EXTICR[pin / 4] |= (port << (8 * (pin % 4))); + EXTI->IMR1 |= (EXTI_IMR1_IM0 << pin); +} + +uint32_t hw_gpio_get (gpio_id_t id) { + GPIO_TypeDef *gpio = ((GPIO_TypeDef *) (gpios[(id >> 4) & 0x07])); + uint8_t pin = (id & 0x0F); + return gpio->IDR & (GPIO_IDR_ID0 << pin); +} + +void hw_gpio_set (gpio_id_t id) { + GPIO_TypeDef *gpio = ((GPIO_TypeDef *) (gpios[(id >> 4) & 0x07])); + uint8_t pin = (id & 0x0F); + gpio->BSRR = (GPIO_BSRR_BS0 << pin); +} + +void hw_gpio_reset (gpio_id_t id) { + GPIO_TypeDef *gpio = ((GPIO_TypeDef *) (gpios[(id >> 4) & 0x07])); + uint8_t pin = (id & 0x0F); + gpio->BSRR = (GPIO_BSRR_BR0 << pin); +} + +void hw_uart_write (uint8_t *data, int length) { + for (int i = 0; i < length; i++) { + while (!(USART1->ISR & USART_ISR_TXE_TXFNF)); + USART1->TDR = *data++; + } +} + +void hw_spi_start (void) { + hw_gpio_reset(GPIO_ID_SPI_CS); +} + +void hw_spi_stop (void) { + while (SPI1->SR & SPI_SR_BSY); + hw_gpio_set(GPIO_ID_SPI_CS); +} + +void hw_spi_trx (uint8_t *data, int length, spi_direction_t direction) { + volatile uint8_t dummy __attribute__((unused)); + + DMA1_Channel1->CNDTR = length; + DMA1_Channel2->CNDTR = length; + + if (direction == SPI_TX) { + DMA1_Channel1->CMAR = (uint32_t) (&dummy); + DMA1_Channel1->CCR = DMA_CCR_EN; + + DMA1_Channel2->CMAR = (uint32_t) (data); + DMA1_Channel2->CCR = (DMA_CCR_MINC | DMA_CCR_DIR | DMA_CCR_EN); + } else { + DMA1_Channel1->CMAR = (uint32_t) (data); + DMA1_Channel1->CCR = (DMA_CCR_MINC | DMA_CCR_EN); + + DMA1_Channel2->CMAR = (uint32_t) (&dummy); + DMA1_Channel2->CCR = (DMA_CCR_DIR | DMA_CCR_EN); + } + + while (DMA1_Channel1->CNDTR || DMA1_Channel2->CNDTR); + + DMA1_Channel1->CCR = 0; + DMA1_Channel2->CCR = 0; +} + +void hw_i2c_read (uint8_t i2c_address, uint8_t address, uint8_t *data, uint8_t length, void (*callback)(void)) { + i2c_data_rxptr = data; + i2c_callback = callback; + I2C1->TXDR = address; + i2c_next_cr2 = ( + I2C_CR2_AUTOEND | + (length << I2C_CR2_NBYTES_Pos) | + I2C_CR2_START | + I2C_CR2_RD_WRN | + (i2c_address << I2C_CR2_SADD_Pos) + ); + I2C1->CR2 = ( + (1 << I2C_CR2_NBYTES_Pos) | + I2C_CR2_START | + (i2c_address << I2C_CR2_SADD_Pos) + ); +} + +void hw_i2c_write (uint8_t i2c_address, uint8_t address, uint8_t *data, uint8_t length, void (*callback)(void)) { + i2c_data_txptr = data; + i2c_callback = callback; + I2C1->TXDR = address; + I2C1->CR2 = ( + I2C_CR2_AUTOEND | + ((length + 1) << I2C_CR2_NBYTES_Pos) | + I2C_CR2_START | + (i2c_address << I2C_CR2_SADD_Pos) + ); +} + +uint32_t hw_i2c_get_error (void) { + return I2C1->ISR & I2C_ISR_NACKF; +} + +void hw_i2c_disable_irq (void) { + NVIC_DisableIRQ(I2C1_IRQn); +} + +void hw_i2c_enable_irq (void) { + NVIC_EnableIRQ(I2C1_IRQn); +} + +void hw_tim_setup (tim_id_t id, uint16_t delay, void (*callback)(void)) { + if (delay == 0) { + if (callback) { + callback(); + } + return; + } + TIM_TypeDef *tim = ((TIM_TypeDef *) (tims[id])); + tim->CR1 = (TIM_CR1_OPM | TIM_CR1_URS); + tim->PSC = (64000 - 1); + tim->ARR = delay; + tim->DIER = TIM_DIER_UIE; + tim->EGR = TIM_EGR_UG; + tim->SR = 0; + tim->CR1 |= TIM_CR1_CEN; + tim_callbacks[id] = callback; +} + +void hw_tim_stop (tim_id_t id) { + TIM_TypeDef *tim = ((TIM_TypeDef *) (tims[id])); + tim->CR1 &= ~(TIM_CR1_CEN); + tim_callbacks[id] = 0; +} + +void hw_tim_disable_irq (tim_id_t id) { + switch (id) { + case TIM_ID_CIC: + NVIC_DisableIRQ(TIM14_IRQn); + break; + case TIM_ID_RTC: + NVIC_DisableIRQ(TIM16_IRQn); + break; + case TIM_ID_SD: + NVIC_DisableIRQ(TIM17_IRQn); + break; + case TIM_ID_DD: + NVIC_DisableIRQ(TIM3_IRQn); + break; + case TIM_ID_LED: + NVIC_DisableIRQ(TIM1_BRK_UP_TRG_COM_IRQn); + break; + default: + break; + } +} + +void hw_tim_enable_irq (tim_id_t id) { + switch (id) { + case TIM_ID_CIC: + NVIC_EnableIRQ(TIM14_IRQn); + break; + case TIM_ID_RTC: + NVIC_EnableIRQ(TIM16_IRQn); + break; + case TIM_ID_SD: + NVIC_EnableIRQ(TIM17_IRQn); + break; + case TIM_ID_DD: + NVIC_EnableIRQ(TIM3_IRQn); + break; + case TIM_ID_LED: + NVIC_EnableIRQ(TIM1_BRK_UP_TRG_COM_IRQn); + break; + default: + break; + } +} + +void hw_delay_ms (uint32_t ms) { + SysTick->VAL = 0; + for (uint32_t i = 0; i < ms; i++) { + while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)); + } +} + +void hw_crc32_reset (void) { + CRC->CR |= CRC_CR_RESET; +} + +uint32_t hw_crc32_calculate (uint8_t *data, uint32_t length) { + for (uint32_t i = 0; i < length; i++) { + *(__IO uint8_t *) (&CRC->DR) = data[i]; + } + return (CRC->DR ^ 0xFFFFFFFF); +} + +uint32_t hw_flash_size (void) { + return FLASH_SIZE; +} + +static void hw_flash_unlock (void) { + while (FLASH->SR & FLASH_SR_BSY1); + if (FLASH->CR & FLASH_CR_LOCK) { + FLASH->KEYR = 0x45670123; + __ISB(); + FLASH->KEYR = 0xCDEF89AB; + } +} + +void hw_flash_erase (void) { + hw_flash_unlock(); + FLASH->CR |= (FLASH_CR_STRT | FLASH_CR_MER1); + while (FLASH->SR & FLASH_SR_BSY1); +} + +void hw_flash_program (uint32_t offset, hw_flash_t value) { + hw_flash_unlock(); + FLASH->CR |= FLASH_CR_PG; + *(__IO uint32_t *) (FLASH_BASE + offset) = ((value) & 0xFFFFFFFF); + __ISB(); + *(__IO uint32_t *) (FLASH_BASE + offset + 4) = ((value >> 32) & 0xFFFFFFFF); + while (FLASH->SR & FLASH_SR_BSY1); + FLASH->CR &= ~(FLASH_CR_PG); +} + +hw_flash_t hw_flash_read (uint32_t offset) { + return *(uint64_t *) (FLASH_BASE + offset); +} + +void hw_loader_reset (loader_parameters_t *parameters) { + RCC->APBENR1 |= RCC_APBENR1_PWREN | RCC_APBENR1_RTCAPBEN; + PWR->CR1 |= PWR_CR1_DBP; + TAMP->BKP0R = parameters->magic; + TAMP->BKP1R = parameters->flags; + TAMP->BKP2R = parameters->mcu_address; + TAMP->BKP3R = parameters->fpga_address; + TAMP->BKP4R = parameters->bootloader_address; + PWR->CR1 &= ~(PWR_CR1_DBP); + RCC->APBENR1 &= ~(RCC_APBENR1_PWREN | RCC_APBENR1_RTCAPBEN); + NVIC_SystemReset(); +} + +void hw_loader_get_parameters (loader_parameters_t *parameters) { + RCC->APBENR1 |= RCC_APBENR1_PWREN | RCC_APBENR1_RTCAPBEN; + parameters->magic = TAMP->BKP0R; + parameters->flags = TAMP->BKP1R; + parameters->mcu_address = TAMP->BKP2R; + parameters->fpga_address = TAMP->BKP3R; + parameters->bootloader_address = TAMP->BKP4R; + PWR->CR1 |= PWR_CR1_DBP; + TAMP->BKP0R = 0; + TAMP->BKP1R = 0; + TAMP->BKP2R = 0; + TAMP->BKP3R = 0; + TAMP->BKP4R = 0; + PWR->CR1 &= ~(PWR_CR1_DBP); + RCC->APBENR1 &= ~(RCC_APBENR1_PWREN | RCC_APBENR1_RTCAPBEN); +} + +static void hw_init_mcu (void) { + FLASH->ACR |= (FLASH_ACR_PRFTEN | (2 << FLASH_ACR_LATENCY_Pos)); + while ((FLASH->ACR & FLASH_ACR_LATENCY_Msk) != (2 << FLASH_ACR_LATENCY_Pos)); + + RCC->PLLCFGR = ( + ((2 - 1) << RCC_PLLCFGR_PLLR_Pos) + | RCC_PLLCFGR_PLLREN + | (16 << RCC_PLLCFGR_PLLN_Pos) + | ((2 - 1) << RCC_PLLCFGR_PLLM_Pos) + | RCC_PLLCFGR_PLLSRC_HSI + ); + + RCC->CR |= RCC_CR_PLLON; + while ((RCC->CR & RCC_CR_PLLRDY_Msk) != RCC_CR_PLLRDY); + + RCC->CFGR = RCC_CFGR_SW_1; + while ((RCC->CFGR & RCC_CFGR_SWS_Msk) != RCC_CFGR_SWS_1); + + RCC->IOPENR |= RCC_IOPENR_GPIOAEN | RCC_IOPENR_GPIOBEN; + + SysTick->LOAD = (((64000000 / 1000)) - 1); + SysTick->VAL = 0; + SysTick->CTRL = (SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk); + + hw_gpio_init(GPIO_ID_LED, GPIO_OUTPUT, GPIO_PP, GPIO_SPEED_VLOW, GPIO_PULL_NONE, GPIO_AF_0, 0); +} + +static void hw_init_spi (void) { + RCC->AHBENR |= RCC_AHBENR_DMA1EN; + RCC->APBENR2 |= RCC_APBENR2_SPI1EN; + + DMAMUX1_Channel0->CCR = (16 << DMAMUX_CxCR_DMAREQ_ID_Pos); + DMAMUX1_Channel1->CCR = (17 << DMAMUX_CxCR_DMAREQ_ID_Pos); + + DMA1_Channel1->CPAR = (uint32_t) (&SPI1->DR); + DMA1_Channel2->CPAR = (uint32_t) (&SPI1->DR); + + SPI1->CR2 = ( + SPI_CR2_FRXTH | + (8 - 1) << SPI_CR2_DS_Pos | + SPI_CR2_TXDMAEN | + SPI_CR2_RXDMAEN + ); + SPI1->CR1 = ( + SPI_CR1_SSM | + SPI_CR1_SSI | + SPI_CR1_BR_1 | + SPI_CR1_SPE | + SPI_CR1_MSTR | + SPI_CR1_CPHA + ); + + hw_gpio_init(GPIO_ID_SPI_CS, GPIO_OUTPUT, GPIO_PP, GPIO_SPEED_HIGH, GPIO_PULL_NONE, GPIO_AF_0, 1); + hw_gpio_init(GPIO_ID_SPI_CLK, GPIO_ALT, GPIO_PP, GPIO_SPEED_HIGH, GPIO_PULL_NONE, GPIO_AF_0, 0); + hw_gpio_init(GPIO_ID_SPI_MISO, GPIO_ALT, GPIO_PP, GPIO_SPEED_HIGH, GPIO_PULL_DOWN, GPIO_AF_0, 0); + hw_gpio_init(GPIO_ID_SPI_MOSI, GPIO_ALT, GPIO_PP, GPIO_SPEED_HIGH, GPIO_PULL_NONE, GPIO_AF_0, 0); + hw_gpio_init(GPIO_ID_FPGA_INT, GPIO_INPUT, GPIO_PP, GPIO_SPEED_VLOW, GPIO_PULL_UP, GPIO_AF_0, 0); +} + +static void hw_init_i2c (void) { + RCC->APBENR1 |= RCC_APBENR1_I2C1EN; + + I2C1->TIMINGR = 0x10B17DB5UL; + I2C1->CR1 |= (I2C_CR1_TCIE | I2C_CR1_STOPIE | I2C_CR1_RXIE | I2C_CR1_TXIE | I2C_CR1_PE); + + hw_gpio_init(GPIO_ID_I2C_SCL, GPIO_ALT, GPIO_OD, GPIO_SPEED_VLOW, GPIO_PULL_NONE, GPIO_AF_6, 0); + hw_gpio_init(GPIO_ID_I2C_SDA, GPIO_ALT, GPIO_OD, GPIO_SPEED_VLOW, GPIO_PULL_NONE, GPIO_AF_6, 0); + hw_gpio_init(GPIO_ID_RTC_MFP, GPIO_INPUT, GPIO_PP, GPIO_SPEED_VLOW, GPIO_PULL_UP, GPIO_AF_0, 0); +} + +static void hw_init_uart (void) { + RCC->APBENR2 |= (RCC_APBENR2_USART1EN | RCC_APBENR2_SYSCFGEN); + + SYSCFG->CFGR1 |= (SYSCFG_CFGR1_PA12_RMP | SYSCFG_CFGR1_PA11_RMP); + + USART1->BRR = (64000000UL) / 1000000; + USART1->CR1 = USART_CR1_FIFOEN | USART_CR1_TE | USART_CR1_UE; + + hw_gpio_init(GPIO_ID_UART_TX, GPIO_ALT, GPIO_PP, GPIO_SPEED_LOW, GPIO_PULL_NONE, GPIO_AF_1, 0); + hw_gpio_init(GPIO_ID_UART_RX, GPIO_ALT, GPIO_PP, GPIO_SPEED_LOW, GPIO_PULL_NONE, GPIO_AF_1, 0); +} + +static void hw_init_tim (void) { + RCC->APBENR1 |= ( + RCC_APBENR1_DBGEN | + RCC_APBENR1_TIM3EN + ); + RCC->APBENR2 |= ( + RCC_APBENR2_TIM17EN | + RCC_APBENR2_TIM16EN | + RCC_APBENR2_TIM14EN | + RCC_APBENR2_USART1EN | + RCC_APBENR2_TIM1EN + ); + + DBG->APBFZ1 |= DBG_APB_FZ1_DBG_TIM3_STOP; + DBG->APBFZ2 |= ( + DBG_APB_FZ2_DBG_TIM17_STOP | + DBG_APB_FZ2_DBG_TIM16_STOP | + DBG_APB_FZ2_DBG_TIM14_STOP | + DBG_APB_FZ2_DBG_TIM1_STOP + ); +} + +static void hw_init_misc (void) { + RCC->AHBENR |= RCC_AHBENR_CRCEN; + + CRC->CR = (CRC_CR_REV_OUT | CRC_CR_REV_IN_0); + + hw_gpio_init(GPIO_ID_N64_RESET, GPIO_INPUT, GPIO_PP, GPIO_SPEED_VLOW, GPIO_PULL_DOWN, GPIO_AF_0, 0); + hw_gpio_init(GPIO_ID_N64_CIC_CLK, GPIO_INPUT, GPIO_PP, GPIO_SPEED_VLOW, GPIO_PULL_DOWN, GPIO_AF_0, 0); + hw_gpio_init(GPIO_ID_N64_CIC_DQ, GPIO_OUTPUT, GPIO_OD, GPIO_SPEED_VLOW, GPIO_PULL_UP, GPIO_AF_0, 1); +} + +void hw_init (void) { + hw_init_mcu(); + hw_init_spi(); + hw_init_i2c(); + hw_init_uart(); + hw_init_tim(); + hw_init_misc(); + + NVIC_SetPriority(EXTI0_1_IRQn, 0); + NVIC_SetPriority(EXTI2_3_IRQn, 1); + NVIC_SetPriority(EXTI4_15_IRQn, 2); + NVIC_SetPriority(I2C1_IRQn, 1); + NVIC_SetPriority(TIM14_IRQn, 0); + NVIC_SetPriority(TIM16_IRQn, 1); + NVIC_SetPriority(TIM17_IRQn, 2); + NVIC_SetPriority(TIM3_IRQn, 2); + NVIC_SetPriority(TIM1_BRK_UP_TRG_COM_IRQn, 1); + + NVIC_EnableIRQ(EXTI0_1_IRQn); + NVIC_EnableIRQ(EXTI2_3_IRQn); + NVIC_EnableIRQ(EXTI4_15_IRQn); + NVIC_EnableIRQ(I2C1_IRQn); + NVIC_EnableIRQ(TIM14_IRQn); + NVIC_EnableIRQ(TIM16_IRQn); + NVIC_EnableIRQ(TIM17_IRQn); + NVIC_EnableIRQ(TIM3_IRQn); + NVIC_EnableIRQ(TIM1_BRK_UP_TRG_COM_IRQn); +} + +void hw_loader_init (void) { + hw_init_mcu(); + hw_init_spi(); +} + + +void EXTI0_1_IRQHandler (void) { + for (int i = 0; i <= 1; i++) { + if (EXTI->FPR1 & (EXTI_FPR1_FPIF0 << i)) { + EXTI->FPR1 = (EXTI_FPR1_FPIF0 << i); + if (gpio_irq_callbacks[i].falling) { + gpio_irq_callbacks[i].falling(); + } + } + if (EXTI->RPR1 & (EXTI_RPR1_RPIF0 << i)) { + EXTI->RPR1 = (EXTI_RPR1_RPIF0 << i); + if (gpio_irq_callbacks[i].rising) { + gpio_irq_callbacks[i].rising(); + } + } + } +} + +void EXTI2_3_IRQHandler (void) { + for (int i = 2; i <= 3; i++) { + if (EXTI->FPR1 & (EXTI_FPR1_FPIF0 << i)) { + EXTI->FPR1 = (EXTI_FPR1_FPIF0 << i); + if (gpio_irq_callbacks[i].falling) { + gpio_irq_callbacks[i].falling(); + } + } + if (EXTI->RPR1 & (EXTI_RPR1_RPIF0 << i)) { + EXTI->RPR1 = (EXTI_RPR1_RPIF0 << i); + if (gpio_irq_callbacks[i].rising) { + gpio_irq_callbacks[i].rising(); + } + } + } +} + +void EXTI4_15_IRQHandler (void) { + for (int i = 4; i <= 15; i++) { + if (EXTI->FPR1 & (EXTI_FPR1_FPIF0 << i)) { + EXTI->FPR1 = (EXTI_FPR1_FPIF0 << i); + if (gpio_irq_callbacks[i].falling) { + gpio_irq_callbacks[i].falling(); + } + } + if (EXTI->RPR1 & (EXTI_RPR1_RPIF0 << i)) { + EXTI->RPR1 = (EXTI_RPR1_RPIF0 << i); + if (gpio_irq_callbacks[i].rising) { + gpio_irq_callbacks[i].rising(); + } + } + } +} + +void I2C1_IRQHandler (void) { + if (I2C1->ISR & I2C_ISR_TXIS) { + I2C1->TXDR = *i2c_data_txptr++; + } + + if (I2C1->ISR & I2C_ISR_RXNE) { + *i2c_data_rxptr++ = I2C1->RXDR; + } + + if (I2C1->ISR & I2C_ISR_TC) { + I2C1->CR2 = i2c_next_cr2; + } + + if (I2C1->ISR & I2C_ISR_STOPF) { + I2C1->ICR = I2C_ICR_STOPCF; + if (i2c_callback) { + i2c_callback(); + i2c_callback = 0; + } + } +} + +void TIM14_IRQHandler (void) { + TIM14->SR &= ~(TIM_SR_UIF); + if (tim_callbacks[0]) { + tim_callbacks[0](); + tim_callbacks[0] = 0; + } +} + +void TIM16_IRQHandler (void) { + TIM16->SR &= ~(TIM_SR_UIF); + if (tim_callbacks[1]) { + tim_callbacks[1](); + tim_callbacks[1] = 0; + } +} + +void TIM17_IRQHandler (void) { + TIM17->SR &= ~(TIM_SR_UIF); + if (tim_callbacks[2]) { + tim_callbacks[2](); + tim_callbacks[2] = 0; + } +} + +void TIM3_IRQHandler (void) { + TIM3->SR &= ~(TIM_SR_UIF); + if (tim_callbacks[3]) { + tim_callbacks[3](); + tim_callbacks[3] = 0; + } +} + +void TIM1_BRK_UP_TRG_COM_IRQHandler (void) { + TIM1->SR &= ~(TIM_SR_UIF); + if (tim_callbacks[4]) { + tim_callbacks[4](); + tim_callbacks[4] = 0; + } +} diff --git a/sw/controller/src/hw.h b/sw/controller/src/hw.h new file mode 100644 index 0000000..07658f1 --- /dev/null +++ b/sw/controller/src/hw.h @@ -0,0 +1,92 @@ +#ifndef HW_H__ +#define HW_H__ + + +#include + + +#define GPIO_PORT_PIN(p, n) ((((p) & 0x07) << 4) | ((n) & 0x0F)) + +typedef enum { + GPIO_ID_N64_RESET = GPIO_PORT_PIN(0, 0), + GPIO_ID_N64_CIC_CLK = GPIO_PORT_PIN(0, 1), + GPIO_ID_N64_CIC_DQ = GPIO_PORT_PIN(0, 2), + GPIO_ID_LED = GPIO_PORT_PIN(0, 3), + GPIO_ID_SPI_CS = GPIO_PORT_PIN(0, 4), + GPIO_ID_SPI_CLK = GPIO_PORT_PIN(0, 5), + GPIO_ID_SPI_MISO = GPIO_PORT_PIN(0, 6), + GPIO_ID_SPI_MOSI = GPIO_PORT_PIN(0, 7), + GPIO_ID_UART_TX = GPIO_PORT_PIN(0, 9), + GPIO_ID_UART_RX = GPIO_PORT_PIN(0, 10), + GPIO_ID_FPGA_INT = GPIO_PORT_PIN(1, 2), + GPIO_ID_I2C_SCL = GPIO_PORT_PIN(1, 6), + GPIO_ID_I2C_SDA = GPIO_PORT_PIN(1, 7), + GPIO_ID_RTC_MFP = GPIO_PORT_PIN(1, 9), +} gpio_id_t; + +typedef enum { + GPIO_IRQ_FALLING = 0b01, + GPIO_IRQ_RISING = 0b10, +} gpio_irq_t; + +typedef enum { + TIM_ID_CIC = 0, + TIM_ID_RTC = 1, + TIM_ID_SD = 2, + TIM_ID_DD = 3, + TIM_ID_LED = 4, +} tim_id_t; + +typedef enum { + SPI_TX, + SPI_RX, +} spi_direction_t; + +typedef uint64_t hw_flash_t; + +typedef enum { + LOADER_FLAGS_UPDATE_MCU = (1 << 0), + LOADER_FLAGS_UPDATE_FPGA = (1 << 1), + LOADER_FLAGS_UPDATE_BOOTLOADER = (1 << 2), +} loader_parameters_flags_t; + +typedef struct { + uint32_t magic; + loader_parameters_flags_t flags; + uint32_t mcu_address; + uint32_t fpga_address; + uint32_t bootloader_address; +} loader_parameters_t; + + +void hw_gpio_irq_setup (gpio_id_t id, gpio_irq_t irq, void (*callback)(void)); +uint32_t hw_gpio_get (gpio_id_t id); +void hw_gpio_set (gpio_id_t id); +void hw_gpio_reset (gpio_id_t id); +void hw_uart_write (uint8_t *data, int length); +void hw_spi_start (void); +void hw_spi_stop (void); +void hw_spi_trx (uint8_t *data, int length, spi_direction_t direction); +void hw_i2c_read (uint8_t i2c_address, uint8_t address, uint8_t *data, uint8_t length, void (*callback)(void)); +void hw_i2c_write (uint8_t i2c_address, uint8_t address, uint8_t *data, uint8_t length, void (*callback)(void)); +uint32_t hw_i2c_get_error (void); +void hw_i2c_disable_irq (void); +void hw_i2c_enable_irq (void); +void hw_tim_setup (tim_id_t id, uint16_t delay, void (*callback)(void)); +void hw_tim_stop (tim_id_t id); +void hw_tim_disable_irq (tim_id_t id); +void hw_tim_enable_irq (tim_id_t id); +void hw_delay_ms (uint32_t ms); +void hw_crc32_reset (void); +uint32_t hw_crc32_calculate (uint8_t *data, uint32_t length); +uint32_t hw_flash_size (void); +void hw_flash_erase (void); +void hw_flash_program (uint32_t offset, hw_flash_t value); +hw_flash_t hw_flash_read (uint32_t offset); +void hw_loader_reset (loader_parameters_t *parameters); +void hw_loader_get_parameters (loader_parameters_t *parameters); +void hw_init (void); +void hw_loader_init (void); + + +#endif diff --git a/sw/controller/src/isv.c b/sw/controller/src/isv.c new file mode 100644 index 0000000..2f20f6a --- /dev/null +++ b/sw/controller/src/isv.c @@ -0,0 +1,106 @@ +#include +#include "fpga.h" +#include "isv.h" +#include "usb.h" + + +#define ISV_TOKEN (0x49533634) + +#define ISV_SETUP_TOKEN_ADDRESS (0x00000100) +#define ISV_SETUP_OFFSET_ADDRESS (0x00000104) +#define ISV_SETUP_READY_ADDRESS (0x0000010C) + +#define ISV_TOKEN_OFFSET (0x00000000) +#define ISV_READ_POINTER_OFFSET (0x00000004) +#define ISV_WRITE_POINTER_OFFSET (0x00000014) +#define ISV_BUFFER_OFFSET (0x00000020) + +#define ISV_BUFFER_SIZE ((64 * 1024) - ISV_BUFFER_OFFSET) + + +struct process { + bool ready; + uint32_t address; + uint32_t next_read_pointer; +}; + + +static struct process p; + + +static void isv_set_value (uint32_t address, uint32_t data) { + data = SWAP32(data); + fpga_mem_write(address, 4, (uint8_t *) (&data)); +} + +static uint32_t isv_get_value (uint32_t address) { + uint32_t data; + fpga_mem_read(address, 4, (uint8_t *) (&data)); + return SWAP32(data); +} + +static void isv_update_read_pointer (void) { + p.ready = true; + isv_set_value(p.address + ISV_READ_POINTER_OFFSET, p.next_read_pointer); +} + + +bool isv_set_address (uint32_t address) { + if ((address > 0x03FF0000) || (address % 4)) { + return true; + } + p.address = address; + return false; +} + +uint32_t isv_get_address (void) { + return p.address; +} + +void isv_init (void) { + p.address = 0; + p.ready = true; +} + +void isv_process (void) { + if ((p.address != 0) && p.ready) { + if (isv_get_value(ISV_SETUP_TOKEN_ADDRESS) == ISV_TOKEN) { + isv_set_value(ISV_SETUP_TOKEN_ADDRESS, 0); + isv_set_value(ISV_SETUP_OFFSET_ADDRESS, (p.address | 0x10000000)); + isv_set_value(ISV_SETUP_READY_ADDRESS, ISV_TOKEN); + return; + } + + if (isv_get_value(p.address + ISV_TOKEN_OFFSET) != ISV_TOKEN) { + return; + } + + uint32_t read_pointer = isv_get_value(p.address + ISV_READ_POINTER_OFFSET); + if (read_pointer >= ISV_BUFFER_SIZE) { + return; + } + + uint32_t write_pointer = isv_get_value(p.address + ISV_WRITE_POINTER_OFFSET); + if (write_pointer >= ISV_BUFFER_SIZE) { + return; + } + + if (read_pointer == write_pointer) { + return; + } + + bool wrap = write_pointer < read_pointer; + uint32_t length = (wrap ? ISV_BUFFER_SIZE : write_pointer) - read_pointer; + uint32_t offset = p.address + ISV_BUFFER_OFFSET + read_pointer; + + usb_tx_info_t packet_info; + usb_create_packet(&packet_info, PACKET_CMD_ISV_OUTPUT); + packet_info.dma_length = length; + packet_info.dma_address = offset; + packet_info.done_callback = isv_update_read_pointer; + if (usb_enqueue_packet(&packet_info)) { + p.ready = false; + p.next_read_pointer = wrap ? 0 : write_pointer; + } + } +} diff --git a/sw/controller/src/isv.h b/sw/controller/src/isv.h new file mode 100644 index 0000000..04ae2de --- /dev/null +++ b/sw/controller/src/isv.h @@ -0,0 +1,15 @@ +#ifndef ISV_H__ +#define ISV_H__ + + +#include +#include + + +bool isv_set_address (uint32_t address); +uint32_t isv_get_address (void); +void isv_init (void); +void isv_process (void); + + +#endif diff --git a/sw/controller/src/lcmxo2.c b/sw/controller/src/lcmxo2.c new file mode 100644 index 0000000..4990444 --- /dev/null +++ b/sw/controller/src/lcmxo2.c @@ -0,0 +1,253 @@ +#include +#include "fpga.h" +#include "vendor.h" + + +#define VENDOR_SCR_START (1 << 0) +#define VENDOR_SCR_BUSY (1 << 0) +#define VENDOR_SCR_WRITE (1 << 1) +#define VENDOR_SCR_LENGTH_BIT (2) +#define VENDOR_SCR_DELAY (1 << 4) +#define VENDOR_SCR_ADDRESS_BIT (8) + +#define LCMXO2_CFGCR (0x70) +#define LCMXO2_CFGTXDR (0x71) +#define LCMXO2_CFGRXDR (0x73) + +#define CFGCR_RSTE (1 << 6) +#define CFGCR_WBCE (1 << 7) + +#define ISC_ERASE (0x0E) +#define ISC_DISABLE (0x26) +#define LSC_READ_STATUS (0x3C) +#define LSC_INIT_ADDRESS (0x46) +#define ISC_PROGRAM_DONE (0x5E) +#define LSC_PROG_INCR_NV (0x70) +#define LSC_READ_INCR_NV (0x73) +#define ISC_ENABLE_X (0x74) +#define LSC_REFRESH (0x79) +#define ISC_NOOP (0xFF) + +#define ISC_ERASE_CFG (1 << 18) +#define ISC_ERASE_UFM (1 << 19) + +#define LSC_STATUS_1_BUSY (1 << 4) +#define LSC_STATUS_1_FAIL (1 << 5) + +#define FLASH_PAGE_SIZE (16) +#define FLASH_NUM_PAGES (11260) + + +typedef enum { + CMD_NORMAL, + CMD_DELAYED, + CMD_TWO_OP, +} cmd_type_t; + + +static void lcmxo2_reg_set (uint8_t reg, uint8_t value) { + fpga_reg_set(REG_VENDOR_DATA, value << 24); + fpga_reg_set(REG_VENDOR_SCR, + (reg << VENDOR_SCR_ADDRESS_BIT) | + (0 << VENDOR_SCR_LENGTH_BIT) | + VENDOR_SCR_WRITE | + VENDOR_SCR_START + ); + while (fpga_reg_get(REG_VENDOR_SCR) & VENDOR_SCR_BUSY); +} + +static void lcmxo2_reset_bus (void) { + lcmxo2_reg_set(LCMXO2_CFGCR, CFGCR_RSTE); + lcmxo2_reg_set(LCMXO2_CFGCR, 0); +} + +static void lcmxo2_execute_cmd (uint8_t cmd, uint32_t arg, cmd_type_t type) { + lcmxo2_reg_set(LCMXO2_CFGCR, 0); + uint32_t data = (cmd << 24) | (arg & 0x00FFFFFF); + lcmxo2_reg_set(LCMXO2_CFGCR, CFGCR_WBCE); + fpga_reg_set(REG_VENDOR_DATA, data); + fpga_reg_set(REG_VENDOR_SCR, + (LCMXO2_CFGTXDR << VENDOR_SCR_ADDRESS_BIT) | + (type == CMD_DELAYED ? VENDOR_SCR_DELAY : 0) | + ((type == CMD_TWO_OP ? 2 : 3) << VENDOR_SCR_LENGTH_BIT) | + VENDOR_SCR_WRITE | + VENDOR_SCR_START + ); + while (fpga_reg_get(REG_VENDOR_SCR) & VENDOR_SCR_BUSY); +} + +static void lcmxo2_cleanup (void) { + lcmxo2_reg_set(LCMXO2_CFGCR, 0); +} + +static void lcmxo2_read_data (uint8_t *buffer, uint32_t length) { + while (length > 0) { + uint32_t block_size = (length > 4) ? 4 : length; + fpga_reg_set(REG_VENDOR_SCR, + (LCMXO2_CFGRXDR << VENDOR_SCR_ADDRESS_BIT) | + ((block_size - 1) << VENDOR_SCR_LENGTH_BIT) | + VENDOR_SCR_START + ); + while (fpga_reg_get(REG_VENDOR_SCR) & VENDOR_SCR_BUSY); + uint32_t data = fpga_reg_get(REG_VENDOR_DATA); + data <<= ((4 - block_size) * 8); + for (int i = 0; i < block_size; i++) { + *buffer++ = ((data >> 24) & 0xFF); + data <<= 8; + length -= 1; + } + } +} + +static void lcmxo2_write_data (uint8_t *buffer, uint32_t length) { + while (length > 0) { + uint32_t block_size = (length > 4) ? 4 : length; + uint32_t data = 0; + for (int i = 0; i < block_size; i++) { + data = ((data << 8) | *buffer++); + length -= 1; + } + data <<= ((4 - block_size) * 8); + fpga_reg_set(REG_VENDOR_DATA, data); + fpga_reg_set(REG_VENDOR_SCR, + (LCMXO2_CFGTXDR << VENDOR_SCR_ADDRESS_BIT) | + ((block_size - 1) << VENDOR_SCR_LENGTH_BIT) | + VENDOR_SCR_WRITE | + VENDOR_SCR_START + ); + while (fpga_reg_get(REG_VENDOR_SCR) & VENDOR_SCR_BUSY); + } +} + +static bool lcmxo2_wait_busy (void) { + uint8_t status[4]; + do { + lcmxo2_execute_cmd(LSC_READ_STATUS, 0, CMD_NORMAL); + lcmxo2_read_data(status, 4); + } while(status[2] & LSC_STATUS_1_BUSY); + return status[2] & LSC_STATUS_1_FAIL; +} + +static bool lcmxo2_enable_flash (void) { + lcmxo2_execute_cmd(ISC_ENABLE_X, 0x080000, CMD_NORMAL); + return lcmxo2_wait_busy(); +} + +static void lcmxo2_disable_flash (void) { + lcmxo2_wait_busy(); + lcmxo2_execute_cmd(ISC_DISABLE, 0, CMD_TWO_OP); + lcmxo2_execute_cmd(ISC_NOOP, 0xFFFFFF, CMD_NORMAL); +} + +static bool lcmxo2_erase_flash (void) { + lcmxo2_execute_cmd(ISC_ERASE, ISC_ERASE_UFM | ISC_ERASE_CFG, CMD_NORMAL); + return lcmxo2_wait_busy(); +} + +static void lcmxo2_reset_flash_address (void) { + lcmxo2_execute_cmd(LSC_INIT_ADDRESS, 0, CMD_NORMAL); +} + +static bool lcmxo2_write_flash_page (uint8_t *buffer) { + lcmxo2_execute_cmd(LSC_PROG_INCR_NV, 1, CMD_NORMAL); + lcmxo2_write_data(buffer, FLASH_PAGE_SIZE); + return lcmxo2_wait_busy(); +} + +static void lcmxo2_read_flash_page (uint8_t *buffer) { + lcmxo2_execute_cmd(LSC_READ_INCR_NV, 1, CMD_DELAYED); + lcmxo2_read_data(buffer, FLASH_PAGE_SIZE); +} + +static void lcmxo2_program_done (void) { + lcmxo2_execute_cmd(ISC_PROGRAM_DONE, 0, CMD_NORMAL); + lcmxo2_wait_busy(); +} + +static void lcmxo2_refresh (void) { + lcmxo2_execute_cmd(LSC_REFRESH, 0, CMD_TWO_OP); +} + +static vendor_error_t lcmxo2_fail (vendor_error_t error) { + lcmxo2_disable_flash(); + lcmxo2_cleanup(); + return error; +} + +uint32_t vendor_flash_size (void) { + return (FLASH_PAGE_SIZE * FLASH_NUM_PAGES); +} + +vendor_error_t vendor_backup (uint32_t address, uint32_t *length) { + uint8_t buffer[FLASH_PAGE_SIZE]; + + *length = 0; + + lcmxo2_reset_bus(); + if (lcmxo2_enable_flash()) { + return lcmxo2_fail(VENDOR_ERROR_INIT); + } + lcmxo2_reset_flash_address(); + for (int i = 0; i < (FLASH_PAGE_SIZE * FLASH_NUM_PAGES); i += FLASH_PAGE_SIZE) { + lcmxo2_read_flash_page(buffer); + fpga_mem_write(address + i, FLASH_PAGE_SIZE, buffer); + *length += FLASH_PAGE_SIZE; + } + lcmxo2_disable_flash(); + lcmxo2_cleanup(); + + return VENDOR_OK; +} + +vendor_error_t vendor_update (uint32_t address, uint32_t length) { + uint8_t buffer[FLASH_PAGE_SIZE]; + uint8_t verify_buffer[FLASH_PAGE_SIZE]; + + if (length == 0) { + return VENDOR_ERROR_ARGS; + } + if ((length % FLASH_PAGE_SIZE) != 0) { + return VENDOR_ERROR_ARGS; + } + if (length > (FLASH_PAGE_SIZE * FLASH_NUM_PAGES)) { + return VENDOR_ERROR_ARGS; + } + + lcmxo2_reset_bus(); + if (lcmxo2_enable_flash()) { + return lcmxo2_fail(VENDOR_ERROR_INIT); + } + if (lcmxo2_erase_flash()) { + return lcmxo2_fail(VENDOR_ERROR_ERASE); + } + lcmxo2_reset_flash_address(); + for (int i = 0; i < length; i += FLASH_PAGE_SIZE) { + fpga_mem_read(address + i, FLASH_PAGE_SIZE, buffer); + if (lcmxo2_write_flash_page(buffer)) { + return lcmxo2_fail(VENDOR_ERROR_PROGRAM); + } + } + lcmxo2_program_done(); + lcmxo2_reset_flash_address(); + for (int i = 0; i < length; i += FLASH_PAGE_SIZE) { + lcmxo2_read_flash_page(buffer); + fpga_mem_read(address + i, FLASH_PAGE_SIZE, verify_buffer); + for (int x = 0; x < FLASH_PAGE_SIZE; x++) { + if (buffer[x] != verify_buffer[x]) { + return lcmxo2_fail(VENDOR_ERROR_VERIFY); + } + } + } + lcmxo2_disable_flash(); + lcmxo2_cleanup(); + + return VENDOR_OK; +} + +vendor_error_t vendor_reconfigure (void) { + lcmxo2_reset_bus(); + lcmxo2_refresh(); + lcmxo2_cleanup(); + + return VENDOR_OK; +} diff --git a/sw/controller/src/led.c b/sw/controller/src/led.c new file mode 100644 index 0000000..73178d3 --- /dev/null +++ b/sw/controller/src/led.c @@ -0,0 +1,129 @@ +#include +#include "hw.h" +#include "led.h" +#include "task.h" + + +#define LED_MS_PER_TICK (10) +#define LED_ERROR_TICKS_PERIOD (50) +#define LED_ERROR_TICKS_ON (25) +#define LED_ACT_TICKS_PERIOD (15) +#define LED_ACT_TICKS_ON (6) + + +static bool error_mode = false; +static uint32_t error_timer = 0; +static volatile bool cic_error = false; +static volatile bool rtc_error = false; + +static uint32_t act_timer = 0; +static uint32_t current_act_counter = 0; +static volatile uint32_t next_act_counter = 0; + + +static void led_task_resume (void) { + task_set_ready(TASK_ID_LED); +} + +static void led_update_error_mode (void) { + if (error_mode) { + if (!(cic_error || rtc_error)) { + hw_gpio_reset(GPIO_ID_LED); + error_mode = false; + act_timer = 0; + } + } else { + if (cic_error || rtc_error) { + hw_gpio_reset(GPIO_ID_LED); + error_mode = true; + error_timer = 0; + } + } +} + +static void led_process_errors (void) { + if (error_timer == 0) { + error_timer = LED_ERROR_TICKS_PERIOD; + if (cic_error) { + error_timer *= 1; + } else if (rtc_error) { + error_timer *= 2; + } + error_timer += LED_ERROR_TICKS_PERIOD; + } + + if (error_timer > 0) { + error_timer -= 1; + if (error_timer >= LED_ERROR_TICKS_PERIOD) { + uint32_t error_cycle = (error_timer % LED_ERROR_TICKS_PERIOD); + if (error_cycle == LED_ERROR_TICKS_ON) { + hw_gpio_set(GPIO_ID_LED); + } + if (error_cycle == 0) { + hw_gpio_reset(GPIO_ID_LED); + } + } + } +} + +static void led_process_act (void) { + if (act_timer == 0) { + if (current_act_counter != next_act_counter) { + current_act_counter = next_act_counter; + act_timer = LED_ACT_TICKS_PERIOD; + } + } + + if (act_timer > 0) { + act_timer -= 1; + if (act_timer == LED_ACT_TICKS_ON) { + hw_gpio_set(GPIO_ID_LED); + } + if (act_timer == 0) { + hw_gpio_reset(GPIO_ID_LED); + } + } +} + + +void led_blink_error (led_error_t error) { + switch (error) { + case LED_ERROR_CIC: + cic_error = true; + break; + case LED_ERROR_RTC: + rtc_error = true; + break; + } +} + +void led_clear_error (led_error_t error) { + switch (error) { + case LED_ERROR_CIC: + cic_error = false; + break; + case LED_ERROR_RTC: + rtc_error = false; + break; + } +} + +void led_blink_act (void) { + next_act_counter += 1; +} + +void led_task (void) { + while (1) { + hw_tim_setup(TIM_ID_LED, LED_MS_PER_TICK, led_task_resume); + + led_update_error_mode(); + + if (error_mode) { + led_process_errors(); + } else { + led_process_act(); + } + + task_yield(); + } +} diff --git a/sw/controller/src/led.h b/sw/controller/src/led.h new file mode 100644 index 0000000..1ae724d --- /dev/null +++ b/sw/controller/src/led.h @@ -0,0 +1,17 @@ +#ifndef LED_H__ +#define LED_H__ + + +typedef enum { + LED_ERROR_CIC, + LED_ERROR_RTC, +} led_error_t; + + +void led_blink_error (led_error_t error); +void led_clear_error (led_error_t error); +void led_blink_act (void); +void led_task (void); + + +#endif diff --git a/sw/controller/src/loader.S b/sw/controller/src/loader.S new file mode 100644 index 0000000..da493c8 --- /dev/null +++ b/sw/controller/src/loader.S @@ -0,0 +1,99 @@ +.syntax unified +.cpu cortex-m0plus +.fpu softvfp +.thumb + +.section .text.Reset_Handler +.type Reset_Handler, %function +Reset_Handler: + .global Reset_Handler + cpsid i + +init_text: + ldr r0, =_stext + ldr r1, =_etext + ldr r2, =_sitext + bl copy_section + +init_rodata: + ldr r0, =_srodata + ldr r1, =_erodata + ldr r2, =_sirodata + bl copy_section + +init_data: + ldr r0, =_sdata + ldr r1, =_edata + ldr r2, =_sidata + bl copy_section + +init_bss: + ldr r2, =_sbss + ldr r4, =_ebss + movs r3, #0 + b 2f +1: + str r3, [r2] + adds r2, r2, #4 +2: + cmp r2, r4 + bcc 1b + +run: + bl loader + +boot: + ldr r0, =_app_magic + ldr r0, [r0] + ldr r1, =0x34364353 + cmp r0, r1 + bne empty_image + + ldr r0, =_app_header + push {r0} + bl set_vector_table_offset + pop {r0} + ldr r1, [r0, #0] + msr MSP, r1 + ldr r1, [r0, #4] + blx r1 + +empty_image: + bl no_valid_image + +loop: + b loop + +copy_section: + movs r3, #0 + b 2f +1: + ldr r4, [r2, r3] + str r4, [r0, r3] + adds r3, r3, #4 +2: + adds r4, r0, r3 + cmp r4, r1 + bcc 1b + bx lr + + +.section .text.Default_Handler, "ax", %progbits +Default_Handler: + .global Default_Handler + b Default_Handler + + +.section .isr_vector, "a", %progbits +.type g_pfnVectors, %object +g_pfnVectors: + .global g_pfnVectors + .word _estack + .word Reset_Handler + .word NMI_Handler + .word HardFault_Handler + + .weak NMI_Handler + .thumb_set NMI_Handler, Default_Handler + .weak HardFault_Handler + .thumb_set HardFault_Handler, Default_Handler diff --git a/sw/controller/src/loader.c b/sw/controller/src/loader.c new file mode 100644 index 0000000..9a10708 --- /dev/null +++ b/sw/controller/src/loader.c @@ -0,0 +1,20 @@ +#include +#include +#include "hw.h" +#include "update.h" + + +void loader (void) { + if (update_check()) { + hw_loader_init(); + update_perform(); + } +} + +void no_valid_image (void) { + hw_gpio_set(GPIO_ID_LED); +} + +void set_vector_table_offset (uint32_t offset) { + SCB->VTOR = (__IOM uint32_t) (offset); +} diff --git a/sw/controller/src/rtc.c b/sw/controller/src/rtc.c new file mode 100644 index 0000000..3aad083 --- /dev/null +++ b/sw/controller/src/rtc.c @@ -0,0 +1,289 @@ +#include "fpga.h" +#include "hw.h" +#include "led.h" +#include "rtc.h" +#include "task.h" + + +#define RTC_I2C_ADDRESS (0xDE) + +#define RTC_ADDRESS_RTCSEC (0x00) +#define RTC_ADDRESS_RTCMIN (0x01) +#define RTC_ADDRESS_RTCHOUR (0x02) +#define RTC_ADDRESS_RTCWKDAY (0x03) +#define RTC_ADDRESS_RTCDATE (0x04) +#define RTC_ADDRESS_RTCMTH (0x05) +#define RTC_ADDRESS_RTCYEAR (0x06) +#define RTC_ADDRESS_CONTROL (0x07) +#define RTC_ADDRESS_OSCTRIM (0x08) +#define RTC_ADDRESS_SRAM_MAGIC (0x20) +#define RTC_ADDRESS_SRAM_REGION (0x24) + +#define RTC_RTCSEC_ST (1 << 7) + +#define RTC_RTCWKDAY_VBATEN (1 << 3) +#define RTC_RTCWKDAY_OSCRUN (1 << 5) + + +static uint8_t rtc_region = 0xFF; +static volatile bool rtc_region_pending = false; +static rtc_time_t rtc_time = { + .second = 0x00, + .minute = 0x00, + .hour = 0x12, + .weekday = 0x02, + .day = 0x01, + .month = 0x03, + .year = 0x22 +}; +static bool rtc_time_valid = false; +static volatile bool rtc_time_pending = false; + +static const uint8_t rtc_regs_bit_mask[7] = { + 0b01111111, + 0b01111111, + 0b00111111, + 0b00000111, + 0b00111111, + 0b00011111, + 0b11111111 +}; + + +static void rtc_task_resume (void) { + task_set_ready(TASK_ID_RTC); +} + +static void rtc_on_error (void) { + rtc_time_valid = false; + led_blink_error(LED_ERROR_RTC); + task_yield(); +} + +static void rtc_read (uint8_t address, uint8_t *data, uint8_t length) { + hw_i2c_read(RTC_I2C_ADDRESS, address, data, length, rtc_task_resume); + task_yield(); + if (hw_i2c_get_error()) { + rtc_on_error(); + } +} + +static void rtc_write (uint8_t address, uint8_t *data, uint8_t length) { + hw_i2c_write(RTC_I2C_ADDRESS, address, data, length, rtc_task_resume); + task_yield(); + if (hw_i2c_get_error()) { + rtc_on_error(); + } +} + +static void rtc_sanitize_time (uint8_t *regs) { + for (int i = 0; i < 7; i++) { + regs[i] &= rtc_regs_bit_mask[i]; + } +} + +static void rtc_wait_osc (bool running) { + uint8_t rtcwkday; + + while (1) { + rtc_read(RTC_ADDRESS_RTCWKDAY, &rtcwkday, 1); + + if (running && (rtcwkday & RTC_RTCWKDAY_OSCRUN)) { + return; + } else if (!running && (!(rtcwkday & RTC_RTCWKDAY_OSCRUN))) { + return; + } + } +} + +static void rtc_read_time (void) { + uint8_t regs[7]; + + rtc_read(RTC_ADDRESS_RTCSEC, regs, 7); + + rtc_sanitize_time(regs); + + if (!rtc_time_pending) { + rtc_time.second = regs[0]; + rtc_time.minute = regs[1]; + rtc_time.hour = regs[2]; + rtc_time.weekday = regs[3]; + rtc_time.day = regs[4]; + rtc_time.month = regs[5]; + rtc_time.year = regs[6]; + + rtc_time_valid = true; + } +} + +static void rtc_write_time (void) { + uint8_t regs[7]; + + regs[0] = 0x00; + + rtc_write(RTC_ADDRESS_RTCSEC, regs, 1); + + rtc_wait_osc(false); + + regs[0] = rtc_time.second; + regs[1] = rtc_time.minute; + regs[2] = rtc_time.hour; + regs[3] = rtc_time.weekday; + regs[4] = rtc_time.day; + regs[5] = rtc_time.month; + regs[6] = rtc_time.year; + + rtc_sanitize_time(regs); + + regs[0] |= RTC_RTCSEC_ST; + regs[3] |= (RTC_RTCWKDAY_OSCRUN | RTC_RTCWKDAY_VBATEN); + + rtc_write(RTC_ADDRESS_RTCSEC, regs, 7); + + rtc_wait_osc(true); +} + +static void rtc_read_region (void) { + rtc_read(RTC_ADDRESS_SRAM_REGION, &rtc_region, 1); +} + +static void rtc_write_region (void) { + rtc_write(RTC_ADDRESS_SRAM_REGION, &rtc_region, 1); +} + +static void rtc_init (void) { + bool uninitialized = false; + const char *magic = "SC64"; + uint8_t buffer[4]; + + rtc_read(RTC_ADDRESS_SRAM_MAGIC, buffer, 4); + + for (int i = 0; i < 4; i++) { + if (buffer[i] != magic[i]) { + uninitialized = true; + break; + } + } + + if (uninitialized) { + buffer[0] = 0; + rtc_write(RTC_ADDRESS_SRAM_MAGIC, (uint8_t *) (magic), 4); + rtc_write(RTC_ADDRESS_OSCTRIM, buffer, 1); + rtc_write_time(); + rtc_write_region(); + } +} + + +bool rtc_get_time (rtc_time_t *time) { + bool vaild; + + hw_i2c_disable_irq(); + hw_tim_disable_irq(TIM_ID_RTC); + + time->second = rtc_time.second; + time->minute = rtc_time.minute; + time->hour = rtc_time.hour; + time->weekday = rtc_time.weekday; + time->day = rtc_time.day; + time->month = rtc_time.month; + time->year = rtc_time.year; + vaild = rtc_time_valid; + + hw_tim_enable_irq(TIM_ID_RTC); + hw_i2c_enable_irq(); + + return vaild; +} + +void rtc_set_time (rtc_time_t *time) { + hw_i2c_disable_irq(); + hw_tim_disable_irq(TIM_ID_RTC); + + rtc_time.second = time->second; + rtc_time.minute = time->minute; + rtc_time.hour = time->hour; + rtc_time.weekday = time->weekday; + rtc_time.day = time->day; + rtc_time.month = time->month; + rtc_time.year = time->year; + rtc_time_pending = true; + + hw_tim_enable_irq(TIM_ID_RTC); + hw_i2c_enable_irq(); +} + +uint8_t rtc_get_region (void) { + return rtc_region; +} + +void rtc_set_region (uint8_t region) { + rtc_region = region; + rtc_region_pending = true; +} + +void rtc_task (void) { + rtc_init(); + + rtc_read_region(); + + while (1) { + if (rtc_time_pending) { + rtc_time_pending = false; + rtc_write_time(); + } + + if (rtc_region_pending) { + rtc_region_pending = false; + rtc_write_region(); + } + + rtc_read_time(); + + hw_tim_setup(TIM_ID_RTC, 50, rtc_task_resume); + + task_yield(); + } +} + +void rtc_process (void) { + rtc_time_t time; + uint32_t data[2]; + uint32_t scr = fpga_reg_get(REG_RTC_SCR); + + if ((scr & RTC_SCR_PENDING) && ((scr & RTC_SCR_MAGIC_MASK) == RTC_SCR_MAGIC)) { + data[0] = fpga_reg_get(REG_RTC_TIME_0); + data[1] = fpga_reg_get(REG_RTC_TIME_1); + + time.weekday = ((data[0] >> 24) & 0xFF) + 1; + time.hour = ((data[0] >> 16) & 0xFF); + time.minute = ((data[0] >> 8) & 0xFF); + time.second = ((data[0] >> 0) & 0xFF); + time.year = ((data[1] >> 16) & 0xFF); + time.month = ((data[1] >> 8) & 0xFF); + time.day = ((data[1] >> 0) & 0xFF); + + rtc_set_time(&time); + + fpga_reg_set(REG_RTC_TIME_0, data[0]); + fpga_reg_set(REG_RTC_TIME_1, data[1]); + fpga_reg_set(REG_RTC_SCR, RTC_SCR_DONE); + } + + rtc_get_time(&time); + + data[0] = ( + ((time.weekday - 1) << 24) | + (time.hour << 16) | + (time.minute << 8) | + (time.second << 0) + ); + data[1] = ( + (time.year << 16) | + (time.month << 8) | + (time.day << 0) + ); + + fpga_reg_set(REG_RTC_TIME_0, data[0]); + fpga_reg_set(REG_RTC_TIME_1, data[1]); +} diff --git a/sw/riscv/src/rtc.h b/sw/controller/src/rtc.h similarity index 52% rename from sw/riscv/src/rtc.h rename to sw/controller/src/rtc.h index 02937e4..3df6502 100644 --- a/sw/riscv/src/rtc.h +++ b/sw/controller/src/rtc.h @@ -2,7 +2,8 @@ #define RTC_H__ -#include "sys.h" +#include +#include typedef struct { @@ -16,12 +17,12 @@ typedef struct { } rtc_time_t; -rtc_time_t *rtc_get_time (void); -bool rtc_is_time_valid (void); -bool rtc_is_time_running (void); +bool rtc_get_time (rtc_time_t *time); void rtc_set_time (rtc_time_t *time); -void rtc_init (void); -void process_rtc (void); +uint8_t rtc_get_region (void); +void rtc_set_region (uint8_t region); +void rtc_task (void); +void rtc_process (void); #endif diff --git a/sw/controller/src/sd.c b/sw/controller/src/sd.c new file mode 100644 index 0000000..5202da5 --- /dev/null +++ b/sw/controller/src/sd.c @@ -0,0 +1,442 @@ +#include +#include +#include "fpga.h" +#include "hw.h" +#include "led.h" +#include "sd.h" + + +#define SD_INIT_BUFFER_ADDRESS (0x05002800UL) + +#define CMD6_ARG_CHECK_HS (0x00FFFFF1UL) +#define CMD6_ARG_SWITCH_HS (0x80FFFFF1UL) + +#define CMD8_ARG_SUPPLY_VOLTAGE_27_36_V (1 << 8) +#define CMD8_ARG_CHECK_PATTERN (0xAA << 0) + +#define ACMD6_ARG_BUS_WIDTH_4BIT (2 << 0) + +#define ACMD41_ARG_OCR (0x300000 << 0) +#define ACMD41_ARG_HCS (1 << 30) + +#define R3_OCR (0x300000 << 0) +#define R3_CCS (1 << 30) +#define R3_BUSY (1 << 31) + +#define R6_RCA_MASK (0xFFFF0000UL) + +#define R7_SUPPLY_VOLTAGE_27_36_V (1 << 8) +#define R7_CHECK_PATTERN (0xAA << 0) + +#define SWITCH_FUNCTION_CURRENT_LIMIT (SD_INIT_BUFFER_ADDRESS + 0) +#define SWITCH_FUNCTION_GROUP_1 (SD_INIT_BUFFER_ADDRESS + 12) +#define SWITCH_FUNCTION_GROUP_1_HS (1 << 1) + +#define DAT_BLOCK_MAX_COUNT (256) + + +typedef enum { + CLOCK_STOP, + CLOCK_400KHZ, + CLOCK_25MHZ, + CLOCK_50MHZ, +} sd_clock_t; + +typedef enum { + RSP_NONE, + RSP_R1, + RSP_R1b, + RSP_R2, + RSP_R3, + RSP_R6, + RSP_R7, +} rsp_type_t; + +typedef enum { + DAT_READ, + DAT_WRITE, +} dat_mode_t; + + +struct process { + bool card_initialized; + bool card_type_block; + uint32_t rca; + uint8_t csd[16]; + uint8_t cid[16]; + volatile bool timeout; +}; + + +static struct process p; + + +static void sd_trigger_timeout (void) { + p.timeout = true; +} + +static void sd_prepare_timeout (uint16_t value) { + p.timeout = false; + hw_tim_setup(TIM_ID_SD, value, sd_trigger_timeout); +} + +static bool sd_did_timeout (void) { + return p.timeout; +} + +static void sd_clear_timeout (void) { + hw_tim_stop(TIM_ID_SD); + p.timeout = false; +} + +static void sd_set_clock (sd_clock_t mode) { + fpga_reg_set(REG_SD_SCR, SD_SCR_CLOCK_MODE_OFF); + + switch (mode) { + case CLOCK_400KHZ: + fpga_reg_set(REG_SD_SCR, SD_SCR_CLOCK_MODE_400KHZ); + break; + case CLOCK_25MHZ: + fpga_reg_set(REG_SD_SCR, SD_SCR_CLOCK_MODE_25MHZ); + break; + case CLOCK_50MHZ: + fpga_reg_set(REG_SD_SCR, SD_SCR_CLOCK_MODE_50MHZ); + break; + default: + break; + } +} + +static bool sd_cmd (uint8_t cmd, uint32_t arg, rsp_type_t rsp_type, void *rsp) { + uint32_t scr; + uint32_t cmd_data; + + cmd_data = ((cmd << SD_CMD_INDEX_BIT) & SD_CMD_INDEX_MASK); + switch (rsp_type) { + case RSP_NONE: + cmd_data |= SD_CMD_SKIP_RESPONSE; + break; + case RSP_R2: + cmd_data |= (SD_CMD_LONG_RESPONSE | SD_CMD_RESERVED_RESPONSE); + break; + case RSP_R3: + cmd_data |= (SD_CMD_IGNORE_CRC | SD_CMD_RESERVED_RESPONSE); + break; + default: + break; + } + + fpga_reg_set(REG_SD_ARG, arg); + fpga_reg_set(REG_SD_CMD, cmd_data); + + do { + scr = fpga_reg_get(REG_SD_SCR); + } while (scr & SD_SCR_CMD_BUSY); + + if (rsp != NULL) { + if (cmd_data & SD_CMD_LONG_RESPONSE) { + uint8_t *rsp_8 = (uint8_t *) (rsp); + for (int i = 0; i < 4; i++) { + uint32_t rsp_data = fpga_reg_get(REG_SD_RSP_3 - i); + uint8_t *rsp_data_8 = (uint8_t *) (&rsp_data); + rsp_data = SWAP32(rsp_data); + for (int i = 0; i < 4; i++) { + *rsp_8++ = *rsp_data_8++; + } + } + } else { + (*(uint32_t *) (rsp)) = fpga_reg_get(REG_SD_RSP_0); + } + } + + if (rsp_type == RSP_R1b) { + do { + scr = fpga_reg_get(REG_SD_SCR); + } while (scr & SD_SCR_CARD_BUSY); + } + + return (scr & SD_SCR_CMD_ERROR); +} + +static bool sd_acmd (uint8_t acmd, uint32_t arg, rsp_type_t rsp_type, void *rsp) { + if (sd_cmd(55, p.rca, RSP_R1, NULL)) { + return true; + } + if (sd_cmd(acmd, arg, rsp_type, rsp)) { + return true; + } + return false; +} + +static void sd_dat_prepare (uint32_t address, uint32_t count, dat_mode_t mode) { + uint32_t length = (count * SD_SECTOR_SIZE); + uint32_t sd_dat = (((count - 1) << SD_DAT_BLOCKS_BIT) | SD_DAT_FIFO_FLUSH); + uint32_t sd_dma_scr = DMA_SCR_START; + + if (mode == DAT_READ) { + sd_dat |= SD_DAT_START_READ; + sd_dma_scr |= DMA_SCR_DIRECTION; + } else { + sd_dat |= SD_DAT_START_WRITE; + } + + fpga_reg_set(REG_SD_DAT, sd_dat); + fpga_reg_set(REG_SD_DMA_ADDRESS, address); + fpga_reg_set(REG_SD_DMA_LENGTH, length); + fpga_reg_set(REG_SD_DMA_SCR, sd_dma_scr); +} + +static void sd_dat_abort (void) { + fpga_reg_set(REG_SD_DMA_SCR, DMA_SCR_STOP); + fpga_reg_set(REG_SD_DAT, SD_DAT_STOP | SD_DAT_FIFO_FLUSH); +} + +static bool sd_dat_wait (uint16_t timeout) { + sd_prepare_timeout(timeout); + + do { + uint32_t sd_dat = fpga_reg_get(REG_SD_DAT); + uint32_t sd_dma_scr = fpga_reg_get(REG_SD_DMA_SCR); + if ((!(sd_dat & SD_DAT_BUSY)) && (!(sd_dma_scr & DMA_SCR_BUSY))) { + sd_clear_timeout(); + return (sd_dat & SD_DAT_ERROR); + } + } while (!sd_did_timeout()); + + sd_dat_abort(); + + return true; +} + + +bool sd_card_init (void) { + uint32_t arg; + uint32_t rsp; + uint16_t tmp; + + if (p.card_initialized) { + return false; + } + + p.card_initialized = true; + p.rca = 0; + + led_blink_act(); + + sd_set_clock(CLOCK_400KHZ); + + sd_cmd(0, 0, RSP_NONE, NULL); + + arg = (CMD8_ARG_SUPPLY_VOLTAGE_27_36_V | CMD8_ARG_CHECK_PATTERN); + if (sd_cmd(8, arg, RSP_R7, &rsp)) { + arg = ACMD41_ARG_OCR; + } else { + if (rsp != (R7_SUPPLY_VOLTAGE_27_36_V | R7_CHECK_PATTERN)) { + sd_card_deinit(); + return true; + } + arg = (ACMD41_ARG_HCS | ACMD41_ARG_OCR); + } + + sd_prepare_timeout(1000); + do { + if (sd_did_timeout()) { + sd_card_deinit(); + return true; + } + if (sd_acmd(41, arg, RSP_R3, &rsp)) { + sd_card_deinit(); + return true; + } + if (rsp & R3_BUSY) { + if ((rsp & R3_OCR) == 0) { + sd_card_deinit(); + return true; + } + p.card_type_block = (rsp & R3_CCS); + break; + } + } while (1); + sd_clear_timeout(); + + if (sd_cmd(2, 0, RSP_R2, NULL)) { + sd_card_deinit(); + return true; + } + + if (sd_cmd(3, 0, RSP_R6, &rsp)) { + sd_card_deinit(); + return true; + } + p.rca = (rsp & R6_RCA_MASK); + + if (sd_cmd(9, p.rca, RSP_R2, p.csd)) { + sd_card_deinit(); + return true; + } + + if (sd_cmd(10, p.rca, RSP_R2, p.cid)) { + sd_card_deinit(); + return true; + } + + if (sd_cmd(7, p.rca, RSP_R1b, NULL)) { + sd_card_deinit(); + return true; + } + + sd_set_clock(CLOCK_25MHZ); + + if (sd_acmd(6, ACMD6_ARG_BUS_WIDTH_4BIT, RSP_R1, NULL)) { + sd_card_deinit(); + return true; + } + + sd_dat_prepare(SD_INIT_BUFFER_ADDRESS, 1, DAT_READ); + if (sd_cmd(6, CMD6_ARG_CHECK_HS, RSP_R1, NULL)) { + sd_dat_abort(); + sd_card_deinit(); + return true; + } + sd_dat_wait(1000); + if (sd_did_timeout()) { + sd_card_deinit(); + return true; + } + fpga_mem_read(SWITCH_FUNCTION_CURRENT_LIMIT, 2, (uint8_t *) (&tmp)); + if (SWAP16(tmp) == 0) { + sd_card_deinit(); + return true; + } + fpga_mem_read(SWITCH_FUNCTION_GROUP_1, 2, (uint8_t *) (&tmp)); + if (SWAP16(tmp) & SWITCH_FUNCTION_GROUP_1_HS) { + sd_dat_prepare(SD_INIT_BUFFER_ADDRESS, 1, DAT_READ); + if (sd_cmd(6, CMD6_ARG_SWITCH_HS, RSP_R1, NULL)) { + sd_dat_abort(); + sd_card_deinit(); + return true; + } + sd_dat_wait(1000); + if (sd_did_timeout()) { + sd_card_deinit(); + return true; + } + fpga_mem_read(SWITCH_FUNCTION_GROUP_1, 2, (uint8_t *) (&tmp)); + if (SWAP16(tmp) & SWITCH_FUNCTION_GROUP_1_HS) { + sd_set_clock(CLOCK_50MHZ); + } + } + + return false; +} + +void sd_card_deinit (void) { + if (p.card_initialized) { + p.card_initialized = false; + sd_set_clock(CLOCK_400KHZ); + sd_cmd(0, 0, RSP_NONE, NULL); + sd_set_clock(CLOCK_STOP); + } +} + +uint32_t sd_card_get_status (void) { + uint32_t scr = fpga_reg_get(REG_SD_SCR); + uint32_t clock_mode_50mhz = ((scr & SD_SCR_CLOCK_MODE_MASK) == SD_SCR_CLOCK_MODE_50MHZ) ? 1 : 0; + uint32_t card_type_block = p.card_type_block ? 1 : 0; + uint32_t initialized = p.card_initialized ? 1 : 0; + return ( + (clock_mode_50mhz << 2) | + (card_type_block << 1) | + (initialized << 0) + ); +} + +bool sd_card_get_info (uint32_t address) { + if (!p.card_initialized) { + return true; + } + fpga_mem_write(address, sizeof(p.csd), p.csd); + address += sizeof(p.csd); + fpga_mem_write(address, sizeof(p.cid), p.cid); + address += sizeof(p.cid); + return false; +} + +bool sd_write_sectors (uint32_t address, uint32_t sector, uint32_t count) { + if (!p.card_initialized || (count == 0)) { + return true; + } + + if (!p.card_type_block) { + sector *= SD_SECTOR_SIZE; + } + + while (count > 0) { + uint32_t blocks = ((count > DAT_BLOCK_MAX_COUNT) ? DAT_BLOCK_MAX_COUNT : count); + led_blink_act(); + if (sd_cmd(23, blocks, RSP_R1, NULL)) { + return true; + } + if (sd_cmd(25, sector, RSP_R1, NULL)) { + return true; + } + sd_dat_prepare(address, blocks, DAT_WRITE); + if (sd_dat_wait(1000)) { + sd_dat_abort(); + sd_cmd(12, 0, RSP_R1b, NULL); + return true; + } + sd_cmd(12, 0, RSP_R1b, NULL); + address += (blocks * SD_SECTOR_SIZE); + sector += (blocks * (p.card_type_block ? 1 : SD_SECTOR_SIZE)); + count -= blocks; + } + + return false; +} + +bool sd_read_sectors (uint32_t address, uint32_t sector, uint32_t count) { + if (!p.card_initialized || (count == 0)) { + return true; + } + + if (!p.card_type_block) { + sector *= SD_SECTOR_SIZE; + } + + while (count > 0) { + uint32_t blocks = ((count > DAT_BLOCK_MAX_COUNT) ? DAT_BLOCK_MAX_COUNT : count); + led_blink_act(); + sd_dat_prepare(address, blocks, DAT_READ); + if (sd_cmd(23, blocks, RSP_R1, NULL)) { + sd_dat_abort(); + return true; + } + if (sd_cmd(18, sector, RSP_R1, NULL)) { + sd_dat_abort(); + return true; + } + if (sd_dat_wait(1000)) { + if (sd_did_timeout()) { + sd_cmd(12, 0, RSP_R1b, NULL); + } + return true; + } + address += (blocks * SD_SECTOR_SIZE); + sector += (blocks * (p.card_type_block ? 1 : SD_SECTOR_SIZE)); + count -= blocks; + } + + return false; +} + +void sd_init (void) { + p.card_initialized = false; + sd_set_clock(CLOCK_STOP); +} + +void sd_process (void) { + if (!(fpga_reg_get(REG_SD_SCR) & SD_SCR_CARD_INSERTED)) { + sd_card_deinit(); + } +} diff --git a/sw/controller/src/sd.h b/sw/controller/src/sd.h new file mode 100644 index 0000000..40445a5 --- /dev/null +++ b/sw/controller/src/sd.h @@ -0,0 +1,21 @@ +#ifndef SD_H__ +#define SD_H__ + + +#include + + +#define SD_SECTOR_SIZE (512) + + +bool sd_card_init (void); +void sd_card_deinit (void); +uint32_t sd_card_get_status (void); +bool sd_card_get_info (uint32_t address); +bool sd_write_sectors (uint32_t address, uint32_t sector, uint32_t count); +bool sd_read_sectors (uint32_t address, uint32_t sector, uint32_t count); +void sd_init (void); +void sd_process (void); + + +#endif diff --git a/sw/controller/src/task.c b/sw/controller/src/task.c new file mode 100644 index 0000000..7731e5f --- /dev/null +++ b/sw/controller/src/task.c @@ -0,0 +1,145 @@ +#include +#include +#include "task.h" + + +#define TASK_INITIAL_XPSR (0x21000000UL) +#define TASK_CONTEXT_SWITCH() { SCB->ICSR = (1 << SCB_ICSR_PENDSVSET_Pos); } + + +typedef enum { + TASK_FLAG_NONE = 0, + TASK_FLAG_READY = (1 << 0), + TASK_FLAG_RESET = (1 << 1), +} task_flags_t; + + +typedef struct { + uint32_t initial_pc; + uint32_t initial_sp; + uint32_t sp; + task_flags_t flags; +} task_t; + + +static task_t task_table[__TASK_ID_MAX]; +static volatile task_id_t task_current = 0; + + +static void task_exit (void) { + task_table[task_current].flags = TASK_FLAG_NONE; + task_yield(); + while (1); +} + +static void task_initialize (task_id_t id) { + task_t *task = &task_table[id]; + uint32_t *sp = ((uint32_t *) (task->initial_sp)); + *--sp = TASK_INITIAL_XPSR; + *--sp = task->initial_pc; + *--sp = ((uint32_t) (task_exit)); + sp -= 13; + task->sp = ((uint32_t) (sp)); +} + +static void task_reset (task_id_t id) { + task_table[id].flags &= ~(TASK_FLAG_RESET); + task_initialize(id); +} + +static uint32_t task_switch_context (uint32_t sp) { + task_table[task_current].sp = sp; + + for (task_id_t id = 0; id < __TASK_ID_MAX; id++) { + if (task_table[id].flags & TASK_FLAG_READY) { + task_current = id; + break; + } + } + + if (task_table[task_current].flags & TASK_FLAG_RESET) { + task_reset(task_current); + } + + return task_table[task_current].sp; +} + + +void task_create (task_id_t id, void (*code)(void), void *stack, size_t stack_size) { + if (id < __TASK_ID_MAX) { + task_t *task = &task_table[id]; + task->initial_pc = (uint32_t) (code); + task->initial_sp = (((uint32_t) (stack)) + stack_size); + task->flags = TASK_FLAG_READY; + task_initialize(id); + } +} + +void task_yield (void) { + task_table[task_current].flags &= ~(TASK_FLAG_READY); + TASK_CONTEXT_SWITCH(); +} + +void task_set_ready (task_id_t id) { + task_table[id].flags |= TASK_FLAG_READY; + TASK_CONTEXT_SWITCH(); +} + +void task_set_ready_and_reset (task_id_t id) { + task_table[id].flags |= (TASK_FLAG_RESET | TASK_FLAG_READY); + TASK_CONTEXT_SWITCH(); +} + +__attribute__((naked)) void task_scheduler_start (void) { + uint32_t sp = task_table[task_current].sp; + + NVIC_SetPriority(PendSV_IRQn, 3); + + asm volatile ( + "add %[sp], #32 \n" + "msr psp, %[sp] \n" + "movs r0, #2 \n" + "msr CONTROL, r0 \n" + "isb \n" + "pop {r0-r5} \n" + "mov lr, r5 \n" + "pop {r3} \n" + "pop {r2} \n" + "cpsie i \n" + "bx r3 \n" + :: [sp] "r" (sp) + ); + + while (1); +} + + +__attribute__((naked)) void PendSV_Handler (void) { + asm volatile ( + "mrs r1, psp \n" + "sub r1, r1, #32 \n" + "mov r0, r1 \n" + "stmia r1!, {r4-r7} \n" + "mov r4, r8 \n" + "mov r5, r9 \n" + "mov r6, r10 \n" + "mov r7, r11 \n" + "stmia r1!, {r4-r7} \n" + "push {lr} \n" + "cpsid i \n" + "blx %[task_switch_context] \n" + "cpsie i \n" + "pop {r2} \n" + "add r0, #16 \n" + "ldmia r0!, {r4-r7} \n" + "mov r8, r4 \n" + "mov r9, r5 \n" + "mov r10, r6 \n" + "mov r11, r7 \n" + "msr psp, r0 \n" + "sub r0, #32 \n" + "ldmia r0!, {r4-r7} \n" + "bx r2 \n" + :: [task_switch_context] "r" (task_switch_context) + ); +} diff --git a/sw/controller/src/task.h b/sw/controller/src/task.h new file mode 100644 index 0000000..5185c34 --- /dev/null +++ b/sw/controller/src/task.h @@ -0,0 +1,24 @@ +#ifndef TASK_H__ +#define TASK_H__ + + +#include + + +typedef enum { + TASK_ID_CIC, + TASK_ID_RTC, + TASK_ID_LED, + TASK_ID_GVR, + __TASK_ID_MAX +} task_id_t; + + +void task_create (task_id_t id, void (*code)(void), void *stack, size_t stack_size); +void task_yield (void); +void task_set_ready (task_id_t id); +void task_set_ready_and_reset (task_id_t id); +void task_scheduler_start (void); + + +#endif diff --git a/sw/controller/src/update.c b/sw/controller/src/update.c new file mode 100644 index 0000000..52ab791 --- /dev/null +++ b/sw/controller/src/update.c @@ -0,0 +1,316 @@ +#include "flash.h" +#include "fpga.h" +#include "hw.h" +#include "update.h" +#include "usb.h" +#include "vendor.h" + + +#define UPDATE_MAGIC_START (0x54535055UL) +#define BOOTLOADER_ADDRESS (0x04E00000UL) +#define BOOTLOADER_LENGTH (0x001E0000UL) + + +typedef enum { + UPDATE_STATUS_MCU = 1, + UPDATE_STATUS_FPGA = 2, + UPDATE_STATUS_BOOTLOADER = 3, + UPDATE_STATUS_DONE = 0x80, + UPDATE_STATUS_ERROR = 0xFF, +} update_status_t; + +typedef enum { + CHUNK_ID_UPDATE_INFO = 1, + CHUNK_ID_MCU_DATA = 2, + CHUNK_ID_FPGA_DATA = 3, + CHUNK_ID_BOOTLOADER_DATA = 4, +} chunk_id_t; + + +static loader_parameters_t parameters; +static const uint8_t update_token[16] = "SC64 Update v2.0"; +static uint8_t status_data[12] = { + 'P', 'K', 'T', PACKET_CMD_UPDATE_STATUS, + 0, 0, 0, 4, + 0, 0, 0, UPDATE_STATUS_ERROR, +}; + + +static uint32_t update_align (uint32_t value) { + if ((value % 16) != 0) { + value += (16 - (value % 16)); + } + return value; +} + +static uint32_t update_checksum (uint32_t address, uint32_t length) { + uint8_t buffer[128]; + uint32_t block_size; + uint32_t checksum = 0; + hw_crc32_reset(); + while (length > 0) { + block_size = (length > sizeof(buffer)) ? sizeof(buffer) : length; + fpga_mem_read(address, block_size, buffer); + checksum = hw_crc32_calculate(buffer, block_size); + address += block_size; + length -= block_size; + } + return checksum; +} + +static uint32_t update_write_token (uint32_t *address) { + uint32_t length = sizeof(update_token); + fpga_mem_write(*address, sizeof(update_token), (uint8_t *) (update_token)); + *address += length; + return length; +} + +static uint32_t update_prepare_chunk (uint32_t *address, chunk_id_t chunk_id) { + uint32_t id = (uint32_t) (chunk_id); + uint32_t length = (4 * sizeof(uint32_t)); + fpga_mem_write(*address, sizeof(id), (uint8_t *) (&id)); + *address += length; + return length; +} + +static uint32_t update_finalize_chunk (uint32_t *address, uint32_t length) { + uint32_t chunk_length = ((4 * sizeof(uint32_t)) + length); + uint32_t aligned_chunk_length = update_align(chunk_length); + uint32_t aligned_length = aligned_chunk_length - (2 * sizeof(uint32_t)); + uint32_t checksum = update_checksum(*address, length); + fpga_mem_write(*address - (3 * sizeof(uint32_t)), sizeof(aligned_length), (uint8_t *) (&aligned_length)); + fpga_mem_write(*address - (2 * sizeof(uint32_t)), sizeof(checksum), (uint8_t *) (&checksum)); + fpga_mem_write(*address - sizeof(uint32_t), sizeof(length), (uint8_t *) (&length)); + length += (aligned_chunk_length - chunk_length); + *address += length; + return length; +} + +static bool update_check_token (uint32_t *address) { + uint8_t buffer[sizeof(update_token)]; + fpga_mem_read(*address, sizeof(update_token), buffer); + for (int i = 0; i < sizeof(update_token); i++) { + if (buffer[i] != update_token[i]) { + return true; + } + } + *address += sizeof(update_token); + return false; +} + +static bool update_get_chunk (uint32_t *address, chunk_id_t *chunk_id, uint32_t *data_address, uint32_t *data_length) { + uint32_t id; + uint32_t chunk_length; + uint32_t checksum; + fpga_mem_read(*address, sizeof(id), (uint8_t *) (&id)); + *chunk_id = (chunk_id_t) (id); + *address += sizeof(id); + fpga_mem_read(*address, sizeof(chunk_length), (uint8_t *) (&chunk_length)); + *address += sizeof(chunk_length); + fpga_mem_read(*address, sizeof(checksum), (uint8_t *) (&checksum)); + *address += sizeof(checksum); + fpga_mem_read(*address, sizeof(*data_length), (uint8_t *) (data_length)); + *address += sizeof(*data_length); + *data_address = *address; + *address += (chunk_length - (2 * sizeof(uint32_t))); + if (checksum != update_checksum(*data_address, *data_length)) { + return true; + } + return false; +} + +static void update_blink_led (uint32_t on, uint32_t off, int repeat) { + for (int i = 0; i < repeat; i++) { + hw_gpio_set(GPIO_ID_LED); + hw_delay_ms(on); + hw_gpio_reset(GPIO_ID_LED); + hw_delay_ms(off); + } +} + +static void update_status_notify (update_status_t status) { + status_data[sizeof(status_data) - 1] = (uint8_t) (status); + for (int i = 0; i < sizeof(status_data); i++) { + while (!(fpga_usb_status_get() & USB_STATUS_TXE)); + fpga_usb_push(status_data[i]); + } + fpga_reg_set(REG_USB_SCR, USB_SCR_WRITE_FLUSH); + if (status == UPDATE_STATUS_DONE) { + update_blink_led(15, 85, 10); + } else if (status == UPDATE_STATUS_ERROR) { + update_blink_led(1000, 1000, 30); + } else { + update_blink_led(15, 185, 2); + hw_delay_ms(500); + } +} + +static bool mcu_update (uint32_t address, uint32_t length) { + hw_flash_t buffer; + hw_flash_erase(); + for (uint32_t offset = 0; offset < length; offset += sizeof(hw_flash_t)) { + fpga_mem_read(address + offset, sizeof(hw_flash_t), (uint8_t *) (&buffer)); + hw_flash_program(offset, buffer); + if (hw_flash_read(offset) != buffer) { + return true; + } + } + return false; +} + +static bool bootloader_update (uint32_t address, uint32_t length) { + uint8_t update_buffer[FPGA_MAX_MEM_TRANSFER]; + uint8_t verify_buffer[FPGA_MAX_MEM_TRANSFER]; + for (uint32_t offset = 0; offset < BOOTLOADER_LENGTH; offset += FLASH_ERASE_BLOCK_SIZE) { + flash_erase_block(BOOTLOADER_ADDRESS + offset); + } + for (uint32_t offset = 0; offset < length; offset += FPGA_MAX_MEM_TRANSFER) { + fpga_mem_copy(address + offset, BOOTLOADER_ADDRESS + offset, FPGA_MAX_MEM_TRANSFER); + } + for (uint32_t offset = 0; offset < length; offset += sizeof(verify_buffer)) { + fpga_mem_read(address + offset, sizeof(update_buffer), update_buffer); + fpga_mem_read(BOOTLOADER_ADDRESS + offset, sizeof(verify_buffer), verify_buffer); + for (int i = 0; i < sizeof(verify_buffer); i++) { + if (update_buffer[i] != verify_buffer[i]) { + return true; + } + } + } + return false; +} + + +update_error_t update_backup (uint32_t address, uint32_t *length) { + uint32_t mcu_length; + uint32_t fpga_length; + uint32_t bootloader_length; + + *length = update_write_token(&address); + + *length += update_prepare_chunk(&address, CHUNK_ID_MCU_DATA); + mcu_length = hw_flash_size(); + for (uint32_t offset = 0; offset < mcu_length; offset += sizeof(hw_flash_t)) { + hw_flash_t buffer = hw_flash_read(offset); + fpga_mem_write(address + offset, sizeof(hw_flash_t), (uint8_t *) (&buffer)); + } + *length += update_finalize_chunk(&address, mcu_length); + + *length += update_prepare_chunk(&address, CHUNK_ID_FPGA_DATA); + if (vendor_backup(address, &fpga_length) != VENDOR_OK) { + return UPDATE_ERROR_READ; + } + *length += update_finalize_chunk(&address, fpga_length); + + *length += update_prepare_chunk(&address, CHUNK_ID_BOOTLOADER_DATA); + bootloader_length = BOOTLOADER_LENGTH; + for (uint32_t offset = 0; offset < bootloader_length; offset += FPGA_MAX_MEM_TRANSFER) { + fpga_mem_copy(BOOTLOADER_ADDRESS + offset, address + offset, FPGA_MAX_MEM_TRANSFER); + } + *length += update_finalize_chunk(&address, bootloader_length); + + return UPDATE_OK; +} + +update_error_t update_prepare (uint32_t address, uint32_t length) { + uint32_t end_address = (address + length); + chunk_id_t id; + uint32_t data_address; + uint32_t data_length; + + if (update_check_token(&address)) { + return UPDATE_ERROR_TOKEN; + } + + parameters.flags = 0; + parameters.mcu_address = 0; + parameters.fpga_address = 0; + parameters.bootloader_address = 0; + + while (address < end_address) { + if (update_get_chunk(&address, &id, &data_address, &data_length)) { + return UPDATE_ERROR_CHECKSUM; + } + + switch (id) { + case CHUNK_ID_UPDATE_INFO: + break; + + case CHUNK_ID_MCU_DATA: + if (data_length > hw_flash_size()) { + return UPDATE_ERROR_SIZE; + } + parameters.flags |= LOADER_FLAGS_UPDATE_MCU; + parameters.mcu_address = data_address; + break; + + case CHUNK_ID_FPGA_DATA: + if (data_length > vendor_flash_size()) { + return UPDATE_ERROR_SIZE; + } + parameters.flags |= LOADER_FLAGS_UPDATE_FPGA; + parameters.fpga_address = data_address; + break; + + case CHUNK_ID_BOOTLOADER_DATA: + if (data_length > BOOTLOADER_LENGTH) { + return UPDATE_ERROR_SIZE; + } + parameters.flags |= LOADER_FLAGS_UPDATE_BOOTLOADER; + parameters.bootloader_address = data_address; + break; + + default: + return UPDATE_ERROR_UNKNOWN_CHUNK; + } + } + + return UPDATE_OK; +} + +void update_start (void) { + parameters.magic = UPDATE_MAGIC_START; + hw_loader_reset(¶meters); +} + +bool update_check (void) { + hw_loader_get_parameters(¶meters); + return (parameters.magic == UPDATE_MAGIC_START); +} + +void update_perform (void) { + uint32_t length; + + if (parameters.flags & LOADER_FLAGS_UPDATE_MCU) { + update_status_notify(UPDATE_STATUS_MCU); + fpga_mem_read(parameters.mcu_address - 4, sizeof(length), (uint8_t *) (&length)); + if (mcu_update(parameters.mcu_address, length)) { + update_status_notify(UPDATE_STATUS_ERROR); + while (1); + } + } + + if (parameters.flags & LOADER_FLAGS_UPDATE_FPGA) { + update_status_notify(UPDATE_STATUS_FPGA); + fpga_mem_read(parameters.fpga_address - 4, sizeof(length), (uint8_t *) (&length)); + if (vendor_update(parameters.fpga_address, length) != VENDOR_OK) { + update_status_notify(UPDATE_STATUS_ERROR); + while (1); + } + } + + if (parameters.flags & LOADER_FLAGS_UPDATE_BOOTLOADER) { + update_status_notify(UPDATE_STATUS_BOOTLOADER); + fpga_mem_read(parameters.bootloader_address - 4, sizeof(length), (uint8_t *) (&length)); + if (bootloader_update(parameters.bootloader_address, length)) { + update_status_notify(UPDATE_STATUS_ERROR); + while (1); + } + } + + update_status_notify(UPDATE_STATUS_DONE); + + vendor_reconfigure(); + + parameters.magic = 0; + hw_loader_reset(¶meters); +} diff --git a/sw/controller/src/update.h b/sw/controller/src/update.h new file mode 100644 index 0000000..b6f029c --- /dev/null +++ b/sw/controller/src/update.h @@ -0,0 +1,26 @@ +#ifndef UPDATE_H__ +#define UPDATE_H__ + + +#include +#include + + +typedef enum { + UPDATE_OK, + UPDATE_ERROR_TOKEN, + UPDATE_ERROR_CHECKSUM, + UPDATE_ERROR_SIZE, + UPDATE_ERROR_UNKNOWN_CHUNK, + UPDATE_ERROR_READ, +} update_error_t; + + +update_error_t update_backup (uint32_t address, uint32_t *length); +update_error_t update_prepare (uint32_t address, uint32_t length); +void update_start (void); +bool update_check (void); +void update_perform (void); + + +#endif diff --git a/sw/controller/src/usb.c b/sw/controller/src/usb.c new file mode 100644 index 0000000..ca73e75 --- /dev/null +++ b/sw/controller/src/usb.c @@ -0,0 +1,462 @@ +#include "cfg.h" +#include "cic.h" +#include "dd.h" +#include "flash.h" +#include "fpga.h" +#include "rtc.h" +#include "update.h" +#include "usb.h" + + +enum rx_state { + RX_STATE_IDLE, + RX_STATE_ARGS, + RX_STATE_DATA, +}; + +enum tx_state { + TX_STATE_IDLE, + TX_STATE_TOKEN, + TX_STATE_DATA, + TX_STATE_DMA, + TX_STATE_FLUSH, +}; + + +struct process { + enum rx_state rx_state; + uint8_t rx_counter; + uint8_t rx_cmd; + uint32_t rx_args[2]; + bool rx_dma_running; + + enum tx_state tx_state; + uint8_t tx_counter; + usb_tx_info_t tx_info; + uint32_t tx_token; + bool tx_dma_running; + + bool response_pending; + bool response_error; + usb_tx_info_t response_info; + + bool packet_pending; + usb_tx_info_t packet_info; + + bool read_ready; + uint32_t read_length; + uint32_t read_address; +}; + + +static struct process p; + + +static const char CMD_TOKEN[3] = { 'C', 'M', 'D' }; +static const uint32_t CMP_TOKEN = (0x434D5000UL); +static const uint32_t ERR_TOKEN = (0x45525200UL); +static const uint32_t PKT_TOKEN = (0x504B5400UL); + + +static bool usb_dma_ready (void) { + return !((fpga_reg_get(REG_USB_DMA_SCR) & DMA_SCR_BUSY)); +} + +static bool usb_rx_byte (uint8_t *data) { + if (fpga_usb_status_get() & USB_STATUS_RXNE) { + *data = fpga_usb_pop(); + return true; + } + return false; +} + +static bool usb_tx_byte (uint8_t data) { + if (fpga_usb_status_get() & USB_STATUS_TXE) { + fpga_usb_push(data); + return true; + } + return false; +} + +static uint8_t usb_rx_word_counter = 0; +static uint32_t usb_rx_word_buffer = 0; + +static bool usb_rx_word (uint32_t *data) { + uint8_t tmp; + while (usb_rx_byte(&tmp)) { + usb_rx_word_buffer = (usb_rx_word_buffer << 8) | tmp; + usb_rx_word_counter += 1; + if (usb_rx_word_counter == 4) { + usb_rx_word_counter = 0; + *data = usb_rx_word_buffer; + usb_rx_word_buffer = 0; + return true; + } + } + return false; +} + +static uint8_t usb_tx_word_counter = 0; + +static bool usb_tx_word (uint32_t data) { + while (usb_tx_byte(data >> ((3 - usb_tx_word_counter) * 8))) { + usb_tx_word_counter += 1; + if (usb_tx_word_counter == 4) { + usb_tx_word_counter = 0; + return true; + } + } + return false; +} + +static uint8_t usb_rx_cmd_counter = 0; + +static bool usb_rx_cmd (uint8_t *cmd) { + uint8_t data; + while (usb_rx_byte(&data)) { + if (usb_rx_cmd_counter == 3) { + *cmd = data; + usb_rx_cmd_counter = 0; + return true; + } + if (data != CMD_TOKEN[usb_rx_cmd_counter++]) { + usb_rx_cmd_counter = 0; + return false; + } + } + return false; +} + +static void usb_rx_process (void) { + if (p.rx_state == RX_STATE_IDLE) { + if (!p.response_pending && usb_rx_cmd(&p.rx_cmd)) { + p.rx_state = RX_STATE_ARGS; + p.rx_counter = 0; + p.rx_dma_running = false; + p.response_error = false; + p.response_info.cmd = p.rx_cmd; + p.response_info.data_length = 0; + p.response_info.dma_length = 0; + p.response_info.done_callback = NULL; + } + } + + if (p.rx_state == RX_STATE_ARGS) { + while (usb_rx_word(&p.rx_args[p.rx_counter])) { + p.rx_counter += 1; + if (p.rx_counter == 2) { + p.rx_counter = 0; + p.rx_state = RX_STATE_DATA; + break; + } + } + } + + if (p.rx_state == RX_STATE_DATA) { + switch (p.rx_cmd) { + case 'v': + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + p.response_info.data_length = 4; + p.response_info.data[0] = cfg_get_version(); + break; + + case 'R': + cfg_reset_state(); + cic_reset_parameters(); + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + break; + + case 'B': + cic_set_parameters(p.rx_args); + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + break; + + case 'c': + p.response_error = cfg_query(p.rx_args); + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + p.response_info.data_length = 4; + p.response_info.data[0] = p.rx_args[1]; + break; + + case 'C': + p.response_error = cfg_update(p.rx_args); + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + break; + + case 't': + cfg_get_time(p.rx_args); + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + p.response_info.data_length = 8; + p.response_info.data[0] = p.rx_args[0]; + p.response_info.data[1] = p.rx_args[1]; + break; + + case 'T': + cfg_set_time(p.rx_args); + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + break; + + case 'm': + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + p.response_info.dma_address = p.rx_args[0]; + p.response_info.dma_length = p.rx_args[1]; + break; + + case 'M': + if (usb_dma_ready()) { + if (!p.rx_dma_running) { + fpga_reg_set(REG_USB_DMA_ADDRESS, p.rx_args[0]); + fpga_reg_set(REG_USB_DMA_LENGTH, p.rx_args[1]); + fpga_reg_set(REG_USB_DMA_SCR, DMA_SCR_DIRECTION | DMA_SCR_START); + p.rx_dma_running = true; + } else { + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + } + } + break; + + case 'D': + dd_set_block_ready(p.rx_args[0] == 0); + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + break; + + case 'U': + if ((p.read_length > 0) && usb_dma_ready()) { + uint32_t length = (p.read_length > p.rx_args[1]) ? p.rx_args[1] : p.read_length; + if (!p.rx_dma_running) { + fpga_reg_set(REG_USB_DMA_ADDRESS, p.read_address); + fpga_reg_set(REG_USB_DMA_LENGTH, length); + fpga_reg_set(REG_USB_DMA_SCR, DMA_SCR_DIRECTION | DMA_SCR_START); + p.rx_dma_running = true; + p.read_ready = false; + } else { + p.rx_args[1] -= length; + p.read_length -= length; + p.read_address += length; + p.read_ready = true; + if (p.rx_args[1] == 0) { + p.rx_state = RX_STATE_IDLE; + } + } + } + break; + + case 'f': + p.response_info.data[0] = update_backup(p.rx_args[0], &p.response_info.data[1]); + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + p.response_error = (p.response_info.data[0] != UPDATE_OK); + p.response_info.data_length = 8; + break; + + case 'F': + p.response_info.data[0] = update_prepare(p.rx_args[0], p.rx_args[1]); + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + p.response_info.data_length = 4; + if (p.response_info.data[0] == UPDATE_OK) { + p.response_info.done_callback = update_start; + } else { + p.response_error = true; + } + break; + + case 'p': + flash_wait_busy(); + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + p.response_info.data_length = 4; + p.response_info.data[0] = FLASH_ERASE_BLOCK_SIZE; + break; + + case 'P': + flash_erase_block(p.rx_args[0]); + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + break; + + case '?': + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + p.response_info.data_length = 8; + p.response_info.data[0] = fpga_reg_get(REG_DEBUG_0); + p.response_info.data[1] = fpga_reg_get(REG_DEBUG_1); + break; + + default: + p.rx_state = RX_STATE_IDLE; + p.response_pending = true; + p.response_error = true; + p.response_info.data_length = 4; + p.response_info.data[0] = 0xFF; + break; + } + } +} + +static void usb_tx_process (void) { + if (p.tx_state == TX_STATE_IDLE) { + if (p.response_pending) { + p.response_pending = false; + p.tx_state = TX_STATE_TOKEN; + p.tx_counter = 0; + p.tx_info = p.response_info; + p.tx_token = p.response_error ? ERR_TOKEN : CMP_TOKEN; + p.tx_dma_running = false; + } else if (p.packet_pending) { + p.packet_pending = false; + p.tx_state = TX_STATE_TOKEN; + p.tx_counter = 0; + p.tx_info = p.packet_info; + p.tx_token = PKT_TOKEN; + p.tx_dma_running = false; + } + } + + if (p.tx_state == TX_STATE_TOKEN) { + if (p.tx_counter == 0) { + if (usb_tx_word(p.tx_token | p.tx_info.cmd)) { + p.tx_counter += 1; + } + } + if (p.tx_counter == 1) { + if (usb_tx_word(p.tx_info.data_length + p.tx_info.dma_length)) { + p.tx_state = TX_STATE_DATA; + p.tx_counter = 0; + } + } + } + + if (p.tx_state == TX_STATE_DATA) { + if (p.tx_info.data_length > 0) { + while (usb_tx_word(p.tx_info.data[p.tx_counter])) { + p.tx_counter += 1; + if (p.tx_counter == (p.tx_info.data_length / 4)) { + p.tx_state = TX_STATE_DMA; + p.tx_counter = 0; + break; + } + } + } else { + p.tx_state = TX_STATE_DMA; + } + } + + if (p.tx_state == TX_STATE_DMA) { + if (p.tx_info.dma_length > 0) { + if (usb_dma_ready()) { + if (!p.tx_dma_running) { + p.tx_dma_running = true; + fpga_reg_set(REG_USB_DMA_ADDRESS, p.tx_info.dma_address); + fpga_reg_set(REG_USB_DMA_LENGTH, p.tx_info.dma_length); + fpga_reg_set(REG_USB_DMA_SCR, DMA_SCR_START); + } else { + p.tx_state = TX_STATE_FLUSH; + } + } + } else { + p.tx_state = TX_STATE_FLUSH; + } + } + + if (p.tx_state == TX_STATE_FLUSH) { + fpga_reg_set(REG_USB_SCR, USB_SCR_WRITE_FLUSH); + if (p.tx_info.done_callback) { + p.tx_info.done_callback(); + } + p.tx_state = TX_STATE_IDLE; + } +} + + +void usb_create_packet (usb_tx_info_t *info, usb_packet_cmd_e cmd) { + info->cmd = (uint8_t) (cmd); + info->data_length = 0; + for (int i = 0; i < 4; i++) { + info->data[i] = 0; + } + info->dma_length = 0; + info->dma_address = 0; + info->done_callback = NULL; +} + +bool usb_enqueue_packet (usb_tx_info_t *info) { + if (p.packet_pending) { + return false; + } + p.packet_pending = true; + p.packet_info = *info; + return true; +} + +bool usb_prepare_read (uint32_t *args) { + if (!p.read_ready) { + return false; + } + p.read_length = args[1]; + p.read_address = args[0]; + return true; +} + +void usb_get_read_info (uint32_t *args) { + uint32_t scr = fpga_reg_get(REG_USB_SCR); + args[0] = 0; + args[1] = 0; + if (p.rx_state == RX_STATE_DATA && p.rx_cmd == 'U') { + args[0] = p.rx_args[0] & 0xFF; + args[1] = p.rx_args[1]; + } + args[0] |= (p.read_length > 0) ? (1 << 31) : 0; + args[0] |= (scr & USB_SCR_RESET_STATE) ? (1 << 30) : 0; + args[0] |= (scr & USB_SCR_PWRSAV) ? (1 << 29) : 0; +} + +void usb_init (void) { + fpga_reg_set(REG_USB_DMA_SCR, DMA_SCR_STOP); + fpga_reg_set(REG_USB_SCR, USB_SCR_FIFO_FLUSH); + + p.rx_state = RX_STATE_IDLE; + p.tx_state = TX_STATE_IDLE; + + p.response_pending = false; + p.packet_pending = false; + + p.read_ready = true; + p.read_length = 0; + p.read_address = 0; + + usb_rx_word_counter = 0; + usb_rx_word_buffer = 0; + usb_tx_word_counter = 0; + usb_rx_cmd_counter = 0; +} + +void usb_process (void) { + uint32_t scr = fpga_reg_get(REG_USB_SCR); + if (scr & (USB_SCR_PWRSAV | USB_SCR_RESET_STATE | USB_SCR_RESET_PENDING)) { + if (p.packet_pending && p.packet_info.done_callback) { + p.packet_pending = false; + p.packet_info.done_callback(); + } + if (scr & USB_SCR_RESET_PENDING) { + if (p.tx_state != TX_STATE_IDLE && p.tx_info.done_callback) { + p.tx_info.done_callback(); + } + usb_init(); + fpga_reg_set(REG_USB_SCR, USB_SCR_RESET_ACK); + } + } else { + usb_rx_process(); + usb_tx_process(); + } +} diff --git a/sw/controller/src/usb.h b/sw/controller/src/usb.h new file mode 100644 index 0000000..2e5273b --- /dev/null +++ b/sw/controller/src/usb.h @@ -0,0 +1,36 @@ +#ifndef USB_H__ +#define USB_H__ + + +#include +#include + + +typedef enum packet_cmd { + PACKET_CMD_BUTTON_TRIGGER = 'B', + PACKET_CMD_DD_REQUEST = 'D', + PACKET_CMD_DEBUG_OUTPUT = 'U', + PACKET_CMD_ISV_OUTPUT = 'I', + PACKET_CMD_UPDATE_STATUS = 'F', +} usb_packet_cmd_e; + + +typedef struct usb_tx_info { + uint8_t cmd; + uint32_t data_length; + uint32_t data[4]; + uint32_t dma_length; + uint32_t dma_address; + void (*done_callback)(void); +} usb_tx_info_t; + + +void usb_create_packet (usb_tx_info_t *info, usb_packet_cmd_e cmd); +bool usb_enqueue_packet (usb_tx_info_t *info); +bool usb_prepare_read (uint32_t *args); +void usb_get_read_info (uint32_t *args); +void usb_init (void); +void usb_process (void); + + +#endif diff --git a/sw/controller/src/vendor.h b/sw/controller/src/vendor.h new file mode 100644 index 0000000..016fac6 --- /dev/null +++ b/sw/controller/src/vendor.h @@ -0,0 +1,24 @@ +#ifndef VENDOR_H__ +#define VENDOR_H__ + + +#include + + +typedef enum { + VENDOR_OK, + VENDOR_ERROR_ARGS, + VENDOR_ERROR_INIT, + VENDOR_ERROR_ERASE, + VENDOR_ERROR_PROGRAM, + VENDOR_ERROR_VERIFY, +} vendor_error_t; + + +uint32_t vendor_flash_size (void); +vendor_error_t vendor_backup (uint32_t address, uint32_t *length); +vendor_error_t vendor_update (uint32_t address, uint32_t length); +vendor_error_t vendor_reconfigure (void); + + +#endif diff --git a/sw/n64/Makefile b/sw/n64/Makefile deleted file mode 100644 index d70114c..0000000 --- a/sw/n64/Makefile +++ /dev/null @@ -1,70 +0,0 @@ -TOOLCHAIN = mips64-elf- -CC = $(TOOLCHAIN)gcc -CXX = $(TOOLCHAIN)g++ -OBJCOPY = $(TOOLCHAIN)objcopy -OBJDUMP = $(TOOLCHAIN)objdump -SIZE = $(TOOLCHAIN)size - -FLAGS = -march=vr4300 -mtune=vr4300 -falign-functions=32 $(USER_FLAGS) -CFLAGS = -Os -Wall -ffunction-sections -fdata-sections -ffreestanding -MMD -MP -ASFLAGS = -Wa,-I$(N64_INST)/mips64-elf/lib -LDFLAGS = -lc -nostartfiles -Wl,--gc-sections - -SRC_DIR = src -BUILD_DIR = build - -SRC_FILES = \ - startup.S \ - boot.c \ - crc32.c \ - init.c \ - main.c \ - sc64.c \ - storage.c \ - sys.c \ - syscalls.c \ - fatfs/diskio.c \ - fatfs/ff.c \ - fatfs/ffsystem.c \ - fatfs/ffunicode.c - -SRCS = $(addprefix $(SRC_DIR)/, $(SRC_FILES)) -OBJS = $(addprefix $(BUILD_DIR)/, $(notdir $(patsubst %,%.o,$(SRCS)))) -DEPS = $(OBJS:.o=.d) - -VPATH = $(SRC_DIR) $(SRC_DIR)/fatfs - -$(@info $(shell mkdir -p ./$(BUILD_DIR) &> /dev/null)) - -$(BUILD_DIR)/%.S.o: %.S - $(CC) -x assembler-with-cpp $(FLAGS) $(ASFLAGS) $(CFLAGS) -c $< -o $@ - -$(BUILD_DIR)/%.c.o: %.c - $(CC) $(FLAGS) $(CFLAGS) -c $< -o $@ - -$(BUILD_DIR)/n64boot.elf: $(OBJS) N64.ld - $(CXX) $(FLAGS) $(LDFLAGS) -TN64.ld $(OBJS) -o $@ - @$(OBJDUMP) -S $@ > $(BUILD_DIR)/n64boot.lst - -$(BUILD_DIR)/n64boot.bin: $(BUILD_DIR)/n64boot.elf - @$(OBJCOPY) -O binary $< $@ - @chksum64 $@ > /dev/null - @truncate --size=90k $@ - -$(BUILD_DIR)/n64boot.hex: $(BUILD_DIR)/n64boot.bin - @$(OBJCOPY) -I binary -O ihex $< $@ - -print_size: $(BUILD_DIR)/n64boot.elf - @echo 'Size of modules:' - @$(SIZE) -B -d -t --common $(OBJS) - @echo 'Size of n64boot:' - @$(SIZE) -B -d $< - -all: $(BUILD_DIR)/n64boot.hex print_size - -clean: - @rm -rf ./$(BUILD_DIR)/* - -.PHONY: all clean print_size - --include $(DEPS) diff --git a/sw/n64/N64.ld b/sw/n64/N64.ld deleted file mode 100644 index f69881b..0000000 --- a/sw/n64/N64.ld +++ /dev/null @@ -1,46 +0,0 @@ -MEMORY { - rdram (rwx) : org = 0x80000400, len = 4M - 0x400 - flash (r) : org = 0xB0000000, len = 90k -} - -ENTRY(entry_handler) - -__stack_size = 64k; - -SECTIONS { - .flash : { - KEEP(*(.text.rom_header)); - KEEP(*(.text.ipl3)); - __ipl3_font = LOADADDR(.flash) + 0xB70; - } > flash - - .text : { - *(.text.entry_handler) - *(.text .text.* .gnu.linkonce.t.*) - *(.rodata .rodata.* .gnu.linkonce.r.*) - *(.data .data.* .gnu.linkonce.d.*) - _gp = . + 0x8000; - *(.sdata .sdata.* .gnu.linkonce.s.*) - *(.lit8 .lit4) - . = ALIGN(4); - } > rdram AT > flash - - .bss : { - *(.sbss .sbss.* .gnu.linkonce.sb.*) - *(.scommon .scommon.*) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - } > rdram - - _sheap = .; - . = ORIGIN(rdram) + LENGTH(rdram) - __stack_size; - _eheap = .; - - . += __stack_size; - _sp = .; - - /DISCARD/ : { - *(.MIPS.*) - } -} diff --git a/sw/n64/src/fatfs/diskio.c b/sw/n64/src/fatfs/diskio.c deleted file mode 100644 index a14b7bf..0000000 --- a/sw/n64/src/fatfs/diskio.c +++ /dev/null @@ -1,37 +0,0 @@ -#include "ff.h" -#include "diskio.h" -#include "../sc64.h" - -DSTATUS disk_status (BYTE pdrv) { - return 0; -} - -DSTATUS disk_initialize (BYTE pdrv) { - return 0; -} - -DRESULT disk_read (BYTE pdrv, BYTE *buff, LBA_t sector, UINT count) { - if (pdrv == 0) { - return RES_NOTRDY; - } else if (pdrv == 1) { - sc64_debug_fsd_read(buff, sector, count); - return RES_OK; - } - return RES_PARERR; -} - -#if FF_FS_READONLY == 0 -DRESULT disk_write (BYTE pdrv, const BYTE *buff, LBA_t sector, UINT count) { - if (pdrv == 0) { - return RES_NOTRDY; - } else if (pdrv == 1) { - sc64_debug_fsd_write(buff, sector, count); - return RES_OK; - } - return RES_PARERR; -} -#endif - -DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void *buff) { - return RES_PARERR; -} diff --git a/sw/n64/src/init.c b/sw/n64/src/init.c deleted file mode 100644 index 1f1d31b..0000000 --- a/sw/n64/src/init.c +++ /dev/null @@ -1,12 +0,0 @@ -#include "sys.h" -#include "sc64.h" - - -void init (void) { - uint32_t pifram = si_io_read((io32_t *) (&PIFRAM[0x3C])); - si_io_write((io32_t *) (&PIFRAM[0x3C]), pifram | 0x08); - - sc64_init(); - - LOG_I("Initialized\r\n"); -} diff --git a/sw/n64/src/main.c b/sw/n64/src/main.c deleted file mode 100644 index cc429a9..0000000 --- a/sw/n64/src/main.c +++ /dev/null @@ -1,71 +0,0 @@ -#include "boot.h" -#include "sc64.h" -#include "storage.h" - - -void main (void) { - boot_info_t boot_info; - sc64_info_t sc64_info; - - boot_info.reset_type = OS_INFO->reset_type; - - sc64_get_info(&sc64_info); - - LOG_I("Bootloader version: %.32s\r\n", sc64_info.bootloader_version); - - switch (sc64_info.boot_mode) { - case BOOT_MODE_MENU: - LOG_I("Running menu from SD card\r\n"); - storage_run_menu(STORAGE_BACKEND_SD, &boot_info, &sc64_info); - break; - - case BOOT_MODE_ROM: - LOG_I("Running ROM from SDRAM\r\n"); - boot_info.device_type = BOOT_DEVICE_TYPE_ROM; - break; - - case BOOT_MODE_DDIPL: - LOG_I("Running DDIPL from SDRAM\r\n"); - boot_info.device_type = BOOT_DEVICE_TYPE_DD; - break; - - case BOOT_MODE_DIRECT: - LOG_I("Running bootloader from SDRAM - running menu from FSD\r\n"); - storage_run_menu(STORAGE_BACKEND_USB, &boot_info, &sc64_info); - break; - - default: - LOG_E("Unknown boot mode! - %d\r\n", sc64_info.boot_mode); - while (1); - } - - if (sc64_info.tv_type != TV_TYPE_UNKNOWN) { - boot_info.tv_type = sc64_info.tv_type; - LOG_I("Using provided TV type: %d\r\n", boot_info.tv_type); - } else { - if (boot_get_tv_type(&boot_info)) { - LOG_I("Using TV type guessed from ROM header: %d\r\n", boot_info.tv_type); - } else { - boot_info.tv_type = OS_INFO->tv_type; - LOG_I("Using console TV type: %d\r\n", boot_info.tv_type); - } - } - - if (sc64_info.cic_seed != 0xFFFF) { - boot_info.cic_seed = sc64_info.cic_seed & 0xFF; - boot_info.version = (sc64_info.cic_seed >> 8) & 0x01; - LOG_I("Using provided CIC seed and version: 0x%02X.%d\r\n", boot_info.cic_seed, boot_info.version); - } else { - if (boot_get_cic_seed_version(&boot_info)) { - LOG_I("Using CIC seed and version guessed from IPL3: 0x%02X.%d\r\n", boot_info.cic_seed, boot_info.version); - } else { - boot_info.cic_seed = 0x3F; - boot_info.version = 0; - LOG_I("Using 6102/7101 CIC seed and version: 0x%02X.%d\r\n", boot_info.cic_seed, boot_info.version); - } - } - - LOG_I("Booting IPL3\033[0m\r\n\r\n"); - - boot(&boot_info); -} diff --git a/sw/n64/src/sc64.c b/sw/n64/src/sc64.c deleted file mode 100644 index e04bc76..0000000 --- a/sw/n64/src/sc64.c +++ /dev/null @@ -1,203 +0,0 @@ -#include "sc64.h" - - -extern char header_text_info __attribute__((section(".data"))); - - -bool sc64_check_presence (void) { - uint32_t version = pi_io_read(&SC64->VERSION); - return (version == SC64_VERSION_2); -} - -void sc64_wait_cpu_ready (void) { - uint32_t sr; - do { - sr = pi_io_read(&SC64->SR_CMD); - } while (!(sr & SC64_SR_CPU_READY)); -} - -bool sc64_wait_cpu_busy (void) { - uint32_t sr; - do { - sr = pi_io_read(&SC64->SR_CMD); - } while (sr & SC64_SR_CPU_BUSY); - return sr & SC64_SR_CMD_ERROR; -} - -bool sc64_perform_cmd (uint8_t cmd, uint32_t *args, uint32_t *result) { - if (args != NULL) { - pi_io_write(&SC64->DATA[0], args[0]); - pi_io_write(&SC64->DATA[1], args[1]); - } - pi_io_write(&SC64->SR_CMD, ((uint32_t) (cmd)) & 0xFF); - bool error = sc64_wait_cpu_busy(); - if (result != NULL) { - result[0] = pi_io_read(&SC64->DATA[0]); - result[1] = pi_io_read(&SC64->DATA[1]); - } - return error; -} - -uint32_t sc64_get_config (cfg_id_t id) { - uint32_t args[2] = { id, 0 }; - uint32_t result[2]; - sc64_perform_cmd(SC64_CMD_QUERY, args, result); - return result[1]; -} - -void sc64_set_config (cfg_id_t id, uint32_t value) { - uint32_t args[2] = { id, value }; - sc64_perform_cmd(SC64_CMD_CONFIG, args, NULL); -} - -void sc64_get_info (sc64_info_t *info) { - io32_t *src = (io32_t *) UNCACHED(&header_text_info); - uint32_t *dst = (uint32_t *) info->bootloader_version; - - bool sdram_switched = sc64_get_config(CFG_ID_SDRAM_SWITCH); - - if (sdram_switched) { - sc64_set_config(CFG_ID_SDRAM_SWITCH, false); - } - - for (int i = 0; i < sizeof(info->bootloader_version); i += sizeof(uint32_t)) { - *dst++ = pi_io_read(src++); - } - - if (sdram_switched) { - sc64_set_config(CFG_ID_SDRAM_SWITCH, true); - } - - info->dd_enabled = (bool) sc64_get_config(CFG_ID_DD_ENABLE); - info->save_type = (save_type_t) sc64_get_config(CFG_ID_SAVE_TYPE); - info->cic_seed = (uint16_t) sc64_get_config(CFG_ID_CIC_SEED); - info->tv_type = (tv_type_t) sc64_get_config(CFG_ID_TV_TYPE); - info->save_location = (io32_t *) (0x10000000 | sc64_get_config(CFG_ID_SAVE_OFFEST)); - info->ddipl_location = (io32_t *) (0x10000000 | sc64_get_config(CFG_ID_DDIPL_OFFEST)); - info->boot_mode = (boot_mode_t) sc64_get_config(CFG_ID_BOOT_MODE); -} - -void sc64_wait_usb_rx_ready (uint32_t *type, uint32_t *length) { - uint32_t result[2]; - do { - sc64_perform_cmd(SC64_CMD_DEBUG_RX_READY, NULL, result); - } while (result[0] == 0 && result[1] == 0); - *type = result[0]; - *length = result[1]; -} - -void sc64_wait_usb_rx_busy (void) { - uint32_t result[2]; - do { - sc64_perform_cmd(SC64_CMD_DEBUG_RX_BUSY, NULL, result); - } while (result[0]); -} - -void sc64_usb_rx_data (io32_t *address, uint32_t length) { - uint32_t args[2] = { (uint32_t) (address), ALIGN(length, 2) }; - sc64_perform_cmd(SC64_CMD_DEBUG_RX_DATA, args, NULL); -} - -void sc64_wait_usb_tx_ready (void) { - uint32_t result[2]; - do { - sc64_perform_cmd(SC64_CMD_DEBUG_TX_READY, NULL, result); - } while (!result[0]); -} - -void sc64_usb_tx_data (io32_t *address, uint32_t length) { - uint32_t args[2] = { (uint32_t) (address), ALIGN(length, 2) }; - sc64_perform_cmd(SC64_CMD_DEBUG_TX_DATA, args, NULL); -} - -void sc64_debug_write (uint8_t type, const void *data, uint32_t len) { - char *dma = "DMA@"; - char *cmp = "CMPH"; - - io32_t *sdram = (io32_t *) (SC64_DEBUG_WRITE_ADDRESS); - - uint32_t *src = (uint32_t *) (data); - io32_t *dst = sdram; - - uint32_t copy_length = ALIGN(len, 4); - - sc64_wait_usb_tx_ready(); - - bool writable = sc64_get_config(CFG_ID_SDRAM_WRITABLE); - bool sdram_switched = sc64_get_config(CFG_ID_SDRAM_SWITCH); - - if (!writable) { - sc64_set_config(CFG_ID_SDRAM_WRITABLE, true); - } - if (!sdram_switched) { - sc64_set_config(CFG_ID_SDRAM_SWITCH, true); - } - - pi_io_write(dst++, *((uint32_t *) (dma))); - pi_io_write(dst++, (type << 24) | len); - - while (src < ((uint32_t *) (data + copy_length))) { - pi_io_write(dst++, *src++); - if (dst >= (io32_t *) ((void *) (sdram) + SC64_DEBUG_MAX_SIZE)) { - sc64_usb_tx_data(sdram, (dst - sdram) * sizeof(uint32_t)); - sc64_wait_usb_tx_ready(); - dst = sdram; - } - } - - pi_io_write(dst++, *((uint32_t *) (cmp))); - - if (!writable) { - sc64_set_config(CFG_ID_SDRAM_WRITABLE, false); - } - if (!sdram_switched) { - sc64_set_config(CFG_ID_SDRAM_SWITCH, false); - } - - sc64_usb_tx_data(sdram, (dst - sdram) * sizeof(uint32_t)); -} - -void sc64_debug_fsd_read (const void *data, uint32_t sector, uint32_t count) { - uint32_t type; - uint32_t length; - - io32_t *sdram = (io32_t *) (SC64_DEBUG_READ_ADDRESS); - - io32_t *src = sdram; - uint32_t *dst = (uint32_t *) (data); - - uint32_t read_length = count * 512; - - sc64_debug_write(SC64_DEBUG_ID_FSD_SECTOR, §or, 4); - sc64_debug_write(SC64_DEBUG_ID_FSD_READ, &read_length, 4); - sc64_wait_usb_rx_ready(&type, &length); - sc64_usb_rx_data(sdram, length); - sc64_wait_usb_rx_busy(); - - uint32_t copy_length = ALIGN(length, 4); - - bool sdram_switched = sc64_get_config(CFG_ID_SDRAM_SWITCH); - - if (!sdram_switched) { - sc64_set_config(CFG_ID_SDRAM_SWITCH, true); - } - - for (int i = 0; i < copy_length; i += 4) { - *dst++ = pi_io_read(src++); - } - - if (!sdram_switched) { - sc64_set_config(CFG_ID_SDRAM_SWITCH, false); - } -} - -void sc64_debug_fsd_write (const void *data, uint32_t sector, uint32_t count) { - sc64_debug_write(SC64_DEBUG_ID_FSD_SECTOR, §or, 4); - sc64_debug_write(SC64_DEBUG_ID_FSD_WRITE, data, count * 512); -} - -void sc64_init (void) { - while (!sc64_check_presence()); - sc64_wait_cpu_ready(); - sc64_set_config(CFG_ID_SDRAM_SWITCH, true); -} diff --git a/sw/n64/src/sc64.h b/sw/n64/src/sc64.h deleted file mode 100644 index b9ff847..0000000 --- a/sw/n64/src/sc64.h +++ /dev/null @@ -1,126 +0,0 @@ -#ifndef SC64_H__ -#define SC64_H__ - - -#include -#include -#include -#include "sys.h" - - -#ifdef DEBUG -#include -#define LOG_I(args...) {iprintf("\033[32m" args);} -#define LOG_E(args...) {iprintf("\033[31m" args);} -#else -#define LOG_I(args...) -#define LOG_E(args...) -#define assert(expr) -#endif - - -typedef struct { - io32_t SR_CMD; - io32_t DATA[2]; - io32_t VERSION; -} sc64_regs_t; - -#define SC64_BASE (0x1FFF0000) -#define SC64 ((sc64_regs_t *) SC64_BASE) - -#define SC64_SR_CMD_ERROR (1 << 28) -#define SC64_SR_CPU_BUSY (1 << 30) -#define SC64_SR_CPU_READY (1 << 31) - -#define SC64_CMD_CONFIG ('C') -#define SC64_CMD_QUERY ('Q') -#define SC64_CMD_DEBUG_RX_DATA ('E') -#define SC64_CMD_DEBUG_RX_READY ('A') -#define SC64_CMD_DEBUG_RX_BUSY ('F') -#define SC64_CMD_DEBUG_TX_DATA ('D') -#define SC64_CMD_DEBUG_TX_READY ('S') - -#define SC64_VERSION_2 (0x53437632) - -#define SC64_DEBUG_WRITE_ADDRESS (0x13BD8000UL) -#define SC64_DEBUG_READ_ADDRESS (0x13BD0000UL) -#define SC64_DEBUG_MAX_SIZE (32 * 1024) - -#define SC64_DEBUG_ID_TEXT (0x01) -#define SC64_DEBUG_ID_FSD_READ (0xF1) -#define SC64_DEBUG_ID_FSD_WRITE (0xF2) -#define SC64_DEBUG_ID_FSD_SECTOR (0xF3) - - -typedef enum { - CFG_ID_SCR, - CFG_ID_SDRAM_SWITCH, - CFG_ID_SDRAM_WRITABLE, - CFG_ID_DD_ENABLE, - CFG_ID_SAVE_TYPE, - CFG_ID_CIC_SEED, - CFG_ID_TV_TYPE, - CFG_ID_SAVE_OFFEST, - CFG_ID_DDIPL_OFFEST, - CFG_ID_BOOT_MODE, - CFG_ID_FLASH_SIZE, - CFG_ID_FLASH_READ, - CFG_ID_FLASH_PROGRAM, - CFG_ID_RECONFIGURE, -} cfg_id_t; - -typedef enum { - SAVE_TYPE_NONE = 0, - SAVE_TYPE_EEPROM_4K = 1, - SAVE_TYPE_EEPROM_16K = 2, - SAVE_TYPE_SRAM = 3, - SAVE_TYPE_FLASHRAM = 4, - SAVE_TYPE_SRAM_BANKED = 5, - SAVE_TYPE_FLASHRAM_PKST2 = 6, -} save_type_t; - -typedef enum { - TV_TYPE_PAL = 0, - TV_TYPE_NTSC = 1, - TV_TYPE_MPAL = 2, - TV_TYPE_UNKNOWN = 3, -} tv_type_t; - -typedef enum { - BOOT_MODE_MENU = 0, - BOOT_MODE_ROM = 1, - BOOT_MODE_DDIPL = 2, - BOOT_MODE_DIRECT = 3, -} boot_mode_t; - -typedef struct { - bool dd_enabled; - save_type_t save_type; - uint16_t cic_seed; - tv_type_t tv_type; - io32_t *save_location; - io32_t *ddipl_location; - boot_mode_t boot_mode; - char bootloader_version[32]; -} sc64_info_t; - - -bool sc64_check_presence (void); -void sc64_wait_cpu_ready (void); -bool sc64_wait_cpu_busy (void); -bool sc64_perform_cmd (uint8_t cmd, uint32_t *args, uint32_t *result); -uint32_t sc64_get_config (cfg_id_t id); -void sc64_set_config (cfg_id_t id, uint32_t value); -void sc64_get_info (sc64_info_t *info); -void sc64_wait_usb_rx_ready (uint32_t *type, uint32_t *length); -void sc64_wait_usb_rx_busy (void); -void sc64_usb_rx_data (io32_t *address, uint32_t length); -void sc64_wait_usb_tx_ready (void); -void sc64_usb_tx_data (io32_t *address, uint32_t length); -void sc64_debug_write (uint8_t type, const void *data, uint32_t len); -void sc64_debug_fsd_read (const void *data, uint32_t sector, uint32_t count); -void sc64_debug_fsd_write (const void *data, uint32_t sector, uint32_t count); -void sc64_init (void); - - -#endif diff --git a/sw/n64/src/storage.c b/sw/n64/src/storage.c deleted file mode 100644 index ff22ace..0000000 --- a/sw/n64/src/storage.c +++ /dev/null @@ -1,64 +0,0 @@ -#include "storage.h" -#include "sc64.h" -#include "fatfs/ff.h" - - -static const char *fatfs_error_codes[] = { - "(0) Succeeded", - "(1) A hard error occurred in the low level disk I/O layer", - "(2) Assertion failed", - "(3) The physical drive cannot work", - "(4) Could not find the file", - "(5) Could not find the path", - "(6) The path name format is invalid", - "(7) Access denied due to prohibited access or directory full", - "(8) Access denied due to prohibited access", - "(9) The file/directory object is invalid", - "(10) The physical drive is write protected", - "(11) The logical drive number is invalid", - "(12) The volume has no work area", - "(13) There is no valid FAT volume", - "(14) The f_mkfs() aborted due to any problem", - "(15) Could not get a grant to access the volume within defined period", - "(16) The operation is rejected according to the file sharing policy", - "(17) LFN working buffer could not be allocated", - "(18) Number of open files > FF_FS_LOCK", - "(19) Given parameter is invalid", -}; - - -#define FF_CHECK(x) { \ - FRESULT fatfs_result = x; \ - if (fatfs_result) { \ - LOG_E("fatfs error \"%s\" at [%s:%d] in expr: %s\r\n", fatfs_error_codes[fatfs_result], __FILE__, __LINE__, #x); \ - while (1); \ - } \ -} - - -void storage_run_menu (storage_backend_t storage_backend, boot_info_t *boot_info, sc64_info_t *sc64_info) { - FATFS fs; - FIL fil; - - if (storage_backend == STORAGE_BACKEND_SD) { - FF_CHECK(f_mount(&fs, "0:", 1)); - FF_CHECK(f_chdrive("0:")); - } else if (storage_backend == STORAGE_BACKEND_USB) { - FF_CHECK(f_mount(&fs, "1:", 1)); - FF_CHECK(f_chdrive("1:")); - } else { - LOG_E("Unknown storage backend %d\r\n", storage_backend); - while (1); - } - - FF_CHECK(f_open(&fil, "sc64menu.elf", FA_READ)); - - // TODO: Implement ELF loader here - - FF_CHECK(f_close(&fil)); - - // TODO: Execute ELF here - // menu(&boot_info, &sc64_info); - - boot_info->device_type = BOOT_DEVICE_TYPE_ROM; -} diff --git a/sw/n64/src/storage.h b/sw/n64/src/storage.h deleted file mode 100644 index 01e5bd0..0000000 --- a/sw/n64/src/storage.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef STORAGE_H__ -#define STORAGE_H__ - - -#include "boot.h" -#include "sc64.h" - - -typedef enum { - STORAGE_BACKEND_SD = 0, - STORAGE_BACKEND_USB = 1, -} storage_backend_t; - - -void storage_run_menu (storage_backend_t storage_backend, boot_info_t *boot_info, sc64_info_t *sc64_info); - - -#endif diff --git a/sw/n64/src/sys.c b/sw/n64/src/sys.c deleted file mode 100644 index 6d9f860..0000000 --- a/sw/n64/src/sys.c +++ /dev/null @@ -1,71 +0,0 @@ -#include "sys.h" - - -void c0_set_status (uint32_t status) { - asm volatile ( - ".set noat \n" - ".set noreorder \n" - "mtc0 %[status], $12 \n" - "nop \n" - : - : [status] "r" (status) - ); -} - -uint32_t c0_get_count (void) { - uint32_t count; - asm volatile ( - ".set noat \n" - ".set noreorder \n" - "mfc0 %[count], $9 \n" - "nop \n" - : [count] "=r" (count) - ); - return count; -} - -void wait_ms (uint32_t ms) { - uint32_t start = c0_get_count(); - while (c0_get_count() - start < (ms * ((CPU_FREQUENCY / 2) / 1000))); -} - -uint32_t io_read (io32_t *address) { - io32_t *uncached = UNCACHED(address); - asm volatile ("" : : : "memory"); - uint32_t value = *uncached; - asm volatile ("" : : : "memory"); - return value; -} - -void io_write (io32_t *address, uint32_t value) { - io32_t *uncached = UNCACHED(address); - asm volatile ("" : : : "memory"); - *uncached = value; - asm volatile ("" : : : "memory"); -} - -uint32_t pi_busy (void) { - return (io_read(&PI->SR) & (PI_SR_IO_BUSY | PI_SR_DMA_BUSY)); -} - -uint32_t pi_io_read (io32_t *address) { - return io_read(address); -} - -void pi_io_write (io32_t *address, uint32_t value) { - io_write(address, value); - while (pi_busy()); -} - -uint32_t si_busy (void) { - return (io_read(&SI->SR) & (SI_SR_IO_BUSY | SI_SR_DMA_BUSY)); -} - -uint32_t si_io_read (io32_t *address) { - return io_read(address); -} - -void si_io_write (io32_t *address, uint32_t value) { - io_write(address, value); - while (si_busy()); -} diff --git a/sw/n64/src/syscalls.c b/sw/n64/src/syscalls.c deleted file mode 100644 index 7cb1b25..0000000 --- a/sw/n64/src/syscalls.c +++ /dev/null @@ -1,71 +0,0 @@ -#include -#include -#include -#include -#include -#include "sc64.h" - - -extern char _sheap __attribute__((section(".data"))); -extern char _eheap __attribute__((section(".data"))); - - -int _close_r (struct _reent *prt, int fd) { - errno = ENOSYS; - return -1; -} - -int _fstat_r (struct _reent *prt, int fd, struct stat *pstat) { - errno = ENOSYS; - return -1; -} - -int _isatty_r (struct _reent *prt, int fd) { - if (fd == STDIN_FILENO || fd == STDOUT_FILENO || fd == STDERR_FILENO){ - return 1; - } - errno = EBADF; - return 0; -} - -off_t _lseek_r (struct _reent *prt, int fd, off_t pos, int whence) { - errno = ENOSYS; - return -1; -} - -ssize_t _read_r (struct _reent *prt, int fd, void *buf, size_t cnt) { - errno = ENOSYS; - return -1; -} - -caddr_t _sbrk_r (struct _reent *prt, ptrdiff_t incr) { - static char *curr_heap_end = &_sheap; - char *prev_heap_end; - - prev_heap_end = curr_heap_end; - curr_heap_end += incr; - - if (curr_heap_end > &_eheap) { - errno = ENOMEM; - return (caddr_t) -1; - } - - return (caddr_t) prev_heap_end; -} - -ssize_t _write_r (struct _reent *prt, int fd, const void *buf, size_t cnt) { - if (fd == STDIN_FILENO) { - errno = EBADF; - return -1; - } else if (fd == STDOUT_FILENO || fd == STDERR_FILENO) { - sc64_debug_write(SC64_DEBUG_ID_TEXT, buf, cnt); - return cnt; - } - errno = ENOSYS; - return -1; -} - -void __assert_func (const char *file, int line, const char *func, const char *failedexpr) { - LOG_E("\r\nassertion \"%s\" failed: file \"%s\", line %d%s%s\r\n", failedexpr, file, line, func ? ", function: " : "", func ? func : ""); - while (1); -} diff --git a/sw/pc/.gitignore b/sw/pc/.gitignore index a94076f..baaf232 100644 --- a/sw/pc/.gitignore +++ b/sw/pc/.gitignore @@ -1,15 +1,9 @@ -/__pycache__ -/backup -/roms -/saves -*.bak +**/__pycache__ *.bin -*.dat -*.data *.eep *.fla -*.img *.n64 *.srm +*.upd *.v64 *.z64 diff --git a/sw/pc/dd64.py b/sw/pc/dd64.py new file mode 100755 index 0000000..d16aac3 --- /dev/null +++ b/sw/pc/dd64.py @@ -0,0 +1,236 @@ +#!/usr/bin/env python3 + +import sys +from io import BufferedReader +from typing import Optional + + + +class BadBlockError(Exception): + pass + + +class DD64Image: + __DISK_HEADS = 2 + __DISK_TRACKS = 1175 + __DISK_BLOCKS_PER_TRACK = 2 + __DISK_SECTORS_PER_BLOCK = 85 + __DISK_BAD_TRACKS_PER_ZONE = 12 + __DISK_SYSTEM_SECTOR_SIZE = 232 + __DISK_ZONES = [ + (0, 232, 158, 0), + (0, 216, 158, 158), + (0, 208, 149, 316), + (0, 192, 149, 465), + (0, 176, 149, 614), + (0, 160, 149, 763), + (0, 144, 149, 912), + (0, 128, 114, 1061), + (1, 216, 158, 157), + (1, 208, 158, 315), + (1, 192, 149, 464), + (1, 176, 149, 613), + (1, 160, 149, 762), + (1, 144, 149, 911), + (1, 128, 149, 1060), + (1, 112, 114, 1174), + ] + __DISK_VZONE_TO_PZONE = [ + [0, 1, 2, 9, 8, 3, 4, 5, 6, 7, 15, 14, 13, 12, 11, 10], + [0, 1, 2, 3, 10, 9, 8, 4, 5, 6, 7, 15, 14, 13, 12, 11], + [0, 1, 2, 3, 4, 11, 10, 9, 8, 5, 6, 7, 15, 14, 13, 12], + [0, 1, 2, 3, 4, 5, 12, 11, 10, 9, 8, 6, 7, 15, 14, 13], + [0, 1, 2, 3, 4, 5, 6, 13, 12, 11, 10, 9, 8, 7, 15, 14], + [0, 1, 2, 3, 4, 5, 6, 7, 14, 13, 12, 11, 10, 9, 8, 15], + [0, 1, 2, 3, 4, 5, 6, 7, 15, 14, 13, 12, 11, 10, 9, 8], + ] + __DISK_DRIVE_TYPES = [( + 'development', + 192, + [11, 10, 3, 2], + [0, 1, 8, 9, 16, 17, 18, 19, 20, 21, 22, 23], + ), ( + 'retail', + 232, + [9, 8, 1, 0], + [2, 3, 10, 11, 12, 16, 17, 18, 19, 20, 21, 22, 23], + )] + + __file: Optional[BufferedReader] + __drive_type: Optional[str] + __block_info_table: list[tuple[int, int]] + loaded: bool = False + + def __init__(self) -> None: + self.__file = None + self.__drive_type = None + block_info_table_length = self.__DISK_HEADS * self.__DISK_TRACKS * self.__DISK_BLOCKS_PER_TRACK + self.__block_info_table = [None] * block_info_table_length + + def __del__(self) -> None: + self.unload() + + def __check_system_block(self, lba: int, sector_size: int, check_disk_type: bool) -> tuple[bool, bytes]: + self.__file.seek(lba * self.__DISK_SYSTEM_SECTOR_SIZE * self.__DISK_SECTORS_PER_BLOCK) + system_block_data = self.__file.read(sector_size * self.__DISK_SECTORS_PER_BLOCK) + system_data = system_block_data[:sector_size] + for sector in range(1, self.__DISK_SECTORS_PER_BLOCK): + sector_data = system_block_data[(sector * sector_size):][:sector_size] + if (system_data != sector_data): + return (False, None) + if (check_disk_type): + if (system_data[4] != 0x10): + return (False, None) + if ((system_data[5] & 0xF0) != 0x10): + return (False, None) + return (True, system_data) + + def __parse_disk(self) -> None: + disk_system_data = None + disk_id_data = None + disk_bad_lbas = [] + + drive_index = 0 + while (disk_system_data == None) and (drive_index < len(self.__DISK_DRIVE_TYPES)): + (drive_type, system_sector_size, system_data_lbas, bad_lbas) = self.__DISK_DRIVE_TYPES[drive_index] + disk_bad_lbas.clear() + disk_bad_lbas.extend(bad_lbas) + for system_lba in system_data_lbas: + (valid, system_data) = self.__check_system_block(system_lba, system_sector_size, check_disk_type=True) + if (valid): + self.__drive_type = drive_type + disk_system_data = system_data + else: + disk_bad_lbas.append(system_lba) + drive_index += 1 + + for id_lba in [15, 14]: + (valid, id_data) = self.__check_system_block(id_lba, self.__DISK_SYSTEM_SECTOR_SIZE, check_disk_type=False) + if (valid): + disk_id_data = id_data + else: + disk_bad_lbas.append(id_lba) + + if not (disk_system_data and disk_id_data): + raise ValueError('Provided 64DD disk file is not valid') + + disk_zone_bad_tracks = [] + + for zone in range(len(self.__DISK_ZONES)): + zone_bad_tracks = [] + start = 0 if zone == 0 else system_data[0x07 + zone] + stop = system_data[0x07 + zone + 1] + for offset in range(start, stop): + zone_bad_tracks.append(system_data[0x20 + offset]) + for ignored_track in range(self.__DISK_BAD_TRACKS_PER_ZONE - len(zone_bad_tracks)): + zone_bad_tracks.append(self.__DISK_ZONES[zone][2] - ignored_track - 1) + disk_zone_bad_tracks.append(zone_bad_tracks) + + disk_type = disk_system_data[5] & 0x0F + + current_lba = 0 + starting_block = 0 + disk_file_offset = 0 + + for zone in self.__DISK_VZONE_TO_PZONE[disk_type]: + (head, sector_size, tracks, track) = self.__DISK_ZONES[zone] + + for zone_track in range(tracks): + current_zone_track = ( + (tracks - 1) - zone_track) if head else zone_track + + if (current_zone_track in disk_zone_bad_tracks[zone]): + track += (-1) if head else 1 + continue + + for block in range(self.__DISK_BLOCKS_PER_TRACK): + index = (track << 2) | (head << 1) | (starting_block ^ block) + if (current_lba not in disk_bad_lbas): + self.__block_info_table[index] = (disk_file_offset, sector_size * self.__DISK_SECTORS_PER_BLOCK) + else: + self.__block_info_table[index] = None + disk_file_offset += sector_size * self.__DISK_SECTORS_PER_BLOCK + current_lba += 1 + + track += (-1) if head else 1 + starting_block ^= 1 + + def __check_track_head_block(self, track: int, head: int, block: int) -> None: + if (track < 0 or track >= self.__DISK_TRACKS): + raise ValueError('Track outside of possible range') + if (head < 0 or head >= self.__DISK_HEADS): + raise ValueError('Head outside of possible range') + if (block < 0 or block >= self.__DISK_BLOCKS_PER_TRACK): + raise ValueError('Block outside of possible range') + + def __get_table_index(self, track: int, head: int, block: int) -> int: + return (track << 2) | (head << 1) | (block) + + def __get_block_info(self, track: int, head: int, block: int) -> Optional[tuple[int, int]]: + if (self.__file.closed): + return None + self.__check_track_head_block(track, head, block) + index = self.__get_table_index(track, head, block) + return self.__block_info_table[index] + + def load(self, path: str) -> None: + self.unload() + self.__file = open(path, 'rb+') + self.__parse_disk() + self.loaded = True + + def unload(self) -> None: + self.loaded = False + if (self.__file != None and not self.__file.closed): + self.__file.close() + self.__drive_type = None + + def get_block_info_table(self) -> list[tuple[int, int]]: + return self.__block_info_table + + def get_drive_type(self) -> str: + return self.__drive_type + + def read_block(self, track: int, head: int, block: int) -> bytes: + info = self.__get_block_info(track, head, block) + if (info == None): + raise BadBlockError + (offset, block_size) = info + self.__file.seek(offset) + return self.__file.read(block_size) + + def write_block(self, track: int, head: int, block: int, data: bytes) -> None: + info = self.__get_block_info(track, head, block) + if (info == None): + raise BadBlockError + (offset, block_size) = info + if (len(data) != block_size): + raise ValueError(f'Provided data block size is different than expected ({len(data)} != {block_size})') + self.__file.seek(offset) + self.__file.write(data) + + + +if __name__ == '__main__': + id_lba_locations = [ + (7, 0, 1), + (7, 0, 0) + ] + if (len(sys.argv) >= 2): + dd = DD64Image() + dd.load(sys.argv[1]) + print(dd.get_drive_type()) + for (track, head, block) in id_lba_locations: + try: + print(dd.read_block(track, head, block)[:4]) + except BadBlockError: + print(f'Bad ID block [track: {track}, head: {head}, block: {block}]') + if (len(sys.argv) >= 3): + with open(sys.argv[2], 'wb') as f: + block_info_table = dd.get_block_info_table() + for block in block_info_table: + offset = 0xFFFFFFFF if block == None else block[0] + f.write(offset.to_bytes(4, byteorder='big')) + dd.unload() + else: + print(f'[{sys.argv[0]}]: Expected disk image path as first argument') diff --git a/sw/pc/requirements.txt b/sw/pc/requirements.txt index decab53..c3f0da9 100644 --- a/sw/pc/requirements.txt +++ b/sw/pc/requirements.txt @@ -1,2 +1,2 @@ -progressbar2==3.55.0 +Pillow==9.2.0 pyserial==3.5 diff --git a/sw/pc/sc64.py b/sw/pc/sc64.py old mode 100644 new mode 100755 index 93eece2..c8ad058 --- a/sw/pc/sc64.py +++ b/sw/pc/sc64.py @@ -1,162 +1,52 @@ #!/usr/bin/env python3 -from io import TextIOWrapper -from serial import Serial, SerialException -from serial.tools import list_ports import argparse -import filecmp import os -import progressbar -import re -import struct +import queue +import serial import sys import time +from datetime import datetime +from dd64 import BadBlockError, DD64Image +from enum import Enum, IntEnum +from serial.tools import list_ports +from threading import Thread +from typing import Callable, Optional +from PIL import Image -class SC64Exception(Exception): +class ConnectionException(Exception): pass +class SC64Serial: + __disconnect = False + __serial: Optional[serial.Serial] = None + __thread_read = None + __thread_write = None + __queue_output = queue.Queue() + __queue_input = queue.Queue() + __queue_packet = queue.Queue() -class SC64: - __CFG_ID_DD_ENABLE = 3 - __CFG_ID_SAVE_TYPE = 4 - __CFG_ID_CIC_SEED = 5 - __CFG_ID_TV_TYPE = 6 - __CFG_ID_SAVE_OFFEST = 7 - __CFG_ID_DDIPL_OFFEST = 8 - __CFG_ID_BOOT_MODE = 9 - __CFG_ID_FLASH_SIZE = 10 - __CFG_ID_FLASH_READ = 11 - __CFG_ID_FLASH_PROGRAM = 12 - __CFG_ID_RECONFIGURE = 13 - __CFG_ID_DD_SETTING = 14 - __CFG_ID_DD_THB_TABLE_OFFSET = 15 + __VID = 0x0403 + __PID = 0x6014 - __SC64_VERSION_V2 = 0x53437632 - - __UPDATE_OFFSET = 0x03B60000 - - __CHUNK_SIZE = 256 * 1024 - - __MIN_ROM_LENGTH = 0x101000 - __DDIPL_ROM_LENGTH = 0x400000 - - __DEBUG_ID_TEXT = 0x01 - __DEBUG_ID_FSD_READ = 0xF1 - __DEBUG_ID_FSD_WRITE = 0xF2 - __DEBUG_ID_FSD_SECTOR = 0xF3 - __DEBUG_ID_DD_BLOCK = 0xF5 - - __DD_SETTING_DISK_EJECTED = 0 - __DD_SETTING_DISK_INSERTED = 1 - __DD_SETTING_DISK_CHANGED = 2 - __DD_SETTING_DRIVE_RETAIL = 3 - __DD_SETTING_DRIVE_DEVELOPMENT = 4 - __DD_SETTING_SET_BLOCK_READY = 5 + __CHUNK_SIZE = (64 * 1024) def __init__(self) -> None: - self.__serial = None - self.__progress_init = None - self.__progress_value = None - self.__progress_finish = None - self.__fsd_file = None - self.__disk_file = None - self.__disk_lba_table = [] - self.__find_sc64() - - - def __del__(self) -> None: - if (self.__serial): - self.__serial.close() - if (self.__fsd_file): - self.__fsd_file.close() - - - def __set_progress_init(self, value: int, label: str) -> None: - if (self.__progress_init != None): - self.__progress_init(value, label) - - - def __set_progress_value(self, value: int) -> None: - if (self.__progress_value != None): - self.__progress_value(value) - - - def __set_progress_finish(self) -> None: - if (self.__progress_finish != None): - self.__progress_finish() - - - def __align(self, value: int, align: int) -> int: - return (value + (align - 1)) & ~(align - 1) - - - def __escape(self, data: bytes) -> bytes: - return re.sub(b"\x1B", b"\x1B\x1B", data) - - - def reset_link(self) -> None: - self.__serial.write(b"\x1BR") - while (self.__serial.in_waiting): - self.__serial.read_all() - time.sleep(0.1) - - - def __read(self, bytes: int) -> bytes: - return self.__serial.read(bytes) - - - def __write(self, data: bytes) -> None: - self.__serial.write(self.__escape(data)) - - - def __read_long(self, length: int) -> bytes: - data = bytearray() - while (len(data) < length): - data += self.__read(length - len(data)) - return bytes(data) - - - def __write_dummy(self, length: int) -> None: - self.__write(bytes(length)) - - - def __read_int(self) -> int: - return int.from_bytes(self.__read(4), byteorder="big") - - - def __write_int(self, value: int) -> None: - self.__write(value.to_bytes(4, byteorder="big")) - - - def __read_cmd_status(self, cmd: str) -> None: - if (self.__read(4) != f"CMP{cmd[0]}".encode(encoding="ascii")): - raise SC64Exception("Wrong command response") - - - def __write_cmd(self, cmd: str, arg1: int, arg2: int) -> None: - self.__write(f"CMD{cmd[0]}".encode()) - self.__write_int(arg1) - self.__write_int(arg2) - - - def __find_sc64(self) -> None: ports = list_ports.comports() device_found = False - if (self.__serial != None and self.__serial.isOpen()): - self.__serial.close() + if (self.__serial != None and self.__serial.is_open): + raise ConnectionException('Serial port is already open') for p in ports: - if (p.vid == 0x0403 and p.pid == 0x6014 and p.serial_number.startswith("SC64")): + if (p.vid == self.__VID and p.pid == self.__PID and p.serial_number.startswith('SC64')): try: - self.__serial = Serial(p.device, timeout=1.0, write_timeout=1.0) - self.__serial.flushOutput() - self.reset_link() - self.__probe_device() - except (SerialException, SC64Exception): + self.__serial = serial.Serial(p.device, timeout=1.0, write_timeout=1.0) + self.__reset_link() + except (serial.SerialException, ConnectionException): if (self.__serial): self.__serial.close() continue @@ -164,543 +54,705 @@ class SC64: break if (not device_found): - raise SC64Exception("No SummerCart64 device was found") + raise ConnectionException('No SC64 device was found') + + self.__thread_read = Thread(target=self.__serial_process_input, daemon=True) + self.__thread_write = Thread(target=self.__serial_process_output, daemon=True) + + self.__thread_read.start() + self.__thread_write.start() + + def __del__(self) -> None: + self.__disconnect = True + if (self.__thread_read != None and self.__thread_read.is_alive()): + self.__thread_read.join(1) + if (self.__thread_write != None and self.__thread_write.is_alive()): + self.__thread_write.join(1) + if (self.__serial != None and self.__serial.is_open): + self.__serial.close() + + def __reset_link(self) -> None: + self.__serial.reset_output_buffer() + + retry_counter = 0 + self.__serial.dtr = 1 + while (self.__serial.dsr == 0): + time.sleep(0.1) + retry_counter += 1 + if (retry_counter >= 10): + raise ConnectionException('Could not reset SC64 device') + + self.__serial.reset_input_buffer() + + retry_counter = 0 + self.__serial.dtr = 0 + while (self.__serial.dsr == 1): + time.sleep(0.1) + retry_counter += 1 + if (retry_counter >= 10): + raise ConnectionException('Could not reset SC64 device') + + def __write(self, data: bytes) -> None: + try: + if (self.__disconnect): + raise ConnectionException + for offset in range(0, len(data), self.__CHUNK_SIZE): + self.__serial.write(data[offset:offset + self.__CHUNK_SIZE]) + self.__serial.flush() + except (serial.SerialException, serial.SerialTimeoutException): + raise ConnectionException + + def __read(self, length: int) -> bytes: + try: + data = b'' + while (len(data) < length and not self.__disconnect): + data += self.__serial.read(length - len(data)) + if (self.__disconnect): + raise ConnectionException + return data + except serial.SerialException: + raise ConnectionException + + def __read_int(self) -> int: + return int.from_bytes(self.__read(4), byteorder='big') + + def __serial_process_output(self) -> None: + while (not self.__disconnect and self.__serial != None and self.__serial.is_open): + try: + packet: bytes = self.__queue_output.get(timeout=0.1) + self.__write(packet) + self.__queue_output.task_done() + except queue.Empty: + continue + except ConnectionException: + break + + def __serial_process_input(self) -> None: + while (not self.__disconnect and self.__serial != None and self.__serial.is_open): + try: + token = self.__read(4) + if (len(token) == 4): + identifier = token[0:3] + command = token[3:4] + if (identifier == b'PKT'): + data = self.__read(self.__read_int()) + self.__queue_packet.put((command, data)) + elif (identifier == b'CMP' or identifier == b'ERR'): + data = self.__read(self.__read_int()) + success = identifier == b'CMP' + self.__queue_input.put((command, data, success)) + else: + raise ConnectionException + except ConnectionException: + break + + def __check_threads(self) -> None: + if (not (self.__thread_write.is_alive() and self.__thread_read.is_alive())): + raise ConnectionException('Serial link is closed') + + def __queue_cmd(self, cmd: bytes, args: list[int]=[0, 0], data: bytes=b'') -> None: + if (len(cmd) != 1): + raise ValueError('Length of command is different than 1 byte') + if (len(args) != 2): + raise ValueError('Number of arguments is different than 2') + packet: bytes = b'CMD' + packet += cmd[0:1] + for arg in args: + packet += arg.to_bytes(4, byteorder='big') + packet += data + self.__queue_output.put(packet) + + def __pop_response(self, cmd: bytes, timeout: float) -> bytes: + try: + (response_cmd, data, success) = self.__queue_input.get(timeout=timeout) + self.__queue_input.task_done() + if (cmd != response_cmd): + raise ConnectionException('CMD wrong command response') + if (success == False): + raise ConnectionException('CMD response error') + return data + except queue.Empty: + raise ConnectionException('CMD response timeout') + + def execute_cmd(self, cmd: bytes, args: list[int]=[0, 0], data: bytes=b'', response: bool=True, timeout: float=5.0) -> Optional[bytes]: + self.__check_threads() + self.__queue_cmd(cmd, args, data) + if (response): + return self.__pop_response(cmd, timeout) + return None + + def get_packet(self, timeout: float=0.1) -> Optional[tuple[bytes, bytes]]: + self.__check_threads() + try: + packet = self.__queue_packet.get(timeout=timeout) + self.__queue_packet.task_done() + return packet + except queue.Empty: + return None - def __probe_device(self) -> None: - self.__write_cmd("V", 0, 0) - version = self.__read_int() - self.__read_cmd_status("V") - if (version != self.__SC64_VERSION_V2): - raise SC64Exception(f"Unknown hardware version: {hex(version)}") +class SC64: + class __Address(IntEnum): + MEMORY = 0x0000_0000 + SDRAM = 0x0000_0000 + FLASH = 0x0400_0000 + BUFFER = 0x0500_0000 + EEPROM = 0x0500_2000 + FIRMWARE = 0x0200_0000 + DDIPL = 0x03BC_0000 + SAVE = 0x03FE_0000 + EXTENDED = 0x0400_0000 + BOOTLOADER = 0x04E0_0000 + SHADOW = 0x04FE_0000 + class __Length(IntEnum): + MEMORY = 0x0500_2980 + SDRAM = (64 * 1024 * 1024) + FLASH = (16 * 1024 * 1024) + BUFFER = (8 * 1024) + EEPROM = (2 * 1024) + DDIPL = (4 * 1024 * 1024) + SAVE = (128 * 1024) + EXTENDED = (14 * 1024 * 1024) + BOOTLOADER = (1920 * 1024) + SHADOW = (128 * 1024) - def __query_config(self, id: int) -> int: - self.__write_cmd("Q", id, 0) - value = self.__read_int() - self.__read_cmd_status("Q") - return value + class __SaveLength(IntEnum): + NONE = 0 + EEPROM_4K = 512 + EEPROM_16K = (2 * 1024) + SRAM = (32 * 1024) + FLASHRAM = (128 * 1024) + SRAM_3X = (3 * 32 * 1024) + class __CfgId(IntEnum): + BOOTLOADER_SWITCH = 0 + ROM_WRITE_ENABLE = 1 + ROM_SHADOW_ENABLE = 2 + DD_MODE = 3 + ISV_ADDRESS = 4 + BOOT_MODE = 5 + SAVE_TYPE = 6 + CIC_SEED = 7 + TV_TYPE = 8 + DD_SD_ENABLE = 9 + DD_DRIVE_TYPE = 10 + DD_DISK_STATE = 11 + BUTTON_STATE = 12 + BUTTON_MODE = 13 + ROM_EXTENDED_ENABLE = 14 - def __change_config(self, id: int, arg: int = 0, ignore_response: bool = False) -> None: - self.__write_cmd("C", id, arg) - if (not ignore_response): - self.__read_cmd_status("C") + class __UpdateError(IntEnum): + OK = 0 + TOKEN = 1 + CHECKSUM = 2 + SIZE = 3 + UNKNOWN_CHUNK = 4 + READ = 5 + class __UpdateStatus(IntEnum): + MCU = 1 + FPGA = 2 + BOOTLOADER = 3 + DONE = 0x80 + ERROR = 0xFF - def __debug_write(self, type: int, data: bytes) -> None: - self.__write_cmd("D", type, len(data)) - self.__write(data) + class __DDMode(IntEnum): + NONE = 0 + REGS = 1 + DDIPL = 2 + FULL = 3 + class __DDDriveType(IntEnum): + RETAIL = 0 + DEVELOPMENT = 1 - def __read_file_from_sdram(self, file: str, offset: int, length: int, align: int = 2) -> None: - with open(file, "wb") as f: - transfer_size = self.__align(length, align) - self.__set_progress_init(transfer_size, os.path.basename(f.name)) - self.__write_cmd("R", offset, transfer_size) - while (f.tell() < length): - chunk_size = min(self.__CHUNK_SIZE, length - f.tell()) - f.write(self.__read(chunk_size)) - self.__set_progress_value(f.tell()) - if (transfer_size != length): - self.__read(transfer_size - length) - self.__read_cmd_status("R") - self.__set_progress_finish() + class __DDDiskState(IntEnum): + EJECTED = 0 + INSERTED = 1 + CHANGED = 2 + class __ButtonMode(IntEnum): + NONE = 0 + N64_IRQ = 1 + USB_PACKET = 2 + DD_DISK_SWAP = 3 - def __write_file_to_sdram(self, file: str, offset: int, align: int = 2, min_length: int = 0) -> None: - with open(file, "rb") as f: - length = os.fstat(f.fileno()).st_size - transfer_size = self.__align(max(length, min_length), align) - self.__set_progress_init(transfer_size, os.path.basename(f.name)) - self.__write_cmd("W", offset, transfer_size) - while (f.tell() < length): - self.__write(f.read(min(self.__CHUNK_SIZE, length - f.tell()))) - self.__set_progress_value(f.tell()) - if (transfer_size != length): - self.__write_dummy(transfer_size - length) - self.__read_cmd_status("W") - self.__set_progress_finish() + class BootMode(IntEnum): + MENU = 0 + ROM = 1 + DDIPL = 2 + DIRECT = 3 + class SaveType(IntEnum): + NONE = 0 + EEPROM_4K = 1 + EEPROM_16K = 2 + SRAM = 3 + FLASHRAM = 4 + SRAM_3X = 5 - def __get_save_length(self) -> None: - save_type = self.__query_config(self.__CFG_ID_SAVE_TYPE) - return { - 0: 0, - 1: 512, - 2: 2048, - 3: (32 * 1024), - 4: (128 * 1024), - 5: (3 * 32 * 1024), - 6: (128 * 1024) - }[save_type] + class CICSeed(IntEnum): + ALECK = 0xAC + X101 = 0x13F + X102 = 0x3F + X103 = 0x78 + X105 = 0x91 + X106 = 0x85 + DD_JP = 0xDD + DD_US = 0xDE + AUTO = 0xFFFF + class TVType(IntEnum): + PAL = 0 + NTSC = 1 + MPAL = 2 + AUTO = 3 - def __reconfigure(self) -> None: - magic = self.__query_config(self.__CFG_ID_RECONFIGURE) - self.__change_config(self.__CFG_ID_RECONFIGURE, magic, ignore_response=True) - time.sleep(0.2) + class __DebugDatatype(IntEnum): + TEXT = 1 + RAWBINARY = 2 + HEADER = 3 + SCREENSHOT = 4 + __isv_line_buffer: bytes = b'' + __debug_header: Optional[bytes] = None - def backup_firmware(self, file: str) -> None: - length = self.__query_config(self.__CFG_ID_FLASH_SIZE) - self.__change_config(self.__CFG_ID_FLASH_READ, self.__UPDATE_OFFSET) - self.__read_file_from_sdram(file, self.__UPDATE_OFFSET, length) + def __init__(self) -> None: + self.__link = SC64Serial() + version = self.__link.execute_cmd(cmd=b'v') + if (version != b'SCv2'): + raise ConnectionException('Unknown SC64 API version') + def __get_int(self, data: bytes) -> int: + return int.from_bytes(data[:4], byteorder='big') - def update_firmware(self, file: str) -> None: - self.__write_file_to_sdram(file, self.__UPDATE_OFFSET) - saved_timeout = self.__serial.timeout - self.__serial.timeout = 20.0 - self.__change_config(self.__CFG_ID_FLASH_PROGRAM, self.__UPDATE_OFFSET) - self.__serial.timeout = saved_timeout - self.__reconfigure() - self.__find_sc64() + def __set_config(self, config: __CfgId, value: int) -> None: + try: + self.__link.execute_cmd(cmd=b'C', args=[config, value]) + except ConnectionException: + raise ValueError(f'Could not set config {config.name} to {value:08X}') + def __get_config(self, config: __CfgId) -> int: + try: + data = self.__link.execute_cmd(cmd=b'c', args=[config, 0]) + except ConnectionException: + raise ValueError(f'Could not get config {config.name}') + return self.__get_int(data) - def set_boot_mode(self, mode: int) -> None: - if (mode >= 0 and mode <= 3): - self.__change_config(self.__CFG_ID_BOOT_MODE, mode) - else: - raise SC64Exception("Boot mode outside of supported values") + def __write_memory(self, address: int, data: bytes) -> None: + if (len(data) > 0): + self.__link.execute_cmd(cmd=b'M', args=[address, len(data)], data=data, timeout=20.0) - - def get_boot_mode_label(self, mode: int) -> None: - if (mode < 0 or mode > 3): - return "Unknown" - return { - 0: "Load menu from SD card", - 1: "Load ROM from SDRAM through bootloader", - 2: "Load DDIPL from SDRAM", - 3: "Load ROM from SDRAM directly without bootloader" - }[mode] - - - def set_tv_type(self, type: int = None) -> None: - if (type == None or type == 3): - self.__change_config(self.__CFG_ID_TV_TYPE, 3) - elif (type >= 0 and type <= 2): - self.__change_config(self.__CFG_ID_TV_TYPE, type) - else: - raise SC64Exception("TV type outside of supported values") - - - def get_tv_type_label(self, type: int) -> None: - if (type < 0 or type > 2): - return "Unknown" - return { - 0: "PAL", - 1: "NTSC", - 2: "MPAL" - }[type] - - - def set_cic_seed(self, seed: int = None) -> None: - if (seed == None or seed == 0xFFFF): - self.__change_config(self.__CFG_ID_CIC_SEED, 0xFFFF) - elif (seed >= 0 and seed <= 0x1FF): - self.__change_config(self.__CFG_ID_CIC_SEED, seed) - else: - raise SC64Exception("CIC seed outside of supported values") - - - def download_rom(self, file: str, length: int, offset: int = 0) -> None: - self.__read_file_from_sdram(file, offset, length) - - - def upload_rom(self, file: str, offset: int = 0) -> None: - self.__write_file_to_sdram(file, offset, min_length=self.__MIN_ROM_LENGTH) - - - def set_save_type(self, type: int) -> None: - if (type >= 0 and type <= 6): - self.__change_config(self.__CFG_ID_SAVE_TYPE, type) - else: - raise SC64Exception("Save type outside of supported values") - - - def get_save_type_label(self, type: int) -> None: - if (type < 0 or type > 6): - return "Unknown" - return { - 0: "No save", - 1: "EEPROM 4Kb", - 2: "EEPROM 16Kb", - 3: "SRAM 256Kb", - 4: "FlashRAM 1Mb", - 5: "SRAM 768Kb", - 6: "FlashRAM 1Mb (Pokemon Stadium 2 special case)" - }[type] - - - def download_save(self, file: str) -> None: - length = self.__get_save_length() + def __read_memory(self, address: int, length: int) -> bytes: if (length > 0): - offset = self.__query_config(self.__CFG_ID_SAVE_OFFEST) - self.__read_file_from_sdram(file, offset, length) - else: - raise SC64Exception("Can't read save data - no save type is set") + return self.__link.execute_cmd(cmd=b'm', args=[address, length], timeout=20.0) + return bytes([]) + def __dd_set_block_ready(self, error: int) -> None: + self.__link.execute_cmd(cmd=b'D', args=[error, 0]) - def upload_save(self, file: str) -> None: - length = self.__get_save_length() - save_length = os.path.getsize(file) - if (length <= 0): - raise SC64Exception("Can't write save data - no save type is set") - elif (length != save_length): - raise SC64Exception("Can't write save data - save file size is different than expected") - else: - offset = self.__query_config(self.__CFG_ID_SAVE_OFFEST) - self.__write_file_to_sdram(file, offset) + def __flash_wait_busy(self) -> int: + data = self.__link.execute_cmd(cmd=b'p') + return self.__get_int(data[0:4]) + def __flash_erase_block(self, address: int) -> None: + self.__link.execute_cmd(cmd=b'P', args=[address, 0]) - def set_dd_enable(self, enable: bool) -> None: - self.__change_config(self.__CFG_ID_DD_ENABLE, 1 if enable else 0) + def __erase_flash_region(self, address: int, length: int) -> None: + if (address < self.__Address.FLASH): + raise ValueError('Flash erase address or length outside of possible range') + if ((address + length) > (self.__Address.FLASH + self.__Length.FLASH)): + raise ValueError('Flash erase address or length outside of possible range') + erase_block_size = self.__flash_wait_busy() + if (address % erase_block_size != 0): + raise ValueError('Flash erase address not aligned to block size') + for offset in range(address, address + length, erase_block_size): + self.__flash_erase_block(offset) + self.__flash_wait_busy() + def __program_flash(self, address: int, data: bytes): + program_chunk_size = (128 * 1024) + if (self.__read_memory(address, len(data)) != data): + self.__erase_flash_region(address, len(data)) + for offset in range(0, len(data), program_chunk_size): + self.__write_memory(address + offset, data[offset:offset + program_chunk_size]) + if (self.__read_memory(address, len(data)) != data): + raise ConnectionException('Flash memory program failure') - def download_dd_ipl(self, file: str) -> None: - dd_ipl_offset = self.__query_config(self.__CFG_ID_DDIPL_OFFEST) - self.__read_file_from_sdram(file, dd_ipl_offset, length=self.__DDIPL_ROM_LENGTH) + def reset_state(self) -> None: + self.__link.execute_cmd(cmd=b'R') + def get_state(self): + return { + 'bootloader_switch': bool(self.__get_config(self.__CfgId.BOOTLOADER_SWITCH)), + 'rom_write_enable': bool(self.__get_config(self.__CfgId.ROM_WRITE_ENABLE)), + 'rom_shadow_enable': bool(self.__get_config(self.__CfgId.ROM_SHADOW_ENABLE)), + 'dd_mode': self.__DDMode(self.__get_config(self.__CfgId.DD_MODE)), + 'isv_address': self.__get_config(self.__CfgId.ISV_ADDRESS), + 'boot_mode': self.BootMode(self.__get_config(self.__CfgId.BOOT_MODE)), + 'save_type': self.SaveType(self.__get_config(self.__CfgId.SAVE_TYPE)), + 'cic_seed': self.CICSeed(self.__get_config(self.__CfgId.CIC_SEED)), + 'tv_type': self.TVType(self.__get_config(self.__CfgId.TV_TYPE)), + 'dd_sd_enable': bool(self.__get_config(self.__CfgId.DD_SD_ENABLE)), + 'dd_drive_type': self.__DDDriveType(self.__get_config(self.__CfgId.DD_DRIVE_TYPE)), + 'dd_disk_state': self.__DDDiskState(self.__get_config(self.__CfgId.DD_DISK_STATE)), + 'button_state': bool(self.__get_config(self.__CfgId.BUTTON_STATE)), + 'button_mode': self.__ButtonMode(self.__get_config(self.__CfgId.BUTTON_MODE)), + 'rom_extended_enable': bool(self.__get_config(self.__CfgId.ROM_EXTENDED_ENABLE)), + } - def upload_dd_ipl(self, file: str, offset: int = None) -> None: - if (offset != None): - self.__change_config(self.__CFG_ID_DDIPL_OFFEST, offset) - dd_ipl_offset = self.__query_config(self.__CFG_ID_DDIPL_OFFEST) - self.__write_file_to_sdram(file, dd_ipl_offset, min_length=self.__DDIPL_ROM_LENGTH) + def debug_send(self, datatype: __DebugDatatype, data: bytes) -> None: + if (len(data) > (8 * 1024 * 1024)): + raise ValueError('Debug data size too big') + self.__link.execute_cmd(cmd=b'U', args=[datatype, len(data)], data=data, response=False) + def download_memory(self) -> bytes: + return self.__read_memory(self.__Address.MEMORY, self.__Length.MEMORY) - def set_dd_disk_state(self, state: int) -> None: - if (state == "ejected"): - self.__change_config(self.__CFG_ID_DD_SETTING, self.__DD_SETTING_DISK_EJECTED) - elif (state == "inserted"): - self.__change_config(self.__CFG_ID_DD_SETTING, self.__DD_SETTING_DISK_INSERTED) - elif (state == "changed"): - self.__change_config(self.__CFG_ID_DD_SETTING, self.__DD_SETTING_DISK_CHANGED) - else: - raise SC64Exception("DD disk state outside of supported values") + def upload_rom(self, data: bytes, use_shadow: bool=True) -> None: + rom_length = len(data) + if (rom_length > (self.__Length.SDRAM + self.__Length.EXTENDED)): + raise ValueError('ROM size too big') + sdram_length = self.__Length.SDRAM + shadow_enabled = use_shadow and rom_length > (self.__Length.SDRAM - self.__Length.SHADOW) + extended_enabled = rom_length > self.__Length.SDRAM + if (shadow_enabled): + sdram_length = (self.__Length.SDRAM - self.__Length.SHADOW) + shadow_data = data[sdram_length:sdram_length + self.__Length.SHADOW] + self.__program_flash(self.__Address.SHADOW, shadow_data) + self.__set_config(self.__CfgId.ROM_SHADOW_ENABLE, shadow_enabled) + if (extended_enabled): + extended_data = data[self.__Length.SDRAM:] + self.__program_flash(self.__Address.EXTENDED, extended_data) + self.__set_config(self.__CfgId.ROM_EXTENDED_ENABLE, extended_enabled) + self.__write_memory(self.__Address.SDRAM, data[:sdram_length]) + def upload_ddipl(self, data: bytes) -> None: + if (len(data) > self.__Length.DDIPL): + raise ValueError('DDIPL size too big') + self.__write_memory(self.__Address.DDIPL, data) - def __dd_create_configuration(self, handle: TextIOWrapper) -> tuple[str, int, list[tuple[int, int]]]: - DISK_HEADS = 2 - DISK_TRACKS = 1175 - DISK_BLOCKS_PER_TRACK = 2 - DISK_SECTORS_PER_BLOCK = 85 - DISK_BAD_TRACKS_PER_ZONE = 12 - DISK_SYSTEM_SECTOR_SIZE = 232 + def upload_save(self, data: bytes) -> None: + save_type = self.SaveType(self.__get_config(self.__CfgId.SAVE_TYPE)) + if (save_type == self.SaveType.NONE): + raise ValueError('No save type set inside SC64 device') + if (len(data) != self.__SaveLength[save_type.name]): + raise ValueError('Wrong save data length') + address = self.__Address.SAVE + if (save_type == self.SaveType.EEPROM_4K or save_type == self.SaveType.EEPROM_16K): + address = self.__Address.EEPROM + self.__write_memory(address, data) - DISK_ZONES = [ - (0, 232, 158, 0), - (0, 216, 158, 158), - (0, 208, 149, 316), - (0, 192, 149, 465), - (0, 176, 149, 614), - (0, 160, 149, 763), - (0, 144, 149, 912), - (0, 128, 114, 1061), - (1, 216, 158, 157), - (1, 208, 158, 315), - (1, 192, 149, 464), - (1, 176, 149, 613), - (1, 160, 149, 762), - (1, 144, 149, 911), - (1, 128, 149, 1060), - (1, 112, 114, 1174), - ] + def download_save(self) -> bytes: + save_type = self.SaveType(self.__get_config(self.__CfgId.SAVE_TYPE)) + if (save_type == self.SaveType.NONE): + raise ValueError('No save type set inside SC64 device') + address = self.__Address.SAVE + length = self.__SaveLength[save_type.name] + if (save_type == self.SaveType.EEPROM_4K or save_type == self.SaveType.EEPROM_16K): + address = self.__Address.EEPROM + return self.__read_memory(address, length) - DISK_VZONE_TO_PZONE = [ - [0, 1, 2, 9, 8, 3, 4, 5, 6, 7, 15, 14, 13, 12, 11, 10], - [0, 1, 2, 3, 10, 9, 8, 4, 5, 6, 7, 15, 14, 13, 12, 11], - [0, 1, 2, 3, 4, 11, 10, 9, 8, 5, 6, 7, 15, 14, 13, 12], - [0, 1, 2, 3, 4, 5, 12, 11, 10, 9, 8, 6, 7, 15, 14, 13], - [0, 1, 2, 3, 4, 5, 6, 13, 12, 11, 10, 9, 8, 7, 15, 14], - [0, 1, 2, 3, 4, 5, 6, 7, 14, 13, 12, 11, 10, 9, 8, 15], - [0, 1, 2, 3, 4, 5, 6, 7, 15, 14, 13, 12, 11, 10, 9, 8], - ] + def upload_bootloader(self, data: bytes) -> None: + if (len(data) > self.__Length.BOOTLOADER): + raise ValueError('Bootloader size too big') + self.__program_flash(self.__Address.BOOTLOADER, data) - DISK_DRIVE_TYPES = [( - "development", - 192, - [11, 10, 3, 2], - [0, 1, 8, 9, 16, 17, 18, 19, 20, 21, 22, 23], - ), ( - "retail", - 232, - [9, 8, 1, 0], - [2, 3, 10, 11, 12, 16, 17, 18, 19, 20, 21, 22, 23], - )] + def set_rtc(self, t: datetime) -> None: + to_bcd = lambda v: ((int((v / 10) % 10) << 4) | int(int(v) % 10)) + data = bytes([ + to_bcd(t.weekday() + 1), + to_bcd(t.hour), + to_bcd(t.minute), + to_bcd(t.second), + 0, + to_bcd(t.year), + to_bcd(t.month), + to_bcd(t.day), + ]) + self.__link.execute_cmd(cmd=b'T', args=[self.__get_int(data[0:4]), self.__get_int(data[4:8])]) - def __check_system_block(lba: int, sector_size: int, check_disk_type: bool) -> tuple[bool, bytes]: - handle.seek(lba * DISK_SYSTEM_SECTOR_SIZE * DISK_SECTORS_PER_BLOCK) - system_block_data = handle.read(sector_size * DISK_SECTORS_PER_BLOCK) - system_data = system_block_data[:sector_size] - for sector in range(1, DISK_SECTORS_PER_BLOCK): - sector_data = system_block_data[(sector * sector_size):][:sector_size] - if (system_data != sector_data): - return (False, None) - if (check_disk_type): - if (system_data[4] != 0x10): - return (False, None) - if ((system_data[5] & 0xF0) != 0x10): - return (False, None) - return (True, system_data) + def set_boot_mode(self, mode: BootMode) -> None: + self.__set_config(self.__CfgId.BOOT_MODE, mode) - disk_drive_type = None - disk_system_data = None - disk_id_data = None - disk_bad_lbas = [] + def set_cic_seed(self, seed: int) -> None: + if (seed != self.CICSeed.AUTO): + if (seed < 0 or seed > 0x1FF): + raise ValueError('CIC seed outside of allowed values') + self.__set_config(self.__CfgId.CIC_SEED, seed) - drive_index = 0 - while (disk_system_data == None) and (drive_index < len(DISK_DRIVE_TYPES)): - (drive_type, system_sector_size, system_data_lbas, bad_lbas) = DISK_DRIVE_TYPES[drive_index] - disk_bad_lbas.clear() - disk_bad_lbas.extend(bad_lbas) - for system_lba in system_data_lbas: - (valid, system_data) = __check_system_block(system_lba, system_sector_size, check_disk_type=True) - if (valid): - disk_drive_type = drive_type - disk_system_data = system_data + def set_tv_type(self, type: TVType) -> None: + self.__set_config(self.__CfgId.TV_TYPE, type) + + def set_save_type(self, type: SaveType) -> None: + self.__set_config(self.__CfgId.SAVE_TYPE, type) + + def set_cic_parameters(self, disabled=False, dd_mode: bool=False, seed: int=0x3F, checksum: bytes=bytes([0xA5, 0x36, 0xC0, 0xF1, 0xD8, 0x59])) -> None: + if (seed < 0 or seed > 0xFF): + raise ValueError('CIC seed outside of allowed values') + if (len(checksum) != 6): + raise ValueError('CIC checksum length outside of allowed values') + mode = (1 << 1) if disabled else 0 + mode |= (1 << 0) if dd_mode else 0 + data = bytes([mode, seed]) + data = [*data, *checksum] + self.__link.execute_cmd(cmd=b'B', args=[self.__get_int(data[0:4]), self.__get_int(data[4:8])]) + + def update_firmware(self, data: bytes, status_callback: Optional[Callable[[str], None]]=None) -> None: + address = self.__Address.FIRMWARE + self.__write_memory(address, data) + response = self.__link.execute_cmd(cmd=b'F', args=[address, len(data)]) + error = self.__UpdateError(self.__get_int(response[0:4])) + if (error != self.__UpdateError.OK): + raise ConnectionException(f'Bad update image [{error.name}]') + status = None + while status != self.__UpdateStatus.DONE: + packet = self.__link.get_packet(timeout=60.0) + if (packet == None): + raise ConnectionException('Update timeout') + (cmd, data) = packet + if (cmd != b'F'): + raise ConnectionException('Wrong update status packet') + status = self.__UpdateStatus(self.__get_int(data)) + if (status_callback): + status_callback(status.name) + if (status == self.__UpdateStatus.ERROR): + raise ConnectionException('Update error, device is most likely bricked') + time.sleep(2) + + def backup_firmware(self) -> bytes: + address = self.__Address.FIRMWARE + info = self.__link.execute_cmd(cmd=b'f', args=[address, 0], timeout=60.0) + error = self.__UpdateError(self.__get_int(info[0:4])) + length = self.__get_int(info[4:8]) + if (error != self.__UpdateError.OK): + raise ConnectionException('Error while getting firmware backup') + return self.__read_memory(address, length) + + def __generate_filename(self, prefix: str, extension: str) -> str: + return f'{prefix}-{datetime.now().strftime("%y%m%d%H%M%S.%f")}.{extension}' + + def __handle_dd_packet(self, dd: Optional[DD64Image], data: bytes) -> None: + CMD_READ_BLOCK = 1 + CMD_WRITE_BLOCK = 2 + cmd = self.__get_int(data[0:]) + address = self.__get_int(data[4:]) + track_head_block = self.__get_int(data[8:]) + track = (track_head_block >> 2) & 0xFFF + head = (track_head_block >> 1) & 0x1 + block = track_head_block & 0x1 + try: + if (not dd or not dd.loaded): + raise BadBlockError + if (cmd == CMD_READ_BLOCK): + block_data = dd.read_block(track, head, block) + self.__write_memory(address, block_data) + self.__dd_set_block_ready(0) + elif (cmd == CMD_WRITE_BLOCK): + block_data = data[12:] + dd.write_block(track, head, block, block_data) + self.__dd_set_block_ready(0) + else: + self.__dd_set_block_ready(1) + except BadBlockError: + self.__dd_set_block_ready(1) + + def __handle_isv_packet(self, data: bytes) -> None: + self.__isv_line_buffer += data + while (b'\n' in self.__isv_line_buffer): + (line, self.__isv_line_buffer) = self.__isv_line_buffer.split(b'\n', 1) + print(line.decode('EUC-JP', errors='backslashreplace')) + + def __handle_usb_packet(self, data: bytes) -> None: + header = self.__get_int(data[0:4]) + datatype = self.__DebugDatatype((header >> 24) & 0xFF) + length = (header & 0xFFFFFF) + packet = data[4:] + if (len(packet) != length): + print(f'Debug packet length and data length did not match') + elif (datatype == self.__DebugDatatype.TEXT): + print(packet.decode('UTF-8', errors='backslashreplace'), end='') + elif (datatype == self.__DebugDatatype.RAWBINARY): + filename = self.__generate_filename('binaryout', 'bin') + with open(filename, 'wb') as f: + f.write(packet) + print(f'Wrote {len(packet)} bytes to {filename}') + elif (datatype == self.__DebugDatatype.HEADER): + if (len(packet) == 16): + self.__debug_header = packet + else: + print(f'Size of header packet is invalid: {len(packet)}') + elif (datatype == self.__DebugDatatype.SCREENSHOT): + filename = self.__generate_filename('screenshot', 'png') + if (self.__debug_header != None): + header_datatype = self.__get_int(self.__debug_header[0:4]) + pixel_format = self.__get_int(self.__debug_header[4:8]) + image_w = self.__get_int(self.__debug_header[8:12]) + image_h = self.__get_int(self.__debug_header[12:16]) + if (header_datatype == 0x04 and pixel_format != 0 and image_w != 0 and image_h != 0): + mode = 'RGBA' if pixel_format == 4 else 'I;16' + screenshot = Image.frombytes(mode, (image_w, image_h), packet) + screenshot.save(filename) + print(f'Wrote {image_w}x{image_h} pixels to {filename}') else: - disk_bad_lbas.append(system_lba) - drive_index += 1 - - for id_lba in [15, 14]: - (valid, id_data) = __check_system_block(id_lba, DISK_SYSTEM_SECTOR_SIZE, check_disk_type=False) - if (valid): - disk_id_data = id_data + print('Screenshot header data is invalid') else: - disk_bad_lbas.append(id_lba) + print('Got screenshot packet without header data') - if not (disk_system_data and disk_id_data): - raise SC64Exception("Provided 64DD disk file is not valid") + def __handle_debug_input(self) -> None: + running = True + while (running): + try: + command = input() + if (len(command) > 0): + data = b'' + datatype = self.__DebugDatatype.TEXT + if (command.count('@') != 2): + data += f'{command}\0'.encode() + else: + start = command.index('@') + end = command.rindex('@') + filename = command[(start + 1):end] + if (len(filename) == 0): + raise FileNotFoundError + with open(filename, 'rb') as f: + file_data = f.read() + if (command.startswith('@') and command.endswith('@')): + datatype = self.__DebugDatatype.RAWBINARY + data += file_data + else: + data += f'{command[:start]}@{len(file_data)}@'.encode() + data += file_data + data += b'\0' + self.debug_send(datatype, data) + except ValueError as e: + print(f'Error: {e}') + except FileNotFoundError as e: + print(f'Error: Cannot open file {e.filename}') + except EOFError: + running = False - disk_zone_bad_tracks = [] + def debug_loop(self, isv: int=0, disks: Optional[list[str]]=None) -> None: + dd = None + current_image = 0 + next_image = 0 - for zone in range(len(DISK_ZONES)): - zone_bad_tracks = [] - start = 0 if zone == 0 else system_data[0x07 + zone] - stop = system_data[0x07 + zone + 1] - for offset in range(start, stop): - zone_bad_tracks.append(system_data[0x20 + offset]) - for ignored_track in range(DISK_BAD_TRACKS_PER_ZONE - len(zone_bad_tracks)): - zone_bad_tracks.append(DISK_ZONES[zone][2] - ignored_track - 1) - disk_zone_bad_tracks.append(zone_bad_tracks) + self.__set_config(self.__CfgId.ROM_WRITE_ENABLE, isv) + self.__set_config(self.__CfgId.ISV_ADDRESS, isv) + if (isv != 0): + print(f'IS-Viewer64 support set to [ENABLED] at ROM offset [0x{(isv):08X}]') + if (self.__get_config(self.__CfgId.ROM_SHADOW_ENABLE)): + print('ROM shadow enabled - IS-Viewer64 will NOT work (use --no-shadow option to disable it)') - thb_lba_table = [(0xFFFFFFFF, -1)] * (DISK_HEADS * DISK_TRACKS * DISK_BLOCKS_PER_TRACK) + if (disks): + dd = DD64Image() + drive_type = None + for path in disks: + try: + dd.load(path) + if (drive_type == None): + drive_type = dd.get_drive_type() + elif (drive_type != dd.get_drive_type()): + raise ValueError('Disk drive type mismatch') + dd.unload() + except ValueError as e: + dd = None + print(f'64DD disabled, incorrect disk images provided: {e}') + break + if (dd): + self.__set_config(self.__CfgId.DD_MODE, self.__DDMode.FULL) + self.__set_config(self.__CfgId.DD_SD_ENABLE, False) + self.__set_config(self.__CfgId.DD_DRIVE_TYPE, { + 'retail': self.__DDDriveType.RETAIL, + 'development': self.__DDDriveType.DEVELOPMENT + }[drive_type]) + self.__set_config(self.__CfgId.DD_DISK_STATE, self.__DDDiskState.EJECTED) + self.__set_config(self.__CfgId.BUTTON_MODE, self.__ButtonMode.USB_PACKET) + print('64DD enabled, loaded disks:') + for disk in disks: + print(f' - {os.path.basename(disk)}') + print('Press button on SC64 device to cycle through provided disks') - disk_type = disk_system_data[5] & 0x0F + print('\nDebug loop started, press Ctrl-C to exit\n') - current_lba = 0 - starting_block = 0 - disk_file_offset = 0 + try: + thread_input = Thread(target=self.__handle_debug_input, daemon=True) + thread_input.start() + while (thread_input.is_alive()): + packet = self.__link.get_packet() + if (packet != None): + (cmd, data) = packet + if (cmd == b'D'): + self.__handle_dd_packet(dd, data) + if (cmd == b'I'): + self.__handle_isv_packet(data) + if (cmd == b'U'): + self.__handle_usb_packet(data) + if (cmd == b'B'): + if (not dd.loaded): + dd.load(disks[next_image]) + self.__set_config(self.__CfgId.DD_DISK_STATE, self.__DDDiskState.INSERTED) + current_image = next_image + next_image += 1 + if (next_image >= len(disks)): + next_image = 0 + print(f'64DD disk inserted - {os.path.basename(disks[current_image])}') + else: + self.__set_config(self.__CfgId.DD_DISK_STATE, self.__DDDiskState.EJECTED) + dd.unload() + print(f'64DD disk ejected - {os.path.basename(disks[current_image])}') + except KeyboardInterrupt: + pass + finally: + print('\nDebug loop stopped\n') - for zone in DISK_VZONE_TO_PZONE[disk_type]: - (head, sector_size, tracks, track) = DISK_ZONES[zone] - - for zone_track in range(tracks): - current_zone_track = ((tracks - 1) - zone_track) if head else zone_track - - if (current_zone_track in disk_zone_bad_tracks[zone]): - track += (-1) if head else 1 - continue - - for block in range(DISK_BLOCKS_PER_TRACK): - if (current_lba not in disk_bad_lbas): - index = (track << 2) | (head << 1) | (starting_block ^ block) - thb_lba_table[index] = (disk_file_offset, current_lba) - disk_file_offset += sector_size * DISK_SECTORS_PER_BLOCK - current_lba += 1 - - track += (-1) if head else 1 - starting_block ^= 1 - - return (disk_drive_type, thb_lba_table) + if (dd and dd.loaded): + self.__set_config(self.__CfgId.DD_DISK_STATE, self.__DDDiskState.EJECTED) + if (isv != 0): + self.__set_config(self.__CfgId.ISV_ADDRESS, 0) - def set_dd_configuration_for_disk(self, file: str = None) -> None: - if (file): - with open(file, "rb+") as handle: - (disk_drive_type, thb_lba_table) = self.__dd_create_configuration(handle) - thb_table_offset = self.__query_config(self.__CFG_ID_DD_THB_TABLE_OFFSET) - data = bytearray() - self.__disk_lba_table = [0xFFFFFFFF] * len(thb_lba_table) - for (offset, lba) in thb_lba_table: - data += struct.pack(">I", offset) - self.__disk_lba_table[lba] = offset - self.__write_cmd("W", thb_table_offset, len(data)) - self.__write(data) - self.__read_cmd_status("W") - if (disk_drive_type == "retail"): - self.__change_config(self.__CFG_ID_DD_SETTING, self.__DD_SETTING_DRIVE_RETAIL) - elif (disk_drive_type == "development"): - self.__change_config(self.__CFG_ID_DD_SETTING, self.__DD_SETTING_DRIVE_DEVELOPMENT) - else: - raise SC64Exception("No DD disk file provided for disk info creation") +class EnumAction(argparse.Action): + def __init__(self, **kwargs): + type = kwargs.pop('type', None) + if type is None: + raise ValueError('No type was provided') + if not issubclass(type, Enum): + raise TypeError('Provided type is not an Enum subclass') + items = (choice.lower().replace('_', '-') for (choice, _) in type.__members__.items()) + kwargs.setdefault('choices', tuple(items)) + super(EnumAction, self).__init__(**kwargs) + self.__enum = type - - def __debug_process_fsd_set_sector(self, data: bytes) -> None: - sector = int.from_bytes(data[0:4], byteorder='big') - if (self.__fsd_file): - self.__fsd_file.seek(sector * 512) - - - def __debug_process_fsd_read(self, data: bytes) -> None: - length = int.from_bytes(data[0:4], byteorder='big') - if (self.__fsd_file): - self.__debug_write(self.__DEBUG_ID_FSD_READ, self.__fsd_file.read(length)) - else: - self.__debug_write(self.__DEBUG_ID_FSD_READ, bytes(length)) - - - def __debug_process_fsd_write(self, data: bytes) -> None: - if (self.__fsd_file): - self.__fsd_file.write(data) - - - def __debug_process_dd_block(self, data: bytes) -> None: - transfer_mode = int.from_bytes(data[0:4], byteorder='big') - sdram_offset = int.from_bytes(data[4:8], byteorder='big') - disk_file_offset = int.from_bytes(data[8:12], byteorder='big') - block_length = int.from_bytes(data[12:16], byteorder='big') - - print(f"64DD Block {'R' if transfer_mode else 'W'} - LBA: {self.__disk_lba_table.index(disk_file_offset):4}, Offset: 0x{disk_file_offset:08X}") - - if (self.__disk_file): - self.__disk_file.seek(disk_file_offset) - if (transfer_mode): - self.__write_cmd("W", sdram_offset, block_length) - self.__write(self.__disk_file.read(block_length)) - self.__read_cmd_status("W") - else: - self.__write_cmd("R", sdram_offset, block_length) - self.__disk_file.write(self.__read_long(block_length)) - self.__read_cmd_status("R") - - self.__change_config(self.__CFG_ID_DD_SETTING, self.__DD_SETTING_SET_BLOCK_READY) - - - def debug_loop(self, fsd_file: str = None, disk_file: str = None) -> None: - print("\r\n\033[34m --- Debug server started --- \033[0m\r\n") - - if (fsd_file): - self.__fsd_file = open(fsd_file, "rb+") - - if (disk_file): - self.__disk_file = open(disk_file, "rb+") - - start_indicator = bytearray() - dropped_bytes = 0 - - while (True): - while (start_indicator != b"DMA@"): - start_indicator.append(self.__read_long(1)[0]) - if (len(start_indicator) > 4): - dropped_bytes += 1 - start_indicator.pop(0) - start_indicator.clear() - - if (dropped_bytes): - print(f"\033[35mWarning - dropped {dropped_bytes} bytes from stream\033[0m", file=sys.stderr) - dropped_bytes = 0 - - header = self.__read_long(4) - id = int(header[0]) - length = int.from_bytes(header[1:4], byteorder="big") - data = self.__read_long(length) - self.__read_long(self.__align(length, 4) - length) - end_indicator = self.__read_long(4) - - if (end_indicator != b"CMPH"): - print(f"\033[35mGot unknown end indicator: {end_indicator.decode(encoding='ascii', errors='backslashreplace')}\033[0m", file=sys.stderr) - else: - if (id == self.__DEBUG_ID_TEXT): - print(data.decode(encoding="ascii", errors="backslashreplace"), end="") - elif (id == self.__DEBUG_ID_FSD_READ): - self.__debug_process_fsd_read(data) - elif (id == self.__DEBUG_ID_FSD_WRITE): - self.__debug_process_fsd_write(data) - elif (id == self.__DEBUG_ID_FSD_SECTOR): - self.__debug_process_fsd_set_sector(data) - elif (id == self.__DEBUG_ID_DD_BLOCK): - self.__debug_process_dd_block(data) - else: - print(f"\033[35mGot unknown id: {id}, length: {length}\033[0m", file=sys.stderr) + def __call__(self, parser, namespace, values, option_string): + key = str(values).upper().replace('-', '_') + value = self.__enum[key] + setattr(namespace, self.dest, value) -class SC64ProgressBar: - __LABEL_LENGTH = 30 - - - def __init__(self, sc64: SC64) -> None: - self.__sc64 = sc64 - self.__widgets = [ - "[ ", - progressbar.FormatLabel("{variables.label}", new_style=True), - " | ", - progressbar.Bar(left="", right=""), - " ", - progressbar.Percentage(), - " | ", - progressbar.DataSize(prefixes=(" ", "Ki", "Mi")), - " | ", - progressbar.AdaptiveTransferSpeed(), - " ]" - ] - self.__variables = {"label": ""} - self.__bar = None - - - def __enter__(self) -> None: - if (self.__sc64): - self.__sc64._SC64__progress_init = self.__progress_init - self.__sc64._SC64__progress_value = self.__progress_value - self.__sc64._SC64__progress_finish = self.__progress_finish - - - def __exit__(self, exc_type, exc_val, exc_tb) -> None: - if (self.__sc64): - self.__sc64._SC64__progress_init = None - self.__sc64._SC64__progress_value = None - self.__sc64._SC64__progress_finish = None - - - def __progress_init(self, value: int, label: str) -> None: - if (self.__bar == None): - self.__bar = progressbar.ProgressBar(widgets=self.__widgets, variables=self.__variables) - justified_label = label.ljust(self.__LABEL_LENGTH) - if (len(justified_label) > self.__LABEL_LENGTH): - justified_label = f"{justified_label[:self.__LABEL_LENGTH - 3]}..." - self.__bar.variables.label = justified_label - self.__bar.start(max_value=value) - - - def __progress_value(self, value: int) -> None: - self.__bar.update(value) - - - def __progress_finish(self) -> None: - self.__bar.finish(end="") - print() - - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="SummerCart64 one stop control center") - parser.add_argument("-b", metavar="boot_mode", default="1", required=False, help="set boot mode (0 - 3)") - parser.add_argument("-t", metavar="tv_type", default="3", required=False, help="set TV type (0 - 2)") - parser.add_argument("-c", metavar="cic_seed", default="0xFFFF", required=False, help="set CIC seed") - parser.add_argument("-s", metavar="save_type", default="0", required=False, help="set save type (0 - 6)") - parser.add_argument("-d", default=False, action="store_true", required=False, help="enable 64DD emulation") - parser.add_argument("-r", default=False, action="store_true", required=False, help="perform reading operation instead of writing") - parser.add_argument("-l", metavar="length", default="0x101000", required=False, help="specify ROM length to read") - parser.add_argument("-u", metavar="update_path", default=None, required=False, help="path to update file") - parser.add_argument("-e", metavar="save_path", default=None, required=False, help="path to save file") - parser.add_argument("-i", metavar="ddipl_path", default=None, required=False, help="path to DDIPL file") - parser.add_argument("-q", default=None, action="store_true", required=False, help="start debug server") - parser.add_argument("-f", metavar="sd_path", default=None, required=False, help="path to disk or file for fake SD card emulation") - parser.add_argument("-k", metavar="disk_path", default=None, required=False, help="path to 64DD disk file") - parser.add_argument("rom", metavar="rom_path", default=None, help="path to ROM file", nargs="?") +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='SC64 control software') + parser.add_argument('--backup-firmware', metavar='file', help='backup SC64 firmware and write it to specified file') + parser.add_argument('--update-firmware', metavar='file', help='update SC64 firmware from specified file') + parser.add_argument('--bootloader', metavar='file', help='update SC64 bootloader (not recommended, use --update-firmware instead)') + parser.add_argument('--reset-state', action='store_true', help='reset SC64 internal state') + parser.add_argument('--print-state', action='store_true', help='print SC64 internal state') + parser.add_argument('--boot', type=SC64.BootMode, action=EnumAction, help='set boot mode') + parser.add_argument('--tv', type=SC64.TVType, action=EnumAction, help='force TV type to set value') + parser.add_argument('--cic', type=SC64.CICSeed, action=EnumAction, help='force CIC seed to set value') + parser.add_argument('--rtc', action='store_true', help='update clock in SC64 to system time') + parser.add_argument('--no-shadow', action='store_false', help='do not put last 128 kB of ROM inside flash memory (can corrupt non EEPROM saves)') + parser.add_argument('--rom', metavar='file', help='upload ROM from specified file') + parser.add_argument('--save-type', type=SC64.SaveType, action=EnumAction, help='set save type') + parser.add_argument('--save', metavar='file', help='upload save from specified file') + parser.add_argument('--backup-save', metavar='file', help='download save and write it to specified file') + parser.add_argument('--ddipl', metavar='file', help='upload 64DD IPL from specified file') + parser.add_argument('--disk', metavar='file', action='append', help='path to 64DD disk (.ndd format), can be specified multiple times') + parser.add_argument('--isv', type=lambda x: int(x, 0), default=0, help='enable IS-Viewer64 support at provided ROM offset') + parser.add_argument('--debug', action='store_true', help='run debug loop (required for 64DD and IS-Viewer64)') + parser.add_argument('--download-memory', metavar='file', help='download whole memory space and write it to specified file') if (len(sys.argv) <= 1): parser.print_help() @@ -711,97 +763,91 @@ if __name__ == "__main__": try: sc64 = SC64() - boot_mode = int(args.b) - save_type = int(args.s) - tv_type = int(args.t) - cic_seed = int(args.c, 0) - dd_enable = args.d - is_read = args.r - rom_length = int(args.l, 0) - update_file = args.u - save_file = args.e - dd_ipl_file = args.i - rom_file = args.rom - debug_server = args.q - sd_file = args.f - disk_file = args.k + if (args.backup_firmware): + with open(args.backup_firmware, 'wb') as f: + print('Generating backup, this might take a while... ', end='', flush=True) + f.write(sc64.backup_firmware()) + print('done') - firmware_backup_file = "sc64firmware.bin.bak" + if (args.update_firmware): + with open(args.update_firmware, 'rb') as f: + print('Updating firmware, this might take a while... ', end='', flush=True) + status_callback = lambda status: print(f'{status} ', end='', flush=True) + sc64.update_firmware(f.read(), status_callback) + print('done') + + if (args.bootloader): + with open(args.bootloader, 'rb') as f: + print('Uploading Bootloader... ', end='', flush=True) + sc64.upload_bootloader(f.read()) + print('done') - with SC64ProgressBar(sc64): - if (update_file): - if (is_read): - sc64.backup_firmware(update_file) - else: - sc64.backup_firmware(firmware_backup_file) - if (not filecmp.cmp(update_file, firmware_backup_file)): - print("Update file different than contents of flash - updating SummerCart64") - sc64.update_firmware(update_file) - else: - print("SummerCart64 is already updated to latest version") - os.remove(firmware_backup_file) + if (args.reset_state): + sc64.reset_state() + print('SC64 internal state reset') - if (not is_read): - if (boot_mode != 1): - print(f"Setting boot mode to [{sc64.get_boot_mode_label(boot_mode)}]") - sc64.set_boot_mode(boot_mode) + if (args.print_state): + state = sc64.get_state() + print('Current SC64 internal state:') + for key, value in state.items(): + if (hasattr(value, 'name')): + value = getattr(value, 'name') + print(f' {key}: {value}') - if (save_type): - print(f"Setting save type to [{sc64.get_save_type_label(save_type)}]") - sc64.set_save_type(save_type) + if (args.boot != None): + sc64.set_boot_mode(args.boot) + print(f'Boot mode set to [{args.boot.name}]') - if (tv_type != 3): - print(f"Setting TV type to [{sc64.get_tv_type_label(tv_type)}]") - sc64.set_tv_type(tv_type) + if (args.tv != None): + sc64.set_tv_type(args.tv) + print(f'TV type set to [{args.tv.name}]') - if (cic_seed != 0xFFFF): - print(f"Setting CIC seed to [{hex(cic_seed) if cic_seed != 0xFFFF else 'Unknown'}]") - sc64.set_cic_seed(cic_seed) + if (args.cic != None): + sc64.set_cic_seed(args.cic) + print(f'CIC seed set to [0x{args.cic:X}]') - if (dd_enable): - print(f"Setting 64DD emulation to [{'Enabled' if dd_enable else 'Disabled'}]") - sc64.set_dd_enable(dd_enable) + if (args.rtc): + value = datetime.now() + sc64.set_rtc(value) + print(f'RTC set to [{value.strftime("%Y-%m-%d %H:%M:%S")}]') - if (rom_file): - if (is_read): - if (rom_length > 0): - sc64.download_rom(rom_file, rom_length) - else: - raise SC64Exception("ROM length should be larger than 0") - else: - sc64.upload_rom(rom_file) + if (args.rom): + with open(args.rom, 'rb') as f: + print('Uploading ROM... ', end='', flush=True) + sc64.upload_rom(f.read(), use_shadow=args.no_shadow) + print('done') - if (dd_ipl_file): - if (is_read): - sc64.download_dd_ipl(dd_ipl_file) - else: - sc64.upload_dd_ipl(dd_ipl_file) + if (args.save_type != None): + sc64.set_save_type(args.save_type) + print(f'Save type set to [{args.save_type.name}]') - if (save_file): - if (is_read): - sc64.download_save(save_file) - else: - sc64.upload_save(save_file) + if (args.save): + with open(args.save, 'rb') as f: + print('Uploading save... ', end='', flush=True) + sc64.upload_save(f.read()) + print('done') - if (debug_server): - if (sd_file): - print(f"Using fake SD emulation file [{sd_file}]") - if (disk_file): - print(f"Using 64DD disk image file [{disk_file}]") - sc64.set_dd_configuration_for_disk(disk_file) - if (disk_file): - print(f"Setting 64DD disk state to [Changed]") - sc64.set_dd_disk_state("changed" if disk_file else "ejected") - sc64.debug_loop(sd_file, disk_file) + if (args.ddipl): + with open(args.ddipl, 'rb') as f: + print('Uploading 64DD IPL... ', end='', flush=True) + sc64.upload_ddipl(f.read()) + print('done') - except SC64Exception as e: - print(f"Error: {e}") - parser.exit(1) - except KeyboardInterrupt: - pass - finally: - sc64.reset_link() - if (disk_file): - print(f"Setting 64DD disk state to [Ejected]") - sc64.set_dd_disk_state("ejected") - sys.stdout.write("\033[0m") + if (args.debug): + sc64.debug_loop(isv=args.isv, disks=args.disk) + + if (args.backup_save): + with open(args.backup_save, 'wb') as f: + print('Downloading save... ', end='', flush=True) + f.write(sc64.download_save()) + print('done') + + if (args.download_memory): + with open(args.download_memory, 'wb') as f: + print('Downloading memory... ', end='', flush=True) + f.write(sc64.download_memory()) + print('done') + except ValueError as e: + print(f'\nValue error: {e}') + except ConnectionException as e: + print(f'\nSC64 error: {e}') diff --git a/sw/riscv/.gitignore b/sw/riscv/.gitignore deleted file mode 100644 index 3543521..0000000 --- a/sw/riscv/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/sw/riscv/SC64.ld b/sw/riscv/SC64.ld deleted file mode 100644 index bae2abd..0000000 --- a/sw/riscv/SC64.ld +++ /dev/null @@ -1,49 +0,0 @@ -MEMORY { - ram (rwx) : org = 0x00000000, len = 16k - rom (rx) : org = 0x10035800, len = 16k -} - -ENTRY(reset_handler) - -SECTIONS { - .text.reset_handler : { - *(.text.reset_handler) - } > rom - - .text : { - _sitext = LOADADDR(.text); - . = ALIGN(4); - _stext = .; - *(.text .text.* .gnu.linkonce.t.*) - *(.rodata .rodata.* .gnu.linkonce.r.*) - . = ALIGN(4); - _etext = .; - } > ram AT > rom - - .data : { - _sidata = LOADADDR(.data); - . = ALIGN(4); - _sdata = .; - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN(4); - _ssdata = .; - *(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2) *(.srodata .srodata.*) - *(.sdata .sdata.* .gnu.linkonce.s.*) - . = ALIGN(4); - _edata = .; - } > ram AT > rom - - .bss : { - . = ALIGN(4); - _sbss = .; - *(.sbss .sbss.* .gnu.linkonce.sb.*) - *(.scommon .scommon.*) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - _ebss = .; - } > ram - - __global_pointer$ = MIN(_ssdata + 0x800, MAX(_sdata + 0x800, _ebss - 0x800)); - __stack_pointer$ = ORIGIN(ram) + LENGTH(ram); -} diff --git a/sw/riscv/src/cfg.c b/sw/riscv/src/cfg.c deleted file mode 100644 index 1232c05..0000000 --- a/sw/riscv/src/cfg.c +++ /dev/null @@ -1,324 +0,0 @@ -#include "cfg.h" -#include "dd.h" -#include "flash.h" -#include "joybus.h" -#include "usb.h" - - -#define SAVE_SIZE_EEPROM_4K (512) -#define SAVE_SIZE_EEPROM_16K (2048) -#define SAVE_SIZE_SRAM (32 * 1024) -#define SAVE_SIZE_FLASHRAM (128 * 1024) -#define SAVE_SIZE_SRAM_BANKED (3 * 32 * 1024) - -#define SAVE_OFFSET_PKST2 (0x01608000UL) - -#define DEFAULT_SAVE_OFFSET (0x03FE0000UL) -#define DEFAULT_DDIPL_OFFSET (0x03BE0000UL) - - -enum cfg_id { - CFG_ID_SCR, - CFG_ID_SDRAM_SWITCH, - CFG_ID_SDRAM_WRITABLE, - CFG_ID_DD_ENABLE, - CFG_ID_SAVE_TYPE, - CFG_ID_CIC_SEED, - CFG_ID_TV_TYPE, - CFG_ID_SAVE_OFFEST, - CFG_ID_DDIPL_OFFEST, - CFG_ID_BOOT_MODE, - CFG_ID_FLASH_SIZE, - CFG_ID_FLASH_READ, - CFG_ID_FLASH_PROGRAM, - CFG_ID_RECONFIGURE, - CFG_ID_DD_SETTING, - CFG_ID_DD_THB_TABLE_OFFSET, -}; - -enum save_type { - SAVE_TYPE_NONE = 0, - SAVE_TYPE_EEPROM_4K = 1, - SAVE_TYPE_EEPROM_16K = 2, - SAVE_TYPE_SRAM = 3, - SAVE_TYPE_FLASHRAM = 4, - SAVE_TYPE_SRAM_BANKED = 5, - SAVE_TYPE_FLASHRAM_PKST2 = 6, -}; - -enum boot_mode { - BOOT_MODE_MENU = 0, - BOOT_MODE_ROM = 1, - BOOT_MODE_DD = 2, - BOOT_MODE_DIRECT = 3, -}; - -enum dd_setting { - DD_SETTING_DISK_EJECTED = 0, - DD_SETTING_DISK_INSERTED = 1, - DD_SETTING_DISK_CHANGED = 2, - DD_SETTING_DRIVE_RETAIL = 3, - DD_SETTING_DRIVE_DEVELOPMENT = 4, - DD_SETTING_SET_BLOCK_READY = 5, -}; - - -struct process { - enum save_type save_type; - uint16_t cic_seed; - uint8_t tv_type; - enum boot_mode boot_mode; -}; - -static struct process p; - - -static void change_scr_bits (uint32_t mask, bool value) { - if (value) { - CFG->SCR |= mask; - } else { - CFG->SCR &= ~(mask); - } -} - -static void set_save_type (enum save_type save_type) { - uint32_t save_offset = DEFAULT_SAVE_OFFSET; - - change_scr_bits(CFG_SCR_FLASHRAM_EN | CFG_SCR_SRAM_BANKED | CFG_SCR_SRAM_EN, false); - joybus_set_eeprom(EEPROM_NONE); - - switch (save_type) { - case SAVE_TYPE_NONE: - break; - case SAVE_TYPE_EEPROM_4K: - save_offset = SDRAM_SIZE - SAVE_SIZE_EEPROM_4K; - joybus_set_eeprom(EEPROM_4K); - break; - case SAVE_TYPE_EEPROM_16K: - save_offset = SDRAM_SIZE - SAVE_SIZE_EEPROM_16K; - joybus_set_eeprom(EEPROM_16K); - break; - case SAVE_TYPE_SRAM: - save_offset = SDRAM_SIZE - SAVE_SIZE_SRAM; - change_scr_bits(CFG_SCR_SRAM_EN, true); - break; - case SAVE_TYPE_FLASHRAM: - save_offset = SDRAM_SIZE - SAVE_SIZE_FLASHRAM; - change_scr_bits(CFG_SCR_FLASHRAM_EN, true); - break; - case SAVE_TYPE_SRAM_BANKED: - save_offset = SDRAM_SIZE - SAVE_SIZE_SRAM_BANKED; - change_scr_bits(CFG_SCR_SRAM_BANKED | CFG_SCR_SRAM_EN, true); - break; - case SAVE_TYPE_FLASHRAM_PKST2: - save_offset = SAVE_OFFSET_PKST2; - change_scr_bits(CFG_SCR_FLASHRAM_EN, true); - break; - default: - save_type = SAVE_TYPE_NONE; - break; - } - - p.save_type = save_type; - - CFG->SAVE_OFFSET = save_offset; -} - -static void set_dd_setting (enum dd_setting setting) { - switch (setting) { - case DD_SETTING_DISK_EJECTED: - dd_set_disk_state(DD_DISK_EJECTED); - break; - case DD_SETTING_DISK_INSERTED: - dd_set_disk_state(DD_DISK_INSERTED); - break; - case DD_SETTING_DISK_CHANGED: - dd_set_disk_state(DD_DISK_CHANGED); - break; - case DD_SETTING_DRIVE_RETAIL: - dd_set_drive_type_development(false); - break; - case DD_SETTING_DRIVE_DEVELOPMENT: - dd_set_drive_type_development(true); - break; - case DD_SETTING_SET_BLOCK_READY: - dd_set_block_ready(true); - break; - } -} - - -uint32_t cfg_get_version (void) { - return CFG->VERSION; -} - -void cfg_update (uint32_t *args) { - switch (args[0]) { - case CFG_ID_SCR: - CFG->SCR = args[1]; - break; - case CFG_ID_SDRAM_SWITCH: - change_scr_bits(CFG_SCR_SDRAM_SWITCH, args[1]); - break; - case CFG_ID_SDRAM_WRITABLE: - change_scr_bits(CFG_SCR_SDRAM_WRITABLE, args[1]); - break; - case CFG_ID_DD_ENABLE: - change_scr_bits(CFG_SCR_DD_EN, args[1]); - break; - case CFG_ID_SAVE_TYPE: - set_save_type((enum save_type) (args[1])); - break; - case CFG_ID_CIC_SEED: - p.cic_seed = (uint16_t) (args[1] & 0xFFFF); - break; - case CFG_ID_TV_TYPE: - p.tv_type = (uint8_t) (args[1] & 0x03); - break; - case CFG_ID_SAVE_OFFEST: - CFG->SAVE_OFFSET = args[1]; - break; - case CFG_ID_DDIPL_OFFEST: - CFG->DDIPL_OFFSET = args[1]; - break; - case CFG_ID_BOOT_MODE: - p.boot_mode = args[1]; - change_scr_bits(CFG_SCR_SKIP_BOOTLOADER, args[1] == BOOT_MODE_DIRECT); - break; - case CFG_ID_FLASH_READ: - flash_read(args[1]); - break; - case CFG_ID_FLASH_PROGRAM: - flash_program(args[1]); - break; - case CFG_ID_RECONFIGURE: - if (args[1] == CFG->RECONFIGURE) { - CFG->RECONFIGURE = args[1]; - asm volatile ( - "ebreak \n" - ); - } - break; - case CFG_ID_DD_SETTING: - set_dd_setting(args[1]); - break; - } -} - -void cfg_query (uint32_t *args) { - switch (args[0]) { - case CFG_ID_SCR: - args[1] = CFG->SCR; - break; - case CFG_ID_SDRAM_SWITCH: - args[1] = CFG->SCR & CFG_SCR_SDRAM_SWITCH; - break; - case CFG_ID_SDRAM_WRITABLE: - args[1] = CFG->SCR & CFG_SCR_SDRAM_WRITABLE; - break; - case CFG_ID_DD_ENABLE: - args[1] = CFG->SCR & CFG_SCR_DD_EN; - break; - case CFG_ID_SAVE_TYPE: - args[1] = (uint32_t) (p.save_type); - break; - case CFG_ID_CIC_SEED: - args[1] = (uint32_t) (p.cic_seed); - break; - case CFG_ID_TV_TYPE: - args[1] = (uint32_t) (p.tv_type); - break; - case CFG_ID_SAVE_OFFEST: - args[1] = CFG->SAVE_OFFSET; - break; - case CFG_ID_DDIPL_OFFEST: - args[1] = CFG->DDIPL_OFFSET; - break; - case CFG_ID_BOOT_MODE: - args[1] = p.boot_mode; - break; - case CFG_ID_FLASH_SIZE: - args[1] = flash_size(); - break; - case CFG_ID_RECONFIGURE: - args[1] = CFG->RECONFIGURE; - break; - case CFG_ID_DD_THB_TABLE_OFFSET: - args[1] = dd_get_thb_table_offset(); - break; - } -} - - -void cfg_init (void) { - set_save_type(SAVE_TYPE_NONE); - - CFG->DDIPL_OFFSET = DEFAULT_DDIPL_OFFSET; - CFG->SCR = CFG_SCR_CPU_READY | CFG_SCR_SDRAM_SWITCH; - - p.cic_seed = 0xFFFF; - p.tv_type = 0x03; - p.boot_mode = BOOT_MODE_MENU; -} - - -void process_cfg (void) { - uint32_t args[2]; - - if (CFG->SCR & CFG_SCR_CPU_BUSY) { - change_scr_bits(CFG_SCR_CMD_ERROR, false); - - args[0] = CFG->DATA[0]; - args[1] = CFG->DATA[1]; - - switch (CFG->CMD) { - case 'C': - cfg_update(args); - break; - - case 'Q': - cfg_query(args); - break; - - case 'S': - args[0] = usb_debug_tx_ready(); - break; - - case 'D': - if (!usb_debug_tx_data(args[0], (size_t) args[1])) { - change_scr_bits(CFG_SCR_CMD_ERROR, true); - } - break; - - case 'A': - if (!usb_debug_rx_ready(&args[0], (size_t *) (&args[1]))) { - args[0] = 0; - args[1] = 0; - } - break; - - case 'F': - args[0] = usb_debug_rx_busy(); - break; - - case 'E': - if (!usb_debug_rx_data(args[0], (size_t) args[1])) { - change_scr_bits(CFG_SCR_CMD_ERROR, true); - } - break; - - case 'B': - usb_debug_reset(); - break; - - default: - change_scr_bits(CFG_SCR_CMD_ERROR, true); - break; - } - - CFG->DATA[0] = args[0]; - CFG->DATA[1] = args[1]; - - change_scr_bits(CFG_SCR_CPU_BUSY, false); - } -} diff --git a/sw/riscv/src/cfg.h b/sw/riscv/src/cfg.h deleted file mode 100644 index 1312835..0000000 --- a/sw/riscv/src/cfg.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef CFG_H__ -#define CFG_H__ - - -#include "sys.h" - - -uint32_t cfg_get_version (void); -void cfg_update (uint32_t *args); -void cfg_query (uint32_t *args); -void cfg_init (void); -void process_cfg (void); - - -#endif diff --git a/sw/riscv/src/dd.c b/sw/riscv/src/dd.c deleted file mode 100644 index 8ea156c..0000000 --- a/sw/riscv/src/dd.c +++ /dev/null @@ -1,440 +0,0 @@ -#include "dd.h" -#include "rtc.h" -#include "usb.h" - - -#define DD_USER_SECTORS_PER_BLOCK (85) - -#define DD_BUFFERS_OFFSET (SDRAM_BASE + 0x03BD0000UL) -#define DD_THB_TABLE_OFFSET (DD_BUFFERS_OFFSET + 0x0000) -#define DD_USB_BUFFER_OFFSET (DD_BUFFERS_OFFSET + 0x5000) -#define DD_BLOCK_BUFFER_OFFSET (DD_BUFFERS_OFFSET + 0x6000) - -#define USB_DEBUG_ID_DD_BLOCK (0xF5) - -#define DD_DRIVE_ID_RETAIL (0x0003) -#define DD_DRIVE_ID_DEVELOPMENT (0x0004) -#define DD_VERSION_RETAIL (0x0114) - -#define DD_POWER_UP_DELAY_TICKS (200000000UL) // 2 s -#define DD_TRACK_SEEK_TIME_TICKS (10000) // 0.1 ms - - -typedef enum { - DD_CMD_SEEK_READ = 0x01, - DD_CMD_SEEK_WRITE = 0x02, - DD_CMD_CLEAR_DISK_CHANGE = 0x08, - DD_CMD_CLEAR_RESET_STATE = 0x09, - DD_CMD_READ_VERSION = 0x0A, - DD_CMD_SET_DISK_TYPE = 0x0B, - DD_CMD_REQUEST_STATUS = 0x0C, - DD_CMD_SET_RTC_YEAR_MONTH = 0x0F, - DD_CMD_SET_RTC_DAY_HOUR = 0x10, - DD_CMD_SET_RTC_MINUTE_SECOND = 0x11, - DD_CMD_GET_RTC_YEAR_MONTH = 0x12, - DD_CMD_GET_RTC_DAY_HOUR = 0x13, - DD_CMD_GET_RTC_MINUTE_SECOND = 0x14, - DD_CMD_READ_PROGRAM_VERSION = 0x1B, -} dd_cmd_t; - - -enum state { - STATE_IDLE, - STATE_START, - STATE_BLOCK_READ, - STATE_BLOCK_READ_WAIT, - STATE_SECTOR_READ, - STATE_SECTOR_WRITE, - STATE_BLOCK_WRITE, - STATE_BLOCK_WRITE_WAIT, - STATE_NEXT_BLOCK, - STATE_STOP, -}; - -struct process { - enum state state; - uint32_t track_seek_time; - uint32_t next_seek_time; - bool power_up_delay; - bool deffered_cmd_ready; - bool bm_running; - bool transfer_mode; - bool full_track_transfer; - bool starting_block; - uint8_t current_sector; - bool is_dev_disk; - rtc_time_t time; - io32_t *thb_table; - io32_t *usb_buffer; - io32_t *block_buffer; - bool block_ready; -}; - -static struct process p; - - -static uint16_t dd_track_head_block (void) { - uint32_t head_track = DD->HEAD_TRACK; - uint16_t track = ((head_track & DD_TRACK_MASK) << 2); - uint16_t head = (((head_track & DD_HEAD_MASK) ? 1 : 0) << 1); - uint16_t block = (p.starting_block ? 1 : 0); - - return (track | head | block); -} - -static bool dd_block_valid (void) { - return (p.thb_table[dd_track_head_block()] != 0xFFFFFFFF); -} - -static bool dd_block_request (void) { - if (!usb_debug_tx_ready()) { - return false; - } - - if (!(DD->SCR & DD_SCR_DISK_INSERTED)) { - return true; - } - - const char *dma = "DMA@"; - const char *cmp = "CMPH"; - - io32_t offset = p.thb_table[dd_track_head_block()]; - uint32_t length = ((DD->SECTOR_SIZE + 1) * DD_USER_SECTORS_PER_BLOCK); - - io32_t *dst = p.usb_buffer; - - *dst++ = *((uint32_t *) (dma)); - *dst++ = swap32((USB_DEBUG_ID_DD_BLOCK << 24) | 16); - *dst++ = swap32(p.transfer_mode); - *dst++ = swap32((uint32_t) (p.block_buffer)); - *dst++ = offset; - *dst++ = swap32(length); - *dst++ = *((uint32_t *) (cmp)); - - usb_debug_tx_data((uint32_t) (p.usb_buffer), 28); - - p.block_ready = false; - - return true; -} - -static bool dd_block_ready (void) { - return p.block_ready || (!(DD->SCR & DD_SCR_DISK_INSERTED)); -} - -static void dd_sector_read (void) { - io32_t *src = p.block_buffer; - io32_t *dst = DD->SECTOR_BUFFER; - - uint8_t sector_size = ((DD->SECTOR_SIZE + 1) / sizeof(io32_t)); - - src += (sector_size * p.current_sector); - - for (int i = 0; i < sector_size; i++) { - *dst++ = *src++; - } -} - -static void dd_sector_write (void) { - io32_t *src = DD->SECTOR_BUFFER; - io32_t *dst = p.block_buffer; - - uint8_t sector_size = ((DD->SECTOR_SIZE + 1) / sizeof(io32_t)); - - dst += (sector_size * p.current_sector); - - for (int i = 0; i < sector_size; i++) { - *dst++ = *src++; - } -} - - -void dd_set_disk_state (disk_state_t disk_state) { - uint32_t scr = (DD->SCR & (~(DD_SCR_DISK_CHANGED | DD_SCR_DISK_INSERTED))); - - switch (disk_state) { - case DD_DISK_EJECTED: - break; - case DD_DISK_INSERTED: - scr |= DD_SCR_DISK_INSERTED; - break; - case DD_DISK_CHANGED: - scr |= (DD_SCR_DISK_CHANGED | DD_SCR_DISK_INSERTED); - break; - } - - DD->SCR = scr; -} - -void dd_set_drive_type_development (bool value) { - if (value) { - DD->DRIVE_ID = DD_DRIVE_ID_DEVELOPMENT; - p.is_dev_disk = true; - } else { - DD->DRIVE_ID = DD_DRIVE_ID_RETAIL; - p.is_dev_disk = false; - } -} - -void dd_set_block_ready (bool value) { - p.block_ready = value; -} - -uint32_t dd_get_thb_table_offset (void) { - return (((uint32_t) (p.thb_table)) & 0x0FFFFFFF); -} - - -void dd_init (void) { - DD->SCR = 0; - DD->HEAD_TRACK = 0; - DD->DRIVE_ID = DD_DRIVE_ID_RETAIL; - p.state = STATE_IDLE; - p.track_seek_time = DD_TRACK_SEEK_TIME_TICKS; - p.power_up_delay = true; - p.deffered_cmd_ready = false; - p.bm_running = false; - p.is_dev_disk = false; - p.thb_table = (io32_t *) (DD_THB_TABLE_OFFSET); - p.usb_buffer = (io32_t *) (DD_USB_BUFFER_OFFSET); - p.block_buffer = (io32_t *) (DD_BLOCK_BUFFER_OFFSET); -} - - -void process_dd (void) { - uint32_t scr = DD->SCR; - - if (scr & DD_SCR_HARD_RESET) { - DD->SCR &= ~(DD_SCR_DISK_CHANGED); - DD->HEAD_TRACK = 0; - p.state = STATE_IDLE; - p.power_up_delay = true; - p.deffered_cmd_ready = false; - p.bm_running = false; - } - - if (scr & DD_SCR_CMD_PENDING) { - dd_cmd_t cmd = DD->CMD; - uint16_t data = DD->DATA; - - DD->DATA = data; - - if (p.deffered_cmd_ready) { - if (DD->SEEK_TIMER >= p.next_seek_time) { - p.deffered_cmd_ready = false; - DD->HEAD_TRACK = DD_HEAD_TRACK_INDEX_LOCK | data; - DD->SCR |= DD_SCR_CMD_READY; - } - } else if ((cmd == DD_CMD_SEEK_READ) || (cmd == DD_CMD_SEEK_WRITE)) { - int track_distance = abs((DD->HEAD_TRACK & DD_TRACK_MASK) - (data & DD_TRACK_MASK)); - if (p.power_up_delay) { - p.power_up_delay = false; - p.next_seek_time = DD_POWER_UP_DELAY_TICKS; - } else { - p.next_seek_time = (track_distance * p.track_seek_time); - } - p.deffered_cmd_ready = true; - DD->HEAD_TRACK &= ~(DD_HEAD_TRACK_INDEX_LOCK); - DD->SCR |= DD_SCR_SEEK_TIMER_RESET; - } else { - switch (cmd) { - case DD_CMD_CLEAR_DISK_CHANGE: - DD->SCR &= ~(DD_SCR_DISK_CHANGED); - break; - - case DD_CMD_CLEAR_RESET_STATE: - DD->SCR &= ~(DD_SCR_DISK_CHANGED); - DD->SCR |= DD_SCR_HARD_RESET_CLEAR; - break; - - case DD_CMD_READ_VERSION: - DD->DATA = DD_VERSION_RETAIL; - break; - - case DD_CMD_SET_DISK_TYPE: - break; - - case DD_CMD_REQUEST_STATUS: - DD->DATA = 0; - break; - - case DD_CMD_SET_RTC_YEAR_MONTH: - p.time.year = ((data >> 8) & 0xFF); - p.time.month = (data & 0xFF); - break; - - case DD_CMD_SET_RTC_DAY_HOUR: - p.time.day = ((data >> 8) & 0xFF); - p.time.hour = (data & 0xFF); - break; - - case DD_CMD_SET_RTC_MINUTE_SECOND: - p.time.minute = ((data >> 8) & 0xFF); - p.time.second = (data & 0xFF); - rtc_set_time(&p.time); - break; - - case DD_CMD_GET_RTC_YEAR_MONTH: - DD->DATA = ((p.time.year << 8) | p.time.month); - break; - - case DD_CMD_GET_RTC_DAY_HOUR: - DD->DATA = ((p.time.day << 8) | p.time.hour); - break; - - case DD_CMD_GET_RTC_MINUTE_SECOND: - p.time = *rtc_get_time(); - DD->DATA = ((p.time.minute << 8) | p.time.second); - break; - - case DD_CMD_READ_PROGRAM_VERSION: - DD->DATA = 0; - break; - - default: - break; - } - - DD->SCR |= DD_SCR_CMD_READY; - } - } else { - if (scr & DD_SCR_BM_STOP) { - DD->SCR |= DD_SCR_BM_STOP_CLEAR; - DD->SCR &= ~(DD_SCR_BM_MICRO_ERROR | DD_SCR_BM_TRANSFER_C2 | DD_SCR_BM_TRANSFER_DATA); - p.state = STATE_STOP; - } else if (scr & DD_SCR_BM_START) { - DD->SCR |= DD_SCR_BM_CLEAR | DD_SCR_BM_ACK_CLEAR | DD_SCR_BM_START_CLEAR; - DD->SCR &= ~(DD_SCR_BM_MICRO_ERROR | DD_SCR_BM_TRANSFER_C2 | DD_SCR_BM_TRANSFER_DATA); - p.state = STATE_START; - p.transfer_mode = (scr & DD_SCR_BM_TRANSFER_MODE); - p.full_track_transfer = (scr & DD_SCR_BM_TRANSFER_BLOCKS); - p.starting_block = (DD->SECTOR_NUM == (DD->SECTORS_IN_BLOCK + 1)); - } else if (p.bm_running) { - if (scr & DD_SCR_BM_PENDING) { - DD->SCR |= DD_SCR_BM_CLEAR; - if (p.transfer_mode) { - if (p.current_sector < (DD->SECTORS_IN_BLOCK - 4)) { - p.state = STATE_SECTOR_READ; - } else if (p.current_sector == (DD->SECTORS_IN_BLOCK - 4)) { - p.current_sector += 1; - DD->SCR &= ~(DD_SCR_BM_TRANSFER_DATA); - DD->SCR |= DD_SCR_BM_READY; - } else if (p.current_sector == DD->SECTORS_IN_BLOCK) { - p.state = STATE_NEXT_BLOCK; - } - } else { - if (p.current_sector < (DD->SECTORS_IN_BLOCK - 4)) { - p.state = STATE_SECTOR_WRITE; - } - } - } - if (scr & DD_SCR_BM_ACK) { - DD->SCR |= DD_SCR_BM_ACK_CLEAR; - if (p.transfer_mode) { - if ((p.current_sector <= (DD->SECTORS_IN_BLOCK - 4))) { - } else if (p.current_sector < (DD->SECTORS_IN_BLOCK - 1)) { - p.current_sector += 1; - DD->SCR |= DD_SCR_BM_READY; - } else if (p.current_sector < DD->SECTORS_IN_BLOCK) { - p.current_sector += 1; - DD->SCR |= DD_SCR_BM_TRANSFER_C2 | DD_SCR_BM_READY; - } - } else { - if (p.current_sector == (DD->SECTORS_IN_BLOCK - 4)) { - p.state = STATE_STOP; - } - } - } - } - } - - switch (p.state) { - case STATE_IDLE: - break; - - case STATE_START: - p.bm_running = true; - p.current_sector = 0; - if (p.transfer_mode) { - if (dd_block_valid()) { - p.state = STATE_BLOCK_READ; - DD->SCR |= DD_SCR_BM_TRANSFER_DATA; - } else { - p.state = STATE_SECTOR_READ; - DD->SCR |= DD_SCR_BM_MICRO_ERROR; - } - } else { - p.state = STATE_IDLE; - if (dd_block_valid()) { - DD->SCR |= DD_SCR_BM_TRANSFER_DATA | DD_SCR_BM_READY; - } else { - DD->SCR |= DD_SCR_BM_MICRO_ERROR | DD_SCR_BM_READY; - } - } - break; - - case STATE_BLOCK_READ: - if (dd_block_request()) { - p.state = STATE_BLOCK_READ_WAIT; - } - break; - - case STATE_BLOCK_READ_WAIT: - if (dd_block_ready()) { - p.state = STATE_SECTOR_READ; - } - break; - - case STATE_SECTOR_READ: - dd_sector_read(); - p.state = STATE_IDLE; - p.current_sector += 1; - DD->SCR |= DD_SCR_BM_READY; - break; - - case STATE_SECTOR_WRITE: - dd_sector_write(); - p.current_sector += 1; - if (p.current_sector < (DD->SECTORS_IN_BLOCK - 4)) { - p.state = STATE_IDLE; - DD->SCR |= DD_SCR_BM_READY; - } else { - p.state = STATE_BLOCK_WRITE; - } - break; - - case STATE_BLOCK_WRITE: - if (dd_block_request()) { - p.state = STATE_BLOCK_WRITE_WAIT; - } - break; - - case STATE_BLOCK_WRITE_WAIT: - if (dd_block_ready()) { - p.state = STATE_NEXT_BLOCK; - } - break; - - case STATE_NEXT_BLOCK: - if (p.full_track_transfer) { - p.state = STATE_START; - p.full_track_transfer = false; - p.starting_block = !p.starting_block; - DD->SCR &= ~(DD_SCR_BM_TRANSFER_C2); - } else { - if (p.transfer_mode) { - p.state = STATE_STOP; - } else { - p.state = STATE_IDLE; - DD->SCR &= ~(DD_SCR_BM_TRANSFER_C2 | DD_SCR_BM_TRANSFER_DATA); - DD->SCR |= DD_SCR_BM_READY; - } - } - break; - - case STATE_STOP: - p.state = STATE_IDLE; - p.bm_running = false; - break; - } -} diff --git a/sw/riscv/src/dd.h b/sw/riscv/src/dd.h deleted file mode 100644 index 18a79c0..0000000 --- a/sw/riscv/src/dd.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef DD_H__ -#define DD_H__ - - -#include "sys.h" - - -typedef enum { - DD_DISK_EJECTED, - DD_DISK_INSERTED, - DD_DISK_CHANGED, -} disk_state_t; - - -void dd_set_disk_state (disk_state_t disk_state); -void dd_set_drive_type_development (bool value); -void dd_set_block_ready (bool value); -uint32_t dd_get_thb_table_offset (void); -void dd_init (void); -void process_dd (void); - - -#endif diff --git a/sw/riscv/src/dma.c b/sw/riscv/src/dma.c deleted file mode 100644 index 243a558..0000000 --- a/sw/riscv/src/dma.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "dma.h" - - -bool dma_busy (void) { - return DMA->SCR & DMA_SCR_BUSY; -} - -void dma_start (uint32_t memory_address, size_t length, enum dma_id id, enum dma_dir dir) { - DMA->MADDR = memory_address; - DMA->ID_LEN = ((id & 0x03) << 30) | (length & 0x3FFFFFFF); - DMA->SCR = ((dir == DMA_DIR_TO_SDRAM) ? DMA_SCR_DIR : 0) | DMA_SCR_START; -} - -void dma_stop (void) { - DMA->SCR = DMA_SCR_STOP; -} - - -void dma_init (void) { - dma_stop(); -} diff --git a/sw/riscv/src/dma.h b/sw/riscv/src/dma.h deleted file mode 100644 index 75462a7..0000000 --- a/sw/riscv/src/dma.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef DMA_H__ -#define DMA_H__ - - -#include "sys.h" - - -enum dma_dir { - DMA_DIR_TO_SDRAM, - DMA_DIR_FROM_SDRAM, -}; - -enum dma_id { - DMA_ID_USB = 0, - DMA_ID_SD = 1, -}; - - -bool dma_busy (void); -void dma_start (uint32_t memory_address, size_t length, enum dma_id id, enum dma_dir dir); -void dma_stop (void); -void dma_init (void); - - -#endif diff --git a/sw/riscv/src/flash.c b/sw/riscv/src/flash.c deleted file mode 100644 index 4c7e957..0000000 --- a/sw/riscv/src/flash.c +++ /dev/null @@ -1,62 +0,0 @@ -#include "flash.h" - - -uint32_t flash_size (void) { - return FLASH_SIZE; -} - -void flash_read (uint32_t sdram_offset) { - io32_t *flash = (io32_t *) (FLASH_BASE); - io32_t *sdram = (io32_t *) (SDRAM_BASE + sdram_offset); - - for (size_t i = 0; i < FLASH_SIZE; i += 4) { - *sdram++ = *flash++; - } -} - -void flash_program (uint32_t sdram_offset) { - uint32_t cr; - - io32_t *flash = (io32_t *) (FLASH_BASE); - io32_t *sdram = (io32_t *) (SDRAM_BASE + sdram_offset); - - cr = FLASH_CONFIG->CR; - for (size_t sector = 0; sector < FLASH_NUM_SECTORS; sector++) { - cr &= ~(1 << (FLASH_CR_WRITE_PROTECT_BIT + sector)); - } - FLASH_CONFIG->CR = cr; - - while ((FLASH_CONFIG->SR & FLASH_SR_STATUS_MASK) != FLASH_SR_STATUS_IDLE); - - for (size_t sector = 0; sector < FLASH_NUM_SECTORS; sector++) { - cr = FLASH_CONFIG->CR; - cr &= ~(FLASH_CR_SECTOR_ERASE_MASK); - cr |= ((sector + 1) << FLASH_CR_SECTOR_ERASE_BIT); - FLASH_CONFIG->CR = cr; - - while ((FLASH_CONFIG->SR & FLASH_SR_STATUS_MASK) == FLASH_SR_STATUS_BUSY_ERASE); - - if (!(FLASH_CONFIG->SR & FLASH_SR_ERASE_SUCCESSFUL)) { - break; - } - } - - if (FLASH_CONFIG->SR & FLASH_SR_ERASE_SUCCESSFUL) { - for (size_t word = 0; word < FLASH_SIZE; word += 4) { - *flash++ = *sdram++; - - if (!(FLASH_CONFIG->SR & FLASH_SR_WRITE_SUCCESSFUL)) { - break; - } - } - } - - cr = FLASH_CONFIG->CR; - cr |= FLASH_CR_SECTOR_ERASE_MASK; - for (size_t sector = 0; sector < FLASH_NUM_SECTORS; sector++) { - cr |= (1 << (FLASH_CR_WRITE_PROTECT_BIT + sector)); - } - FLASH_CONFIG->CR = cr; - - return; -} diff --git a/sw/riscv/src/flash.h b/sw/riscv/src/flash.h deleted file mode 100644 index 89de167..0000000 --- a/sw/riscv/src/flash.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef FLASH_H__ -#define FLASH_H__ - - -#include "sys.h" - - -uint32_t flash_size(void); -void flash_read (uint32_t sdram_offset); -void flash_program (uint32_t sdram_offset); - - -#endif diff --git a/sw/riscv/src/flashram.c b/sw/riscv/src/flashram.c deleted file mode 100644 index 02c5b5a..0000000 --- a/sw/riscv/src/flashram.c +++ /dev/null @@ -1,92 +0,0 @@ -#include "flashram.h" - - -#define FLASHRAM_SIZE (128 * 1024) -#define FLASHRAM_SECTOR_SIZE (16 * 1024) -#define FLASHRAM_PAGE_SIZE (128) -#define FLASHRAM_ERASE_VALUE (0xFFFFFFFF) - -enum operation { - OP_NONE, - OP_ERASE_ALL, - OP_ERASE_SECTOR, - OP_WRITE_PAGE -}; - - -struct process { - bool save_in_progress; - enum operation op; - io32_t *save_pointer; - uint32_t num_words; - uint32_t current_word; -}; - -static struct process p; - - -static enum operation get_operation_type (void) { - uint32_t scr = FLASHRAM->SCR; - - if (!(scr & FLASHRAM_OPERATION_PENDING)) { - return OP_NONE; - } - - if (scr & FLASHRAM_WRITE_OR_ERASE) { - if (scr & FLASHRAM_SECTOR_OR_ALL) { - return OP_ERASE_ALL; - } else { - return OP_ERASE_SECTOR; - } - } else { - return OP_WRITE_PAGE; - } -} - -static size_t get_operation_length (enum operation op) { - switch (op) { - case OP_ERASE_ALL: return FLASHRAM_SIZE; - case OP_ERASE_SECTOR: return FLASHRAM_SECTOR_SIZE; - case OP_WRITE_PAGE: return FLASHRAM_PAGE_SIZE; - default: return 0; - } -} - - -void flashram_init (void) { - FLASHRAM->SCR = FLASHRAM_OPERATION_DONE; - - p.save_in_progress = false; -} - - -void process_flashram (void) { - if (!p.save_in_progress) { - p.op = get_operation_type(); - - if (p.op != OP_NONE) { - uint32_t sdram_address = SDRAM_BASE + CFG->SAVE_OFFSET; - - p.save_in_progress = true; - if (p.op != OP_ERASE_ALL) { - sdram_address += (FLASHRAM->SCR >> FLASHRAM_PAGE_BIT) * FLASHRAM_PAGE_SIZE; - } - p.save_pointer = (io32_t *) (sdram_address); - p.num_words = get_operation_length(p.op) / sizeof(uint32_t); - p.current_word = 0; - } - } else { - if (p.op == OP_WRITE_PAGE) { - *p.save_pointer++ &= FLASHRAM->BUFFER[p.current_word]; - } else { - *p.save_pointer++ = FLASHRAM_ERASE_VALUE; - } - - p.current_word += 1; - - if (p.current_word >= p.num_words) { - p.save_in_progress = false; - FLASHRAM->SCR = FLASHRAM_OPERATION_DONE; - } - } -} diff --git a/sw/riscv/src/i2c.c b/sw/riscv/src/i2c.c deleted file mode 100644 index fd34472..0000000 --- a/sw/riscv/src/i2c.c +++ /dev/null @@ -1,113 +0,0 @@ -#include "i2c.h" - - -enum phase { - PHASE_START, - PHASE_ADDRESS, - PHASE_DATA, - PHASE_STOP, -}; - -struct process { - enum phase phase; - uint8_t address; - uint8_t *data; - uint8_t length; - bool write; - bool generate_stop; - bool first_byte_transferred; - bool busy; - bool done; - bool failed; -}; - -static struct process p; - - -bool i2c_busy (void) { - return p.busy; -} - -bool i2c_done (void) { - return p.done; -} - -bool i2c_failed (void) { - return p.failed; -} - -void i2c_trx (uint8_t address, uint8_t *data, uint8_t length, bool write, bool generate_stop) { - p.phase = PHASE_START; - p.address = address; - p.data = data; - p.length = length; - p.write = write; - p.generate_stop = generate_stop; - p.first_byte_transferred = false; - p.busy = true; - p.done = false; - p.failed = false; -} - - -void i2c_init (void) { - I2C->SCR = I2C_SCR_STOP; - p.busy = false; - p.done = false; - p.failed = false; -} - - -void process_i2c (void) { - if (p.busy && (!(I2C->SCR & I2C_SCR_BUSY))) { - switch (p.phase) { - case PHASE_START: - I2C->SCR = I2C_SCR_START; - p.phase = PHASE_ADDRESS; - break; - - case PHASE_ADDRESS: - I2C->SCR = 0; - I2C->DR = p.address | (p.write ? 0 : (1 << 0)); - p.phase = PHASE_DATA; - break; - - case PHASE_DATA: - if (p.write) { - p.failed |= (!(I2C->SCR & I2C_SCR_ACK)); - I2C->DR = *p.data++; - if (p.length == 1) { - if (p.generate_stop) { - p.phase = PHASE_STOP; - } else { - p.busy = false; - p.done = true; - } - } - } else { - if (p.first_byte_transferred) { - *(p.data++) = I2C->DR; - } - if (p.length >= 1) { - I2C->SCR = (p.length > 1) ? I2C_SCR_MACK : 0; - I2C->DR = 0xFF; - p.first_byte_transferred = true; - } - if (p.length == 0) { - p.phase = PHASE_STOP; - } - } - p.length -= 1; - break; - - case PHASE_STOP: - if (p.write) { - p.failed |= (!(I2C->SCR & I2C_SCR_ACK)); - } - I2C->SCR = I2C_SCR_STOP; - p.busy = false; - p.done = true; - break; - } - } -} diff --git a/sw/riscv/src/i2c.h b/sw/riscv/src/i2c.h deleted file mode 100644 index 8869685..0000000 --- a/sw/riscv/src/i2c.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef I2C_H__ -#define I2C_H__ - - -#include "sys.h" - - -bool i2c_busy (void); -bool i2c_done (void); -bool i2c_failed (void); -void i2c_trx (uint8_t address, uint8_t *data, uint8_t length, bool write, bool generate_stop); -void i2c_init (void); -void process_i2c (void); - - -#endif diff --git a/sw/riscv/src/joybus.c b/sw/riscv/src/joybus.c deleted file mode 100644 index 2e93af1..0000000 --- a/sw/riscv/src/joybus.c +++ /dev/null @@ -1,160 +0,0 @@ -#include "joybus.h" -#include "rtc.h" - - -#define CMD_EEPROM_STATUS (0x00) -#define CMD_EEPROM_READ (0x04) -#define CMD_EEPROM_WRITE (0x05) -#define CMD_RTC_STATUS (0x06) -#define CMD_RTC_READ (0x07) -#define CMD_RTC_WRITE (0x08) - -#define EEPROM_ID_4K (0x80) -#define EEPROM_ID_16K (0xC0) -#define RTC_ID (0x10) - -#define EEPROM_PAGE_SIZE (8) - -#define RTC_STATUS_STOPPED (0x80) -#define RTC_STATUS_RUNNING (0x00) -#define RTC_STATUS(running) (running ? RTC_STATUS_RUNNING : RTC_STATUS_STOPPED) - -#define RTC_BLOCK_CFG (0) -#define RTC_BLOCK_BACKUP (1) -#define RTC_BLOCK_TIME (2) - -#define RTC_WP_BACKUP (1 << 0) -#define RTC_WP_TIME (1 << 1) -#define RTC_WP_MASK (RTC_WP_TIME | RTC_WP_BACKUP) -#define RTC_ST (1 << 2) -#define RTC_CENTURY_20XX (0x01) - - -static void joybus_rx (uint8_t *data) { - size_t rx_length = (JOYBUS->SCR & JOYBUS_SCR_RX_LENGTH_MASK) >> JOYBUS_SCR_RX_LENGTH_BIT; - for (size_t i = 0; i < rx_length; i++) { - data[i] = ((uint8_t *) (JOYBUS->DATA))[(10 - rx_length) + i]; - } -} - -static void joybus_tx (uint8_t *data, size_t length) { - for (size_t i = 0; i < ((length + 3) / 4); i++) { - JOYBUS->DATA[i] = ((uint32_t *) (data))[i]; - } - JOYBUS->SCR = ((length * 8) << JOYBUS_SCR_TX_LENGTH_BIT) | JOYBUS_SCR_TX_START; -} - - -struct process { - enum eeprom_type eeprom_type; - bool rtc_running; - uint8_t rtc_write_protect; -}; - -static struct process p; - - -void joybus_set_eeprom (enum eeprom_type eeprom_type) { - p.eeprom_type = eeprom_type; -} - - -void joybus_init (void) { - JOYBUS->SCR = JOYBUS_SCR_TX_RESET | JOYBUS_SCR_RX_RESET; - - p.eeprom_type = EEPROM_NONE; - p.rtc_running = true; - p.rtc_write_protect = RTC_WP_MASK; -} - - -void process_joybus (void) { - uint8_t rx_data[10]; - uint8_t tx_data[12]; - io32_t *save_data; - uint32_t *data_offset; - - if (JOYBUS->SCR & JOYBUS_SCR_RX_READY) { - if (JOYBUS->SCR & JOYBUS_SCR_RX_STOP_BIT) { - joybus_rx(rx_data); - - for (size_t i = 0; i < sizeof(tx_data); i++) { - tx_data[i] = 0x00; - } - - if (p.eeprom_type != EEPROM_NONE) { - save_data = (io32_t *) (SDRAM_BASE + CFG->SAVE_OFFSET + (rx_data[1] * EEPROM_PAGE_SIZE)); - switch (rx_data[0]) { - case CMD_EEPROM_STATUS: - tx_data[1] = p.eeprom_type == EEPROM_16K ? EEPROM_ID_16K : EEPROM_ID_4K; - joybus_tx(tx_data, 3); - break; - - case CMD_EEPROM_READ: - data_offset = (uint32_t *) (&tx_data[0]); - data_offset[0] = save_data[0]; - data_offset[1] = save_data[1]; - joybus_tx(tx_data, 8); - break; - - case CMD_EEPROM_WRITE: - data_offset = (uint32_t *) (&rx_data[2]); - save_data[0] = data_offset[0]; - save_data[1] = data_offset[1]; - joybus_tx(tx_data, 1); - break; - } - } - - switch (rx_data[0]) { - case CMD_RTC_STATUS: - tx_data[1] = RTC_ID; - tx_data[2] = RTC_STATUS(p.rtc_running); - joybus_tx(tx_data, 3); - break; - - case CMD_RTC_READ: - if (rx_data[1] == RTC_BLOCK_CFG) { - tx_data[0] = p.rtc_write_protect; - if (!p.rtc_running) { - tx_data[1] = RTC_ST; - } - } else if (rx_data[1] == RTC_BLOCK_TIME) { - rtc_time_t *rtc_time = rtc_get_time(); - tx_data[0] = rtc_time->second; - tx_data[1] = rtc_time->minute; - tx_data[2] = rtc_time->hour | 0x80; - tx_data[4] = rtc_time->weekday - 1; - tx_data[3] = rtc_time->day; - tx_data[5] = rtc_time->month; - tx_data[6] = rtc_time->year; - tx_data[7] = RTC_CENTURY_20XX; - } - tx_data[8] = RTC_STATUS(p.rtc_running); - joybus_tx(tx_data, 9); - break; - - case CMD_RTC_WRITE: - if (rx_data[1] == RTC_BLOCK_CFG) { - p.rtc_write_protect = rx_data[2] & RTC_WP_MASK; - p.rtc_running = (!(rx_data[3] & RTC_ST)); - } else if (rx_data[1] == RTC_BLOCK_TIME && (!(p.rtc_write_protect & RTC_WP_TIME))) { - rtc_time_t rtc_time; - rtc_time.second = rx_data[2]; - rtc_time.minute = rx_data[3]; - rtc_time.hour = rx_data[4] & 0x7F; - rtc_time.weekday = rx_data[6] + 1; - rtc_time.day = rx_data[5]; - rtc_time.month = rx_data[7]; - rtc_time.year = rx_data[8]; - rtc_set_time(&rtc_time); - } - tx_data[0] = RTC_STATUS(p.rtc_running); - joybus_tx(tx_data, 1); - break; - } - } - - JOYBUS->SCR = JOYBUS_SCR_RX_RESET; - } -} diff --git a/sw/riscv/src/joybus.h b/sw/riscv/src/joybus.h deleted file mode 100644 index ef2d21f..0000000 --- a/sw/riscv/src/joybus.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef JOYBUS_H__ -#define JOYBUS_H__ - - -#include "sys.h" - - -enum eeprom_type { - EEPROM_NONE, - EEPROM_4K, - EEPROM_16K, -}; - - -void joybus_init (void); -void joybus_set_eeprom (enum eeprom_type eeprom_type); -void process_joybus (void); - - -#endif diff --git a/sw/riscv/src/process.c b/sw/riscv/src/process.c deleted file mode 100644 index 5e899d7..0000000 --- a/sw/riscv/src/process.c +++ /dev/null @@ -1,45 +0,0 @@ -#include "process.h" -#include "usb.h" -#include "cfg.h" -#include "dma.h" -#include "joybus.h" -#include "rtc.h" -#include "i2c.h" -#include "flashram.h" -#include "dd.h" -#include "uart.h" - - -static const void (*process_table[])(void) = { - process_usb, - process_cfg, - process_rtc, - process_i2c, - process_flashram, - process_dd, - process_uart, - NULL, -}; - - -__attribute__((naked)) void process_loop (void) { - void (**process_func)(void) = process_table; - - usb_init(); - cfg_init(); - dma_init(); - joybus_init(); - rtc_init(); - i2c_init(); - flashram_init(); - dd_init(); - uart_init(); - - while (1) { - process_joybus(); - (*process_func++)(); - if (*process_func == NULL) { - process_func = process_table; - } - } -} diff --git a/sw/riscv/src/process.h b/sw/riscv/src/process.h deleted file mode 100644 index e0df2a1..0000000 --- a/sw/riscv/src/process.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef PROCESS_H__ -#define PROCESS_H__ - - -void process_init (void); -void process_loop (void); - - -#endif diff --git a/sw/riscv/src/rtc.c b/sw/riscv/src/rtc.c deleted file mode 100644 index 4c203c2..0000000 --- a/sw/riscv/src/rtc.c +++ /dev/null @@ -1,231 +0,0 @@ -#include "rtc.h" -#include "i2c.h" - - -enum rtc_regs { - RTCSEC, - RTCMIN, - RTCHOUR, - RTCWKDAY, - RTCDATE, - RTCMTH, - RTCYEAR, -}; - -#define RTC_I2C_ADDR (0xDE) - -#define RTCSEC_ST (1 << 7) -#define RTCWKDAY_OSCRUN (1 << 5) -#define RTCWKDAY_VBAT (1 << 3) - - -enum rtc_phase { - RTC_PHASE_READ_START, - RTC_PHASE_READ_READY, - RTC_PHASE_STOP, - RTC_PHASE_WAIT_STOP, - RTC_PHASE_UPDATE, - RTC_PHASE_START, - RTC_PHASE_WAIT_START, -}; - -enum i2c_phase { - I2C_PHASE_IDLE, - I2C_PHASE_ADDR, - I2C_PHASE_DATA, - I2C_PHASE_READY, -}; - - -struct process { - enum rtc_phase rtc_phase; - uint8_t data[7]; - bool running; - rtc_time_t time; - bool time_valid; - bool new_time_valid; - - enum i2c_phase i2c_phase; - bool i2c_pending; - bool i2c_write; - uint8_t i2c_address; - uint8_t i2c_length; - bool i2c_first_read_done; -}; - -static struct process p; - - -static const uint8_t rtc_regs_bit_mask[7] = { - 0b01111111, - 0b01111111, - 0b00111111, - 0b00000111, - 0b00111111, - 0b00011111, - 0b11111111 -}; - -static void sanitize_time (uint8_t *data) { - for (int i = 0; i < 7; i++) { - data[i] &= rtc_regs_bit_mask[i]; - } -} - - -rtc_time_t *rtc_get_time (void) { - return &p.time; -} - -bool rtc_is_time_valid (void) { - return p.time_valid; -} - -bool rtc_is_time_running (void) { - return p.running; -} - -void rtc_set_time (rtc_time_t *time) { - p.time.second = time->second; - p.time.minute = time->minute; - p.time.hour = time->hour; - p.time.weekday = time->weekday; - p.time.day = time->day; - p.time.month = time->month; - p.time.year = time->year; - p.new_time_valid = true; -} - - -void rtc_init (void) { - p.rtc_phase = RTC_PHASE_READ_START; - p.running = false; - p.time_valid = false; - p.new_time_valid = false; - - p.i2c_phase = I2C_PHASE_IDLE; - p.i2c_pending = false; -} - - -void process_rtc (void) { - if (p.i2c_phase == I2C_PHASE_IDLE) { - switch (p.rtc_phase) { - case RTC_PHASE_READ_START: - p.i2c_pending = true; - p.i2c_write = false; - p.i2c_address = RTCSEC; - p.i2c_length = sizeof(p.data); - p.rtc_phase = RTC_PHASE_READ_READY; - break; - - case RTC_PHASE_READ_READY: - p.time_valid = (!i2c_failed()); - if (p.new_time_valid) { - p.rtc_phase = RTC_PHASE_STOP; - break; - } else if (p.time_valid) { - p.running = p.data[RTCSEC] & RTCSEC_ST; - sanitize_time(p.data); - p.time.second = p.data[RTCSEC]; - p.time.minute = p.data[RTCMIN]; - p.time.hour = p.data[RTCHOUR]; - p.time.weekday = p.data[RTCWKDAY]; - p.time.day = p.data[RTCDATE]; - p.time.month = p.data[RTCMTH]; - p.time.year = p.data[RTCYEAR]; - } - p.rtc_phase = RTC_PHASE_READ_START; - break; - - case RTC_PHASE_STOP: - p.i2c_pending = true; - p.i2c_write = true; - p.i2c_length = 2; - p.i2c_first_read_done = false; - p.data[0] = RTCSEC; - p.data[1] = 0x00; - p.rtc_phase = RTC_PHASE_WAIT_STOP; - break; - - case RTC_PHASE_WAIT_STOP: - if (p.i2c_first_read_done) { - if (!(p.data[0] & RTCWKDAY_OSCRUN)) { - p.rtc_phase = RTC_PHASE_UPDATE; - break; - } - } - p.i2c_pending = true; - p.i2c_write = false; - p.i2c_address = RTCWKDAY; - p.i2c_length = 1; - p.i2c_first_read_done = true; - break; - - case RTC_PHASE_UPDATE: - sanitize_time((uint8_t *)(&p.time)); - p.i2c_pending = true; - p.i2c_write = true; - p.i2c_length = 7; - p.data[0] = RTCMIN; - p.data[1] = p.time.minute; - p.data[2] = p.time.hour; - p.data[3] = p.time.weekday | RTCWKDAY_VBAT; - p.data[4] = p.time.day; - p.data[5] = p.time.month; - p.data[6] = p.time.year; - p.rtc_phase = RTC_PHASE_START; - break; - - case RTC_PHASE_START: - p.i2c_pending = true; - p.i2c_write = true; - p.i2c_length = 2; - p.i2c_first_read_done = false; - p.data[0] = RTCSEC; - p.data[1] = p.time.second | RTCSEC_ST; - p.rtc_phase = RTC_PHASE_WAIT_START; - break; - - case RTC_PHASE_WAIT_START: - if (p.i2c_first_read_done) { - if (p.data[0] & RTCWKDAY_OSCRUN) { - p.new_time_valid = false; - p.rtc_phase = RTC_PHASE_READ_START; - break; - } - } - p.i2c_pending = true; - p.i2c_write = false; - p.i2c_address = RTCWKDAY; - p.i2c_length = 1; - p.i2c_first_read_done = true; - break; - } - } - - if (!i2c_busy()) { - switch (p.i2c_phase) { - case I2C_PHASE_IDLE: - if (p.i2c_pending) { - p.i2c_pending = false; - p.i2c_phase = p.i2c_write ? I2C_PHASE_DATA : I2C_PHASE_ADDR; - } - break; - - case I2C_PHASE_ADDR: - i2c_trx(RTC_I2C_ADDR, &p.i2c_address, 1, true, false); - p.i2c_phase = I2C_PHASE_DATA; - break; - - case I2C_PHASE_DATA: - i2c_trx(RTC_I2C_ADDR, p.data, p.i2c_length, p.i2c_write, true); - p.i2c_phase = I2C_PHASE_READY; - break; - - case I2C_PHASE_READY: - p.i2c_phase = I2C_PHASE_IDLE; - break; - } - } -} diff --git a/sw/riscv/src/startup.S b/sw/riscv/src/startup.S deleted file mode 100644 index c7ccf90..0000000 --- a/sw/riscv/src/startup.S +++ /dev/null @@ -1,47 +0,0 @@ -.section .text.reset_handler -reset_handler: - .global reset_handler - - .option push - .option norelax - la gp, __global_pointer$ - .option pop - - la sp, __stack_pointer$ - -init_text: - la a0, _sitext - la a1, _stext - la a2, _etext - call copy_section - -init_data: - la a0, _sidata - la a1, _sdata - la a2, _edata - call copy_section - -init_bss: - la a0, _sbss - la a1, _ebss - bge a0, a1, 2f -1: - sw zero, 0(a0) - addi a0, a0, 4 - blt a0, a1, 1b -2: - -run_in_ram: - la ra, process_loop - jalr zero, 0(ra) - -copy_section: - bge a1, a2, 2f -1: - lw a3, 0(a0) - sw a3, 0(a1) - addi a0, a0, 4 - addi a1, a1, 4 - blt a1, a2, 1b -2: - ret diff --git a/sw/riscv/src/sys.h b/sw/riscv/src/sys.h deleted file mode 100644 index f0ed845..0000000 --- a/sw/riscv/src/sys.h +++ /dev/null @@ -1,251 +0,0 @@ -#ifndef SYS_H__ -#define SYS_H__ - - -#include -#include -#include -#include - - -#define swap32(x) ((((x) & 0xFF000000UL) >> 24) | \ - (((x) & 0x00FF0000UL) >> 8) | \ - (((x) & 0x0000FF00UL) << 8) | \ - (((x) & 0x000000FFUL) << 24)) - -typedef volatile uint8_t io8_t; -typedef volatile uint16_t io16_t; -typedef volatile uint32_t io32_t; - - -#define RAM_BASE (0x00000000UL) -#define RAM (*((io32_t *) RAM_BASE)) -#define RAM_SIZE (16 * 1024) - - -#define FLASH_BASE (0x10000000UL) -#define FLASH (*((io32_t *) FLASH_BASE)) - -#define FLASH_SIZE (0x39800) -#define FLASH_NUM_SECTORS (4) - - -typedef volatile struct flash_config_regs { - io32_t SR; - io32_t CR; -} flash_config_regs_t; - -#define FLASH_CONFIG_BASE (0x18000000UL) -#define FLASH_CONFIG ((flash_config_regs_t *) FLASH_CONFIG_BASE) - -#define FLASH_SR_STATUS_MASK (3 << 0) -#define FLASH_SR_STATUS_IDLE (0) -#define FLASH_SR_STATUS_BUSY_ERASE (1) -#define FLASH_SR_STATUS_BUSY_WRITE (2) -#define FLASH_SR_STATUS_BUSY_READ (3) -#define FLASH_SR_READ_SUCCESSFUL (1 << 2) -#define FLASH_SR_WRITE_SUCCESSFUL (1 << 3) -#define FLASH_SR_ERASE_SUCCESSFUL (1 << 4) -#define FLASH_SR_WRITE_PROTECT_BIT (5) - -#define FLASH_CR_PAGE_ERASE_BIT (0) -#define FLASH_CR_SECTOR_ERASE_BIT (20) -#define FLASH_CR_SECTOR_ERASE_MASK (7 << FLASH_CR_SECTOR_ERASE_BIT) -#define FLASH_CR_WRITE_PROTECT_BIT (23) - - -typedef volatile struct gpio_regs { - io8_t ODR; - io8_t IDR; - io8_t OER; - io8_t __padding; -} gpio_regs_t; - -#define GPIO_BASE (0x20000000UL) -#define GPIO ((gpio_regs_t *) GPIO_BASE) - - -typedef volatile struct i2c_regs { - io32_t SCR; - io32_t DR; -} i2c_regs_t; - -#define I2C_BASE (0x30000000UL) -#define I2C ((i2c_regs_t *) I2C_BASE) - -#define I2C_SCR_START (1 << 0) -#define I2C_SCR_STOP (1 << 1) -#define I2C_SCR_MACK (1 << 2) -#define I2C_SCR_ACK (1 << 3) -#define I2C_SCR_BUSY (1 << 4) - - -typedef volatile struct usb_regs { - io32_t SCR; - io8_t DR; - io8_t __padding_1[3]; - io8_t ESCAPE; - io8_t __padding_2[3]; -} usb_regs_t; - -#define USB_BASE (0x40000000UL) -#define USB ((usb_regs_t *) USB_BASE) - -#define USB_SCR_RXNE (1 << 0) -#define USB_SCR_TXE (1 << 1) -#define USB_SCR_FLUSH_RX (1 << 2) -#define USB_SCR_FLUSH_TX (1 << 3) -#define USB_SCR_ENABLED (1 << 4) -#define USB_SCR_PWREN (1 << 5) -#define USB_SCR_ESCAPE_PENDING (1 << 6) -#define USB_SCR_ESCAPE_ACK (1 << 7) - - -typedef volatile struct uart_regs { - io32_t SCR; - io8_t DR; - io8_t __padding[3]; -} uart_regs_t; - -#define UART_BASE (0x50000000UL) -#define UART ((uart_regs_t *) UART_BASE) - -#define UART_SCR_RXNE (1 << 0) -#define UART_SCR_TXE (1 << 1) - - -typedef volatile struct dma_regs { - io32_t SCR; - io32_t MADDR; - io32_t ID_LEN; -} dma_regs_t; - -#define DMA_BASE (0x60000000UL) -#define DMA ((dma_regs_t *) DMA_BASE) - -#define DMA_SCR_START (1 << 0) -#define DMA_SCR_STOP (1 << 1) -#define DMA_SCR_DIR (1 << 2) -#define DMA_SCR_BUSY (1 << 3) - - -typedef volatile struct cfg_regs { - io32_t SCR; - io32_t DDIPL_OFFSET; - io32_t SAVE_OFFSET; - io8_t CMD; - io8_t __padding[3]; - io32_t DATA[2]; - io32_t VERSION; - io32_t RECONFIGURE; -} cfg_regs_t; - -#define CFG_BASE (0x70000000UL) -#define CFG ((cfg_regs_t *) CFG_BASE) - -#define CFG_SCR_SDRAM_SWITCH (1 << 0) -#define CFG_SCR_SDRAM_WRITABLE (1 << 1) -#define CFG_SCR_DD_EN (1 << 2) -#define CFG_SCR_SRAM_EN (1 << 3) -#define CFG_SCR_SRAM_BANKED (1 << 4) -#define CFG_SCR_FLASHRAM_EN (1 << 5) -#define CFG_SCR_SKIP_BOOTLOADER (1 << 6) -#define CFG_SCR_CMD_ERROR (1 << 28) -#define CFG_SCR_USB_WAITING (1 << 29) -#define CFG_SCR_CPU_BUSY (1 << 30) -#define CFG_SCR_CPU_READY (1 << 31) - - -#define SDRAM_BASE (0x80000000UL) -#define SDRAM (*((io32_t *) SDRAM_BASE)) -#define SDRAM_SIZE (64 * 1024 * 1024) - - -typedef volatile struct flashram_regs { - io32_t SCR; - io32_t __padding[31]; - io32_t BUFFER[32]; -} flashram_regs_t; - -#define FLASHRAM_BASE (0x90000000UL) -#define FLASHRAM ((flashram_regs_t *) FLASHRAM_BASE) - -#define FLASHRAM_OPERATION_PENDING (1 << 0) -#define FLASHRAM_OPERATION_DONE (1 << 1) -#define FLASHRAM_WRITE_OR_ERASE (1 << 2) -#define FLASHRAM_SECTOR_OR_ALL (1 << 3) -#define FLASHRAM_PAGE_BIT (8) - - -typedef volatile struct joybus_regs { - io32_t SCR; - io32_t DATA[3]; -} joybus_regs_t; - -#define JOYBUS_BASE (0xA0000000UL) -#define JOYBUS ((joybus_regs_t *) JOYBUS_BASE) - -#define JOYBUS_SCR_RX_READY (1 << 0) -#define JOYBUS_SCR_RX_STOP_BIT (1 << 1) -#define JOYBUS_SCR_TX_START (1 << 2) -#define JOYBUS_SCR_TX_BUSY (1 << 3) -#define JOYBUS_SCR_RX_RESET (1 << 6) -#define JOYBUS_SCR_TX_RESET (1 << 7) -#define JOYBUS_SCR_RX_LENGTH_BIT (8) -#define JOYBUS_SCR_RX_LENGTH_MASK (0x7F << JOYBUS_SCR_RX_LENGTH_BIT) -#define JOYBUS_SCR_TX_LENGTH_BIT (16) - - -typedef volatile struct dd_regs { - io32_t SCR; - io16_t DATA; - io8_t CMD; - io8_t __padding_1; - io16_t HEAD_TRACK; - io16_t __padding_2; - io8_t SECTOR_NUM; - io8_t SECTOR_SIZE; - io8_t SECTOR_SIZE_FULL; - io8_t SECTORS_IN_BLOCK; - io16_t DRIVE_ID; - io16_t __padding_3; - io32_t SEEK_TIMER; - io32_t __padding_4[58]; - io32_t SECTOR_BUFFER[64]; -} dd_regs_t; - -#define DD_BASE (0xB0000000UL) -#define DD ((dd_regs_t *) DD_BASE) - -#define DD_SCR_HARD_RESET (1 << 0) -#define DD_SCR_HARD_RESET_CLEAR (1 << 1) -#define DD_SCR_CMD_PENDING (1 << 2) -#define DD_SCR_CMD_READY (1 << 3) -#define DD_SCR_BM_PENDING (1 << 4) -#define DD_SCR_BM_READY (1 << 5) -#define DD_SCR_DISK_INSERTED (1 << 6) -#define DD_SCR_DISK_CHANGED (1 << 7) -#define DD_SCR_BM_START (1 << 8) -#define DD_SCR_BM_START_CLEAR (1 << 9) -#define DD_SCR_BM_STOP (1 << 10) -#define DD_SCR_BM_STOP_CLEAR (1 << 11) -#define DD_SCR_BM_TRANSFER_MODE (1 << 12) -#define DD_SCR_BM_TRANSFER_BLOCKS (1 << 13) -#define DD_SCR_BM_TRANSFER_DATA (1 << 14) -#define DD_SCR_BM_TRANSFER_C2 (1 << 15) -#define DD_SCR_BM_MICRO_ERROR (1 << 16) -#define DD_SCR_BM_ACK (1 << 17) -#define DD_SCR_BM_ACK_CLEAR (1 << 18) -#define DD_SCR_BM_CLEAR (1 << 19) -#define DD_SCR_SEEK_TIMER_RESET (1 << 20) - -#define DD_TRACK_MASK (0x0FFF) -#define DD_HEAD_MASK (0x1000) -#define DD_HEAD_TRACK_MASK (DD_HEAD_MASK | DD_TRACK_MASK) -#define DD_HEAD_TRACK_INDEX_LOCK (1 << 13) - - -void reset_handler(void); - - -#endif diff --git a/sw/riscv/src/uart.c b/sw/riscv/src/uart.c deleted file mode 100644 index 011b8cd..0000000 --- a/sw/riscv/src/uart.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "uart.h" -#include "rtc.h" - - -#ifdef DEBUG -static const char hex_char_map[16] = { - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' -}; -#endif - -void uart_print (const char *text) { -#ifdef DEBUG - while (*text != '\0') { - while (!(UART->SCR & UART_SCR_TXE)); - UART->DR = *text++; - } -#endif -} - -void uart_print_02hex (uint8_t number) { -#ifdef DEBUG - char buffer[3]; - buffer[0] = hex_char_map[(number >> 4) & 0x0F]; - buffer[1] = hex_char_map[number & 0x0F]; - buffer[2] = '\0'; - uart_print(buffer); -#endif -} - -void uart_print_08hex (uint32_t number) { -#ifdef DEBUG - uart_print_02hex((number >> 24) & 0xFF); - uart_print_02hex((number >> 16) & 0xFF); - uart_print_02hex((number >> 8) & 0xFF); - uart_print_02hex((number >> 0) & 0xFF); -#endif -} - -void uart_init (void) { -#ifdef DEBUG - uart_print("App ready from flash!\n"); -#endif -} - - -void process_uart (void) { -#ifdef DEBUG - rtc_time_t *time; - - if (UART->SCR & USB_SCR_RXNE) { - switch (UART->DR) { - case '/': - uart_print("Bootloader reset...\n"); - reset_handler(); - break; - - case 't': - time = rtc_get_time(); - uart_print("Current time: "); - if (rtc_is_time_running()) { - uart_print("(running) "); - } - if (rtc_is_time_valid()) { - uart_print("(valid) "); - } - for (int i = 0; i < 7; i++) { - uart_print_02hex(((uint8_t *) (time))[i]); - uart_print(" "); - } - uart_print("\n"); - break; - } - } -#endif -} diff --git a/sw/riscv/src/uart.h b/sw/riscv/src/uart.h deleted file mode 100644 index c690dac..0000000 --- a/sw/riscv/src/uart.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef UART_H__ -#define UART_H__ - - -#include "sys.h" - - -void uart_print (const char *text); -void uart_print_02hex (uint8_t number); -void uart_print_08hex (uint32_t number); -void uart_init (void); -void process_uart (void); - - -#endif diff --git a/sw/riscv/src/usb.c b/sw/riscv/src/usb.c deleted file mode 100644 index bb66172..0000000 --- a/sw/riscv/src/usb.c +++ /dev/null @@ -1,323 +0,0 @@ -#include "usb.h" -#include "dma.h" -#include "cfg.h" - - -static bool rx_byte (uint8_t *data) { - if (!(USB->SCR & USB_SCR_RXNE)) { - return false; - } - - *data = USB->DR; - - return true; -} - -static uint8_t rx_word_current_byte = 0; -static uint32_t rx_word_buffer = 0; - -static bool rx_word (uint32_t *data) { - uint8_t tmp; - - while (rx_byte(&tmp)) { - rx_word_buffer = (rx_word_buffer << 8) | tmp; - rx_word_current_byte += 1; - if (rx_word_current_byte == 4) { - rx_word_current_byte = 0; - *data = rx_word_buffer; - rx_word_buffer = 0; - - return true; - } - } - - return false; -} - -static bool tx_byte (uint8_t data) { - if (!(USB->SCR & USB_SCR_TXE)) { - return false; - } - - USB->DR = data; - - return true; -} - -static uint8_t tx_word_current_byte = 0; - -static bool tx_word (uint32_t data) { - while (tx_byte(data >> ((3 - tx_word_current_byte) * 8))) { - tx_word_current_byte += 1; - if (tx_word_current_byte == 4) { - tx_word_current_byte = 0; - - return true; - } - } - - return false; -} - - -#define USB_CMD_TOKEN (0x434D4400) -#define USB_CMP_TOKEN (0x434D5000) -#define USB_ERR_TOKEN (0x45525200) - -enum state { - STATE_IDLE, - STATE_ARGS, - STATE_DATA, - STATE_RESPONSE, - STATE_DEBUG_TX, -}; - -struct process { - enum state state; - uint8_t counter; - uint8_t cmd; - uint32_t args[2]; - bool error; - bool dma_in_progress; - bool queried; - - bool debug_rx_busy; - uint32_t debug_rx_address; - size_t debug_rx_length; - - bool debug_tx_busy; - uint32_t debug_tx_address; - size_t debug_tx_length; -}; - -static struct process p; - - -bool usb_debug_rx_ready (uint32_t *type, size_t *length) { - if (p.state != STATE_DATA || p.cmd != 'D' || p.debug_rx_busy) { - return false; - } - - *type = p.args[0]; - *length = (size_t) p.args[1]; - - return true; -} - -bool usb_debug_rx_busy (void) { - return p.debug_rx_busy; -} - -bool usb_debug_rx_data (uint32_t address, size_t length) { - if (p.debug_rx_busy) { - return false; - } - - p.debug_rx_busy = true; - p.debug_rx_address = address; - p.debug_rx_length = length; - - return true; -} - -bool usb_debug_tx_ready (void) { - return !p.debug_tx_busy; -} - -bool usb_debug_tx_data (uint32_t address, size_t length) { - if (p.debug_tx_busy) { - return false; - } - - p.debug_tx_busy = true; - p.debug_tx_address = address; - p.debug_tx_length = length; - - return true; -} - -void usb_debug_reset (void) { - uint8_t tmp; - - if (p.state == STATE_DATA && p.cmd == 'D') { - for (size_t i = 0; i < p.args[1]; i++) { - rx_byte(&tmp); - } - p.args[1] = 0; - } - if (p.state == STATE_DEBUG_TX) { - p.state = STATE_IDLE; - } - p.debug_rx_busy = false; - p.debug_tx_busy = false; - - USB->SCR = USB_SCR_ENABLED | USB_SCR_FLUSH_TX | USB_SCR_FLUSH_RX; -} - -static uint8_t rx_cmd_current_byte = 0; -static uint32_t rx_cmd_buffer = 0; - -static bool rx_cmd (uint32_t *data) { - uint8_t tmp; - - while (rx_byte(&tmp)) { - rx_cmd_current_byte += 1; - if ((rx_cmd_current_byte != 4) && (tmp != (USB_CMD_TOKEN >> (8 * (4 - rx_cmd_current_byte)) & 0xFF))) { - rx_cmd_current_byte = 0; - rx_cmd_buffer = 0; - - return false; - } - rx_cmd_buffer = (rx_cmd_buffer << 8) | tmp; - if (rx_cmd_current_byte == 4) { - rx_cmd_current_byte = 0; - *data = rx_cmd_buffer; - rx_cmd_buffer = 0; - - return true; - } - } - - return false; -} - -static void handle_escape (void) { - if (USB->SCR & USB_SCR_ESCAPE_PENDING) { - if (USB->ESCAPE == 'R') { - if (p.dma_in_progress) { - dma_stop(); - while (dma_busy()); - } - usb_init(); - } - USB->SCR |= USB_SCR_ESCAPE_ACK; - } -} - - -void usb_init (void) { - USB->SCR = USB_SCR_ENABLED | USB_SCR_FLUSH_TX | USB_SCR_FLUSH_RX; - - p.state = STATE_IDLE; - p.debug_rx_busy = false; - p.debug_tx_busy = false; - - rx_word_current_byte = 0; - rx_word_buffer = 0; - tx_word_current_byte = 0; - rx_cmd_current_byte = 0; - rx_cmd_buffer = 0; -} - - -void process_usb (void) { - handle_escape(); - - switch (p.state) { - case STATE_IDLE: - if (p.debug_tx_busy) { - p.state = STATE_DEBUG_TX; - p.dma_in_progress = false; - } else if (rx_cmd(&p.args[0])) { - if ((p.args[0] & 0xFFFFFF00) == USB_CMD_TOKEN) { - p.cmd = p.args[0] & 0xFF; - p.counter = 0; - p.error = false; - p.dma_in_progress = false; - p.queried = false; - p.state = STATE_ARGS; - } else { - p.cmd = '!'; - p.error = true; - p.state = STATE_RESPONSE; - } - } - break; - - case STATE_ARGS: - if (rx_word(&p.args[p.counter])) { - p.counter += 1; - if (p.counter == 2) { - p.state = STATE_DATA; - } - } - break; - - case STATE_DATA: - switch (p.cmd) { - case 'V': - if (tx_word(cfg_get_version())) { - p.state = STATE_RESPONSE; - } - break; - - case 'C': - cfg_update(p.args); - p.state = STATE_RESPONSE; - break; - - case 'Q': - if (!p.queried) { - cfg_query(p.args); - p.queried = true; - } - if (tx_word(p.args[1])) { - p.state = STATE_RESPONSE; - } - break; - - case 'R': - case 'W': - if (!dma_busy()) { - if (!p.dma_in_progress) { - enum dma_dir dir = p.cmd == 'W' ? DMA_DIR_TO_SDRAM : DMA_DIR_FROM_SDRAM; - dma_start(p.args[0], p.args[1], DMA_ID_USB, dir); - p.dma_in_progress = true; - } else { - p.state = STATE_RESPONSE; - } - } - break; - - case 'D': - if (!dma_busy() && p.debug_rx_busy && p.args[1] > 0) { - if (!p.dma_in_progress) { - dma_start(p.debug_rx_address, p.debug_rx_length, DMA_ID_USB, DMA_DIR_TO_SDRAM); - p.dma_in_progress = true; - } else { - p.args[1] -= p.debug_rx_length > p.args[1] ? p.args[1] : p.debug_rx_length; - p.dma_in_progress = false; - p.debug_rx_busy = false; - } - } - if (p.args[1] == 0) { - p.state = STATE_IDLE; - } - break; - - default: - p.error = true; - p.state = STATE_RESPONSE; - break; - } - break; - - case STATE_RESPONSE: - if (tx_word((p.error ? USB_ERR_TOKEN : USB_CMP_TOKEN) | p.cmd)) { - p.state = STATE_IDLE; - } - break; - - case STATE_DEBUG_TX: - if (!dma_busy()) { - if (!p.dma_in_progress) { - dma_start(p.debug_tx_address, p.debug_tx_length, DMA_ID_USB, DMA_DIR_FROM_SDRAM); - p.dma_in_progress = true; - } else { - p.debug_tx_busy = false; - p.state = STATE_IDLE; - } - } - break; - } -} diff --git a/sw/riscv/src/usb.h b/sw/riscv/src/usb.h deleted file mode 100644 index 28f3298..0000000 --- a/sw/riscv/src/usb.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef USB_H__ -#define USB_H__ - - -#include "sys.h" - - -bool usb_debug_rx_ready (uint32_t *type, size_t *length); -bool usb_debug_rx_busy (void); -bool usb_debug_rx_data (uint32_t address, size_t length); -bool usb_debug_tx_ready (void); -bool usb_debug_tx_data (uint32_t address, size_t length); -void usb_debug_reset (void); -void usb_init (void); -void process_usb (void); - - -#endif diff --git a/sw/update/.gitignore b/sw/update/.gitignore new file mode 100644 index 0000000..aec73fe --- /dev/null +++ b/sw/update/.gitignore @@ -0,0 +1 @@ +*.upd diff --git a/sw/update/update.py b/sw/update/update.py new file mode 100755 index 0000000..5bd7c5c --- /dev/null +++ b/sw/update/update.py @@ -0,0 +1,228 @@ +#!/usr/bin/env python3 + +import argparse +import math +import os +import platform +import sys +from binascii import crc32 +from datetime import datetime +from io import BufferedRandom + + + +class JedecError(Exception): + pass + + +class JedecFile: + __fuse_length: int = 0 + __fuse_offset: int = 0 + __fuse_data: bytes = b'' + __byte_buffer: int = 0 + + def __handle_q_field(self, f: BufferedRandom) -> None: + type = f.read(1) + if (type == b'F'): + value = b'' + while (True): + data = f.read(1) + if (data == b'*'): + value = value.decode('ascii', errors='backslashreplace') + if (not value.isdecimal()): + raise JedecError('Invalid Q field data') + self.__fuse_length = int(value) + break + else: + value += data + else: + self.__ignore_field(f) + + def __handle_l_field(self, f: BufferedRandom) -> None: + if (self.__fuse_length <= 0): + raise JedecError('Found fuse data before declaring fuse count') + + offset = b'' + while (True): + data = f.read(1) + if (data >= b'0' and data <= b'9'): + offset += data + elif (data == b'\r' or data == b'\n'): + offset = offset.decode('ascii', errors='backslashreplace') + if (not offset.isdecimal()): + raise JedecError('Invalid L field offset data') + offset = int(offset) + if (offset != self.__fuse_offset): + raise JedecError('Fuse data is not continuous') + break + else: + raise JedecError('Unexpected byte inside L field offset data') + + data = b'' + while (True): + data = f.read(1) + if (data == b'0' or data == b'1'): + shift = (7 - (self.__fuse_offset % 8)) + self.__byte_buffer |= (1 if data == b'1' else 0) << shift + if (((self.__fuse_offset % 8) == 7) or (self.__fuse_offset == (self.__fuse_length - 1))): + self.__fuse_data += int.to_bytes(self.__byte_buffer, 1, byteorder='little') + self.__byte_buffer = 0 + self.__fuse_offset += 1 + elif (data == b'\r' or data == b'\n'): + pass + elif (data == b'*'): + break + elif (data == b''): + raise JedecError('Unexpected end of file') + else: + raise JedecError('Unexpected byte inside L field fuse data') + + def __ignore_field(self, f: BufferedRandom) -> None: + data = None + while (data != b'*'): + data = f.read(1) + if (data == b''): + raise JedecError('Unexpected end of file') + + def parse(self, path: str) -> bytes: + self.__fuse_length = 0 + self.__fuse_offset = 0 + self.__fuse_data = b'' + self.__byte_buffer = 0 + + field = None + with open(path, 'rb+') as f: + while (True): + field = f.read(1) + if (field == b'\x02'): + f.seek(-1, os.SEEK_CUR) + break + elif (field == b''): + raise JedecError('Unexpected end of file') + + while (True): + field = f.read(1) + if (field == b'Q'): + self.__handle_q_field(f) + elif (field == b'L'): + self.__handle_l_field(f) + elif (field == b'\r' or field == b'\n'): + pass + elif (field == b'\x03'): + break + elif (field == b''): + raise JedecError('Unexpected end of file') + else: + self.__ignore_field(f) + + if (self.__fuse_length <= 0): + raise JedecError('No fuse data found') + + if (self.__fuse_offset != self.__fuse_length): + raise JedecError('Missing fuse data inside JEDEC file') + + if (len(self.__fuse_data) != math.ceil(self.__fuse_length / 8)): + raise JedecError('Missing fuse data inside JEDEC file') + + return self.__fuse_data + + +class SC64UpdateData: + __UPDATE_TOKEN = b'SC64 Update v2.0' + + __CHUNK_ID_UPDATE_INFO = 1 + __CHUNK_ID_MCU_DATA = 2 + __CHUNK_ID_FPGA_DATA = 3 + __CHUNK_ID_BOOTLOADER_DATA = 4 + + __data = b'' + + def __int_to_bytes(self, value: int) -> bytes: + return value.to_bytes(4, byteorder='little') + + def __align(self, value: int) -> int: + if (value % 16 != 0): + value += (16 - (value % 16)) + return value + + def __add_chunk(self, id: int, data: bytes) -> None: + chunk = b'' + chunk_length = (16 + len(data)) + aligned_length = self.__align(chunk_length) + chunk += self.__int_to_bytes(id) + chunk += self.__int_to_bytes(aligned_length - 8) + chunk += self.__int_to_bytes(crc32(data)) + chunk += self.__int_to_bytes(len(data)) + chunk += data + chunk += bytes([0] * (aligned_length - chunk_length)) + self.__data += chunk + + def create_update_data(self) -> None: + self.__data = self.__UPDATE_TOKEN + + def add_update_info(self, data: bytes) -> None: + self.__add_chunk(self.__CHUNK_ID_UPDATE_INFO, data) + + def add_mcu_data(self, data: bytes) -> None: + self.__add_chunk(self.__CHUNK_ID_MCU_DATA, data) + + def add_fpga_data(self, data: bytes) -> None: + self.__add_chunk(self.__CHUNK_ID_FPGA_DATA, data) + + def add_bootloader_data(self, data: bytes) -> None: + self.__add_chunk(self.__CHUNK_ID_BOOTLOADER_DATA, data) + + def get_update_data(self) -> bytes: + return self.__data + + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='SC64 update file generator') + parser.add_argument('--git', metavar='git', required=False, help='git text to embed in update info') + parser.add_argument('--mcu', metavar='mcu_path', required=False, help='path to MCU update data') + parser.add_argument('--fpga', metavar='fpga_path', required=False, help='path to FPGA update data') + parser.add_argument('--boot', metavar='bootloader_path', required=False, help='path to N64 bootloader update data') + parser.add_argument('output', metavar='output_path', help='path to final update data') + + if (len(sys.argv) <= 1): + parser.print_help() + parser.exit() + + args = parser.parse_args() + + try: + update = SC64UpdateData() + update.create_update_data() + + hostname = platform.node() + creation_datetime = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S') + info = [ + f'build system: [{hostname}]', + f'creation datetime: [{creation_datetime}]', + ] + if (args.git): + info.append(args.git) + update_info = ' '.join(info) + print(update_info) + update.add_update_info(update_info.encode()) + + if (args.mcu): + with open(args.mcu, 'rb+') as f: + update.add_mcu_data(f.read()) + + if (args.fpga): + update.add_fpga_data(JedecFile().parse(args.fpga)) + + if (args.boot): + with open(args.boot, 'rb+') as f: + update.add_bootloader_data(f.read()) + + with open(args.output, 'wb+') as f: + f.write(update.get_update_data()) + except JedecError as e: + print(f'Error while parsing FPGA update data: {e}') + exit(-1) + except IOError as e: + print(f'IOError: {e}') + exit(-1)